Shyft Merkle Tree Library
Basic libary for Shyft-specific merkle tree operations.
Installing
npm install @shyftnetwork/shyft_merkle-lib
Re-generating Docs
npm install && npm run docs
Functions
-
hashAB(a, b) ⇒
string
-
Hashes two values together.
-
hashHeader() ⇒
string
-
Hashes a block header: {previousHeader, timestamp, blockNumber, transactionRoot}
-
isPowerOfTwo(n) ⇒
boolean
-
Checks if a number is a power of two (ie. valid leaf array size)
-
setupleafs(leafs) ⇒
Array.<Array.<string>>
-
Creates first two layers of a tree, ie. the leafs and their hashes
-
treePad(tree) ⇒
Array.<Array.<string>>
-
Pads the leaves of a tree with null to ensure its length is a power of two
-
buildTree(height) ⇒
Tree
-
Constructs a merkle tree recursively as a 2d array.
-
getProof(tree, leaf) ⇒
Array.<any>
-
Assembles a proof from a given tree for a given leaf. This produces a proof of the format [boolean, leaf, boolean, leaf ...]
-
verifyProof(proof, leaf, root) ⇒
boolean
-
Verifies that the leaf and the proof do in fact hash to the root
-
stringifyProof(proof) ⇒
string
-
Stringifies the proof by assmbling a bit array of the path indicators and appending it to the path segments.
-
getRoot(tree) ⇒
string
-
Returns root element of tree.
-
isValidLeaf(leaf, tree) ⇒
boolean
-
Checks if the leaf exists in the tree.
string
hashAB(a, b) ⇒ Hashes two values together.
Kind: global function
Param | Type | Description |
---|---|---|
a | string |
a bytes32 appropriate value |
b | string |
a bytes32 appropriate value |
string
hashHeader() ⇒ Hashes a block header: {previousHeader, timestamp, blockNumber, transactionRoot}
Kind: global function
Param | Type | Description |
---|---|---|
obj.previousHeader | string |
previous block header |
obj.timestamp | number |
block timestamp |
obj.blockNumber | number |
current block number |
obj.transactionsRoot | string |
current transaction root |
obj.receiptsRoot | string |
current receipts root |
boolean
isPowerOfTwo(n) ⇒ Checks if a number is a power of two (ie. valid leaf array size)
Kind: global function
Param | Type |
---|---|
n | number |
Array.<Array.<string>>
setupleafs(leafs) ⇒ Creates first two layers of a tree, ie. the leafs and their hashes
Kind: global function
Param | Type |
---|---|
leafs | Array.<string> |
Array.<Array.<string>>
treePad(tree) ⇒ Pads the leaves of a tree with null to ensure its length is a power of two
Kind: global function
Param | Type |
---|---|
tree | Array.<Array.<string>> |
Tree
buildTree(height) ⇒ Constructs a merkle tree recursively as a 2d array.
Kind: global function
Param | Type | Description |
---|---|---|
Array.<string> | Array.<Array.<string>>
|
the current tree. Initially a single dimensional array of leaves | |
height | current height of the tree (starts at 0) |
Array.<any>
getProof(tree, leaf) ⇒ Assembles a proof from a given tree for a given leaf. This produces a proof of the format [boolean, leaf, boolean, leaf ...]
Kind: global function
Param | Type |
---|---|
tree | Array.<Array.<string>> |
leaf | string |
boolean
verifyProof(proof, leaf, root) ⇒ Verifies that the leaf and the proof do in fact hash to the root
Kind: global function
Param | Type |
---|---|
proof | Array.<any> |
leaf | Object |
root | string |
string
stringifyProof(proof) ⇒ Stringifies the proof by assmbling a bit array of the path indicators and appending it to the path segments.
Kind: global function
Param | Type |
---|---|
proof | Array.<any> |
string
getRoot(tree) ⇒ Returns root element of tree.
Kind: global function
Param |
---|
tree |
boolean
isValidLeaf(leaf, tree) ⇒ Checks if the leaf exists in the tree.
Kind: global function
Param | Type | Description |
---|---|---|
leaf | Object |
|
leaf.previousHeader | string |
previous block header |
leaf.timestamp | number |
block timestamp |
leaf.blockNumber | number |
current block number |
leaf.transactionsRoot | string |
current transaction root |
leaf.receiptsRoot | string |
current receipts root |
tree | Valid merkle tree |