Documentation ¶
Overview ¶
Package light implements on-demand retrieval capable state and chain objects for the Ethereum Light Client.
Index ¶
- Constants
- Variables
- func GetBlock(ctx context.Context, odr OdrBackend, hash common.Hash, number uint64) (*types.Block, error)
- func GetBlockReceipts(ctx context.Context, odr OdrBackend, hash common.Hash, number uint64) (types.Receipts, error)
- func GetBloomBits(ctx context.Context, odr OdrBackend, bitIdx uint, sectionIdxList []uint64) ([][]byte, error)
- func GetBloomTrieRoot(db ethdb.Database, sectionIdx uint64, sectionHead common.Hash) common.Hash
- func GetBody(ctx context.Context, odr OdrBackend, hash common.Hash, number uint64) (*types.Body, error)
- func GetBodyRLP(ctx context.Context, odr OdrBackend, hash common.Hash, number uint64) (rlp.RawValue, error)
- func GetCanonicalHash(ctx context.Context, odr OdrBackend, number uint64) (common.Hash, error)
- func GetChtRoot(db ethdb.Database, sectionIdx uint64, sectionHead common.Hash) common.Hash
- func GetChtV2Root(db ethdb.Database, sectionIdx uint64, sectionHead common.Hash) common.Hash
- func GetHeaderByNumber(ctx context.Context, odr OdrBackend, number uint64) (*types.Header, error)
- func NewBloomTrieIndexer(db ethdb.Database, clientMode bool) *core.ChainIndexer
- func NewChtIndexer(db ethdb.Database, clientMode bool) *core.ChainIndexer
- func NewState(ctx context.Context, head *types.Header, odr OdrBackend) *state.StateDB
- func NewStateDatabase(ctx context.Context, head *types.Header, odr OdrBackend) state.Database
- func StoreBloomTrieRoot(db ethdb.Database, sectionIdx uint64, sectionHead, root common.Hash)
- func StoreChtRoot(db ethdb.Database, sectionIdx uint64, sectionHead, root common.Hash)
- type BlockRequest
- type BloomRequest
- type BloomTrieIndexerBackend
- type ChtIndexerBackend
- type ChtNode
- type ChtRequest
- type CodeRequest
- type LightChain
- func (self *LightChain) Config() *params.ChainConfig
- func (self *LightChain) CurrentHeader() *types.Header
- func (bc *LightChain) Engine() consensus.Engine
- func (self *LightChain) GasLimit() uint64
- func (bc *LightChain) Genesis() *types.Block
- func (self *LightChain) GetBlock(ctx context.Context, hash common.Hash, number uint64) (*types.Block, error)
- func (self *LightChain) GetBlockByHash(ctx context.Context, hash common.Hash) (*types.Block, error)
- func (self *LightChain) GetBlockByNumber(ctx context.Context, number uint64) (*types.Block, error)
- func (self *LightChain) GetBlockHashesFromHash(hash common.Hash, max uint64) []common.Hash
- func (self *LightChain) GetBody(ctx context.Context, hash common.Hash) (*types.Body, error)
- func (self *LightChain) GetBodyRLP(ctx context.Context, hash common.Hash) (rlp.RawValue, error)
- func (self *LightChain) GetHeader(hash common.Hash, number uint64) *types.Header
- func (self *LightChain) GetHeaderByHash(hash common.Hash) *types.Header
- func (self *LightChain) GetHeaderByNumber(number uint64) *types.Header
- func (self *LightChain) GetHeaderByNumberOdr(ctx context.Context, number uint64) (*types.Header, error)
- func (self *LightChain) GetTd(hash common.Hash, number uint64) *big.Int
- func (self *LightChain) GetTdByHash(hash common.Hash) *big.Int
- func (bc *LightChain) HasBlock(hash common.Hash, number uint64) bool
- func (bc *LightChain) HasHeader(hash common.Hash, number uint64) bool
- func (self *LightChain) InsertHeaderChain(chain []*types.Header, checkFreq int) (int, error)
- func (self *LightChain) LockChain()
- func (self *LightChain) Odr() OdrBackend
- func (bc *LightChain) Reset()
- func (bc *LightChain) ResetWithGenesisBlock(genesis *types.Block)
- func (self *LightChain) Rollback(chain []common.Hash)
- func (bc *LightChain) SetHead(head uint64)
- func (bc *LightChain) State() (*state.StateDB, error)
- func (bc *LightChain) Stop()
- func (self *LightChain) SubscribeChainEvent(ch chan<- core.ChainEvent) event.Subscription
- func (self *LightChain) SubscribeChainHeadEvent(ch chan<- core.ChainHeadEvent) event.Subscription
- func (self *LightChain) SubscribeChainSideEvent(ch chan<- core.ChainSideEvent) event.Subscription
- func (self *LightChain) SubscribeLogsEvent(ch chan<- []*types.Log) event.Subscription
- func (self *LightChain) SubscribeRemovedLogsEvent(ch chan<- core.RemovedLogsEvent) event.Subscription
- func (self *LightChain) SyncCht(ctx context.Context) bool
- func (self *LightChain) UnlockChain()
- type NodeList
- type NodeSet
- func (db *NodeSet) DataSize() int
- func (db *NodeSet) Get(key []byte) ([]byte, error)
- func (db *NodeSet) Has(key []byte) (bool, error)
- func (db *NodeSet) KeyCount() int
- func (db *NodeSet) NodeList() NodeList
- func (db *NodeSet) Put(key []byte, value []byte) error
- func (db *NodeSet) Store(target ethdb.Putter)
- type OdrBackend
- type OdrRequest
- type ReceiptsRequest
- type TrieID
- type TrieRequest
- type TxPool
- func (self *TxPool) Add(ctx context.Context, tx *types.Transaction) error
- func (self *TxPool) AddBatch(ctx context.Context, txs []*types.Transaction)
- func (self *TxPool) Content() (map[common.Address]types.Transactions, map[common.Address]types.Transactions)
- func (pool *TxPool) GetNonce(ctx context.Context, addr common.Address) (uint64, error)
- func (tp *TxPool) GetTransaction(hash common.Hash) *types.Transaction
- func (self *TxPool) GetTransactions() (txs types.Transactions, err error)
- func (self *TxPool) RemoveTransactions(txs types.Transactions)
- func (pool *TxPool) RemoveTx(hash common.Hash)
- func (pool *TxPool) Stats() (pending int)
- func (pool *TxPool) Stop()
- func (pool *TxPool) SubscribeTxPreEvent(ch chan<- core.TxPreEvent) event.Subscription
- type TxRelayBackend
Constants ¶
const ( // CHTFrequencyClient is the block frequency for creating CHTs on the client side. CHTFrequencyClient = 32768 // CHTFrequencyServer is the block frequency for creating CHTs on the server side. // Eventually this can be merged back with the client version, but that requires a // full database upgrade, so that should be left for a suitable moment. CHTFrequencyServer = 4096 HelperTrieConfirmations = 2048 // number of confirmations before a server is expected to have the given HelperTrie available HelperTrieProcessConfirmations = 256 // number of confirmations before a HelperTrie is generated )
const (
BloomTrieFrequency = 32768
)
Variables ¶
var ( ErrNoTrustedCht = errors.New("No trusted canonical hash trie") ErrNoTrustedBloomTrie = errors.New("No trusted bloom trie") ErrNoHeader = errors.New("Header not found") ChtTablePrefix = "cht-" )
var (
BloomTrieTablePrefix = "blt-"
)
var NoOdr = context.Background()
NoOdr is the default context passed to an ODR capable function when the ODR service is not required.
Functions ¶
func GetBlock ¶ added in v1.5.0
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 ¶ added in v1.5.0
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 GetBloomBits ¶ added in v1.7.3
func GetBloomBits(ctx context.Context, odr OdrBackend, bitIdx uint, sectionIdxList []uint64) ([][]byte, error)
GetBloomBits retrieves a batch of compressed bloomBits vectors belonging to the given bit index and section indexes
func GetBloomTrieRoot ¶ added in v1.7.3
GetBloomTrieRoot reads the BloomTrie root assoctiated to the given section from the database
func GetBody ¶ added in v1.5.0
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 ¶ added in v1.5.0
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 ¶ added in v1.5.0
func GetChtRoot ¶ added in v1.7.3
GetChtRoot reads the CHT root assoctiated to the given section from the database Note that sectionIdx is specified according to LES/1 CHT section size
func GetChtV2Root ¶ added in v1.7.3
GetChtV2Root reads the CHT root assoctiated to the given section from the database Note that sectionIdx is specified according to LES/2 CHT section size
func GetHeaderByNumber ¶ added in v1.5.0
func NewBloomTrieIndexer ¶ added in v1.7.3
func NewBloomTrieIndexer(db ethdb.Database, clientMode bool) *core.ChainIndexer
NewBloomTrieIndexer creates a BloomTrie chain indexer
func NewChtIndexer ¶ added in v1.7.3
func NewChtIndexer(db ethdb.Database, clientMode bool) *core.ChainIndexer
NewBloomTrieIndexer creates a BloomTrie chain indexer
func NewStateDatabase ¶ added in v1.6.7
func StoreBloomTrieRoot ¶ added in v1.7.3
StoreBloomTrieRoot writes the BloomTrie root assoctiated to the given section into the database
Types ¶
type BlockRequest ¶ added in v1.5.0
type BlockRequest struct { OdrRequest Hash common.Hash Number uint64 Rlp []byte }
BlockRequest is the ODR request type for retrieving block bodies
func (*BlockRequest) StoreResult ¶ added in v1.5.0
func (req *BlockRequest) StoreResult(db ethdb.Database)
StoreResult stores the retrieved data in local database
type BloomRequest ¶ added in v1.7.3
type BloomRequest struct { OdrRequest BloomTrieNum uint64 BitIdx uint SectionIdxList []uint64 BloomTrieRoot common.Hash BloomBits [][]byte Proofs *NodeSet }
BloomRequest is the ODR request type for retrieving bloom filters from a CHT structure
func (*BloomRequest) StoreResult ¶ added in v1.7.3
func (req *BloomRequest) StoreResult(db ethdb.Database)
StoreResult stores the retrieved data in local database
type BloomTrieIndexerBackend ¶ added in v1.7.3
type BloomTrieIndexerBackend struct {
// contains filtered or unexported fields
}
BloomTrieIndexerBackend implements core.ChainIndexerBackend
func (*BloomTrieIndexerBackend) Commit ¶ added in v1.7.3
func (b *BloomTrieIndexerBackend) Commit() error
Commit implements core.ChainIndexerBackend
func (*BloomTrieIndexerBackend) Process ¶ added in v1.7.3
func (b *BloomTrieIndexerBackend) Process(header *types.Header)
Process implements core.ChainIndexerBackend
type ChtIndexerBackend ¶ added in v1.7.3
type ChtIndexerBackend struct {
// contains filtered or unexported fields
}
ChtIndexerBackend implements core.ChainIndexerBackend
func (*ChtIndexerBackend) Commit ¶ added in v1.7.3
func (c *ChtIndexerBackend) Commit() error
Commit implements core.ChainIndexerBackend
func (*ChtIndexerBackend) Process ¶ added in v1.7.3
func (c *ChtIndexerBackend) Process(header *types.Header)
Process implements core.ChainIndexerBackend
type ChtNode ¶ added in v1.5.0
ChtNode structures are stored in the Canonical Hash Trie in an RLP encoded format
type ChtRequest ¶ added in v1.5.0
type ChtRequest struct { OdrRequest ChtNum, BlockNum uint64 ChtRoot common.Hash Header *types.Header Td *big.Int Proof *NodeSet }
ChtRequest is the ODR request type for state/storage trie entries
func (*ChtRequest) StoreResult ¶ added in v1.5.0
func (req *ChtRequest) StoreResult(db ethdb.Database)
StoreResult stores the retrieved data in local database
type CodeRequest ¶ added in v1.5.0
type CodeRequest struct { OdrRequest Id *TrieID // references storage trie of the account Hash common.Hash Data []byte }
CodeRequest is the ODR request type for retrieving contract code
func (*CodeRequest) StoreResult ¶ added in v1.5.0
func (req *CodeRequest) StoreResult(db ethdb.Database)
StoreResult stores the retrieved data in local database
type LightChain ¶ added in v1.5.0
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 ¶ added in v1.5.0
func NewLightChain(odr OdrBackend, config *params.ChainConfig, engine consensus.Engine) (*LightChain, error)
NewLightChain returns a fully initialised light chain using information available in the database. It initialises the default Ethereum header validator.
func (*LightChain) Config ¶ added in v1.8.0
func (self *LightChain) Config() *params.ChainConfig
Config retrieves the header chain's chain configuration.
func (*LightChain) CurrentHeader ¶ added in v1.5.0
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 ¶ added in v1.6.0
func (bc *LightChain) Engine() consensus.Engine
Engine retrieves the light chain's consensus engine.
func (*LightChain) GasLimit ¶ added in v1.5.0
func (self *LightChain) GasLimit() uint64
GasLimit returns the gas limit of the current HEAD block.
func (*LightChain) Genesis ¶ added in v1.5.0
func (bc *LightChain) Genesis() *types.Block
Genesis returns the genesis block
func (*LightChain) GetBlock ¶ added in v1.5.0
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 ¶ added in v1.5.0
GetBlockByHash retrieves a block from the database or ODR service by hash, caching it if found.
func (*LightChain) GetBlockByNumber ¶ added in v1.5.0
GetBlockByNumber retrieves a block from the database or ODR service by number, caching it (associated with its hash) if found.
func (*LightChain) GetBlockHashesFromHash ¶ added in v1.5.0
GetBlockHashesFromHash retrieves a number of block hashes starting at a given hash, fetching towards the genesis block.
func (*LightChain) GetBody ¶ added in v1.5.0
GetBody retrieves a block body (transactions and uncles) from the database or ODR service by hash, caching it if found.
func (*LightChain) GetBodyRLP ¶ added in v1.5.0
GetBodyRLP retrieves a block body in RLP encoding from the database or ODR service by hash, caching it if found.
func (*LightChain) GetHeader ¶ added in v1.5.0
GetHeader retrieves a block header from the database by hash and number, caching it if found.
func (*LightChain) GetHeaderByHash ¶ added in v1.5.0
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 ¶ added in v1.5.0
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 ¶ added in v1.5.0
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 ¶ added in v1.5.0
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 ¶ added in v1.5.0
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 ¶ added in v1.5.0
func (bc *LightChain) HasBlock(hash common.Hash, number uint64) bool
HasBlock checks if a block is fully present in the database or not, caching it if present.
func (*LightChain) HasHeader ¶ added in v1.5.0
func (bc *LightChain) HasHeader(hash common.Hash, number uint64) bool
HasHeader checks if a block header is present in the database or not, caching it if present.
func (*LightChain) InsertHeaderChain ¶ added in v1.5.0
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) LockChain ¶ added in v1.5.5
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 ¶ added in v1.5.0
func (self *LightChain) Odr() OdrBackend
Odr returns the ODR backend of the chain
func (*LightChain) Reset ¶ added in v1.5.0
func (bc *LightChain) Reset()
Reset purges the entire blockchain, restoring it to its genesis state.
func (*LightChain) ResetWithGenesisBlock ¶ added in v1.5.0
func (bc *LightChain) ResetWithGenesisBlock(genesis *types.Block)
ResetWithGenesisBlock purges the entire blockchain, restoring it to the specified genesis state.
func (*LightChain) Rollback ¶ added in v1.5.0
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 ¶ added in v1.5.0
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 ¶ added in v1.5.0
func (bc *LightChain) State() (*state.StateDB, error)
State returns a new mutable state based on the current HEAD block.
func (*LightChain) Stop ¶ added in v1.5.0
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) SubscribeChainEvent ¶ added in v1.7.0
func (self *LightChain) SubscribeChainEvent(ch chan<- core.ChainEvent) event.Subscription
SubscribeChainEvent registers a subscription of ChainEvent.
func (*LightChain) SubscribeChainHeadEvent ¶ added in v1.7.0
func (self *LightChain) SubscribeChainHeadEvent(ch chan<- core.ChainHeadEvent) event.Subscription
SubscribeChainHeadEvent registers a subscription of ChainHeadEvent.
func (*LightChain) SubscribeChainSideEvent ¶ added in v1.7.0
func (self *LightChain) SubscribeChainSideEvent(ch chan<- core.ChainSideEvent) event.Subscription
SubscribeChainSideEvent registers a subscription of ChainSideEvent.
func (*LightChain) SubscribeLogsEvent ¶ added in v1.7.0
func (self *LightChain) SubscribeLogsEvent(ch chan<- []*types.Log) event.Subscription
SubscribeLogsEvent implements the interface of filters.Backend LightChain does not send logs events, so return an empty subscription.
func (*LightChain) SubscribeRemovedLogsEvent ¶ added in v1.7.0
func (self *LightChain) SubscribeRemovedLogsEvent(ch chan<- core.RemovedLogsEvent) event.Subscription
SubscribeRemovedLogsEvent implements the interface of filters.Backend LightChain does not send core.RemovedLogsEvent, so return an empty subscription.
func (*LightChain) SyncCht ¶ added in v1.5.0
func (self *LightChain) SyncCht(ctx context.Context) bool
func (*LightChain) UnlockChain ¶ added in v1.5.5
func (self *LightChain) UnlockChain()
UnlockChain unlocks the chain mutex
type NodeList ¶ added in v1.7.3
NodeList stores an ordered list of trie nodes. It implements ethdb.Putter.
func (NodeList) DataSize ¶ added in v1.7.3
DataSize returns the aggregated data size of nodes in the list
type NodeSet ¶ added in v1.7.3
type NodeSet struct {
// contains filtered or unexported fields
}
NodeSet stores a set of trie nodes. It implements trie.Database and can also act as a cache for another trie.Database.
func (*NodeSet) DataSize ¶ added in v1.7.3
DataSize returns the aggregated data size of nodes in the set
type OdrBackend ¶
type OdrBackend interface { Database() ethdb.Database ChtIndexer() *core.ChainIndexer BloomTrieIndexer() *core.ChainIndexer BloomIndexer() *core.ChainIndexer Retrieve(ctx context.Context, req OdrRequest) error }
OdrBackend is an interface to a backend service that handles ODR retrievals type
type OdrRequest ¶
OdrRequest is an interface for retrieval requests
type ReceiptsRequest ¶ added in v1.5.0
ReceiptsRequest is the ODR request type for retrieving block bodies
func (*ReceiptsRequest) StoreResult ¶ added in v1.5.0
func (req *ReceiptsRequest) StoreResult(db ethdb.Database)
StoreResult stores the retrieved data in local database
type TrieID ¶ added in v1.5.0
TrieID identifies a state or account storage trie
func StateTrieID ¶ added in v1.5.0
StateTrieID returns a TrieID for a state trie belonging to a certain block header.
type TrieRequest ¶
type TrieRequest struct { OdrRequest Id *TrieID Key []byte Proof *NodeSet }
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 TxPool ¶ added in v1.5.0
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 ¶ added in v1.5.0
func NewTxPool(config *params.ChainConfig, chain *LightChain, relay TxRelayBackend) *TxPool
NewTxPool creates a new light transaction pool
func (*TxPool) Add ¶ added in v1.5.0
Add adds a transaction to the pool if valid and passes it to the tx relay backend
func (*TxPool) AddBatch ¶ added in v1.5.0
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 ¶ added in v1.5.0
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 ¶ added in v1.5.0
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 ¶ added in v1.5.0
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 ¶ added in v1.5.0
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 ¶ added in v1.5.0
func (self *TxPool) RemoveTransactions(txs types.Transactions)
RemoveTransactions removes all given transactions from the pool.
func (*TxPool) RemoveTx ¶ added in v1.5.0
RemoveTx removes the transaction with the given hash from the pool.
func (*TxPool) Stats ¶ added in v1.5.0
Stats returns the number of currently pending (locally created) transactions
func (*TxPool) Stop ¶ added in v1.5.0
func (pool *TxPool) Stop()
Stop stops the light transaction pool
func (*TxPool) SubscribeTxPreEvent ¶ added in v1.7.0
func (pool *TxPool) SubscribeTxPreEvent(ch chan<- core.TxPreEvent) event.Subscription
SubscribeTxPreEvent registers a subscription of core.TxPreEvent and starts sending event to the given channel.
type TxRelayBackend ¶ added in v1.5.0
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