Documentation
¶
Index ¶
- Constants
- Variables
- func FinalizeWithdrawal(t *testing.T, cfg SystemConfig, l1Client *ethclient.Client, ...) *types.Receipt
- func InitParallel(t *testing.T)
- func ProveAndFinalizeWithdrawal(t *testing.T, version [32]byte, cfg SystemConfig, l1Client *ethclient.Client, ...) (*types.Receipt, *types.Receipt)
- func ProveWithdrawal(t *testing.T, version [32]byte, cfg SystemConfig, l1Client *ethclient.Client, ...) (withdrawals.ProvenWithdrawalParameters, *types.Receipt)
- func SendDepositTx(t *testing.T, cfg SystemConfig, l1Client *ethclient.Client, ...) *types.Receipt
- func SendL2Tx(t *testing.T, cfg SystemConfig, l2Client *ethclient.Client, ...) *types.Receipt
- func SendWithdrawal(t *testing.T, cfg SystemConfig, l2Client *ethclient.Client, ...) (*types.Transaction, *types.Receipt)
- type DepositContractConfig
- type DepositTxOpts
- type DepositTxOptsFn
- type EthInstance
- type FnTracer
- type GethInstance
- type KromaGeth
- func (d *KromaGeth) AddL2Block(ctx context.Context, txs ...*types.Transaction) (*eth.ExecutionPayload, error)
- func (d *KromaGeth) Close()
- func (d *KromaGeth) CreatePayloadAttributes(txs ...*types.Transaction) (*eth.PayloadAttributes, error)
- func (d *KromaGeth) StartBlockBuilding(ctx context.Context, attrs *eth.PayloadAttributes) (*eth.ForkchoiceUpdatedResult, error)
- type System
- type SystemConfig
- func (cfg SystemConfig) DepositValidatorPool(l1Client *ethclient.Client, priv *ecdsa.PrivateKey, value *big.Int) error
- func (cfg SystemConfig) L1ChainIDBig() *big.Int
- func (cfg SystemConfig) L2ChainIDBig() *big.Int
- func (cfg SystemConfig) SendTransferTx(l2Seq *ethclient.Client, l2Sync *ethclient.Client) (*types.Receipt, error)
- func (cfg SystemConfig) Start(t *testing.T, _opts ...SystemConfigOption) (*System, error)
- type SystemConfigOption
- type SystemConfigOptions
- type TxOpts
- type TxOptsFn
- type WSOrHTTPEndpoint
- type WithdrawalTxOpts
- type WithdrawalTxOptsFn
Constants ¶
const ( DummyHashSepolia = "0xaf01bc158f9b35867aea1517e84cf67eedc6a397c0df380b4b139eb570ddb2fc" DummyHashDev = "0xa1235b834d6f1f78f78bc4db856fbc49302cce2c519921347600693021e087f7" )
Variables ¶
var ( // ErrForkChoiceUpdatedNotValid is returned when a forkChoiceUpdated returns a status other than Valid ErrForkChoiceUpdatedNotValid = errors.New("forkChoiceUpdated status was not valid") // ErrNewPayloadNotValid is returned when a newPayload call returns a status other than Valid, indicating the new block is invalid ErrNewPayloadNotValid = errors.New("newPayload status was not valid") )
Functions ¶
func FinalizeWithdrawal ¶
func FinalizeWithdrawal(t *testing.T, cfg SystemConfig, l1Client *ethclient.Client, privKey *ecdsa.PrivateKey, withdrawalProofReceipt *types.Receipt, params withdrawals.ProvenWithdrawalParameters) *types.Receipt
func InitParallel ¶
func ProveAndFinalizeWithdrawal ¶
func ProveAndFinalizeWithdrawal(t *testing.T, version [32]byte, cfg SystemConfig, l1Client *ethclient.Client, l2Node EthInstance, ethPrivKey *ecdsa.PrivateKey, l2WithdrawalReceipt *types.Receipt) (*types.Receipt, *types.Receipt)
func ProveWithdrawal ¶
func ProveWithdrawal(t *testing.T, version [32]byte, cfg SystemConfig, l1Client *ethclient.Client, l2Node EthInstance, ethPrivKey *ecdsa.PrivateKey, l2WithdrawalReceipt *types.Receipt) (withdrawals.ProvenWithdrawalParameters, *types.Receipt)
func SendDepositTx ¶
func SendDepositTx(t *testing.T, cfg SystemConfig, l1Client *ethclient.Client, l2Client *ethclient.Client, l1Opts *bind.TransactOpts, applyL2Opts DepositTxOptsFn) *types.Receipt
SendDepositTx creates and sends a deposit transaction. The L1 transaction, including sender, is configured by the l1Opts param. The L2 transaction options can be configured by modifying the DepositTxOps value supplied to applyL2Opts Will verify that the transaction is included with the expected status on L1 and L2 Returns the receipt of the L2 transaction
func SendL2Tx ¶
func SendL2Tx(t *testing.T, cfg SystemConfig, l2Client *ethclient.Client, privKey *ecdsa.PrivateKey, applyTxOpts TxOptsFn) *types.Receipt
SendL2Tx creates and sends a transaction. The supplied privKey is used to specify the account to send from and the transaction is sent to the supplied l2Client Transaction options and expected status can be configured in the applyTxOpts function by modifying the supplied TxOpts Will verify that the transaction is included with the expected status on l2Client and any clients added to TxOpts.VerifyClients
func SendWithdrawal ¶
func SendWithdrawal(t *testing.T, cfg SystemConfig, l2Client *ethclient.Client, privKey *ecdsa.PrivateKey, applyOpts WithdrawalTxOptsFn) (*types.Transaction, *types.Receipt)
Types ¶
type DepositContractConfig ¶
type DepositTxOpts ¶
type DepositTxOptsFn ¶
type DepositTxOptsFn func(l2Opts *DepositTxOpts)
type EthInstance ¶
type EthInstance interface {
HTTPEndpoint() string
WSEndpoint() string
HTTPAuthEndpoint() string
WSAuthEndpoint() string
Close() error
}
EthInstance is either an in process Geth or external process exposing its endpoints over the network
type FnTracer ¶
type FnTracer struct {
OnNewL1HeadFn func(ctx context.Context, sig eth.L1BlockRef)
OnUnsafeL2PayloadFn func(ctx context.Context, from peer.ID, payload *eth.ExecutionPayload)
OnPublishL2PayloadFn func(ctx context.Context, payload *eth.ExecutionPayload)
}
func (*FnTracer) OnNewL1Head ¶
func (n *FnTracer) OnNewL1Head(ctx context.Context, sig eth.L1BlockRef)
func (*FnTracer) OnPublishL2Payload ¶
func (n *FnTracer) OnPublishL2Payload(ctx context.Context, payload *eth.ExecutionPayload)
func (*FnTracer) OnUnsafeL2Payload ¶
type GethInstance ¶
func (*GethInstance) Close ¶
func (gi *GethInstance) Close() error
func (*GethInstance) HTTPAuthEndpoint ¶
func (gi *GethInstance) HTTPAuthEndpoint() string
func (*GethInstance) HTTPEndpoint ¶
func (gi *GethInstance) HTTPEndpoint() string
func (*GethInstance) WSAuthEndpoint ¶
func (gi *GethInstance) WSAuthEndpoint() string
func (*GethInstance) WSEndpoint ¶
func (gi *GethInstance) WSEndpoint() string
type KromaGeth ¶
type KromaGeth struct {
L2Client *ethclient.Client
SystemConfig eth.SystemConfig
L1ChainConfig *params.ChainConfig
L2ChainConfig *params.ChainConfig
L1Head eth.BlockInfo
L2Head *eth.ExecutionPayload
// contains filtered or unexported fields
}
KromaGeth is an actor that functions as a l2 kroma-geth node It provides useful functions for advancing and querying the chain
func NewKromaGeth ¶
func (*KromaGeth) AddL2Block ¶
func (d *KromaGeth) AddL2Block(ctx context.Context, txs ...*types.Transaction) (*eth.ExecutionPayload, error)
AddL2Block Appends a new L2 block to the current chain including the specified transactions The L1Info transaction is automatically prepended to the created block
func (*KromaGeth) CreatePayloadAttributes ¶
func (d *KromaGeth) CreatePayloadAttributes(txs ...*types.Transaction) (*eth.PayloadAttributes, error)
CreatePayloadAttributes creates a valid PayloadAttributes containing a L1Info deposit transaction followed by the supplied transactions.
func (*KromaGeth) StartBlockBuilding ¶
func (d *KromaGeth) StartBlockBuilding(ctx context.Context, attrs *eth.PayloadAttributes) (*eth.ForkchoiceUpdatedResult, error)
StartBlockBuilding begins block building for the specified PayloadAttributes by sending a engine_forkChoiceUpdated call. The current L2Head is used as the parent of the new block. ErrForkChoiceUpdatedNotValid is returned if the forkChoiceUpdate call returns a status other than valid.
type System ¶
type System struct {
RollupConfig *rollup.Config
L2GenesisCfg *core.Genesis
// Connections to running nodes
EthInstances map[string]EthInstance
Clients map[string]*ethclient.Client
RawClients map[string]*rpc.Client
RollupNodes map[string]*rollupNode.OpNode
Validator *validator.Validator
Challenger *validator.Validator
BatchSubmitter *bss.BatchSubmitter
Mocknet mocknet.Mocknet
// TimeTravelClock is nil unless SystemConfig.SupportL1TimeTravel was set to true
// It provides access to the clock instance used by the L1 node. Calling TimeTravelClock.AdvanceBy
// allows tests to quickly time travel L1 into the future.
// Note that this time travel may occur in a single block, creating a very large difference in the Time
// on sequential blocks.
TimeTravelClock *clock.AdvancingClock
// contains filtered or unexported fields
}
func (*System) NodeEndpoint ¶
type SystemConfig ¶
type SystemConfig struct {
Secrets *e2eutils.Secrets
L1InfoPredeployAddress common.Address
DeployConfig *genesis.DeployConfig
JWTFilePath string
JWTSecret [32]byte
Premine map[common.Address]*big.Int
Nodes map[string]*rollupNode.Config // Per node config. Don't use populate rollup.Config
Loggers map[string]log.Logger
GethOptions map[string][]geth.GethOption
ValidatorLogger log.Logger
BatcherLogger log.Logger
// map of outbound connections to other nodes. Node names prefixed with "~" are unconnected but linked.
// A nil map disables P2P completely.
// Any node name not in the topology will not have p2p enabled.
P2PTopology map[string][]string
// Enables req-resp sync in the P2P nodes
P2PReqRespSync bool
// If the validator can make outputs for L2 blocks derived from L1 blocks which are not finalized on L1 yet.
NonFinalizedOutputs bool
// Explicitly disable batcher, for tests that rely on unsafe L2 payloads
DisableBatcher bool
// [Kroma: START]
// TODO(0xHansLee): temporal flag for malicious validator. If it is set true, the validator acts as a malicious one
EnableMaliciousValidator bool
EnableGuardian bool
// Target L1 tx size for the batcher transactions
BatcherTargetL1TxSizeBytes uint64
// SupportL1TimeTravel determines if the L1 node supports quickly skipping forward in time
SupportL1TimeTravel bool
}
func DefaultSystemConfig ¶
func DefaultSystemConfig(t *testing.T) SystemConfig
func (SystemConfig) DepositValidatorPool ¶
func (cfg SystemConfig) DepositValidatorPool(l1Client *ethclient.Client, priv *ecdsa.PrivateKey, value *big.Int) error
func (SystemConfig) L1ChainIDBig ¶
func (cfg SystemConfig) L1ChainIDBig() *big.Int
func (SystemConfig) L2ChainIDBig ¶
func (cfg SystemConfig) L2ChainIDBig() *big.Int
func (SystemConfig) SendTransferTx ¶
func (SystemConfig) Start ¶
func (cfg SystemConfig) Start(t *testing.T, _opts ...SystemConfigOption) (*System, error)
type SystemConfigOption ¶
type SystemConfigOption struct {
// contains filtered or unexported fields
}
type SystemConfigOptions ¶
type SystemConfigOptions struct {
// contains filtered or unexported fields
}
func NewSystemConfigOptions ¶
func NewSystemConfigOptions(_opts []SystemConfigOption) (SystemConfigOptions, error)
func (*SystemConfigOptions) Get ¶
func (s *SystemConfigOptions) Get(key, role string) (systemConfigHook, bool)
type TxOpts ¶
type TxOpts struct {
ToAddr *common.Address
Nonce uint64
Value *big.Int
Gas uint64
GasTipCap *big.Int
GasFeeCap *big.Int
Data []byte
ExpectedStatus uint64
VerifyClients []*ethclient.Client
}
func (*TxOpts) VerifyOnClients ¶
VerifyOnClients adds additional l2 clients that should sync the block the tx is included in Checks that the receipt received from these clients is equal to the receipt received from the sequencer
type WSOrHTTPEndpoint ¶
type WithdrawalTxOpts ¶
type WithdrawalTxOpts struct {
ToAddr *common.Address
Nonce uint64
Value *big.Int
Gas uint64
Data []byte
ExpectedStatus uint64
VerifyClients []*ethclient.Client
}
func (*WithdrawalTxOpts) VerifyOnClients ¶
func (o *WithdrawalTxOpts) VerifyOnClients(clients ...*ethclient.Client)
VerifyOnClients adds additional l2 clients that should sync the block the tx is included in Checks that the receipt received from these clients is equal to the receipt received from the sequencer
type WithdrawalTxOptsFn ¶
type WithdrawalTxOptsFn func(opts *WithdrawalTxOpts)