Here the step-by-step procedure for the independent verification of the data or document notarization :
This is a courtesy page provided by Quadrans Foundation for convenience to easier proove the
correct notarization of the submitted data hash.
This is a free service, as such Quadrans cannot be held responsible for any loss or damage.
Please print or save this page and store it in a safe place for later reference and use.
With those it's easy to proove ownership, timestamping, time of existence, consistency and immutability of data.
It is necessary to:
Quadrans will not store any of those. No guaranties are provided that this page will still be available at any time in the future. Therefore the owner of the data and email address is responsible for the storage of both.
All the following steps make extensive use of the cryptographic hash function (SHA256) on binary bytes strings, here represented in their exadecimal notation.
The evidence is the double hash of the concatenation of 2 binary hashes of data available to the sender:
| document/data hash | c1537df4376627e7e5a260a649cf4175316c3390a9fc2495c087ccab2e08a1b9 |
| owner email hash | 9a2646ce855498bc1eb2fb31d7e750cd8528a775aaada869b0bbfbbe4847b4b9 |
| resulting evidence | f8e6481f2285af9e67d55b4051d5402fe6ee6c617f2e0a766f8afc5198569027 |
Using any Linux console, it is possible to check the evidence using the hash submitted for the data [hd] and the hash of the email address [he] used with:
echo -n [hd][he] | tr "[:lower:]" "[:upper:]" | xxd -r -p | sha256sum | xxd -r -p | sha256sum
According to the properties of cryptographic hash functions, excluding the extremelly unlikely event of collisions, that evidence can only result as hash of the to previously provided elements.
The evidence is stored with many others into a covenient data structure called
Merkle Tree.
All those evidences are coupled and hashed together in a binary tree until a single hash can be derived, called Merkle Root.
In order to proove matematically that an evidence is part of a merkle tree, a list of the other hashes (called Merkle Proof) must be
provided, and those have to be hashed together and result in the same Merkle Root.
For this particular evidence the list of hashes is :
c1537df4376627e7e5a260a649cf4175316c3390a9fc2495c087ccab2e08a1b9 (your data)
f8e6481f2285af9e67d55b4051d5402fe6ee6c617f2e0a766f8afc5198569027 (your evidence)
8625c8ab4c3c2684741eb93ef9344da2d43b36759f61f11c82f7981ae5111565
c59a1a3de96ec16a492139b2639e58b933a92758e11a1691215afa635e6b14b5 (merkle tree root)
c59a1a3de96ec16a492139b2639e58b933a92758e11a1691215afa635e6b14b5 (calculated root)This clearly shows :
├─8625c8ab4c3c2684741eb93ef9344da2d43b36759f61f11c82f7981ae5111565
└─f8e6481f2285af9e67d55b4051d5402fe6ee6c617f2e0a766f8afc5198569027 (your evidence)
Those hashes are calculated on binary numeric values (byte arrays). Using any Linux console it is possible to check each pair of hashes [h1] and [h2] with:
echo -n [h1][h2] | tr "[:lower:]" "[:upper:]" | xxd -r -p | sha256sum
This proves that the evidence f8e6481f2285af9e67d55b4051d5402fe6ee6c617f2e0a766f8afc5198569027 is part of the merkle root c59a1a3de96ec16a492139b2639e58b933a92758e11a1691215afa635e6b14b5
Provided that the evidence is part of the merkle root, that specific value has been notarized in the Quadrans blockchain in this position and date:
| blockDateTime | 2024-03-04 09:07:13 |
| blockNumber | 31441739 |
| blockHash | 0x207ff5d4e1fc1f611250ed10393758400db484226da68411f043e46bfe1b3f27 |
| transactionHash | 0xab52e63f0ceae4d299ac2b4a2981d4e79ed1f2047d363af2a50aff7bcba6e8eb |
| sender | 0x3ce6D53998E0B45b46D62C5e3a08025156543Ef9 |
| rawData | 0x0000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000156e6f746172697a65407175616472616e732e6e65740000000000000000000000000000000000000000000000000000000000000000000000000000000000000a4d65726b6c655472656500000000000000000000000000000000000000000000 |
It is possible to use Quadrans Explorer to see that transaction and inspect it's content. The relevant data are stored in the transaction's event logs.
With the merkle tree and the transaction it was recorded in, it is possible to use web3 api to get the
transaction receipt.
It is necessary to have the smart contract ABI. Sample code for this operation is provided in python and javascript.
It is also necessary to have access to a free Quadrans Node.
Running that procedure the result is the following:
| _email | notarize@quadrans.net |
| _storage | MerkleTree |
| _hash | c59a1a3de96ec16a492139b2639e58b933a92758e11a1691215afa635e6b14b5 (merkle root) |
The recorded "_hash" value matches the merkle root, this shows that the all the evidences, with the provided merkle proof, where successfully notarized on the Quadrans blockchain.
Don't trust, verify.