Commit 848b4a8d authored by Delweng's avatar Delweng Committed by GitHub

ops-chain-ops: return all dev accounts if no fund configed (#12722)

* op-chain-ops: rename HasAnyDevAccounts to RetrieveDevAccounts
Signed-off-by: default avatarjsvisa <delweng@gmail.com>

* op-chain-ops: return all dev accounts instead of bool
Signed-off-by: default avatarjsvisa <delweng@gmail.com>

* Update op-chain-ops/genesis/layer_two.go
Co-authored-by: default avatarprotolambda <proto@protolambda.com>

---------
Signed-off-by: default avatarjsvisa <delweng@gmail.com>
Co-authored-by: default avatarprotolambda <proto@protolambda.com>
parent bdf8fe34
......@@ -46,10 +46,10 @@ func BuildL2Genesis(config *DeployConfig, dump *foundry.ForgeAllocs, l1StartBloc
}
genspec.Alloc = dump.Copy().Accounts
// ensure the dev accounts are not funded unintentionally
if hasDevAccounts, err := HasAnyDevAccounts(genspec.Alloc); err != nil {
if devAccounts, err := RetrieveDevAccounts(genspec.Alloc); err != nil {
return nil, fmt.Errorf("failed to check dev accounts: %w", err)
} else if hasDevAccounts != config.FundDevAccounts {
return nil, fmt.Errorf("deploy config mismatch with allocs. Deploy config fundDevAccounts: %v, actual allocs: %v", config.FundDevAccounts, hasDevAccounts)
} else if (len(devAccounts) > 0) != config.FundDevAccounts {
return nil, fmt.Errorf("deploy config mismatch with allocs. Deploy config fundDevAccounts: %v, actual allocs: %v", config.FundDevAccounts, devAccounts)
}
// sanity check the permit2 immutable, to verify we using the allocs for the right chain.
if permit2 := genspec.Alloc[predeploys.Permit2Addr].Code; len(permit2) != 0 {
......@@ -76,23 +76,24 @@ func BuildL2Genesis(config *DeployConfig, dump *foundry.ForgeAllocs, l1StartBloc
return genspec, nil
}
func HasAnyDevAccounts(allocs types.GenesisAlloc) (bool, error) {
func RetrieveDevAccounts(allocs types.GenesisAlloc) ([]common.Address, error) {
wallet, err := hdwallet.NewFromMnemonic(testMnemonic)
if err != nil {
return false, fmt.Errorf("failed to create wallet: %w", err)
return nil, fmt.Errorf("failed to create wallet: %w", err)
}
account := func(path string) accounts.Account {
return accounts.Account{URL: accounts.URL{Path: path}}
}
var devAccounts []common.Address
for i := 0; i < 30; i++ {
key, err := wallet.PrivateKey(account(fmt.Sprintf("m/44'/60'/0'/0/%d", i)))
if err != nil {
return false, err
return nil, err
}
addr := crypto.PubkeyToAddress(key.PublicKey)
if _, ok := allocs[addr]; ok {
return true, nil
devAccounts = append(devAccounts, addr)
}
}
return false, nil
return devAccounts, nil
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment