Skip to content

Commit

Permalink
ovm: new initial state (#23)
Browse files Browse the repository at this point in the history
* ovm: new initial state

* ovm: initial testnet state tests

* initial state: update

* state: update contracts

* initial state: document deployment addresses
  • Loading branch information
tynes authored Sep 23, 2020
1 parent f9bef88 commit 42d5a18
Show file tree
Hide file tree
Showing 2 changed files with 74 additions and 1 deletion.
2 changes: 1 addition & 1 deletion core/vm/ovm_constants.go

Large diffs are not rendered by default.

73 changes: 73 additions & 0 deletions tests/ovm_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,78 @@ const GAS_LIMIT = 15000000
var ZERO_ADDRESS = common.HexToAddress("0000000000000000000000000000000000000000")
var OTHER_FROM_ADDR = common.HexToAddress("8888888888888888888888888888888888888888")

// Test that only the expected accounts exist in the initial state.
func TestInitialState(t *testing.T) {
statedb := newState()
dump := statedb.RawDump(false, false, false)

codeHashes := map[string]bool{
"0xe5ac91913949a832a99293323b31665ca6bd007bca03154d64e1236aeba0b197": false, // l2ToL1MessagePasser
"0x08c32c18cdaf8b92c32b2c5cd181f7cba6656d404c3892f264decb22fd3c7510": false, // l1MessageSender
"0xe8c7ea1431f29500679b1382b4456796fc3bc1b9e28b87db81843ffc313b5c1a": false, // l1ToL2TransactionQueue
"0xeb6841864a7bb7884ae85ade69b0bb164a62a46de81749d9b5ef5716a2a8be0c": false, // safetyTransactionQueue
"0xd39c5a5b3b7637c20e47ed8afd352b115256d6d7a4f4e2c3b9c31eb8a715dcf9": false, // canonicalTransactionChain
"0xad1736290b4f564f37bae2c6083f4673ef6782670faffadc1339ad54311cd280": false, // stateCommitmentChain
"0xab0448158015a88b7858056922ac7dc309d6fa1a1fad33cbe2f6bb6183e1a709": false, // stateManager
"0x41c5aca1c7140c5a7725b92923bb8078b8eb299bb455932d1f009a9db0a20b42": false, // executionManager
"0x438eec98a6a47190006c4165134d48232cc4c3d7df5281bb310efe90846e7af2": false, // safetyChecker
"0x5598c6213e53b6f5cb5411e5caf67633f0e6df42a44a37c10d896b20580e4c31": false, // fraudVerifier
"0xc6e120fbc52b6d76231bea4c12088810b3f2f785cffb4d6e51be9441e7958198": false, // rollupMerkleUtils
"0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470": false, // deployment EOA
"0xe87f70d10b89a185d4d7dd8cbd4d57dc0dab3e098a6bc6189d02e9e5ab6f7ed2": false, // deployerWhitelist
"0x2ddfa25b687d8e01d56c9082a21496e277838bb506590105064e8030b10f710b": false, // gasConsumer
"0x73d9ed53f1efc616ffb09773a97586fd3534d2aa2d1b313dcc4b82ade559d6ee": false, // addressResolver
}

addresses := map[string]bool{
"0x00000000000000000000000000000000DEAD0002": false, // addressResolver
"0x4200000000000000000000000000000000000001": false, // l1MessageSender
"0x00000000000000000000000000000000DEad0003": false, // rollupMerkleUtils
"0x00000000000000000000000000000000DEAD0001": false, // stateManager
"0x00000000000000000000000000000000DeAd0006": false, // gasConsumer
"0x4200000000000000000000000000000000000000": false, // l2ToL1MessagePasser
"0x00000000000000000000000000000000DEaD000b": false, // safetyTransactionQueue
"0x00000000000000000000000000000000DeAd0000": false, // executionManager
"0x00000000000000000000000000000000DEaD000C": false, // l1ToL2TransactionQueue
"0x00000000000000000000000000000000dEad0005": false, // stateCommitmentChain
"0x00000000000000000000000000000000deaD000a": false, // safetyChecker
"0x00000000000000000000000000000000deaD0007": false, // fraudVerifier
"0x00000000000000000000000000000000deAD000E": false, // deployment EOA
"0x00000000000000000000000000000000DEAD0009": false, // deployerWhitelist
"0x00000000000000000000000000000000DeAD000D": false, // canonicalTransactionChain
}

for address, account := range dump.Accounts {
_, ok := addresses[address.Hex()]
if !ok {
t.Fatalf("Unknown account in initial state: %s", address.Hex())
}
addresses[address.Hex()] = true

codeHash := "0x" + account.CodeHash
seen, ok := codeHashes[codeHash]
if !ok {
t.Fatalf("Unknown code hash in initial state. Account %s, hash %s", address.Hex(), codeHash)
}
if seen {
t.Fatalf("Code hash seen more than once")
}
codeHashes[codeHash] = true
}

for k, v := range codeHashes {
if v != true {
t.Fatalf("Code hash %s not found in initial state", k)
}
}

for k, v := range addresses {
if v != true {
t.Fatalf("Address %s not found in initial state", k)
}
}
}

func TestContractCreationAndSimpleStorageTxs(t *testing.T) {
currentState := newState()

Expand Down Expand Up @@ -216,6 +288,7 @@ func newState() *state.StateDB {
db := state.NewDatabase(rawdb.NewMemoryDatabase())
state, _ := state.New(common.Hash{}, db)
core.ApplyOvmStateToState(state)
_, _ = state.Commit(false)
return state
}

Expand Down

0 comments on commit 42d5a18

Please sign in to comment.