Versions in this module Expand all Collapse all v0 v0.0.2 Oct 27, 2022 Changes in this version + var ErrEmptyRoot = errors.New("empty root") + var ErrInvalidDepth = errors.New("depth must be a multiple of 4") + var ErrInvalidKey = errors.New("invalid key") + var ErrNodeNotFound = errors.New("tree node not found") + var ErrUnexpected = errors.New("unexpected error") + var ErrVersionMismatched = errors.New("the version is mismatched with the database") + var ErrVersionTooHigh = errors.New("the version is higher than the latest version") + var ErrVersionTooOld = errors.New("the version is lower than the rollback version") + type BASSparseMerkleTree struct + func (tree *BASSparseMerkleTree) Commit(recentVersion *Version) (Version, error) + func (tree *BASSparseMerkleTree) Get(key uint64, version *Version) ([]byte, error) + func (tree *BASSparseMerkleTree) GetProof(key uint64) (Proof, error) + func (tree *BASSparseMerkleTree) IsEmpty() bool + func (tree *BASSparseMerkleTree) LatestVersion() Version + func (tree *BASSparseMerkleTree) MultiSet(items []Item) error + func (tree *BASSparseMerkleTree) RecentVersion() Version + func (tree *BASSparseMerkleTree) Reset() + func (tree *BASSparseMerkleTree) Rollback(version Version) error + func (tree *BASSparseMerkleTree) Root() []byte + func (tree *BASSparseMerkleTree) Set(key uint64, val []byte) error + func (tree *BASSparseMerkleTree) Size() uint64 + func (tree *BASSparseMerkleTree) VerifyProof(key uint64, proof Proof) bool + type Hasher struct + func NewHasherPool(init func() hash.Hash) *Hasher + func (h *Hasher) Hash(inputs ...[]byte) []byte + type InternalNode []byte + type Item struct + Key uint64 + Val []byte + type Option func(*BASSparseMerkleTree) + func BatchSizeLimit(limit int) Option + func DBCacheSize(size int) Option + func EnableMetrics(metrics metrics.Metrics) Option + func GCThreshold(threshold uint64) Option + func GoRoutinePool(pool *ants.Pool) Option + func InitializeVersion(version Version) Option + type Proof [][]byte + type SparseMerkleTree interface + Commit func(recentVersion *Version) (Version, error) + Get func(key uint64, version *Version) ([]byte, error) + GetProof func(key uint64) (Proof, error) + IsEmpty func() bool + LatestVersion func() Version + MultiSet func(items []Item) error + RecentVersion func() Version + Reset func() + Rollback func(version Version) error + Root func() []byte + Set func(key uint64, val []byte) error + Size func() uint64 + VerifyProof func(key uint64, proof Proof) bool + func NewBASSparseMerkleTree(hasher *Hasher, db database.TreeDB, maxDepth uint8, nilHash []byte, ...) (SparseMerkleTree, error) + type StorageLeafNode struct + Versions []*VersionInfo + type StorageTreeNode struct + Children [16]*StorageLeafNode + Internals [14]InternalNode + Path uint64 + Versions []*VersionInfo + func (node *StorageTreeNode) ToTreeNode(depth uint8, nilHashes *nilHashes, hasher *Hasher) *TreeNode + type TreeNode struct + Children [16]*TreeNode + Internals [14]InternalNode + Versions []*VersionInfo + func NewTreeNode(depth uint8, path uint64, nilHashes *nilHashes, hasher *Hasher) *TreeNode + func (node *TreeNode) ComputeInternalHash() + func (node *TreeNode) Copy() *TreeNode + func (node *TreeNode) IsTemporary() bool + func (node *TreeNode) PreviousVersion() Version + func (node *TreeNode) Prune(oldestVersion Version) uint64 + func (node *TreeNode) Release(oldestVersion Version) uint64 + func (node *TreeNode) Rollback(targetVersion Version) (bool, uint64) + func (node *TreeNode) Root() []byte + func (node *TreeNode) Set(hash []byte, version Version) + func (node *TreeNode) SetChildren(child *TreeNode, nibble int, version Version) + func (node *TreeNode) Size() uint64 + func (node *TreeNode) ToStorageTreeNode() *StorageTreeNode + type Version uint64 + type VersionInfo struct + Hash []byte + Ver Version