eth

package
v1.4.2 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Oct 18, 2023 License: GPL-3.0 Imports: 64 Imported by: 0

Documentation

Overview

Package eth implements the Ethereum protocol.

Index

Constants

View Source
const AccountRangeMaxResults = 256

AccountRangeMaxResults is the maximum number of results to be returned per call

View Source
const DefaultViewNumber = uint64(0)

Variables

This section is empty.

Functions

func AnalyzeStressTest added in v1.0.0

func AnalyzeStressTest(configPaths []string, output string, t int) error

func BuildEVMInput added in v1.0.0

func BuildEVMInput(funcName []byte, params ...[]byte) []byte

func BuildWASMInput added in v1.0.0

func BuildWASMInput(rawStruct interface{}) []byte

Types

type AccountRangeResult added in v1.3.0

type AccountRangeResult struct {
	Accounts map[common.Hash]*common.Address `json:"accounts"`
	Next     common.Hash                     `json:"next"`
}

AccountRangeResult returns a mapping from the hash of an account addresses to its preimage. It will return the JSON null if no preimage is found. Since a query can return a limited amount of results, a "next" field is also present for paging.

type AnalystEntity added in v1.0.0

type AnalystEntity struct {
	BeginNumber        uint64
	EndNumber          uint64
	ViewBlockRate      uint64
	ViewCountMap       ViewCountMap
	MissViewList       []uint64
	TotalProduceTime   uint64
	AverageProduceTime uint64
	TopArray           [][]uint64
	TxCount            uint64
	Tps                uint64
}

type BadBlockArgs

type BadBlockArgs struct {
	Hash  common.Hash            `json:"hash"`
	Block map[string]interface{} `json:"block"`
	RLP   string                 `json:"rlp"`
}

BadBlockArgs represents the entries in the list returned when bad blocks are queried.

type BlockInfo added in v1.0.0

type BlockInfo struct {
	ProduceTime int64 `json:"id_time"`
	Number      int64 `json:"block"`
	TxLength    int   `json:"tx_length"`
	Latency     int64 `json:"latency"`
	Ttf         int64 `json:"ttf"`
}

type BlockInfos added in v1.0.0

type BlockInfos []BlockInfo

func (BlockInfos) Len added in v1.0.0

func (t BlockInfos) Len() int

func (BlockInfos) Less added in v1.0.0

func (t BlockInfos) Less(i, j int) bool

func (BlockInfos) Swap added in v1.0.0

func (t BlockInfos) Swap(i, j int)

type ContractCallConfig added in v1.0.0

type ContractCallConfig struct {
	GasLimit   uint64        `json:"call_gas_limit"`
	Input      string        `json:"call_input"`
	Parameters []interface{} `json:"parameters"`
}

type ContractReceiverCallInput added in v1.0.0

type ContractReceiverCallInput struct {
	Data       []byte
	GasLimit   uint64
	Parameters []interface{}
}

type EthAPIBackend

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

EthAPIBackend implements ethapi.Backend for full nodes

func (*EthAPIBackend) AccountManager

func (b *EthAPIBackend) AccountManager() *accounts.Manager

func (*EthAPIBackend) BlockByHash added in v1.1.3

func (b *EthAPIBackend) BlockByHash(ctx context.Context, hash common.Hash) (*types.Block, error)

func (*EthAPIBackend) BlockByNumber

func (b *EthAPIBackend) BlockByNumber(ctx context.Context, number rpc.BlockNumber) (*types.Block, error)

func (*EthAPIBackend) BlockByNumberOrHash added in v1.1.3

func (b *EthAPIBackend) BlockByNumberOrHash(ctx context.Context, blockNrOrHash rpc.BlockNumberOrHash) (*types.Block, error)

func (*EthAPIBackend) BloomStatus

func (b *EthAPIBackend) BloomStatus() (uint64, uint64)

func (*EthAPIBackend) ChainConfig

func (b *EthAPIBackend) ChainConfig() *params.ChainConfig

