University of Nicosia Course Certificates
An implementation for illustrating Proof of Existence can be found at the University of Nicosia for the verification of course certificates on the Bitcoin blockchain. Certificate pdf files from a course are hashed, listed in an index pdf file, which is again hashed, for the latter hash value to be included in Bitcoin transaction data after an OP_RETURN keyword. When a block with this transaction is mined and subsequent blocks based on that block are mined, the proof of existence is immutably recorded. All blocks are distributed among the full node network participants who store a full copy of the blockchain. Anyone can verify the existence of a certificate pdf and an index pdf file by calculating their hash values, by ensuring the presence of the certificate pdf hash value in the index pdf file, and by locating the index pdf hash value on the Bitcoin blockchain.
The following certificate pdf file I obtained in the fall 2015 digital currencies course can be verified with an index pdf file. As a requirement, document and index files need to be available off-chain.
In order to verify the certificate, the SHA-256 hash value of the certificate pdf file is calculated using sha256sum or similar software.
> sha256sum dfin511-certificate-haerer.pdf f21452a8b6528d7a6bb3ed3dbececeab7c3851bf65d9539e0e14bcc504c78fb9This hash value needs to be present in the index file; in this case, the mentioned index pdf file contains it. For establishing the authenticity of the index pdf file, its SHA-256 hash value is calculated and compared to the one stored in a Bitcoin transaction.
> sha256sum dfin511-index4.pdf 38339945a9152a1c827230fc380e456af15c1449fafbc302f748e360fb65093dThe Bitcoin blockchain can be searched for the calculated hash value by any full node – for demonstration purposes, it can be looked up at the smartbit block explorer, which does search bitcoin transaction data, including content after the OP_RETURN keyword. When searching for the mentioned hash value, the transaction 5c76ef4… containing the following data is found.
OP_RETURN 554e696344432038339945a9152a1c827230fc380e456af15c1449fafbc302f748e360fb65093dThe first part 554e6963444320 is an identifier of the University of Nicosia and the second part 3833994… is the hash value of the index pdf file.
As it contains the hash, the existence of the index document and, by extension, the existence of the certificate, are verified. It is contained in block 393294, mined approximately at 2016-01-14 13:09 UTC.
Unspendable Transactions in Bitcoin
Including arbitrary data in a Bitcoin transaction after an OP_RETURN keyword works well, however, such a transaction is unspendable. Some amount of bitcoin is burnt as it is sent to a non-existing address; additionally, the required transaction fee has grown to multiple USD to tens of USD (12⁄2017). However, in 2018, transaction cost went down again and now ranges from a few cents to one or two USD.
Proof of Existence Services
Proof of Existence in Bitcoin has moved to services which index many transactions, e.g. POEX.io (formerly proofofexistence.com).
OpenTimestamps is a notable project, developed by the bitcoin core developer Peter Tod. It uses a Client-Server-based architecture and defines an OTS file format for containing hash values used for verification.