Documentation
¶
Overview ¶
Package dsl provides DSL (domain specific language) to interact with a devstack system.
Each component in the devstack has a DSL wrapper. The wrapper itself does not have any state, and may be recreated or shallow-copied.
Each DSL wrapper provides an Escape method, in case the DSL is not sufficient for a given use-case. The Escape method is a temporary compromise to allow more incremental development of and migration to the DSL. It should be avoided whenever possible and will be removed in the future.
Index ¶
- Constants
- func CalculateFjordL1Cost(ctx context.Context, client apis.EthClient, ...) (*big.Int, error)
- func CheckAll(t devtest.T, checks ...CheckFunc)
- func CheckForChainFork(ctx context.Context, networks []*L2Network, logger log.Logger) (func(bool) error, error)
- func CreateUnsignedTransactionFromSigned(signedTx *types.Transaction) (*types.Transaction, error)
- func FindSignedTransactionFromReceipt(ctx context.Context, client apis.EthClient, receipt *types.Receipt) (*types.Transaction, error)
- func MakeInvalidBlockNumber(msg suptypes.Message) suptypes.Message
- func MakeInvalidChainID(msg suptypes.Message) suptypes.Message
- func MakeInvalidLogIndex(msg suptypes.Message) suptypes.Message
- func MakeInvalidOrigin(msg suptypes.Message) suptypes.Message
- func MakeInvalidPayloadHash(msg suptypes.Message) suptypes.Message
- func MakeInvalidTimestamp(msg suptypes.Message) suptypes.Message
- func PrecomputeExecEventMessage(referencedMsg suptypes.Message, execChainID eth.ChainID, ...) suptypes.Message
- func ReadGasPriceOracleL1FeeAt(ctx context.Context, client apis.EthClient, gpo *bindings.GasPriceOracle, ...) (*big.Int, error)
- func ReadGasPriceOracleL1FeeUpperBoundAt(ctx context.Context, client apis.EthClient, gpo *bindings.GasPriceOracle, ...) (*big.Int, error)
- func RunOperatorFeeTest(t devtest.T, l2Chain *L2Network, l1EL *L1ELNode, funderL1, funderL2 *Funder)
- func SubmitExecForMessage(msg suptypes.Message, executor *EOA) *txplan.PlannedTx
- func ValidateL1FeeMatches(t devtest.T, calculatedFee, receiptFee *big.Int)
- func WithAllLocalUnsafeHeadsAdvancedBy(blocks uint64) func(cfg *VerifySyncStatusConfig)
- func WithMinRequiredL2Block(blockNum uint64) func(opts *safeHeadDbMatchOpts)
- type BlockRefResult
- type ChainBlockProvider
- type CheckFunc
- func InSyncFn(node1, node2 SyncStatusProvider, log log.Logger, ctx context.Context, ...) CheckFunc
- func LaggedFn(baseNode, refNode SyncStatusProvider, log log.Logger, ctx context.Context, ...) CheckFunc
- func MatchedFn(baseNode, refNode SyncStatusProvider, log log.Logger, ctx context.Context, ...) CheckFunc
- type Conductor
- func (c *Conductor) Escape() stack.Conductor
- func (c *Conductor) FetchClusterMembership() *consensus.ClusterMembership
- func (c *Conductor) FetchLeader() *consensus.ServerInfo
- func (c *Conductor) FetchPaused() bool
- func (c *Conductor) FetchSequencerHealthy() bool
- func (c *Conductor) IsLeader() bool
- func (c *Conductor) String() string
- func (c *Conductor) TransferLeadershipTo(targetLeaderInfo consensus.ServerInfo)
- type ConductorSet
- type Deposit
- type DepositEOA
- type ELNode
- type EOA
- func (u *EOA) Address() common.Address
- func (u *EOA) ApproveToken(tokenAddr common.Address, spender common.Address, amount eth.ETH)
- func (u *EOA) AsEL(el ELNode) *EOA
- func (u *EOA) ChainID() eth.ChainID
- func (u *EOA) DeployEventLogger() common.Address
- func (u *EOA) DeployWETH() common.Address
- func (u *EOA) GetBalance() eth.ETH
- func (u *EOA) GetTokenBalance(tokenAddr common.Address) eth.ETH
- func (u *EOA) Key() *Key
- func (u *EOA) PendingNonce() uint64
- func (u *EOA) Plan() txplan.Option
- func (u *EOA) PlanAuth(code common.Address) txplan.Option
- func (u *EOA) PlanTransfer(to common.Address, amount eth.ETH) txplan.Option
- func (u *EOA) PrepareExecTx(initMsg *InitMessage) (rawTx []byte, txHash common.Hash)
- func (u *EOA) PrepareSameTimestampInit(rng *rand.Rand, eventLogger common.Address, expectedBlockNum uint64, ...) *SameTimestampPair
- func (u *EOA) SendExecMessage(initMsg *InitMessage, opts ...ExecMessageOpt) *ExecMessage
- func (u *EOA) SendInitMessage(trigger *txintent.InitTrigger) *InitMessage
- func (u *EOA) SendInvalidExecMessage(initMsg *InitMessage) *ExecMessage
- func (u *EOA) SendPackedExecMessages(dependOn *txintent.IntentTx[*txintent.MultiTrigger, *txintent.InteropOutput]) (*txintent.IntentTx[*txintent.MultiTrigger, *txintent.InteropOutput], ...)
- func (u *EOA) SendPackedRandomInitMessages(rng *rand.Rand, eventLoggerAddress common.Address) (*txintent.IntentTx[*txintent.MultiTrigger, *txintent.InteropOutput], ...)
- func (u *EOA) SendRandomInitMessage(rng *rand.Rand, eventLoggerAddress common.Address, topicCount, dataLen int) *InitMessage
- func (u *EOA) String() string
- func (u *EOA) Transact(opts ...txplan.Option) *txplan.PlannedTx
- func (u *EOA) Transfer(to common.Address, amount eth.ETH) *txplan.PlannedTx
- func (u *EOA) VerifyBalanceAtLeast(v eth.ETH)
- func (u *EOA) VerifyBalanceExact(v eth.ETH)
- func (u *EOA) VerifyBalanceLessThan(v eth.ETH)
- func (u *EOA) VerifyTokenBalance(tokenAddr common.Address, expectedBalance eth.ETH)
- func (u *EOA) ViaDepositTx(l1 *EOA, l2EL *L2ELNode, l2Net *L2Network) *DepositEOA
- func (u *EOA) WaitForBalance(v eth.ETH)
- func (u *EOA) WaitForTokenBalance(tokenAddr common.Address, expectedBalance eth.ETH)
- type EcotoneFees
- type EcotoneFeesValidationResult
- type ExecMessage
- type ExecMessageOpt
- type Faucet
- type FjordFees
- type FjordFeesValidationResult
- type ForkchoiceUpdateResult
- func (r *ForkchoiceUpdateResult) IsForkchoiceUpdatedStatus(status eth.ExecutePayloadStatus) *ForkchoiceUpdateResult
- func (r *ForkchoiceUpdateResult) IsSyncing() *ForkchoiceUpdateResult
- func (r *ForkchoiceUpdateResult) IsValid() *ForkchoiceUpdateResult
- func (r *ForkchoiceUpdateResult) ResultAllSyncing()
- func (r *ForkchoiceUpdateResult) Retry(attempts int) *ForkchoiceUpdateResult
- func (r *ForkchoiceUpdateResult) WaitUntilValid(attempts int) *ForkchoiceUpdateResult
- type Funder
- type HDWallet
- type HeaderProvider
- type InitMessage
- type InvalidMsgFn
- type Key
- type L1CLNode
- type L1ELNode
- func (el *L1ELNode) BlockRefByLabel(label eth.BlockLabel) eth.L1BlockRef
- func (el *L1ELNode) BlockRefByNumber(number uint64) eth.L1BlockRef
- func (el L1ELNode) ChainID() eth.ChainID
- func (el *L1ELNode) Escape() stack.L1ELNode
- func (el *L1ELNode) EstimateBlockTime() time.Duration
- func (el *L1ELNode) EthClient() apis.EthClient
- func (el L1ELNode) IsCanonical(ref eth.BlockID) bool
- func (el *L1ELNode) ReorgTriggered(target eth.L1BlockRef, attempts int)
- func (el *L1ELNode) ReorgTriggeredFn(target eth.L1BlockRef, attempts int) CheckFunc
- func (el *L1ELNode) String() string
- func (el *L1ELNode) TransactionTimeout() time.Duration
- func (el L1ELNode) WaitForBlock() eth.BlockRef
- func (el L1ELNode) WaitForBlockNumber(targetBlock uint64) eth.BlockInfo
- func (el L1ELNode) WaitForFinalization() eth.BlockRef
- func (el L1ELNode) WaitForLabel(label eth.BlockLabel, predicate func(eth.BlockInfo) (bool, error)) eth.BlockInfo
- func (el L1ELNode) WaitForLabelRef(label eth.BlockLabel, predicate func(eth.BlockInfo) (bool, error)) eth.BlockRef
- func (el L1ELNode) WaitForOnline()
- func (el L1ELNode) WaitForTime(timestamp uint64) eth.BlockRef
- func (el L1ELNode) WaitForUnsafe(predicate func(eth.BlockInfo) (bool, error)) eth.BlockInfo
- func (el L1ELNode) WaitForUnsafeRef(predicate func(eth.BlockInfo) (bool, error)) eth.BlockRef
- type L1Network
- func (n *L1Network) ChainID() eth.ChainID
- func (n *L1Network) Escape() stack.L1Network
- func (n *L1Network) PrimaryCL() *L1CLNode
- func (n *L1Network) PrimaryEL() *L1ELNode
- func (n *L1Network) PrintChain()
- func (n *L1Network) String() string
- func (n *L1Network) WaitForBlock() eth.BlockRef
- func (n *L1Network) WaitForFinalization() eth.BlockRef
- func (n *L1Network) WaitForOnline()
- type L2Batcher
- type L2CLNode
- func (cl *L2CLNode) Advanced(lvl types.SafetyLevel, delta uint64, attempts int)
- func (cl *L2CLNode) AdvancedFn(lvl types.SafetyLevel, delta uint64, attempts int) CheckFunc
- func (cl *L2CLNode) AdvancedUnsafe(delta uint64, attempts int)
- func (cl *L2CLNode) AppendUnsafePayloadUntilTip(verEL, seqEL *L2ELNode, maxAttempts int)
- func (cl *L2CLNode) AwaitMinL1Processed(minL1 uint64)
- func (cl *L2CLNode) ChainBlockID(chainID eth.ChainID, number uint64) (eth.BlockID, error)
- func (cl *L2CLNode) ChainID() eth.ChainID
- func (cl *L2CLNode) ChainSyncStatus(chainID eth.ChainID, lvl types.SafetyLevel) eth.BlockID
- func (cl *L2CLNode) ConnectPeer(peer *L2CLNode)
- func (cl *L2CLNode) CurrentL1MatchedFn(refNode *L2CLNode, attempts int) CheckFunc
- func (cl *L2CLNode) DisconnectPeer(peer *L2CLNode)
- func (cl *L2CLNode) Escape() stack.L2CLNode
- func (cl *L2CLNode) HeadBlockRef(lvl types.SafetyLevel) eth.L2BlockRef
- func (cl *L2CLNode) InSync(other SyncStatusProvider, lvl types.SafetyLevel, attempts int)
- func (cl *L2CLNode) InSyncFn(other SyncStatusProvider, lvl types.SafetyLevel, attempts int) CheckFunc
- func (cl *L2CLNode) IsP2PConnected(peer *L2CLNode)
- func (cl *L2CLNode) Lagged(refNode SyncStatusProvider, lvl types.SafetyLevel, attempts int, ...)
- func (cl *L2CLNode) LaggedFn(refNode SyncStatusProvider, lvl types.SafetyLevel, attempts int, ...) CheckFunc
- func (cl *L2CLNode) LocalGameInputs(agreedBlock, claimBlock uint64) *utils.LocalGameInputs
- func (cl *L2CLNode) ManagePeer(peer *L2CLNode)
- func (cl *L2CLNode) Matched(refNode SyncStatusProvider, lvl types.SafetyLevel, attempts int)
- func (cl *L2CLNode) MatchedFn(refNode SyncStatusProvider, lvl types.SafetyLevel, attempts int) CheckFunc
- func (cl *L2CLNode) MatchedUnsafe(refNode SyncStatusProvider, attempts int)
- func (cl *L2CLNode) Name() string
- func (cl *L2CLNode) NotAdvanced(lvl types.SafetyLevel, attempts int)
- func (cl *L2CLNode) NotAdvancedFn(lvl types.SafetyLevel, attempts int) CheckFunc
- func (cl *L2CLNode) NotAdvancedUnsafe(attempts int)
- func (cl *L2CLNode) PeerInfo() *apis.PeerInfo
- func (cl *L2CLNode) Peers() *apis.PeerDump
- func (cl *L2CLNode) PostUnsafePayload(payload *eth.ExecutionPayloadEnvelope)
- func (cl *L2CLNode) Reached(lvl types.SafetyLevel, target uint64, attempts int)
- func (cl *L2CLNode) ReachedFn(lvl types.SafetyLevel, target uint64, attempts int) CheckFunc
- func (cl *L2CLNode) ReachedRef(lvl types.SafetyLevel, target eth.BlockID, attempts int)
- func (cl *L2CLNode) ReachedRefFn(lvl types.SafetyLevel, target eth.BlockID, attempts int) CheckFunc
- func (cl *L2CLNode) ReachedUnsafe(target uint64, attempts int)
- func (cl *L2CLNode) Reset(lvl types.SafetyLevel, target eth.L2BlockRef)
- func (cl *L2CLNode) Rewinded(lvl types.SafetyLevel, delta uint64, attempts int)
- func (cl *L2CLNode) RewindedFn(lvl types.SafetyLevel, delta uint64, attempts int) CheckFunc
- func (cl *L2CLNode) SafeHead() *BlockRefResult
- func (cl *L2CLNode) SafeL2BlockRef() eth.L2BlockRef
- func (cl *L2CLNode) SetSequencerRecoverMode(b bool) error
- func (cl *L2CLNode) SignalTarget(refNode *L2ELNode, targetNum uint64)
- func (cl *L2CLNode) Start()
- func (cl *L2CLNode) StartSequencer()
- func (cl *L2CLNode) Stop()
- func (cl *L2CLNode) StopSequencer() common.Hash
- func (cl *L2CLNode) String() string
- func (cl *L2CLNode) SyncStatus() *eth.SyncStatus
- func (cl *L2CLNode) UnsafeHead() *BlockRefResult
- func (cl *L2CLNode) VerifySafeHeadDatabaseMatches(sourceOfTruth *L2CLNode, args ...func(opts *safeHeadDbMatchOpts))
- func (cl *L2CLNode) WaitForNonZeroUnsafeTime(ctx context.Context) *eth.SyncStatus
- func (cl *L2CLNode) WaitForPeerDisconnected(peer *L2CLNode)
- func (cl *L2CLNode) WaitForStall(lvl types.SafetyLevel)
- type L2Challenger
- type L2ELNode
- func (el *L2ELNode) Advanced(label eth.BlockLabel, block uint64)
- func (el *L2ELNode) AdvancedFn(label eth.BlockLabel, block uint64) CheckFunc
- func (el *L2ELNode) AssertExecMessageNotInBlock(execMessage *ExecMessage)
- func (el *L2ELNode) AssertTxInBlock(blockNumber uint64, txHash common.Hash)
- func (el *L2ELNode) AssertTxNotInBlock(blockNumber uint64, txHash common.Hash)
- func (el *L2ELNode) BlockRefByHash(hash common.Hash) eth.L2BlockRef
- func (el *L2ELNode) BlockRefByLabel(label eth.BlockLabel) eth.L2BlockRef
- func (el *L2ELNode) BlockRefByNumber(num uint64) eth.L2BlockRef
- func (el *L2ELNode) ChainBlockID(chainID eth.ChainID, number uint64) (eth.BlockID, error)
- func (el L2ELNode) ChainID() eth.ChainID
- func (el *L2ELNode) ChainSyncStatus(chainID eth.ChainID, lvl suptypes.SafetyLevel) eth.BlockID
- func (el *L2ELNode) DisconnectPeerWith(peer *L2ELNode)
- func (el *L2ELNode) Escape() stack.L2ELNode
- func (el *L2ELNode) EthClient() apis.EthClient
- func (el *L2ELNode) FinalizedHead() *BlockRefResult
- func (el *L2ELNode) FinishedELSync(refNode *L2ELNode, unsafe, safe, finalized uint64)
- func (el *L2ELNode) ForkchoiceUpdate(refNode *L2ELNode, unsafe, safe, finalized uint64, attr *eth.PayloadAttributes) *ForkchoiceUpdateResult
- func (el *L2ELNode) ForkchoiceUpdateRaw(unsafe, safe, finalized common.Hash, attr *eth.PayloadAttributes) *ForkchoiceUpdateResult
- func (el *L2ELNode) InSync(other SyncStatusProvider, lvl suptypes.SafetyLevel, attempts int)
- func (el *L2ELNode) InSyncFn(other SyncStatusProvider, lvl suptypes.SafetyLevel, attempts int) CheckFunc
- func (el L2ELNode) IsCanonical(ref eth.BlockID) bool
- func (el *L2ELNode) L1OriginReachedFn(label eth.BlockLabel, l1OriginTarget uint64, attempts int) CheckFunc
- func (el *L2ELNode) Matched(refNode SyncStatusProvider, lvl suptypes.SafetyLevel, attempts int)
- func (el *L2ELNode) MatchedFn(refNode SyncStatusProvider, lvl suptypes.SafetyLevel, attempts int) CheckFunc
- func (el *L2ELNode) MatchedUnsafe(refNode SyncStatusProvider, attempts int)
- func (el *L2ELNode) NewPayload(refNode *L2ELNode, number uint64) *NewPayloadResult
- func (el *L2ELNode) NewPayloadRaw(payload *eth.ExecutionPayloadEnvelope) *NewPayloadResult
- func (el *L2ELNode) NotAdvanced(label eth.BlockLabel, attempts int)
- func (el *L2ELNode) NotAdvancedFn(label eth.BlockLabel, attempts int) CheckFunc
- func (el *L2ELNode) NotAdvancedUnsafe(attempts int)
- func (el *L2ELNode) PayloadByNumber(number uint64) *eth.ExecutionPayloadEnvelope
- func (el *L2ELNode) PeerWith(peer *L2ELNode)
- func (el *L2ELNode) Reached(label eth.BlockLabel, block uint64, attempts int)
- func (el *L2ELNode) ReachedFn(label eth.BlockLabel, target uint64, attempts int) CheckFunc
- func (el *L2ELNode) ReorgExact(target eth.L2BlockRef, attempts int)
- func (el *L2ELNode) ReorgExactFn(target eth.L2BlockRef, attempts int) CheckFunc
- func (el *L2ELNode) ReorgTriggered(target eth.L2BlockRef, attempts int)
- func (el *L2ELNode) ReorgTriggeredFn(target eth.L2BlockRef, attempts int) CheckFunc
- func (el *L2ELNode) SafeHead() *BlockRefResult
- func (el *L2ELNode) Start()
- func (el *L2ELNode) Stop()
- func (el *L2ELNode) String() string
- func (el *L2ELNode) TransactionTimeout() time.Duration
- func (el *L2ELNode) UnsafeHead() *BlockRefResult
- func (el *L2ELNode) VerifyWithdrawalHashChangedIn(blockHash common.Hash)
- func (el L2ELNode) WaitForBlock() eth.BlockRef
- func (el L2ELNode) WaitForBlockNumber(targetBlock uint64) eth.BlockInfo
- func (el L2ELNode) WaitForFinalization() eth.BlockRef
- func (el L2ELNode) WaitForLabel(label eth.BlockLabel, predicate func(eth.BlockInfo) (bool, error)) eth.BlockInfo
- func (el L2ELNode) WaitForLabelRef(label eth.BlockLabel, predicate func(eth.BlockInfo) (bool, error)) eth.BlockRef
- func (el L2ELNode) WaitForOnline()
- func (el *L2ELNode) WaitForPendingNonceMatch(account common.Address, nonce uint64, attempts int, duration time.Duration)
- func (el *L2ELNode) WaitForPendingNonceMatchFn(account common.Address, nonce uint64, attempts int, duration time.Duration) CheckFunc
- func (el *L2ELNode) WaitForReceipt(txHash common.Hash) *types.Receipt
- func (el L2ELNode) WaitForTime(timestamp uint64) eth.BlockRef
- func (el L2ELNode) WaitForUnsafe(predicate func(eth.BlockInfo) (bool, error)) eth.BlockInfo
- func (el L2ELNode) WaitForUnsafeRef(predicate func(eth.BlockInfo) (bool, error)) eth.BlockRef
- func (el *L2ELNode) WaitL1OriginHash(label eth.BlockLabel, target eth.BlockID, attempts int)
- func (el *L2ELNode) WaitL1OriginReached(label eth.BlockLabel, l1OriginTarget uint64, attempts int)
- type L2Network
- func (n *L2Network) ArchiveEL() *L2ELNode
- func (n *L2Network) AwaitActivation(t devtest.T, forkName rollup.ForkName) eth.BlockID
- func (n *L2Network) CatchUpTo(o *L2Network)
- func (n *L2Network) ChainID() eth.ChainID
- func (n *L2Network) DepositContractAddr() common.Address
- func (n *L2Network) DeriveData(blocks int) (channels []derive.ChannelID, channelFrames map[derive.ChannelID][]derive.Frame, ...)
- func (n *L2Network) DisputeGameFactoryProxyAddr() common.Address
- func (n *L2Network) Escape() stack.L2Network
- func (n *L2Network) IsActivated(timestamp uint64) bool
- func (n *L2Network) IsForkActive(fork forks.Name) bool
- func (n *L2Network) IsForkActiveAt(forkName forks.Name, timestamp uint64) bool
- func (n *L2Network) L2ELNodes() []*L2ELNode
- func (n *L2Network) LatestBlockBeforeTimestamp(t devtest.T, timestamp uint64) eth.BlockRef
- func (n *L2Network) PrimaryCL() *L2CLNode
- func (n *L2Network) PrimaryEL() *L2ELNode
- func (n *L2Network) PrimaryL1EL() *L1ELNode
- func (n *L2Network) PrintChain()
- func (n *L2Network) PublicRPC() *L2ELNode
- func (n *L2Network) String() string
- func (n *L2Network) TimestampForBlockNum(blockNum uint64) uint64
- func (n *L2Network) WaitForBlock() eth.BlockRef
- type L2Proposer
- type MultiClient
- type NewPayloadResult
- type OPRBuilderNode
- type OPRBuilderNodeSet
- type OperatorFee
- func (of *OperatorFee) CheckCompatibility() bool
- func (of *OperatorFee) GetSystemOwner() *EOA
- func (of *OperatorFee) RestoreOriginalConfig()
- func (of *OperatorFee) SetOperatorFee(scalar uint32, constant uint64)
- func (of *OperatorFee) ValidateTransactionFees(from *EOA, to *EOA, amount *big.Int, expectedScalar uint32, ...) OperatorFeeValidationResult
- func (of *OperatorFee) VerifyL2Config(expectedScalar uint32, expectedConstant uint64)
- func (of *OperatorFee) WaitForL2Sync(expectedScalar uint32, expectedConstant uint64)
- func (of *OperatorFee) WaitForL2SyncWithCurrentL1State()
- type OperatorFeeValidationResult
- type ProvenWithdrawalParameters
- type RollupBoostNode
- type RollupBoostNodesSet
- type SameTimestampPair
- type StandardBridge
- func (b *StandardBridge) CreateL2Token(l1TokenAddr common.Address, name string, symbol string, from *EOA) common.Address
- func (b *StandardBridge) Deposit(amount eth.ETH, from *EOA) Deposit
- func (b *StandardBridge) DisputeGameFinalityDelay() time.Duration
- func (b *StandardBridge) ERC20Deposit(l1TokenAddr common.Address, l2TokenAddr common.Address, amount eth.ETH, ...) *Deposit
- func (b *StandardBridge) GameResolutionDelay() time.Duration
- func (b *StandardBridge) InitiateWithdrawal(amount eth.ETH, from *EOA) *Withdrawal
- func (b *StandardBridge) PortalVersion() string
- func (b *StandardBridge) RespectedGameType() uint32
- func (b *StandardBridge) UsesSuperRoots() bool
- func (b *StandardBridge) VerifyRespectedGameType(expected gameTypes.GameType)
- func (b *StandardBridge) WithdrawalDelay() time.Duration
- type Supernode
- func (s *Supernode) AssertBackfillCovers(depth time.Duration, blockTime uint64, chains ...eth.ChainID)
- func (s *Supernode) AssertSuperRootAtTimestamp(l2SequenceNumber uint64, rootClaim common.Hash)
- func (s *Supernode) AwaitBackfillAttempts(minAttempts int32)
- func (s *Supernode) AwaitBackfillCompleted()
- func (s *Supernode) AwaitValidatedTimestamp(timestamp uint64)
- func (s *Supernode) BackfillAttempts() int32
- func (s *Supernode) EnsureInteropPaused(clA, clB *L2CLNode, pauseOffset uint64) uint64
- func (s *Supernode) Escape() stack.Supernode
- func (s *Supernode) Name() string
- func (s *Supernode) PauseInterop(ts uint64)
- func (s *Supernode) QueryAPI() apis.SupernodeQueryAPI
- func (s *Supernode) RestartInterop(wipeLogsDBs bool)
- func (s *Supernode) ResumeInterop()
- func (s *Supernode) String() string
- func (s *Supernode) SuperRootAtTimestamp(timestamp uint64) eth.SuperRootAtTimestampResponse
- type Supervisor
- func (s *Supervisor) AddManagedL2CL(cl *L2CLNode)
- func (s *Supervisor) AdvancedSafeHead(chainID eth.ChainID, delta uint64, attempts int)
- func (s *Supervisor) AwaitMinCrossSafeTimestamp(timestamp uint64)
- func (s *Supervisor) AwaitMinL1(minL1 uint64)
- func (s *Supervisor) ChainSyncStatus(chainID eth.ChainID, lvl types.SafetyLevel) eth.BlockID
- func (s *Supervisor) Escape() stack.Supervisor
- func (s *Supervisor) FetchSuperRootAtTimestamp(timestamp uint64) eth.SuperRootResponse
- func (s *Supervisor) FetchSyncStatus() eth.SupervisorSyncStatus
- func (s *Supervisor) L2HeadBlockID(chainID eth.ChainID, lvl types.SafetyLevel) eth.BlockID
- func (s *Supervisor) SafeBlockID(chainID eth.ChainID) eth.BlockID
- func (s *Supervisor) Start()
- func (s *Supervisor) Stop()
- func (s *Supervisor) String() string
- func (s *Supervisor) VerifySyncStatus(opts ...func(config *VerifySyncStatusConfig))
- func (s *Supervisor) WaitForL2HeadToAdvance(chainID eth.ChainID, delta uint64, lvl types.SafetyLevel, attempts int)
- func (s *Supervisor) WaitForL2HeadToAdvanceTo(chainID eth.ChainID, lvl types.SafetyLevel, blockID eth.BlockID)
- func (s *Supervisor) WaitForUnsafeHeadToAdvance(chainID eth.ChainID, delta uint64)
- type SyncStatusProvider
- type SyncTester
- type TestSequencer
- func (s *TestSequencer) Escape() stack.TestSequencer
- func (s *TestSequencer) SequenceBlock(t devtest.T, chainID eth.ChainID, parent common.Hash)
- func (s *TestSequencer) SequenceBlockWithTxs(t devtest.T, chainID eth.ChainID, parent common.Hash, rawTxs [][]byte)
- func (s *TestSequencer) String() string
- type VaultBalances
- type VerifySyncStatusConfig
- type Withdrawal
- func (w *Withdrawal) Finalize(user *EOA)
- func (w *Withdrawal) FinalizeGasCost() eth.ETH
- func (w *Withdrawal) InitiateBlockHash() common.Hash
- func (w *Withdrawal) InitiateGasCost() eth.ETH
- func (w *Withdrawal) Prove(user *EOA)
- func (w *Withdrawal) ProveGasCost() eth.ETH
- func (w *Withdrawal) WaitForDisputeGameResolved()
Constants ¶
const DefaultTimeout = 30 * time.Second
const (
SaltEnvVar = "DEVSTACK_KEYS_SALT"
)
Variables ¶
This section is empty.
Functions ¶
func CalculateFjordL1Cost ¶
func CalculateFjordL1Cost(ctx context.Context, client apis.EthClient, rollupCostData types.RollupCostData, blockHash common.Hash) (*big.Int, error)
CalculateFjordL1Cost calculates L1 cost using Fjord formula with block-specific L1 state
func CheckForChainFork ¶
func CheckForChainFork(ctx context.Context, networks []*L2Network, logger log.Logger) (func(bool) error, error)
CheckForChainFork checks that the L2 chain has not forked now, and returns a function that check again (to be called at the end of the test). An error is returned from this function (and the returned function) if a chain fork has been detected.
func CreateUnsignedTransactionFromSigned ¶
func CreateUnsignedTransactionFromSigned(signedTx *types.Transaction) (*types.Transaction, error)
CreateUnsignedTransactionFromSigned creates an unsigned transaction from a signed one
func FindSignedTransactionFromReceipt ¶
func FindSignedTransactionFromReceipt(ctx context.Context, client apis.EthClient, receipt *types.Receipt) (*types.Transaction, error)
FindSignedTransactionFromReceipt finds the signed transaction from a receipt and block
func MakeInvalidBlockNumber ¶
MakeInvalidBlockNumber returns a copy of the message with an incremented block number.
func MakeInvalidChainID ¶
MakeInvalidChainID returns a copy of the message with an incremented chain ID.
func MakeInvalidLogIndex ¶
MakeInvalidLogIndex returns a copy of the message with an incremented log index.
func MakeInvalidOrigin ¶
MakeInvalidOrigin returns a copy of the message with an incremented origin address.
func MakeInvalidPayloadHash ¶
MakeInvalidPayloadHash returns a copy of the message with an incremented payload hash.
func MakeInvalidTimestamp ¶
MakeInvalidTimestamp returns a copy of the message with an incremented timestamp.
func PrecomputeExecEventMessage ¶
func PrecomputeExecEventMessage( referencedMsg suptypes.Message, execChainID eth.ChainID, expectedBlockNum uint64, expectedLogIdx uint32, expectedTimestamp uint64, ) suptypes.Message
PrecomputeExecEventMessage computes the suptypes.Message that a CrossL2Inbox ExecutingMessage event will produce when executing the given referenced message. This allows precomputing exec-referencing-exec chains before any blocks are built.
func ReadGasPriceOracleL1FeeAt ¶
func ReadGasPriceOracleL1FeeAt(ctx context.Context, client apis.EthClient, gpo *bindings.GasPriceOracle, txUnsigned []byte, blockHash common.Hash) (*big.Int, error)
ReadGasPriceOracleL1FeeAt reads the L1 fee from GasPriceOracle for an unsigned transaction evaluated against a specific L2 block hash.
func ReadGasPriceOracleL1FeeUpperBoundAt ¶
func ReadGasPriceOracleL1FeeUpperBoundAt(ctx context.Context, client apis.EthClient, gpo *bindings.GasPriceOracle, txLen int, blockHash common.Hash) (*big.Int, error)
ReadGasPriceOracleL1FeeUpperBoundAt reads the L1 fee upper bound for a tx length pinned to a block hash.
func RunOperatorFeeTest ¶
func SubmitExecForMessage ¶
SubmitExecForMessage returns a planned exec transaction referencing the given message. Unlike SameTimestampPair.SubmitExecTo, this can reference any message including precomputed exec event messages for exec-referencing-exec chains.
func ValidateL1FeeMatches ¶
ValidateL1FeeMatches checks that the calculated L1 fee matches the actual receipt L1 fee
func WithAllLocalUnsafeHeadsAdvancedBy ¶
func WithAllLocalUnsafeHeadsAdvancedBy(blocks uint64) func(cfg *VerifySyncStatusConfig)
WithAllLocalUnsafeHeadsAdvancedBy verifies that the local unsafe head of every chain advances by at least the specified number of blocks compared to the value when VerifySyncStatus is called.
func WithMinRequiredL2Block ¶
func WithMinRequiredL2Block(blockNum uint64) func(opts *safeHeadDbMatchOpts)
Types ¶
type BlockRefResult ¶
type BlockRefResult struct {
T devtest.T
BlockRef eth.L2BlockRef
}
func (*BlockRefResult) IsGenesis ¶
func (r *BlockRefResult) IsGenesis() *BlockRefResult
func (*BlockRefResult) NumEqualTo ¶
func (r *BlockRefResult) NumEqualTo(num uint64) *BlockRefResult
type ChainBlockProvider ¶ added in v1.18.0
type CheckFunc ¶
type CheckFunc func() error
func InSyncFn ¶ added in v1.18.0
func InSyncFn(node1, node2 SyncStatusProvider, log log.Logger, ctx context.Context, lvl types.SafetyLevel, chainID eth.ChainID, attempts int) CheckFunc
InSyncFn checks that two peer nodes are converged on the same canonical chain at the given safety level. Before the retry loop it records the higher of the two starting heads as a catch-up target, so the slower node must reach at least where the faster node was when the check began. On each attempt it re-samples both heads live and considers the nodes in sync when:
- the slower head has reached the catch-up target; and
- the two head numbers differ by at most maxInSyncGap; and
- at the lower of the two heights, both nodes agree on the canonical block hash.
The catch-up target prevents falsely passing when both heads sit below a recent divergence point and happen to agree on shared pre-reorg history. Unlike MatchedFn this does not require both live heads to be equal in the same polling tick. Unlike a single-snapshot approach it tolerates either side reorging during the wait, since both heads are re-sampled every attempt.
func LaggedFn ¶
func LaggedFn(baseNode, refNode SyncStatusProvider, log log.Logger, ctx context.Context, lvl types.SafetyLevel, chainID eth.ChainID, attempts int, allowMatch bool) CheckFunc
LaggedFn returns a lambda that checks the baseNode head with given safety level is lagged with the refNode chain sync status provider Composable with other lambdas to wait in parallel
func MatchedFn ¶
func MatchedFn(baseNode, refNode SyncStatusProvider, log log.Logger, ctx context.Context, lvl types.SafetyLevel, chainID eth.ChainID, attempts int) CheckFunc
MatchedFn returns a lambda that checks the baseNode head with given safety level is matched with the refNode chain sync status provider Composable with other lambdas to wait in parallel
type Conductor ¶
type Conductor struct {
// contains filtered or unexported fields
}
func NewConductor ¶
func (*Conductor) FetchClusterMembership ¶
func (c *Conductor) FetchClusterMembership() *consensus.ClusterMembership
func (*Conductor) FetchLeader ¶
func (c *Conductor) FetchLeader() *consensus.ServerInfo
func (*Conductor) FetchPaused ¶
func (*Conductor) FetchSequencerHealthy ¶
func (*Conductor) TransferLeadershipTo ¶
func (c *Conductor) TransferLeadershipTo(targetLeaderInfo consensus.ServerInfo)
type ConductorSet ¶
type ConductorSet []*Conductor
func NewConductorSet ¶
func NewConductorSet(inner []stack.Conductor) ConductorSet
type DepositEOA ¶
type DepositEOA struct {
// contains filtered or unexported fields
}
DepositEOA wraps an L2 EOA so that transactions are sent via L1 deposit transactions rather than direct L2 transactions.
func (*DepositEOA) DepositTx ¶
DepositTx sends a transaction to the given address with the given calldata via OptimismPortal2 on L1. It waits for L2 derivation and returns the L2 receipt.
func (*DepositEOA) SendInitMessage ¶
func (d *DepositEOA) SendInitMessage(trigger *txintent.InitTrigger) *InitMessage
SendInitMessage sends an initiating message via an L1 deposit transaction. Returns an InitMessage with InteropOutput populated from the L2 receipt, fully compatible with SendExecMessage on the receiving chain.
func (*DepositEOA) SendRandomInitMessage ¶
func (d *DepositEOA) SendRandomInitMessage(rng *rand.Rand, eventLoggerAddress common.Address) *InitMessage
SendRandomInitMessage creates a random initiating message and sends it via L1 deposit.
type EOA ¶
type EOA struct {
// contains filtered or unexported fields
}
EOA is an Externally-Owned-Account: an account on a specific chain that is operated by a single private key.
func (*EOA) ApproveToken ¶
ApproveToken approves a spender to spend tokens on behalf of this EOA
func (*EOA) DeployEventLogger ¶
func (*EOA) DeployWETH ¶
func (*EOA) GetBalance ¶
Try to avoid using this method where possible, use the VerifyBalance* methods instead.
func (*EOA) GetTokenBalance ¶
GetTokenBalance returns the token balance for this EOA
func (*EOA) Key ¶
Key returns the cross-chain user identity/key, i.e. the user but detached it from the EL node.
func (*EOA) PendingNonce ¶
PendingNonce looks up the user nonce in the pending state.
func (*EOA) Plan ¶
Plan creates the default tx-planning options, to perform a transaction with this Key, against the connected EL node and its chain.
func (*EOA) PlanTransfer ¶
PlanTransfer creates the tx-plan options to perform a transfer of the given amount of ETH to the given account.
func (*EOA) PrepareExecTx ¶
func (u *EOA) PrepareExecTx(initMsg *InitMessage) (rawTx []byte, txHash common.Hash)
PrepareExecTx builds and signs an executing-message transaction referencing the given init message, but does NOT submit it. Returns the raw signed transaction bytes and tx hash. The raw bytes are suitable for injection via TestSequencer.SequenceBlockWithTxs, bypassing mempool filtering.
func (*EOA) PrepareSameTimestampInit ¶
func (u *EOA) PrepareSameTimestampInit( rng *rand.Rand, eventLogger common.Address, expectedBlockNum uint64, expectedLogIdx uint32, expectedTimestamp uint64, ) *SameTimestampPair
PrepareSameTimestampInit creates a precomputed init message for same-timestamp testing. The message identifier is computed for the expected block position (blockNum, logIdx, timestamp). This allows an exec message on another chain to reference this init before it's included.
Parameters:
- rng: random source for generating topics and data
- eventLogger: address of the EventLogger contract that will emit the init
- expectedBlockNum: the block number where this init is expected to be included
- expectedLogIdx: the log index within the block (0 if first log in block)
- expectedTimestamp: the timestamp of the block
func (*EOA) SendExecMessage ¶
func (u *EOA) SendExecMessage(initMsg *InitMessage, opts ...ExecMessageOpt) *ExecMessage
func (*EOA) SendInitMessage ¶
func (u *EOA) SendInitMessage(trigger *txintent.InitTrigger) *InitMessage
func (*EOA) SendInvalidExecMessage ¶
func (u *EOA) SendInvalidExecMessage(initMsg *InitMessage) *ExecMessage
SendInvalidExecMessage sends an executing message with an invalid identifier. The log index is incremented to reference a non-existent log.
func (*EOA) SendPackedExecMessages ¶
func (u *EOA) SendPackedExecMessages(dependOn *txintent.IntentTx[*txintent.MultiTrigger, *txintent.InteropOutput]) (*txintent.IntentTx[*txintent.MultiTrigger, *txintent.InteropOutput], *types.Receipt, error)
SendPackedExecMessages batches every message and validates them via a single multicall
func (*EOA) SendPackedRandomInitMessages ¶
func (u *EOA) SendPackedRandomInitMessages(rng *rand.Rand, eventLoggerAddress common.Address) (*txintent.IntentTx[*txintent.MultiTrigger, *txintent.InteropOutput], *types.Receipt, error)
SendPackedRandomInitMessages batches random messages and initiates them via a single multicall
func (*EOA) SendRandomInitMessage ¶
func (u *EOA) SendRandomInitMessage(rng *rand.Rand, eventLoggerAddress common.Address, topicCount, dataLen int) *InitMessage
SendRandomInitMessage creates and sends a random initiating message using the given event logger. topicCount specifies the number of topics (clamped to 1-4), dataLen specifies the opaque data length (minimum 1).
func (*EOA) Transact ¶
Transact plans and executes a tx. The success-state, as defined by the tx-plan options, is required. The resulting evaluated tx is returned.
func (*EOA) Transfer ¶
Transfer transfers the given amount of ETH to the given account, immediately.
func (*EOA) VerifyBalanceAtLeast ¶
VerifyBalanceAtLeast verifies balance >= v
func (*EOA) VerifyBalanceExact ¶
VerifyBalanceExact verifies balance == v
func (*EOA) VerifyBalanceLessThan ¶
VerifyBalanceLessThan verifies balance < v
func (*EOA) VerifyTokenBalance ¶
VerifyTokenBalance verifies the token balance matches expected amount
func (*EOA) ViaDepositTx ¶
func (u *EOA) ViaDepositTx(l1 *EOA, l2EL *L2ELNode, l2Net *L2Network) *DepositEOA
ViaDepositTx returns a DepositEOA that sends transactions through L1 deposit transactions. The caller must fund both the L1 and L2 identities.
func (*EOA) WaitForBalance ¶
type EcotoneFees ¶
type EcotoneFees struct {
// contains filtered or unexported fields
}
func NewEcotoneFees ¶
func NewEcotoneFees(t devtest.T, l2Network *L2Network) *EcotoneFees
func (*EcotoneFees) LogResults ¶
func (ef *EcotoneFees) LogResults(result EcotoneFeesValidationResult)
func (*EcotoneFees) ValidateTransaction ¶
func (ef *EcotoneFees) ValidateTransaction(from *EOA, to *EOA, amount *big.Int) EcotoneFeesValidationResult
type ExecMessage ¶
type ExecMessage struct {
Init *InitMessage
Tx *txintent.IntentTx[*txintent.ExecTrigger, *txintent.InteropOutput]
Receipt *types.Receipt
}
ExecMessage represents an executing message that has been sent and included on chain.
func (*ExecMessage) BlockHash ¶
func (m *ExecMessage) BlockHash() common.Hash
BlockHash returns the block hash from the receipt.
func (*ExecMessage) BlockID ¶
func (m *ExecMessage) BlockID() eth.BlockID
BlockID returns the block ID from the receipt.
func (*ExecMessage) BlockNumber ¶
func (m *ExecMessage) BlockNumber() *big.Int
BlockNumber returns the block number from the receipt.
func (*ExecMessage) String ¶
func (m *ExecMessage) String() string
String returns a human-readable representation of the ExecMessage.
func (*ExecMessage) TxHash ¶
func (m *ExecMessage) TxHash() common.Hash
TxHash returns the transaction hash from the receipt.
type ExecMessageOpt ¶
type ExecMessageOpt func(*execMessageConfig)
ExecMessageOpt configures the behavior of SendExecMessage.
func WithExpectRevert ¶
func WithExpectRevert() ExecMessageOpt
WithExpectRevert indicates the transaction should be included but revert. The receipt status is asserted to be failed, and the log-count check is skipped.
func WithFixedGasLimit ¶
func WithFixedGasLimit(limit uint64) ExecMessageOpt
WithFixedGasLimit sets a fixed gas limit, bypassing eth_estimateGas. Use when the transaction is expected to revert (estimation would fail).
type Faucet ¶
type Faucet struct {
// contains filtered or unexported fields
}
Faucet wraps a stack.Faucet interface for DSL operations. A Faucet is chain-specific. Note: Faucet wraps a stack component, to share faucet operations in kurtosis by hosting it as service, and prevent race-conditions with the account that sends out the faucet funds.
type FjordFees ¶
type FjordFees struct {
// contains filtered or unexported fields
}
func (*FjordFees) ValidateTransaction ¶
func (ff *FjordFees) ValidateTransaction(from *EOA, to *EOA, amount *big.Int) FjordFeesValidationResult
ValidateTransaction validates the transaction and returns the validation result
type FjordFeesValidationResult ¶
type FjordFeesValidationResult struct {
TransactionReceipt *types.Receipt
L1Fee *big.Int
L2Fee *big.Int
BaseFee *big.Int
PriorityFee *big.Int
TotalFee *big.Int
VaultBalances VaultBalances
WalletBalanceDiff *big.Int
TransferAmount *big.Int
FastLzSize uint64
EstimatedBrotliSize *big.Int
OperatorFee *big.Int
CoinbaseDiff *big.Int
}
type ForkchoiceUpdateResult ¶
type ForkchoiceUpdateResult struct {
T devtest.T
Refresh func()
Result *eth.ForkchoiceUpdatedResult
ValidCnt int // count for VALID response
SyncingCnt int // count for SYNCING response
InvalidCnt int // count for INVALID response
RefreshCnt int
Err error
}
func (*ForkchoiceUpdateResult) IsForkchoiceUpdatedStatus ¶
func (r *ForkchoiceUpdateResult) IsForkchoiceUpdatedStatus(status eth.ExecutePayloadStatus) *ForkchoiceUpdateResult
func (*ForkchoiceUpdateResult) IsSyncing ¶
func (r *ForkchoiceUpdateResult) IsSyncing() *ForkchoiceUpdateResult
func (*ForkchoiceUpdateResult) IsValid ¶
func (r *ForkchoiceUpdateResult) IsValid() *ForkchoiceUpdateResult
func (*ForkchoiceUpdateResult) ResultAllSyncing ¶
func (r *ForkchoiceUpdateResult) ResultAllSyncing()
func (*ForkchoiceUpdateResult) Retry ¶
func (r *ForkchoiceUpdateResult) Retry(attempts int) *ForkchoiceUpdateResult
func (*ForkchoiceUpdateResult) WaitUntilValid ¶
func (r *ForkchoiceUpdateResult) WaitUntilValid(attempts int) *ForkchoiceUpdateResult
type HDWallet ¶
type HDWallet struct {
// contains filtered or unexported fields
}
HDWallet is a collection of deterministic accounts, generated from an underlying devkeys keyring, using the standard cross-chain user identities.
type HeaderProvider ¶
type HeaderProvider interface {
InfoByNumber(ctx context.Context, number uint64) (eth.BlockInfo, error)
InfoByLabel(ctx context.Context, label eth.BlockLabel) (eth.BlockInfo, error)
InfoByHash(ctx context.Context, hash common.Hash) (eth.BlockInfo, error)
}
HeaderProvider interface for multi-client operations
type InitMessage ¶
type InitMessage struct {
Tx *txintent.IntentTx[*txintent.InitTrigger, *txintent.InteropOutput]
Receipt *types.Receipt
}
InitMessage represents an initiating message that has been sent and included on chain.
func (*InitMessage) BlockHash ¶
func (m *InitMessage) BlockHash() common.Hash
BlockHash returns the block hash from the receipt.
func (*InitMessage) BlockID ¶
func (m *InitMessage) BlockID() eth.BlockID
BlockID returns the block ID from the receipt.
func (*InitMessage) BlockNumber ¶
func (m *InitMessage) BlockNumber() *big.Int
BlockNumber returns the block number from the receipt.
func (*InitMessage) String ¶
func (m *InitMessage) String() string
String returns a human-readable representation of the InitMessage.
func (*InitMessage) TxHash ¶
func (m *InitMessage) TxHash() common.Hash
TxHash returns the transaction hash from the receipt.
type InvalidMsgFn ¶
InvalidMsgFn is a function that takes a valid message and returns an invalid copy.
type Key ¶
type Key struct {
// contains filtered or unexported fields
}
Key is an ethereum private key. This is a key with an address identity. The Key may be used on different chains: it is chain-agnostic.
func (*Key) Priv ¶
func (a *Key) Priv() *ecdsa.PrivateKey
type L1CLNode ¶
type L1CLNode struct {
// contains filtered or unexported fields
}
L1CLNode wraps a stack.L1CLNode interface for DSL operations
func NewL1CLNode ¶
NewL1CLNode creates a new L1CLNode DSL wrapper
type L1ELNode ¶
type L1ELNode struct {
// contains filtered or unexported fields
}
L1ELNode wraps a stack.L1ELNode interface for DSL operations
func NewL1ELNode ¶
NewL1ELNode creates a new L1ELNode DSL wrapper
func (*L1ELNode) BlockRefByLabel ¶
func (el *L1ELNode) BlockRefByLabel(label eth.BlockLabel) eth.L1BlockRef
func (*L1ELNode) BlockRefByNumber ¶
func (el *L1ELNode) BlockRefByNumber(number uint64) eth.L1BlockRef
func (*L1ELNode) EstimateBlockTime ¶
EstimateBlockTime estimates the L1 block based on the last 1000 blocks (or since genesis, if insufficient blocks).
func (L1ELNode) IsCanonical ¶
func (*L1ELNode) ReorgTriggered ¶
func (el *L1ELNode) ReorgTriggered(target eth.L1BlockRef, attempts int)
func (*L1ELNode) ReorgTriggeredFn ¶
func (el *L1ELNode) ReorgTriggeredFn(target eth.L1BlockRef, attempts int) CheckFunc
ReorgTriggeredFn returns a lambda that checks that a L1 reorg occurred on the expected block Composable with other lambdas to wait in parallel
func (*L1ELNode) TransactionTimeout ¶
func (L1ELNode) WaitForBlock ¶
func (L1ELNode) WaitForBlockNumber ¶
func (L1ELNode) WaitForFinalization ¶
WaitForFinalization waits for the current block height to be finalized. Note that it does not ensure that the finalized block is the same as the current unsafe block (i.e., it is not reorg-aware).
func (L1ELNode) WaitForLabel ¶
func (L1ELNode) WaitForLabelRef ¶
func (L1ELNode) WaitForOnline ¶
func (el L1ELNode) WaitForOnline()
func (L1ELNode) WaitForTime ¶
WaitForTime waits until the chain has reached or surpassed the given timestamp.
func (L1ELNode) WaitForUnsafe ¶
type L1Network ¶
type L1Network struct {
// contains filtered or unexported fields
}
L1Network wraps a stack.L1Network interface for DSL operations
func NewL1Network ¶
NewL1Network creates a new L1Network DSL wrapper
func (*L1Network) PrintChain ¶
func (n *L1Network) PrintChain()
PrintChain is used for testing/debugging, it prints the blockchain hashes and parent hashes to logs, which is useful when developing reorg tests
func (*L1Network) WaitForBlock ¶
func (*L1Network) WaitForFinalization ¶
func (*L1Network) WaitForOnline ¶
func (n *L1Network) WaitForOnline()
type L2Batcher ¶
type L2Batcher struct {
// contains filtered or unexported fields
}
L2Batcher wraps a stack.L2Batcher interface for DSL operations
func NewL2Batcher ¶
NewL2Batcher creates a new L2Batcher DSL wrapper
func (*L2Batcher) ActivityAPI ¶
func (b *L2Batcher) ActivityAPI() apis.BatcherActivity
type L2CLNode ¶
type L2CLNode struct {
// contains filtered or unexported fields
}
L2CLNode wraps a stack.L2CLNode interface for DSL operations
func NewL2CLNode ¶
NewL2CLNode creates a new L2CLNode DSL wrapper
func (*L2CLNode) Advanced ¶
func (cl *L2CLNode) Advanced(lvl types.SafetyLevel, delta uint64, attempts int)
func (*L2CLNode) AdvancedFn ¶
AdvancedFn returns a lambda that checks the L2CL chain head with given safety level advanced more than delta block number Composable with other lambdas to wait in parallel
func (*L2CLNode) AdvancedUnsafe ¶
func (*L2CLNode) AppendUnsafePayloadUntilTip ¶
func (*L2CLNode) AwaitMinL1Processed ¶
func (*L2CLNode) ChainBlockID ¶ added in v1.18.0
func (*L2CLNode) ChainSyncStatus ¶
ChainSyncStatus satisfies that the L2CLNode can provide sync status per chain
func (*L2CLNode) ConnectPeer ¶
func (*L2CLNode) CurrentL1MatchedFn ¶
func (*L2CLNode) DisconnectPeer ¶
func (*L2CLNode) HeadBlockRef ¶
func (cl *L2CLNode) HeadBlockRef(lvl types.SafetyLevel) eth.L2BlockRef
HeadBlockRef fetches L2CL sync status and returns block ref with given safety level
func (*L2CLNode) InSync ¶ added in v1.18.0
func (cl *L2CLNode) InSync(other SyncStatusProvider, lvl types.SafetyLevel, attempts int)
func (*L2CLNode) InSyncFn ¶ added in v1.18.0
func (cl *L2CLNode) InSyncFn(other SyncStatusProvider, lvl types.SafetyLevel, attempts int) CheckFunc
func (*L2CLNode) IsP2PConnected ¶
func (*L2CLNode) Lagged ¶
func (cl *L2CLNode) Lagged(refNode SyncStatusProvider, lvl types.SafetyLevel, attempts int, allowMatch bool)
func (*L2CLNode) LaggedFn ¶
func (cl *L2CLNode) LaggedFn(refNode SyncStatusProvider, lvl types.SafetyLevel, attempts int, allowMatch bool) CheckFunc
LaggedFn returns a lambda that checks the L2CL chain head with given safety level is lagged with the reference chain sync status provider Composable with other lambdas to wait in parallel
func (*L2CLNode) LocalGameInputs ¶ added in v1.18.0
func (cl *L2CLNode) LocalGameInputs(agreedBlock, claimBlock uint64) *utils.LocalGameInputs
func (*L2CLNode) ManagePeer ¶
func (*L2CLNode) Matched ¶
func (cl *L2CLNode) Matched(refNode SyncStatusProvider, lvl types.SafetyLevel, attempts int)
func (*L2CLNode) MatchedFn ¶
func (cl *L2CLNode) MatchedFn(refNode SyncStatusProvider, lvl types.SafetyLevel, attempts int) CheckFunc
MatchedFn returns a lambda that checks the L2CLNode head with given safety level is matched with the refNode chain sync status provider Composable with other lambdas to wait in parallel
func (*L2CLNode) MatchedUnsafe ¶
func (cl *L2CLNode) MatchedUnsafe(refNode SyncStatusProvider, attempts int)
func (*L2CLNode) NotAdvanced ¶
func (cl *L2CLNode) NotAdvanced(lvl types.SafetyLevel, attempts int)
func (*L2CLNode) NotAdvancedFn ¶
func (cl *L2CLNode) NotAdvancedFn(lvl types.SafetyLevel, attempts int) CheckFunc
func (*L2CLNode) NotAdvancedUnsafe ¶
func (*L2CLNode) PostUnsafePayload ¶
func (cl *L2CLNode) PostUnsafePayload(payload *eth.ExecutionPayloadEnvelope)
func (*L2CLNode) Reached ¶
func (cl *L2CLNode) Reached(lvl types.SafetyLevel, target uint64, attempts int)
func (*L2CLNode) ReachedFn ¶
ReachedFn returns a lambda that checks the L2CL chain head with given safety level reaches the target block number Composable with other lambdas to wait in parallel
func (*L2CLNode) ReachedRef ¶
func (*L2CLNode) ReachedRefFn ¶
ReachedRefFn is same as Reached, but has an additional check to ensure that the block referenced is not reorged Composable with other lambdas to wait in parallel
func (*L2CLNode) ReachedUnsafe ¶
func (*L2CLNode) Reset ¶
func (cl *L2CLNode) Reset(lvl types.SafetyLevel, target eth.L2BlockRef)
func (*L2CLNode) Rewinded ¶
func (cl *L2CLNode) Rewinded(lvl types.SafetyLevel, delta uint64, attempts int)
func (*L2CLNode) RewindedFn ¶
RewindedFn returns a lambda that checks the L2CL chain head with given safety level rewinded more than the delta block number Composable with other lambdas to wait in parallel
func (*L2CLNode) SafeHead ¶
func (cl *L2CLNode) SafeHead() *BlockRefResult
func (*L2CLNode) SafeL2BlockRef ¶
func (cl *L2CLNode) SafeL2BlockRef() eth.L2BlockRef
func (*L2CLNode) SetSequencerRecoverMode ¶
func (*L2CLNode) SignalTarget ¶
func (*L2CLNode) StartSequencer ¶
func (cl *L2CLNode) StartSequencer()
func (*L2CLNode) StopSequencer ¶
func (*L2CLNode) SyncStatus ¶
func (cl *L2CLNode) SyncStatus() *eth.SyncStatus
func (*L2CLNode) UnsafeHead ¶
func (cl *L2CLNode) UnsafeHead() *BlockRefResult
func (*L2CLNode) VerifySafeHeadDatabaseMatches ¶
func (*L2CLNode) WaitForNonZeroUnsafeTime ¶
func (cl *L2CLNode) WaitForNonZeroUnsafeTime(ctx context.Context) *eth.SyncStatus
func (*L2CLNode) WaitForPeerDisconnected ¶
func (*L2CLNode) WaitForStall ¶
func (cl *L2CLNode) WaitForStall(lvl types.SafetyLevel)
awaitSafeHeadsStalled waits until every node's safe head has stopped advancing for at least 10 seconds.
type L2Challenger ¶
type L2Challenger struct {
// contains filtered or unexported fields
}
L2Challenger wraps a stack.L2Challenger interface for DSL operations
func NewL2Challenger ¶
func NewL2Challenger(inner stack.L2Challenger) *L2Challenger
NewL2Challenger creates a new L2Challenger DSL wrapper
func (*L2Challenger) Escape ¶
func (c *L2Challenger) Escape() stack.L2Challenger
Escape returns the underlying stack.L2Challenger
func (*L2Challenger) String ¶
func (c *L2Challenger) String() string
type L2ELNode ¶
type L2ELNode struct {
// contains filtered or unexported fields
}
L2ELNode wraps a stack.L2ELNode interface for DSL operations
func NewL2ELNode ¶
NewL2ELNode creates a new L2ELNode DSL wrapper
func (*L2ELNode) AdvancedFn ¶
func (el *L2ELNode) AdvancedFn(label eth.BlockLabel, block uint64) CheckFunc
func (*L2ELNode) AssertExecMessageNotInBlock ¶
func (el *L2ELNode) AssertExecMessageNotInBlock(execMessage *ExecMessage)
func (*L2ELNode) AssertTxInBlock ¶
AssertTxInBlock asserts that a transaction with the given hash does not exist in the block at the given number.
func (*L2ELNode) AssertTxNotInBlock ¶
AssertTxNotInBlock asserts that a transaction with the given hash does not exist in the block at the given number.
func (*L2ELNode) BlockRefByHash ¶
func (el *L2ELNode) BlockRefByHash(hash common.Hash) eth.L2BlockRef
func (*L2ELNode) BlockRefByLabel ¶
func (el *L2ELNode) BlockRefByLabel(label eth.BlockLabel) eth.L2BlockRef
func (*L2ELNode) BlockRefByNumber ¶
func (el *L2ELNode) BlockRefByNumber(num uint64) eth.L2BlockRef
func (*L2ELNode) ChainBlockID ¶ added in v1.18.0
func (*L2ELNode) ChainSyncStatus ¶
func (*L2ELNode) DisconnectPeerWith ¶
func (*L2ELNode) FinalizedHead ¶
func (el *L2ELNode) FinalizedHead() *BlockRefResult
func (*L2ELNode) FinishedELSync ¶
func (*L2ELNode) ForkchoiceUpdate ¶
func (el *L2ELNode) ForkchoiceUpdate(refNode *L2ELNode, unsafe, safe, finalized uint64, attr *eth.PayloadAttributes) *ForkchoiceUpdateResult
ForkchoiceUpdate fetches FCU target hashes from the reference EL node, and FCU update with attributes
func (*L2ELNode) ForkchoiceUpdateRaw ¶
func (el *L2ELNode) ForkchoiceUpdateRaw(unsafe, safe, finalized common.Hash, attr *eth.PayloadAttributes) *ForkchoiceUpdateResult
ForkchoiceUpdateRaw calls FCU with block hashes with attributes
func (*L2ELNode) InSync ¶ added in v1.18.0
func (el *L2ELNode) InSync(other SyncStatusProvider, lvl suptypes.SafetyLevel, attempts int)
func (*L2ELNode) InSyncFn ¶ added in v1.18.0
func (el *L2ELNode) InSyncFn(other SyncStatusProvider, lvl suptypes.SafetyLevel, attempts int) CheckFunc
func (L2ELNode) IsCanonical ¶
func (*L2ELNode) L1OriginReachedFn ¶
func (el *L2ELNode) L1OriginReachedFn(label eth.BlockLabel, l1OriginTarget uint64, attempts int) CheckFunc
L1OriginReachedFn returns a lambda that waits for the L1 origin to reach the target block number.
func (*L2ELNode) Matched ¶
func (el *L2ELNode) Matched(refNode SyncStatusProvider, lvl suptypes.SafetyLevel, attempts int)
func (*L2ELNode) MatchedFn ¶
func (el *L2ELNode) MatchedFn(refNode SyncStatusProvider, lvl suptypes.SafetyLevel, attempts int) CheckFunc
func (*L2ELNode) MatchedUnsafe ¶
func (el *L2ELNode) MatchedUnsafe(refNode SyncStatusProvider, attempts int)
func (*L2ELNode) NewPayload ¶
func (el *L2ELNode) NewPayload(refNode *L2ELNode, number uint64) *NewPayloadResult
NewPayload fetches payload for target number from the reference EL Node, and inserts the payload
func (*L2ELNode) NewPayloadRaw ¶
func (el *L2ELNode) NewPayloadRaw(payload *eth.ExecutionPayloadEnvelope) *NewPayloadResult
func (*L2ELNode) NotAdvanced ¶
func (el *L2ELNode) NotAdvanced(label eth.BlockLabel, attempts int)
func (*L2ELNode) NotAdvancedFn ¶
func (el *L2ELNode) NotAdvancedFn(label eth.BlockLabel, attempts int) CheckFunc
func (*L2ELNode) NotAdvancedUnsafe ¶
func (*L2ELNode) PayloadByNumber ¶
func (el *L2ELNode) PayloadByNumber(number uint64) *eth.ExecutionPayloadEnvelope
func (*L2ELNode) Reached ¶
func (el *L2ELNode) Reached(label eth.BlockLabel, block uint64, attempts int)
func (*L2ELNode) ReorgExact ¶
func (el *L2ELNode) ReorgExact(target eth.L2BlockRef, attempts int)
func (*L2ELNode) ReorgExactFn ¶
func (el *L2ELNode) ReorgExactFn(target eth.L2BlockRef, attempts int) CheckFunc
ReorgExactFn returns a lambda that checks that a L2 reorg occurred on the exact target L2 block. If an L2 block prior to target was reorged, this function will block forever. Composable with other lambdas to wait in parallel.
func (*L2ELNode) ReorgTriggered ¶
func (el *L2ELNode) ReorgTriggered(target eth.L2BlockRef, attempts int)
func (*L2ELNode) ReorgTriggeredFn ¶
func (el *L2ELNode) ReorgTriggeredFn(target eth.L2BlockRef, attempts int) CheckFunc
ReorgTriggeredFn returns a lambda that checks that a L2 reorg occurred on or before the expected block Composable with other lambdas to wait in parallel
func (*L2ELNode) SafeHead ¶
func (el *L2ELNode) SafeHead() *BlockRefResult
func (*L2ELNode) TransactionTimeout ¶
func (*L2ELNode) UnsafeHead ¶
func (el *L2ELNode) UnsafeHead() *BlockRefResult
func (*L2ELNode) VerifyWithdrawalHashChangedIn ¶
VerifyWithdrawalHashChangedIn verifies that the withdrawal hash changed between the parent and current block. This is used to verify that the withdrawal hash changed in the block where the withdrawal was initiated.
Some EL backends, such as op-reth, can briefly lag in serving historical proofs for a block that has already been inserted. Retry until the proof backend catches up instead of failing immediately.
func (L2ELNode) WaitForBlock ¶
func (L2ELNode) WaitForBlockNumber ¶
func (L2ELNode) WaitForFinalization ¶
WaitForFinalization waits for the current block height to be finalized. Note that it does not ensure that the finalized block is the same as the current unsafe block (i.e., it is not reorg-aware).
func (L2ELNode) WaitForLabel ¶
func (L2ELNode) WaitForLabelRef ¶
func (L2ELNode) WaitForOnline ¶
func (el L2ELNode) WaitForOnline()
func (*L2ELNode) WaitForPendingNonceMatch ¶
func (el *L2ELNode) WaitForPendingNonceMatch(account common.Address, nonce uint64, attempts int, duration time.Duration)
WaitForPendingNonceMatch waits for the pending nonce of an account to match the reference nonce
func (*L2ELNode) WaitForPendingNonceMatchFn ¶
func (el *L2ELNode) WaitForPendingNonceMatchFn(account common.Address, nonce uint64, attempts int, duration time.Duration) CheckFunc
WaitForPendingNonceMatchFn returns a lambda that waits for the pending nonce of an account to match the provided reference nonce
func (*L2ELNode) WaitForReceipt ¶
WaitForReceipt waits for a transaction receipt to be available, retrying until found or timeout.
func (L2ELNode) WaitForTime ¶
WaitForTime waits until the chain has reached or surpassed the given timestamp.
func (L2ELNode) WaitForUnsafe ¶
func (L2ELNode) WaitForUnsafeRef ¶
func (*L2ELNode) WaitL1OriginHash ¶
WaitL1OriginHash polls until the L2 chain at the given label references the target L1 block. If the head's L1 origin has advanced past the target number (e.g. due to a large batch), it walks back through L2 blocks to find one with the target L1 origin number and checks its hash.
func (*L2ELNode) WaitL1OriginReached ¶
func (el *L2ELNode) WaitL1OriginReached(label eth.BlockLabel, l1OriginTarget uint64, attempts int)
WaitL1OriginReached waits for the L1 origin to reach the target block number.
type L2Network ¶
type L2Network struct {
// contains filtered or unexported fields
}
L2Network wraps a stack.L2Network interface for DSL operations
func NewL2Network ¶
func NewL2Network(inner stack.L2Network, primaryEL *L2ELNode, primaryCL *L2CLNode, primaryL1 *L1ELNode, archiveEL *L2ELNode, publicRPC *L2ELNode) *L2Network
NewL2Network creates a new L2Network DSL wrapper
func (*L2Network) AwaitActivation ¶
AwaitActivation awaits the fork activation time, and returns the activation block
func (*L2Network) DepositContractAddr ¶
func (*L2Network) DeriveData ¶
func (*L2Network) DisputeGameFactoryProxyAddr ¶
func (*L2Network) IsActivated ¶
IsActivated checks if a given fork has been activated
func (*L2Network) IsForkActiveAt ¶
func (*L2Network) LatestBlockBeforeTimestamp ¶
LatestBlockBeforeTimestamp finds the latest block before fork activation
func (*L2Network) PrimaryL1EL ¶
func (*L2Network) PrintChain ¶
func (n *L2Network) PrintChain()
PrintChain is used for testing/debugging, it prints the blockchain hashes and parent hashes to logs, which is useful when developing reorg tests
func (*L2Network) TimestampForBlockNum ¶
TimestampForBlockNum returns the timestamp for the given L2 block number.
func (*L2Network) WaitForBlock ¶
type L2Proposer ¶
type L2Proposer struct {
// contains filtered or unexported fields
}
L2Proposer wraps a stack.L2Proposer interface for DSL operations
func NewL2Proposer ¶
func NewL2Proposer(inner stack.L2Proposer) *L2Proposer
NewL2Proposer creates a new L2Proposer DSL wrapper
func (*L2Proposer) Escape ¶
func (p *L2Proposer) Escape() stack.L2Proposer
Escape returns the underlying stack.L2Proposer
func (*L2Proposer) String ¶
func (p *L2Proposer) String() string
type MultiClient ¶
type MultiClient struct {
// contains filtered or unexported fields
}
MultiClient is a simple client that checks hash consistency between underlying clients
func MultiClientForL1Network ¶
func MultiClientForL1Network(network *L1Network) (*MultiClient, error)
MultiClientForL1Network creates a MultiClient from an L1Network
func MultiClientForL2Network ¶
func MultiClientForL2Network(network *L2Network) (*MultiClient, error)
MultiClientForL2Network creates a MultiClient from an L2Network
func NewMultiClient ¶
func NewMultiClient(clients []HeaderProvider) *MultiClient
NewMultiClient creates a new MultiClient with the specified underlying clients
func (*MultiClient) InfoByHash ¶
InfoByHash returns block info from the first client while verifying hash consistency
func (*MultiClient) InfoByLabel ¶
func (mc *MultiClient) InfoByLabel(ctx context.Context, label eth.BlockLabel) (eth.BlockInfo, error)
InfoByLabel returns block info from the first client while verifying hash consistency
func (*MultiClient) InfoByNumber ¶
InfoByNumber returns block info from the first client while verifying hash consistency
type NewPayloadResult ¶
type NewPayloadResult struct {
T devtest.T
Status *eth.PayloadStatusV1
Err error
}
func (*NewPayloadResult) IsInvalid ¶
func (r *NewPayloadResult) IsInvalid() *NewPayloadResult
func (*NewPayloadResult) IsPayloadStatus ¶
func (r *NewPayloadResult) IsPayloadStatus(status eth.ExecutePayloadStatus) *NewPayloadResult
func (*NewPayloadResult) IsSyncing ¶
func (r *NewPayloadResult) IsSyncing() *NewPayloadResult
func (*NewPayloadResult) IsValid ¶
func (r *NewPayloadResult) IsValid() *NewPayloadResult
type OPRBuilderNode ¶
type OPRBuilderNode struct {
// contains filtered or unexported fields
}
func NewOPRBuilderNode ¶
func NewOPRBuilderNode(inner stack.OPRBuilderNode) *OPRBuilderNode
func (*OPRBuilderNode) Escape ¶
func (c *OPRBuilderNode) Escape() stack.OPRBuilderNode
func (*OPRBuilderNode) FlashblocksClient ¶
func (c *OPRBuilderNode) FlashblocksClient() *opclient.WSClient
func (*OPRBuilderNode) Start ¶
func (el *OPRBuilderNode) Start()
func (*OPRBuilderNode) Stop ¶
func (el *OPRBuilderNode) Stop()
func (*OPRBuilderNode) String ¶
func (c *OPRBuilderNode) String() string
func (*OPRBuilderNode) UpdateRuleSet ¶
func (el *OPRBuilderNode) UpdateRuleSet(rulesYaml string)
type OPRBuilderNodeSet ¶
type OPRBuilderNodeSet []*OPRBuilderNode
func NewOPRBuilderNodeSet ¶
func NewOPRBuilderNodeSet(inner []stack.OPRBuilderNode) OPRBuilderNodeSet
type OperatorFee ¶
type OperatorFee struct {
// contains filtered or unexported fields
}
func NewOperatorFee ¶
func NewOperatorFee(t devtest.T, l2Network *L2Network, l1EL *L1ELNode) *OperatorFee
func (*OperatorFee) CheckCompatibility ¶
func (of *OperatorFee) CheckCompatibility() bool
func (*OperatorFee) GetSystemOwner ¶
func (of *OperatorFee) GetSystemOwner() *EOA
func (*OperatorFee) RestoreOriginalConfig ¶
func (of *OperatorFee) RestoreOriginalConfig()
func (*OperatorFee) SetOperatorFee ¶
func (of *OperatorFee) SetOperatorFee(scalar uint32, constant uint64)
func (*OperatorFee) ValidateTransactionFees ¶
func (of *OperatorFee) ValidateTransactionFees(from *EOA, to *EOA, amount *big.Int, expectedScalar uint32, expectedConstant uint64) OperatorFeeValidationResult
func (*OperatorFee) VerifyL2Config ¶
func (of *OperatorFee) VerifyL2Config(expectedScalar uint32, expectedConstant uint64)
func (*OperatorFee) WaitForL2Sync ¶
func (of *OperatorFee) WaitForL2Sync(expectedScalar uint32, expectedConstant uint64)
func (*OperatorFee) WaitForL2SyncWithCurrentL1State ¶
func (of *OperatorFee) WaitForL2SyncWithCurrentL1State()
type ProvenWithdrawalParameters ¶
type ProvenWithdrawalParameters struct {
Nonce *big.Int
Sender common.Address
Target common.Address
Value *big.Int
GasLimit *big.Int
DisputeGameAddress common.Address
DisputeGameIndex *big.Int
Data []byte
OutputRootProof bindings.OutputRootProof
WithdrawalProof [][]byte // List of trie nodes to prove L2 storage
}
ProvenWithdrawalParameters is the set of parameters to pass to the ProveWithdrawalTransaction and FinalizeWithdrawalTransaction functions
type RollupBoostNode ¶
type RollupBoostNode struct {
// contains filtered or unexported fields
}
RollupBoostNode wraps a stack.RollupBoostNode interface for DSL operations
func NewRollupBoostNode ¶
func NewRollupBoostNode(inner stack.RollupBoostNode) *RollupBoostNode
NewRollupBoostNode creates a new RollupBoostNode DSL wrapper
func (*RollupBoostNode) Escape ¶
func (r *RollupBoostNode) Escape() stack.RollupBoostNode
func (*RollupBoostNode) FlashblocksClient ¶
func (r *RollupBoostNode) FlashblocksClient() *opclient.WSClient
type RollupBoostNodesSet ¶
type RollupBoostNodesSet []*RollupBoostNode
func NewRollupBoostNodesSet ¶
func NewRollupBoostNodesSet(inner []stack.RollupBoostNode) RollupBoostNodesSet
type SameTimestampPair ¶
type SameTimestampPair struct {
Trigger *txintent.InitTrigger
Message suptypes.Message
// contains filtered or unexported fields
}
SameTimestampPair holds a precomputed init message for same-timestamp interop testing. It allows creating exec messages that reference the init before it's actually included on chain. This is necessary for same-timestamp scenarios where the exec needs to reference an init that will be included in a block at the same timestamp.
func (*SameTimestampPair) SubmitExecTo ¶
func (p *SameTimestampPair) SubmitExecTo(executor *EOA) *txplan.PlannedTx
SubmitExecTo returns a planned exec transaction to the given EOA's chain, referencing this init. The test harness assigns deterministic nonces and includes the signed tx directly.
func (*SameTimestampPair) SubmitInit ¶
func (p *SameTimestampPair) SubmitInit() *txplan.PlannedTx
SubmitInit returns a planned init transaction for same-timestamp testing. The test harness assigns deterministic nonces and includes the signed tx directly.
func (*SameTimestampPair) SubmitInvalidExecTo ¶
func (p *SameTimestampPair) SubmitInvalidExecTo(executor *EOA) *txplan.PlannedTx
SubmitInvalidExecTo submits an exec message with an invalid log index. This creates an exec that references a non-existent log, which should be detected as invalid. Returns the planned tx; the test harness assigns deterministic nonces and includes the signed tx directly.
type StandardBridge ¶
type StandardBridge struct {
// contains filtered or unexported fields
}
func NewStandardBridge ¶
func NewStandardBridge(t devtest.T, l2Network *L2Network, l1EL *L1ELNode) *StandardBridge
func (*StandardBridge) CreateL2Token ¶
func (b *StandardBridge) CreateL2Token(l1TokenAddr common.Address, name string, symbol string, from *EOA) common.Address
CreateL2Token creates an L2 token using OptimismMintableERC20Factory and returns the token address
func (*StandardBridge) Deposit ¶
func (b *StandardBridge) Deposit(amount eth.ETH, from *EOA) Deposit
func (*StandardBridge) DisputeGameFinalityDelay ¶
func (b *StandardBridge) DisputeGameFinalityDelay() time.Duration
func (*StandardBridge) ERC20Deposit ¶
func (b *StandardBridge) ERC20Deposit(l1TokenAddr common.Address, l2TokenAddr common.Address, amount eth.ETH, from *EOA) *Deposit
ERC20Deposit performs an ERC20 deposit from L1 to L2
func (*StandardBridge) GameResolutionDelay ¶
func (b *StandardBridge) GameResolutionDelay() time.Duration
func (*StandardBridge) InitiateWithdrawal ¶
func (b *StandardBridge) InitiateWithdrawal(amount eth.ETH, from *EOA) *Withdrawal
func (*StandardBridge) PortalVersion ¶
func (b *StandardBridge) PortalVersion() string
func (*StandardBridge) RespectedGameType ¶
func (b *StandardBridge) RespectedGameType() uint32
func (*StandardBridge) UsesSuperRoots ¶
func (b *StandardBridge) UsesSuperRoots() bool
func (*StandardBridge) VerifyRespectedGameType ¶
func (b *StandardBridge) VerifyRespectedGameType(expected gameTypes.GameType)
func (*StandardBridge) WithdrawalDelay ¶
func (b *StandardBridge) WithdrawalDelay() time.Duration
type Supernode ¶
type Supernode struct {
// contains filtered or unexported fields
}
Supernode wraps a stack.Supernode interface for DSL operations
func NewSupernode ¶
NewSupernode creates a new Supernode DSL wrapper
func NewSupernodeWithTestControl ¶
func NewSupernodeWithTestControl(inner stack.Supernode, testControl stack.InteropTestControl) *Supernode
NewSupernodeWithTestControl creates a new Supernode DSL wrapper with test control support. The testControl parameter can be nil if no test control is needed.
func (*Supernode) AssertBackfillCovers ¶
func (s *Supernode) AssertBackfillCovers(depth time.Duration, blockTime uint64, chains ...eth.ChainID)
AssertBackfillCovers verifies, for each supplied chain, that the interop logs DB contains blocks spanning from a first-seal at or near the expected T_lo all the way to a latest-seal at or near the safe tip. Specifically it asserts the three invariants log backfill must preserve:
- firstSealed.Timestamp + blockTime > ActivationTimestamp (the first seal is at most one block before activation; when activation is not aligned to a block boundary, the block representing the chain state as of activation is the correct pairing anchor and is sealed).
- firstSealed.Timestamp < BackfillEndTimestamp()+1 (the post-backfill handoff happens strictly after the backfilled range)
- firstSealed.Timestamp <= max(ActivationTimestamp, latestSealed.Timestamp - depth) + blockTime (backfill reached ~depth back, or all the way to activation if the chain is younger than depth)
This is the strongest test-side evidence that backfill actually populated the DB, rather than the supernode simply resuming off of existing disk state. Requires the Supernode to be created with NewSupernodeWithTestControl.
func (*Supernode) AssertSuperRootAtTimestamp ¶
AssertSuperRootAtTimestamp asserts that the super-root at the given timestamp matches the expected root claim
func (*Supernode) AwaitBackfillAttempts ¶
AwaitBackfillAttempts blocks until BackfillAttempts() >= minAttempts or the timeout elapses. Fails the test on timeout. Requires the Supernode to be created with NewSupernodeWithTestControl.
func (*Supernode) AwaitBackfillCompleted ¶
func (s *Supernode) AwaitBackfillCompleted()
AwaitBackfillCompleted blocks until the interop activity finishes its log backfill phase, or the timeout elapses. Fails the test on timeout. Requires the Supernode to be created with NewSupernodeWithTestControl.
func (*Supernode) AwaitValidatedTimestamp ¶
AwaitValidatedTimestamp waits for the super-root at the given timestamp to be fully validated
func (*Supernode) BackfillAttempts ¶
BackfillAttempts returns the number of log-backfill attempts since the running interop activity's most recent (re)start. Requires the Supernode to be created with NewSupernodeWithTestControl.
func (*Supernode) EnsureInteropPaused ¶
EnsureInteropPaused pauses the interop activity and verifies it has stopped. It takes the local safe timestamps from two CL nodes, uses the maximum, then: 1. Pauses interop at localSafeTimestamp + pauseOffset 2. Awaits validation of localSafeTimestamp + pauseOffset - 1 3. Finds the first timestamp that is NOT verified (the actual pause point) Returns the first unverified timestamp (adjusted if pause came in late). Requires the Supernode to be created with NewSupernodeWithTestControl.
func (*Supernode) PauseInterop ¶
PauseInterop pauses the interop activity at the given timestamp. When the interop activity attempts to process this timestamp, it returns early. This function is for integration test control only. Requires the Supernode to be created with NewSupernodeWithTestControl.
func (*Supernode) QueryAPI ¶
func (s *Supernode) QueryAPI() apis.SupernodeQueryAPI
QueryAPI returns the supernode's query API
func (*Supernode) RestartInterop ¶
RestartInterop stops the running interop activity, optionally wipes its on-disk logs DBs, and launches a fresh instance against the still-running supernode. The HTTP server, chain containers, virtual nodes, and all other activities keep running across the restart. Setting wipeLogsDBs=true forces the fresh activity to reconstruct its database via log backfill from the virtual nodes, making this the primary primitive for exercising backfill in tests. Requires the Supernode to be created with NewSupernodeWithTestControl.
func (*Supernode) ResumeInterop ¶
func (s *Supernode) ResumeInterop()
ResumeInterop clears any pause on the interop activity, allowing normal processing. This function is for integration test control only. Requires the Supernode to be created with NewSupernodeWithTestControl.
func (*Supernode) SuperRootAtTimestamp ¶
func (s *Supernode) SuperRootAtTimestamp(timestamp uint64) eth.SuperRootAtTimestampResponse
SuperRootAtTimestamp fetches the super-root at the given timestamp
type Supervisor ¶
type Supervisor struct {
// contains filtered or unexported fields
}
func NewSupervisor ¶
func NewSupervisor(inner stack.Supervisor) *Supervisor
func (*Supervisor) AddManagedL2CL ¶
func (s *Supervisor) AddManagedL2CL(cl *L2CLNode)
func (*Supervisor) AdvancedSafeHead ¶
func (s *Supervisor) AdvancedSafeHead(chainID eth.ChainID, delta uint64, attempts int)
func (*Supervisor) AwaitMinCrossSafeTimestamp ¶
func (s *Supervisor) AwaitMinCrossSafeTimestamp(timestamp uint64)
func (*Supervisor) AwaitMinL1 ¶
func (s *Supervisor) AwaitMinL1(minL1 uint64)
func (*Supervisor) ChainSyncStatus ¶
func (s *Supervisor) ChainSyncStatus(chainID eth.ChainID, lvl types.SafetyLevel) eth.BlockID
ChainSyncStatus satisfies that the supervisor can provide sync status per chain
func (*Supervisor) Escape ¶
func (s *Supervisor) Escape() stack.Supervisor
func (*Supervisor) FetchSuperRootAtTimestamp ¶
func (s *Supervisor) FetchSuperRootAtTimestamp(timestamp uint64) eth.SuperRootResponse
func (*Supervisor) FetchSyncStatus ¶
func (s *Supervisor) FetchSyncStatus() eth.SupervisorSyncStatus
func (*Supervisor) L2HeadBlockID ¶
func (s *Supervisor) L2HeadBlockID(chainID eth.ChainID, lvl types.SafetyLevel) eth.BlockID
L2HeadBlockID fetches supervisor sync status and returns block id with given safety level
func (*Supervisor) SafeBlockID ¶
func (s *Supervisor) SafeBlockID(chainID eth.ChainID) eth.BlockID
func (*Supervisor) Start ¶
func (s *Supervisor) Start()
func (*Supervisor) Stop ¶
func (s *Supervisor) Stop()
func (*Supervisor) String ¶
func (s *Supervisor) String() string
func (*Supervisor) VerifySyncStatus ¶
func (s *Supervisor) VerifySyncStatus(opts ...func(config *VerifySyncStatusConfig))
VerifySyncStatus performs assertions based on the supervisor's SyncStatus endpoint.
func (*Supervisor) WaitForL2HeadToAdvance ¶
func (s *Supervisor) WaitForL2HeadToAdvance(chainID eth.ChainID, delta uint64, lvl types.SafetyLevel, attempts int)
WaitForL2HeadToAdvance checks the supervisor view of L2CL chain head with given safety level advanced more than delta block number
func (*Supervisor) WaitForL2HeadToAdvanceTo ¶
func (s *Supervisor) WaitForL2HeadToAdvanceTo(chainID eth.ChainID, lvl types.SafetyLevel, blockID eth.BlockID)
func (*Supervisor) WaitForUnsafeHeadToAdvance ¶
func (s *Supervisor) WaitForUnsafeHeadToAdvance(chainID eth.ChainID, delta uint64)
type SyncStatusProvider ¶
type SyncTester ¶
type SyncTester struct {
// contains filtered or unexported fields
}
SyncTester wraps a stack.SyncTester interface for DSL operations
func NewSyncTester ¶
func NewSyncTester(inner stack.SyncTester) *SyncTester
NewSyncTester creates a new Sync Tester DSL wrapper
func (*SyncTester) DeleteSession ¶
func (s *SyncTester) DeleteSession(sessionID string)
func (*SyncTester) Escape ¶
func (s *SyncTester) Escape() stack.SyncTester
Escape returns the underlying stack.SyncTester
func (*SyncTester) GetSession ¶
func (s *SyncTester) GetSession(sessionID string) *eth.SyncTesterSession
func (*SyncTester) ListSessions ¶
func (s *SyncTester) ListSessions() []string
type TestSequencer ¶
type TestSequencer struct {
// contains filtered or unexported fields
}
func NewTestSequencer ¶
func NewTestSequencer(inner stack.TestSequencer) *TestSequencer
func (*TestSequencer) Escape ¶
func (s *TestSequencer) Escape() stack.TestSequencer
func (*TestSequencer) SequenceBlock ¶
SequenceBlock builds a block at deterministic timestamp (parent.Time + blockTime). This is useful for tests that need predictable block timestamps.
func (*TestSequencer) SequenceBlockWithTxs ¶
func (s *TestSequencer) SequenceBlockWithTxs(t devtest.T, chainID eth.ChainID, parent common.Hash, rawTxs [][]byte)
SequenceBlockWithTxs builds a block with timestamp parent.Time + blockTime with the supplied transactions (bypassing the mempool). This makes it ideal for same-timestamp interop testing, and avoids the chance that transactions are sequenced into later blocks.
func (*TestSequencer) String ¶
func (s *TestSequencer) String() string
type VaultBalances ¶
type VerifySyncStatusConfig ¶
type VerifySyncStatusConfig struct {
AllUnsafeHeadsAdvance uint64
}
type Withdrawal ¶
type Withdrawal struct {
// contains filtered or unexported fields
}
func (*Withdrawal) Finalize ¶
func (w *Withdrawal) Finalize(user *EOA)
func (*Withdrawal) FinalizeGasCost ¶
func (w *Withdrawal) FinalizeGasCost() eth.ETH
func (*Withdrawal) InitiateBlockHash ¶
func (w *Withdrawal) InitiateBlockHash() common.Hash
func (*Withdrawal) InitiateGasCost ¶
func (w *Withdrawal) InitiateGasCost() eth.ETH
func (*Withdrawal) Prove ¶
func (w *Withdrawal) Prove(user *EOA)
func (*Withdrawal) ProveGasCost ¶
func (w *Withdrawal) ProveGasCost() eth.ETH
func (*Withdrawal) WaitForDisputeGameResolved ¶
func (w *Withdrawal) WaitForDisputeGameResolved()
Source Files
¶
- bridge.go
- check.go
- common.go
- conductor.go
- deposit_eoa.go
- doc.go
- ecotone_fees.go
- el.go
- engine.go
- eoa.go
- faucet.go
- fjord_fees.go
- funder.go
- hd_wallet.go
- invalid_msg.go
- key.go
- l1_cl.go
- l1_el.go
- l1_network.go
- l2_batcher.go
- l2_challenger.go
- l2_cl.go
- l2_el.go
- l2_network.go
- l2_op_rbuilder.go
- l2_proposer.go
- multi_client.go
- operator_fee.go
- opts.go
- params.go
- rollup_boost.go
- safedb.go
- sequencer.go
- supernode.go
- supervisor.go
- sync_tester.go