ChainConfig returns the active chain configuration.

func (*EthAPIBackend) ChainDb

func (b *EthAPIBackend) ChainDb() ethdb.Database

func (*EthAPIBackend) CurrentBlock

func (b *EthAPIBackend) CurrentBlock() *types.Block

func (*EthAPIBackend) CurrentHeader added in v1.1.3

func (b *EthAPIBackend) CurrentHeader() *types.Header

func (*EthAPIBackend) Downloader

func (b *EthAPIBackend) Downloader() *downloader.Downloader

func (*EthAPIBackend) Engine added in v0.7.0

func (b *EthAPIBackend) Engine() consensus.Engine

func (*EthAPIBackend) EventMux

func (b *EthAPIBackend) EventMux() *event.TypeMux

func (*EthAPIBackend) ExtRPCEnabled added in v1.1.1

func (b *EthAPIBackend) ExtRPCEnabled() bool

func (*EthAPIBackend) GetEVM

func (b *EthAPIBackend) GetEVM(ctx context.Context, msg core.Message, state *state.StateDB, header *types.Header, vmConfig *vm.Config) (*vm.EVM, func() error, error)

func (*EthAPIBackend) GetLogs

func (b *EthAPIBackend) GetLogs(ctx context.Context, hash common.Hash) ([][]*types.Log, error)

func (*EthAPIBackend) GetPoolNonce

func (b *EthAPIBackend) GetPoolNonce(ctx context.Context, addr common.Address) (uint64, error)

func (*EthAPIBackend) GetPoolTransaction

func (b *EthAPIBackend) GetPoolTransaction(hash common.Hash) *types.Transaction

func (*EthAPIBackend) GetPoolTransactions

func (b *EthAPIBackend) GetPoolTransactions() (types.Transactions, error)

func (*EthAPIBackend) GetReceipts

func (b *EthAPIBackend) GetReceipts(ctx context.Context, hash common.Hash) (types.Receipts, error)

func (*EthAPIBackend) GetTransaction added in v1.1.1

func (b *EthAPIBackend) GetTransaction(ctx context.Context, txHash common.Hash) (*types.Transaction, common.Hash, uint64, uint64, error)

func (*EthAPIBackend) HeaderByHash

func (b *EthAPIBackend) HeaderByHash(ctx context.Context, hash common.Hash) (*types.Header, error)

func (*EthAPIBackend) HeaderByNumber

func (b *EthAPIBackend) HeaderByNumber(ctx context.Context, number rpc.BlockNumber) (*types.Header, error)

func (*EthAPIBackend) HeaderByNumberOrHash added in v1.1.3

func (b *EthAPIBackend) HeaderByNumberOrHash(ctx context.Context, blockNrOrHash rpc.BlockNumberOrHash) (*types.Header, error)

func (*EthAPIBackend) Miner added in v1.1.3

func (b *EthAPIBackend) Miner() *miner.Miner

func (*EthAPIBackend) RPCGasCap added in v1.1.1

func (b *EthAPIBackend) RPCGasCap() uint64

func (*EthAPIBackend) RPCTxFeeCap added in v1.3.2

func (b *EthAPIBackend) RPCTxFeeCap() float64

func (*EthAPIBackend) SendTx

func (b *EthAPIBackend) SendTx(ctx context.Context, signedTx *types.Transaction) error

func (*EthAPIBackend) ServiceFilter

func (b *EthAPIBackend) ServiceFilter(ctx context.Context, session *bloombits.MatcherSession)

func (*EthAPIBackend) StartMining added in v1.1.3

func (b *EthAPIBackend) StartMining() error

func (*EthAPIBackend) StateAndHeaderByNumber

func (b *EthAPIBackend) StateAndHeaderByNumber(ctx context.Context, blockNr rpc.BlockNumber) (*state.StateDB, *types.Header, error)

func (*EthAPIBackend) StateAndHeaderByNumberOrHash added in v1.1.3

