Documentation ¶
Overview ¶
Bucket merkle tree implementaion
Index ¶
- Constants
- Variables
- func Commit(set WriteSet, db tdb.Database) error
- func Hash(set WriteSet) (common.Hash, error)
- type BmtDB
- func (bdb *BmtDB) GetBucket(key common.Hash) (*Bucket, error)
- func (bdb *BmtDB) GetHashTable(key common.Hash) (*HashTable, error)
- func (bdb *BmtDB) GetNode(key common.Hash) (*MerkleNode, error)
- func (bdb *BmtDB) PutBucket(batch tdb.Batch, key common.Hash, bucket *Bucket) error
- func (bdb *BmtDB) PutHashTable(batch tdb.Batch, key common.Hash, ht *HashTable) error
- func (bdb *BmtDB) PutNode(batch tdb.Batch, key common.Hash, node *MerkleNode) error
- type Bucket
- type BucketTree
- func (bt *BucketTree) Commit(batch tdb.Batch) error
- func (bt *BucketTree) Copy() *BucketTree
- func (bt *BucketTree) Get(key []byte) ([]byte, error)
- func (bt *BucketTree) Hash() common.Hash
- func (bt *BucketTree) Init(rootHash []byte) error
- func (bt *BucketTree) LowestLevel() int
- func (bt *BucketTree) Prepare(dirty WriteSet) error
- func (bt *BucketTree) Process() (common.Hash, error)
- func (bt *BucketTree) Purge()
- func (bt *BucketTree) Verify(data []byte)
- type HashTable
- type MerkleNode
- type Position
- type WriteSet
Constants ¶
View Source
const ( NodeKeyPrefix = "n" // "n" + node hash HashTableKeyPrefix = "t" // "t" + root node hash BucketKeyPrefix = "s" // "s" + slot hash )
Variables ¶
View Source
var (
ErrDbNotOpen = errors.New("db not open")
)
Functions ¶
Types ¶
type BmtDB ¶
type BmtDB struct {
// contains filtered or unexported fields
}
func (*BmtDB) PutHashTable ¶
type Bucket ¶
type BucketTree ¶
func NewBucketTree ¶
func NewBucketTree(db tdb.Database) *BucketTree
func (*BucketTree) Commit ¶
func (bt *BucketTree) Commit(batch tdb.Batch) error
commit commits all data in memory to db.Batch. At this time, data is not really stored in db, so you should explicitly invoke batch.Write().
func (*BucketTree) Copy ¶
func (bt *BucketTree) Copy() *BucketTree
func (*BucketTree) Get ¶
func (bt *BucketTree) Get(key []byte) ([]byte, error)
Get data from hash table by key
func (*BucketTree) Hash ¶
func (bt *BucketTree) Hash() common.Hash
func (*BucketTree) Init ¶
func (bt *BucketTree) Init(rootHash []byte) error
Init constructing the tree structure
func (*BucketTree) LowestLevel ¶
func (bt *BucketTree) LowestLevel() int
func (*BucketTree) Prepare ¶
func (bt *BucketTree) Prepare(dirty WriteSet) error
func (*BucketTree) Purge ¶
func (bt *BucketTree) Purge()
Purge release the cache memory to avoid mem peak
func (*BucketTree) Verify ¶
func (bt *BucketTree) Verify(data []byte)
type HashTable ¶
type HashTable struct { Cap int `json:"cap"` BucketHash []common.Hash `json:"bucket_hash"` // contains filtered or unexported fields }
Wrapper of buckets
func NewHashTable ¶
type MerkleNode ¶
type MerkleNode struct { H common.Hash `json:"hash"` Pos *Position `json:"pos"` // position of the node Children []common.Hash `json:"children"` // children hash, for locating in db // contains filtered or unexported fields }
func NewMerkleNode ¶
func NewMerkleNode(db *BmtDB, pos *Position, aggre int) *MerkleNode
func (*MerkleNode) Hash ¶
func (node *MerkleNode) Hash() common.Hash
Click to show internal directories.
Click to hide internal directories.