Independently validating your blockchain proofs

ProvenDB proofs are Chainpoint compatible. They can be independently validated by using the Chainpoint CLI or Javascript interfaces. The chainpoint whitepaper describes the logical process and theoretical underpinnings of Chainpoint proofs.

However, the hash values that are calculated for an individual ProvenDB document or a complete ProvenDB version are unique to ProvenDB. These algorithms are open source and contained in the GitHub repository https://github.com/SouthbankSoftware/provendb-verify.

This github repository also contains the source code for the provendb-verify ] tool, which can be used to independently verify ProvenDB or ProvenDocs proofs. The tool can also be downloaded from https://provendb.com/downloads.

You can export and independently validate your database proofs using the procedure below. These proofs are not dependent in any way on the ProvenDB or Chainpoint platforms.

Download an export of your database

See Exporting your data for detailed procedures.

Decrypt the export

Using the provendb-decrypt command downloaded from https://provendb.com/app/downloads, and the password provided to you in the previous step, decrypt the archive

./decrypt -k wyiC8OScBCKSkJIhEIvL384XWrH4488l -i ~/Downloads/Z8GGNGB6K4OFan38WaQtkvAOtzSNuVJq.gz.pw

Restore the archive to a MongoDB database

Below we restore the archive to an unsecured database on the localhost. Use other options of mongorestore to load into a remote database if desired.

mongorestore --gzip --archive=Pp60rZC-hLhBfHDL1WLQx45cjTmQnr5P.gz

Use provendb-verify to validate your proofs

Download provendb-verify from https://provendb.com/app/downloads or build it from the github repository https://github.com/SouthbankSoftware/provendb-verify.

You can list the proofs within the restored database using the --ls option:

$ provendb-verify -db dev_guy01 --ls
proofId                                 version     submitted                       status
53780ed0-45f2-11e9-a4bd-01752f568485    34416       2019-03-14 11:44:29 +1100 AEDT  valid
4ab726f0-45f2-11e9-a4bd-01738939dce1    34407       2019-03-14 11:44:14 +1100 AEDT  valid
422b31c0-45f2-11e9-a4bd-01abc446c1ea    34398       2019-03-14 11:44:00 +1100 AEDT  valid
399614d0-45f2-11e9-a4bd-01940bff0df9    34389       2019-03-14 11:43:46 +1100 AEDT  valid
317a94b0-45f2-11e9-a4bd-01fbdddc1aba    34380       2019-03-14 11:43:32 +1100 AEDT  valid

Next we validate a proof using the proof id obtained from the previous step:

$ provendb-verify -db dev_guy01 --pid 53780ed0-45f2-11e9-a4bd-01752f568485
Hashing database `dev_guy01`... 352/352
Verifying Chainpoint Proof...
Verifying Chainpoint anchor...
Verifying Bitcoin anchor...
Verifying Bitcoin transaction OP_RETURN...
Verifying Bitcoin block merkle root...
Bitcoin transaction e0ed2fd9065f8adc26e9d82bd6fff700ba376dc69359e1bfe2190a5066ee5715 has OP_RETURN e0c89977e1723891c66e01b769f875ad159478cc78801d9c6dd1e402a3b67373
Bitcoin block height 566950 has merkle root 078c04383f3038b95730f92b27c7f835c4df822de0920a9d9bc697959a48a35c
 PASS  Database `dev_guy01` in version 34416 is verified```

 

What’s Next