Po.et Documentation
Technical documentation for the Po.et Network

About Po.et
Use Po.et
Reference
Process
RDD

Anchoring Po.et Claims to the Bitcoin Blockchain

Po.et uses the OP_RETURN Bitcoin opcode to store a reference to batched claims. Any OP_RETURN data that begins with POET is assumed to be a POET message.

Following the POET protocol header, we specify a version using the next 2 bytes. The next byte is a protocol enum (0 = IPFS), followed by the data hash:

POET000QmX2ZjoWkcK13XYyuXQmXhKxs6btTtg8D4nPdM8ubJE8mR

Poet protocol  version  prototol  data hash
POET           00       0         QmX2ZjoWkcK13XYyuXQmXhKxs6btTtg8D4nPdM8ubJE8mR

How Anchoring Works

Up to 40 bytes of arbitrary data can be added to a Bitcoin transaction output using the op code OP_RETURN.

Anchoring data to the Bitcoin blockchain works by adding the hash of said data to the OP_RETURN output.

This hash is generated by the IPFS bin, not us. IPFS uses the multihash protocol. By default, it currently uses SHA-256, which is why IPFS hashes start with “Qm”.

We are using IPFS to store files submitted by users. IPFS addresses files by their hash. We consolidate multiple files in IPFS into a single IPFS directory.

We store the IPFS directory hash in the Bitcoin transaction output, which serves as cryptographic proof of the existence of the data at a given point in time, and as a link to the full files that can be downloaded from IPFS.