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 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 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 CheckFunc
- type Cluster
- 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 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) SendExecMessage(initIntent *txintent.IntentTx[*txintent.InitTrigger, *txintent.InteropOutput], ...) (*txintent.IntentTx[*txintent.ExecTrigger, *txintent.InteropOutput], ...)
- func (u *EOA) SendInitMessage(trigger *txintent.InitTrigger) (*txintent.IntentTx[*txintent.InitTrigger, *txintent.InteropOutput], ...)
- 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) 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) WaitForBalance(v eth.ETH)
- func (u *EOA) WaitForTokenBalance(tokenAddr common.Address, expectedBalance eth.ETH)
- type EcotoneFees
- type EcotoneFeesValidationResult
- type Faucet
- type FjordFees
- type FjordFeesValidationResult
- type FlashblocksWSClient
- type FlashblocksWSClientSet
- 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 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
- 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) 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) ID() stack.L2CLNodeID
- 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) 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) 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
- 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) 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) ChainID() eth.ChainID
- func (el *L2ELNode) ChainSyncStatus(chainID eth.ChainID, lvl types.SafetyLevel) eth.BlockID
- func (el *L2ELNode) DisconnectPeerWith(peer *L2ELNode)
- func (el *L2ELNode) Escape() stack.L2ELNode
- 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) ID() stack.L2ELNodeID
- 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 types.SafetyLevel, attempts int)
- func (el *L2ELNode) MatchedFn(refNode SyncStatusProvider, lvl types.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) 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) 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) WaitL1OriginReached(label eth.BlockLabel, l1OriginTarget uint64, attempts int)
- type L2Network
- 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) PrintChain()
- func (n *L2Network) PublicRPC() *L2ELNode
- func (n *L2Network) String() string
- 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 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) WithdrawalDelay() time.Duration
- type Superchain
- 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
- 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 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 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 CheckFunc ¶
type CheckFunc func() error
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 Cluster ¶ added in v1.13.3
type Cluster struct {
// contains filtered or unexported fields
}
Cluster wraps a stack.Cluster interface for DSL operations
func NewCluster ¶ added in v1.13.3
NewCluster creates a new Cluster DSL wrapper
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 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) SendExecMessage ¶
func (u *EOA) SendExecMessage(initIntent *txintent.IntentTx[*txintent.InitTrigger, *txintent.InteropOutput], eventIdx int) (*txintent.IntentTx[*txintent.ExecTrigger, *txintent.InteropOutput], *types.Receipt)
func (*EOA) SendInitMessage ¶
func (u *EOA) SendInitMessage(trigger *txintent.InitTrigger) (*txintent.IntentTx[*txintent.InitTrigger, *txintent.InteropOutput], *types.Receipt)
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) 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) 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 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 FlashblocksWSClient ¶ added in v1.16.3
type FlashblocksWSClient struct {
// contains filtered or unexported fields
}
func NewFlashblocksWSClient ¶ added in v1.16.3
func NewFlashblocksWSClient(inner stack.FlashblocksWSClient) *FlashblocksWSClient
func (*FlashblocksWSClient) Escape ¶ added in v1.16.3
func (c *FlashblocksWSClient) Escape() stack.FlashblocksWSClient
func (*FlashblocksWSClient) String ¶ added in v1.16.3
func (c *FlashblocksWSClient) String() string
type FlashblocksWSClientSet ¶ added in v1.16.3
type FlashblocksWSClientSet []*FlashblocksWSClient
func NewFlashblocksWSClientSet ¶ added in v1.16.3
func NewFlashblocksWSClientSet(inner []stack.FlashblocksWSClient) FlashblocksWSClientSet
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 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 ¶
func NewL2CLNode(inner stack.L2CLNode, control stack.ControlPlane) *L2CLNode
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) 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) ID ¶ added in v1.13.5
func (cl *L2CLNode) ID() stack.L2CLNodeID
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) 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
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 ¶
func NewL2ELNode(inner stack.L2ELNode, control stack.ControlPlane) *L2ELNode
NewL2ELNode creates a new L2ELNode DSL wrapper
func (*L2ELNode) AdvancedFn ¶
func (el *L2ELNode) AdvancedFn(label eth.BlockLabel, block uint64) CheckFunc
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) 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) ID ¶ added in v1.13.5
func (el *L2ELNode) ID() stack.L2ELNodeID
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 types.SafetyLevel, attempts int)
func (*L2ELNode) MatchedFn ¶
func (el *L2ELNode) MatchedFn(refNode SyncStatusProvider, lvl types.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) 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 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
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) WaitForTime ¶
WaitForTime waits until the chain has reached or surpassed the given timestamp.
func (L2ELNode) WaitForUnsafe ¶
func (L2ELNode) WaitForUnsafeRef ¶
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, control stack.ControlPlane) *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) 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) 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, control stack.ControlPlane) *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
type OPRBuilderNodeSet ¶
type OPRBuilderNodeSet []*OPRBuilderNode
func NewOPRBuilderNodeSet ¶
func NewOPRBuilderNodeSet(inner []stack.OPRBuilderNode, control stack.ControlPlane) 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
SuperRootProof *bindings.SuperRootProof // Only set for games using super roots
OutputRootIndex *big.Int // Only set for games using super roots
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, control stack.ControlPlane) *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, control stack.ControlPlane) RollupBoostNodesSet
type StandardBridge ¶
type StandardBridge struct {
// contains filtered or unexported fields
}
func NewStandardBridge ¶
func NewStandardBridge(t devtest.T, l2Network *L2Network, supervisor *Supervisor, 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) WithdrawalDelay ¶
func (b *StandardBridge) WithdrawalDelay() time.Duration
type Superchain ¶ added in v1.13.3
type Superchain struct {
// contains filtered or unexported fields
}
Superchain wraps a stack.Superchain interface for DSL operations
func NewSuperchain ¶ added in v1.13.3
func NewSuperchain(inner stack.Superchain) *Superchain
NewSuperchain creates a new Superchain DSL wrapper
func (*Superchain) Escape ¶ added in v1.13.3
func (s *Superchain) Escape() stack.Superchain
Escape returns the underlying stack.Superchain
func (*Superchain) String ¶ added in v1.13.3
func (s *Superchain) String() string
type Supervisor ¶
type Supervisor struct {
// contains filtered or unexported fields
}
func NewSupervisor ¶
func NewSupervisor(inner stack.Supervisor, control stack.ControlPlane) *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 ¶
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
- cluster.go
- common.go
- conductor.go
- doc.go
- ecotone_fees.go
- el.go
- engine.go
- eoa.go
- faucet.go
- fb_ws_client.go
- fjord_fees.go
- funder.go
- hd_wallet.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
- superchain.go
- supervisor.go
- sync_tester.go