trie

package
v2.1.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Nov 12, 2024 License: Apache-2.0 Imports: 5 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	// ErrInvalidTrie indicates something wrong causing invalid operation
	ErrInvalidTrie = errors.New("invalid trie operation")

	// ErrNotExist indicates entry does not exist
	ErrNotExist = errors.New("not exist in trie")

	// ErrEndOfIterator defines an error which will be returned
	ErrEndOfIterator = errors.New("hit the end of the iterator, no more item")
)

Functions

This section is empty.

Types

type Iterator

type Iterator interface {
	Next() ([]byte, []byte, error)
}

Iterator iterates a trie

type KVStore

type KVStore interface {
	// Start starts the KVStore
	Start(context.Context) error
	// Stop stops the KVStore
	Stop(context.Context) error
	// Put puts key, value pair into KVStore
	Put([]byte, []byte) error
	// Delete deletes record from KVStore by key
	Delete([]byte) error
	// Get gets the value from KVStore by key
	Get([]byte) ([]byte, error)
}

KVStore defines an interface for storing trie data as key-value pair

func NewKVStore

func NewKVStore(bucket string, dao db.KVStoreBasic) (KVStore, error)

NewKVStore creates a new KVStore

func NewMemKVStore

func NewMemKVStore() KVStore

NewMemKVStore defines a kv store in memory

type Trie

type Trie interface {
	// Start starts the trie and the corresponding dependencies
	Start(context.Context) error
	// Stop stops the trie
	Stop(context.Context) error
	// Upsert inserts a new entry
	Upsert([]byte, []byte) error
	// Get retrieves an existing entry
	Get([]byte) ([]byte, error)
	// Delete deletes an entry
	Delete([]byte) error
	// RootHash returns trie's root hash
	RootHash() ([]byte, error)
	// SetRootHash sets a new root to trie
	SetRootHash([]byte) error
	// IsEmpty returns true is this is an empty trie
	IsEmpty() bool
	// Clone clones a trie with a new kvstore
	Clone(KVStore) (Trie, error)
}

Trie is the interface of Merkle Patricia Trie

type TwoLayerTrie

type TwoLayerTrie interface {
	// Start starts the layer one trie
	Start(context.Context) error
	// Stop stops the layer one trie
	Stop(context.Context) error
	// RootHash returns the layer one trie root
	RootHash() ([]byte, error)
	// SetRootHash sets root hash for layer one trie
	SetRootHash([]byte) error
	// Get returns the value in layer two
	Get([]byte, []byte) ([]byte, error)
	// Upsert upserts an item in layer two
	Upsert([]byte, []byte, []byte) error
	// Delete deletes an item in layer two
	Delete([]byte, []byte) error
}

TwoLayerTrie is a trie data structure with two layers

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL