Commit 50131bc1 authored by Mark Tyneway's avatar Mark Tyneway

contracts-bedrock: more cleanup

parent f0506fce
...@@ -40,8 +40,8 @@ type SystemConfigResourceConfig struct { ...@@ -40,8 +40,8 @@ type SystemConfigResourceConfig struct {
// SystemConfigMetaData contains all meta data concerning the SystemConfig contract. // SystemConfigMetaData contains all meta data concerning the SystemConfig contract.
var SystemConfigMetaData = &bind.MetaData{ var SystemConfigMetaData = &bind.MetaData{
ABI: "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_overhead\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_scalar\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"_batcherHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"_gasLimit\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"_unsafeBlockSigner\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"version\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"enumSystemConfig.UpdateType\",\"name\":\"updateType\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"ConfigUpdate\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"MINIMUM_GAS_LIMIT\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"UNSAFE_BLOCK_SIGNER_SLOT\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"VERSION\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"batcherHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"gasLimit\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_overhead\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_scalar\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"_batcherHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"_gasLimit\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"_unsafeBlockSigner\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"maxResourceLimit\",\"type\":\"uint32\"},{\"internalType\":\"uint8\",\"name\":\"elasticityMultiplier\",\"type\":\"uint8\"},{\"internalType\":\"uint8\",\"name\":\"baseFeeMaxChangeDenominator\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"minimumBaseFee\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"systemTxMaxGas\",\"type\":\"uint32\"},{\"internalType\":\"uint128\",\"name\":\"maximumBaseFee\",\"type\":\"uint128\"}],\"internalType\":\"structSystemConfig.ResourceConfig\",\"name\":\"_config\",\"type\":\"tuple\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"minimumGasLimit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"overhead\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"resourceConfig\",\"outputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"maxResourceLimit\",\"type\":\"uint32\"},{\"internalType\":\"uint8\",\"name\":\"elasticityMultiplier\",\"type\":\"uint8\"},{\"internalType\":\"uint8\",\"name\":\"baseFeeMaxChangeDenominator\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"minimumBaseFee\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"systemTxMaxGas\",\"type\":\"uint32\"},{\"internalType\":\"uint128\",\"name\":\"maximumBaseFee\",\"type\":\"uint128\"}],\"internalType\":\"structSystemConfig.ResourceConfig\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"scalar\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_batcherHash\",\"type\":\"bytes32\"}],\"name\":\"setBatcherHash\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_overhead\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_scalar\",\"type\":\"uint256\"}],\"name\":\"setGasConfig\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"_gasLimit\",\"type\":\"uint64\"}],\"name\":\"setGasLimit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"maxResourceLimit\",\"type\":\"uint32\"},{\"internalType\":\"uint8\",\"name\":\"elasticityMultiplier\",\"type\":\"uint8\"},{\"internalType\":\"uint8\",\"name\":\"baseFeeMaxChangeDenominator\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"minimumBaseFee\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"systemTxMaxGas\",\"type\":\"uint32\"},{\"internalType\":\"uint128\",\"name\":\"maximumBaseFee\",\"type\":\"uint128\"}],\"internalType\":\"structSystemConfig.ResourceConfig\",\"name\":\"_config\",\"type\":\"tuple\"}],\"name\":\"setResourceConfig\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_unsafeBlockSigner\",\"type\":\"address\"}],\"name\":\"setUnsafeBlockSigner\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unsafeBlockSigner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"version\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]", ABI: "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_overhead\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_scalar\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"_batcherHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"_gasLimit\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"_unsafeBlockSigner\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"maxResourceLimit\",\"type\":\"uint32\"},{\"internalType\":\"uint8\",\"name\":\"elasticityMultiplier\",\"type\":\"uint8\"},{\"internalType\":\"uint8\",\"name\":\"baseFeeMaxChangeDenominator\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"minimumBaseFee\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"systemTxMaxGas\",\"type\":\"uint32\"},{\"internalType\":\"uint128\",\"name\":\"maximumBaseFee\",\"type\":\"uint128\"}],\"internalType\":\"structSystemConfig.ResourceConfig\",\"name\":\"_config\",\"type\":\"tuple\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"version\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"enumSystemConfig.UpdateType\",\"name\":\"updateType\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"ConfigUpdate\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"MINIMUM_GAS_LIMIT\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"UNSAFE_BLOCK_SIGNER_SLOT\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"VERSION\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"batcherHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"gasLimit\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_overhead\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_scalar\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"_batcherHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"_gasLimit\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"_unsafeBlockSigner\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"maxResourceLimit\",\"type\":\"uint32\"},{\"internalType\":\"uint8\",\"name\":\"elasticityMultiplier\",\"type\":\"uint8\"},{\"internalType\":\"uint8\",\"name\":\"baseFeeMaxChangeDenominator\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"minimumBaseFee\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"systemTxMaxGas\",\"type\":\"uint32\"},{\"internalType\":\"uint128\",\"name\":\"maximumBaseFee\",\"type\":\"uint128\"}],\"internalType\":\"structSystemConfig.ResourceConfig\",\"name\":\"_config\",\"type\":\"tuple\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"minimumGasLimit\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"overhead\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"resourceConfig\",\"outputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"maxResourceLimit\",\"type\":\"uint32\"},{\"internalType\":\"uint8\",\"name\":\"elasticityMultiplier\",\"type\":\"uint8\"},{\"internalType\":\"uint8\",\"name\":\"baseFeeMaxChangeDenominator\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"minimumBaseFee\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"systemTxMaxGas\",\"type\":\"uint32\"},{\"internalType\":\"uint128\",\"name\":\"maximumBaseFee\",\"type\":\"uint128\"}],\"internalType\":\"structSystemConfig.ResourceConfig\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"scalar\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_batcherHash\",\"type\":\"bytes32\"}],\"name\":\"setBatcherHash\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_overhead\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_scalar\",\"type\":\"uint256\"}],\"name\":\"setGasConfig\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"_gasLimit\",\"type\":\"uint64\"}],\"name\":\"setGasLimit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"maxResourceLimit\",\"type\":\"uint32\"},{\"internalType\":\"uint8\",\"name\":\"elasticityMultiplier\",\"type\":\"uint8\"},{\"internalType\":\"uint8\",\"name\":\"baseFeeMaxChangeDenominator\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"minimumBaseFee\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"systemTxMaxGas\",\"type\":\"uint32\"},{\"internalType\":\"uint128\",\"name\":\"maximumBaseFee\",\"type\":\"uint128\"}],\"internalType\":\"structSystemConfig.ResourceConfig\",\"name\":\"_config\",\"type\":\"tuple\"}],\"name\":\"setResourceConfig\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_unsafeBlockSigner\",\"type\":\"address\"}],\"name\":\"setUnsafeBlockSigner\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unsafeBlockSigner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"version\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]",
Bin: "0x60e06040523480156200001157600080fd5b5060405162001cf838038062001cf8833981016040819052620000349162000638565b6001608081815260a0918252600060c09081526040805191820181526301312d008252600a6020830152600890820152633b9aca006060820152620f4240918101919091526001600160801b03918101919091526200009987878787878787620000a6565b50505050505050620006e4565b600054610100900460ff1615808015620000c75750600054600160ff909116105b80620000f75750620000e430620002ac60201b62000ba31760201c565b158015620000f7575060005460ff166001145b620001605760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff19166001179055801562000184576000805461ff0019166101001790555b6200018e620002bb565b620001998862000323565b606587905560668690556067859055606880546001600160401b0319166001600160401b038616179055620001ec837f65a7ed542fb37fe237fdfbdd70b31598523fe5b32879e307bae27a0bd9581c0855565b620001f782620003a2565b62000201620004d3565b846001600160401b031610156200025b5760405162461bcd60e51b815260206004820152601f60248201527f53797374656d436f6e6669673a20676173206c696d697420746f6f206c6f7700604482015260640162000157565b8015620002a2576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050505050565b6001600160a01b03163b151590565b600054610100900460ff16620003175760405162461bcd60e51b815260206004820152602b602482015260008051602062001cd883398151915260448201526a6e697469616c697a696e6760a81b606482015260840162000157565b6200032162000506565b565b6200032d6200056d565b6001600160a01b038116620003945760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840162000157565b6200039f81620005c9565b50565b8060a001516001600160801b0316816060015163ffffffff161115620003c757600080fd5b6000816040015160ff1611620003dc57600080fd5b606854608082015182516001600160401b0390921691620003fe9190620006ad565b63ffffffff1611156200041057600080fd5b805160698054602084015160408501516060860151608087015160a09097015163ffffffff96871664ffffffffff199095169490941764010000000060ff948516021764ffffffffff60281b191665010000000000939092169290920263ffffffff60301b19161766010000000000009185169190910217600160501b600160f01b0319166a01000000000000000000009390941692909202600160701b600160f01b03191692909217600160701b6001600160801b0390921691909102179055565b606954600090620004fb9063ffffffff6a0100000000000000000000820481169116620006ad565b63ffffffff16905090565b600054610100900460ff16620005625760405162461bcd60e51b815260206004820152602b602482015260008051602062001cd883398151915260448201526a6e697469616c697a696e6760a81b606482015260840162000157565b6200032133620005c9565b6033546001600160a01b03163314620003215760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640162000157565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b80516001600160a01b03811681146200063357600080fd5b919050565b60008060008060008060c087890312156200065257600080fd5b6200065d876200061b565b6020880151604089015160608a015160808b0151939950919750955093506001600160401b03811681146200069157600080fd5b9150620006a160a088016200061b565b90509295509295509295565b600063ffffffff808316818516808303821115620006db57634e487b7160e01b600052601160045260246000fd5b01949350505050565b60805160a05160c0516115c4620007146000396000610599015260006105700152600061054701526115c46000f3fe608060405234801561001057600080fd5b506004361061016c5760003560e01c8063b40a817c116100cd578063f2fde38b11610081578063f68016b711610066578063f68016b71461041c578063f975e92514610430578063ffa1ad741461044357600080fd5b8063f2fde38b14610400578063f45e65d81461041357600080fd5b8063c9b26f61116100b2578063c9b26f61146102b0578063cc731b02146102c3578063e81b2c6d146103f757600080fd5b8063b40a817c1461028a578063c71973f61461029d57600080fd5b80634f16540b11610124578063715018a611610109578063715018a6146102515780638da5cb5b14610259578063935f029e1461027757600080fd5b80634f16540b1461021557806354fd4d501461023c57600080fd5b80631fd19ee1116101555780631fd19ee1146101a257806329477e86146101ea5780634add321d1461020d57600080fd5b80630c18c1621461017157806318d139181461018d575b600080fd5b61017a60655481565b6040519081526020015b60405180910390f35b6101a061019b366004611114565b61044b565b005b7f65a7ed542fb37fe237fdfbdd70b31598523fe5b32879e307bae27a0bd9581c08545b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610184565b6101f4627a120081565b60405167ffffffffffffffff9091168152602001610184565b61017a61050f565b61017a7f65a7ed542fb37fe237fdfbdd70b31598523fe5b32879e307bae27a0bd9581c0881565b610244610540565b60405161018491906111b0565b6101a06105e3565b60335473ffffffffffffffffffffffffffffffffffffffff166101c5565b6101a06102853660046111c3565b6105f7565b6101a06102983660046111fd565b610690565b6101a06102ab366004611355565b610771565b6101a06102be366004611371565b61082f565b6103876040805160c081018252600080825260208201819052918101829052606081018290526080810182905260a0810191909152506040805160c08101825260695463ffffffff8082168352640100000000820460ff9081166020850152650100000000008304169383019390935266010000000000008104831660608301526a0100000000000000000000810490921660808201526e0100000000000000000000000000009091046fffffffffffffffffffffffffffffffff1660a082015290565b6040516101849190600060c08201905063ffffffff80845116835260ff602085015116602084015260ff6040850151166040840152806060850151166060840152806080850151166080840152506fffffffffffffffffffffffffffffffff60a08401511660a083015292915050565b61017a60675481565b6101a061040e366004611114565b61085f565b61017a60665481565b6068546101f49067ffffffffffffffff1681565b6101a061043e36600461138a565b610916565b61017a600081565b610453610bbf565b61047b817f65a7ed542fb37fe237fdfbdd70b31598523fe5b32879e307bae27a0bd9581c0855565b6040805173ffffffffffffffffffffffffffffffffffffffff8316602082015260009101604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152919052905060035b60007f1d2b0bda21d56b8bd12d4f94ebacffdfb35f5e226f84b461103bb8beab6353be8360405161050391906111b0565b60405180910390a35050565b6069546000906105359063ffffffff6a010000000000000000000082048116911661142c565b63ffffffff16905090565b606061056b7f0000000000000000000000000000000000000000000000000000000000000000610c40565b6105947f0000000000000000000000000000000000000000000000000000000000000000610c40565b6105bd7f0000000000000000000000000000000000000000000000000000000000000000610c40565b6040516020016105cf93929190611454565b604051602081830303815290604052905090565b6105eb610bbf565b6105f56000610d7d565b565b6105ff610bbf565b606582905560668190556040805160208101849052908101829052600090606001604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190529050600160007f1d2b0bda21d56b8bd12d4f94ebacffdfb35f5e226f84b461103bb8beab6353be8360405161068391906111b0565b60405180910390a3505050565b610698610bbf565b6106a061050f565b8167ffffffffffffffff161015610718576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f53797374656d436f6e6669673a20676173206c696d697420746f6f206c6f770060448201526064015b60405180910390fd5b606880547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001667ffffffffffffffff831690811790915560408051602080820193909352815180820390930183528101905260026104d2565b610779610bbf565b61078281610df4565b6000816040516020016107f89190600060c08201905063ffffffff80845116835260ff602085015116602084015260ff6040850151166040840152806060850151166060840152806080850151166080840152506fffffffffffffffffffffffffffffffff60a08401511660a083015292915050565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152919052905060046104d2565b610837610bbf565b60678190556040805160208082018490528251808303909101815290820190915260006104d2565b610867610bbf565b73ffffffffffffffffffffffffffffffffffffffff811661090a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f6464726573730000000000000000000000000000000000000000000000000000606482015260840161070f565b61091381610d7d565b50565b600054610100900460ff16158080156109365750600054600160ff909116105b806109505750303b158015610950575060005460ff166001145b6109dc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a6564000000000000000000000000000000000000606482015260840161070f565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790558015610a3a57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b610a42610fb1565b610a4b8861085f565b606587905560668690556067859055606880547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001667ffffffffffffffff86161790557f65a7ed542fb37fe237fdfbdd70b31598523fe5b32879e307bae27a0bd9581c08839055610abb82610df4565b610ac361050f565b8467ffffffffffffffff161015610b36576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f53797374656d436f6e6669673a20676173206c696d697420746f6f206c6f7700604482015260640161070f565b8015610b9957600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050505050565b73ffffffffffffffffffffffffffffffffffffffff163b151590565b60335473ffffffffffffffffffffffffffffffffffffffff1633146105f5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161070f565b606081600003610c8357505060408051808201909152600181527f3000000000000000000000000000000000000000000000000000000000000000602082015290565b8160005b8115610cad5780610c97816114ca565b9150610ca69050600a83611531565b9150610c87565b60008167ffffffffffffffff811115610cc857610cc8611218565b6040519080825280601f01601f191660200182016040528015610cf2576020820181803683370190505b5090505b8415610d7557610d07600183611545565b9150610d14600a8661155c565b610d1f906030611570565b60f81b818381518110610d3457610d34611588565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350610d6e600a86611531565b9450610cf6565b949350505050565b6033805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b8060a001516fffffffffffffffffffffffffffffffff16816060015163ffffffff161115610e2157600080fd5b6000816040015160ff1611610e3557600080fd5b6068546080820151825167ffffffffffffffff90921691610e56919061142c565b63ffffffff161115610e6757600080fd5b805160698054602084015160408501516060860151608087015160a09097015163ffffffff9687167fffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000009095169490941764010000000060ff94851602177fffffffffffffffffffffffffffffffffffffffffffff0000000000ffffffffff166501000000000093909216929092027fffffffffffffffffffffffffffffffffffffffffffff00000000ffffffffffff1617660100000000000091851691909102177fffff0000000000000000000000000000000000000000ffffffffffffffffffff166a010000000000000000000093909416929092027fffff00000000000000000000000000000000ffffffffffffffffffffffffffff16929092176e0100000000000000000000000000006fffffffffffffffffffffffffffffffff90921691909102179055565b600054610100900460ff16611048576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e67000000000000000000000000000000000000000000606482015260840161070f565b6105f5600054610100900460ff166110e2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e67000000000000000000000000000000000000000000606482015260840161070f565b6105f533610d7d565b803573ffffffffffffffffffffffffffffffffffffffff8116811461110f57600080fd5b919050565b60006020828403121561112657600080fd5b61112f826110eb565b9392505050565b60005b83811015611151578181015183820152602001611139565b83811115611160576000848401525b50505050565b6000815180845261117e816020860160208601611136565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061112f6020830184611166565b600080604083850312156111d657600080fd5b50508035926020909101359150565b803567ffffffffffffffff8116811461110f57600080fd5b60006020828403121561120f57600080fd5b61112f826111e5565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b803563ffffffff8116811461110f57600080fd5b803560ff8116811461110f57600080fd5b80356fffffffffffffffffffffffffffffffff8116811461110f57600080fd5b600060c0828403121561129e57600080fd5b60405160c0810181811067ffffffffffffffff821117156112e8577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040529050806112f783611247565b81526113056020840161125b565b60208201526113166040840161125b565b604082015261132760608401611247565b606082015261133860808401611247565b608082015261134960a0840161126c565b60a08201525092915050565b600060c0828403121561136757600080fd5b61112f838361128c565b60006020828403121561138357600080fd5b5035919050565b6000806000806000806000610180888a0312156113a657600080fd5b6113af886110eb565b96506020880135955060408801359450606088013593506113d2608089016111e5565b92506113e060a089016110eb565b91506113ef8960c08a0161128c565b905092959891949750929550565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600063ffffffff80831681851680830382111561144b5761144b6113fd565b01949350505050565b60008451611466818460208901611136565b80830190507f2e0000000000000000000000000000000000000000000000000000000000000080825285516114a2816001850160208a01611136565b600192019182015283516114bd816002840160208801611136565b0160020195945050505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036114fb576114fb6113fd565b5060010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60008261154057611540611502565b500490565b600082821015611557576115576113fd565b500390565b60008261156b5761156b611502565b500690565b60008219821115611583576115836113fd565b500190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fdfea164736f6c634300080f000a496e697469616c697a61626c653a20636f6e7472616374206973206e6f742069", Bin: "0x60e06040523480156200001157600080fd5b506040516200239a3803806200239a83398101604081905262000034916200084f565b6001608081905260a052600060c052620000548787878787878762000061565b5050505050505062000a4f565b600054610100900460ff1615808015620000825750600054600160ff909116105b80620000b257506200009f306200027060201b62000bb11760201c565b158015620000b2575060005460ff166001145b6200011b5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff1916600117905580156200013f576000805461ff0019166101001790555b620001496200027f565b6200015488620002e7565b606587905560668690556067859055606880546001600160401b0319166001600160401b038616179055620001a7837f65a7ed542fb37fe237fdfbdd70b31598523fe5b32879e307bae27a0bd9581c0855565b620001b28262000366565b620001bc620006b1565b6001600160401b0316846001600160401b031610156200021f5760405162461bcd60e51b815260206004820152601f60248201527f53797374656d436f6e6669673a20676173206c696d697420746f6f206c6f7700604482015260640162000112565b801562000266576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050505050565b6001600160a01b03163b151590565b600054610100900460ff16620002db5760405162461bcd60e51b815260206004820152602b60248201526000805160206200237a83398151915260448201526a6e697469616c697a696e6760a81b606482015260840162000112565b620002e5620006de565b565b620002f162000745565b6001600160a01b038116620003585760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840162000112565b6200036381620007a1565b50565b8060a001516001600160801b0316816060015163ffffffff161115620003f55760405162461bcd60e51b815260206004820152603560248201527f53797374656d436f6e6669673a206d696e206261736520666565206d7573742060448201527f6265206c657373207468616e206d617820626173650000000000000000000000606482015260840162000112565b6000816040015160ff16116200045c5760405162461bcd60e51b815260206004820152602560248201527f53797374656d436f6e6669673a2064656e6f6d696e61746f722063616e6e6f74604482015264020626520360dc1b606482015260840162000112565b606854608082015182516001600160401b03909216916200047e91906200099e565b63ffffffff161115620004d45760405162461bcd60e51b815260206004820152601f60248201527f53797374656d436f6e6669673a20676173206c696d697420746f6f206c6f7700604482015260640162000112565b6000816020015160ff1611620005455760405162461bcd60e51b815260206004820152602f60248201527f53797374656d436f6e6669673a20656c6173746963697479206d756c7469706c60448201526e06965722063616e6e6f74206265203608c1b606482015260840162000112565b8051602082015163ffffffff82169160ff9091169062000567908290620009c9565b620005739190620009fb565b63ffffffff1614620005ee5760405162461bcd60e51b815260206004820152603760248201527f53797374656d436f6e6669673a20707265636973696f6e206c6f73732077697460448201527f6820746172676574207265736f75726365206c696d6974000000000000000000606482015260840162000112565b805160698054602084015160408501516060860151608087015160a09097015163ffffffff96871664ffffffffff199095169490941764010000000060ff948516021764ffffffffff60281b191665010000000000939092169290920263ffffffff60301b19161766010000000000009185169190910217600160501b600160f01b0319166a01000000000000000000009390941692909202600160701b600160f01b03191692909217600160701b6001600160801b0390921691909102179055565b606954600090620006d99063ffffffff6a010000000000000000000082048116911662000a2a565b905090565b600054610100900460ff166200073a5760405162461bcd60e51b815260206004820152602b60248201526000805160206200237a83398151915260448201526a6e697469616c697a696e6760a81b606482015260840162000112565b620002e533620007a1565b6033546001600160a01b03163314620002e55760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640162000112565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b80516001600160a01b03811681146200080b57600080fd5b919050565b805163ffffffff811681146200080b57600080fd5b805160ff811681146200080b57600080fd5b80516001600160801b03811681146200080b57600080fd5b60008060008060008060008789036101808112156200086d57600080fd5b6200087889620007f3565b60208a015160408b015160608c015160808d0151939b50919950975095506001600160401b038082168214620008ad57600080fd5b819550620008be60a08c01620007f3565b945060c060bf1984011215620008d357600080fd5b604051925060c08301915082821081831117156200090157634e487b7160e01b600052604160045260246000fd5b506040526200091360c08a0162000810565b81526200092360e08a0162000825565b6020820152620009376101008a0162000825565b60408201526200094b6101208a0162000810565b60608201526200095f6101408a0162000810565b6080820152620009736101608a0162000837565b60a08201528091505092959891949750929550565b634e487b7160e01b600052601160045260246000fd5b600063ffffffff808316818516808303821115620009c057620009c062000988565b01949350505050565b600063ffffffff80841680620009ef57634e487b7160e01b600052601260045260246000fd5b92169190910492915050565b600063ffffffff8083168185168183048111821515161562000a215762000a2162000988565b02949350505050565b60006001600160401b03828116848216808303821115620009c057620009c062000988565b60805160a05160c0516118fb62000a7f60003960006105930152600061056a0152600061054101526118fb6000f3fe608060405234801561001057600080fd5b506004361061016c5760003560e01c8063b40a817c116100cd578063f2fde38b11610081578063f68016b711610066578063f68016b71461041c578063f975e92514610430578063ffa1ad741461044357600080fd5b8063f2fde38b14610400578063f45e65d81461041357600080fd5b8063c9b26f61116100b2578063c9b26f61146102b0578063cc731b02146102c3578063e81b2c6d146103f757600080fd5b8063b40a817c1461028a578063c71973f61461029d57600080fd5b80634f16540b11610124578063715018a611610109578063715018a6146102515780638da5cb5b14610259578063935f029e1461027757600080fd5b80634f16540b1461021557806354fd4d501461023c57600080fd5b80631fd19ee1116101555780631fd19ee1146101a257806329477e86146101ea5780634add321d1461020d57600080fd5b80630c18c1621461017157806318d139181461018d575b600080fd5b61017a60655481565b6040519081526020015b60405180910390f35b6101a061019b3660046113d9565b61044b565b005b7f65a7ed542fb37fe237fdfbdd70b31598523fe5b32879e307bae27a0bd9581c08545b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610184565b6101f4627a120081565b60405167ffffffffffffffff9091168152602001610184565b6101f461050f565b61017a7f65a7ed542fb37fe237fdfbdd70b31598523fe5b32879e307bae27a0bd9581c0881565b61024461053a565b6040516101849190611475565b6101a06105dd565b60335473ffffffffffffffffffffffffffffffffffffffff166101c5565b6101a0610285366004611488565b6105f1565b6101a06102983660046114c2565b61068a565b6101a06102ab36600461161a565b610775565b6101a06102be366004611636565b610833565b6103876040805160c081018252600080825260208201819052918101829052606081018290526080810182905260a0810191909152506040805160c08101825260695463ffffffff8082168352640100000000820460ff9081166020850152650100000000008304169383019390935266010000000000008104831660608301526a0100000000000000000000810490921660808201526e0100000000000000000000000000009091046fffffffffffffffffffffffffffffffff1660a082015290565b6040516101849190600060c08201905063ffffffff80845116835260ff602085015116602084015260ff6040850151166040840152806060850151166060840152806080850151166080840152506fffffffffffffffffffffffffffffffff60a08401511660a083015292915050565b61017a60675481565b6101a061040e3660046113d9565b610863565b61017a60665481565b6068546101f49067ffffffffffffffff1681565b6101a061043e36600461164f565b61091a565b61017a600081565b610453610bcd565b61047b817f65a7ed542fb37fe237fdfbdd70b31598523fe5b32879e307bae27a0bd9581c0855565b6040805173ffffffffffffffffffffffffffffffffffffffff8316602082015260009101604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152919052905060035b60007f1d2b0bda21d56b8bd12d4f94ebacffdfb35f5e226f84b461103bb8beab6353be836040516105039190611475565b60405180910390a35050565b6069546000906105359063ffffffff6a01000000000000000000008204811691166116f1565b905090565b60606105657f0000000000000000000000000000000000000000000000000000000000000000610c4e565b61058e7f0000000000000000000000000000000000000000000000000000000000000000610c4e565b6105b77f0000000000000000000000000000000000000000000000000000000000000000610c4e565b6040516020016105c99392919061171d565b604051602081830303815290604052905090565b6105e5610bcd565b6105ef6000610d8b565b565b6105f9610bcd565b606582905560668190556040805160208101849052908101829052600090606001604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190529050600160007f1d2b0bda21d56b8bd12d4f94ebacffdfb35f5e226f84b461103bb8beab6353be8360405161067d9190611475565b60405180910390a3505050565b610692610bcd565b61069a61050f565b67ffffffffffffffff168167ffffffffffffffff16101561071c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f53797374656d436f6e6669673a20676173206c696d697420746f6f206c6f770060448201526064015b60405180910390fd5b606880547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001667ffffffffffffffff831690811790915560408051602080820193909352815180820390930183528101905260026104d2565b61077d610bcd565b61078681610e02565b6000816040516020016107fc9190600060c08201905063ffffffff80845116835260ff602085015116602084015260ff6040850151166040840152806060850151166060840152806080850151166080840152506fffffffffffffffffffffffffffffffff60a08401511660a083015292915050565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152919052905060046104d2565b61083b610bcd565b60678190556040805160208082018490528251808303909101815290820190915260006104d2565b61086b610bcd565b73ffffffffffffffffffffffffffffffffffffffff811661090e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610713565b61091781610d8b565b50565b600054610100900460ff161580801561093a5750600054600160ff909116105b806109545750303b158015610954575060005460ff166001145b6109e0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610713565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790558015610a3e57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b610a46611276565b610a4f88610863565b606587905560668690556067859055606880547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001667ffffffffffffffff86161790557f65a7ed542fb37fe237fdfbdd70b31598523fe5b32879e307bae27a0bd9581c08839055610abf82610e02565b610ac761050f565b67ffffffffffffffff168467ffffffffffffffff161015610b44576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f53797374656d436f6e6669673a20676173206c696d697420746f6f206c6f77006044820152606401610713565b8015610ba757600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050505050565b73ffffffffffffffffffffffffffffffffffffffff163b151590565b60335473ffffffffffffffffffffffffffffffffffffffff1633146105ef576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610713565b606081600003610c9157505060408051808201909152600181527f3000000000000000000000000000000000000000000000000000000000000000602082015290565b8160005b8115610cbb5780610ca581611793565b9150610cb49050600a836117fa565b9150610c95565b60008167ffffffffffffffff811115610cd657610cd66114dd565b6040519080825280601f01601f191660200182016040528015610d00576020820181803683370190505b5090505b8415610d8357610d1560018361180e565b9150610d22600a86611825565b610d2d906030611839565b60f81b818381518110610d4257610d42611851565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350610d7c600a866117fa565b9450610d04565b949350505050565b6033805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b8060a001516fffffffffffffffffffffffffffffffff16816060015163ffffffff161115610eb2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603560248201527f53797374656d436f6e6669673a206d696e206261736520666565206d7573742060448201527f6265206c657373207468616e206d6178206261736500000000000000000000006064820152608401610713565b6000816040015160ff1611610f49576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f53797374656d436f6e6669673a2064656e6f6d696e61746f722063616e6e6f7460448201527f20626520300000000000000000000000000000000000000000000000000000006064820152608401610713565b6068546080820151825167ffffffffffffffff90921691610f6a9190611880565b63ffffffff161115610fd8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f53797374656d436f6e6669673a20676173206c696d697420746f6f206c6f77006044820152606401610713565b6000816020015160ff161161106f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f53797374656d436f6e6669673a20656c6173746963697479206d756c7469706c60448201527f6965722063616e6e6f74206265203000000000000000000000000000000000006064820152608401610713565b8051602082015163ffffffff82169160ff9091169061108f90829061189f565b61109991906118c2565b63ffffffff161461112c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603760248201527f53797374656d436f6e6669673a20707265636973696f6e206c6f73732077697460448201527f6820746172676574207265736f75726365206c696d69740000000000000000006064820152608401610713565b805160698054602084015160408501516060860151608087015160a09097015163ffffffff9687167fffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000009095169490941764010000000060ff94851602177fffffffffffffffffffffffffffffffffffffffffffff0000000000ffffffffff166501000000000093909216929092027fffffffffffffffffffffffffffffffffffffffffffff00000000ffffffffffff1617660100000000000091851691909102177fffff0000000000000000000000000000000000000000ffffffffffffffffffff166a010000000000000000000093909416929092027fffff00000000000000000000000000000000ffffffffffffffffffffffffffff16929092176e0100000000000000000000000000006fffffffffffffffffffffffffffffffff90921691909102179055565b600054610100900460ff1661130d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610713565b6105ef600054610100900460ff166113a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610713565b6105ef33610d8b565b803573ffffffffffffffffffffffffffffffffffffffff811681146113d457600080fd5b919050565b6000602082840312156113eb57600080fd5b6113f4826113b0565b9392505050565b60005b838110156114165781810151838201526020016113fe565b83811115611425576000848401525b50505050565b600081518084526114438160208601602086016113fb565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006113f4602083018461142b565b6000806040838503121561149b57600080fd5b50508035926020909101359150565b803567ffffffffffffffff811681146113d457600080fd5b6000602082840312156114d457600080fd5b6113f4826114aa565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b803563ffffffff811681146113d457600080fd5b803560ff811681146113d457600080fd5b80356fffffffffffffffffffffffffffffffff811681146113d457600080fd5b600060c0828403121561156357600080fd5b60405160c0810181811067ffffffffffffffff821117156115ad577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040529050806115bc8361150c565b81526115ca60208401611520565b60208201526115db60408401611520565b60408201526115ec6060840161150c565b60608201526115fd6080840161150c565b608082015261160e60a08401611531565b60a08201525092915050565b600060c0828403121561162c57600080fd5b6113f48383611551565b60006020828403121561164857600080fd5b5035919050565b6000806000806000806000610180888a03121561166b57600080fd5b611674886113b0565b9650602088013595506040880135945060608801359350611697608089016114aa565b92506116a560a089016113b0565b91506116b48960c08a01611551565b905092959891949750929550565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600067ffffffffffffffff808316818516808303821115611714576117146116c2565b01949350505050565b6000845161172f8184602089016113fb565b80830190507f2e00000000000000000000000000000000000000000000000000000000000000808252855161176b816001850160208a016113fb565b600192019182015283516117868160028401602088016113fb565b0160020195945050505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036117c4576117c46116c2565b5060010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600082611809576118096117cb565b500490565b600082821015611820576118206116c2565b500390565b600082611834576118346117cb565b500690565b6000821982111561184c5761184c6116c2565b500190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600063ffffffff808316818516808303821115611714576117146116c2565b600063ffffffff808416806118b6576118b66117cb565b92169190910492915050565b600063ffffffff808316818516818304811182151516156118e5576118e56116c2565b0294935050505056fea164736f6c634300080f000a496e697469616c697a61626c653a20636f6e7472616374206973206e6f742069",
} }
// SystemConfigABI is the input ABI used to generate the binding from. // SystemConfigABI is the input ABI used to generate the binding from.
...@@ -53,7 +53,7 @@ var SystemConfigABI = SystemConfigMetaData.ABI ...@@ -53,7 +53,7 @@ var SystemConfigABI = SystemConfigMetaData.ABI
var SystemConfigBin = SystemConfigMetaData.Bin var SystemConfigBin = SystemConfigMetaData.Bin
// DeploySystemConfig deploys a new Ethereum contract, binding an instance of SystemConfig to it. // DeploySystemConfig deploys a new Ethereum contract, binding an instance of SystemConfig to it.
func DeploySystemConfig(auth *bind.TransactOpts, backend bind.ContractBackend, _owner common.Address, _overhead *big.Int, _scalar *big.Int, _batcherHash [32]byte, _gasLimit uint64, _unsafeBlockSigner common.Address) (common.Address, *types.Transaction, *SystemConfig, error) { func DeploySystemConfig(auth *bind.TransactOpts, backend bind.ContractBackend, _owner common.Address, _overhead *big.Int, _scalar *big.Int, _batcherHash [32]byte, _gasLimit uint64, _unsafeBlockSigner common.Address, _config SystemConfigResourceConfig) (common.Address, *types.Transaction, *SystemConfig, error) {
parsed, err := SystemConfigMetaData.GetAbi() parsed, err := SystemConfigMetaData.GetAbi()
if err != nil { if err != nil {
return common.Address{}, nil, nil, err return common.Address{}, nil, nil, err
...@@ -62,7 +62,7 @@ func DeploySystemConfig(auth *bind.TransactOpts, backend bind.ContractBackend, _ ...@@ -62,7 +62,7 @@ func DeploySystemConfig(auth *bind.TransactOpts, backend bind.ContractBackend, _
return common.Address{}, nil, nil, errors.New("GetABI returned nil") return common.Address{}, nil, nil, errors.New("GetABI returned nil")
} }
address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(SystemConfigBin), backend, _owner, _overhead, _scalar, _batcherHash, _gasLimit, _unsafeBlockSigner) address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(SystemConfigBin), backend, _owner, _overhead, _scalar, _batcherHash, _gasLimit, _unsafeBlockSigner, _config)
if err != nil { if err != nil {
return common.Address{}, nil, nil, err return common.Address{}, nil, nil, err
} }
...@@ -368,16 +368,16 @@ func (_SystemConfig *SystemConfigCallerSession) GasLimit() (uint64, error) { ...@@ -368,16 +368,16 @@ func (_SystemConfig *SystemConfigCallerSession) GasLimit() (uint64, error) {
// MinimumGasLimit is a free data retrieval call binding the contract method 0x4add321d. // MinimumGasLimit is a free data retrieval call binding the contract method 0x4add321d.
// //
// Solidity: function minimumGasLimit() view returns(uint256) // Solidity: function minimumGasLimit() view returns(uint64)
func (_SystemConfig *SystemConfigCaller) MinimumGasLimit(opts *bind.CallOpts) (*big.Int, error) { func (_SystemConfig *SystemConfigCaller) MinimumGasLimit(opts *bind.CallOpts) (uint64, error) {
var out []interface{} var out []interface{}
err := _SystemConfig.contract.Call(opts, &out, "minimumGasLimit") err := _SystemConfig.contract.Call(opts, &out, "minimumGasLimit")
if err != nil { if err != nil {
return *new(*big.Int), err return *new(uint64), err
} }
out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64)
return out0, err return out0, err
...@@ -385,15 +385,15 @@ func (_SystemConfig *SystemConfigCaller) MinimumGasLimit(opts *bind.CallOpts) (* ...@@ -385,15 +385,15 @@ func (_SystemConfig *SystemConfigCaller) MinimumGasLimit(opts *bind.CallOpts) (*
// MinimumGasLimit is a free data retrieval call binding the contract method 0x4add321d. // MinimumGasLimit is a free data retrieval call binding the contract method 0x4add321d.
// //
// Solidity: function minimumGasLimit() view returns(uint256) // Solidity: function minimumGasLimit() view returns(uint64)
func (_SystemConfig *SystemConfigSession) MinimumGasLimit() (*big.Int, error) { func (_SystemConfig *SystemConfigSession) MinimumGasLimit() (uint64, error) {
return _SystemConfig.Contract.MinimumGasLimit(&_SystemConfig.CallOpts) return _SystemConfig.Contract.MinimumGasLimit(&_SystemConfig.CallOpts)
} }
// MinimumGasLimit is a free data retrieval call binding the contract method 0x4add321d. // MinimumGasLimit is a free data retrieval call binding the contract method 0x4add321d.
// //
// Solidity: function minimumGasLimit() view returns(uint256) // Solidity: function minimumGasLimit() view returns(uint64)
func (_SystemConfig *SystemConfigCallerSession) MinimumGasLimit() (*big.Int, error) { func (_SystemConfig *SystemConfigCallerSession) MinimumGasLimit() (uint64, error) {
return _SystemConfig.Contract.MinimumGasLimit(&_SystemConfig.CallOpts) return _SystemConfig.Contract.MinimumGasLimit(&_SystemConfig.CallOpts)
} }
......
...@@ -13,7 +13,7 @@ const SystemConfigStorageLayoutJSON = "{\"storage\":[{\"astId\":1000,\"contract\ ...@@ -13,7 +13,7 @@ const SystemConfigStorageLayoutJSON = "{\"storage\":[{\"astId\":1000,\"contract\
var SystemConfigStorageLayout = new(solc.StorageLayout) var SystemConfigStorageLayout = new(solc.StorageLayout)
var SystemConfigDeployedBin = "0x608060405234801561001057600080fd5b506004361061016c5760003560e01c8063b40a817c116100cd578063f2fde38b11610081578063f68016b711610066578063f68016b71461041c578063f975e92514610430578063ffa1ad741461044357600080fd5b8063f2fde38b14610400578063f45e65d81461041357600080fd5b8063c9b26f61116100b2578063c9b26f61146102b0578063cc731b02146102c3578063e81b2c6d146103f757600080fd5b8063b40a817c1461028a578063c71973f61461029d57600080fd5b80634f16540b11610124578063715018a611610109578063715018a6146102515780638da5cb5b14610259578063935f029e1461027757600080fd5b80634f16540b1461021557806354fd4d501461023c57600080fd5b80631fd19ee1116101555780631fd19ee1146101a257806329477e86146101ea5780634add321d1461020d57600080fd5b80630c18c1621461017157806318d139181461018d575b600080fd5b61017a60655481565b6040519081526020015b60405180910390f35b6101a061019b366004611114565b61044b565b005b7f65a7ed542fb37fe237fdfbdd70b31598523fe5b32879e307bae27a0bd9581c08545b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610184565b6101f4627a120081565b60405167ffffffffffffffff9091168152602001610184565b61017a61050f565b61017a7f65a7ed542fb37fe237fdfbdd70b31598523fe5b32879e307bae27a0bd9581c0881565b610244610540565b60405161018491906111b0565b6101a06105e3565b60335473ffffffffffffffffffffffffffffffffffffffff166101c5565b6101a06102853660046111c3565b6105f7565b6101a06102983660046111fd565b610690565b6101a06102ab366004611355565b610771565b6101a06102be366004611371565b61082f565b6103876040805160c081018252600080825260208201819052918101829052606081018290526080810182905260a0810191909152506040805160c08101825260695463ffffffff8082168352640100000000820460ff9081166020850152650100000000008304169383019390935266010000000000008104831660608301526a0100000000000000000000810490921660808201526e0100000000000000000000000000009091046fffffffffffffffffffffffffffffffff1660a082015290565b6040516101849190600060c08201905063ffffffff80845116835260ff602085015116602084015260ff6040850151166040840152806060850151166060840152806080850151166080840152506fffffffffffffffffffffffffffffffff60a08401511660a083015292915050565b61017a60675481565b6101a061040e366004611114565b61085f565b61017a60665481565b6068546101f49067ffffffffffffffff1681565b6101a061043e36600461138a565b610916565b61017a600081565b610453610bbf565b61047b817f65a7ed542fb37fe237fdfbdd70b31598523fe5b32879e307bae27a0bd9581c0855565b6040805173ffffffffffffffffffffffffffffffffffffffff8316602082015260009101604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152919052905060035b60007f1d2b0bda21d56b8bd12d4f94ebacffdfb35f5e226f84b461103bb8beab6353be8360405161050391906111b0565b60405180910390a35050565b6069546000906105359063ffffffff6a010000000000000000000082048116911661142c565b63ffffffff16905090565b606061056b7f0000000000000000000000000000000000000000000000000000000000000000610c40565b6105947f0000000000000000000000000000000000000000000000000000000000000000610c40565b6105bd7f0000000000000000000000000000000000000000000000000000000000000000610c40565b6040516020016105cf93929190611454565b604051602081830303815290604052905090565b6105eb610bbf565b6105f56000610d7d565b565b6105ff610bbf565b606582905560668190556040805160208101849052908101829052600090606001604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190529050600160007f1d2b0bda21d56b8bd12d4f94ebacffdfb35f5e226f84b461103bb8beab6353be8360405161068391906111b0565b60405180910390a3505050565b610698610bbf565b6106a061050f565b8167ffffffffffffffff161015610718576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f53797374656d436f6e6669673a20676173206c696d697420746f6f206c6f770060448201526064015b60405180910390fd5b606880547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001667ffffffffffffffff831690811790915560408051602080820193909352815180820390930183528101905260026104d2565b610779610bbf565b61078281610df4565b6000816040516020016107f89190600060c08201905063ffffffff80845116835260ff602085015116602084015260ff6040850151166040840152806060850151166060840152806080850151166080840152506fffffffffffffffffffffffffffffffff60a08401511660a083015292915050565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152919052905060046104d2565b610837610bbf565b60678190556040805160208082018490528251808303909101815290820190915260006104d2565b610867610bbf565b73ffffffffffffffffffffffffffffffffffffffff811661090a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f6464726573730000000000000000000000000000000000000000000000000000606482015260840161070f565b61091381610d7d565b50565b600054610100900460ff16158080156109365750600054600160ff909116105b806109505750303b158015610950575060005460ff166001145b6109dc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a6564000000000000000000000000000000000000606482015260840161070f565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790558015610a3a57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b610a42610fb1565b610a4b8861085f565b606587905560668690556067859055606880547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001667ffffffffffffffff86161790557f65a7ed542fb37fe237fdfbdd70b31598523fe5b32879e307bae27a0bd9581c08839055610abb82610df4565b610ac361050f565b8467ffffffffffffffff161015610b36576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f53797374656d436f6e6669673a20676173206c696d697420746f6f206c6f7700604482015260640161070f565b8015610b9957600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050505050565b73ffffffffffffffffffffffffffffffffffffffff163b151590565b60335473ffffffffffffffffffffffffffffffffffffffff1633146105f5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161070f565b606081600003610c8357505060408051808201909152600181527f3000000000000000000000000000000000000000000000000000000000000000602082015290565b8160005b8115610cad5780610c97816114ca565b9150610ca69050600a83611531565b9150610c87565b60008167ffffffffffffffff811115610cc857610cc8611218565b6040519080825280601f01601f191660200182016040528015610cf2576020820181803683370190505b5090505b8415610d7557610d07600183611545565b9150610d14600a8661155c565b610d1f906030611570565b60f81b818381518110610d3457610d34611588565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350610d6e600a86611531565b9450610cf6565b949350505050565b6033805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b8060a001516fffffffffffffffffffffffffffffffff16816060015163ffffffff161115610e2157600080fd5b6000816040015160ff1611610e3557600080fd5b6068546080820151825167ffffffffffffffff90921691610e56919061142c565b63ffffffff161115610e6757600080fd5b805160698054602084015160408501516060860151608087015160a09097015163ffffffff9687167fffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000009095169490941764010000000060ff94851602177fffffffffffffffffffffffffffffffffffffffffffff0000000000ffffffffff166501000000000093909216929092027fffffffffffffffffffffffffffffffffffffffffffff00000000ffffffffffff1617660100000000000091851691909102177fffff0000000000000000000000000000000000000000ffffffffffffffffffff166a010000000000000000000093909416929092027fffff00000000000000000000000000000000ffffffffffffffffffffffffffff16929092176e0100000000000000000000000000006fffffffffffffffffffffffffffffffff90921691909102179055565b600054610100900460ff16611048576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e67000000000000000000000000000000000000000000606482015260840161070f565b6105f5600054610100900460ff166110e2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e67000000000000000000000000000000000000000000606482015260840161070f565b6105f533610d7d565b803573ffffffffffffffffffffffffffffffffffffffff8116811461110f57600080fd5b919050565b60006020828403121561112657600080fd5b61112f826110eb565b9392505050565b60005b83811015611151578181015183820152602001611139565b83811115611160576000848401525b50505050565b6000815180845261117e816020860160208601611136565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061112f6020830184611166565b600080604083850312156111d657600080fd5b50508035926020909101359150565b803567ffffffffffffffff8116811461110f57600080fd5b60006020828403121561120f57600080fd5b61112f826111e5565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b803563ffffffff8116811461110f57600080fd5b803560ff8116811461110f57600080fd5b80356fffffffffffffffffffffffffffffffff8116811461110f57600080fd5b600060c0828403121561129e57600080fd5b60405160c0810181811067ffffffffffffffff821117156112e8577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040529050806112f783611247565b81526113056020840161125b565b60208201526113166040840161125b565b604082015261132760608401611247565b606082015261133860808401611247565b608082015261134960a0840161126c565b60a08201525092915050565b600060c0828403121561136757600080fd5b61112f838361128c565b60006020828403121561138357600080fd5b5035919050565b6000806000806000806000610180888a0312156113a657600080fd5b6113af886110eb565b96506020880135955060408801359450606088013593506113d2608089016111e5565b92506113e060a089016110eb565b91506113ef8960c08a0161128c565b905092959891949750929550565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600063ffffffff80831681851680830382111561144b5761144b6113fd565b01949350505050565b60008451611466818460208901611136565b80830190507f2e0000000000000000000000000000000000000000000000000000000000000080825285516114a2816001850160208a01611136565b600192019182015283516114bd816002840160208801611136565b0160020195945050505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036114fb576114fb6113fd565b5060010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60008261154057611540611502565b500490565b600082821015611557576115576113fd565b500390565b60008261156b5761156b611502565b500690565b60008219821115611583576115836113fd565b500190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fdfea164736f6c634300080f000a" var SystemConfigDeployedBin = "0x608060405234801561001057600080fd5b506004361061016c5760003560e01c8063b40a817c116100cd578063f2fde38b11610081578063f68016b711610066578063f68016b71461041c578063f975e92514610430578063ffa1ad741461044357600080fd5b8063f2fde38b14610400578063f45e65d81461041357600080fd5b8063c9b26f61116100b2578063c9b26f61146102b0578063cc731b02146102c3578063e81b2c6d146103f757600080fd5b8063b40a817c1461028a578063c71973f61461029d57600080fd5b80634f16540b11610124578063715018a611610109578063715018a6146102515780638da5cb5b14610259578063935f029e1461027757600080fd5b80634f16540b1461021557806354fd4d501461023c57600080fd5b80631fd19ee1116101555780631fd19ee1146101a257806329477e86146101ea5780634add321d1461020d57600080fd5b80630c18c1621461017157806318d139181461018d575b600080fd5b61017a60655481565b6040519081526020015b60405180910390f35b6101a061019b3660046113d9565b61044b565b005b7f65a7ed542fb37fe237fdfbdd70b31598523fe5b32879e307bae27a0bd9581c08545b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610184565b6101f4627a120081565b60405167ffffffffffffffff9091168152602001610184565b6101f461050f565b61017a7f65a7ed542fb37fe237fdfbdd70b31598523fe5b32879e307bae27a0bd9581c0881565b61024461053a565b6040516101849190611475565b6101a06105dd565b60335473ffffffffffffffffffffffffffffffffffffffff166101c5565b6101a0610285366004611488565b6105f1565b6101a06102983660046114c2565b61068a565b6101a06102ab36600461161a565b610775565b6101a06102be366004611636565b610833565b6103876040805160c081018252600080825260208201819052918101829052606081018290526080810182905260a0810191909152506040805160c08101825260695463ffffffff8082168352640100000000820460ff9081166020850152650100000000008304169383019390935266010000000000008104831660608301526a0100000000000000000000810490921660808201526e0100000000000000000000000000009091046fffffffffffffffffffffffffffffffff1660a082015290565b6040516101849190600060c08201905063ffffffff80845116835260ff602085015116602084015260ff6040850151166040840152806060850151166060840152806080850151166080840152506fffffffffffffffffffffffffffffffff60a08401511660a083015292915050565b61017a60675481565b6101a061040e3660046113d9565b610863565b61017a60665481565b6068546101f49067ffffffffffffffff1681565b6101a061043e36600461164f565b61091a565b61017a600081565b610453610bcd565b61047b817f65a7ed542fb37fe237fdfbdd70b31598523fe5b32879e307bae27a0bd9581c0855565b6040805173ffffffffffffffffffffffffffffffffffffffff8316602082015260009101604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152919052905060035b60007f1d2b0bda21d56b8bd12d4f94ebacffdfb35f5e226f84b461103bb8beab6353be836040516105039190611475565b60405180910390a35050565b6069546000906105359063ffffffff6a01000000000000000000008204811691166116f1565b905090565b60606105657f0000000000000000000000000000000000000000000000000000000000000000610c4e565b61058e7f0000000000000000000000000000000000000000000000000000000000000000610c4e565b6105b77f0000000000000000000000000000000000000000000000000000000000000000610c4e565b6040516020016105c99392919061171d565b604051602081830303815290604052905090565b6105e5610bcd565b6105ef6000610d8b565b565b6105f9610bcd565b606582905560668190556040805160208101849052908101829052600090606001604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190529050600160007f1d2b0bda21d56b8bd12d4f94ebacffdfb35f5e226f84b461103bb8beab6353be8360405161067d9190611475565b60405180910390a3505050565b610692610bcd565b61069a61050f565b67ffffffffffffffff168167ffffffffffffffff16101561071c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f53797374656d436f6e6669673a20676173206c696d697420746f6f206c6f770060448201526064015b60405180910390fd5b606880547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001667ffffffffffffffff831690811790915560408051602080820193909352815180820390930183528101905260026104d2565b61077d610bcd565b61078681610e02565b6000816040516020016107fc9190600060c08201905063ffffffff80845116835260ff602085015116602084015260ff6040850151166040840152806060850151166060840152806080850151166080840152506fffffffffffffffffffffffffffffffff60a08401511660a083015292915050565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152919052905060046104d2565b61083b610bcd565b60678190556040805160208082018490528251808303909101815290820190915260006104d2565b61086b610bcd565b73ffffffffffffffffffffffffffffffffffffffff811661090e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610713565b61091781610d8b565b50565b600054610100900460ff161580801561093a5750600054600160ff909116105b806109545750303b158015610954575060005460ff166001145b6109e0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610713565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790558015610a3e57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b610a46611276565b610a4f88610863565b606587905560668690556067859055606880547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001667ffffffffffffffff86161790557f65a7ed542fb37fe237fdfbdd70b31598523fe5b32879e307bae27a0bd9581c08839055610abf82610e02565b610ac761050f565b67ffffffffffffffff168467ffffffffffffffff161015610b44576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f53797374656d436f6e6669673a20676173206c696d697420746f6f206c6f77006044820152606401610713565b8015610ba757600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050505050565b73ffffffffffffffffffffffffffffffffffffffff163b151590565b60335473ffffffffffffffffffffffffffffffffffffffff1633146105ef576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610713565b606081600003610c9157505060408051808201909152600181527f3000000000000000000000000000000000000000000000000000000000000000602082015290565b8160005b8115610cbb5780610ca581611793565b9150610cb49050600a836117fa565b9150610c95565b60008167ffffffffffffffff811115610cd657610cd66114dd565b6040519080825280601f01601f191660200182016040528015610d00576020820181803683370190505b5090505b8415610d8357610d1560018361180e565b9150610d22600a86611825565b610d2d906030611839565b60f81b818381518110610d4257610d42611851565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350610d7c600a866117fa565b9450610d04565b949350505050565b6033805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b8060a001516fffffffffffffffffffffffffffffffff16816060015163ffffffff161115610eb2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603560248201527f53797374656d436f6e6669673a206d696e206261736520666565206d7573742060448201527f6265206c657373207468616e206d6178206261736500000000000000000000006064820152608401610713565b6000816040015160ff1611610f49576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f53797374656d436f6e6669673a2064656e6f6d696e61746f722063616e6e6f7460448201527f20626520300000000000000000000000000000000000000000000000000000006064820152608401610713565b6068546080820151825167ffffffffffffffff90921691610f6a9190611880565b63ffffffff161115610fd8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f53797374656d436f6e6669673a20676173206c696d697420746f6f206c6f77006044820152606401610713565b6000816020015160ff161161106f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f53797374656d436f6e6669673a20656c6173746963697479206d756c7469706c60448201527f6965722063616e6e6f74206265203000000000000000000000000000000000006064820152608401610713565b8051602082015163ffffffff82169160ff9091169061108f90829061189f565b61109991906118c2565b63ffffffff161461112c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603760248201527f53797374656d436f6e6669673a20707265636973696f6e206c6f73732077697460448201527f6820746172676574207265736f75726365206c696d69740000000000000000006064820152608401610713565b805160698054602084015160408501516060860151608087015160a09097015163ffffffff9687167fffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000009095169490941764010000000060ff94851602177fffffffffffffffffffffffffffffffffffffffffffff0000000000ffffffffff166501000000000093909216929092027fffffffffffffffffffffffffffffffffffffffffffff00000000ffffffffffff1617660100000000000091851691909102177fffff0000000000000000000000000000000000000000ffffffffffffffffffff166a010000000000000000000093909416929092027fffff00000000000000000000000000000000ffffffffffffffffffffffffffff16929092176e0100000000000000000000000000006fffffffffffffffffffffffffffffffff90921691909102179055565b600054610100900460ff1661130d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610713565b6105ef600054610100900460ff166113a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610713565b6105ef33610d8b565b803573ffffffffffffffffffffffffffffffffffffffff811681146113d457600080fd5b919050565b6000602082840312156113eb57600080fd5b6113f4826113b0565b9392505050565b60005b838110156114165781810151838201526020016113fe565b83811115611425576000848401525b50505050565b600081518084526114438160208601602086016113fb565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006113f4602083018461142b565b6000806040838503121561149b57600080fd5b50508035926020909101359150565b803567ffffffffffffffff811681146113d457600080fd5b6000602082840312156114d457600080fd5b6113f4826114aa565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b803563ffffffff811681146113d457600080fd5b803560ff811681146113d457600080fd5b80356fffffffffffffffffffffffffffffffff811681146113d457600080fd5b600060c0828403121561156357600080fd5b60405160c0810181811067ffffffffffffffff821117156115ad577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040529050806115bc8361150c565b81526115ca60208401611520565b60208201526115db60408401611520565b60408201526115ec6060840161150c565b60608201526115fd6080840161150c565b608082015261160e60a08401611531565b60a08201525092915050565b600060c0828403121561162c57600080fd5b6113f48383611551565b60006020828403121561164857600080fd5b5035919050565b6000806000806000806000610180888a03121561166b57600080fd5b611674886113b0565b9650602088013595506040880135945060608801359350611697608089016114aa565b92506116a560a089016113b0565b91506116b48960c08a01611551565b905092959891949750929550565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600067ffffffffffffffff808316818516808303821115611714576117146116c2565b01949350505050565b6000845161172f8184602089016113fb565b80830190507f2e00000000000000000000000000000000000000000000000000000000000000808252855161176b816001850160208a016113fb565b600192019182015283516117868160028401602088016113fb565b0160020195945050505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036117c4576117c46116c2565b5060010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600082611809576118096117cb565b500490565b600082821015611820576118206116c2565b500390565b600082611834576118346117cb565b500690565b6000821982111561184c5761184c6116c2565b500190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600063ffffffff808316818516808303821115611714576117146116c2565b600063ffffffff808416806118b6576118b66117cb565b92169190910492915050565b600063ffffffff808316818516818304811182151516156118e5576118e56116c2565b0294935050505056fea164736f6c634300080f000a"
func init() { func init() {
if err := json.Unmarshal([]byte(SystemConfigStorageLayoutJSON), SystemConfigStorageLayout); err != nil { if err := json.Unmarshal([]byte(SystemConfigStorageLayoutJSON), SystemConfigStorageLayout); err != nil {
......
...@@ -23,18 +23,37 @@ import ( ...@@ -23,18 +23,37 @@ import (
"github.com/ethereum-optimism/optimism/op-chain-ops/state" "github.com/ethereum-optimism/optimism/op-chain-ops/state"
) )
var proxies = []string{ var (
"SystemConfigProxy", proxies = []string{
"L2OutputOracleProxy", "SystemConfigProxy",
"L1CrossDomainMessengerProxy", "L2OutputOracleProxy",
"L1StandardBridgeProxy", "L1CrossDomainMessengerProxy",
"OptimismPortalProxy", "L1StandardBridgeProxy",
"OptimismMintableERC20FactoryProxy", "OptimismPortalProxy",
} "OptimismMintableERC20FactoryProxy",
}
var portalMeteringSlot = common.Hash{31: 0x01}
portalMeteringSlot = common.Hash{31: 0x01}
zeroHash = common.Hash{}
uint128Max = new(big.Int)
defaultResourceConfig = bindings.SystemConfigResourceConfig{
MaxResourceLimit: 20_000_000,
ElasticityMultiplier: 10,
BaseFeeMaxChangeDenominator: 8,
MinimumBaseFee: params.GWei,
SystemTxMaxGas: 1_000_000,
}
)
var zeroHash common.Hash func init() {
var ok bool
uint128Max, ok = new(big.Int).SetString("ffffffffffffffffffffffffffffffff", 16)
if !ok {
panic("bad uint128Max")
}
defaultResourceConfig.MaximumBaseFee = uint128Max
}
func BuildL1DeveloperGenesis(config *DeployConfig) (*core.Genesis, error) { func BuildL1DeveloperGenesis(config *DeployConfig) (*core.Genesis, error) {
if config.L2OutputOracleStartingTimestamp != -1 { if config.L2OutputOracleStartingTimestamp != -1 {
...@@ -97,11 +116,6 @@ func BuildL1DeveloperGenesis(config *DeployConfig) (*core.Genesis, error) { ...@@ -97,11 +116,6 @@ func BuildL1DeveloperGenesis(config *DeployConfig) (*core.Genesis, error) {
gasLimit = defaultL2GasLimit gasLimit = defaultL2GasLimit
} }
uint128Max, ok := new(big.Int).SetString("ffffffffffffffffffffffffffffffff", 16)
if !ok {
return nil, errors.New("bad uint128Max")
}
data, err = sysCfgABI.Pack( data, err = sysCfgABI.Pack(
"initialize", "initialize",
config.FinalSystemOwner, config.FinalSystemOwner,
...@@ -110,14 +124,7 @@ func BuildL1DeveloperGenesis(config *DeployConfig) (*core.Genesis, error) { ...@@ -110,14 +124,7 @@ func BuildL1DeveloperGenesis(config *DeployConfig) (*core.Genesis, error) {
config.BatchSenderAddress.Hash(), config.BatchSenderAddress.Hash(),
gasLimit, gasLimit,
config.P2PSequencerAddress, config.P2PSequencerAddress,
bindings.SystemConfigResourceConfig{ defaultResourceConfig,
MaxResourceLimit: 20_000_000,
ElasticityMultiplier: 10,
BaseFeeMaxChangeDenominator: 8,
MinimumBaseFee: params.GWei,
SystemTxMaxGas: 1_000_000,
MaximumBaseFee: uint128Max,
},
) )
if err != nil { if err != nil {
return nil, fmt.Errorf("cannot abi encode initialize for SystemConfig: %w", err) return nil, fmt.Errorf("cannot abi encode initialize for SystemConfig: %w", err)
...@@ -292,6 +299,7 @@ func deployL1Contracts(config *DeployConfig, backend *backends.SimulatedBackend) ...@@ -292,6 +299,7 @@ func deployL1Contracts(config *DeployConfig, backend *backends.SimulatedBackend)
config.BatchSenderAddress.Hash(), // left-padded 32 bytes value, version is zero anyway config.BatchSenderAddress.Hash(), // left-padded 32 bytes value, version is zero anyway
gasLimit, gasLimit,
config.P2PSequencerAddress, config.P2PSequencerAddress,
defaultResourceConfig,
}, },
}, },
{ {
...@@ -361,6 +369,7 @@ func l1Deployer(backend *backends.SimulatedBackend, opts *bind.TransactOpts, dep ...@@ -361,6 +369,7 @@ func l1Deployer(backend *backends.SimulatedBackend, opts *bind.TransactOpts, dep
deployment.Args[3].(common.Hash), deployment.Args[3].(common.Hash),
deployment.Args[4].(uint64), deployment.Args[4].(uint64),
deployment.Args[5].(common.Address), deployment.Args[5].(common.Address),
deployment.Args[6].(bindings.SystemConfigResourceConfig),
) )
case "L2OutputOracle": case "L2OutputOracle":
_, tx, _, err = bindings.DeployL2OutputOracle( _, tx, _, err = bindings.DeployL2OutputOracle(
......
...@@ -100,6 +100,12 @@ func TestBuildL1DeveloperGenesis(t *testing.T) { ...@@ -100,6 +100,12 @@ func TestBuildL1DeveloperGenesis(t *testing.T) {
require.NoError(t, err) require.NoError(t, err)
require.Equal(t, "Wrapped Ether", name) require.Equal(t, "Wrapped Ether", name)
sysCfg, err := bindings.NewSystemConfig(predeploys.DevSystemConfigAddr, sim)
require.NoError(t, err)
cfg, err := sysCfg.ResourceConfig(&bind.CallOpts{})
require.NoError(t, err)
require.Equal(t, cfg, defaultResourceConfig)
// test that we can do deposits, etc. // test that we can do deposits, etc.
priv, err := crypto.HexToECDSA("ac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80") priv, err := crypto.HexToECDSA("ac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80")
require.NoError(t, err) require.NoError(t, err)
......
...@@ -81,12 +81,12 @@ contract SystemConfig is OwnableUpgradeable, Semver { ...@@ -81,12 +81,12 @@ contract SystemConfig is OwnableUpgradeable, Semver {
uint64 public constant MINIMUM_GAS_LIMIT = 8_000_000; uint64 public constant MINIMUM_GAS_LIMIT = 8_000_000;
/** /**
* @notice Fixed L2 gas overhead. * @notice Fixed L2 gas overhead. Used as part of the L2 fee calculation.
*/ */
uint256 public overhead; uint256 public overhead;
/** /**
* @notice Dynamic L2 gas overhead. * @notice Dynamic L2 gas overhead. Used as part of the L2 fee calculation.
*/ */
uint256 public scalar; uint256 public scalar;
...@@ -97,12 +97,13 @@ contract SystemConfig is OwnableUpgradeable, Semver { ...@@ -97,12 +97,13 @@ contract SystemConfig is OwnableUpgradeable, Semver {
bytes32 public batcherHash; bytes32 public batcherHash;
/** /**
* @notice L2 gas limit. * @notice L2 block gas limit.
*/ */
uint64 public gasLimit; uint64 public gasLimit;
/** /**
* @notice * @notice The configuration for the deposit fee market. Used by the OptimismPortal
* to meter the cost of buying L2 gas on L1.
*/ */
ResourceConfig internal _resourceConfig; ResourceConfig internal _resourceConfig;
...@@ -124,6 +125,7 @@ contract SystemConfig is OwnableUpgradeable, Semver { ...@@ -124,6 +125,7 @@ contract SystemConfig is OwnableUpgradeable, Semver {
* @param _batcherHash Initial batcher hash. * @param _batcherHash Initial batcher hash.
* @param _gasLimit Initial gas limit. * @param _gasLimit Initial gas limit.
* @param _unsafeBlockSigner Initial unsafe block signer address. * @param _unsafeBlockSigner Initial unsafe block signer address.
* @param _config Initial resource config.
*/ */
constructor( constructor(
address _owner, address _owner,
...@@ -131,18 +133,10 @@ contract SystemConfig is OwnableUpgradeable, Semver { ...@@ -131,18 +133,10 @@ contract SystemConfig is OwnableUpgradeable, Semver {
uint256 _scalar, uint256 _scalar,
bytes32 _batcherHash, bytes32 _batcherHash,
uint64 _gasLimit, uint64 _gasLimit,
address _unsafeBlockSigner address _unsafeBlockSigner,
ResourceConfig memory _config
) Semver(1, 1, 0) { ) Semver(1, 1, 0) {
ResourceConfig memory config = ResourceConfig({ initialize(_owner, _overhead, _scalar, _batcherHash, _gasLimit, _unsafeBlockSigner, _config);
maxResourceLimit: 20_000_000,
elasticityMultiplier: 10,
baseFeeMaxChangeDenominator: 8,
minimumBaseFee: 1 gwei,
systemTxMaxGas: 1_000_000,
maximumBaseFee: type(uint128).max
});
initialize(_owner, _overhead, _scalar, _batcherHash, _gasLimit, _unsafeBlockSigner, config);
} }
/** /**
...@@ -259,7 +253,8 @@ contract SystemConfig is OwnableUpgradeable, Semver { ...@@ -259,7 +253,8 @@ contract SystemConfig is OwnableUpgradeable, Semver {
} }
/** /**
* @notice A getter for the resource config. * @notice A getter for the resource config. Ensures that the struct is
* returned instead of a tuple.
*/ */
function resourceConfig() external view returns (ResourceConfig memory) { function resourceConfig() external view returns (ResourceConfig memory) {
return _resourceConfig; return _resourceConfig;
...@@ -284,6 +279,7 @@ contract SystemConfig is OwnableUpgradeable, Semver { ...@@ -284,6 +279,7 @@ contract SystemConfig is OwnableUpgradeable, Semver {
* - max resource limit plus system tx gas must be less than or * - max resource limit plus system tx gas must be less than or
* equal to the L2 gas limit * equal to the L2 gas limit
* - elasticity multiplier must be greater than 0 * - elasticity multiplier must be greater than 0
* - no precision loss when computing target resource limit
* *
* @param _config The new resource config * @param _config The new resource config
*/ */
...@@ -304,7 +300,7 @@ contract SystemConfig is OwnableUpgradeable, Semver { ...@@ -304,7 +300,7 @@ contract SystemConfig is OwnableUpgradeable, Semver {
require( require(
((_config.maxResourceLimit / _config.elasticityMultiplier) * ((_config.maxResourceLimit / _config.elasticityMultiplier) *
_config.elasticityMultiplier) == _config.maxResourceLimit, _config.elasticityMultiplier) == _config.maxResourceLimit,
"SystemConfig: precision loss with max and elasticity" "SystemConfig: precision loss with target resource limit"
); );
_resourceConfig = _config; _resourceConfig = _config;
......
...@@ -10,20 +10,30 @@ contract EchidnaFuzzOptimismPortal { ...@@ -10,20 +10,30 @@ contract EchidnaFuzzOptimismPortal {
bool internal failedToComplete; bool internal failedToComplete;
constructor() { constructor() {
SystemConfig config = new SystemConfig({ SystemConfig.ResourceConfig memory config = SystemConfig.ResourceConfig({
maxResourceLimit: 20_000_000,
elasticityMultiplier: 10,
baseFeeMaxChangeDenominator: 8,
minimumBaseFee: 1 gwei,
systemTxMaxGas: 1_000_000,
maximumBaseFee: type(uint128).max
});
SystemConfig systemConfig = new SystemConfig({
_owner: address(1), _owner: address(1),
_overhead: 0, _overhead: 0,
_scalar: 10000, _scalar: 10000,
_batcherHash: bytes32(0), _batcherHash: bytes32(0),
_gasLimit: 30_000_000, _gasLimit: 30_000_000,
_unsafeBlockSigner: address(0) _unsafeBlockSigner: address(0),
_config: config
}); });
portal = new OptimismPortal({ portal = new OptimismPortal({
_l2Oracle: L2OutputOracle(address(0)), _l2Oracle: L2OutputOracle(address(0)),
_guardian: address(0), _guardian: address(0),
_paused: false, _paused: false,
_config: config _config: systemConfig
}); });
} }
......
...@@ -171,13 +171,23 @@ contract Portal_Initializer is L2OutputOracle_Initializer { ...@@ -171,13 +171,23 @@ contract Portal_Initializer is L2OutputOracle_Initializer {
function setUp() public virtual override { function setUp() public virtual override {
super.setUp(); super.setUp();
SystemConfig.ResourceConfig memory config = SystemConfig.ResourceConfig({
maxResourceLimit: 20_000_000,
elasticityMultiplier: 10,
baseFeeMaxChangeDenominator: 8,
minimumBaseFee: 1 gwei,
systemTxMaxGas: 1_000_000,
maximumBaseFee: type(uint128).max
});
systemConfig = new SystemConfig({ systemConfig = new SystemConfig({
_owner: address(1), _owner: address(1),
_overhead: 0, _overhead: 0,
_scalar: 10000, _scalar: 10000,
_batcherHash: bytes32(0), _batcherHash: bytes32(0),
_gasLimit: 30_000_000, _gasLimit: 30_000_000,
_unsafeBlockSigner: address(0) _unsafeBlockSigner: address(0),
_config: config
}); });
opImpl = new OptimismPortal({ opImpl = new OptimismPortal({
......
...@@ -9,13 +9,24 @@ contract SystemConfig_Init is CommonTest { ...@@ -9,13 +9,24 @@ contract SystemConfig_Init is CommonTest {
function setUp() public virtual override { function setUp() public virtual override {
super.setUp(); super.setUp();
SystemConfig.ResourceConfig memory config = SystemConfig.ResourceConfig({
maxResourceLimit: 20_000_000,
elasticityMultiplier: 10,
baseFeeMaxChangeDenominator: 8,
minimumBaseFee: 1 gwei,
systemTxMaxGas: 1_000_000,
maximumBaseFee: type(uint128).max
});
sysConf = new SystemConfig({ sysConf = new SystemConfig({
_owner: alice, _owner: alice,
_overhead: 2100, _overhead: 2100,
_scalar: 1000000, _scalar: 1000000,
_batcherHash: bytes32(hex"abcd"), _batcherHash: bytes32(hex"abcd"),
_gasLimit: 30_000_000, _gasLimit: 30_000_000,
_unsafeBlockSigner: address(1) _unsafeBlockSigner: address(1),
_config: config
}); });
} }
} }
...@@ -24,6 +35,15 @@ contract SystemConfig_Initialize_TestFail is SystemConfig_Init { ...@@ -24,6 +35,15 @@ contract SystemConfig_Initialize_TestFail is SystemConfig_Init {
function test_initialize_lowGasLimit_reverts() external { function test_initialize_lowGasLimit_reverts() external {
uint64 minimumGasLimit = sysConf.minimumGasLimit(); uint64 minimumGasLimit = sysConf.minimumGasLimit();
SystemConfig.ResourceConfig memory cfg = SystemConfig.ResourceConfig({
maxResourceLimit: 20_000_000,
elasticityMultiplier: 10,
baseFeeMaxChangeDenominator: 8,
minimumBaseFee: 1 gwei,
systemTxMaxGas: 1_000_000,
maximumBaseFee: type(uint128).max
});
vm.expectRevert("SystemConfig: gas limit too low"); vm.expectRevert("SystemConfig: gas limit too low");
new SystemConfig({ new SystemConfig({
_owner: alice, _owner: alice,
...@@ -31,7 +51,8 @@ contract SystemConfig_Initialize_TestFail is SystemConfig_Init { ...@@ -31,7 +51,8 @@ contract SystemConfig_Initialize_TestFail is SystemConfig_Init {
_scalar: 0, _scalar: 0,
_batcherHash: bytes32(hex""), _batcherHash: bytes32(hex""),
_gasLimit: minimumGasLimit - 1, _gasLimit: minimumGasLimit - 1,
_unsafeBlockSigner: address(1) _unsafeBlockSigner: address(1),
_config: cfg
}); });
} }
} }
......
...@@ -7,13 +7,23 @@ contract SystemConfig_GasLimitLowerBound_Invariant is Test { ...@@ -7,13 +7,23 @@ contract SystemConfig_GasLimitLowerBound_Invariant is Test {
SystemConfig public config; SystemConfig public config;
function setUp() public { function setUp() public {
SystemConfig.ResourceConfig memory cfg = SystemConfig.ResourceConfig({
maxResourceLimit: 20_000_000,
elasticityMultiplier: 10,
baseFeeMaxChangeDenominator: 8,
minimumBaseFee: 1 gwei,
systemTxMaxGas: 1_000_000,
maximumBaseFee: type(uint128).max
});
config = new SystemConfig({ config = new SystemConfig({
_owner: address(0xbeef), _owner: address(0xbeef),
_overhead: 2100, _overhead: 2100,
_scalar: 1000000, _scalar: 1000000,
_batcherHash: bytes32(hex"abcd"), _batcherHash: bytes32(hex"abcd"),
_gasLimit: 30_000_000, _gasLimit: 30_000_000,
_unsafeBlockSigner: address(1) _unsafeBlockSigner: address(1),
_config: cfg
}); });
// Set the target contract to the `config` // Set the target contract to the `config`
......
import { DeployFunction } from 'hardhat-deploy/dist/types' import { DeployFunction } from 'hardhat-deploy/dist/types'
import '@eth-optimism/hardhat-deploy-config' import '@eth-optimism/hardhat-deploy-config'
import { ethers } from 'ethers'
import { assertContractVariable, deploy } from '../src/deploy-utils' import { assertContractVariable, deploy } from '../src/deploy-utils'
...@@ -18,6 +19,16 @@ const deployFn: DeployFunction = async (hre) => { ...@@ -18,6 +19,16 @@ const deployFn: DeployFunction = async (hre) => {
batcherHash, batcherHash,
hre.deployConfig.l2GenesisBlockGasLimit, hre.deployConfig.l2GenesisBlockGasLimit,
hre.deployConfig.p2pSequencerAddress, hre.deployConfig.p2pSequencerAddress,
{
maxResourceLimit: 20_000_000,
elasticityMultiplier: 10,
baseFeeMaxChangeDenominator: 8,
systemTxMaxGas: 1_000_000,
minimumBaseFee: ethers.utils.parseUnits('1', 'gwei'),
maximumBaseFee: ethers.BigNumber.from(
'0xffffffffffffffffffffffffffffffff'
),
},
], ],
postDeployAction: async (contract) => { postDeployAction: async (contract) => {
await assertContractVariable( await assertContractVariable(
......
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