merkletreejs/docs/classes/_src_merklesumtree_.merkles...

675 lines
13 KiB
Markdown
Raw Normal View History

2022-12-01 12:41:15 +08:00
[merkletreejs](../README.md) [Globals](../globals.md) ["src/MerkleSumTree"](../modules/_src_merklesumtree_.md) [MerkleSumTree](_src_merklesumtree_.merklesumtree.md)
# Class: MerkleSumTree
## Hierarchy
* [Base](_src_base_.base.md)
**MerkleSumTree**
## Index
### Constructors
* [constructor](_src_merklesumtree_.merklesumtree.md#constructor)
### Properties
* [buckets](_src_merklesumtree_.merklesumtree.md#buckets)
* [hashFn](_src_merklesumtree_.merklesumtree.md#hashfn)
* [leaves](_src_merklesumtree_.merklesumtree.md#leaves)
* [root](_src_merklesumtree_.merklesumtree.md#root)
### Methods
* [bigNumberify](_src_merklesumtree_.merklesumtree.md#bignumberify)
* [binarySearch](_src_merklesumtree_.merklesumtree.md#binarysearch)
* [bufferIndexOf](_src_merklesumtree_.merklesumtree.md#protected-bufferindexof)
* [bufferToHex](_src_merklesumtree_.merklesumtree.md#buffertohex)
* [bufferify](_src_merklesumtree_.merklesumtree.md#bufferify)
* [bufferifyFn](_src_merklesumtree_.merklesumtree.md#bufferifyfn)
* [getProof](_src_merklesumtree_.merklesumtree.md#getproof)
* [isHexString](_src_merklesumtree_.merklesumtree.md#protected-ishexstring)
* [linearSearch](_src_merklesumtree_.merklesumtree.md#linearsearch)
* [log2](_src_merklesumtree_.merklesumtree.md#protected-log2)
* [print](_src_merklesumtree_.merklesumtree.md#print)
* [sizeToBuffer](_src_merklesumtree_.merklesumtree.md#sizetobuffer)
* [sum](_src_merklesumtree_.merklesumtree.md#sum)
* [verifyProof](_src_merklesumtree_.merklesumtree.md#verifyproof)
* [zip](_src_merklesumtree_.merklesumtree.md#protected-zip)
* [bigNumberify](_src_merklesumtree_.merklesumtree.md#static-bignumberify)
* [binarySearch](_src_merklesumtree_.merklesumtree.md#static-binarysearch)
* [bufferToHex](_src_merklesumtree_.merklesumtree.md#static-buffertohex)
* [bufferify](_src_merklesumtree_.merklesumtree.md#static-bufferify)
* [checkConsecutive](_src_merklesumtree_.merklesumtree.md#static-checkconsecutive)
* [hexZeroPad](_src_merklesumtree_.merklesumtree.md#static-hexzeropad)
* [isHexString](_src_merklesumtree_.merklesumtree.md#static-ishexstring)
* [linearSearch](_src_merklesumtree_.merklesumtree.md#static-linearsearch)
* [print](_src_merklesumtree_.merklesumtree.md#static-print)
## Constructors
### constructor
\+ **new MerkleSumTree**(`leaves`: [Leaf](_src_merklesumtree_.leaf.md)[], `hashFn`: [THashFn](../modules/_src_merklesumtree_.md#thashfn)): *[MerkleSumTree](_src_merklesumtree_.merklesumtree.md)*
**Parameters:**
Name | Type |
------ | ------ |
`leaves` | [Leaf](_src_merklesumtree_.leaf.md)[] |
`hashFn` | [THashFn](../modules/_src_merklesumtree_.md#thashfn) |
**Returns:** *[MerkleSumTree](_src_merklesumtree_.merklesumtree.md)*
## Properties
### buckets
**buckets**: *[Bucket](_src_merklesumtree_.bucket.md)[]*
___
### hashFn
**hashFn**: *[THashFn](../modules/_src_merklesumtree_.md#thashfn)*
___
### leaves
**leaves**: *[Leaf](_src_merklesumtree_.leaf.md)[]*
___
### root
**root**: *[Bucket](_src_merklesumtree_.bucket.md)*
## Methods
### bigNumberify
**bigNumberify**(`value`: any): *BigInt*
*Inherited from [Base](_src_base_.base.md).[bigNumberify](_src_base_.base.md#bignumberify)*
**Parameters:**
Name | Type |
------ | ------ |
`value` | any |
**Returns:** *BigInt*
___
### binarySearch
**binarySearch**(`array`: Buffer[], `element`: Buffer, `compareFunction`: function): *number*
*Inherited from [Base](_src_base_.base.md).[binarySearch](_src_base_.base.md#static-binarysearch)*
binarySearch
**`desc`** Returns the first index of which given item is found in array using binary search.
**`example`**
```js
const index = tree.binarySearch(array, element, Buffer.compare)
```
**Parameters:**
**array**: *Buffer[]*
Array of items.
**element**: *Buffer*
Item to find.
**compareFunction**: *function*
▸ (`a`: unknown, `b`: unknown): *number*
**Parameters:**
Name | Type |
------ | ------ |
`a` | unknown |
`b` | unknown |
**Returns:** *number*
- Index number
___
### `Protected` bufferIndexOf
**bufferIndexOf**(`array`: Buffer[], `element`: Buffer, `isSorted`: boolean): *number*
*Inherited from [Base](_src_base_.base.md).[bufferIndexOf](_src_base_.base.md#protected-bufferindexof)*
bufferIndexOf
**`desc`** Returns the first index of which given buffer is found in array.
**`example`**
```js
const index = tree.bufferIndexOf(haystack, needle)
```
**Parameters:**
Name | Type | Default |
------ | ------ | ------ |
`array` | Buffer[] | - |
`element` | Buffer | - |
`isSorted` | boolean | false |
**Returns:** *number*
- Index number
___
### bufferToHex
**bufferToHex**(`value`: Buffer, `withPrefix`: boolean): *string*
*Inherited from [Base](_src_base_.base.md).[bufferToHex](_src_base_.base.md#buffertohex)*
bufferToHex
**`desc`** Returns a hex string with 0x prefix for given buffer.
**`example`**
```js
const hexStr = tree.bufferToHex(Buffer.from('A'))
```
**Parameters:**
Name | Type | Default |
------ | ------ | ------ |
`value` | Buffer | - |
`withPrefix` | boolean | true |
**Returns:** *string*
___
### bufferify
**bufferify**(`value`: any): *Buffer*
*Inherited from [Base](_src_base_.base.md).[bufferify](_src_base_.base.md#static-bufferify)*
bufferify
**`desc`** Returns a buffer type for the given value.
**`example`**
```js
const buf = tree.bufferify('0x1234')
```
**Parameters:**
Name | Type |
------ | ------ |
`value` | any |
**Returns:** *Buffer*
___
### bufferifyFn
**bufferifyFn**(`f`: any): *any*
*Inherited from [Base](_src_base_.base.md).[bufferifyFn](_src_base_.base.md#bufferifyfn)*
bufferifyFn
**`desc`** Returns a function that will bufferify the return value.
**`example`**
```js
const fn = tree.bufferifyFn((value) => sha256(value))
```
**Parameters:**
Name | Type |
------ | ------ |
`f` | any |
**Returns:** *any*
___
### getProof
**getProof**(`index`: number | BigInt): *any[]*
**Parameters:**
Name | Type |
------ | ------ |
`index` | number | BigInt |
**Returns:** *any[]*
___
### `Protected` isHexString
**isHexString**(`value`: string): *boolean*
*Inherited from [Base](_src_base_.base.md).[isHexString](_src_base_.base.md#static-ishexstring)*
isHexString
**`desc`** Returns true if value is a hex string.
**`example`**
```js
console.log(MerkleTree.isHexString('0x1234'))
```
**Parameters:**
Name | Type |
------ | ------ |
`value` | string |
**Returns:** *boolean*
___
### linearSearch
**linearSearch**(`array`: Buffer[], `element`: Buffer, `eqChecker`: function): *number*
*Inherited from [Base](_src_base_.base.md).[linearSearch](_src_base_.base.md#static-linearsearch)*
linearSearch
**`desc`** Returns the first index of which given item is found in array using linear search.
**`example`**
```js
const index = tree.linearSearch(array, element, (a, b) => a === b)
```
**Parameters:**
**array**: *Buffer[]*
Array of items.
**element**: *Buffer*
Item to find.
**eqChecker**: *function*
▸ (`a`: unknown, `b`: unknown): *boolean*
**Parameters:**
Name | Type |
------ | ------ |
`a` | unknown |
`b` | unknown |
**Returns:** *number*
- Index number
___
### `Protected` log2
**log2**(`n`: number): *number*
*Inherited from [Base](_src_base_.base.md).[log2](_src_base_.base.md#protected-log2)*
log2
**`desc`** Returns the log2 of number.
**Parameters:**
Name | Type |
------ | ------ |
`n` | number |
**Returns:** *number*
___
### print
**print**(): *void*
*Inherited from [Base](_src_base_.base.md).[print](_src_base_.base.md#print)*
print
**`desc`** Prints out a visual representation of the merkle tree.
**`example`**
```js
tree.print()
```
**Returns:** *void*
___
### sizeToBuffer
**sizeToBuffer**(`size`: BigInt): *Buffer*
**Parameters:**
Name | Type |
------ | ------ |
`size` | BigInt |
**Returns:** *Buffer*
___
### sum
**sum**(`arr`: BigInt[]): *bigint*
**Parameters:**
Name | Type |
------ | ------ |
`arr` | BigInt[] |
**Returns:** *bigint*
___
### verifyProof
**verifyProof**(`root`: [Bucket](_src_merklesumtree_.bucket.md), `leaf`: [Leaf](_src_merklesumtree_.leaf.md), `proof`: [ProofStep](_src_merklesumtree_.proofstep.md)[]): *boolean*
**Parameters:**
Name | Type |
------ | ------ |
`root` | [Bucket](_src_merklesumtree_.bucket.md) |
`leaf` | [Leaf](_src_merklesumtree_.leaf.md) |
`proof` | [ProofStep](_src_merklesumtree_.proofstep.md)[] |
**Returns:** *boolean*
___
### `Protected` zip
**zip**(`a`: any[], `b`: any[]): *any[][]*
*Inherited from [Base](_src_base_.base.md).[zip](_src_base_.base.md#protected-zip)*
zip
**`desc`** Returns true if value is a hex string.
**`example`**
```js
const zipped = tree.zip(['a', 'b'],['A', 'B'])
console.log(zipped) // [ [ 'a', 'A' ], [ 'b', 'B' ] ]
```
**Parameters:**
Name | Type | Description |
------ | ------ | ------ |
`a` | any[] | first array |
`b` | any[] | second array |
**Returns:** *any[][]*
___
### `Static` bigNumberify
**bigNumberify**(`value`: any): *BigInt*
*Inherited from [Base](_src_base_.base.md).[bigNumberify](_src_base_.base.md#bignumberify)*
**Parameters:**
Name | Type |
------ | ------ |
`value` | any |
**Returns:** *BigInt*
___
### `Static` binarySearch
**binarySearch**(`array`: Buffer[], `element`: Buffer, `compareFunction`: function): *number*
*Inherited from [Base](_src_base_.base.md).[binarySearch](_src_base_.base.md#static-binarysearch)*
binarySearch
**`desc`** Returns the first index of which given item is found in array using binary search.
**`example`**
```js
const index = MerkleTree.binarySearch(array, element, Buffer.compare)
```
**Parameters:**
**array**: *Buffer[]*
Array of items.
**element**: *Buffer*
Item to find.
**compareFunction**: *function*
▸ (`a`: unknown, `b`: unknown): *number*
**Parameters:**
Name | Type |
------ | ------ |
`a` | unknown |
`b` | unknown |
**Returns:** *number*
- Index number
___
### `Static` bufferToHex
**bufferToHex**(`value`: Buffer, `withPrefix`: boolean): *string*
*Inherited from [Base](_src_base_.base.md).[bufferToHex](_src_base_.base.md#buffertohex)*
bufferToHex
**`desc`** Returns a hex string with 0x prefix for given buffer.
**`example`**
```js
const hexStr = MerkleTree.bufferToHex(Buffer.from('A'))
```
**Parameters:**
Name | Type | Default |
------ | ------ | ------ |
`value` | Buffer | - |
`withPrefix` | boolean | true |
**Returns:** *string*
___
### `Static` bufferify
**bufferify**(`value`: any): *Buffer*
*Inherited from [Base](_src_base_.base.md).[bufferify](_src_base_.base.md#static-bufferify)*
bufferify
**`desc`** Returns a buffer type for the given value.
**`example`**
```js
const buf = MerkleTree.bufferify('0x1234')
```
**Parameters:**
Name | Type |
------ | ------ |
`value` | any |
**Returns:** *Buffer*
___
### `Static` checkConsecutive
**checkConsecutive**(`leaves`: [Leaf](_src_merklesumtree_.leaf.md)[]): *void*
**Parameters:**
Name | Type |
------ | ------ |
`leaves` | [Leaf](_src_merklesumtree_.leaf.md)[] |
**Returns:** *void*
___
### `Static` hexZeroPad
**hexZeroPad**(`hexStr`: string, `length`: number): *string*
*Inherited from [Base](_src_base_.base.md).[hexZeroPad](_src_base_.base.md#static-hexzeropad)*
**Parameters:**
Name | Type |
------ | ------ |
`hexStr` | string |
`length` | number |
**Returns:** *string*
___
### `Static` isHexString
**isHexString**(`v`: string): *boolean*
*Inherited from [Base](_src_base_.base.md).[isHexString](_src_base_.base.md#static-ishexstring)*
isHexString
**`desc`** Returns true if value is a hex string.
**`example`**
```js
console.log(MerkleTree.isHexString('0x1234'))
```
**Parameters:**
Name | Type |
------ | ------ |
`v` | string |
**Returns:** *boolean*
___
### `Static` linearSearch
**linearSearch**(`array`: Buffer[], `element`: Buffer, `eqChecker`: function): *number*
*Inherited from [Base](_src_base_.base.md).[linearSearch](_src_base_.base.md#static-linearsearch)*
linearSearch
**`desc`** Returns the first index of which given item is found in array using linear search.
**`example`**
```js
const index = MerkleTree.linearSearch(array, element, (a, b) => a === b)
```
**Parameters:**
**array**: *Buffer[]*
Array of items.
**element**: *Buffer*
Item to find.
**eqChecker**: *function*
▸ (`a`: unknown, `b`: unknown): *boolean*
**Parameters:**
Name | Type |
------ | ------ |
`a` | unknown |
`b` | unknown |
**Returns:** *number*
- Index number
___
### `Static` print
**print**(`tree`: any): *void*
*Inherited from [Base](_src_base_.base.md).[print](_src_base_.base.md#print)*
print
**`desc`** Prints out a visual representation of the given merkle tree.
**`example`**
```js
MerkleTree.print(tree)
```
**Parameters:**
Name | Type | Description |
------ | ------ | ------ |
`tree` | any | Merkle tree instance. |
**Returns:** *void*