Skip to content

Commit

Permalink
begin going predeploy by predeploy, listing versions which exist
Browse files Browse the repository at this point in the history
  • Loading branch information
geoknee committed Jul 17, 2024
1 parent a015522 commit 5d766e0
Show file tree
Hide file tree
Showing 4 changed files with 39 additions and 16 deletions.
2 changes: 1 addition & 1 deletion validation/standard/config.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ import "github.com/ethereum-optimism/superchain-registry/superchain"

// Config.Params is keyed by superchain target, e.g. "mainnet" or "sepolia" or "sepolia-dev-0"
type ConfigType struct {
GenesisAlloc map[superchain.Address]superchain.GenesisAccount `json:"alloc"`
Alloc map[string][]superchain.Hash
Params map[string]*Params
Roles *Roles
MultisigRoles map[string]*MultisigRoles
Expand Down
11 changes: 4 additions & 7 deletions validation/standard/init.go
Original file line number Diff line number Diff line change
Expand Up @@ -13,18 +13,15 @@ var standardConfigFile embed.FS

func init() {

opSepoliaGenesis, err := superchain.LoadGenesis(11155420)
if err != nil {
panic(err)
}

Config = ConfigType{
GenesisAlloc: opSepoliaGenesis.Alloc,
Alloc: make(map[string][]superchain.Hash),
Params: make(map[string]*Params),
Roles: new(Roles),
MultisigRoles: make(map[string]*MultisigRoles),
}

decodeTOMLFileIntoConfig("standard-allocs.toml", &Config.Alloc)

decodeTOMLFileIntoConfig("standard-config-roles-universal.toml", Config.Roles)

networks := []string{"mainnet", "sepolia"}
Expand All @@ -40,7 +37,7 @@ func init() {
decodeTOMLFileIntoConfig("standard-versions.toml", &Versions)
}

func decodeTOMLFileIntoConfig[T Params | Roles | MultisigRoles | VersionTags](filename string, config *T) {
func decodeTOMLFileIntoConfig[T Params | Roles | MultisigRoles | VersionTags | map[string][]superchain.Hash](filename string, config *T) {
data, err := fs.ReadFile(standardConfigFile, filename)
if err != nil {
panic(err)
Expand Down
14 changes: 14 additions & 0 deletions validation/standard/standard-allocs.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
# Proxies
"0x4200000000000000000000000000000000000000" = [ # LegacyMessagePasser Proxy
"0x1f958654ab06a152993e7a0ae7b6dbb0d4b19265cc9337b8789fe1353bd9dc35", # op sepolia
"0xfa8c9db6c6cab7108dea276f4cd09d575674eb0852c0fa3187e59e98ef977998", # base devnet 0
# "0x1f958654ab06a152993e7a0ae7b6dbb0d4b19265cc9337b8789fe1353bd9dc35",
]
# Implementations
"0xc0D3C0d3C0d3C0D3c0d3C0d3c0D3C0d3c0d30000" = [ # LegacyMessagePasser Implementation
"0xd0c57b27c0149599951da23bcee9961707a75bbbf366771dc3261dd8290a7193", # op labs sepolia dev 0
"0x6a2619046f959bfd80513ca610c8357e44ada87541da78828bfa992dc40e0378", # zora sepolia
"0x74e5e83bf5526d5dfb64227d4664a88106bf04648d663cd8a95467a78995242f", # base devnet 0
"0xbed693ca28ddf7933272302afe2dedfd01d56dd67dbdb6f49f88a113f1663830", # mode 919
]
# Unproxied Predeploys
28 changes: 20 additions & 8 deletions validation/superchain-genesis_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@ import (

. "github.com/ethereum-optimism/superchain-registry/superchain"
"github.com/ethereum-optimism/superchain-registry/validation/standard"
"github.com/google/go-cmp/cmp"

"github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/core"
Expand Down Expand Up @@ -60,13 +59,26 @@ func testGenesisPredeploys(t *testing.T, chain *ChainConfig) {
g, err := LoadGenesis(chain.ChainID)
require.NoError(t, err)

// Define a filter to ignore the "storage" field
opts := cmp.FilterPath(func(path cmp.Path) bool {
return path.Last().String() == ".Storage"
}, cmp.Ignore())

if diff := cmp.Diff(standard.Config.GenesisAlloc, g.Alloc, opts); diff != "" {
t.Errorf("genesis allocs (-) do not match standard allocs (+): %s", diff)
for address, listOfAcceptableCodeHashes := range standard.Config.Alloc {
ch := g.Alloc[MustHexToAddress(address)].CodeHash
require.Contains(t, listOfAcceptableCodeHashes, ch,
"account %s: codehash %s not present in list of acceptable codehases %s", address, ch, listOfAcceptableCodeHashes)
}

}

func TestGPs(t *testing.T) {
for _, chain := range OPChains {
chain := chain
t.Run(perChainTestName(chain), func(t *testing.T) {
t.Parallel()
if chain.StandardChainCandidate == false && chain.SuperchainLevel == Frontier {
t.Skip()
}
if chain.ChainID == 10 {
t.Skip("we don't have the allocs for op mainnet")
}
testGenesisPredeploys(t, chain)
})
}
}

0 comments on commit 5d766e0

Please sign in to comment.