Documentation
¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
View Source
var ErrKeyNotFound = errors.New("key not found")
ErrKeyNotFound is returned when key isn't found on a txn.Get.
Functions ¶
func CloseAndWrapOnError ¶
Types ¶
type Bucket ¶
type Bucket byte
const ( StateTrie Bucket = iota // state metadata (e.g., the state root) ContractRootKey // contract storage roots ContractClassHash // maps contract addresses and class hashes ContractStorage // contract storages Class // maps class hashes to classes ContractNonce // contract nonce ChainHeight // Latest height of the blockchain BlockHeaderNumbersByHash BlockHeadersByNumber TransactionBlockNumbersAndIndicesByHash // maps transaction hashes to block number and index TransactionsByBlockNumberAndIndex // maps block number and index to transaction ReceiptsByBlockNumberAndIndex // maps block number and index to transaction receipt StateUpdatesByBlockNumber ClassesTrie ContractStorageHistory ContractNonceHistory ContractClassHashHistory ContractDeploymentHeight )
Pebble does not support buckets to differentiate between groups of keys like Bolt or MDBX does. We use a global prefix list as a poor man's bucket alternative.
type DB ¶
type DB interface {
io.Closer
// NewTransaction returns a transaction on this database, it should block if an update transaction is requested
// while another one is still in progress
NewTransaction(update bool) Transaction
// View creates a read-only transaction and calls fn with the given transaction
// View should handle committing or discarding the transaction. Transaction should be discarded when fn
// returns an error
View(fn func(txn Transaction) error) error
// Update creates a read-write transaction and calls fn with the given transaction
// Update should handle committing or discarding the transaction. Transaction should be discarded when fn
// returns an error
Update(fn func(txn Transaction) error) error
// Impl returns the underlying database object
Impl() any
}
DB is a key-value database
type Iterator ¶
type Iterator interface {
io.Closer
// Valid returns true if the iterator is positioned at a valid key/value pair.
Valid() bool
// Next moves the iterator to the next key/value pair. It returns whether the
// iterator is valid after the call. Once invalid, the iterator remains
// invalid.
Next() bool
// Key returns the key at the current position.
Key() []byte
// Value returns the value at the current position.
Value() ([]byte, error)
// Seek would seek to the provided key if present. If absent, it would seek to the next
// key in lexicographical order
Seek(key []byte) bool
}
Iterator is an iterator over a DB's key/value pairs.
type Transaction ¶
type Transaction interface {
// NewIterator returns an iterator over the database's key/value pairs.
NewIterator() (Iterator, error)
// Discard discards all the changes done to the database with this transaction
Discard() error
// Commit flushes all the changes pending on this transaction to the database, making the changes visible to other
// transaction
Commit() error
// Set updates the value of the given key
Set(key, val []byte) error
// Delete removes the key from the database
Delete(key []byte) error
// Get fetches the value for the given key, should return ErrKeyNotFound if key is not present
// Caller should not assume that the slice would stay valid after the call to cb
Get(key []byte, cb func([]byte) error) error
// Impl returns the underlying transaction object
Impl() any
}
Transaction provides an interface to access the database's state at the point the transaction was created Updates done to the database with a transaction should be only visible to other newly created transaction after the transaction is committed.
func NewMemTransaction ¶ added in v0.3.0
func NewMemTransaction() Transaction
Click to show internal directories.
Click to hide internal directories.