func (b *EthAPIBackend) StateAndHeaderByNumberOrHash(ctx context.Context, blockNrOrHash rpc.BlockNumberOrHash) (*state.StateDB, *types.Header, error)

func (*EthAPIBackend) StateAtBlock added in v1.4.1

func (b *EthAPIBackend) StateAtBlock(ctx context.Context, block *types.Block, reexec uint64, base *state.StateDB, checkLive bool) (*state.StateDB, error)

func (*EthAPIBackend) StateAtTransaction added in v1.4.1

func (b *EthAPIBackend) StateAtTransaction(ctx context.Context, block *types.Block, txIndex int, reexec uint64) (core.Message, vm.BlockContext, *state.StateDB, error)

func (*EthAPIBackend) Stats

func (b *EthAPIBackend) Stats() (pending int, queued int)

func (*EthAPIBackend) SubscribeChainEvent

func (b *EthAPIBackend) SubscribeChainEvent(ch chan<- core.ChainEvent) event.Subscription

func (*EthAPIBackend) SubscribeChainHeadEvent

func (b *EthAPIBackend) SubscribeChainHeadEvent(ch chan<- core.ChainHeadEvent) event.Subscription

func (*EthAPIBackend) SubscribeChainSideEvent

func (b *EthAPIBackend) SubscribeChainSideEvent(ch chan<- core.ChainSideEvent) event.Subscription

func (*EthAPIBackend) SubscribeLogsEvent

func (b *EthAPIBackend) SubscribeLogsEvent(ch chan<- []*types.Log) event.Subscription

func (*EthAPIBackend) SubscribeNewTxsEvent

func (b *EthAPIBackend) SubscribeNewTxsEvent(ch chan<- core.NewTxsEvent) event.Subscription

func (*EthAPIBackend) SubscribePendingLogsEvent added in v1.3.0

func (b *EthAPIBackend) SubscribePendingLogsEvent(ch chan<- []*types.Log) event.Subscription

func (*EthAPIBackend) SubscribeRemovedLogsEvent

func (b *EthAPIBackend) SubscribeRemovedLogsEvent(ch chan<- core.RemovedLogsEvent) event.Subscription

func (*EthAPIBackend) SuggestPrice

func (b *EthAPIBackend) SuggestPrice(ctx context.Context) (*big.Int, error)

func (*EthAPIBackend) TxPool added in v1.1.3

func (b *EthAPIBackend) TxPool() *core.TxPool

func (*EthAPIBackend) TxPoolContent

func (*EthAPIBackend) UnprotectedAllowed added in v1.4.0

func (b *EthAPIBackend) UnprotectedAllowed() bool

func (*EthAPIBackend) WasmType added in v1.0.0

func (b *EthAPIBackend) WasmType() string

type Ethereum

type Ethereum struct {
	APIBackend *EthAPIBackend
	// contains filtered or unexported fields
}

Ethereum implements the Ethereum full node service.

func New

func New(stack *node.Node, config *ethconfig.Config) (*Ethereum, error)

New creates a new Ethereum object (including the initialisation of the common Ethereum object)

func (*Ethereum) APIs

func (s *Ethereum) APIs() []rpc.API

APIs return the collection of RPC services the ethereum package offers. NOTE, some of these services probably need to be moved to somewhere else.

func (*Ethereum) AccountManager

func (s *Ethereum) AccountManager() *accounts.Manager

func (*Ethereum) BlockChain

func (s *Ethereum) BlockChain() *core.BlockChain

func (*Ethereum) BloomIndexer added in v1.1.3

func (s *Ethereum) BloomIndexer() *core.ChainIndexer

func (*Ethereum) ChainDb

func (s *Ethereum) ChainDb() ethdb.Database

func (*Ethereum) Downloader

func (s *Ethereum) Downloader() *downloader.Downloader

func (*Ethereum) Engine

func (s *Ethereum) Engine() consensus.Engine

func (*Ethereum) EventMux

func (s *Ethereum) EventMux() *event.TypeMux

func (*Ethereum) IsListening

