ethereummock

package
v0.7.1 Latest Latest
Warning

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

Go to latest
Published: Nov 23, 2022 License: AGPL-3.0 Imports: 24 Imported by: 0

README

This is a super simplified version of an ethereum node, written to support a simulation. Eventually it will have the same interfaces as a standard ethereum node and will be able to be swapped for one.

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func NewERC20ContractLibMock

func NewERC20ContractLibMock() erc20contractlib.ERC20ContractLib

NewERC20ContractLibMock is an implementation of the erc20contractlib.ERC20ContractLib

func NewMgmtContractLibMock

func NewMgmtContractLibMock() mgmtcontractlib.MgmtContractLib

func NewResolver

func NewResolver() db.BlockResolver

Types

type L1Network

type L1Network interface {
	// BroadcastBlock - send the block and the parent to make sure there are no gaps
	BroadcastBlock(b common.EncodedL1Block, p common.EncodedL1Block)
	BroadcastTx(tx *types.Transaction)
}

type MiningConfig

type MiningConfig struct {
	PowTime common.Latency
	LogFile string
}

type MockEthNetwork

type MockEthNetwork struct {
	CurrentNode *Node

	AllNodes []*Node

	Stats *stats.Stats
	// contains filtered or unexported fields
}

MockEthNetwork - models a full network including artificial random latencies This is the gateway through which the mock L1 nodes communicate with each other

func NewMockEthNetwork

func NewMockEthNetwork(avgBlockDuration time.Duration, avgLatency time.Duration, stats *stats.Stats) *MockEthNetwork

NewMockEthNetwork returns an instance of a configured L1 Network (no nodes)

func (*MockEthNetwork) BroadcastBlock

func (n *MockEthNetwork) BroadcastBlock(b common.EncodedL1Block, p common.EncodedL1Block)

BroadcastBlock broadcast a block to the l1 nodes

func (*MockEthNetwork) BroadcastTx

func (n *MockEthNetwork) BroadcastTx(tx *types.Transaction)

BroadcastTx Broadcasts the L1 tx containing the rollup to the L1 network

type Node

type Node struct {
	Network L1Network

	Resolver db.BlockResolver
	// contains filtered or unexported fields
}

func NewMiner

func NewMiner(
	id gethcommon.Address,
	cfg MiningConfig,
	network L1Network,
	statsCollector StatsCollector,
) *Node

func (*Node) AddClient

func (m *Node) AddClient(client NotifyNewBlock)

func (*Node) BalanceAt

func (m *Node) BalanceAt(gethcommon.Address, *big.Int) (*big.Int, error)

func (*Node) BlockByHash

func (m *Node) BlockByHash(id gethcommon.Hash) (*types.Block, error)

func (*Node) BlockByNumber

func (m *Node) BlockByNumber(n *big.Int) (*types.Block, error)

func (*Node) BlockListener

func (m *Node) BlockListener() (chan *types.Header, ethereum.Subscription)

BlockListener is not used in the mock

func (*Node) BlockNumber added in v0.7.0

func (m *Node) BlockNumber() (uint64, error)

func (*Node) BlocksBetween

func (m *Node) BlocksBetween(blockA *types.Block, blockB *types.Block) []*types.Block

func (*Node) BroadcastTx

func (m *Node) BroadcastTx(tx types.TxData)

func (*Node) CallContract

func (m *Node) CallContract(ethereum.CallMsg) ([]byte, error)

func (*Node) EthClient

func (m *Node) EthClient() *ethclient_ethereum.Client

func (*Node) FetchHeadBlock

func (m *Node) FetchHeadBlock() (*types.Block, bool)

func (*Node) Info

func (m *Node) Info() ethadapter.Info

func (*Node) IsBlockAncestor

func (m *Node) IsBlockAncestor(block *types.Block, proof common.L1RootHash) bool

func (*Node) Nonce

func (m *Node) Nonce(gethcommon.Address) (uint64, error)

func (*Node) P2PGossipTx

func (m *Node) P2PGossipTx(tx *types.Transaction)

P2PGossipTx receive rollups to publish from the linked aggregators

func (*Node) P2PReceiveBlock

func (m *Node) P2PReceiveBlock(b common.EncodedL1Block, p common.EncodedL1Block)

P2PReceiveBlock is called by counterparties when there is a block to broadcast All it does is drop the blocks in a channel for processing.

func (*Node) SendTransaction

func (m *Node) SendTransaction(tx *types.Transaction) error

func (*Node) Start

func (m *Node) Start()

Start runs an infinite loop that listens to the two block producing channels and processes them.

func (*Node) Stop

func (m *Node) Stop()

func (*Node) TransactionReceipt

func (m *Node) TransactionReceipt(_ gethcommon.Hash) (*types.Receipt, error)

type NotifyNewBlock

type NotifyNewBlock interface {
	MockedNewHead(b common.EncodedL1Block, p common.EncodedL1Block)
	MockedNewFork(b []common.EncodedL1Block)
}

type StatsCollector

type StatsCollector interface {
	// L1Reorg registers when a miner has to process a reorg (a winning block from a fork)
	L1Reorg(id gethcommon.Address)
}

type TxDB

type TxDB interface {
	Txs(block *types.Block) (map[common.TxHash]*types.Transaction, bool)
	AddTxs(*types.Block, map[common.TxHash]*types.Transaction)
}

func NewTxDB

func NewTxDB() TxDB

Jump to

Keyboard shortcuts

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