Skip to content

Commit

Permalink
Use real init messages for test setups with L1
Browse files Browse the repository at this point in the history
  • Loading branch information
PlasmaPower committed Jun 19, 2023
1 parent a3970c5 commit 257a3e5
Show file tree
Hide file tree
Showing 3 changed files with 39 additions and 30 deletions.
55 changes: 32 additions & 23 deletions system_tests/common_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -433,9 +433,24 @@ func createTestL1BlockChainWithConfig(t *testing.T, l1info info, stackConfig *no
return l1info, l1Client, l1backend, stack
}

func getInitMessage(ctx context.Context, t *testing.T, l1client client, addresses *chaininfo.RollupAddresses) *arbostypes.ParsedInitMessage {
bridge, err := arbnode.NewDelayedBridge(l1client, addresses.Bridge, addresses.DeployedAt)
Require(t, err)
deployedAtBig := arbmath.UintToBig(addresses.DeployedAt)
messages, err := bridge.LookupMessagesInRange(ctx, deployedAtBig, deployedAtBig, nil)
Require(t, err)
if len(messages) == 0 {
Fatal(t, "No delayed messages found at rollup creation block")
}
initMessage, err := messages[0].Message.ParseInitMessage()
Require(t, err, "Failed to parse rollup init message")

return initMessage
}