func (s *Ethereum) IsListening() bool

func (*Ethereum) IsMining

func (s *Ethereum) IsMining() bool

func (*Ethereum) Miner

func (s *Ethereum) Miner() *miner.Miner

func (*Ethereum) Protocols

func (s *Ethereum) Protocols() []p2p.Protocol

Protocols returns all the currently configured network protocols to start.

func (*Ethereum) Start

func (s *Ethereum) Start() error

Start implements node.Lifecycle, starting all internal goroutines needed by the Ethereum protocol implementation.

func (*Ethereum) StartMining

func (s *Ethereum) StartMining() error

start mining

func (*Ethereum) Stop

func (s *Ethereum) Stop() error

Stop implements node.Service, terminating all internal goroutines used by the Ethereum protocol.

func (*Ethereum) StopMining

func (s *Ethereum) StopMining()

StopMining terminates the miner, both at the consensus engine level as well as at the block creation level.

func (*Ethereum) Synced added in v1.4.1

func (s *Ethereum) Synced() bool

func (*Ethereum) TxPool

func (s *Ethereum) TxPool() *core.TxPool

type PrivateAdminAPI

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

PrivateAdminAPI is the collection of Ethereum full node-related APIs exposed over the private admin endpoint.

func NewPrivateAdminAPI

func NewPrivateAdminAPI(eth *Ethereum) *PrivateAdminAPI

NewPrivateAdminAPI creates a new API definition for the full node private admin methods of the Ethereum service.

func (*PrivateAdminAPI) ExportChain

func (api *PrivateAdminAPI) ExportChain(file string, first *uint64, last *uint64) (bool, error)

ExportChain exports the current blockchain into a local file, or a range of blocks if first and last are non-nil

func (*PrivateAdminAPI) ImportChain

func (api *PrivateAdminAPI) ImportChain(file string) (bool, error)

ImportChain imports a blockchain from a local file.

type PrivateDebugAPI

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

PrivateDebugAPI is the collection of Ethereum full node APIs exposed over the private debugging endpoint.

func NewPrivateDebugAPI

func NewPrivateDebugAPI(eth *Ethereum) *PrivateDebugAPI

NewPrivateDebugAPI creates a new API definition for the full node-related private debug methods of the Ethereum service.

func (*PrivateDebugAPI) AccountRange added in v1.3.0

func (api *PrivateDebugAPI) AccountRange(blockNrOrHash rpc.BlockNumberOrHash, start hexutil.Bytes, maxResults int, nocode, nostorage, incompletes bool) (state.IteratorDump, error)

AccountRange enumerates all accounts in the given block and start point in paging request

func (*PrivateDebugAPI) GetBadBlocks

func (api *PrivateDebugAPI) GetBadBlocks(ctx context.Context) ([]*BadBlockArgs, error)

GetBadBlocks returns a list of the last 'bad blocks' that the client has seen on the network and returns them as a JSON list of block-hashes

func (*PrivateDebugAPI) GetModifiedAccountsByHash

func (api *PrivateDebugAPI) GetModifiedAccountsByHash(startHash common.Hash, endHash *common.Hash) ([]common.Address, error)

GetModifiedAccountsByHash returns all accounts that have changed between the two blocks specified. A change is defined as a difference in nonce, balance, code hash, or storage hash.

With one parameter, returns the list of accounts modified in the specified block.

func (*PrivateDebugAPI) GetModifiedAccountsByNumber

func (api *PrivateDebugAPI) GetModifiedAccountsByNumber(startNum uint64, endNum *uint64) ([]common.Address, error)

GetModifiedAccountsByNumber returns all accounts that have changed between the two blocks specified. A change is defined as a difference in nonce, balance, code hash, or storage hash.

With one parameter, returns the list of accounts modified in the specified block.

func (*PrivateDebugAPI) Preimage

func (api *PrivateDebugAPI) Preimage(ctx context.Context, hash common.Hash) (hexutil.Bytes, error)

Preimage is a debug API function that returns the preimage for a sha3 hash, if known.

