public void Example() { var tree = new MerkleTree(); tree.AddLeave(new[] { HexEncoder.Decode("e1566f09e0deea437826514431be6e4bdb4fe10aa54d75aecf0b4cdc1bc4320c"), HexEncoder.Decode("2f7f9092b2d6c5c17cfe2bcf33fc38a41f2e4d4485b198c2b1074bba067e7168"), HexEncoder.Decode("e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"), HexEncoder.Decode("e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855") }); var root = HexEncoder.Encode(tree.MerkleRootHash); Console.WriteLine(root); // 740c08b74d31bb77fd9806e4f6159d88dfd012acf8984bd41b4b4c9cbd7aa358 var proof = tree.GetProof(1); Console.WriteLine(proof.ToJson()); /* * [{ * "left": "e1566f09e0deea437826514431be6e4bdb4fe10aa54d75aecf0b4cdc1bc4320c" * },{ * "right":"2dba5dbc339e7316aea2683faf839c1b7b1ee2313db792112588118df066aa35" * }]" */ var hash = HexEncoder.Decode("2f7f9092b2d6c5c17cfe2bcf33fc38a41f2e4d4485b198c2b1074bba067e7168"); var isValid = tree.ValidateProof(proof, hash); Console.WriteLine(isValid); // true var receipt = proof.ToReceipt(); receipt.AddBitcoinAnchor("780b4cdc16f09e0deebce156a434320c2654fe10aa54d75ae14431be6e4bdbcf"); Console.WriteLine(receipt.ToJson()); /* * { * "@context":"https://w3id.org/chainpoint/v2", * "type":"ChainpointSHA256v2", * "targetHash":"2f7f9092b2d6c5c17cfe2bcf33fc38a41f2e4d4485b198c2b1074bba067e7168", * "merkleRoot":"740c08b74d31bb77fd9806e4f6159d88dfd012acf8984bd41b4b4c9cbd7aa358", * "proof":[ * { * "left":"e1566f09e0deea437826514431be6e4bdb4fe10aa54d75aecf0b4cdc1bc4320c" * }, * { * "right":"2dba5dbc339e7316aea2683faf839c1b7b1ee2313db792112588118df066aa35" * } * ], * "anchors":[ * { * "type":"BTCOpReturn", * "sourceId":"780b4cdc16f09e0deebce156a434320c2654fe10aa54d75ae14431be6e4bdbcf" * } * ] * } */ }