@@ -43,6 +43,78 @@ const GAS_LIMIT = 15000000
4343var ZERO_ADDRESS = common .HexToAddress ("0000000000000000000000000000000000000000" )
4444var OTHER_FROM_ADDR = common .HexToAddress ("8888888888888888888888888888888888888888" )
4545
46+ // Test that only the expected accounts exist in the initial state.
47+ func TestInitialState (t * testing.T ) {
48+ statedb := newState ()
49+ dump := statedb .RawDump (false , false , false )
50+
51+ codeHashes := map [string ]bool {
52+ "0xe5ac91913949a832a99293323b31665ca6bd007bca03154d64e1236aeba0b197" : false , // l2ToL1MessagePasser
53+ "0x08c32c18cdaf8b92c32b2c5cd181f7cba6656d404c3892f264decb22fd3c7510" : false , // l1MessageSender
54+ "0xe8c7ea1431f29500679b1382b4456796fc3bc1b9e28b87db81843ffc313b5c1a" : false , // l1ToL2TransactionQueue
55+ "0xeb6841864a7bb7884ae85ade69b0bb164a62a46de81749d9b5ef5716a2a8be0c" : false , // safetyTransactionQueue
56+ "0xd39c5a5b3b7637c20e47ed8afd352b115256d6d7a4f4e2c3b9c31eb8a715dcf9" : false , // canonicalTransactionChain
57+ "0xad1736290b4f564f37bae2c6083f4673ef6782670faffadc1339ad54311cd280" : false , // stateCommitmentChain
58+ "0xab0448158015a88b7858056922ac7dc309d6fa1a1fad33cbe2f6bb6183e1a709" : false , // stateManager
59+ "0x41c5aca1c7140c5a7725b92923bb8078b8eb299bb455932d1f009a9db0a20b42" : false , // executionManager
60+ "0x438eec98a6a47190006c4165134d48232cc4c3d7df5281bb310efe90846e7af2" : false , // safetyChecker
61+ "0x5598c6213e53b6f5cb5411e5caf67633f0e6df42a44a37c10d896b20580e4c31" : false , // fraudVerifier
62+ "0xc6e120fbc52b6d76231bea4c12088810b3f2f785cffb4d6e51be9441e7958198" : false , // rollupMerkleUtils
63+ "0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470" : false , // deployment EOA
64+ "0xe87f70d10b89a185d4d7dd8cbd4d57dc0dab3e098a6bc6189d02e9e5ab6f7ed2" : false , // deployerWhitelist
65+ "0x2ddfa25b687d8e01d56c9082a21496e277838bb506590105064e8030b10f710b" : false , // gasConsumer
66+ "0x73d9ed53f1efc616ffb09773a97586fd3534d2aa2d1b313dcc4b82ade559d6ee" : false , // addressResolver
67+ }
68+
69+ addresses := map [string ]bool {
70+ "0x00000000000000000000000000000000DEAD0002" : false , // addressResolver
71+ "0x4200000000000000000000000000000000000001" : false , // l1MessageSender
72+ "0x00000000000000000000000000000000DEad0003" : false , // rollupMerkleUtils
73+ "0x00000000000000000000000000000000DEAD0001" : false , // stateManager
74+ "0x00000000000000000000000000000000DeAd0006" : false , // gasConsumer
75+ "0x4200000000000000000000000000000000000000" : false , // l2ToL1MessagePasser
76+ "0x00000000000000000000000000000000DEaD000b" : false , // safetyTransactionQueue
77+ "0x00000000000000000000000000000000DeAd0000" : false , // executionManager
78+ "0x00000000000000000000000000000000DEaD000C" : false , // l1ToL2TransactionQueue
79+ "0x00000000000000000000000000000000dEad0005" : false , // stateCommitmentChain
80+ "0x00000000000000000000000000000000deaD000a" : false , // safetyChecker
81+ "0x00000000000000000000000000000000deaD0007" : false , // fraudVerifier
82+ "0x00000000000000000000000000000000deAD000E" : false , // deployment EOA
83+ "0x00000000000000000000000000000000DEAD0009" : false , // deployerWhitelist
84+ "0x00000000000000000000000000000000DeAD000D" : false , // canonicalTransactionChain
85+ }
86+
87+ for address , account := range dump .Accounts {
88+ _ , ok := addresses [address .Hex ()]
89+ if ! ok {
90+ t .Fatalf ("Unknown account in initial state: %s" , address .Hex ())
91+ }
92+ addresses [address .Hex ()] = true
93+
94+ codeHash := "0x" + account .CodeHash
95+ seen , ok := codeHashes [codeHash ]
96+ if ! ok {
97+ t .Fatalf ("Unknown code hash in initial state. Account %s, hash %s" , address .Hex (), codeHash )
98+ }
99+ if seen {
100+ t .Fatalf ("Code hash seen more than once" )
101+ }
102+ codeHashes [codeHash ] = true
103+ }
104+
105+ for k , v := range codeHashes {
106+ if v != true {
107+ t .Fatalf ("Code hash %s not found in initial state" , k )
108+ }
109+ }
110+
111+ for k , v := range addresses {
112+ if v != true {
113+ t .Fatalf ("Address %s not found in initial state" , k )
114+ }
115+ }
116+ }
117+
46118func TestContractCreationAndSimpleStorageTxs (t * testing.T ) {
47119 currentState := newState ()
48120
@@ -216,6 +288,7 @@ func newState() *state.StateDB {
216288 db := state .NewDatabase (rawdb .NewMemoryDatabase ())
217289 state , _ := state .New (common.Hash {}, db )
218290 core .ApplyOvmStateToState (state )
291+ _ , _ = state .Commit (false )
219292 return state
220293}
221294
0 commit comments