Documentation
¶
Overview ¶
Package executor 实现执行器模块基类功能
Index ¶
- Variables
- func AddMVCC(db dbm.KVDB, detail *types.BlockDetail) (kvlist []*types.KeyValue)
- func DelMVCC(db dbm.KVDB, detail *types.BlockDetail) (kvlist []*types.KeyValue)
- func DisableLog()
- func GetStack() string
- func NewLocalDB(cli queue.Client, api client.QueueProtocolAPI, readOnly bool) db.KVDB
- func NewStateDB(client queue.Client, stateHash []byte, localdb db.KVDB, opt *StateDBOption) db.KV
- func RegisterPlugin(name string, p plugin)
- func SetLogLevel(level string)
- type Executor
- type LocalDB
- func (l *LocalDB) Begin()
- func (l *LocalDB) Close() error
- func (l *LocalDB) Commit() error
- func (l *LocalDB) DisableRead()
- func (l *LocalDB) DisableWrite()
- func (l *LocalDB) EnableRead()
- func (l *LocalDB) EnableWrite()
- func (l *LocalDB) Get(key []byte) ([]byte, error)
- func (l *LocalDB) GetSetKeys() (keys []string)
- func (l *LocalDB) List(prefix, key []byte, count, direction int32) ([][]byte, error)
- func (l *LocalDB) PrefixCount(prefix []byte) (count int64)
- func (l *LocalDB) ResetCache()
- func (l *LocalDB) Rollback()
- func (l *LocalDB) Set(key []byte, value []byte) error
- func (l *LocalDB) StartTx()
- type StateDB
- func (s *StateDB) BatchGet(keys [][]byte) (values [][]byte, err error)
- func (s *StateDB) Begin()
- func (s *StateDB) Commit() error
- func (s *StateDB) Get(key []byte) ([]byte, error)
- func (s *StateDB) GetSetKeys() (keys []string)
- func (s *StateDB) ResetCache()
- func (s *StateDB) RevertSet(key []byte, originalValue []byte) error
- func (s *StateDB) Rollback()
- func (s *StateDB) Set(key []byte, value []byte) error
- func (s *StateDB) StartTx()
- type StateDBOption
Constants ¶
This section is empty.
Variables ¶
var ( // ErrStateDBRevertWithoutTx is returned by RevertSet when no transaction is // active. Undoing a write is only meaningful between Begin and Commit/Rollback: // outside a transaction Set writes directly to the block cache and the // previous value is no longer available. ErrStateDBRevertWithoutTx = errors.New("statedb: RevertSet called outside a transaction") // ErrStateDBEmptyKey is returned by RevertSet for a nil or empty state key. ErrStateDBEmptyKey = errors.New("statedb: RevertSet called with an empty key") )
Functions ¶
func NewLocalDB ¶
NewLocalDB 创建一个新的LocalDB
func NewStateDB ¶
NewStateDB new state db
Types ¶
type Executor ¶
type Executor struct {
// contains filtered or unexported fields
}
Executor executor struct
func (*Executor) SetQueueClient ¶
SetQueueClient set client queue, for recv msg
type LocalDB ¶
type LocalDB struct {
// contains filtered or unexported fields
}
LocalDB 本地数据库,类似localdb,不加入区块链的状态。 数据库只读,不能落盘 数据的get set 主要经过 cache 如果需要进行list, 那么把get set 的内容加入到 后端数据库
func (*LocalDB) GetSetKeys ¶
GetSetKeys get state db set keys
func (*LocalDB) PrefixCount ¶
PrefixCount 从数据库中查询指定前缀的key的数量
type StateDB ¶
type StateDB struct {
// contains filtered or unexported fields
}
StateDB state db for store mavl
func (*StateDB) GetSetKeys ¶
GetSetKeys get state db set keys
func (*StateDB) RevertSet ¶ added in v1.73.0
RevertSet undoes one write that the current transaction performed on key and restores the value the key had before that write.
The invariant it maintains is the one the executor relies on: every key in GetSetKeys must also appear in the transaction receipt (see checkKV in execenv.go). A reverted write must therefore stop being reported unless some other write to the same key in this transaction survives:
- exactly one recorded occurrence of key is dropped from the GetSetKeys list, so duplicates left by repeated Set calls are handled one write at a time;
- the transaction cache is set to originalValue, so reads later in the same transaction observe the restored value without touching the block cache.
Writes must be reverted in LIFO order: originalValue is the value observed before the reverted write, so undoing an older write while a newer one survives would not describe the value left by the newest surviving write.
A nil originalValue means the key did not exist before the write. The tx cache then holds the nil sentinel: cacheDB.Get reports such an entry as types.ErrNotFound, so the key reads as absent, and because its last recorded occurrence was removed it no longer appears in GetSetKeys or in the receipt.
originalValue is supplied by the caller (the pre-write state it captured) rather than read from storage, because earlier writes of this transaction live only in the transaction cache. A key with no recorded write in this transaction is a no-op, making revert paths idempotent. A nil/empty key is rejected with ErrStateDBEmptyKey and calling outside a transaction with ErrStateDBRevertWithoutTx; no input causes a panic.
type StateDBOption ¶
StateDBOption state db option enable mvcc