Fossilizer

A fossilizer takes arbitrary data and provides an externally-verifiable proof of existence for that data. It also provides a relative ordering of the events that produced fossilized data.

For example, a naive Bitcoin fossilizer could hash the given data and include it in a Bitcoin transaction. Since the Bitcoin blockchain is immutable, it provides a record that the data existed at block N.

See the Go documentation here.

Available fossilizer implementations

We offer several implementations using different kinds of proofs. You can directly use them as a library or use one of our docker images.

Bitcoin Fossilizer

This implementation uses the Bitcoin blockchain to store merkle roots. It collects data in a merkle tree during a configurable interval, after which it computes a merkle root and sends that value to the Bitcoin blockchain. It produces a proof containing the transaction ID and a merkle path.

Note: you need to provide a WIF with enough satoshis to send transactions to the blockchain.

Dummy Fossilizer

This implementation simply creates a timestamp of the request. It doesn't offer any kind of cryptographic proof and should only be used when prototyping.

Dummy Batch Fossilizer

This implementation batches incoming requests in a merkle tree and asynchronously creates a timestamp for the tree root. It doesn't offer any kind of cryptographic proof and should only be used when prototyping with batch systems.