SparseMerkleProof
Account
The Account struct represents the state of the account including the storage root, nonce, balance and codesize
This is mapped directly to the output of the storage proof
struct Account {
uint64 nonce;
uint256 balance;
bytes32 storageRoot;
bytes32 mimcCodeHash;
bytes32 keccakCodeHash;
uint64 codeSize;
}
Leaf
Represents the leaf structure in both account and storage tries
This is mapped directly to the output of the storage proof
struct Leaf {
uint256 prev;
uint256 next;
bytes32 hKey;
bytes32 hValue;
}
WrongBytesLength
error WrongBytesLength(uint256 expectedLength, uint256 bytesLength)
Thrown when expected bytes length is incorrect
LengthNotMod32
error LengthNotMod32()
Thrown when the length of bytes is not in exactly 32 byte chunks
MaxTreeLeafIndexExceed
error MaxTreeLeafIndexExceed()
Thrown when the leaf index is higher than the tree depth
WrongProofLength
error WrongProofLength(uint256 expectedLength, uint256 actualLength)
Thrown when the length of the unformatted proof is not provided exactly as expected (UNFORMATTED_PROOF_LENGTH)
TREE_DEPTH
uint256 TREE_DEPTH
UNFORMATTED_PROOF_LENGTH
uint256 UNFORMATTED_PROOF_LENGTH
ZERO_HASH
bytes32 ZERO_HASH
MAX_TREE_LEAF_INDEX
uint256 MAX_TREE_LEAF_INDEX
verifyProof
function verifyProof(bytes[] _rawProof, uint256 _leafIndex, bytes32 _root) external pure returns (bool)
Formats input, computes root and returns true if it matches the provided merkle root
Parameters
Name | Type | Description |
---|---|---|
_rawProof | bytes[] | Raw sparse merkle tree proof |
_leafIndex | uint256 | Index of the leaf |
_root | bytes32 | Sparse merkle root |
Return Values
Name | Type | Description |
---|---|---|
[0] | bool | If the computed merkle root matches the provided one |
mimcHash
function mimcHash(bytes _input) external pure returns (bytes32)
Hash a value using MIMC hash
Parameters
Name | Type | Description |
---|---|---|
_input | bytes | Value to hash |
Return Values
Name | Type | Description |
---|---|---|
[0] | bytes32 | bytes32 Mimc hash |
getLeaf
function getLeaf(bytes _encodedLeaf) external pure returns (struct SparseMerkleProof.Leaf)
Get leaf
Parameters
Name | Type | Description |
---|---|---|
_encodedLeaf | bytes | Encoded leaf bytes (prev, next, hKey, hValue) |
Return Values
Name | Type | Description |
---|---|---|
[0] | struct SparseMerkleProof.Leaf | Leaf Formatted leaf struct |
getAccount
function getAccount(bytes _encodedAccountValue) external pure returns (struct SparseMerkleProof.Account)
Get account
Parameters
Name | Type | Description |
---|---|---|
_encodedAccountValue | bytes | Encoded account value bytes (nonce, balance, storageRoot, mimcCodeHash, keccakCodeHash, codeSize) |
Return Values
Name | Type | Description |
---|---|---|
[0] | struct SparseMerkleProof.Account | Account Formatted account struct |
hashAccountValue
function hashAccountValue(bytes _value) external pure returns (bytes32)
Hash account value
Parameters
Name | Type | Description |
---|---|---|
_value | bytes | Encoded account value bytes (nonce, balance, storageRoot, mimcCodeHash, keccakCodeHash, codeSize) |
Return Values
Name | Type | Description |
---|---|---|
[0] | bytes32 | bytes32 Account value hash |
hashStorageValue
function hashStorageValue(bytes32 _value) external pure returns (bytes32)
Hash storage value
Parameters
Name | Type | Description |
---|---|---|
_value | bytes32 | Encoded storage value bytes |
Return Values
Name | Type | Description |
---|---|---|
[0] | bytes32 | bytes32 Storage value hash |