func (*PrivateDebugAPI) StorageRangeAt

func (api *PrivateDebugAPI) StorageRangeAt(blockHash common.Hash, txIndex int, contractAddress common.Address, keyStart hexutil.Bytes, maxResult int) (StorageRangeResult, error)

StorageRangeAt returns the storage at the given block height and transaction index.

type PrivateMinerAPI

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

PrivateMinerAPI provides private RPC methods to control the miner. These methods can be abused by external users and must be considered insecure for use by untrusted users.

func NewPrivateMinerAPI

func NewPrivateMinerAPI(e *Ethereum) *PrivateMinerAPI

NewPrivateMinerAPI create a new RPC service which controls the miner of this node.

func (*PrivateMinerAPI) SetGasPrice

func (api *PrivateMinerAPI) SetGasPrice(gasPrice hexutil.Big) bool

SetGasPrice sets the minimum accepted gas price for the miner.

type PublicDebugAPI

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

PublicDebugAPI is the collection of Ethereum full node APIs exposed over the public debugging endpoint.

func NewPublicDebugAPI

func NewPublicDebugAPI(eth *Ethereum) *PublicDebugAPI

NewPublicDebugAPI creates a new API definition for the full node- related public debug methods of the Ethereum service.

func (*PublicDebugAPI) DisableDBGC added in v0.7.4

func (api *PublicDebugAPI) DisableDBGC()

DisableDBGC disable database garbage collection.

func (*PublicDebugAPI) DumpBlock

func (api *PublicDebugAPI) DumpBlock(blockNr rpc.BlockNumber) (state.Dump, error)

DumpBlock retrieves the entire state of the database at a given block.

func (*PublicDebugAPI) EnableDBGC added in v0.7.4

func (api *PublicDebugAPI) EnableDBGC()

EnableDBGC enable database garbage collection.

type StorageRangeResult

type StorageRangeResult struct {
	Storage storageMap   `json:"storage"`
	NextKey *common.Hash `json:"nextKey"` // nil if Storage includes the last key in the trie.
}

StorageRangeResult is the result of a debug_storageRangeAt API call.

type TxGenAPI added in v1.0.0

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

func NewTxGenAPI added in v1.0.0

func NewTxGenAPI(eth *Ethereum) *TxGenAPI

func (*TxGenAPI) CalBlockAnalyst added in v1.0.0

func (txg *TxGenAPI) CalBlockAnalyst(ctx context.Context, beginBn, endBn uint64, interval uint64, resultPath string) ([]*AnalystEntity, error)

func (*TxGenAPI) CalRes added in v1.0.0

func (txg *TxGenAPI) CalRes(configPaths []string, output string, t int) error

CalRes, Integrate pressure test data, calculate pressure test results, including delay, tps, ttf, average interval, total number of receptions, total number of transmissions configPaths,Summary of pressure test data of each node output,Calculated pressure test result,file type:xlsx t,Average statistical time

func (*TxGenAPI) DeployContracts added in v1.0.0

func (txg *TxGenAPI) DeployContracts(prikey string, configPath string) error

func (*TxGenAPI) GetRes added in v1.0.0

func (txg *TxGenAPI) GetRes(resPath string) (*TxGenResData, error)

func (*TxGenAPI) Start added in v1.0.0

func (txg *TxGenAPI) Start(normalTx, evmTx, wasmTx uint, totalTxPer, activeTxPer, txFrequency, activeSender uint, sendingAmount uint64, accountPath string, start, end uint, waitAccountReceiptTime uint) error

Start, begin make tx ,Broadcast transactions directly through p2p, without entering the transactin pool normalTx, evmTx, wasmTx,The proportion of normal transactions and contract transactions sent out such as 1:1:1,this should send 1 normal transactions,1 evm transaction, 1 wasm transaction totalTxPer,How many transactions are sent at once activeTxPer,How many active transactions are sent at once, active tx per + no active tx per = totalTxPer txFrequency,every time(ms) to send totalTxPer of transactions activeSender,the amount of active accounts,this should not greater than total accounts sendingAmount,Send amount of normal transaction accountPath,Account configuration address start, end ,Start and end account max wait account receipt time,seconds.if not receive the account receipt ,will resend the tx

