Introduction
TzStamp is a trusted timestamping service in the vein of OpenTimestamps or chainpoint. It is most similar to the design of OpenTimestamps, utilizing Merkle tree based proofs to show the existence of many files at once through a single Tezos blockchain transaction.
Why It’s Interesting Right Now
- Cheaper and faster than OpenTimestamps
- Allows for easier Tezos smart contract integration
- Removes requirement to hold a separate coin to do timestamping
- (Untested but in theory) Seamlessly usable with private blockchains
- Use of Tezos simplifies overall system design
- Public instance with two years of fast operation funded in advance
Features
- Web application that both creates and verifies timestamps of files and hashes
- Scriptable command line client with more features for advanced users; allows verification of timestamps without relying on a TzStamp server
- Simple, documented public timestamping API with (at the moment) no rate limiting or signup necessary
- Proof files contain information to show chain of commitment up to the block header, proofs will remain verifiable even if operation history is purged
- No on-chain storage is necessary to construct a TzStamp proof, very cheap proof publishing
We have a fully functional demo app you can use now. You can leave us feedback and get support in our discord server. We will also respond to feedback in this thread for the first two weeks of its existence.
Philosophy
Our goal with TzStamp is to create a system that takes cryptographic timestamps from PGP levels of obscurity to HTTPS levels of ubiquity. We intend to accomplish this by doing the following:
- Running a public timestamping service that is as cheap as possible while avoiding paid rates or crippling API limits
- Providing an ergonomic interface for basic, advanced, and programmatic users
- Keeping the software easy to set up and maintain so that institutions and users can run their own instances. This includes minimizing dependencies and system complexity to reduce attack surface
- Thoroughly documenting the system software, API’s, and internals so that it is easy to use, integrate, and maintain the system
- Actively promoting the TzStamp software and related utilities through technical demos, editorials, bug and integration bounties, and social media
The hope is this will be enough to bootstrap timestamps into a growing ecosystem.
Interlude: Realistic Expectations Around Rate Limiting
Even a partially successful TzStamp will eventually have rate limits. LetsEncrypt has a multimillion dollar budget and they still have significant rate limits. At our current proof size of 2kb, it takes 2 gigabytes to publish a million proofs. A healthy bandwidth budget would still be quickly exhausted by a minority of users whose use cases require millions of timestamps. Even if these were excluded millions of hashes doesn’t stretch very far with tens of thousands of users. Ultimately the options come down to:
- Keeping the main TzStamp instance small
- Finding an institutional backer
- Charging past a certain level of usage
If our goal is to accelerate adoption keeping the main instance small seems like the worst outcome. An institutional backer seems like it would accelerate adoption fastsest. But if no long term backer can be found charging some portion of users enough money to subsidize the rest seems rational. Another possibility is to set it up so high volume users can run a TzStamp server locally and chain their tree to the main instance, cutting their resource use to almost nothing.
Basic economics dictates we can’t make a good faith promise that TzStamp will always be free for all users in all use cases. However our goal will always be to accelerate adoption, not make money. And that means it will stay as close to free as maximizes user acquisition and retention. This probably means “free for almost all users or close to it”.
System Components and Repositories
- TzStamp Server (NodeJS): Timestamping service software. Implements TzStamp API.
- TzStamp CLI (NodeJS): Client software for the timestamping service. Has scripting features for advanced users.
- Management Utility (NodeJS): Deploy and manage TzStamp contracts.
- Proof Upgrade Utility (TypeScript): Upgrade v0 alpha proofs to v1 beta proofs.
- Proofs Library (TypeScript): Allows 3rd party applications to incorporate proof verification into their software.
- tzstamp.io (HTML/CSS/JS): Transitional web app for https://tzstamp.io.