forked from ethereum-optimism/optimism
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathhelpers.go
84 lines (77 loc) · 3.47 KB
/
helpers.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
package genesis
import (
"context"
"fmt"
"math/big"
"github.com/ethereum/go-ethereum"
"github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/common/hexutil"
"github.com/ethereum/go-ethereum/core/types"
"github.com/ethereum/go-ethereum/rpc"
)
var (
// ImplementationSlot represents the EIP 1967 implementation storage slot
ImplementationSlot = common.HexToHash("0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc")
// AdminSlot represents the EIP 1967 admin storage slot
AdminSlot = common.HexToHash("0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103")
// The devBalance is the amount of wei that a dev account is funded with.
devBalance = hexutil.MustDecodeBig("0x200000000000000000000000000000000000000000000000000000000000000")
)
// DevAccounts represent the standard hardhat development accounts.
// These are funded if the deploy config has funding development
// accounts enabled.
var DevAccounts = []common.Address{
common.HexToAddress("0x14dC79964da2C08b23698B3D3cc7Ca32193d9955"),
common.HexToAddress("0x15d34AAf54267DB7D7c367839AAf71A00a2C6A65"),
common.HexToAddress("0x1CBd3b2770909D4e10f157cABC84C7264073C9Ec"),
common.HexToAddress("0x23618e81E3f5cdF7f54C3d65f7FBc0aBf5B21E8f"),
common.HexToAddress("0x2546BcD3c84621e976D8185a91A922aE77ECEc30"),
common.HexToAddress("0x3C44CdDdB6a900fa2b585dd299e03d12FA4293BC"),
common.HexToAddress("0x70997970C51812dc3A010C7d01b50e0d17dc79C8"),
common.HexToAddress("0x71bE63f3384f5fb98995898A86B02Fb2426c5788"),
common.HexToAddress("0x8626f6940E2eb28930eFb4CeF49B2d1F2C9C1199"),
common.HexToAddress("0x90F79bf6EB2c4f870365E785982E1f101E93b906"),
common.HexToAddress("0x976EA74026E726554dB657fA54763abd0C3a0aa9"),
common.HexToAddress("0x9965507D1a55bcC2695C58ba16FB37d819B0A4dc"),
common.HexToAddress("0xBcd4042DE499D14e55001CcbB24a551F3b954096"),
common.HexToAddress("0xFABB0ac9d68B0B445fB7357272Ff202C5651694a"),
common.HexToAddress("0xa0Ee7A142d267C1f36714E4a8F75612F20a79720"),
common.HexToAddress("0xbDA5747bFD65F08deb54cb465eB87D40e51B197E"),
common.HexToAddress("0xcd3B766CCDd6AE721141F452C550Ca635964ce71"),
common.HexToAddress("0xdD2FD4581271e230360230F9337D5c0430Bf44C0"),
common.HexToAddress("0xdF3e18d64BC6A983f673Ab319CCaE4f1a57C7097"),
common.HexToAddress("0xDe3829A23DF1479438622a08a116E8Eb3f620BB5"),
common.HexToAddress("0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266"),
// Test account used by geth tests
common.HexToAddress("0x71562b71999873DB5b286dF957af199Ec94617F7"),
// Deployer of create2 deterministic proxy https://github.com/Arachnid/deterministic-deployment-proxy
common.HexToAddress("0x3fab184622dc19b6109349b94811493bf2a45362"),
}
// GetBlockFromTag will resolve a Block given an rpc block tag
func GetBlockFromTag(chain ethereum.ChainReader, tag *rpc.BlockNumberOrHash) (*types.Block, error) {
if hash, ok := tag.Hash(); ok {
block, err := chain.BlockByHash(context.Background(), hash)
if err != nil {
return nil, err
}
return block, nil
} else if num, ok := tag.Number(); ok {
blockNumber := new(big.Int).SetInt64(num.Int64())
block, err := chain.BlockByNumber(context.Background(), blockNumber)
if err != nil {
return nil, err
}
return block, nil
} else {
return nil, fmt.Errorf("invalid block tag: %v", tag)
}
}
// uint642Big creates a new *big.Int from a uint64.
func uint642Big(in uint64) *big.Int {
return new(big.Int).SetUint64(in)
}
func newHexBig(in uint64) *hexutil.Big {
b := new(big.Int).SetUint64(in)
hb := hexutil.Big(*b)
return &hb
}