import { merkle } from "https://deno.land/x/json_hash@0.2.0/mod.ts";
Derives a MerkleHash from input data.
It treats MerkleHashes in the input tree as like JSON values that those hashes represent. For example, the following code prints 5 rows of the exactly same hashes:
import { MerkleTree, merkle } from "./merkle.ts";
const tree = [
{
title: "The Catcher in the Rye",
author: "J.D. Salinger",
content: "Very long content...",
},
{
title: "The Great Gatsby",
author: "F. Scott Fitzgerald",
content: "Very long content...",
},
];
const tree2: MerkleTree<"SHA3-256"> = [
{
...tree[0],
content: await merkle("SHA3-256", tree[0].content),
},
tree[1],
];
const tree3: MerkleTree<"SHA3-256"> = [
await merkle("SHA3-256", tree[0]),
tree[1],
];
const tree4: MerkleTree<"SHA3-256"> = [
await merkle("SHA3-256", tree[0]),
await merkle("SHA3-256", tree[1]),
];
const merkleRoot = await merkle("SHA3-256", tree);
console.log(await merkle("SHA3-256", tree));
console.log(await merkle("SHA3-256", tree2));
console.log(await merkle("SHA3-256", tree3));
console.log(await merkle("SHA3-256", tree4));
console.log(await merkle("SHA3-256", merkleRoot));
// prints:
// MerkleHash SHA3-256 ede1427e0292877c45436591ac28139e0a8a1c23cf5d2036ffad6067bbc8c15c
// MerkleHash SHA3-256 ede1427e0292877c45436591ac28139e0a8a1c23cf5d2036ffad6067bbc8c15c
// MerkleHash SHA3-256 ede1427e0292877c45436591ac28139e0a8a1c23cf5d2036ffad6067bbc8c15c
// MerkleHash SHA3-256 ede1427e0292877c45436591ac28139e0a8a1c23cf5d2036ffad6067bbc8c15c
// MerkleHash SHA3-256 ede1427e0292877c45436591ac28139e0a8a1c23cf5d2036ffad6067bbc8c15c
Type Parameters
T extends DigestAlgorithmType