func (*TxGenAPI) Stop added in v1.0.0

func (txg *TxGenAPI) Stop(resPath string) error

func (*TxGenAPI) UpdateConfig added in v1.0.0

func (txg *TxGenAPI) UpdateConfig(configPath string) error

type TxGenContractConfig added in v1.0.0

type TxGenContractConfig struct {
	//CreateContracts
	DeployTxHash     string `json:"deploy_contract_tx_hash"`
	DeployGasLimit   uint64 `json:"deploy_gas_limit"`
	Type             string `json:"contracts_type"`
	Name             string `json:"name"`
	ContractsCode    string `json:"contracts_code"`
	ContractsAddress string `json:"contracts_address"`

	//CallContracts
	CallWeights uint                 `json:"call_weights"`
	CallKind    uint                 `json:"call_kind"`
	CallConfig  []ContractCallConfig `json:"call_config"`
}

type TxGenInput added in v1.0.0

type TxGenInput struct {
	Wasm []*TxGenContractConfig     `json:"wasm"`
	Evm  []*TxGenContractConfig     `json:"evm"`
	Tx   []*TxGenInputAccountConfig `json:"tx"`
}

type TxGenInputAccountConfig added in v1.0.0

type TxGenInputAccountConfig struct {
	Pri string `json:"private_key"`
	Add string `json:"address"`
}

type TxGenResData added in v1.0.0

type TxGenResData struct {
	Blocks      []BlockInfo `json:"blocks"`
	TotalTxSend uint64      `json:"total_tx_send"`
}

type TxMakeManger added in v1.0.0

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

func NewTxMakeManger added in v1.0.0

func NewTxMakeManger(tx, evm, wasm uint, totalTxPer, activeTxPer, txFrequency, activeSender uint, sendingAmount uint64, GetNonce func(addr common.Address) uint64, getCodeSize func(addr common.Address) int, accountPath string, start, end uint) (*TxMakeManger, error)

type ViewCountMap added in v1.0.0

type ViewCountMap map[uint64]uint64

func AnalystProduceTimeAndView added in v1.0.0

func AnalystProduceTimeAndView(beginNumber uint64, endNumber uint64, backend *EthAPIBackend) (uint64, uint64, [][]uint64, uint64, uint64, ViewCountMap, []uint64, uint64, error)

output parameter

diffTimestamp 				current epoch  produce block use time(ms)
diffTimestamp / diffNumber	Average block time(ms)
TopArray					The top 10 time-consuming blocks
TxCount						Total transactions
Tps							Tps
ViewCountMap	each view produce blocks
MissViewList	missing view
ViewBlockRate   view produce block rate

type WasmERC20Info added in v1.0.0

type WasmERC20Info struct {
	Method  []byte
	Address common.Address
	Amount  uint64
}

type WasmKeyValueAddrInfo added in v1.0.0

type WasmKeyValueAddrInfo struct {
	Method []byte
	Val    uint32
}

type WasmKeyValueInfo added in v1.0.0

type WasmKeyValueInfo struct {
	Method []byte
	Key    uint32
	Count  uint32
}

Directories

Path Synopsis
Package downloader contains the manual full chain synchronisation.
Package downloader contains the manual full chain synchronisation.
Package fetcher contains the block announcement based synchronisation.
Package fetcher contains the block announcement based synchronisation.
Package filters implements an ethereum filtering system for block, transactions and log events.
Package filters implements an ethereum filtering system for block, transactions and log events.
protocols
eth
Package tracers is a collection of JavaScript transaction tracers.
Package tracers is a collection of JavaScript transaction tracers.
internal/tracers
Package tracers contains the actual JavaScript tracer assets.
Package tracers contains the actual JavaScript tracer assets.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL