Documentation ¶
Overview ¶
包状态在以太坊状态trie上提供一个缓存层。
Index ¶
- Variables
- func NewStateSync(root common.Hash, database trie.DatabaseReader) *trie.Sync
- type Account
- type Code
- type Database
- type Dump
- type DumpAccount
- type ManagedState
- func (ms *ManagedState) GetNonce(addr common.Address) uint64
- func (ms *ManagedState) HasAccount(addr common.Address) bool
- func (ms *ManagedState) NewNonce(addr common.Address) uint64
- func (ms *ManagedState) RemoveNonce(addr common.Address, n uint64)
- func (ms *ManagedState) SetNonce(addr common.Address, nonce uint64)
- func (ms *ManagedState) SetState(statedb *StateDB)
- type NodeIterator
- type StateDB
- func (self *StateDB) AddBalance(addr common.Address, amount *big.Int)
- func (self *StateDB) AddLog(log *types.Log)
- func (self *StateDB) AddPreimage(hash common.Hash, preimage []byte)
- func (self *StateDB) AddRefund(gas uint64)
- func (s *StateDB) Commit(deleteEmptyObjects bool) (root common.Hash, err error)
- func (self *StateDB) Copy() *StateDB
- func (self *StateDB) CreateAccount(addr common.Address)
- func (self *StateDB) Database() Database
- func (self *StateDB) Dump() []byte
- func (self *StateDB) Empty(addr common.Address) bool
- func (self *StateDB) Error() error
- func (self *StateDB) Exist(addr common.Address) bool
- func (s *StateDB) Finalise(deleteEmptyObjects bool)
- func (db *StateDB) ForEachStorage(addr common.Address, cb func(key, value common.Hash) bool)
- func (self *StateDB) GetBalance(addr common.Address) *big.Int
- func (self *StateDB) GetCode(addr common.Address) []byte
- func (self *StateDB) GetCodeHash(addr common.Address) common.Hash
- func (self *StateDB) GetCodeSize(addr common.Address) int
- func (self *StateDB) GetLogs(hash common.Hash) []*types.Log
- func (self *StateDB) GetNonce(addr common.Address) uint64
- func (self *StateDB) GetOrNewStateObject(addr common.Address) *stateObject
- func (self *StateDB) GetRefund() uint64
- func (self *StateDB) GetState(addr common.Address, bhash common.Hash) common.Hash
- func (self *StateDB) HasSuicided(addr common.Address) bool
- func (s *StateDB) IntermediateRoot(deleteEmptyObjects bool) common.Hash
- func (self *StateDB) Logs() []*types.Log
- func (self *StateDB) Preimages() map[common.Hash][]byte
- func (self *StateDB) Prepare(thash, bhash common.Hash, ti int)
- func (self *StateDB) RawDump() Dump
- func (self *StateDB) Reset(root common.Hash) error
- func (self *StateDB) RevertToSnapshot(revid int)
- func (self *StateDB) SetBalance(addr common.Address, amount *big.Int)
- func (self *StateDB) SetCode(addr common.Address, code []byte)
- func (self *StateDB) SetNonce(addr common.Address, nonce uint64)
- func (self *StateDB) SetState(addr common.Address, key, value common.Hash)
- func (self *StateDB) Snapshot() int
- func (self *StateDB) StorageTrie(addr common.Address) Trie
- func (self *StateDB) SubBalance(addr common.Address, amount *big.Int)
- func (self *StateDB) Suicide(addr common.Address) bool
- type Storage
- type Trie
Constants ¶
This section is empty.
Variables ¶
var MaxTrieCacheGen = uint16(120)
trie缓存生成限制,在此之后将trie节点从内存中逐出。
Functions ¶
func NewStateSync ¶
newstatesync创建新的状态trie下载计划程序。
Types ¶
type Account ¶
type Account struct { Nonce uint64 Balance *big.Int Root common.Hash //存储树的merkle根 CodeHash []byte }
账户是账户的以太坊共识代表。 这些对象存储在主帐户trie中。
type Database ¶
type Database interface { //opentrie打开主帐户trie。 OpenTrie(root common.Hash) (Trie, error) //openstoragetrie打开帐户的存储trie。 OpenStorageTrie(addrHash, root common.Hash) (Trie, error) //copy trie返回给定trie的独立副本。 CopyTrie(Trie) Trie //ContractCode检索特定合同的代码。 ContractCode(addrHash, codeHash common.Hash) ([]byte, error) //ContractCodeSize检索特定合同代码的大小。 ContractCodeSize(addrHash, codeHash common.Hash) (int, error) //triedb检索用于数据存储的低级trie数据库。 TrieDB() *trie.Database }
数据库将访问权限包装为“尝试”和“合同代码”。
func NewDatabase ¶
NeXDATA为状态创建后备存储。返回的数据库是安全的 同时使用并将缓存的trie节点保留在内存中。游泳池是可选的 在低级存储层和 高级Trie抽象。
type Dump ¶
type Dump struct { Root string `json:"root"` Accounts map[string]DumpAccount `json:"accounts"` }
type DumpAccount ¶
type ManagedState ¶
type ManagedState struct { *StateDB // contains filtered or unexported fields }
func ManageState ¶
func ManageState(statedb *StateDB) *ManagedState
managedState返回一个新的托管状态,statedb作为它的支持层。
func (*ManagedState) GetNonce ¶
func (ms *ManagedState) GetNonce(addr common.Address) uint64
GETNONCE返回托管或非托管帐户的规范NoCE。
因为getnonce改变了db,所以我们必须获得一个写锁。
func (*ManagedState) HasAccount ¶
func (ms *ManagedState) HasAccount(addr common.Address) bool
hasAccount返回给定地址是否被管理
func (*ManagedState) NewNonce ¶
func (ms *ManagedState) NewNonce(addr common.Address) uint64
new nonce返回托管帐户的新规范nonce
func (*ManagedState) RemoveNonce ¶
func (ms *ManagedState) RemoveNonce(addr common.Address, n uint64)
removenonce从托管状态中删除了nonce以及所有将来挂起的nonce
func (*ManagedState) SetNonce ¶
func (ms *ManagedState) SetNonce(addr common.Address, nonce uint64)
setnonce为托管状态设置新的规范nonce
func (*ManagedState) SetState ¶
func (ms *ManagedState) SetState(statedb *StateDB)
setstate设置托管状态的底层
type NodeIterator ¶
type NodeIterator struct { Hash common.Hash //正在迭代的当前条目的哈希(如果不是独立的,则为零) Parent common.Hash //第一个完整祖先节点的哈希(如果当前是根节点,则为零) Error error //迭代器中出现内部错误时的故障集 // contains filtered or unexported fields }
nodeiterator是遍历整个状态trie post顺序的迭代器, 包括所有合同代码和合同状态尝试。
func NewNodeIterator ¶
func NewNodeIterator(state *StateDB) *NodeIterator
newnodeiterator创建一个后序状态节点迭代器。
func (*NodeIterator) Next ¶
func (it *NodeIterator) Next() bool
next将迭代器移动到下一个节点,返回是否存在 进一步的节点。如果出现内部错误,此方法将返回false,并且 将错误字段设置为遇到的故障。
type StateDB ¶
type StateDB struct {
// contains filtered or unexported fields
}
以太坊协议中的statedbs用于存储任何内容 在梅克尔特里亚。statedbs负责缓存和存储 嵌套状态。它是要检索的常规查询接口: *合同 *帐户
func (*StateDB) AddBalance ¶
addbalance将金额添加到与addr关联的帐户。
func (*StateDB) AddPreimage ¶
AdvPrimI图记录由VM看到的Sa3预图像。
func (*StateDB) CreateAccount ¶
CreateCount显式创建状态对象。如果有地址的状态对象 已存在余额转入新账户。
在EVM创建操作期间调用CreateCount。可能出现的情况是 合同执行以下操作:
1。将资金发送到sha(account++(nonce+1))。 2。tx_create(sha(account++nonce))(注意,这会得到1的地址)
保持平衡可确保乙醚不会消失。
func (*StateDB) ForEachStorage ¶
func (*StateDB) GetBalance ¶
从给定地址检索余额,如果找不到对象,则检索0
func (*StateDB) GetOrNewStateObject ¶
检索状态对象或创建新的状态对象(如果为零)。
func (*StateDB) IntermediateRoot ¶
IntermediateRoot计算状态trie的当前根哈希。 它在事务之间调用,以获取 进入交易记录收据。
func (*StateDB) RevertToSnapshot ¶
RevertToSnapshot恢复自给定修订之后所做的所有状态更改。
func (*StateDB) StorageTrie ¶
storage trie返回帐户的存储trie。 返回值是副本,对于不存在的帐户为零。
func (*StateDB) SubBalance ¶
子余额从与addr关联的帐户中减去金额。
type Trie ¶
type Trie interface { TryGet(key []byte) ([]byte, error) TryUpdate(key, value []byte) error TryDelete(key []byte) error Commit(onleaf trie.LeafCallback) (common.Hash, error) Hash() common.Hash NodeIterator(startKey []byte) trie.NodeIterator GetKey([]byte) []byte //TODO(FJL):移除SecureTrie时移除此项 Prove(key []byte, fromLevel uint, proofDb ethdb.Putter) error }
特里亚是以太梅克尔特里亚。