Documentation
¶
Index ¶
- Variables
- func ConcatSorted(a, b Bytes32) []byte
- func GetProof(tree []string, index int) ([]string, error)
- func IsValidTree(tree []string) bool
- func MakeTree(leaves []Bytes32) ([]string, error)
- func ProcessMultiProof(mp *MultiProof) (string, error)
- func ProcessProof(leaf Bytes32, proof []string) (string, error)
- func RenderTree(tree []string) (string, error)
- func TreeLeaves(tree []string) iter.Seq2[int, string]
- func TreeNodes(tree []string) iter.Seq2[int, string]
- func VerifySimple(root string, leaf Bytes32, proof []string) (bool, error)
- func VerifyStandard(root string, leafEncoding []string, leaf []any, proof []string) (bool, error)
- type Bytes32
- type MultiProof
- type SimpleMerkleTree
- func (t *SimpleMerkleTree) All() iter.Seq2[int, string]
- func (t *SimpleMerkleTree) At(i int) (string, bool)
- func (t *SimpleMerkleTree) Dump() SimpleTreeData
- func (t *SimpleMerkleTree) GetMultiProof(leaves []Bytes32) (*MultiProof, error)
- func (t *SimpleMerkleTree) GetMultiProofByIndices(indices []int) (*MultiProof, error)
- func (t *SimpleMerkleTree) GetProof(leaf Bytes32) ([]string, error)
- func (t *SimpleMerkleTree) GetProofByIndex(i int) ([]string, error)
- func (t *SimpleMerkleTree) Len() int
- func (t *SimpleMerkleTree) Render() (string, error)
- func (t *SimpleMerkleTree) Root() string
- func (t *SimpleMerkleTree) Validate() error
- func (t *SimpleMerkleTree) Verify(leaf Bytes32, proof []string) (bool, error)
- func (t *SimpleMerkleTree) VerifyMultiProof(mp *MultiProof) (bool, error)
- type SimpleTreeData
- type SimpleValue
- type StandardMerkleTree
- func (t *StandardMerkleTree) All() iter.Seq2[int, []any]
- func (t *StandardMerkleTree) At(i int) ([]any, bool)
- func (t *StandardMerkleTree) Dump() StandardTreeData
- func (t *StandardMerkleTree) GetMultiProofByIndices(indices []int) (*MultiProof, error)
- func (t *StandardMerkleTree) GetProof(leaf []any) ([]string, error)
- func (t *StandardMerkleTree) GetProofByIndex(i int) ([]string, error)
- func (t *StandardMerkleTree) LeafEncoding() []string
- func (t *StandardMerkleTree) Len() int
- func (t *StandardMerkleTree) Render() (string, error)
- func (t *StandardMerkleTree) Root() string
- func (t *StandardMerkleTree) Validate() error
- func (t *StandardMerkleTree) Verify(leaf []any, proof []string) (bool, error)
- func (t *StandardMerkleTree) VerifyMultiProof(mp *MultiProof) (bool, error)
- type StandardTreeData
- type StandardValue
Constants ¶
This section is empty.
Variables ¶
var ( ErrEmptyTree = errors.New("expected non-zero number of leaves") ErrInvalidNodeLength = errors.New("expected 32 bytes") ErrNotALeaf = errors.New("index is not a leaf") ErrLeafNotInTree = errors.New("leaf is not in tree") ErrDuplicatedIndex = errors.New("cannot prove duplicated index") ErrIndexOutOfBounds = errors.New("index out of bounds") ErrInvalidFormat = errors.New("invalid tree format") ErrInvariant = errors.New("invariant violation") ErrInvalidHex = errors.New("invalid hex string") ErrAbiEncode = errors.New("abi encoding error") ErrUnsupportedType = errors.New("unsupported type") ErrMismatchedCount = errors.New("mismatched leaf encoding count") )
Functions ¶
func ConcatSorted ¶ added in v0.2.0
func IsValidTree ¶ added in v0.2.0
IsValidTree checks if tree is a valid Merkle tree.
func ProcessMultiProof ¶ added in v0.2.0
func ProcessMultiProof(mp *MultiProof) (string, error)
ProcessMultiProof computes the root from a MultiProof.
func ProcessProof ¶ added in v0.2.0
ProcessProof computes the root from a leaf and proof.
func RenderTree ¶ added in v0.2.0
RenderTree returns a string representation of the tree.
func TreeLeaves ¶ added in v0.2.0
TreeLeaves returns an iterator over leaf indices.
func VerifySimple ¶ added in v0.2.0
VerifySimple is a static verification function.
Types ¶
type Bytes32 ¶ added in v0.2.0
type Bytes32 [32]byte
func HexToBytes32 ¶ added in v0.2.0
func MustHexToBytes32 ¶ added in v0.2.0
type MultiProof ¶ added in v0.2.0
type MultiProof struct {
Leaves []string `json:"leaves"`
Proof []string `json:"proof"`
ProofFlags []bool `json:"proofFlags"`
}
MultiProof represents a proof for multiple leaves.
func GetMultiProof ¶ added in v0.2.0
func GetMultiProof(tree []string, indices []int) (*MultiProof, error)
GetMultiProof generates a proof for multiple leaf indices.
type SimpleMerkleTree ¶ added in v0.2.0
type SimpleMerkleTree struct {
// contains filtered or unexported fields
}
SimpleMerkleTree is a Merkle tree for Bytes32 values.
func LoadSimpleMerkleTree ¶ added in v0.2.0
func LoadSimpleMerkleTree(data SimpleTreeData) (*SimpleMerkleTree, error)
LoadSimpleMerkleTree loads a tree from serialized data.
func NewSimpleMerkleTree ¶ added in v0.2.0
func NewSimpleMerkleTree(values []Bytes32, sortLeaves bool) (*SimpleMerkleTree, error)
NewSimpleMerkleTree creates a new SimpleMerkleTree from values.
func (*SimpleMerkleTree) All ¶ added in v0.2.0
func (t *SimpleMerkleTree) All() iter.Seq2[int, string]
All returns an iterator over all (index, value) pairs.
func (*SimpleMerkleTree) Dump ¶ added in v0.2.0
func (t *SimpleMerkleTree) Dump() SimpleTreeData
Dump serializes the tree.
func (*SimpleMerkleTree) GetMultiProof ¶ added in v0.2.0
func (t *SimpleMerkleTree) GetMultiProof(leaves []Bytes32) (*MultiProof, error)
GetMultiProof returns a proof for multiple leaves.
func (*SimpleMerkleTree) GetMultiProofByIndices ¶ added in v0.2.0
func (t *SimpleMerkleTree) GetMultiProofByIndices(indices []int) (*MultiProof, error)
GetMultiProofByIndices returns a proof for leaves at the given indices.
func (*SimpleMerkleTree) GetProof ¶ added in v0.2.0
func (t *SimpleMerkleTree) GetProof(leaf Bytes32) ([]string, error)
GetProof returns a proof for the given leaf.
func (*SimpleMerkleTree) GetProofByIndex ¶ added in v0.2.0
func (t *SimpleMerkleTree) GetProofByIndex(i int) ([]string, error)
GetProofByIndex returns a proof for the leaf at index.
func (*SimpleMerkleTree) Len ¶ added in v0.2.0
func (t *SimpleMerkleTree) Len() int
func (*SimpleMerkleTree) Render ¶ added in v0.2.0
func (t *SimpleMerkleTree) Render() (string, error)
Render returns a string representation.
func (*SimpleMerkleTree) Root ¶ added in v0.2.0
func (t *SimpleMerkleTree) Root() string
func (*SimpleMerkleTree) Validate ¶ added in v0.2.0
func (t *SimpleMerkleTree) Validate() error
Validate checks tree integrity.
func (*SimpleMerkleTree) Verify ¶ added in v0.2.0
func (t *SimpleMerkleTree) Verify(leaf Bytes32, proof []string) (bool, error)
Verify checks if a leaf is in the tree using the given proof.
func (*SimpleMerkleTree) VerifyMultiProof ¶ added in v0.2.0
func (t *SimpleMerkleTree) VerifyMultiProof(mp *MultiProof) (bool, error)
VerifyMultiProof checks a multi-proof.
type SimpleTreeData ¶ added in v0.2.0
type SimpleTreeData struct {
Format string `json:"format"`
Tree []string `json:"tree"`
Values []SimpleValue `json:"values"`
}
SimpleTreeData is the serialization format for SimpleMerkleTree.
type SimpleValue ¶ added in v0.2.0
SimpleValue holds a leaf value and its tree index.
type StandardMerkleTree ¶ added in v0.2.0
type StandardMerkleTree struct {
// contains filtered or unexported fields
}
StandardMerkleTree is a Merkle tree for ABI-encoded structured data.
func LoadStandardMerkleTree ¶ added in v0.2.0
func LoadStandardMerkleTree(data StandardTreeData) (*StandardMerkleTree, error)
LoadStandardMerkleTree loads a tree from serialized data.
func NewStandardMerkleTree ¶ added in v0.2.0
func NewStandardMerkleTree(values [][]any, leafEncoding []string, sortLeaves bool) (*StandardMerkleTree, error)
NewStandardMerkleTree creates a new StandardMerkleTree.
func (*StandardMerkleTree) All ¶ added in v0.2.0
func (t *StandardMerkleTree) All() iter.Seq2[int, []any]
All returns an iterator over all (index, value) pairs.
func (*StandardMerkleTree) At ¶ added in v0.2.0
func (t *StandardMerkleTree) At(i int) ([]any, bool)
func (*StandardMerkleTree) Dump ¶ added in v0.2.0
func (t *StandardMerkleTree) Dump() StandardTreeData
Dump serializes the tree.
func (*StandardMerkleTree) GetMultiProofByIndices ¶ added in v0.2.0
func (t *StandardMerkleTree) GetMultiProofByIndices(indices []int) (*MultiProof, error)
GetMultiProofByIndices returns a proof for leaves at the given indices.
func (*StandardMerkleTree) GetProof ¶ added in v0.2.0
func (t *StandardMerkleTree) GetProof(leaf []any) ([]string, error)
GetProof returns a proof for the given leaf.
func (*StandardMerkleTree) GetProofByIndex ¶ added in v0.2.0
func (t *StandardMerkleTree) GetProofByIndex(i int) ([]string, error)
GetProofByIndex returns a proof for the leaf at index.
func (*StandardMerkleTree) LeafEncoding ¶ added in v0.2.0
func (t *StandardMerkleTree) LeafEncoding() []string
func (*StandardMerkleTree) Len ¶ added in v0.2.0
func (t *StandardMerkleTree) Len() int
func (*StandardMerkleTree) Render ¶ added in v0.2.0
func (t *StandardMerkleTree) Render() (string, error)
Render returns a string representation.
func (*StandardMerkleTree) Root ¶ added in v0.2.0
func (t *StandardMerkleTree) Root() string
func (*StandardMerkleTree) Validate ¶ added in v0.2.0
func (t *StandardMerkleTree) Validate() error
Validate checks tree integrity.
func (*StandardMerkleTree) Verify ¶ added in v0.2.0
func (t *StandardMerkleTree) Verify(leaf []any, proof []string) (bool, error)
Verify checks if a leaf is in the tree using the given proof.
func (*StandardMerkleTree) VerifyMultiProof ¶ added in v0.2.0
func (t *StandardMerkleTree) VerifyMultiProof(mp *MultiProof) (bool, error)
VerifyMultiProof checks a multi-proof.
type StandardTreeData ¶ added in v0.2.0
type StandardTreeData struct {
Format string `json:"format"`
LeafEncoding []string `json:"leafEncoding"`
Tree []string `json:"tree"`
Values []StandardValue `json:"values"`
}
StandardTreeData is the serialization format for StandardMerkleTree.
type StandardValue ¶ added in v0.2.0
StandardValue holds a leaf value and its tree index.