func DeployOnTestL1(
t *testing.T, ctx context.Context, l1info info, l1client client, chainConfig *params.ChainConfig,
) *chaininfo.RollupAddresses {
) (*chaininfo.RollupAddresses, *arbostypes.ParsedInitMessage) {
l1info.GenerateAccount("RollupOwner")
l1info.GenerateAccount("Sequencer")
l1info.GenerateAccount("User")
Expand Down Expand Up @@ -463,17 +478,18 @@ func DeployOnTestL1(
l1info.SetContract("Bridge", addresses.Bridge)
l1info.SetContract("SequencerInbox", addresses.SequencerInbox)
l1info.SetContract("Inbox", addresses.Inbox)
return addresses
initMessage := getInitMessage(ctx, t, l1client, addresses)
return addresses, initMessage
}

func createL2BlockChain(
t *testing.T, l2info *BlockchainTestInfo, dataDir string, chainConfig *params.ChainConfig,
) (*BlockchainTestInfo, *node.Node, ethdb.Database, ethdb.Database, *core.BlockChain) {
return createL2BlockChainWithStackConfig(t, l2info, dataDir, chainConfig, nil)
return createL2BlockChainWithStackConfig(t, l2info, dataDir, chainConfig, nil, nil)
}

func createL2BlockChainWithStackConfig(
t *testing.T, l2info *BlockchainTestInfo, dataDir string, chainConfig *params.ChainConfig, stackConfig *node.Config,
t *testing.T, l2info *BlockchainTestInfo, dataDir string, chainConfig *params.ChainConfig, initMessage *arbostypes.ParsedInitMessage, stackConfig *node.Config,
) (*BlockchainTestInfo, *node.Node, ethdb.Database, ethdb.Database, *core.BlockChain) {
if l2info == nil {
l2info = NewArbTestInfo(t, chainConfig.ChainID)
Expand All @@ -494,13 +510,15 @@ func createL2BlockChainWithStackConfig(
Require(t, err)

initReader := statetransfer.NewMemoryInitDataReader(&l2info.ArbInitData)
serializedChainConfig, err := json.Marshal(chainConfig)
Require(t, err)
initMessage := &arbostypes.ParsedInitMessage{
ChainId: chainConfig.ChainID,
InitialL1BaseFee: arbostypes.DefaultInitialL1BaseFee,
ChainConfig: chainConfig,
SerializedChainConfig: serializedChainConfig,
if initMessage == nil {
serializedChainConfig, err := json.Marshal(chainConfig)
Require(t, err)
initMessage = &arbostypes.ParsedInitMessage{
ChainId: chainConfig.ChainID,
InitialL1BaseFee: arbostypes.DefaultInitialL1BaseFee,
ChainConfig: chainConfig,
SerializedChainConfig: serializedChainConfig,
}
}
blockchain, err := execution.WriteOrTestBlockChain(chainDb, nil, initReader, chainConfig, initMessage, arbnode.ConfigDefaultL2Test().TxLookupLimit, 0)
Require(t, err)
Expand Down Expand Up @@ -568,8 +586,8 @@ func createTestNodeOnL1WithConfigImpl(
if l2info == nil {
l2info = NewArbTestInfo(t, chainConfig.ChainID)
}
_, l2stack, l2chainDb, l2arbDb, l2blockchain = createL2BlockChainWithStackConfig(t, l2info, "", chainConfig, stackConfig)
addresses := DeployOnTestL1(t, ctx, l1info, l1client, chainConfig)
addresses, initMessage := DeployOnTestL1(t, ctx, l1info, l1client, chainConfig)
_, l2stack, l2chainDb, l2arbDb, l2blockchain = createL2BlockChainWithStackConfig(t, l2info, "", chainConfig, initMessage, stackConfig)
var sequencerTxOptsPtr *bind.TransactOpts
var dataSigner signature.DataSignerFunc
if isSequencer {
Expand Down Expand Up @@ -719,16 +737,7 @@ func Create2ndNodeWithConfig(
dataSigner := signature.DataSignerFromPrivateKey(l1info.GetInfoWithPrivKey("Sequencer").PrivateKey)
txOpts := l1info.GetDefaultTransactOpts("Sequencer", ctx)
chainConfig := first.Execution.ArbInterface.BlockChain().Config()
serializedChainConfig, err := json.Marshal(chainConfig)
if err != nil {
Fatal(t, err)
}
initMessage := &arbostypes.ParsedInitMessage{
ChainId: chainConfig.ChainID,
InitialL1BaseFee: arbostypes.DefaultInitialL1BaseFee,
ChainConfig: chainConfig,
SerializedChainConfig: serializedChainConfig,
}
initMessage := getInitMessage(ctx, t, l1client, first.DeployInfo)
l2blockchain, err := execution.WriteOrTestBlockChain(l2chainDb, nil, initReader, chainConfig, initMessage, arbnode.ConfigDefaultL2Test().TxLookupLimit, 0)
Require(t, err)

Expand Down
8 changes: 4 additions & 4 deletions system_tests/das_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -110,7 +110,7 @@ func TestDASRekey(t *testing.T) {
l1info, l1client, _, l1stack := createTestL1BlockChain(t, nil)
defer requireClose(t, l1stack)
feedErrChan := make(chan error, 10)
addresses := DeployOnTestL1(t, ctx, l1info, l1client, chainConfig)
addresses, initMessage := DeployOnTestL1(t, ctx, l1info, l1client, chainConfig)

// Setup DAS servers
dasDataDir := t.TempDir()
Expand All @@ -126,7 +126,7 @@ func TestDASRekey(t *testing.T) {
authorizeDASKeyset(t, ctx, pubkeyA, l1info, l1client)

// Setup L2 chain
_, l2stackA, l2chainDb, l2arbDb, l2blockchain := createL2BlockChain(t, l2info, nodeDir, chainConfig)
_, l2stackA, l2chainDb, l2arbDb, l2blockchain := createL2BlockChainWithStackConfig(t, l2info, nodeDir, chainConfig, initMessage, nil)
l2info.GenerateAccount("User2")

// Setup DAS config
Expand Down Expand Up @@ -238,7 +238,7 @@ func TestDASComplexConfigAndRestMirror(t *testing.T) {
l1Reader.Start(ctx)
defer l1Reader.StopAndWait()
feedErrChan := make(chan error, 10)
addresses := DeployOnTestL1(t, ctx, l1info, l1client, chainConfig)
addresses, initMessage := DeployOnTestL1(t, ctx, l1info, l1client, chainConfig)

keyDir, fileDataDir, dbDataDir := t.TempDir(), t.TempDir(), t.TempDir()
pubkey, _, err := das.GenerateAndStoreKeys(keyDir)
Expand Down Expand Up @@ -304,7 +304,7 @@ func TestDASComplexConfigAndRestMirror(t *testing.T) {
Require(t, err)

// Setup L2 chain
l2info, l2stackA, l2chainDb, l2arbDb, l2blockchain := createL2BlockChain(t, nil, "", chainConfig)
l2info, l2stackA, l2chainDb, l2arbDb, l2blockchain := createL2BlockChainWithStackConfig(t, nil, "", chainConfig, initMessage, nil)
l2info.GenerateAccount("User2")

sequencerTxOpts := l1info.GetDefaultTransactOpts("Sequencer", ctx)
Expand Down
6 changes: 3 additions & 3 deletions system_tests/full_challenge_impl_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -245,7 +245,7 @@ func RunChallengeTest(t *testing.T, asserterIsCorrect bool) {
configByValidationNode(t, conf, valStack)

fatalErrChan := make(chan error, 10)
asserterRollupAddresses := DeployOnTestL1(t, ctx, l1Info, l1Backend, chainConfig)
asserterRollupAddresses, initMessage := DeployOnTestL1(t, ctx, l1Info, l1Backend, chainConfig)

deployerTxOpts := l1Info.GetDefaultTransactOpts("deployer", ctx)
sequencerTxOpts := l1Info.GetDefaultTransactOpts("sequencer", ctx)
Expand All @@ -255,15 +255,15 @@ func RunChallengeTest(t *testing.T, asserterIsCorrect bool) {
asserterBridgeAddr, asserterSeqInbox, asserterSeqInboxAddr := setupSequencerInboxStub(ctx, t, l1Info, l1Backend, chainConfig)
challengerBridgeAddr, challengerSeqInbox, challengerSeqInboxAddr := setupSequencerInboxStub(ctx, t, l1Info, l1Backend, chainConfig)

asserterL2Info, asserterL2Stack, asserterL2ChainDb, asserterL2ArbDb, asserterL2Blockchain := createL2BlockChain(t, nil, "", chainConfig)
asserterL2Info, asserterL2Stack, asserterL2ChainDb, asserterL2ArbDb, asserterL2Blockchain := createL2BlockChainWithStackConfig(t, nil, "", chainConfig, initMessage, nil)
asserterRollupAddresses.Bridge = asserterBridgeAddr
asserterRollupAddresses.SequencerInbox = asserterSeqInboxAddr
asserterL2, err := arbnode.CreateNode(ctx, asserterL2Stack, asserterL2ChainDb, asserterL2ArbDb, NewFetcherFromConfig(conf), asserterL2Blockchain, l1Backend, asserterRollupAddresses, nil, nil, nil, fatalErrChan)
Require(t, err)
err = asserterL2.Start(ctx)
Require(t, err)

challengerL2Info, challengerL2Stack, challengerL2ChainDb, challengerL2ArbDb, challengerL2Blockchain := createL2BlockChain(t, nil, "", chainConfig)
challengerL2Info, challengerL2Stack, challengerL2ChainDb, challengerL2ArbDb, challengerL2Blockchain := createL2BlockChainWithStackConfig(t, nil, "", chainConfig, initMessage, nil)
challengerRollupAddresses := *asserterRollupAddresses
challengerRollupAddresses.Bridge = challengerBridgeAddr
challengerRollupAddresses.SequencerInbox = challengerSeqInboxAddr
Expand Down

0 comments on commit 257a3e5

Please sign in to comment.