Documentation

Overview

    Package light implements on-demand retrieval capable state and chain objects for the Ethereum Light Client.

    Index

    Constants

    This section is empty.

    Variables

    View Source
    var (
    	ErrNoTrustedCht = errors.New("No trusted canonical hash trie")
    	ErrNoHeader     = errors.New("Header not found")
    
    	ChtFrequency     = uint64(4096)
    	ChtConfirmations = uint64(2048)
    )

      NoOdr is the default context passed to an ODR capable function when the ODR service is not required.

      Functions

      func DeleteTrustedCht

      func DeleteTrustedCht(db ethdb.Database)

      func GetBlock

      func GetBlock(ctx context.Context, odr OdrBackend, hash common.Hash, number uint64) (*types.Block, error)

        GetBlock retrieves an entire block corresponding to the hash, assembling it back from the stored header and body.

        func GetBlockReceipts

        func GetBlockReceipts(ctx context.Context, odr OdrBackend, hash common.Hash, number uint64) (types.Receipts, error)

          GetBlockReceipts retrieves the receipts generated by the transactions included in a block given by its hash.

          func GetBody

          func GetBody(ctx context.Context, odr OdrBackend, hash common.Hash, number uint64) (*types.Body, error)

            GetBody retrieves the block body (transactons, uncles) corresponding to the hash.

            func GetBodyRLP

            func GetBodyRLP(ctx context.Context, odr OdrBackend, hash common.Hash, number uint64) (rlp.RawValue, error)

              GetBodyRLP retrieves the block body (transactions and uncles) in RLP encoding.

              func GetCanonicalHash

              func GetCanonicalHash(ctx context.Context, odr OdrBackend, number uint64) (common.Hash, error)

              func GetHeaderByNumber

              func GetHeaderByNumber(ctx context.Context, odr OdrBackend, number uint64) (*types.Header, error)

              func WriteTrustedCht

              func WriteTrustedCht(db ethdb.Database, cht TrustedCht)

              Types

              type BlockRequest

              type BlockRequest struct {
              	OdrRequest
              	Hash   common.Hash
              	Number uint64
              	Rlp    []byte
              }

                BlockRequest is the ODR request type for retrieving block bodies

                func (*BlockRequest) StoreResult

                func (req *BlockRequest) StoreResult(db ethdb.Database)

                  StoreResult stores the retrieved data in local database

                  type ChtNode

                  type ChtNode struct {
                  	Hash common.Hash
                  	Td   *big.Int
                  }

                  type ChtRequest

                  type ChtRequest struct {
                  	OdrRequest
                  	ChtNum, BlockNum uint64
                  	ChtRoot          common.Hash
                  	Header           *types.Header
                  	Td               *big.Int
                  	Proof            []rlp.RawValue
                  }

                    TrieRequest is the ODR request type for state/storage trie entries

                    func (*ChtRequest) StoreResult

                    func (req *ChtRequest) StoreResult(db ethdb.Database)

                      StoreResult stores the retrieved data in local database

                      type Code

                      type Code []byte

                        Code represents a contract code in binary form

                        func (Code) String

                        func (self Code) String() string

                          String returns a string representation of the code

                          type CodeRequest

                          type CodeRequest struct {
                          	OdrRequest
                          	Id   *TrieID
                          	Hash common.Hash
                          	Data []byte
                          }

                            CodeRequest is the ODR request type for retrieving contract code

                            func (*CodeRequest) StoreResult

                            func (req *CodeRequest) StoreResult(db ethdb.Database)

                              StoreResult stores the retrieved data in local database

                              type LightChain

                              type LightChain struct {
                              	// contains filtered or unexported fields
                              }

                                LightChain represents a canonical chain that by default only handles block headers, downloading block bodies and receipts on demand through an ODR interface. It only does header validation during chain insertion.

                                func NewLightChain

                                func NewLightChain(odr OdrBackend, config *params.ChainConfig, engine consensus.Engine, mux *event.TypeMux) (*LightChain, error)

                                  NewLightChain returns a fully initialised light chain using information available in the database. It initialises the default Ethereum header validator.

                                  func (*LightChain) CurrentHeader

                                  func (self *LightChain) CurrentHeader() *types.Header

                                    CurrentHeader retrieves the current head header of the canonical chain. The header is retrieved from the HeaderChain's internal cache.

                                    func (*LightChain) Engine

                                    func (bc *LightChain) Engine() consensus.Engine

                                      Engine retrieves the light chain's consensus engine.

                                      func (*LightChain) GasLimit

                                      func (self *LightChain) GasLimit() *big.Int

                                        GasLimit returns the gas limit of the current HEAD block.

                                        func (*LightChain) Genesis

                                        func (bc *LightChain) Genesis() *types.Block

                                          Genesis returns the genesis block

                                          func (*LightChain) GetBlock

                                          func (self *LightChain) GetBlock(ctx context.Context, hash common.Hash, number uint64) (*types.Block, error)

                                            GetBlock retrieves a block from the database or ODR service by hash and number, caching it if found.

                                            func (*LightChain) GetBlockByHash

                                            func (self *LightChain) GetBlockByHash(ctx context.Context, hash common.Hash) (*types.Block, error)

                                              GetBlockByHash retrieves a block from the database or ODR service by hash, caching it if found.

                                              func (*LightChain) GetBlockByNumber

                                              func (self *LightChain) GetBlockByNumber(ctx context.Context, number uint64) (*types.Block, error)

                                                GetBlockByNumber retrieves a block from the database or ODR service by number, caching it (associated with its hash) if found.

                                                func (*LightChain) GetBlockHashesFromHash

                                                func (self *LightChain) GetBlockHashesFromHash(hash common.Hash, max uint64) []common.Hash

                                                  GetBlockHashesFromHash retrieves a number of block hashes starting at a given hash, fetching towards the genesis block.

                                                  func (*LightChain) GetBody

                                                  func (self *LightChain) GetBody(ctx context.Context, hash common.Hash) (*types.Body, error)

                                                    GetBody retrieves a block body (transactions and uncles) from the database or ODR service by hash, caching it if found.

                                                    func (*LightChain) GetBodyRLP

                                                    func (self *LightChain) GetBodyRLP(ctx context.Context, hash common.Hash) (rlp.RawValue, error)

                                                      GetBodyRLP retrieves a block body in RLP encoding from the database or ODR service by hash, caching it if found.

                                                      func (*LightChain) GetHeader

                                                      func (self *LightChain) GetHeader(hash common.Hash, number uint64) *types.Header

                                                        GetHeader retrieves a block header from the database by hash and number, caching it if found.

                                                        func (*LightChain) GetHeaderByHash

                                                        func (self *LightChain) GetHeaderByHash(hash common.Hash) *types.Header

                                                          GetHeaderByHash retrieves a block header from the database by hash, caching it if found.

                                                          func (*LightChain) GetHeaderByNumber

                                                          func (self *LightChain) GetHeaderByNumber(number uint64) *types.Header

                                                            GetHeaderByNumber retrieves a block header from the database by number, caching it (associated with its hash) if found.

                                                            func (*LightChain) GetHeaderByNumberOdr

                                                            func (self *LightChain) GetHeaderByNumberOdr(ctx context.Context, number uint64) (*types.Header, error)

                                                              GetHeaderByNumberOdr retrieves a block header from the database or network by number, caching it (associated with its hash) if found.

                                                              func (*LightChain) GetTd

                                                              func (self *LightChain) GetTd(hash common.Hash, number uint64) *big.Int

                                                                GetTd retrieves a block's total difficulty in the canonical chain from the database by hash and number, caching it if found.

                                                                func (*LightChain) GetTdByHash

                                                                func (self *LightChain) GetTdByHash(hash common.Hash) *big.Int

                                                                  GetTdByHash retrieves a block's total difficulty in the canonical chain from the database by hash, caching it if found.

                                                                  func (*LightChain) HasBlock

                                                                  func (bc *LightChain) HasBlock(hash common.Hash) bool

                                                                    HasBlock checks if a block is fully present in the database or not, caching it if present.

                                                                    func (*LightChain) HasHeader

                                                                    func (bc *LightChain) HasHeader(hash common.Hash) bool

                                                                      HasHeader checks if a block header is present in the database or not, caching it if present.

                                                                      func (*LightChain) InsertHeaderChain

                                                                      func (self *LightChain) InsertHeaderChain(chain []*types.Header, checkFreq int) (int, error)

                                                                        InsertHeaderChain attempts to insert the given header chain in to the local chain, possibly creating a reorg. If an error is returned, it will return the index number of the failing header as well an error describing what went wrong.

                                                                        The verify parameter can be used to fine tune whether nonce verification should be done or not. The reason behind the optional check is because some of the header retrieval mechanisms already need to verfy nonces, as well as because nonces can be verified sparsely, not needing to check each.

                                                                        In the case of a light chain, InsertHeaderChain also creates and posts light chain events when necessary.

                                                                        func (*LightChain) LastBlockHash

                                                                        func (self *LightChain) LastBlockHash() common.Hash

                                                                          LastBlockHash return the hash of the HEAD block.

                                                                          func (*LightChain) LockChain

                                                                          func (self *LightChain) LockChain()

                                                                            LockChain locks the chain mutex for reading so that multiple canonical hashes can be retrieved while it is guaranteed that they belong to the same version of the chain

                                                                            func (*LightChain) Odr

                                                                            func (self *LightChain) Odr() OdrBackend

                                                                              Odr returns the ODR backend of the chain

                                                                              func (*LightChain) Reset

                                                                              func (bc *LightChain) Reset()

                                                                                Reset purges the entire blockchain, restoring it to its genesis state.

                                                                                func (*LightChain) ResetWithGenesisBlock

                                                                                func (bc *LightChain) ResetWithGenesisBlock(genesis *types.Block)

                                                                                  ResetWithGenesisBlock purges the entire blockchain, restoring it to the specified genesis state.

                                                                                  func (*LightChain) Rollback

                                                                                  func (self *LightChain) Rollback(chain []common.Hash)

                                                                                    Rollback is designed to remove a chain of links from the database that aren't certain enough to be valid.

                                                                                    func (*LightChain) SetHead

                                                                                    func (bc *LightChain) SetHead(head uint64)

                                                                                      SetHead rewinds the local chain to a new head. Everything above the new head will be deleted and the new one set.

                                                                                      func (*LightChain) State

                                                                                      func (self *LightChain) State() *LightState

                                                                                        State returns a new mutable state based on the current HEAD block.

                                                                                        func (*LightChain) Status

                                                                                        func (self *LightChain) Status() (td *big.Int, currentBlock common.Hash, genesisBlock common.Hash)

                                                                                          Status returns status information about the current chain such as the HEAD Td, the HEAD hash and the hash of the genesis block.

                                                                                          func (*LightChain) Stop

                                                                                          func (bc *LightChain) Stop()

                                                                                            Stop stops the blockchain service. If any imports are currently in progress it will abort them using the procInterrupt.

                                                                                            func (*LightChain) SyncCht

                                                                                            func (self *LightChain) SyncCht(ctx context.Context) bool

                                                                                            func (*LightChain) UnlockChain

                                                                                            func (self *LightChain) UnlockChain()

                                                                                              UnlockChain unlocks the chain mutex

                                                                                              type LightState

                                                                                              type LightState struct {
                                                                                              	// contains filtered or unexported fields
                                                                                              }

                                                                                                LightState is a memory representation of a state. This version is ODR capable, caching only the already accessed part of the state, retrieving unknown parts on-demand from the ODR backend. Changes are never stored in the local database, only in the memory objects.

                                                                                                func NewLightState

                                                                                                func NewLightState(id *TrieID, odr OdrBackend) *LightState

                                                                                                  NewLightState creates a new LightState with the specified root. Note that the creation of a light state is always successful, even if the root is non-existent. In that case, ODR retrieval will always be unsuccessful and every operation will return with an error or wait for the context to be cancelled.

                                                                                                  func (*LightState) AddBalance

                                                                                                  func (self *LightState) AddBalance(ctx context.Context, addr common.Address, amount *big.Int) error

                                                                                                    AddBalance adds the given amount to the balance of the specified account

                                                                                                    func (*LightState) AddRefund

                                                                                                    func (self *LightState) AddRefund(gas *big.Int)

                                                                                                      AddRefund adds an amount to the refund value collected during a vm execution

                                                                                                      func (*LightState) Copy

                                                                                                      func (self *LightState) Copy() *LightState

                                                                                                        Copy creates a copy of the state

                                                                                                        func (*LightState) CreateStateObject

                                                                                                        func (self *LightState) CreateStateObject(ctx context.Context, addr common.Address) (*StateObject, error)

                                                                                                          CreateStateObject creates creates a new state object and takes ownership. This is different from "NewStateObject"

                                                                                                          func (*LightState) ForEachStorage

                                                                                                          func (self *LightState) ForEachStorage(ctx context.Context, addr common.Address, cb func(key, value common.Hash) bool) error

                                                                                                            ForEachStorage calls a callback function for every key/value pair found in the local storage cache. Note that unlike core/state.StateObject, light.StateObject only returns cached values and doesn't download the entire storage tree.

                                                                                                            func (*LightState) GetBalance

                                                                                                            func (self *LightState) GetBalance(ctx context.Context, addr common.Address) (*big.Int, error)

                                                                                                              GetBalance retrieves the balance from the given address or 0 if the account does not exist

                                                                                                              func (*LightState) GetCode

                                                                                                              func (self *LightState) GetCode(ctx context.Context, addr common.Address) ([]byte, error)

                                                                                                                GetCode returns the contract code at the given address or nil if the account does not exist

                                                                                                                func (*LightState) GetNonce

                                                                                                                func (self *LightState) GetNonce(ctx context.Context, addr common.Address) (uint64, error)

                                                                                                                  GetNonce returns the nonce at the given address or 0 if the account does not exist

                                                                                                                  func (*LightState) GetOrNewStateObject

                                                                                                                  func (self *LightState) GetOrNewStateObject(ctx context.Context, addr common.Address) (*StateObject, error)

                                                                                                                    GetOrNewStateObject returns the state object of the given account or creates a new one if the account does not exist

                                                                                                                    func (*LightState) GetRefund

                                                                                                                    func (self *LightState) GetRefund() *big.Int

                                                                                                                      GetRefund returns the refund value collected during a vm execution

                                                                                                                      func (*LightState) GetState

                                                                                                                      func (self *LightState) GetState(ctx context.Context, a common.Address, b common.Hash) (common.Hash, error)

                                                                                                                        GetState returns the contract storage value at storage address b from the contract address a or common.Hash{} if the account does not exist

                                                                                                                        func (*LightState) GetStateObject

                                                                                                                        func (self *LightState) GetStateObject(ctx context.Context, addr common.Address) (stateObject *StateObject, err error)

                                                                                                                          GetStateObject returns the state object of the given account or nil if the account does not exist

                                                                                                                          func (*LightState) HasAccount

                                                                                                                          func (self *LightState) HasAccount(ctx context.Context, addr common.Address) (bool, error)

                                                                                                                            HasAccount returns true if an account exists at the given address

                                                                                                                            func (*LightState) HasSuicided

                                                                                                                            func (self *LightState) HasSuicided(ctx context.Context, addr common.Address) (bool, error)

                                                                                                                              HasSuicided returns true if the given account has been marked for deletion or false if the account does not exist

                                                                                                                              func (*LightState) Set

                                                                                                                              func (self *LightState) Set(state *LightState)

                                                                                                                                Set copies the contents of the given state onto this state, overwriting its contents

                                                                                                                                func (*LightState) SetCode

                                                                                                                                func (self *LightState) SetCode(ctx context.Context, addr common.Address, code []byte) error

                                                                                                                                  SetCode sets the contract code at the specified account

                                                                                                                                  func (*LightState) SetNonce

                                                                                                                                  func (self *LightState) SetNonce(ctx context.Context, addr common.Address, nonce uint64) error

                                                                                                                                    SetNonce sets the nonce of the specified account

                                                                                                                                    func (*LightState) SetState

                                                                                                                                    func (self *LightState) SetState(ctx context.Context, addr common.Address, key common.Hash, value common.Hash) error

                                                                                                                                      SetState sets the storage value at storage address key of the account addr

                                                                                                                                      func (*LightState) SetStateObject

                                                                                                                                      func (self *LightState) SetStateObject(object *StateObject)

                                                                                                                                        SetStateObject sets the state object of the given account

                                                                                                                                        func (*LightState) SubBalance

                                                                                                                                        func (self *LightState) SubBalance(ctx context.Context, addr common.Address, amount *big.Int) error

                                                                                                                                          SubBalance adds the given amount to the balance of the specified account

                                                                                                                                          func (*LightState) Suicide

                                                                                                                                          func (self *LightState) Suicide(ctx context.Context, addr common.Address) (bool, error)

                                                                                                                                            Delete marks an account to be removed and clears its balance

                                                                                                                                            type LightTrie

                                                                                                                                            type LightTrie struct {
                                                                                                                                            	// contains filtered or unexported fields
                                                                                                                                            }

                                                                                                                                              LightTrie is an ODR-capable wrapper around trie.SecureTrie

                                                                                                                                              func NewLightTrie

                                                                                                                                              func NewLightTrie(id *TrieID, odr OdrBackend, useFakeMap bool) *LightTrie

                                                                                                                                                NewLightTrie creates a new LightTrie instance. It doesn't instantly try to access the db or network and retrieve the root node, it only initializes its encapsulated SecureTrie at the first actual operation.

                                                                                                                                                func (*LightTrie) Delete

                                                                                                                                                func (t *LightTrie) Delete(ctx context.Context, key []byte) (err error)

                                                                                                                                                  Delete removes any existing value for key from the trie.

                                                                                                                                                  func (*LightTrie) Get

                                                                                                                                                  func (t *LightTrie) Get(ctx context.Context, key []byte) (res []byte, err error)

                                                                                                                                                    Get returns the value for key stored in the trie. The value bytes must not be modified by the caller.

                                                                                                                                                    func (*LightTrie) Update

                                                                                                                                                    func (t *LightTrie) Update(ctx context.Context, key, value []byte) (err error)

                                                                                                                                                      Update associates key with value in the trie. Subsequent calls to Get will return value. If value has length zero, any existing value is deleted from the trie and calls to Get will return nil.

                                                                                                                                                      The value bytes must not be modified by the caller while they are stored in the trie.

                                                                                                                                                      type OdrBackend

                                                                                                                                                      type OdrBackend interface {
                                                                                                                                                      	Database() ethdb.Database
                                                                                                                                                      	Retrieve(ctx context.Context, req OdrRequest) error
                                                                                                                                                      }

                                                                                                                                                        OdrBackend is an interface to a backend service that handles ODR retrievals

                                                                                                                                                        type OdrRequest

                                                                                                                                                        type OdrRequest interface {
                                                                                                                                                        	StoreResult(db ethdb.Database)
                                                                                                                                                        }

                                                                                                                                                          OdrRequest is an interface for retrieval requests

                                                                                                                                                          type ReceiptsRequest

                                                                                                                                                          type ReceiptsRequest struct {
                                                                                                                                                          	OdrRequest
                                                                                                                                                          	Hash     common.Hash
                                                                                                                                                          	Number   uint64
                                                                                                                                                          	Receipts types.Receipts
                                                                                                                                                          }

                                                                                                                                                            ReceiptsRequest is the ODR request type for retrieving block bodies

                                                                                                                                                            func (*ReceiptsRequest) StoreResult

                                                                                                                                                            func (req *ReceiptsRequest) StoreResult(db ethdb.Database)

                                                                                                                                                              StoreResult stores the retrieved data in local database

                                                                                                                                                              type StateObject

                                                                                                                                                              type StateObject struct {
                                                                                                                                                              	// contains filtered or unexported fields
                                                                                                                                                              }

                                                                                                                                                                StateObject is a memory representation of an account or contract and its storage. This version is ODR capable, caching only the already accessed part of the storage, retrieving unknown parts on-demand from the ODR backend. Changes are never stored in the local database, only in the memory objects.

                                                                                                                                                                func DecodeObject

                                                                                                                                                                func DecodeObject(ctx context.Context, stateID *TrieID, address common.Address, odr OdrBackend, data []byte) (*StateObject, error)

                                                                                                                                                                  DecodeObject decodes an RLP-encoded state object.

                                                                                                                                                                  func NewStateObject

                                                                                                                                                                  func NewStateObject(address common.Address, odr OdrBackend) *StateObject

                                                                                                                                                                    NewStateObject creates a new StateObject of the specified account address

                                                                                                                                                                    func (*StateObject) AddBalance

                                                                                                                                                                    func (c *StateObject) AddBalance(amount *big.Int)

                                                                                                                                                                      AddBalance adds the given amount to the account balance

                                                                                                                                                                      func (*StateObject) Address

                                                                                                                                                                      func (self *StateObject) Address() common.Address

                                                                                                                                                                        Address returns the address of the contract/account

                                                                                                                                                                        func (*StateObject) Balance

                                                                                                                                                                        func (self *StateObject) Balance() *big.Int

                                                                                                                                                                          Balance returns the account balance

                                                                                                                                                                          func (*StateObject) Code

                                                                                                                                                                          func (self *StateObject) Code() []byte

                                                                                                                                                                            Code returns the contract code

                                                                                                                                                                            func (*StateObject) Copy

                                                                                                                                                                            func (self *StateObject) Copy() *StateObject

                                                                                                                                                                              Copy creates a copy of the state object

                                                                                                                                                                              func (*StateObject) ForEachStorage

                                                                                                                                                                              func (self *StateObject) ForEachStorage(cb func(key, value common.Hash) bool)

                                                                                                                                                                                ForEachStorage calls a callback function for every key/value pair found in the local storage cache. Note that unlike core/state.StateObject, light.StateObject only returns cached values and doesn't download the entire storage tree.

                                                                                                                                                                                func (*StateObject) GetState

                                                                                                                                                                                func (self *StateObject) GetState(ctx context.Context, key common.Hash) (common.Hash, error)

                                                                                                                                                                                  GetState returns the storage value at the given address from either the cache or the trie

                                                                                                                                                                                  func (*StateObject) MarkForDeletion

                                                                                                                                                                                  func (self *StateObject) MarkForDeletion()

                                                                                                                                                                                    MarkForDeletion marks an account to be removed

                                                                                                                                                                                    func (*StateObject) Nonce

                                                                                                                                                                                    func (self *StateObject) Nonce() uint64

                                                                                                                                                                                      Nonce returns the account nonce

                                                                                                                                                                                      func (*StateObject) ReturnGas

                                                                                                                                                                                      func (c *StateObject) ReturnGas(gas *big.Int)

                                                                                                                                                                                        ReturnGas returns the gas back to the origin. Used by the Virtual machine or Closures

                                                                                                                                                                                        func (*StateObject) SetBalance

                                                                                                                                                                                        func (c *StateObject) SetBalance(amount *big.Int)

                                                                                                                                                                                          SetBalance sets the account balance to the given amount

                                                                                                                                                                                          func (*StateObject) SetCode

                                                                                                                                                                                          func (self *StateObject) SetCode(hash common.Hash, code []byte)

                                                                                                                                                                                            SetCode sets the contract code

                                                                                                                                                                                            func (*StateObject) SetNonce

                                                                                                                                                                                            func (self *StateObject) SetNonce(nonce uint64)

                                                                                                                                                                                              SetNonce sets the account nonce

                                                                                                                                                                                              func (*StateObject) SetState

                                                                                                                                                                                              func (self *StateObject) SetState(k, value common.Hash)

                                                                                                                                                                                                SetState sets the storage value at the given address

                                                                                                                                                                                                func (*StateObject) Storage

                                                                                                                                                                                                func (self *StateObject) Storage() Storage

                                                                                                                                                                                                  Storage returns the storage cache object of the account

                                                                                                                                                                                                  func (*StateObject) SubBalance

                                                                                                                                                                                                  func (c *StateObject) SubBalance(amount *big.Int)

                                                                                                                                                                                                    SubBalance subtracts the given amount from the account balance

                                                                                                                                                                                                    func (*StateObject) Value

                                                                                                                                                                                                    func (self *StateObject) Value() *big.Int

                                                                                                                                                                                                      Never called, but must be present to allow StateObject to be used as a vm.Account interface that also satisfies the vm.ContractRef interface. Interfaces are awesome.

                                                                                                                                                                                                      type Storage

                                                                                                                                                                                                      type Storage map[common.Hash]common.Hash

                                                                                                                                                                                                        Storage is a memory map cache of a contract storage

                                                                                                                                                                                                        func (Storage) Copy

                                                                                                                                                                                                        func (self Storage) Copy() Storage

                                                                                                                                                                                                          Copy copies the contents of a storage cache

                                                                                                                                                                                                          func (Storage) String

                                                                                                                                                                                                          func (self Storage) String() (str string)

                                                                                                                                                                                                            String returns a string representation of the storage cache

                                                                                                                                                                                                            type TrieID

                                                                                                                                                                                                            type TrieID struct {
                                                                                                                                                                                                            	BlockHash, Root common.Hash
                                                                                                                                                                                                            	BlockNumber     uint64
                                                                                                                                                                                                            	AccKey          []byte
                                                                                                                                                                                                            }

                                                                                                                                                                                                              TrieID identifies a state or account storage trie

                                                                                                                                                                                                              func StateTrieID

                                                                                                                                                                                                              func StateTrieID(header *types.Header) *TrieID

                                                                                                                                                                                                                StateTrieID returns a TrieID for a state trie belonging to a certain block header.

                                                                                                                                                                                                                func StorageTrieID

                                                                                                                                                                                                                func StorageTrieID(state *TrieID, addr common.Address, root common.Hash) *TrieID

                                                                                                                                                                                                                  StorageTrieID returns a TrieID for a contract storage trie at a given account of a given state trie. It also requires the root hash of the trie for checking Merkle proofs.

                                                                                                                                                                                                                  type TrieRequest

                                                                                                                                                                                                                  type TrieRequest struct {
                                                                                                                                                                                                                  	OdrRequest
                                                                                                                                                                                                                  	Id    *TrieID
                                                                                                                                                                                                                  	Key   []byte
                                                                                                                                                                                                                  	Proof []rlp.RawValue
                                                                                                                                                                                                                  }

                                                                                                                                                                                                                    TrieRequest is the ODR request type for state/storage trie entries

                                                                                                                                                                                                                    func (*TrieRequest) StoreResult

                                                                                                                                                                                                                    func (req *TrieRequest) StoreResult(db ethdb.Database)

                                                                                                                                                                                                                      StoreResult stores the retrieved data in local database

                                                                                                                                                                                                                      type TrustedCht

                                                                                                                                                                                                                      type TrustedCht struct {
                                                                                                                                                                                                                      	Number uint64
                                                                                                                                                                                                                      	Root   common.Hash
                                                                                                                                                                                                                      }

                                                                                                                                                                                                                      func GetTrustedCht

                                                                                                                                                                                                                      func GetTrustedCht(db ethdb.Database) TrustedCht

                                                                                                                                                                                                                      type TxPool

                                                                                                                                                                                                                      type TxPool struct {
                                                                                                                                                                                                                      	// contains filtered or unexported fields
                                                                                                                                                                                                                      }

                                                                                                                                                                                                                        TxPool implements the transaction pool for light clients, which keeps track of the status of locally created transactions, detecting if they are included in a block (mined) or rolled back. There are no queued transactions since we always receive all locally signed transactions in the same order as they are created.

                                                                                                                                                                                                                        func NewTxPool

                                                                                                                                                                                                                        func NewTxPool(config *params.ChainConfig, eventMux *event.TypeMux, chain *LightChain, relay TxRelayBackend) *TxPool

                                                                                                                                                                                                                          NewTxPool creates a new light transaction pool

                                                                                                                                                                                                                          func (*TxPool) Add

                                                                                                                                                                                                                          func (self *TxPool) Add(ctx context.Context, tx *types.Transaction) error

                                                                                                                                                                                                                            Add adds a transaction to the pool if valid and passes it to the tx relay backend

                                                                                                                                                                                                                            func (*TxPool) AddBatch

                                                                                                                                                                                                                            func (self *TxPool) AddBatch(ctx context.Context, txs []*types.Transaction)

                                                                                                                                                                                                                              AddTransactions adds all valid transactions to the pool and passes them to the tx relay backend

                                                                                                                                                                                                                              func (*TxPool) Content

                                                                                                                                                                                                                              func (self *TxPool) Content() (map[common.Address]types.Transactions, map[common.Address]types.Transactions)

                                                                                                                                                                                                                                Content retrieves the data content of the transaction pool, returning all the pending as well as queued transactions, grouped by account and nonce.

                                                                                                                                                                                                                                func (*TxPool) GetNonce

                                                                                                                                                                                                                                func (pool *TxPool) GetNonce(ctx context.Context, addr common.Address) (uint64, error)

                                                                                                                                                                                                                                  GetNonce returns the "pending" nonce of a given address. It always queries the nonce belonging to the latest header too in order to detect if another client using the same key sent a transaction.

                                                                                                                                                                                                                                  func (*TxPool) GetTransaction

                                                                                                                                                                                                                                  func (tp *TxPool) GetTransaction(hash common.Hash) *types.Transaction

                                                                                                                                                                                                                                    GetTransaction returns a transaction if it is contained in the pool and nil otherwise.

                                                                                                                                                                                                                                    func (*TxPool) GetTransactions

                                                                                                                                                                                                                                    func (self *TxPool) GetTransactions() (txs types.Transactions, err error)

                                                                                                                                                                                                                                      GetTransactions returns all currently processable transactions. The returned slice may be modified by the caller.

                                                                                                                                                                                                                                      func (*TxPool) RemoveTransactions

                                                                                                                                                                                                                                      func (self *TxPool) RemoveTransactions(txs types.Transactions)

                                                                                                                                                                                                                                        RemoveTransactions removes all given transactions from the pool.

                                                                                                                                                                                                                                        func (*TxPool) RemoveTx

                                                                                                                                                                                                                                        func (pool *TxPool) RemoveTx(hash common.Hash)

                                                                                                                                                                                                                                          RemoveTx removes the transaction with the given hash from the pool.

                                                                                                                                                                                                                                          func (*TxPool) Stats

                                                                                                                                                                                                                                          func (pool *TxPool) Stats() (pending int)

                                                                                                                                                                                                                                            Stats returns the number of currently pending (locally created) transactions

                                                                                                                                                                                                                                            func (*TxPool) Stop

                                                                                                                                                                                                                                            func (pool *TxPool) Stop()

                                                                                                                                                                                                                                              Stop stops the light transaction pool

                                                                                                                                                                                                                                              type TxRelayBackend

                                                                                                                                                                                                                                              type TxRelayBackend interface {
                                                                                                                                                                                                                                              	Send(txs types.Transactions)
                                                                                                                                                                                                                                              	NewHead(head common.Hash, mined []common.Hash, rollback []common.Hash)
                                                                                                                                                                                                                                              	Discard(hashes []common.Hash)
                                                                                                                                                                                                                                              }

                                                                                                                                                                                                                                                TxRelayBackend provides an interface to the mechanism that forwards transacions to the ETH network. The implementations of the functions should be non-blocking.

                                                                                                                                                                                                                                                Send instructs backend to forward new transactions NewHead notifies backend about a new head after processed by the tx pool,

                                                                                                                                                                                                                                                including  mined and rolled back transactions since the last event
                                                                                                                                                                                                                                                

                                                                                                                                                                                                                                                Discard notifies backend about transactions that should be discarded either

                                                                                                                                                                                                                                                because they have been replaced by a re-send or because they have been mined
                                                                                                                                                                                                                                                long ago and no rollback is expected
                                                                                                                                                                                                                                                

                                                                                                                                                                                                                                                type VMState

                                                                                                                                                                                                                                                type VMState struct {
                                                                                                                                                                                                                                                	// contains filtered or unexported fields
                                                                                                                                                                                                                                                }

                                                                                                                                                                                                                                                  VMState is a wrapper for the light state that holds the actual context and passes it to any state operation that requires it.

                                                                                                                                                                                                                                                  func NewVMState

                                                                                                                                                                                                                                                  func NewVMState(ctx context.Context, state *LightState) *VMState

                                                                                                                                                                                                                                                  func (*VMState) AddBalance

                                                                                                                                                                                                                                                  func (s *VMState) AddBalance(addr common.Address, amount *big.Int)

                                                                                                                                                                                                                                                    AddBalance adds the given amount to the balance of the specified account

                                                                                                                                                                                                                                                    func (*VMState) AddLog

                                                                                                                                                                                                                                                    func (s *VMState) AddLog(log *types.Log)

                                                                                                                                                                                                                                                    func (*VMState) AddPreimage

                                                                                                                                                                                                                                                    func (s *VMState) AddPreimage(hash common.Hash, preimage []byte)

                                                                                                                                                                                                                                                    func (*VMState) AddRefund

                                                                                                                                                                                                                                                    func (s *VMState) AddRefund(gas *big.Int)

                                                                                                                                                                                                                                                      AddRefund adds an amount to the refund value collected during a vm execution

                                                                                                                                                                                                                                                      func (*VMState) CreateAccount

                                                                                                                                                                                                                                                      func (s *VMState) CreateAccount(addr common.Address)

                                                                                                                                                                                                                                                        CreateAccount creates creates a new account object and takes ownership.

                                                                                                                                                                                                                                                        func (*VMState) Empty

                                                                                                                                                                                                                                                        func (s *VMState) Empty(addr common.Address) bool

                                                                                                                                                                                                                                                          Empty returns true if the account at the given address is considered empty

                                                                                                                                                                                                                                                          func (*VMState) Error

                                                                                                                                                                                                                                                          func (s *VMState) Error() error

                                                                                                                                                                                                                                                          func (*VMState) Exist

                                                                                                                                                                                                                                                          func (s *VMState) Exist(addr common.Address) bool

                                                                                                                                                                                                                                                            Exist returns true if an account exists at the given address

                                                                                                                                                                                                                                                            func (*VMState) ForEachStorage

                                                                                                                                                                                                                                                            func (s *VMState) ForEachStorage(addr common.Address, cb func(key, value common.Hash) bool)

                                                                                                                                                                                                                                                              ForEachStorage calls a callback function for every key/value pair found in the local storage cache. Note that unlike core/state.StateObject, light.StateObject only returns cached values and doesn't download the entire storage tree.

                                                                                                                                                                                                                                                              func (*VMState) GetBalance

                                                                                                                                                                                                                                                              func (s *VMState) GetBalance(addr common.Address) *big.Int

                                                                                                                                                                                                                                                                GetBalance retrieves the balance from the given address or 0 if the account does not exist

                                                                                                                                                                                                                                                                func (*VMState) GetCode

                                                                                                                                                                                                                                                                func (s *VMState) GetCode(addr common.Address) []byte

                                                                                                                                                                                                                                                                  GetCode returns the contract code at the given address or nil if the account does not exist

                                                                                                                                                                                                                                                                  func (*VMState) GetCodeHash

                                                                                                                                                                                                                                                                  func (s *VMState) GetCodeHash(addr common.Address) common.Hash

                                                                                                                                                                                                                                                                    GetCodeHash returns the contract code hash at the given address

                                                                                                                                                                                                                                                                    func (*VMState) GetCodeSize

                                                                                                                                                                                                                                                                    func (s *VMState) GetCodeSize(addr common.Address) int

                                                                                                                                                                                                                                                                      GetCodeSize returns the contract code size at the given address

                                                                                                                                                                                                                                                                      func (*VMState) GetNonce

                                                                                                                                                                                                                                                                      func (s *VMState) GetNonce(addr common.Address) uint64

                                                                                                                                                                                                                                                                        GetNonce returns the nonce at the given address or 0 if the account does not exist

                                                                                                                                                                                                                                                                        func (*VMState) GetRefund

                                                                                                                                                                                                                                                                        func (s *VMState) GetRefund() *big.Int

                                                                                                                                                                                                                                                                          GetRefund returns the refund value collected during a vm execution

                                                                                                                                                                                                                                                                          func (*VMState) GetState

                                                                                                                                                                                                                                                                          func (s *VMState) GetState(a common.Address, b common.Hash) common.Hash

                                                                                                                                                                                                                                                                            GetState returns the contract storage value at storage address b from the contract address a or common.Hash{} if the account does not exist

                                                                                                                                                                                                                                                                            func (*VMState) HasSuicided

                                                                                                                                                                                                                                                                            func (s *VMState) HasSuicided(addr common.Address) bool

                                                                                                                                                                                                                                                                              HasSuicided returns true if the given account has been marked for deletion or false if the account does not exist

                                                                                                                                                                                                                                                                              func (*VMState) RevertToSnapshot

                                                                                                                                                                                                                                                                              func (self *VMState) RevertToSnapshot(idx int)

                                                                                                                                                                                                                                                                              func (*VMState) SetCode

                                                                                                                                                                                                                                                                              func (s *VMState) SetCode(addr common.Address, code []byte)

                                                                                                                                                                                                                                                                                SetCode sets the contract code at the specified account

                                                                                                                                                                                                                                                                                func (*VMState) SetNonce

                                                                                                                                                                                                                                                                                func (s *VMState) SetNonce(addr common.Address, nonce uint64)

                                                                                                                                                                                                                                                                                  SetNonce sets the nonce of the specified account

                                                                                                                                                                                                                                                                                  func (*VMState) SetState

                                                                                                                                                                                                                                                                                  func (s *VMState) SetState(addr common.Address, key common.Hash, value common.Hash)

                                                                                                                                                                                                                                                                                    SetState sets the storage value at storage address key of the account addr

                                                                                                                                                                                                                                                                                    func (*VMState) Snapshot

                                                                                                                                                                                                                                                                                    func (self *VMState) Snapshot() int

                                                                                                                                                                                                                                                                                    func (*VMState) SubBalance

                                                                                                                                                                                                                                                                                    func (s *VMState) SubBalance(addr common.Address, amount *big.Int)

                                                                                                                                                                                                                                                                                      SubBalance adds the given amount to the balance of the specified account

                                                                                                                                                                                                                                                                                      func (*VMState) Suicide

                                                                                                                                                                                                                                                                                      func (s *VMState) Suicide(addr common.Address) bool

                                                                                                                                                                                                                                                                                        Suicide marks an account to be removed and clears its balance