Documentation ¶
Index ¶
- Constants
- Variables
- func AddressToCodeNamespace(addr common.Address) (common.Address, error)
- func BuildL1DeveloperGenesis(config *DeployConfig, dump *gstate.Dump, l1Deployments *L1Deployments) (*core.Genesis, error)
- func BuildL2Genesis(config *DeployConfig, l1StartBlock *types.Block) (*core.Genesis, error)
- func FundDevAccounts(db vm.StateDB)
- func GetBlockFromTag(chain ethereum.ChainReader, tag *rpc.BlockNumberOrHash) (*types.Block, error)
- func IsL2DevPredeploy(addr common.Address) bool
- func NewL1Genesis(config *DeployConfig) (*core.Genesis, error)
- func NewL2Genesis(config *DeployConfig, block *types.Block) (*core.Genesis, error)
- func NewL2ImmutableConfig(config *DeployConfig, block *types.Block) (*immutables.PredeploysImmutableConfig, error)
- func NewL2StorageConfig(config *DeployConfig, block *types.Block) (state.StorageConfig, error)
- func NewStateDump(path string) (*gstate.Dump, error)
- func PerformUpgradeTxs(db *state.MemoryStateDB) error
- func PostProcessL1DeveloperGenesis(stateDB *state.MemoryStateDB, deployments *L1Deployments) error
- func SetPrecompileBalances(db vm.StateDB)
- type DeployConfig
- func (d *DeployConfig) CanyonTime(genesisTime uint64) *uint64
- func (d *DeployConfig) Check() error
- func (d *DeployConfig) CheckAddresses() error
- func (d *DeployConfig) Copy() *DeployConfig
- func (d *DeployConfig) DeltaTime(genesisTime uint64) *uint64
- func (d *DeployConfig) EcotoneTime(genesisTime uint64) *uint64
- func (d *DeployConfig) FjordTime(genesisTime uint64) *uint64
- func (d *DeployConfig) GovernanceEnabled() bool
- func (d *DeployConfig) InteropTime(genesisTime uint64) *uint64
- func (d *DeployConfig) RegolithTime(genesisTime uint64) *uint64
- func (d *DeployConfig) RollupConfig(l1StartBlock *types.Block, l2GenesisBlockHash common.Hash, ...) (*rollup.Config, error)
- func (d *DeployConfig) SetDeployments(deployments *L1Deployments)
- type ForgeDump
- type L1Deployments
- type MarshalableRPCBlockNumberOrHash
- func (m *MarshalableRPCBlockNumberOrHash) Hash() (common.Hash, bool)
- func (m *MarshalableRPCBlockNumberOrHash) MarshalJSON() ([]byte, error)
- func (m *MarshalableRPCBlockNumberOrHash) Number() (rpc.BlockNumber, bool)
- func (m *MarshalableRPCBlockNumberOrHash) String() string
- func (m *MarshalableRPCBlockNumberOrHash) UnmarshalJSON(b []byte) error
Constants ¶
const PrecompileCount = 256
PrecompileCount represents the number of precompile addresses starting from `address(0)` to PrecompileCount that are funded with a single wei in the genesis state.
Variables ¶
var ( ErrInvalidDeployConfig = errors.New("invalid deploy config") ErrInvalidImmutablesConfig = errors.New("invalid immutables config") )
var ( // BigL2PredeployNamespace represents the predeploy namespace as a big.Int BigL2PredeployNamespace = new(big.Int).SetBytes(l2PredeployNamespace.Bytes()) // ImplementationSlot represents the EIP 1967 implementation storage slot ImplementationSlot = common.HexToHash("0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc") // AdminSlot represents the EIP 1967 admin storage slot AdminSlot = common.HexToHash("0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103") )
var ( // The default values for the ResourceConfig, used as part of // an EIP-1559 curve for deposit gas. DefaultResourceConfig = bindings.ResourceMeteringResourceConfig{ MaxResourceLimit: 20_000_000, ElasticityMultiplier: 10, BaseFeeMaxChangeDenominator: 8, MinimumBaseFee: params.GWei, SystemTxMaxGas: 1_000_000, } )
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"), common.HexToAddress("0x71562b71999873DB5b286dF957af199Ec94617F7"), common.HexToAddress("0x3fab184622dc19b6109349b94811493bf2a45362"), }
DevAccounts represent the standard hardhat development accounts. These are funded if the deploy config has funding development accounts enabled.
var PoseidonByteCode, _ = hexutil.Decode("0x38600c60003961260f6000f37c010000000000000000000000000000000000000000000000000000000060003504806329a5f2f6149063299e566014176200003757fe5b7f109b7f411ba0e4c9b2b70caf5c36a7b194be7c11ad24378bfedb68592ba8118b6020527f16ed41e13bb9c0c66ae119424fddbcbc9314dc9fdbdeea55d6c64543dc4903e06040527f2b90bba00fca0589f617e7dcbfe82e0df706ab640ceb247b791a93b74e36736d6060527f2969f27eed31a480b9c36c764379dbca2cc8fdd1415c3dded62940bcde0bd7716080527f2e2419f9ec02ec394c9871c832963dc1b89d743c8c7b964029b2311687b1fe2360a0527f101071f0032379b697315876690f053d148d4e109f5fb065c8aacc55a0f89bfa60c0527f143021ec686a3f330d5f9e654638065ce6cd79e28c5b3753326244ee65a1b1a760e0527f176cc029695ad02582a70eff08a6fd99d057e12e58e7d7b6b16cdfabc8ee2911610100527f19a3fc0a56702bf417ba7fee3802593fa644470307043f7773279cd71d25d5e0610120527f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000016024356004356000837f0ee9a592ba9a9518d05986d656f40c2114c4993c11bb29938d21d47304cd8e6e82089050837f00f1445235f2148c5986587169fc1bcd887b08d4d00868df5696fff40956e86483089150837f08dff3487e8ac99e1f29a058d0fa80b930c728730b7ab36ce879f3890ecf73f58408925083818180828009800909905083828180828009800909915083838180828009800909925062000249600052620025ba565b837f2f27be690fdaee46c3ce28f7532b13c856c35342c84bda6e20966310fadc01d082089050837f2b2ae1acf68b7b8d2416bebf3d4f6234b763fe04b8043ee48b8327bebca16cf283089150837f0319d062072bef7ecca5eac06f97d4d55952c175ab6b03eae64b44c7dbf11cfa84089250838181808280098009099050838281808280098009099150838381808280098009099250620002ec600052620025ba565b837f28813dcaebaeaa828a376df87af4a63bc8b7bf27ad49c6298ef7b387bf28526d82089050837f2727673b2ccbc903f181bf38e1c1d40d2033865200c352bc150928adddf9cb7883089150837f234ec45ca27727c2e74abd2b2a1494cd6efbd43e340587d6b8fb9e31e65cc632840892508381818082800980090990508382818082800980090991508383818082800980090992506200038f600052620025ba565b837f15b52534031ae18f7f862cb2cf7cf760ab10a8150a337b1ccd99ff6e8797d42882089050837f0dc8fad6d9e4b35f5ed9a3d186b79ce38e0e8a8d1b58b132d701d4eecf68d1f683089150837f1bcd95ffc211fbca600f705fad3fb567ea4eb378f62e1fec97805518a47e4d9c8408925083818180828009800909905083828180828009800909915083838180828009800909925062000432600052620025ba565b837f10520b0ab721cadfe9eff81b016fc34dc76da36c2578937817cb978d069de55982089050837f1f6d48149b8e7f7d9b257d8ed5fbbaf42932498075fed0ace88a9eb81f5627f683089150837f1d9655f652309014d29e00ef35a2089bfff8dc1c816f0dc9ca34bdb5460c870584089250838181808280098009099050620004bd600052620025ba565b837f04df5a56ff95bcafb051f7b1cd43a99ba731ff67e47032058fe3d4185697cc7d82089050837f0672d995f8fff640151b3d290cedaf148690a10a8c8424a7f6ec282b6e4be82883089150837f099952b414884454b21200d7ffafdd5f0c9a9dcc06f2708e9fc1d8209b5c75b98408925083818180828009800909905062000548600052620025ba565b837f052cba2255dfd00c7c483143ba8d469448e43586a9b4cd9183fd0e843a6b9fa682089050837f0b8badee690adb8eb0bd74712b7999af82de55707251ad7716077cb93c464ddc83089150837f119b1590f13307af5a1ee651020c07c749c15d60683a8050b963d0a8e4b2bdd184089250838181808280098009099050620005d3600052620025ba565b837f03150b7cd6d5d17b2529d36be0f67b832c4acfc884ef4ee5ce15be0bfb4a8d0982089050837f2cc6182c5e14546e3cf1951f173912355374efb83d80898abe69cb317c9ea56583089150837f005032551e6378c450cfe129a404b3764218cadedac14e2b92d2cd73111bf0f9840892508381818082800980090990506200065e600052620025ba565b837f233237e3289baa34bb147e972ebcb9516469c399fcc069fb88f9da2cc28276b582089050837f05c8f4f4ebd4a6e3c980d31674bfbe6323037f21b34ae5a4e80c2d4c24d6028083089150837f0a7b1db13042d396ba05d818a319f25252bcf35ef3aeed91ee1f09b2590fc65b84089250838181808280098009099050620006e9600052620025ba565b837f2a73b71f9b210cf5b14296572c9d32dbf156e2b086ff47dc5df542365a404ec082089050837f1ac9b0417abcc9a1935107e9ffc91dc3ec18f2c4dbe7f22976a760bb5c50c46083089150837f12c0339ae08374823fabb076707ef479269f3e4d6cb104349015ee046dc93fc08408925083818180828009800909905062000774600052620025ba565b837f0b7475b102a165ad7f5b18db4e1e704f52900aa3253baac68246682e56e9a28e82089050837f037c2849e191ca3edb1c5e49f6e8b8917c843e379366f2ea32ab3aa88d7f844883089150837f05a6811f8556f014e92674661e217e9bd5206c5c93a07dc145fdb176a716346f84089250838181808280098009099050620007ff600052620025ba565b837f29a795e7d98028946e947b75d54e9f044076e87a7b2883b47b675ef5f38bd66e82089050837f20439a0c84b322eb45a3857afc18f5826e8c7382c8a1585c507be199981fd22f83089150837f2e0ba8d94d9ecf4a94ec2050c7371ff1bb50f27799a84b6d4a2a6f2a0982c887840892508381818082800980090990506200088a600052620025ba565b837f143fd115ce08fb27ca38eb7cce822b4517822cd2109048d2e6d0ddcca17d71c882089050837f0c64cbecb1c734b857968dbbdcf813cdf8611659323dbcbfc84323623be9caf183089150837f028a305847c683f646fca925c163ff5ae74f348d62c2b670f1426cef9403da538408925083818180828009800909905062000915600052620025ba565b837f2e4ef510ff0b6fda5fa940ab4c4380f26a6bcb64d89427b824d6755b5db9e30c82089050837f0081c95bc43384e663d79270c956ce3b8925b4f6d033b078b96384f50579400e83089150837f2ed5f0c91cbd9749187e2fade687e05ee2491b349c039a0bba8a9f4023a0bb3884089250838181808280098009099050620009a0600052620025ba565b837f30509991f88da3504bbf374ed5aae2f03448a22c76234c8c990f01f33a73520682089050837f1c3f20fd55409a53221b7c4d49a356b9f0a1119fb2067b41a7529094424ec6ad83089150837f10b4e7f3ab5df003049514459b6e18eec46bb2213e8e131e170887b47ddcb96c8408925083818180828009800909905062000a2b600052620025ba565b837f2a1982979c3ff7f43ddd543d891c2abddd80f804c077d775039aa3502e43adef82089050837f1c74ee64f15e1db6feddbead56d6d55dba431ebc396c9af95cad0f1315bd5c9183089150837f07533ec850ba7f98eab9303cace01b4b9e4f2e8b82708cfa9c2fe45a0ae146a08408925083818180828009800909905062000ab6600052620025ba565b837f21576b438e500449a151e4eeaf17b154285c68f42d42c1808a11abf3764c075082089050837f2f17c0559b8fe79608ad5ca193d62f10bce8384c815f0906743d6930836d4a9e83089150837f2d477e3862d07708a79e8aae946170bc9775a4201318474ae665b0b1b7e2730e8408925083818180828009800909905062000b41600052620025ba565b837f162f5243967064c390e095577984f291afba2266c38f5abcd89be0f5b2747eab82089050837f2b4cb233ede9ba48264ecd2c8ae50d1ad7a8596a87f29f8a7777a7009239331183089150837f2c8fbcb2dd8573dc1dbaf8f4622854776db2eece6d85c4cf4254e7c35e03b07a8408925083818180828009800909905062000bcc600052620025ba565b837f1d6f347725e4816af2ff453f0cd56b199e1b61e9f601e9ade5e88db870949da982089050837f204b0c397f4ebe71ebc2d8b3df5b913df9e6ac02b68d31324cd49af5c456552983089150837f0c4cb9dc3c4fd8174f1149b3c63c3c2f9ecb827cd7dc25534ff8fb75bc79c5028408925083818180828009800909905062000c57600052620025ba565b837f174ad61a1448c899a25416474f4930301e5c49475279e0639a616ddc45bc7b5482089050837f1a96177bcf4d8d89f759df4ec2f3cde2eaaa28c177cc0fa13a9816d49a38d2ef83089150837f066d04b24331d71cd0ef8054bc60c4ff05202c126a233c1a8242ace360b8a30a8408925083818180828009800909905062000ce2600052620025ba565b837f2a4c4fc6ec0b0cf52195782871c6dd3b381cc65f72e02ad527037a62aa1bd80482089050837f13ab2d136ccf37d447e9f2e14a7cedc95e727f8446f6d9d7e55afc01219fd64983089150837f1121552fca26061619d24d843dc82769c1b04fcec26f55194c2e3e869acc6a9a8408925083818180828009800909905062000d6d600052620025ba565b837f00ef653322b13d6c889bc81715c37d77a6cd267d595c4a8909a5546c7c97cff182089050837f0e25483e45a665208b261d8ba74051e6400c776d652595d9845aca35d8a397d383089150837f29f536dcb9dd7682245264659e15d88e395ac3d4dde92d8c46448db979eeba898408925083818180828009800909905062000df8600052620025ba565b837f2a56ef9f2c53febadfda33575dbdbd885a124e2780bbea170e456baace0fa5be82089050837f1c8361c78eb5cf5decfb7a2d17b5c409f2ae2999a46762e8ee416240a8cb9af183089150837f151aff5f38b20a0fc0473089aaf0206b83e8e68a764507bfd3d0ab4be74319c58408925083818180828009800909905062000e83600052620025ba565b837f04c6187e41ed881dc1b239c88f7f9d43a9f52fc8c8b6cdd1e76e47615b51f10082089050837f13b37bd80f4d27fb10d84331f6fb6d534b81c61ed15776449e801b7ddc9c296783089150837f01a5c536273c2d9df578bfbd32c17b7a2ce3664c2a52032c9321ceb1c4e8a8e48408925083818180828009800909905062000f0e600052620025ba565b837f2ab3561834ca73835ad05f5d7acb950b4a9a2c666b9726da832239065b7c3b0282089050837f1d4d8ec291e720db200fe6d686c0d613acaf6af4e95d3bf69f7ed516a597b64683089150837f041294d2cc484d228f5784fe7919fd2bb925351240a04b711514c9c80b65af1d8408925083818180828009800909905062000f99600052620025ba565b837f154ac98e01708c611c4fa715991f004898f57939d126e392042971dd90e81fc682089050837f0b339d8acca7d4f83eedd84093aef51050b3684c88f8b0b04524563bc6ea4da483089150837f0955e49e6610c94254a4f84cfbab344598f0e71eaff4a7dd81ed95b50839c82e8408925083818180828009800909905062001024600052620025ba565b837f06746a6156eba54426b9e22206f15abca9a6f41e6f535c6f3525401ea065462682089050837f0f18f5a0ecd1423c496f3820c549c27838e5790e2bd0a196ac917c7ff32077fb83089150837f04f6eeca1751f7308ac59eff5beb261e4bb563583ede7bc92a738223d6f76e1384089250838181808280098009099050620010af600052620025ba565b837f2b56973364c4c4f5c1a3ec4da3cdce038811eb116fb3e45bc1768d26fc0b375882089050837f123769dd49d5b054dcd76b89804b1bcb8e1392b385716a5d83feb65d437f29ef83089150837f2147b424fc48c80a88ee52b91169aacea989f6446471150994257b2fb01c63e9840892508381818082800980090990506200113a600052620025ba565b837f0fdc1f58548b85701a6c5505ea332a29647e6f34ad4243c2ea54ad897cebe54d82089050837f12373a8251fea004df68abcf0f7786d4bceff28c5dbbe0c3944f685cc0a0b1f283089150837f21e4f4ea5f35f85bad7ea52ff742c9e8a642756b6af44203dd8a1f35c1a9003584089250838181808280098009099050620011c5600052620025ba565b837f16243916d69d2ca3dfb4722224d4c462b57366492f45e90d8a81934f1bc3b14782089050837f1efbe46dd7a578b4f66f9adbc88b4378abc21566e1a0453ca13a4159cac04ac283089150837f07ea5e8537cf5dd08886020e23a7f387d468d5525be66f853b672cc96a88969a8408925083818180828009800909905062001250600052620025ba565b837f05a8c4f9968b8aa3b7b478a30f9a5b63650f19a75e7ce11ca9fe16c0b76c00bc82089050837f20f057712cc21654fbfe59bd345e8dac3f7818c701b9c7882d9d57b72a32e83f83089150837f04a12ededa9dfd689672f8c67fee31636dcd8e88d01d49019bd90b33eb33db6984089250838181808280098009099050620012db600052620025ba565b837f27e88d8c15f37dcee44f1e5425a51decbd136ce5091a6767e49ec9544ccd101a82089050837f2feed17b84285ed9b8a5c8c5e95a41f66e096619a7703223176c41ee433de4d183089150837f1ed7cc76edf45c7c404241420f729cf394e5942911312a0d6972b8bd53aff2b88408925083818180828009800909905062001366600052620025ba565b837f15742e99b9bfa323157ff8c586f5660eac6783476144cdcadf2874be45466b1a82089050837f1aac285387f65e82c895fc6887ddf40577107454c6ec0317284f033f27d0c78583089150837f25851c3c845d4790f9ddadbdb6057357832e2e7a49775f71ec75a96554d67c7784089250838181808280098009099050620013f1600052620025ba565b837f15a5821565cc2ec2ce78457db197edf353b7ebba2c5523370ddccc3d9f146a6782089050837f2411d57a4813b9980efa7e31a1db5966dcf64f36044277502f15485f28c7172783089150837f002e6f8d6520cd4713e335b8c0b6d2e647e9a98e12f4cd2558828b5ef6cb4c9b840892508381818082800980090990506200147c600052620025ba565b837f2ff7bc8f4380cde997da00b616b0fcd1af8f0e91e2fe1ed7398834609e0315d282089050837f00b9831b948525595ee02724471bcd182e9521f6b7bb68f1e93be4febb0d3cbe83089150837f0a2f53768b8ebf6a86913b0e57c04e011ca408648a4743a87d77adbf0c9c35128408925083818180828009800909905062001507600052620025ba565b837f00248156142fd0373a479f91ff239e960f599ff7e94be69b7f2a290305e1198d82089050837f171d5620b87bfb1328cf8c02ab3f0c9a397196aa6a542c2350eb512a2b2bcda983089150837f170a4f55536f7dc970087c7c10d6fad760c952172dd54dd99d1045e4ec34a8088408925083818180828009800909905062001592600052620025ba565b837f29aba33f799fe66c2ef3134aea04336ecc37e38c1cd211ba482eca17e2dbfae182089050837f1e9bc179a4fdd758fdd1bb1945088d47e70d114a03f6a0e8b5ba650369e6497383089150837f1dd269799b660fad58f7f4892dfb0b5afeaad869a9c4b44f9c9e1c43bdaf8f09840892508381818082800980090990506200161d600052620025ba565b837f22cdbc8b70117ad1401181d02e15459e7ccd426fe869c7c95d1dd2cb0f24af3882089050837f0ef042e454771c533a9f57a55c503fcefd3150f52ed94a7cd5ba93b9c7dacefd83089150837f11609e06ad6c8fe2f287f3036037e8851318e8b08a0359a03b304ffca62e828484089250838181808280098009099050620016a8600052620025ba565b837f1166d9e554616dba9e753eea427c17b7fecd58c076dfe42708b08f5b783aa9af82089050837f2de52989431a859593413026354413db177fbf4cd2ac0b56f855a888357ee46683089150837f3006eb4ffc7a85819a6da492f3a8ac1df51aee5b17b8e89d74bf01cf5f71e9ad8408925083818180828009800909905062001733600052620025ba565b837f2af41fbb61ba8a80fdcf6fff9e3f6f422993fe8f0a4639f962344c822514508682089050837f119e684de476155fe5a6b41a8ebc85db8718ab27889e85e781b214bace4827c383089150837f1835b786e2e8925e188bea59ae363537b51248c23828f047cff784b97b3fd80084089250838181808280098009099050620017be600052620025ba565b837f28201a34c594dfa34d794996c6433a20d152bac2a7905c926c40e285ab32eeb682089050837f083efd7a27d1751094e80fefaf78b000864c82eb571187724a761f88c22cc4e783089150837f0b6f88a3577199526158e61ceea27be811c16df7774dd8519e079564f61fd13b8408925083818180828009800909905062001849600052620025ba565b837f0ec868e6d15e51d9644f66e1d6471a94589511ca00d29e1014390e6ee4254f5b82089050837f2af33e3f866771271ac0c9b3ed2e1142ecd3e74b939cd40d00d937ab84c9859183089150837f0b520211f904b5e7d09b5d961c6ace7734568c547dd6858b364ce5e47951f17884089250838181808280098009099050620018d4600052620025ba565b837f0b2d722d0919a1aad8db58f10062a92ea0c56ac4270e822cca228620188a1d4082089050837f1f790d4d7f8cf094d980ceb37c2453e957b54a9991ca38bbe0061d1ed6e562d483089150837f0171eb95dfbf7d1eaea97cd385f780150885c16235a2a6a8da92ceb01e504233840892508381818082800980090990506200195f600052620025ba565b837f0c2d0e3b5fd57549329bf6885da66b9b790b40defd2c8650762305381b16887382089050837f1162fb28689c27154e5a8228b4e72b377cbcafa589e283c35d3803054407a18d83089150837f2f1459b65dee441b64ad386a91e8310f282c5a92a89e19921623ef8249711bc084089250838181808280098009099050620019ea600052620025ba565b837f1e6ff3216b688c3d996d74367d5cd4c1bc489d46754eb712c243f70d1b53cfbb82089050837f01ca8be73832b8d0681487d27d157802d741a6f36cdc2a0576881f932647887583089150837f1f7735706ffe9fc586f976d5bdf223dc680286080b10cea00b9b5de315f9650e8408925083818180828009800909905062001a75600052620025ba565b837f2522b60f4ea3307640a0c2dce041fba921ac10a3d5f096ef4745ca838285f01982089050837f23f0bee001b1029d5255075ddc957f833418cad4f52b6c3f8ce16c235572575b83089150837f2bc1ae8b8ddbb81fcaac2d44555ed5685d142633e9df905f66d9401093082d598408925083818180828009800909905062001b00600052620025ba565b837f0f9406b8296564a37304507b8dba3ed162371273a07b1fc98011fcd6ad72205f82089050837f2360a8eb0cc7defa67b72998de90714e17e75b174a52ee4acb126c8cd995f0a883089150837f15871a5cddead976804c803cbaef255eb4815a5e96df8b006dcbbc2767f889488408925083818180828009800909905062001b8b600052620025ba565b837f193a56766998ee9e0a8652dd2f3b1da0362f4f54f72379544f957ccdeefb420f82089050837f2a394a43934f86982f9be56ff4fab1703b2e63c8ad334834e4309805e777ae0f83089150837f1859954cfeb8695f3e8b635dcb345192892cd11223443ba7b4166e8876c0d1428408925083818180828009800909905062001c16600052620025ba565b837f04e1181763050e58013444dbcb99f1902b11bc25d90bbdca408d3819f4fed32b82089050837f0fdb253dee83869d40c335ea64de8c5bb10eb82db08b5e8b1f5e5552bfd05f2383089150837f058cbe8a9a5027bdaa4efb623adead6275f08686f1c08984a9d7c5bae9b4f1c08408925083818180828009800909905062001ca1600052620025ba565b837f1382edce9971e186497eadb1aeb1f52b23b4b83bef023ab0d15228b4cceca59a82089050837f03464990f045c6ee0819ca51fd11b0be7f61b8eb99f14b77e1e6634601d9e8b583089150837f23f7bfc8720dc296fff33b41f98ff83c6fcab4605db2eb5aaa5bc137aeb70a588408925083818180828009800909905062001d2c600052620025ba565b837f0a59a158e3eec2117e6e94e7f0e9decf18c3ffd5e1531a9219636158bbaf62f282089050837f06ec54c80381c052b58bf23b312ffd3ce2c4eba065420af8f4c23ed0075fd07b83089150837f118872dc832e0eb5476b56648e867ec8b09340f7a7bcb1b4962f0ff9ed1f9d018408925083818180828009800909905062001db7600052620025ba565b837f13d69fa127d834165ad5c7cba7ad59ed52e0b0f0e42d7fea95e1906b520921b182089050837f169a177f63ea681270b1c6877a73d21bde143942fb71dc55fd8a49f19f10c77b83089150837f04ef51591c6ead97ef42f287adce40d93abeb032b922f66ffb7e9a5a7450544d8408925083818180828009800909905062001e42600052620025ba565b837f256e175a1dc079390ecd7ca703fb2e3b19ec61805d4f03ced5f45ee6dd0f69ec82089050837f30102d28636abd5fe5f2af412ff6004f75cc360d3205dd2da002813d3e2ceeb283089150837f10998e42dfcd3bbf1c0714bc73eb1bf40443a3fa99bef4a31fd31be182fcc7928408925083818180828009800909905062001ecd600052620025ba565b837f193edd8e9fcf3d7625fa7d24b598a1d89f3362eaf4d582efecad76f879e3686082089050837f18168afd34f2d915d0368ce80b7b3347d1c7a561ce611425f2664d7aa51f0b5d83089150837f29383c01ebd3b6ab0c017656ebe658b6a328ec77bc33626e29e2e95b33ea61118408925083818180828009800909905062001f58600052620025ba565b837f10646d2f2603de39a1f4ae5e7771a64a702db6e86fb76ab600bf573f9010c71182089050837f0beb5e07d1b27145f575f1395a55bf132f90c25b40da7b3864d0242dcb1117fb83089150837f16d685252078c133dc0d3ecad62b5c8830f95bb2e54b59abdffbf018d96fa3368408925083818180828009800909905062001fe3600052620025ba565b837f0a6abd1d833938f33c74154e0404b4b40a555bbbec21ddfafd672dd62047f01a82089050837f1a679f5d36eb7b5c8ea12a4c2dedc8feb12dffeec450317270a6f19b34cf186083089150837f0980fb233bd456c23974d50e0ebfde4726a423eada4e8f6ffbc7592e3f1b93d6840892508381818082800980090990506200206e600052620025ba565b837f161b42232e61b84cbf1810af93a38fc0cece3d5628c9282003ebacb5c312c72b82089050837f0ada10a90c7f0520950f7d47a60d5e6a493f09787f1564e5d09203db47de1a0b83089150837f1a730d372310ba82320345a29ac4238ed3f07a8a2b4e121bb50ddb9af407f45184089250838181808280098009099050620020f9600052620025ba565b837f2c8120f268ef054f817064c369dda7ea908377feaba5c4dffbda10ef58e8c55682089050837f1c7c8824f758753fa57c00789c684217b930e95313bcb73e6e7b8649a4968f7083089150837f2cd9ed31f5f8691c8e39e4077a74faa0f400ad8b491eb3f7b47b27fa3fd1cf778408925083818180828009800909905062002184600052620025ba565b837f23ff4f9d46813457cf60d92f57618399a5e022ac321ca550854ae23918a22eea82089050837f09945a5d147a4f66ceece6405dddd9d0af5a2c5103529407dff1ea58f180426d83089150837f188d9c528025d4c2b67660c6b771b90f7c7da6eaa29d3f268a6dd223ec6fc630840892508381818082800980090990506200220f600052620025ba565b837f3050e37996596b7f81f68311431d8734dba7d926d3633595e0c0d8ddf4f0f47f82089050837f15af1169396830a91600ca8102c35c426ceae5461e3f95d89d829518d30afd7883089150837f1da6d09885432ea9a06d9f37f873d985dae933e351466b2904284da3320d8acc840892508381818082800980090990506200229a600052620025ba565b837f2796ea90d269af29f5f8acf33921124e4e4fad3dbe658945e546ee411ddaa9cb82089050837f202d7dd1da0f6b4b0325c8b3307742f01e15612ec8e9304a7cb0319e01d32d6083089150837f096d6790d05bb759156a952ba263d672a2d7f9c788f4c831a29dace4c0f8be5f8408925083818180828009800909905062002325600052620025ba565b837f054efa1f65b0fce283808965275d877b438da23ce5b13e1963798cb1447d25a482089050837f1b162f83d917e93edb3308c29802deb9d8aa690113b2e14864ccf6e18e4165f183089150837f21e5241e12564dd6fd9f1cdd2a0de39eedfefc1466cc568ec5ceb745a0506edc84089250838181808280098009099050838281808280098009099150838381808280098009099250620023c8600052620025ba565b837f1cfb5662e8cf5ac9226a80ee17b36abecb73ab5f87e161927b4349e10e4bdf0882089050837f0f21177e302a771bbae6d8d1ecb373b62c99af346220ac0129c53f666eb2410083089150837f1671522374606992affb0dd7f71b12bec4236aede6290546bcef7e1f515c2320840892508381818082800980090990508382818082800980090991508383818082800980090992506200246b600052620025ba565b837f0fa3ec5b9488259c2eb4cf24501bfad9be2ec9e42c5cc8ccd419d2a692cad87082089050837f193c0e04e0bd298357cb266c1506080ed36edce85c648cc085e8c57b1ab54bba83089150837f102adf8ef74735a27e9128306dcbc3c99f6f7291cd406578ce14ea2adaba68f8840892508381818082800980090990508382818082800980090991508383818082800980090992506200250e600052620025ba565b837f0fe0af7858e49859e2a54d6f1ad945b1316aa24bfbdd23ae40a6d0cb70c3eab182089050837f216f6717bbc7dedb08536a2220843f4e2da5f1daa9ebdefde8a5ea7344798d2283089150837f1da55cc900f0d21f4a3e694391918a1b3c23b2ac773c6b3ef88e2e422832516184089250838181808280098009099050838281808280098009099150838381808280098009099250620025b1600052620025ba565b60005260206000f35b8360205182098460405184098591088460605185098591088460805183098560a05185098691088560c05186098691088560e0518409866101005186098791088661012051870987910894509250905060005156")
Functions ¶
func AddressToCodeNamespace ¶
AddressToCodeNamespace takes a predeploy address and computes the implementation address that the implementation should be deployed at
func BuildL1DeveloperGenesis ¶
func BuildL1DeveloperGenesis(config *DeployConfig, dump *gstate.Dump, l1Deployments *L1Deployments) (*core.Genesis, error)
BuildL1DeveloperGenesis will create a L1 genesis block after creating all of the state required for an Optimism network to function. It is expected that the dump contains all of the required state to bootstrap the L1 chain.
func BuildL2Genesis ¶
BuildL2Genesis will build the L2 genesis block.
func FundDevAccounts ¶
FundDevAccounts will fund each of the development accounts.
func GetBlockFromTag ¶
func GetBlockFromTag(chain ethereum.ChainReader, tag *rpc.BlockNumberOrHash) (*types.Block, error)
GetBlockFromTag will resolve a Block given an rpc block tag
func IsL2DevPredeploy ¶
func NewL1Genesis ¶
func NewL1Genesis(config *DeployConfig) (*core.Genesis, error)
NewL1Genesis will create a new L1 genesis config
func NewL2Genesis ¶
NewL2Genesis will create a new L2 genesis
func NewL2ImmutableConfig ¶
func NewL2ImmutableConfig(config *DeployConfig, block *types.Block) (*immutables.PredeploysImmutableConfig, error)
NewL2ImmutableConfig will create an ImmutableConfig given an instance of a DeployConfig and a block.
func NewL2StorageConfig ¶
func NewL2StorageConfig(config *DeployConfig, block *types.Block) (state.StorageConfig, error)
NewL2StorageConfig will create a StorageConfig given an instance of a DeployConfig and genesis block.
func NewStateDump ¶
NewStateDump will read a Dump JSON file from disk
func PerformUpgradeTxs ¶ added in v1.4.0
func PerformUpgradeTxs(db *state.MemoryStateDB) error
func PostProcessL1DeveloperGenesis ¶
func PostProcessL1DeveloperGenesis(stateDB *state.MemoryStateDB, deployments *L1Deployments) error
PostProcessL1DeveloperGenesis will apply post processing to the L1 genesis state. This is required to handle edge cases in the genesis generation. `block.number` is used during deployment and without specifically setting the value to 0, it will cause underflow reverts for deposits in testing.
func SetPrecompileBalances ¶
SetPrecompileBalances will set a single wei at each precompile address. This is an optimization to make calling them cheaper.
Types ¶
type DeployConfig ¶
type DeployConfig struct { // L1StartingBlockTag is used to fill in the storage of the L1Block info predeploy. The rollup // config script uses this to fill the L1 genesis info for the rollup. The Output oracle deploy // script may use it if the L2 starting timestamp is nil, assuming the L2 genesis is set up // with this. L1StartingBlockTag *MarshalableRPCBlockNumberOrHash `json:"l1StartingBlockTag"` // L1ChainID is the chain ID of the L1 chain. L1ChainID uint64 `json:"l1ChainID"` // L2ChainID is the chain ID of the L2 chain. L2ChainID uint64 `json:"l2ChainID"` // L2BlockTime is the number of seconds between each L2 block. L2BlockTime uint64 `json:"l2BlockTime"` // FinalizationPeriodSeconds represents the number of seconds before an output is considered // finalized. This impacts the amount of time that withdrawals take to finalize and is // generally set to 1 week. FinalizationPeriodSeconds uint64 `json:"finalizationPeriodSeconds"` // MaxSequencerDrift is the number of seconds after the L1 timestamp of the end of the // sequencing window that batches must be included, otherwise L2 blocks including // deposits are force included. MaxSequencerDrift uint64 `json:"maxSequencerDrift"` // SequencerWindowSize is the number of L1 blocks per sequencing window. SequencerWindowSize uint64 `json:"sequencerWindowSize"` // ChannelTimeout is the number of L1 blocks that a frame stays valid when included in L1. ChannelTimeout uint64 `json:"channelTimeout"` // P2PSequencerAddress is the address of the key the sequencer uses to sign blocks on the P2P layer. P2PSequencerAddress common.Address `json:"p2pSequencerAddress"` // BatchInboxAddress is the L1 account that batches are sent to. BatchInboxAddress common.Address `json:"batchInboxAddress"` // BatchSenderAddress represents the initial sequencer account that authorizes batches. // Transactions sent from this account to the batch inbox address are considered valid. BatchSenderAddress common.Address `json:"batchSenderAddress"` // L2OutputOracleSubmissionInterval is the number of L2 blocks between outputs that are submitted // to the L2OutputOracle contract located on L1. L2OutputOracleSubmissionInterval uint64 `json:"l2OutputOracleSubmissionInterval"` // L2OutputOracleStartingTimestamp is the starting timestamp for the L2OutputOracle. // MUST be the same as the timestamp of the L2OO start block. L2OutputOracleStartingTimestamp int `json:"l2OutputOracleStartingTimestamp"` // CliqueSignerAddress represents the signer address for the clique consensus engine. // It is used in the multi-process devnet to sign blocks. CliqueSignerAddress common.Address `json:"cliqueSignerAddress"` // L1UseClique represents whether or not to use the clique consensus engine. L1UseClique bool `json:"l1UseClique"` L1BlockTime uint64 `json:"l1BlockTime"` L1GenesisBlockTimestamp hexutil.Uint64 `json:"l1GenesisBlockTimestamp"` L1GenesisBlockNonce hexutil.Uint64 `json:"l1GenesisBlockNonce"` L1GenesisBlockGasLimit hexutil.Uint64 `json:"l1GenesisBlockGasLimit"` L1GenesisBlockDifficulty *hexutil.Big `json:"l1GenesisBlockDifficulty"` L1GenesisBlockMixHash common.Hash `json:"l1GenesisBlockMixHash"` L1GenesisBlockCoinbase common.Address `json:"l1GenesisBlockCoinbase"` L1GenesisBlockNumber hexutil.Uint64 `json:"l1GenesisBlockNumber"` L1GenesisBlockGasUsed hexutil.Uint64 `json:"l1GenesisBlockGasUsed"` L1GenesisBlockParentHash common.Hash `json:"l1GenesisBlockParentHash"` L1GenesisBlockBaseFeePerGas *hexutil.Big `json:"l1GenesisBlockBaseFeePerGas"` L2GenesisBlockNonce hexutil.Uint64 `json:"l2GenesisBlockNonce"` L2GenesisBlockGasLimit hexutil.Uint64 `json:"l2GenesisBlockGasLimit"` L2GenesisBlockDifficulty *hexutil.Big `json:"l2GenesisBlockDifficulty"` L2GenesisBlockMixHash common.Hash `json:"l2GenesisBlockMixHash"` L2GenesisBlockNumber hexutil.Uint64 `json:"l2GenesisBlockNumber"` L2GenesisBlockGasUsed hexutil.Uint64 `json:"l2GenesisBlockGasUsed"` L2GenesisBlockParentHash common.Hash `json:"l2GenesisBlockParentHash"` L2GenesisBlockBaseFeePerGas *hexutil.Big `json:"l2GenesisBlockBaseFeePerGas"` // L2GenesisRegolithTimeOffset is the number of seconds after genesis block that Regolith hard fork activates. // Set it to 0 to activate at genesis. Nil to disable Regolith. L2GenesisRegolithTimeOffset *hexutil.Uint64 `json:"l2GenesisRegolithTimeOffset,omitempty"` // L2GenesisCanyonTimeOffset is the number of seconds after genesis block that Canyon hard fork activates. // Set it to 0 to activate at genesis. Nil to disable Canyon. L2GenesisCanyonTimeOffset *hexutil.Uint64 `json:"l2GenesisCanyonTimeOffset,omitempty"` // L2GenesisDeltaTimeOffset is the number of seconds after genesis block that Delta hard fork activates. // Set it to 0 to activate at genesis. Nil to disable Delta. L2GenesisDeltaTimeOffset *hexutil.Uint64 `json:"l2GenesisDeltaTimeOffset,omitempty"` // L2GenesisEcotoneTimeOffset is the number of seconds after genesis block that Ecotone hard fork activates. // Set it to 0 to activate at genesis. Nil to disable Ecotone. L2GenesisEcotoneTimeOffset *hexutil.Uint64 `json:"l2GenesisEcotoneTimeOffset,omitempty"` // L2GenesisFjordTimeOffset is the number of seconds after genesis block that Fjord hard fork activates. // Set it to 0 to activate at genesis. Nil to disable Fjord. L2GenesisFjordTimeOffset *hexutil.Uint64 `json:"l2GenesisFjordTimeOffset,omitempty"` // L2GenesisInteropTimeOffset is the number of seconds after genesis block that the Interop hard fork activates. // Set it to 0 to activate at genesis. Nil to disable Interop. L2GenesisInteropTimeOffset *hexutil.Uint64 `json:"l2GenesisInteropTimeOffset,omitempty"` // L2GenesisBlockExtraData is configurable extradata. Will default to []byte("BEDROCK") if left unspecified. L2GenesisBlockExtraData []byte `json:"l2GenesisBlockExtraData"` // ProxyAdminOwner represents the owner of the ProxyAdmin predeploy on L2. ProxyAdminOwner common.Address `json:"proxyAdminOwner"` // L1 recipient of fees accumulated in the ProtocolVault ProtocolVaultRecipient common.Address `json:"protocolVaultRecipient"` // L1 recipient of fees accumulated in the L1FeeVaultRecipient L1FeeVaultRecipient common.Address `json:"l1FeeVaultRecipient"` // L1StandardBridgeProxy represents the address of the L1StandardBridgeProxy on L1 and is used // as part of building the L2 genesis state. L1StandardBridgeProxy common.Address `json:"l1StandardBridgeProxy"` // L1CrossDomainMessengerProxy represents the address of the L1CrossDomainMessengerProxy on L1 and is used // as part of building the L2 genesis state. L1CrossDomainMessengerProxy common.Address `json:"l1CrossDomainMessengerProxy"` // L1ERC721BridgeProxy represents the address of the L1ERC721Bridge on L1 and is used // as part of building the L2 genesis state. L1ERC721BridgeProxy common.Address `json:"l1ERC721BridgeProxy"` // SystemConfigProxy represents the address of the SystemConfigProxy on L1 and is used // as part of the derivation pipeline. SystemConfigProxy common.Address `json:"systemConfigProxy"` // KromaPortalProxy represents the address of the KromaPortalProxy on L1 and is used // as part of the derivation pipeline. KromaPortalProxy common.Address `json:"kromaPortalProxy"` // GasPriceOracleOverhead represents the initial value of the gas overhead in the GasPriceOracle predeploy. GasPriceOracleOverhead uint64 `json:"gasPriceOracleOverhead"` // GasPriceOracleScalar represents the initial value of the gas scalar in the GasPriceOracle predeploy. GasPriceOracleScalar uint64 `json:"gasPriceOracleScalar"` // EnableGovernance configures whether or not include governance token predeploy. EnableGovernance bool `json:"enableGovernance"` // GovernanceTokenSymbol represents the ERC20 symbol of the GovernanceToken. GovernanceTokenSymbol string `json:"governanceTokenSymbol"` // GovernanceTokenName represents the ERC20 name of the GovernanceToken GovernanceTokenName string `json:"governanceTokenName"` // GovernanceTokenOwner represents the owner of the GovernanceToken. Has the ability // to mint and burn tokens. GovernanceTokenOwner common.Address `json:"governanceTokenOwner"` // DeploymentWaitConfirmations is the number of confirmations to wait during // deployment. This is DEPRECATED and should be removed in a future PR. DeploymentWaitConfirmations int `json:"deploymentWaitConfirmations"` // EIP1559Elasticity is the elasticity of the EIP1559 fee market. EIP1559Elasticity uint64 `json:"eip1559Elasticity"` // EIP1559Denominator is the denominator of EIP1559 base fee market. EIP1559Denominator uint64 `json:"eip1559Denominator"` // EIP1559DenominatorCanyon is the denominator of EIP1559 base fee market when Canyon is active. EIP1559DenominatorCanyon uint64 `json:"eip1559DenominatorCanyon"` // SystemConfigStartBlock represents the block at which the op-node should start syncing // from. It is an override to set this value on legacy networks where it is not set by // default. It can be removed once all networks have this value set in their storage. SystemConfigStartBlock uint64 `json:"systemConfigStartBlock"` // FundDevAccounts configures whether or not to fund the dev accounts. Should only be used // during devnet deployments. FundDevAccounts bool `json:"fundDevAccounts"` // UsePlasma is a flag that indicates if the system is using op-plasma UsePlasma bool `json:"usePlasma,omitempty"` // DAChallengeWindow represents the block interval during which the availability of a data commitment can be challenged. DAChallengeWindow uint64 `json:"daChallengeWindow,omitempty"` // DAResolveWindow represents the block interval during which a data availability challenge can be resolved. DAResolveWindow uint64 `json:"daResolveWindow,omitempty"` // DABondSize represents the required bond size to initiate a data availability challenge. DABondSize uint64 `json:"daBondSize,omitempty"` // DAResolverRefundPercentage represents the percentage of the resolving cost to be refunded to the resolver // such as 100 means 100% refund. DAResolverRefundPercentage uint64 `json:"daResolverRefundPercentage,omitempty"` // DAChallengeProxy represents the L1 address of the DataAvailabilityChallenge contract. DAChallengeProxy common.Address `json:"daChallengeProxy,omitempty"` // When Cancun activates. Relative to L1 genesis. L1CancunTimeOffset *hexutil.Uint64 `json:"l1CancunTimeOffset,omitempty"` // [Kroma: START] // ValidatorPool proxy address on L1 ValidatorPoolProxy common.Address `json:"validatorPoolProxy"` // The initial value of the validator reward scalar ValidatorRewardScalar uint64 `json:"validatorRewardScalar"` ValidatorPoolTrustedValidator common.Address `json:"validatorPoolTrustedValidator"` ValidatorPoolRequiredBondAmount *hexutil.Big `json:"validatorPoolRequiredBondAmount"` ValidatorPoolMaxUnbond uint64 `json:"validatorPoolMaxUnbond"` ValidatorPoolRoundDuration uint64 `json:"validatorPoolRoundDuration"` ColosseumCreationPeriodSeconds uint64 `json:"colosseumCreationPeriodSeconds"` ColosseumBisectionTimeout uint64 `json:"colosseumBisectionTimeout"` ColosseumProvingTimeout uint64 `json:"colosseumProvingTimeout"` ColosseumSegmentsLengths string `json:"colosseumSegmentsLengths"` ColosseumDummyHash common.Hash `json:"colosseumDummyHash"` ColosseumMaxTxs uint64 `json:"colosseumMaxTxs"` // Owner of the SecurityCouncil SecurityCouncilOwners []common.Address `json:"securityCouncilOwners"` // The initial value of the voting delay(unit:block) GovernorVotingDelayBlocks uint64 `json:"governorVotingDelayBlocks"` // The initial value of the voting period(unit:block) GovernorVotingPeriodBlocks uint64 `json:"governorVotingPeriodBlocks"` // The initial value of the proposal threshold(unit:token) GovernorProposalThreshold uint64 `json:"governorProposalThreshold"` // The initial value of the votes quorum fraction(unit:percent) GovernorVotesQuorumFractionPercent uint64 `json:"governorVotesQuorumFractionPercent"` // The latency value of the proposal executing(unit:second) TimeLockMinDelaySeconds uint64 `json:"timeLockMinDelaySeconds"` // The initial value of the L2 voting period(unit:block) L2GovernorVotingPeriodBlocks uint64 `json:"l2GovernorVotingPeriodBlocks"` // The latency value of the L2 proposal executing(unit:second) L2TimeLockMinDelaySeconds uint64 `json:"l2TimeLockMinDelaySeconds"` ZKVerifierHashScalar *hexutil.Big `json:"zkVerifierHashScalar"` ZKVerifierM56Px *hexutil.Big `json:"zkVerifierM56Px"` ZKVerifierM56Py *hexutil.Big `json:"zkVerifierM56Py"` // L1GovernanceTokenProxy represents the address of the L1GovernanceTokenProxy on L1. L1GovernanceTokenProxy common.Address `json:"l1GovernanceTokenProxy"` }
DeployConfig represents the deployment configuration for an OP Stack chain. It is used to deploy the L1 contracts as well as create the L2 genesis state.
func NewDeployConfig ¶
func NewDeployConfig(path string) (*DeployConfig, error)
NewDeployConfig reads a config file given a path on the filesystem.
func NewDeployConfigWithNetwork ¶
func NewDeployConfigWithNetwork(network, path string) (*DeployConfig, error)
NewDeployConfigWithNetwork takes a path to a deploy config directory and the network name. The config file in the deploy config directory must match the network name and be a JSON file.
func (*DeployConfig) CanyonTime ¶
func (d *DeployConfig) CanyonTime(genesisTime uint64) *uint64
func (*DeployConfig) Check ¶
func (d *DeployConfig) Check() error
Check will ensure that the config is sane and return an error when it is not
func (*DeployConfig) CheckAddresses ¶
func (d *DeployConfig) CheckAddresses() error
CheckAddresses will return an error if the addresses are not set. These values are required to create the L2 genesis state and are present in the deploy config even though the deploy config is required to deploy the contracts on L1. This creates a circular dependency that should be resolved in the future.
func (*DeployConfig) Copy ¶
func (d *DeployConfig) Copy() *DeployConfig
Copy will deeply copy the DeployConfig. This does a JSON roundtrip to copy which makes it easier to maintain, we do not need efficiency in this case.
func (*DeployConfig) DeltaTime ¶ added in v1.3.0
func (d *DeployConfig) DeltaTime(genesisTime uint64) *uint64
func (*DeployConfig) EcotoneTime ¶ added in v1.4.0
func (d *DeployConfig) EcotoneTime(genesisTime uint64) *uint64
func (*DeployConfig) FjordTime ¶ added in v1.3.0
func (d *DeployConfig) FjordTime(genesisTime uint64) *uint64
func (*DeployConfig) GovernanceEnabled ¶ added in v1.3.0
func (d *DeployConfig) GovernanceEnabled() bool
func (*DeployConfig) InteropTime ¶ added in v1.3.0
func (d *DeployConfig) InteropTime(genesisTime uint64) *uint64
func (*DeployConfig) RegolithTime ¶
func (d *DeployConfig) RegolithTime(genesisTime uint64) *uint64
func (*DeployConfig) RollupConfig ¶
func (d *DeployConfig) RollupConfig(l1StartBlock *types.Block, l2GenesisBlockHash common.Hash, l2GenesisBlockNumber uint64) (*rollup.Config, error)
RollupConfig converts a DeployConfig to a rollup.Config
func (*DeployConfig) SetDeployments ¶
func (d *DeployConfig) SetDeployments(deployments *L1Deployments)
SetDeployments will merge a Deployments into a DeployConfig.
type ForgeDump ¶ added in v1.4.0
ForgeDump is a simple alias for state.Dump that can read "nonce" as a hex string. It appears as if updates to foundry have changed the serialization of the state dump.
func (*ForgeDump) UnmarshalJSON ¶ added in v1.4.0
type L1Deployments ¶
type L1Deployments struct { /* [Kroma: START] AddressManager common.Address `json:"AddressManager"` BlockOracle common.Address `json:"BlockOracle"` DisputeGameFactory common.Address `json:"DisputeGameFactory"` DisputeGameFactoryProxy common.Address `json:"DisputeGameFactoryProxy"` [Kroma: END] */ L1CrossDomainMessenger common.Address `json:"L1CrossDomainMessenger"` L1CrossDomainMessengerProxy common.Address `json:"L1CrossDomainMessengerProxy"` L1ERC721Bridge common.Address `json:"L1ERC721Bridge"` L1ERC721BridgeProxy common.Address `json:"L1ERC721BridgeProxy"` L1StandardBridge common.Address `json:"L1StandardBridge"` L1StandardBridgeProxy common.Address `json:"L1StandardBridgeProxy"` L2OutputOracle common.Address `json:"L2OutputOracle"` L2OutputOracleProxy common.Address `json:"L2OutputOracleProxy"` KromaMintableERC20Factory common.Address `json:"KromaMintableERC20Factory"` KromaMintableERC20FactoryProxy common.Address `json:"KromaMintableERC20FactoryProxy"` KromaPortal common.Address `json:"KromaPortal"` KromaPortalProxy common.Address `json:"KromaPortalProxy"` ProxyAdmin common.Address `json:"ProxyAdmin"` SystemConfig common.Address `json:"SystemConfig"` SystemConfigProxy common.Address `json:"SystemConfigProxy"` /* [Kroma: START] ProtocolVersions common.Address `json:"ProtocolVersions"` ProtocolVersionsProxy common.Address `json:"ProtocolVersionsProxy"` [Kroma: END] */ DataAvailabilityChallenge common.Address `json:"DataAvailabilityChallenge"` DataAvailabilityChallengeProxy common.Address `json:"DataAvailabilityChallengeProxy"` // [Kroma: START] Colosseum common.Address `json:"Colosseum"` ColosseumProxy common.Address `json:"ColosseumProxy"` L1GovernanceToken common.Address `json:"L1GovernanceToken"` L1GovernanceTokenProxy common.Address `json:"L1GovernanceTokenProxy"` Poseidon2 common.Address `json:"Poseidon2"` SecurityCouncil common.Address `json:"SecurityCouncil"` SecurityCouncilProxy common.Address `json:"SecurityCouncilProxy"` SecurityCouncilToken common.Address `json:"SecurityCouncilToken"` SecurityCouncilTokenProxy common.Address `json:"SecurityCouncilTokenProxy"` TimeLock common.Address `json:"TimeLock"` TimeLockProxy common.Address `json:"TimeLockProxy"` UpgradeGovernor common.Address `json:"UpgradeGovernor"` UpgradeGovernorProxy common.Address `json:"UpgradeGovernorProxy"` ValidatorPool common.Address `json:"ValidatorPool"` ValidatorPoolProxy common.Address `json:"ValidatorPoolProxy"` ZKMerkleTrie common.Address `json:"ZKMerkleTrie"` ZKVerifier common.Address `json:"ZKVerifier"` ZKVerifierProxy common.Address `json:"ZKVerifierProxy"` }
L1Deployments represents a set of L1 contracts that are deployed.
func NewL1Deployments ¶
func NewL1Deployments(path string) (*L1Deployments, error)
NewL1Deployments will create a new L1Deployments from a JSON file on disk at the given path.
func (*L1Deployments) Check ¶
func (d *L1Deployments) Check(deployConfig *DeployConfig) error
Check will ensure that the L1Deployments are sane
func (*L1Deployments) Copy ¶
func (d *L1Deployments) Copy() *L1Deployments
Copy will copy the L1Deployments struct
type MarshalableRPCBlockNumberOrHash ¶
type MarshalableRPCBlockNumberOrHash rpc.BlockNumberOrHash
func (*MarshalableRPCBlockNumberOrHash) Hash ¶
func (m *MarshalableRPCBlockNumberOrHash) Hash() (common.Hash, bool)
Hash wraps the rpc.BlockNumberOrHash Hash method.
func (*MarshalableRPCBlockNumberOrHash) MarshalJSON ¶
func (m *MarshalableRPCBlockNumberOrHash) MarshalJSON() ([]byte, error)
func (*MarshalableRPCBlockNumberOrHash) Number ¶
func (m *MarshalableRPCBlockNumberOrHash) Number() (rpc.BlockNumber, bool)
Number wraps the rpc.BlockNumberOrHash Number method.
func (*MarshalableRPCBlockNumberOrHash) String ¶
func (m *MarshalableRPCBlockNumberOrHash) String() string
String wraps the rpc.BlockNumberOrHash String method.
func (*MarshalableRPCBlockNumberOrHash) UnmarshalJSON ¶
func (m *MarshalableRPCBlockNumberOrHash) UnmarshalJSON(b []byte) error