Skip to content

Commit 52a7e7e

Browse files
committed
improve proposer vm setup
1 parent 04ad55c commit 52a7e7e

File tree

1 file changed

+23
-5
lines changed

1 file changed

+23
-5
lines changed

sdk/evm/evm.go

Lines changed: 23 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -676,14 +676,27 @@ func (client Client) CreateDummyBlocks(
676676
}
677677
gasPrice := big.NewInt(legacy.BaseFee)
678678
txSigner := types.LatestSignerForChainID(chainID)
679+
blockNumber, err := client.BlockNumber()
680+
if err != nil {
681+
return fmt.Errorf("client.BlockNumber failure: %w", err)
682+
}
683+
nonce, err := client.NonceAt(addr.Hex())
684+
if err != nil {
685+
return fmt.Errorf("client.NonceAt failure: %w", err)
686+
}
679687
for i := 0; i < numBlocks; i++ {
680-
prevBlockNumber, err := client.BlockNumber()
681-
if err != nil {
688+
// it may be the case that we hit an outdated node with the rpc, so lets not fully trust the API
689+
if blockNumberFromAPI, err := client.BlockNumber(); err != nil {
682690
return fmt.Errorf("client.BlockNumber failure at step %d: %w", i, err)
691+
} else if blockNumberFromAPI > blockNumber {
692+
// changes from outside
693+
blockNumber = blockNumberFromAPI
683694
}
684-
nonce, err := client.NonceAt(addr.Hex())
685-
if err != nil {
695+
if nonceFromAPI, err := client.NonceAt(addr.Hex()); err != nil {
686696
return fmt.Errorf("client.NonceAt failure at step %d: %w", i, err)
697+
} else if nonceFromAPI > nonce {
698+
// changes from outside
699+
nonce = nonceFromAPI
687700
}
688701
// send Big1 to himself
689702
tx := types.NewTransaction(nonce, addr, common.Big1, params.TxGas, gasPrice, nil)
@@ -694,9 +707,14 @@ func (client Client) CreateDummyBlocks(
694707
if err := client.SendTransaction(triggerTx); err != nil {
695708
return fmt.Errorf("client.SendTransaction failure at step %d: %w", i, err)
696709
}
697-
if err := client.WaitForNewBlock(prevBlockNumber, 0); err != nil {
710+
if err := client.WaitForNewBlock(blockNumber, 0); err != nil {
698711
return fmt.Errorf("WaitForNewBlock failure at step %d: %w", i, err)
699712
}
713+
blockNumber++
714+
nonce++
715+
if i != numBlocks-1 {
716+
time.Sleep(5 * time.Second)
717+
}
700718
}
701719
return nil
702720
}

0 commit comments

Comments
 (0)