diff --git a/op-bindings/Makefile b/op-bindings/Makefile index c1adee4d83521..3908880d151cd 100644 --- a/op-bindings/Makefile +++ b/op-bindings/Makefile @@ -2,7 +2,7 @@ SHELL := /bin/bash pkg := bindings -all: version mkdir bindings more +all: version mkdir bindings more cleanup-tmp bindings: l1block-bindings \ l1-cross-domain-messenger-bindings \ @@ -15,7 +15,8 @@ bindings: l1block-bindings \ l2-cross-domain-messenger-bindings \ l2-standard-bridge-bindings \ sequencer-fee-vault-bindings \ - optimism-mintable-erc20-factory-bindings \ + l1-optimism-mintable-erc20-factory-bindings \ + l2-optimism-mintable-erc20-factory-bindings \ optimism-mintable-erc20-bindings \ proxy-bindings \ proxy-admin-bindings \ @@ -31,6 +32,9 @@ compile: yarn clean && \ npx hardhat compile +cleanup-tmp: + cd ../packages/contracts-bedrock && rm -rf tmp-artifacts + l1-cross-domain-messenger-bindings: compile ./gen_bindings.sh contracts/L1/L1CrossDomainMessenger.sol:L1CrossDomainMessenger $(pkg) @@ -64,8 +68,11 @@ l2-standard-bridge-bindings: compile sequencer-fee-vault-bindings: compile ./gen_bindings.sh contracts/L2/SequencerFeeVault.sol:SequencerFeeVault $(pkg) -optimism-mintable-erc20-factory-bindings: compile - ./gen_bindings.sh contracts/universal/OptimismMintableERC20Factory.sol:OptimismMintableERC20Factory $(pkg) +l1-optimism-mintable-erc20-factory-bindings: compile + ./gen_bindings.sh contracts/L1/L1OptimismMintableERC20Factory.sol:L1OptimismMintableERC20Factory $(pkg) + +l2-optimism-mintable-erc20-factory-bindings: compile + ./gen_bindings.sh contracts/L2/L2OptimismMintableERC20Factory.sol:L2OptimismMintableERC20Factory $(pkg) optimism-mintable-erc20-bindings: compile ./gen_bindings.sh contracts/universal/OptimismMintableERC20.sol:OptimismMintableERC20 $(pkg) @@ -92,7 +99,7 @@ more: go run ./gen/main.go \ -artifacts ../packages/contracts-bedrock/artifacts \ -out ./bindings \ - -contracts OptimismMintableERC20Factory,L2StandardBridge,L1BlockNumber,DeployerWhitelist,Proxy,OptimismPortal,L2ToL1MessagePasser,L2CrossDomainMessenger,GasPriceOracle,SequencerFeeVault,L1Block,LegacyERC20ETH,WETH9,GovernanceToken,L1CrossDomainMessenger \ + -contracts L2OptimismMintableERC20Factory,L2StandardBridge,L1BlockNumber,DeployerWhitelist,Proxy,OptimismPortal,L2ToL1MessagePasser,L2CrossDomainMessenger,GasPriceOracle,SequencerFeeVault,L1Block,LegacyERC20ETH,WETH9,GovernanceToken,L1CrossDomainMessenger \ -package bindings mkdir: diff --git a/op-bindings/bindings/deployerwhitelist_more.go b/op-bindings/bindings/deployerwhitelist_more.go index 88f4ad288fe75..86bbca9d69cf1 100644 --- a/op-bindings/bindings/deployerwhitelist_more.go +++ b/op-bindings/bindings/deployerwhitelist_more.go @@ -9,7 +9,7 @@ import ( "github.com/ethereum-optimism/optimism/op-bindings/solc" ) -const DeployerWhitelistStorageLayoutJSON = "{\"storage\":[{\"astId\":2900,\"contract\":\"contracts/legacy/DeployerWhitelist.sol:DeployerWhitelist\",\"label\":\"owner\",\"offset\":0,\"slot\":\"0\",\"type\":\"t_address\"},{\"astId\":2905,\"contract\":\"contracts/legacy/DeployerWhitelist.sol:DeployerWhitelist\",\"label\":\"whitelist\",\"offset\":0,\"slot\":\"1\",\"type\":\"t_mapping(t_address,t_bool)\"}],\"types\":{\"t_address\":{\"encoding\":\"inplace\",\"label\":\"address\",\"numberOfBytes\":\"20\"},\"t_bool\":{\"encoding\":\"inplace\",\"label\":\"bool\",\"numberOfBytes\":\"1\"},\"t_mapping(t_address,t_bool)\":{\"encoding\":\"mapping\",\"label\":\"mapping(address =\u003e bool)\",\"numberOfBytes\":\"32\",\"key\":\"t_address\",\"value\":\"t_bool\"}}}" +const DeployerWhitelistStorageLayoutJSON = "{\"storage\":[{\"astId\":2936,\"contract\":\"contracts/legacy/DeployerWhitelist.sol:DeployerWhitelist\",\"label\":\"owner\",\"offset\":0,\"slot\":\"0\",\"type\":\"t_address\"},{\"astId\":2941,\"contract\":\"contracts/legacy/DeployerWhitelist.sol:DeployerWhitelist\",\"label\":\"whitelist\",\"offset\":0,\"slot\":\"1\",\"type\":\"t_mapping(t_address,t_bool)\"}],\"types\":{\"t_address\":{\"encoding\":\"inplace\",\"label\":\"address\",\"numberOfBytes\":\"20\"},\"t_bool\":{\"encoding\":\"inplace\",\"label\":\"bool\",\"numberOfBytes\":\"1\"},\"t_mapping(t_address,t_bool)\":{\"encoding\":\"mapping\",\"label\":\"mapping(address =\u003e bool)\",\"numberOfBytes\":\"32\",\"key\":\"t_address\",\"value\":\"t_bool\"}}}" var DeployerWhitelistStorageLayout = new(solc.StorageLayout) diff --git a/op-bindings/bindings/gaspriceoracle_more.go b/op-bindings/bindings/gaspriceoracle_more.go index 9791c3fc5a98c..3a93ddda82656 100644 --- a/op-bindings/bindings/gaspriceoracle_more.go +++ b/op-bindings/bindings/gaspriceoracle_more.go @@ -9,7 +9,7 @@ import ( "github.com/ethereum-optimism/optimism/op-bindings/solc" ) -const GasPriceOracleStorageLayoutJSON = "{\"storage\":[{\"astId\":27778,\"contract\":\"contracts/L2/GasPriceOracle.sol:GasPriceOracle\",\"label\":\"_owner\",\"offset\":0,\"slot\":\"0\",\"type\":\"t_address\"},{\"astId\":1754,\"contract\":\"contracts/L2/GasPriceOracle.sol:GasPriceOracle\",\"label\":\"spacer0\",\"offset\":0,\"slot\":\"1\",\"type\":\"t_uint256\"},{\"astId\":1757,\"contract\":\"contracts/L2/GasPriceOracle.sol:GasPriceOracle\",\"label\":\"spacer1\",\"offset\":0,\"slot\":\"2\",\"type\":\"t_uint256\"},{\"astId\":1760,\"contract\":\"contracts/L2/GasPriceOracle.sol:GasPriceOracle\",\"label\":\"overhead\",\"offset\":0,\"slot\":\"3\",\"type\":\"t_uint256\"},{\"astId\":1763,\"contract\":\"contracts/L2/GasPriceOracle.sol:GasPriceOracle\",\"label\":\"scalar\",\"offset\":0,\"slot\":\"4\",\"type\":\"t_uint256\"},{\"astId\":1766,\"contract\":\"contracts/L2/GasPriceOracle.sol:GasPriceOracle\",\"label\":\"decimals\",\"offset\":0,\"slot\":\"5\",\"type\":\"t_uint256\"}],\"types\":{\"t_address\":{\"encoding\":\"inplace\",\"label\":\"address\",\"numberOfBytes\":\"20\"},\"t_uint256\":{\"encoding\":\"inplace\",\"label\":\"uint256\",\"numberOfBytes\":\"32\"}}}" +const GasPriceOracleStorageLayoutJSON = "{\"storage\":[{\"astId\":27814,\"contract\":\"contracts/L2/GasPriceOracle.sol:GasPriceOracle\",\"label\":\"_owner\",\"offset\":0,\"slot\":\"0\",\"type\":\"t_address\"},{\"astId\":1772,\"contract\":\"contracts/L2/GasPriceOracle.sol:GasPriceOracle\",\"label\":\"spacer0\",\"offset\":0,\"slot\":\"1\",\"type\":\"t_uint256\"},{\"astId\":1775,\"contract\":\"contracts/L2/GasPriceOracle.sol:GasPriceOracle\",\"label\":\"spacer1\",\"offset\":0,\"slot\":\"2\",\"type\":\"t_uint256\"},{\"astId\":1778,\"contract\":\"contracts/L2/GasPriceOracle.sol:GasPriceOracle\",\"label\":\"overhead\",\"offset\":0,\"slot\":\"3\",\"type\":\"t_uint256\"},{\"astId\":1781,\"contract\":\"contracts/L2/GasPriceOracle.sol:GasPriceOracle\",\"label\":\"scalar\",\"offset\":0,\"slot\":\"4\",\"type\":\"t_uint256\"},{\"astId\":1784,\"contract\":\"contracts/L2/GasPriceOracle.sol:GasPriceOracle\",\"label\":\"decimals\",\"offset\":0,\"slot\":\"5\",\"type\":\"t_uint256\"}],\"types\":{\"t_address\":{\"encoding\":\"inplace\",\"label\":\"address\",\"numberOfBytes\":\"20\"},\"t_uint256\":{\"encoding\":\"inplace\",\"label\":\"uint256\",\"numberOfBytes\":\"32\"}}}" var GasPriceOracleStorageLayout = new(solc.StorageLayout) diff --git a/op-bindings/bindings/governancetoken_more.go b/op-bindings/bindings/governancetoken_more.go index 71bbb02641aea..03c43784daa0f 100644 --- a/op-bindings/bindings/governancetoken_more.go +++ b/op-bindings/bindings/governancetoken_more.go @@ -9,7 +9,7 @@ import ( "github.com/ethereum-optimism/optimism/op-bindings/solc" ) -const GovernanceTokenStorageLayoutJSON = "{\"storage\":[{\"astId\":27977,\"contract\":\"contracts/L2/GovernanceToken.sol:GovernanceToken\",\"label\":\"_balances\",\"offset\":0,\"slot\":\"0\",\"type\":\"t_mapping(t_address,t_uint256)\"},{\"astId\":27983,\"contract\":\"contracts/L2/GovernanceToken.sol:GovernanceToken\",\"label\":\"_allowances\",\"offset\":0,\"slot\":\"1\",\"type\":\"t_mapping(t_address,t_mapping(t_address,t_uint256))\"},{\"astId\":27985,\"contract\":\"contracts/L2/GovernanceToken.sol:GovernanceToken\",\"label\":\"_totalSupply\",\"offset\":0,\"slot\":\"2\",\"type\":\"t_uint256\"},{\"astId\":27987,\"contract\":\"contracts/L2/GovernanceToken.sol:GovernanceToken\",\"label\":\"_name\",\"offset\":0,\"slot\":\"3\",\"type\":\"t_string_storage\"},{\"astId\":27989,\"contract\":\"contracts/L2/GovernanceToken.sol:GovernanceToken\",\"label\":\"_symbol\",\"offset\":0,\"slot\":\"4\",\"type\":\"t_string_storage\"},{\"astId\":29354,\"contract\":\"contracts/L2/GovernanceToken.sol:GovernanceToken\",\"label\":\"_nonces\",\"offset\":0,\"slot\":\"5\",\"type\":\"t_mapping(t_address,t_struct(Counter)30143_storage)\"},{\"astId\":29362,\"contract\":\"contracts/L2/GovernanceToken.sol:GovernanceToken\",\"label\":\"_PERMIT_TYPEHASH_DEPRECATED_SLOT\",\"offset\":0,\"slot\":\"6\",\"type\":\"t_bytes32\"},{\"astId\":28695,\"contract\":\"contracts/L2/GovernanceToken.sol:GovernanceToken\",\"label\":\"_delegates\",\"offset\":0,\"slot\":\"7\",\"type\":\"t_mapping(t_address,t_address)\"},{\"astId\":28701,\"contract\":\"contracts/L2/GovernanceToken.sol:GovernanceToken\",\"label\":\"_checkpoints\",\"offset\":0,\"slot\":\"8\",\"type\":\"t_mapping(t_address,t_array(t_struct(Checkpoint)28686_storage)dyn_storage)\"},{\"astId\":28705,\"contract\":\"contracts/L2/GovernanceToken.sol:GovernanceToken\",\"label\":\"_totalSupplyCheckpoints\",\"offset\":0,\"slot\":\"9\",\"type\":\"t_array(t_struct(Checkpoint)28686_storage)dyn_storage\"},{\"astId\":27778,\"contract\":\"contracts/L2/GovernanceToken.sol:GovernanceToken\",\"label\":\"_owner\",\"offset\":0,\"slot\":\"10\",\"type\":\"t_address\"}],\"types\":{\"t_address\":{\"encoding\":\"inplace\",\"label\":\"address\",\"numberOfBytes\":\"20\"},\"t_array(t_struct(Checkpoint)28686_storage)dyn_storage\":{\"encoding\":\"dynamic_array\",\"label\":\"struct ERC20Votes.Checkpoint[]\",\"numberOfBytes\":\"32\"},\"t_bytes32\":{\"encoding\":\"inplace\",\"label\":\"bytes32\",\"numberOfBytes\":\"32\"},\"t_mapping(t_address,t_address)\":{\"encoding\":\"mapping\",\"label\":\"mapping(address =\u003e address)\",\"numberOfBytes\":\"32\",\"key\":\"t_address\",\"value\":\"t_address\"},\"t_mapping(t_address,t_array(t_struct(Checkpoint)28686_storage)dyn_storage)\":{\"encoding\":\"mapping\",\"label\":\"mapping(address =\u003e struct ERC20Votes.Checkpoint[])\",\"numberOfBytes\":\"32\",\"key\":\"t_address\",\"value\":\"t_array(t_struct(Checkpoint)28686_storage)dyn_storage\"},\"t_mapping(t_address,t_mapping(t_address,t_uint256))\":{\"encoding\":\"mapping\",\"label\":\"mapping(address =\u003e mapping(address =\u003e uint256))\",\"numberOfBytes\":\"32\",\"key\":\"t_address\",\"value\":\"t_mapping(t_address,t_uint256)\"},\"t_mapping(t_address,t_struct(Counter)30143_storage)\":{\"encoding\":\"mapping\",\"label\":\"mapping(address =\u003e struct Counters.Counter)\",\"numberOfBytes\":\"32\",\"key\":\"t_address\",\"value\":\"t_struct(Counter)30143_storage\"},\"t_mapping(t_address,t_uint256)\":{\"encoding\":\"mapping\",\"label\":\"mapping(address =\u003e uint256)\",\"numberOfBytes\":\"32\",\"key\":\"t_address\",\"value\":\"t_uint256\"},\"t_string_storage\":{\"encoding\":\"bytes\",\"label\":\"string\",\"numberOfBytes\":\"32\"},\"t_struct(Checkpoint)28686_storage\":{\"encoding\":\"inplace\",\"label\":\"struct ERC20Votes.Checkpoint\",\"numberOfBytes\":\"32\"},\"t_struct(Counter)30143_storage\":{\"encoding\":\"inplace\",\"label\":\"struct Counters.Counter\",\"numberOfBytes\":\"32\"},\"t_uint224\":{\"encoding\":\"inplace\",\"label\":\"uint224\",\"numberOfBytes\":\"28\"},\"t_uint256\":{\"encoding\":\"inplace\",\"label\":\"uint256\",\"numberOfBytes\":\"32\"},\"t_uint32\":{\"encoding\":\"inplace\",\"label\":\"uint32\",\"numberOfBytes\":\"4\"}}}" +const GovernanceTokenStorageLayoutJSON = "{\"storage\":[{\"astId\":28013,\"contract\":\"contracts/L2/GovernanceToken.sol:GovernanceToken\",\"label\":\"_balances\",\"offset\":0,\"slot\":\"0\",\"type\":\"t_mapping(t_address,t_uint256)\"},{\"astId\":28019,\"contract\":\"contracts/L2/GovernanceToken.sol:GovernanceToken\",\"label\":\"_allowances\",\"offset\":0,\"slot\":\"1\",\"type\":\"t_mapping(t_address,t_mapping(t_address,t_uint256))\"},{\"astId\":28021,\"contract\":\"contracts/L2/GovernanceToken.sol:GovernanceToken\",\"label\":\"_totalSupply\",\"offset\":0,\"slot\":\"2\",\"type\":\"t_uint256\"},{\"astId\":28023,\"contract\":\"contracts/L2/GovernanceToken.sol:GovernanceToken\",\"label\":\"_name\",\"offset\":0,\"slot\":\"3\",\"type\":\"t_string_storage\"},{\"astId\":28025,\"contract\":\"contracts/L2/GovernanceToken.sol:GovernanceToken\",\"label\":\"_symbol\",\"offset\":0,\"slot\":\"4\",\"type\":\"t_string_storage\"},{\"astId\":29390,\"contract\":\"contracts/L2/GovernanceToken.sol:GovernanceToken\",\"label\":\"_nonces\",\"offset\":0,\"slot\":\"5\",\"type\":\"t_mapping(t_address,t_struct(Counter)30179_storage)\"},{\"astId\":29398,\"contract\":\"contracts/L2/GovernanceToken.sol:GovernanceToken\",\"label\":\"_PERMIT_TYPEHASH_DEPRECATED_SLOT\",\"offset\":0,\"slot\":\"6\",\"type\":\"t_bytes32\"},{\"astId\":28731,\"contract\":\"contracts/L2/GovernanceToken.sol:GovernanceToken\",\"label\":\"_delegates\",\"offset\":0,\"slot\":\"7\",\"type\":\"t_mapping(t_address,t_address)\"},{\"astId\":28737,\"contract\":\"contracts/L2/GovernanceToken.sol:GovernanceToken\",\"label\":\"_checkpoints\",\"offset\":0,\"slot\":\"8\",\"type\":\"t_mapping(t_address,t_array(t_struct(Checkpoint)28722_storage)dyn_storage)\"},{\"astId\":28741,\"contract\":\"contracts/L2/GovernanceToken.sol:GovernanceToken\",\"label\":\"_totalSupplyCheckpoints\",\"offset\":0,\"slot\":\"9\",\"type\":\"t_array(t_struct(Checkpoint)28722_storage)dyn_storage\"},{\"astId\":27814,\"contract\":\"contracts/L2/GovernanceToken.sol:GovernanceToken\",\"label\":\"_owner\",\"offset\":0,\"slot\":\"10\",\"type\":\"t_address\"}],\"types\":{\"t_address\":{\"encoding\":\"inplace\",\"label\":\"address\",\"numberOfBytes\":\"20\"},\"t_array(t_struct(Checkpoint)28722_storage)dyn_storage\":{\"encoding\":\"dynamic_array\",\"label\":\"struct ERC20Votes.Checkpoint[]\",\"numberOfBytes\":\"32\"},\"t_bytes32\":{\"encoding\":\"inplace\",\"label\":\"bytes32\",\"numberOfBytes\":\"32\"},\"t_mapping(t_address,t_address)\":{\"encoding\":\"mapping\",\"label\":\"mapping(address =\u003e address)\",\"numberOfBytes\":\"32\",\"key\":\"t_address\",\"value\":\"t_address\"},\"t_mapping(t_address,t_array(t_struct(Checkpoint)28722_storage)dyn_storage)\":{\"encoding\":\"mapping\",\"label\":\"mapping(address =\u003e struct ERC20Votes.Checkpoint[])\",\"numberOfBytes\":\"32\",\"key\":\"t_address\",\"value\":\"t_array(t_struct(Checkpoint)28722_storage)dyn_storage\"},\"t_mapping(t_address,t_mapping(t_address,t_uint256))\":{\"encoding\":\"mapping\",\"label\":\"mapping(address =\u003e mapping(address =\u003e uint256))\",\"numberOfBytes\":\"32\",\"key\":\"t_address\",\"value\":\"t_mapping(t_address,t_uint256)\"},\"t_mapping(t_address,t_struct(Counter)30179_storage)\":{\"encoding\":\"mapping\",\"label\":\"mapping(address =\u003e struct Counters.Counter)\",\"numberOfBytes\":\"32\",\"key\":\"t_address\",\"value\":\"t_struct(Counter)30179_storage\"},\"t_mapping(t_address,t_uint256)\":{\"encoding\":\"mapping\",\"label\":\"mapping(address =\u003e uint256)\",\"numberOfBytes\":\"32\",\"key\":\"t_address\",\"value\":\"t_uint256\"},\"t_string_storage\":{\"encoding\":\"bytes\",\"label\":\"string\",\"numberOfBytes\":\"32\"},\"t_struct(Checkpoint)28722_storage\":{\"encoding\":\"inplace\",\"label\":\"struct ERC20Votes.Checkpoint\",\"numberOfBytes\":\"32\"},\"t_struct(Counter)30179_storage\":{\"encoding\":\"inplace\",\"label\":\"struct Counters.Counter\",\"numberOfBytes\":\"32\"},\"t_uint224\":{\"encoding\":\"inplace\",\"label\":\"uint224\",\"numberOfBytes\":\"28\"},\"t_uint256\":{\"encoding\":\"inplace\",\"label\":\"uint256\",\"numberOfBytes\":\"32\"},\"t_uint32\":{\"encoding\":\"inplace\",\"label\":\"uint32\",\"numberOfBytes\":\"4\"}}}" var GovernanceTokenStorageLayout = new(solc.StorageLayout) diff --git a/op-bindings/bindings/l1block_more.go b/op-bindings/bindings/l1block_more.go index 9e1e866cf2af4..204bc367630c3 100644 --- a/op-bindings/bindings/l1block_more.go +++ b/op-bindings/bindings/l1block_more.go @@ -9,7 +9,7 @@ import ( "github.com/ethereum-optimism/optimism/op-bindings/solc" ) -const L1BlockStorageLayoutJSON = "{\"storage\":[{\"astId\":2101,\"contract\":\"contracts/L2/L1Block.sol:L1Block\",\"label\":\"number\",\"offset\":0,\"slot\":\"0\",\"type\":\"t_uint64\"},{\"astId\":2104,\"contract\":\"contracts/L2/L1Block.sol:L1Block\",\"label\":\"timestamp\",\"offset\":8,\"slot\":\"0\",\"type\":\"t_uint64\"},{\"astId\":2107,\"contract\":\"contracts/L2/L1Block.sol:L1Block\",\"label\":\"basefee\",\"offset\":0,\"slot\":\"1\",\"type\":\"t_uint256\"},{\"astId\":2110,\"contract\":\"contracts/L2/L1Block.sol:L1Block\",\"label\":\"hash\",\"offset\":0,\"slot\":\"2\",\"type\":\"t_bytes32\"},{\"astId\":2113,\"contract\":\"contracts/L2/L1Block.sol:L1Block\",\"label\":\"sequenceNumber\",\"offset\":0,\"slot\":\"3\",\"type\":\"t_uint64\"}],\"types\":{\"t_bytes32\":{\"encoding\":\"inplace\",\"label\":\"bytes32\",\"numberOfBytes\":\"32\"},\"t_uint256\":{\"encoding\":\"inplace\",\"label\":\"uint256\",\"numberOfBytes\":\"32\"},\"t_uint64\":{\"encoding\":\"inplace\",\"label\":\"uint64\",\"numberOfBytes\":\"8\"}}}" +const L1BlockStorageLayoutJSON = "{\"storage\":[{\"astId\":2119,\"contract\":\"contracts/L2/L1Block.sol:L1Block\",\"label\":\"number\",\"offset\":0,\"slot\":\"0\",\"type\":\"t_uint64\"},{\"astId\":2122,\"contract\":\"contracts/L2/L1Block.sol:L1Block\",\"label\":\"timestamp\",\"offset\":8,\"slot\":\"0\",\"type\":\"t_uint64\"},{\"astId\":2125,\"contract\":\"contracts/L2/L1Block.sol:L1Block\",\"label\":\"basefee\",\"offset\":0,\"slot\":\"1\",\"type\":\"t_uint256\"},{\"astId\":2128,\"contract\":\"contracts/L2/L1Block.sol:L1Block\",\"label\":\"hash\",\"offset\":0,\"slot\":\"2\",\"type\":\"t_bytes32\"},{\"astId\":2131,\"contract\":\"contracts/L2/L1Block.sol:L1Block\",\"label\":\"sequenceNumber\",\"offset\":0,\"slot\":\"3\",\"type\":\"t_uint64\"}],\"types\":{\"t_bytes32\":{\"encoding\":\"inplace\",\"label\":\"bytes32\",\"numberOfBytes\":\"32\"},\"t_uint256\":{\"encoding\":\"inplace\",\"label\":\"uint256\",\"numberOfBytes\":\"32\"},\"t_uint64\":{\"encoding\":\"inplace\",\"label\":\"uint64\",\"numberOfBytes\":\"8\"}}}" var L1BlockStorageLayout = new(solc.StorageLayout) diff --git a/op-bindings/bindings/l1crossdomainmessenger_more.go b/op-bindings/bindings/l1crossdomainmessenger_more.go index 55b9ee5ff4ebc..80ace6e247c56 100644 --- a/op-bindings/bindings/l1crossdomainmessenger_more.go +++ b/op-bindings/bindings/l1crossdomainmessenger_more.go @@ -9,7 +9,7 @@ import ( "github.com/ethereum-optimism/optimism/op-bindings/solc" ) -const L1CrossDomainMessengerStorageLayoutJSON = "{\"storage\":[{\"astId\":24694,\"contract\":\"contracts/L1/L1CrossDomainMessenger.sol:L1CrossDomainMessenger\",\"label\":\"spacer_0_0_20\",\"offset\":0,\"slot\":\"0\",\"type\":\"t_bytes20\"},{\"astId\":27155,\"contract\":\"contracts/L1/L1CrossDomainMessenger.sol:L1CrossDomainMessenger\",\"label\":\"_initialized\",\"offset\":20,\"slot\":\"0\",\"type\":\"t_uint8\"},{\"astId\":27158,\"contract\":\"contracts/L1/L1CrossDomainMessenger.sol:L1CrossDomainMessenger\",\"label\":\"_initializing\",\"offset\":21,\"slot\":\"0\",\"type\":\"t_bool\"},{\"astId\":27769,\"contract\":\"contracts/L1/L1CrossDomainMessenger.sol:L1CrossDomainMessenger\",\"label\":\"__gap\",\"offset\":0,\"slot\":\"1\",\"type\":\"t_array(t_uint256)50_storage\"},{\"astId\":27027,\"contract\":\"contracts/L1/L1CrossDomainMessenger.sol:L1CrossDomainMessenger\",\"label\":\"_owner\",\"offset\":0,\"slot\":\"51\",\"type\":\"t_address\"},{\"astId\":27147,\"contract\":\"contracts/L1/L1CrossDomainMessenger.sol:L1CrossDomainMessenger\",\"label\":\"__gap\",\"offset\":0,\"slot\":\"52\",\"type\":\"t_array(t_uint256)49_storage\"},{\"astId\":27320,\"contract\":\"contracts/L1/L1CrossDomainMessenger.sol:L1CrossDomainMessenger\",\"label\":\"_paused\",\"offset\":0,\"slot\":\"101\",\"type\":\"t_bool\"},{\"astId\":27425,\"contract\":\"contracts/L1/L1CrossDomainMessenger.sol:L1CrossDomainMessenger\",\"label\":\"__gap\",\"offset\":0,\"slot\":\"102\",\"type\":\"t_array(t_uint256)49_storage\"},{\"astId\":27440,\"contract\":\"contracts/L1/L1CrossDomainMessenger.sol:L1CrossDomainMessenger\",\"label\":\"_status\",\"offset\":0,\"slot\":\"151\",\"type\":\"t_uint256\"},{\"astId\":27484,\"contract\":\"contracts/L1/L1CrossDomainMessenger.sol:L1CrossDomainMessenger\",\"label\":\"__gap\",\"offset\":0,\"slot\":\"152\",\"type\":\"t_array(t_uint256)49_storage\"},{\"astId\":24744,\"contract\":\"contracts/L1/L1CrossDomainMessenger.sol:L1CrossDomainMessenger\",\"label\":\"spacer_201_0_32\",\"offset\":0,\"slot\":\"201\",\"type\":\"t_bytes32\"},{\"astId\":24747,\"contract\":\"contracts/L1/L1CrossDomainMessenger.sol:L1CrossDomainMessenger\",\"label\":\"spacer_202_0_32\",\"offset\":0,\"slot\":\"202\",\"type\":\"t_bytes32\"},{\"astId\":24752,\"contract\":\"contracts/L1/L1CrossDomainMessenger.sol:L1CrossDomainMessenger\",\"label\":\"successfulMessages\",\"offset\":0,\"slot\":\"203\",\"type\":\"t_mapping(t_bytes32,t_bool)\"},{\"astId\":24755,\"contract\":\"contracts/L1/L1CrossDomainMessenger.sol:L1CrossDomainMessenger\",\"label\":\"xDomainMsgSender\",\"offset\":0,\"slot\":\"204\",\"type\":\"t_address\"},{\"astId\":24758,\"contract\":\"contracts/L1/L1CrossDomainMessenger.sol:L1CrossDomainMessenger\",\"label\":\"msgNonce\",\"offset\":0,\"slot\":\"205\",\"type\":\"t_uint240\"},{\"astId\":24763,\"contract\":\"contracts/L1/L1CrossDomainMessenger.sol:L1CrossDomainMessenger\",\"label\":\"receivedMessages\",\"offset\":0,\"slot\":\"206\",\"type\":\"t_mapping(t_bytes32,t_bool)\"},{\"astId\":24768,\"contract\":\"contracts/L1/L1CrossDomainMessenger.sol:L1CrossDomainMessenger\",\"label\":\"__gap\",\"offset\":0,\"slot\":\"207\",\"type\":\"t_array(t_uint256)42_storage\"}],\"types\":{\"t_address\":{\"encoding\":\"inplace\",\"label\":\"address\",\"numberOfBytes\":\"20\"},\"t_array(t_uint256)42_storage\":{\"encoding\":\"inplace\",\"label\":\"uint256[42]\",\"numberOfBytes\":\"1344\"},\"t_array(t_uint256)49_storage\":{\"encoding\":\"inplace\",\"label\":\"uint256[49]\",\"numberOfBytes\":\"1568\"},\"t_array(t_uint256)50_storage\":{\"encoding\":\"inplace\",\"label\":\"uint256[50]\",\"numberOfBytes\":\"1600\"},\"t_bool\":{\"encoding\":\"inplace\",\"label\":\"bool\",\"numberOfBytes\":\"1\"},\"t_bytes20\":{\"encoding\":\"inplace\",\"label\":\"bytes20\",\"numberOfBytes\":\"20\"},\"t_bytes32\":{\"encoding\":\"inplace\",\"label\":\"bytes32\",\"numberOfBytes\":\"32\"},\"t_mapping(t_bytes32,t_bool)\":{\"encoding\":\"mapping\",\"label\":\"mapping(bytes32 =\u003e bool)\",\"numberOfBytes\":\"32\",\"key\":\"t_bytes32\",\"value\":\"t_bool\"},\"t_uint240\":{\"encoding\":\"inplace\",\"label\":\"uint240\",\"numberOfBytes\":\"30\"},\"t_uint256\":{\"encoding\":\"inplace\",\"label\":\"uint256\",\"numberOfBytes\":\"32\"},\"t_uint8\":{\"encoding\":\"inplace\",\"label\":\"uint8\",\"numberOfBytes\":\"1\"}}}" +const L1CrossDomainMessengerStorageLayoutJSON = "{\"storage\":[{\"astId\":24730,\"contract\":\"contracts/L1/L1CrossDomainMessenger.sol:L1CrossDomainMessenger\",\"label\":\"spacer_0_0_20\",\"offset\":0,\"slot\":\"0\",\"type\":\"t_bytes20\"},{\"astId\":27191,\"contract\":\"contracts/L1/L1CrossDomainMessenger.sol:L1CrossDomainMessenger\",\"label\":\"_initialized\",\"offset\":20,\"slot\":\"0\",\"type\":\"t_uint8\"},{\"astId\":27194,\"contract\":\"contracts/L1/L1CrossDomainMessenger.sol:L1CrossDomainMessenger\",\"label\":\"_initializing\",\"offset\":21,\"slot\":\"0\",\"type\":\"t_bool\"},{\"astId\":27805,\"contract\":\"contracts/L1/L1CrossDomainMessenger.sol:L1CrossDomainMessenger\",\"label\":\"__gap\",\"offset\":0,\"slot\":\"1\",\"type\":\"t_array(t_uint256)50_storage\"},{\"astId\":27063,\"contract\":\"contracts/L1/L1CrossDomainMessenger.sol:L1CrossDomainMessenger\",\"label\":\"_owner\",\"offset\":0,\"slot\":\"51\",\"type\":\"t_address\"},{\"astId\":27183,\"contract\":\"contracts/L1/L1CrossDomainMessenger.sol:L1CrossDomainMessenger\",\"label\":\"__gap\",\"offset\":0,\"slot\":\"52\",\"type\":\"t_array(t_uint256)49_storage\"},{\"astId\":27356,\"contract\":\"contracts/L1/L1CrossDomainMessenger.sol:L1CrossDomainMessenger\",\"label\":\"_paused\",\"offset\":0,\"slot\":\"101\",\"type\":\"t_bool\"},{\"astId\":27461,\"contract\":\"contracts/L1/L1CrossDomainMessenger.sol:L1CrossDomainMessenger\",\"label\":\"__gap\",\"offset\":0,\"slot\":\"102\",\"type\":\"t_array(t_uint256)49_storage\"},{\"astId\":27476,\"contract\":\"contracts/L1/L1CrossDomainMessenger.sol:L1CrossDomainMessenger\",\"label\":\"_status\",\"offset\":0,\"slot\":\"151\",\"type\":\"t_uint256\"},{\"astId\":27520,\"contract\":\"contracts/L1/L1CrossDomainMessenger.sol:L1CrossDomainMessenger\",\"label\":\"__gap\",\"offset\":0,\"slot\":\"152\",\"type\":\"t_array(t_uint256)49_storage\"},{\"astId\":24780,\"contract\":\"contracts/L1/L1CrossDomainMessenger.sol:L1CrossDomainMessenger\",\"label\":\"spacer_201_0_32\",\"offset\":0,\"slot\":\"201\",\"type\":\"t_bytes32\"},{\"astId\":24783,\"contract\":\"contracts/L1/L1CrossDomainMessenger.sol:L1CrossDomainMessenger\",\"label\":\"spacer_202_0_32\",\"offset\":0,\"slot\":\"202\",\"type\":\"t_bytes32\"},{\"astId\":24788,\"contract\":\"contracts/L1/L1CrossDomainMessenger.sol:L1CrossDomainMessenger\",\"label\":\"successfulMessages\",\"offset\":0,\"slot\":\"203\",\"type\":\"t_mapping(t_bytes32,t_bool)\"},{\"astId\":24791,\"contract\":\"contracts/L1/L1CrossDomainMessenger.sol:L1CrossDomainMessenger\",\"label\":\"xDomainMsgSender\",\"offset\":0,\"slot\":\"204\",\"type\":\"t_address\"},{\"astId\":24794,\"contract\":\"contracts/L1/L1CrossDomainMessenger.sol:L1CrossDomainMessenger\",\"label\":\"msgNonce\",\"offset\":0,\"slot\":\"205\",\"type\":\"t_uint240\"},{\"astId\":24799,\"contract\":\"contracts/L1/L1CrossDomainMessenger.sol:L1CrossDomainMessenger\",\"label\":\"receivedMessages\",\"offset\":0,\"slot\":\"206\",\"type\":\"t_mapping(t_bytes32,t_bool)\"},{\"astId\":24804,\"contract\":\"contracts/L1/L1CrossDomainMessenger.sol:L1CrossDomainMessenger\",\"label\":\"__gap\",\"offset\":0,\"slot\":\"207\",\"type\":\"t_array(t_uint256)42_storage\"}],\"types\":{\"t_address\":{\"encoding\":\"inplace\",\"label\":\"address\",\"numberOfBytes\":\"20\"},\"t_array(t_uint256)42_storage\":{\"encoding\":\"inplace\",\"label\":\"uint256[42]\",\"numberOfBytes\":\"1344\"},\"t_array(t_uint256)49_storage\":{\"encoding\":\"inplace\",\"label\":\"uint256[49]\",\"numberOfBytes\":\"1568\"},\"t_array(t_uint256)50_storage\":{\"encoding\":\"inplace\",\"label\":\"uint256[50]\",\"numberOfBytes\":\"1600\"},\"t_bool\":{\"encoding\":\"inplace\",\"label\":\"bool\",\"numberOfBytes\":\"1\"},\"t_bytes20\":{\"encoding\":\"inplace\",\"label\":\"bytes20\",\"numberOfBytes\":\"20\"},\"t_bytes32\":{\"encoding\":\"inplace\",\"label\":\"bytes32\",\"numberOfBytes\":\"32\"},\"t_mapping(t_bytes32,t_bool)\":{\"encoding\":\"mapping\",\"label\":\"mapping(bytes32 =\u003e bool)\",\"numberOfBytes\":\"32\",\"key\":\"t_bytes32\",\"value\":\"t_bool\"},\"t_uint240\":{\"encoding\":\"inplace\",\"label\":\"uint240\",\"numberOfBytes\":\"30\"},\"t_uint256\":{\"encoding\":\"inplace\",\"label\":\"uint256\",\"numberOfBytes\":\"32\"},\"t_uint8\":{\"encoding\":\"inplace\",\"label\":\"uint8\",\"numberOfBytes\":\"1\"}}}" var L1CrossDomainMessengerStorageLayout = new(solc.StorageLayout) diff --git a/op-bindings/bindings/optimismmintableerc20factory.go b/op-bindings/bindings/l1optimismmintableerc20factory.go similarity index 62% rename from op-bindings/bindings/optimismmintableerc20factory.go rename to op-bindings/bindings/l1optimismmintableerc20factory.go index 9f17d9b4933fc..982b1384b3f14 100644 --- a/op-bindings/bindings/optimismmintableerc20factory.go +++ b/op-bindings/bindings/l1optimismmintableerc20factory.go @@ -28,23 +28,23 @@ var ( _ = event.NewSubscription ) -// OptimismMintableERC20FactoryMetaData contains all meta data concerning the OptimismMintableERC20Factory contract. -var OptimismMintableERC20FactoryMetaData = &bind.MetaData{ +// L1OptimismMintableERC20FactoryMetaData contains all meta data concerning the L1OptimismMintableERC20Factory contract. +var L1OptimismMintableERC20FactoryMetaData = &bind.MetaData{ ABI: "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_bridge\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"localToken\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"remoteToken\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"deployer\",\"type\":\"address\"}],\"name\":\"OptimismMintableERC20Created\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"remoteToken\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"localToken\",\"type\":\"address\"}],\"name\":\"StandardL2TokenCreated\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"bridge\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_remoteToken\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"_name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_symbol\",\"type\":\"string\"}],\"name\":\"createOptimismMintableERC20\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_remoteToken\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"_name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_symbol\",\"type\":\"string\"}],\"name\":\"createStandardL2Token\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", Bin: "0x60a060405234801561001057600080fd5b50604051611baa380380611baa83398101604081905261002f91610040565b6001600160a01b0316608052610070565b60006020828403121561005257600080fd5b81516001600160a01b038116811461006957600080fd5b9392505050565b608051611b1961009160003960008181609a015261017e0152611b196000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c8063896f93d114610046578063ce5ac90f14610082578063e78cea9214610095575b600080fd5b610059610054366004610371565b6100bc565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b610059610090366004610371565b6100d1565b6100597f000000000000000000000000000000000000000000000000000000000000000081565b60006100c98484846100d1565b949350505050565b600073ffffffffffffffffffffffffffffffffffffffff841661017a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603f60248201527f4f7074696d69736d4d696e7461626c654552433230466163746f72793a206d7560448201527f73742070726f766964652072656d6f746520746f6b656e206164647265737300606482015260840160405180910390fd5b60007f00000000000000000000000000000000000000000000000000000000000000008585856040516101ac9061028a565b6101b9949392919061046b565b604051809103906000f0801580156101d5573d6000803e3d6000fd5b5090508073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fceeb8e7d520d7f3b65fc11a262b91066940193b05d4f93df07cfdced0eb551cf60405160405180910390a360405133815273ffffffffffffffffffffffffffffffffffffffff80831691908716907f52fe89dd5930f343d25650b62fd367bae47088bcddffd2a88350a6ecdd620cdb9060200160405180910390a3949350505050565b61164b806104c283390190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f8301126102d757600080fd5b813567ffffffffffffffff808211156102f2576102f2610297565b604051601f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190828211818310171561033857610338610297565b8160405283815286602085880101111561035157600080fd5b836020870160208301376000602085830101528094505050505092915050565b60008060006060848603121561038657600080fd5b833573ffffffffffffffffffffffffffffffffffffffff811681146103aa57600080fd5b9250602084013567ffffffffffffffff808211156103c757600080fd5b6103d3878388016102c6565b935060408601359150808211156103e957600080fd5b506103f6868287016102c6565b9150509250925092565b6000815180845260005b818110156104265760208185018101518683018201520161040a565b81811115610438576000602083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b600073ffffffffffffffffffffffffffffffffffffffff8087168352808616602084015250608060408301526104a46080830185610400565b82810360608401526104b68185610400565b97965050505050505056fe60806040523480156200001157600080fd5b506040516200164b3803806200164b833981016040819052620000349162000179565b8181600362000044838262000298565b50600462000053828262000298565b5050600580546001600160a01b039586166001600160a01b03199182161790915560068054969095169516949094179092555062000364915050565b80516001600160a01b0381168114620000a757600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b600082601f830112620000d457600080fd5b81516001600160401b0380821115620000f157620000f1620000ac565b604051601f8301601f19908116603f011681019082821181831017156200011c576200011c620000ac565b816040528381526020925086838588010111156200013957600080fd5b600091505b838210156200015d57858201830151818301840152908201906200013e565b838211156200016f5760008385830101525b9695505050505050565b600080600080608085870312156200019057600080fd5b6200019b856200008f565b9350620001ab602086016200008f565b60408601519093506001600160401b0380821115620001c957600080fd5b620001d788838901620000c2565b93506060870151915080821115620001ee57600080fd5b50620001fd87828801620000c2565b91505092959194509250565b600181811c908216806200021e57607f821691505b6020821081036200023f57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200029357600081815260208120601f850160051c810160208610156200026e5750805b601f850160051c820191505b818110156200028f578281556001016200027a565b5050505b505050565b81516001600160401b03811115620002b457620002b4620000ac565b620002cc81620002c5845462000209565b8462000245565b602080601f831160018114620003045760008415620002eb5750858301515b600019600386901b1c1916600185901b1785556200028f565b600085815260208120601f198616915b82811015620003355788860151825594840194600190910190840162000314565b5085821015620003545787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6112d780620003746000396000f3fe608060405234801561001057600080fd5b50600436106101365760003560e01c806395d89b41116100b2578063ae1f6aaf11610081578063d6c0b2c411610066578063d6c0b2c4146102bb578063dd62ed3e146102db578063e78cea921461032157600080fd5b8063ae1f6aaf1461025e578063c01e1bd61461029d57600080fd5b806395d89b411461021d5780639dc29fac14610225578063a457c2d714610238578063a9059cbb1461024b57600080fd5b806323b872dd1161010957806339509351116100ee57806339509351146101bf57806340c10f19146101d257806370a08231146101e757600080fd5b806323b872dd1461019d578063313ce567146101b057600080fd5b806301ffc9a71461013b57806306fdde0314610163578063095ea7b31461017857806318160ddd1461018b575b600080fd5b61014e610149366004611080565b610341565b60405190151581526020015b60405180910390f35b61016b610432565b60405161015a91906110c9565b61014e610186366004611165565b6104c4565b6002545b60405190815260200161015a565b61014e6101ab36600461118f565b6104dc565b6040516012815260200161015a565b61014e6101cd366004611165565b610500565b6101e56101e0366004611165565b61054c565b005b61018f6101f53660046111cb565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b61016b610656565b6101e5610233366004611165565b610665565b61014e610246366004611165565b61075e565b61014e610259366004611165565b61082f565b60065473ffffffffffffffffffffffffffffffffffffffff165b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161015a565b60055473ffffffffffffffffffffffffffffffffffffffff16610278565b6005546102789073ffffffffffffffffffffffffffffffffffffffff1681565b61018f6102e93660046111e6565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b6006546102789073ffffffffffffffffffffffffffffffffffffffff1681565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007f1d1d8b63000000000000000000000000000000000000000000000000000000007f0bc32271000000000000000000000000000000000000000000000000000000007fffffffff0000000000000000000000000000000000000000000000000000000085168314806103fa57507fffffffff00000000000000000000000000000000000000000000000000000000858116908316145b8061042957507fffffffff00000000000000000000000000000000000000000000000000000000858116908216145b95945050505050565b60606003805461044190611219565b80601f016020809104026020016040519081016040528092919081815260200182805461046d90611219565b80156104ba5780601f1061048f576101008083540402835291602001916104ba565b820191906000526020600020905b81548152906001019060200180831161049d57829003601f168201915b5050505050905090565b6000336104d281858561083d565b5060019392505050565b6000336104ea8582856109f1565b6104f5858585610ac8565b506001949350505050565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff871684529091528120549091906104d2908290869061054790879061129b565b61083d565b60065473ffffffffffffffffffffffffffffffffffffffff1633146105f8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603460248201527f4f7074696d69736d4d696e7461626c6545524332303a206f6e6c79206272696460448201527f67652063616e206d696e7420616e64206275726e00000000000000000000000060648201526084015b60405180910390fd5b6106028282610d7b565b8173ffffffffffffffffffffffffffffffffffffffff167f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d41213968858260405161064a91815260200190565b60405180910390a25050565b60606004805461044190611219565b60065473ffffffffffffffffffffffffffffffffffffffff16331461070c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603460248201527f4f7074696d69736d4d696e7461626c6545524332303a206f6e6c79206272696460448201527f67652063616e206d696e7420616e64206275726e00000000000000000000000060648201526084016105ef565b6107168282610e9b565b8173ffffffffffffffffffffffffffffffffffffffff167fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca58260405161064a91815260200190565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490919083811015610822576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f00000000000000000000000000000000000000000000000000000060648201526084016105ef565b6104f5828686840361083d565b6000336104d2818585610ac8565b73ffffffffffffffffffffffffffffffffffffffff83166108df576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f726573730000000000000000000000000000000000000000000000000000000060648201526084016105ef565b73ffffffffffffffffffffffffffffffffffffffff8216610982576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f737300000000000000000000000000000000000000000000000000000000000060648201526084016105ef565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610ac25781811015610ab5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016105ef565b610ac2848484840361083d565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8316610b6b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f647265737300000000000000000000000000000000000000000000000000000060648201526084016105ef565b73ffffffffffffffffffffffffffffffffffffffff8216610c0e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f657373000000000000000000000000000000000000000000000000000000000060648201526084016105ef565b73ffffffffffffffffffffffffffffffffffffffff831660009081526020819052604090205481811015610cc4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e6365000000000000000000000000000000000000000000000000000060648201526084016105ef565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260208190526040808220858503905591851681529081208054849290610d0890849061129b565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610d6e91815260200190565b60405180910390a3610ac2565b73ffffffffffffffffffffffffffffffffffffffff8216610df8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016105ef565b8060026000828254610e0a919061129b565b909155505073ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604081208054839290610e4490849061129b565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b73ffffffffffffffffffffffffffffffffffffffff8216610f3e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f730000000000000000000000000000000000000000000000000000000000000060648201526084016105ef565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090205481811015610ff4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f636500000000000000000000000000000000000000000000000000000000000060648201526084016105ef565b73ffffffffffffffffffffffffffffffffffffffff831660009081526020819052604081208383039055600280548492906110309084906112b3565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906020016109e4565b60006020828403121561109257600080fd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146110c257600080fd5b9392505050565b600060208083528351808285015260005b818110156110f6578581018301518582016040015282016110da565b81811115611108576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461116057600080fd5b919050565b6000806040838503121561117857600080fd5b6111818361113c565b946020939093013593505050565b6000806000606084860312156111a457600080fd5b6111ad8461113c565b92506111bb6020850161113c565b9150604084013590509250925092565b6000602082840312156111dd57600080fd5b6110c28261113c565b600080604083850312156111f957600080fd5b6112028361113c565b91506112106020840161113c565b90509250929050565b600181811c9082168061122d57607f821691505b602082108103611266577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600082198211156112ae576112ae61126c565b500190565b6000828210156112c5576112c561126c565b50039056fea164736f6c634300080f000aa164736f6c634300080f000a", } -// OptimismMintableERC20FactoryABI is the input ABI used to generate the binding from. -// Deprecated: Use OptimismMintableERC20FactoryMetaData.ABI instead. -var OptimismMintableERC20FactoryABI = OptimismMintableERC20FactoryMetaData.ABI +// L1OptimismMintableERC20FactoryABI is the input ABI used to generate the binding from. +// Deprecated: Use L1OptimismMintableERC20FactoryMetaData.ABI instead. +var L1OptimismMintableERC20FactoryABI = L1OptimismMintableERC20FactoryMetaData.ABI -// OptimismMintableERC20FactoryBin is the compiled bytecode used for deploying new contracts. -// Deprecated: Use OptimismMintableERC20FactoryMetaData.Bin instead. -var OptimismMintableERC20FactoryBin = OptimismMintableERC20FactoryMetaData.Bin +// L1OptimismMintableERC20FactoryBin is the compiled bytecode used for deploying new contracts. +// Deprecated: Use L1OptimismMintableERC20FactoryMetaData.Bin instead. +var L1OptimismMintableERC20FactoryBin = L1OptimismMintableERC20FactoryMetaData.Bin -// DeployOptimismMintableERC20Factory deploys a new Ethereum contract, binding an instance of OptimismMintableERC20Factory to it. -func DeployOptimismMintableERC20Factory(auth *bind.TransactOpts, backend bind.ContractBackend, _bridge common.Address) (common.Address, *types.Transaction, *OptimismMintableERC20Factory, error) { - parsed, err := OptimismMintableERC20FactoryMetaData.GetAbi() +// DeployL1OptimismMintableERC20Factory deploys a new Ethereum contract, binding an instance of L1OptimismMintableERC20Factory to it. +func DeployL1OptimismMintableERC20Factory(auth *bind.TransactOpts, backend bind.ContractBackend, _bridge common.Address) (common.Address, *types.Transaction, *L1OptimismMintableERC20Factory, error) { + parsed, err := L1OptimismMintableERC20FactoryMetaData.GetAbi() if err != nil { return common.Address{}, nil, nil, err } @@ -52,111 +52,111 @@ func DeployOptimismMintableERC20Factory(auth *bind.TransactOpts, backend bind.Co return common.Address{}, nil, nil, errors.New("GetABI returned nil") } - address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(OptimismMintableERC20FactoryBin), backend, _bridge) + address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(L1OptimismMintableERC20FactoryBin), backend, _bridge) if err != nil { return common.Address{}, nil, nil, err } - return address, tx, &OptimismMintableERC20Factory{OptimismMintableERC20FactoryCaller: OptimismMintableERC20FactoryCaller{contract: contract}, OptimismMintableERC20FactoryTransactor: OptimismMintableERC20FactoryTransactor{contract: contract}, OptimismMintableERC20FactoryFilterer: OptimismMintableERC20FactoryFilterer{contract: contract}}, nil + return address, tx, &L1OptimismMintableERC20Factory{L1OptimismMintableERC20FactoryCaller: L1OptimismMintableERC20FactoryCaller{contract: contract}, L1OptimismMintableERC20FactoryTransactor: L1OptimismMintableERC20FactoryTransactor{contract: contract}, L1OptimismMintableERC20FactoryFilterer: L1OptimismMintableERC20FactoryFilterer{contract: contract}}, nil } -// OptimismMintableERC20Factory is an auto generated Go binding around an Ethereum contract. -type OptimismMintableERC20Factory struct { - OptimismMintableERC20FactoryCaller // Read-only binding to the contract - OptimismMintableERC20FactoryTransactor // Write-only binding to the contract - OptimismMintableERC20FactoryFilterer // Log filterer for contract events +// L1OptimismMintableERC20Factory is an auto generated Go binding around an Ethereum contract. +type L1OptimismMintableERC20Factory struct { + L1OptimismMintableERC20FactoryCaller // Read-only binding to the contract + L1OptimismMintableERC20FactoryTransactor // Write-only binding to the contract + L1OptimismMintableERC20FactoryFilterer // Log filterer for contract events } -// OptimismMintableERC20FactoryCaller is an auto generated read-only Go binding around an Ethereum contract. -type OptimismMintableERC20FactoryCaller struct { +// L1OptimismMintableERC20FactoryCaller is an auto generated read-only Go binding around an Ethereum contract. +type L1OptimismMintableERC20FactoryCaller struct { contract *bind.BoundContract // Generic contract wrapper for the low level calls } -// OptimismMintableERC20FactoryTransactor is an auto generated write-only Go binding around an Ethereum contract. -type OptimismMintableERC20FactoryTransactor struct { +// L1OptimismMintableERC20FactoryTransactor is an auto generated write-only Go binding around an Ethereum contract. +type L1OptimismMintableERC20FactoryTransactor struct { contract *bind.BoundContract // Generic contract wrapper for the low level calls } -// OptimismMintableERC20FactoryFilterer is an auto generated log filtering Go binding around an Ethereum contract events. -type OptimismMintableERC20FactoryFilterer struct { +// L1OptimismMintableERC20FactoryFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type L1OptimismMintableERC20FactoryFilterer struct { contract *bind.BoundContract // Generic contract wrapper for the low level calls } -// OptimismMintableERC20FactorySession is an auto generated Go binding around an Ethereum contract, +// L1OptimismMintableERC20FactorySession is an auto generated Go binding around an Ethereum contract, // with pre-set call and transact options. -type OptimismMintableERC20FactorySession struct { - Contract *OptimismMintableERC20Factory // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +type L1OptimismMintableERC20FactorySession struct { + Contract *L1OptimismMintableERC20Factory // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session } -// OptimismMintableERC20FactoryCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// L1OptimismMintableERC20FactoryCallerSession is an auto generated read-only Go binding around an Ethereum contract, // with pre-set call options. -type OptimismMintableERC20FactoryCallerSession struct { - Contract *OptimismMintableERC20FactoryCaller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session +type L1OptimismMintableERC20FactoryCallerSession struct { + Contract *L1OptimismMintableERC20FactoryCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session } -// OptimismMintableERC20FactoryTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// L1OptimismMintableERC20FactoryTransactorSession is an auto generated write-only Go binding around an Ethereum contract, // with pre-set transact options. -type OptimismMintableERC20FactoryTransactorSession struct { - Contract *OptimismMintableERC20FactoryTransactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +type L1OptimismMintableERC20FactoryTransactorSession struct { + Contract *L1OptimismMintableERC20FactoryTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session } -// OptimismMintableERC20FactoryRaw is an auto generated low-level Go binding around an Ethereum contract. -type OptimismMintableERC20FactoryRaw struct { - Contract *OptimismMintableERC20Factory // Generic contract binding to access the raw methods on +// L1OptimismMintableERC20FactoryRaw is an auto generated low-level Go binding around an Ethereum contract. +type L1OptimismMintableERC20FactoryRaw struct { + Contract *L1OptimismMintableERC20Factory // Generic contract binding to access the raw methods on } -// OptimismMintableERC20FactoryCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type OptimismMintableERC20FactoryCallerRaw struct { - Contract *OptimismMintableERC20FactoryCaller // Generic read-only contract binding to access the raw methods on +// L1OptimismMintableERC20FactoryCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type L1OptimismMintableERC20FactoryCallerRaw struct { + Contract *L1OptimismMintableERC20FactoryCaller // Generic read-only contract binding to access the raw methods on } -// OptimismMintableERC20FactoryTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type OptimismMintableERC20FactoryTransactorRaw struct { - Contract *OptimismMintableERC20FactoryTransactor // Generic write-only contract binding to access the raw methods on +// L1OptimismMintableERC20FactoryTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type L1OptimismMintableERC20FactoryTransactorRaw struct { + Contract *L1OptimismMintableERC20FactoryTransactor // Generic write-only contract binding to access the raw methods on } -// NewOptimismMintableERC20Factory creates a new instance of OptimismMintableERC20Factory, bound to a specific deployed contract. -func NewOptimismMintableERC20Factory(address common.Address, backend bind.ContractBackend) (*OptimismMintableERC20Factory, error) { - contract, err := bindOptimismMintableERC20Factory(address, backend, backend, backend) +// NewL1OptimismMintableERC20Factory creates a new instance of L1OptimismMintableERC20Factory, bound to a specific deployed contract. +func NewL1OptimismMintableERC20Factory(address common.Address, backend bind.ContractBackend) (*L1OptimismMintableERC20Factory, error) { + contract, err := bindL1OptimismMintableERC20Factory(address, backend, backend, backend) if err != nil { return nil, err } - return &OptimismMintableERC20Factory{OptimismMintableERC20FactoryCaller: OptimismMintableERC20FactoryCaller{contract: contract}, OptimismMintableERC20FactoryTransactor: OptimismMintableERC20FactoryTransactor{contract: contract}, OptimismMintableERC20FactoryFilterer: OptimismMintableERC20FactoryFilterer{contract: contract}}, nil + return &L1OptimismMintableERC20Factory{L1OptimismMintableERC20FactoryCaller: L1OptimismMintableERC20FactoryCaller{contract: contract}, L1OptimismMintableERC20FactoryTransactor: L1OptimismMintableERC20FactoryTransactor{contract: contract}, L1OptimismMintableERC20FactoryFilterer: L1OptimismMintableERC20FactoryFilterer{contract: contract}}, nil } -// NewOptimismMintableERC20FactoryCaller creates a new read-only instance of OptimismMintableERC20Factory, bound to a specific deployed contract. -func NewOptimismMintableERC20FactoryCaller(address common.Address, caller bind.ContractCaller) (*OptimismMintableERC20FactoryCaller, error) { - contract, err := bindOptimismMintableERC20Factory(address, caller, nil, nil) +// NewL1OptimismMintableERC20FactoryCaller creates a new read-only instance of L1OptimismMintableERC20Factory, bound to a specific deployed contract. +func NewL1OptimismMintableERC20FactoryCaller(address common.Address, caller bind.ContractCaller) (*L1OptimismMintableERC20FactoryCaller, error) { + contract, err := bindL1OptimismMintableERC20Factory(address, caller, nil, nil) if err != nil { return nil, err } - return &OptimismMintableERC20FactoryCaller{contract: contract}, nil + return &L1OptimismMintableERC20FactoryCaller{contract: contract}, nil } -// NewOptimismMintableERC20FactoryTransactor creates a new write-only instance of OptimismMintableERC20Factory, bound to a specific deployed contract. -func NewOptimismMintableERC20FactoryTransactor(address common.Address, transactor bind.ContractTransactor) (*OptimismMintableERC20FactoryTransactor, error) { - contract, err := bindOptimismMintableERC20Factory(address, nil, transactor, nil) +// NewL1OptimismMintableERC20FactoryTransactor creates a new write-only instance of L1OptimismMintableERC20Factory, bound to a specific deployed contract. +func NewL1OptimismMintableERC20FactoryTransactor(address common.Address, transactor bind.ContractTransactor) (*L1OptimismMintableERC20FactoryTransactor, error) { + contract, err := bindL1OptimismMintableERC20Factory(address, nil, transactor, nil) if err != nil { return nil, err } - return &OptimismMintableERC20FactoryTransactor{contract: contract}, nil + return &L1OptimismMintableERC20FactoryTransactor{contract: contract}, nil } -// NewOptimismMintableERC20FactoryFilterer creates a new log filterer instance of OptimismMintableERC20Factory, bound to a specific deployed contract. -func NewOptimismMintableERC20FactoryFilterer(address common.Address, filterer bind.ContractFilterer) (*OptimismMintableERC20FactoryFilterer, error) { - contract, err := bindOptimismMintableERC20Factory(address, nil, nil, filterer) +// NewL1OptimismMintableERC20FactoryFilterer creates a new log filterer instance of L1OptimismMintableERC20Factory, bound to a specific deployed contract. +func NewL1OptimismMintableERC20FactoryFilterer(address common.Address, filterer bind.ContractFilterer) (*L1OptimismMintableERC20FactoryFilterer, error) { + contract, err := bindL1OptimismMintableERC20Factory(address, nil, nil, filterer) if err != nil { return nil, err } - return &OptimismMintableERC20FactoryFilterer{contract: contract}, nil + return &L1OptimismMintableERC20FactoryFilterer{contract: contract}, nil } -// bindOptimismMintableERC20Factory binds a generic wrapper to an already deployed contract. -func bindOptimismMintableERC20Factory(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := abi.JSON(strings.NewReader(OptimismMintableERC20FactoryABI)) +// bindL1OptimismMintableERC20Factory binds a generic wrapper to an already deployed contract. +func bindL1OptimismMintableERC20Factory(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := abi.JSON(strings.NewReader(L1OptimismMintableERC20FactoryABI)) if err != nil { return nil, err } @@ -167,46 +167,46 @@ func bindOptimismMintableERC20Factory(address common.Address, caller bind.Contra // sets the output to result. The result type might be a single field for simple // returns, a slice of interfaces for anonymous returns and a struct for named // returns. -func (_OptimismMintableERC20Factory *OptimismMintableERC20FactoryRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _OptimismMintableERC20Factory.Contract.OptimismMintableERC20FactoryCaller.contract.Call(opts, result, method, params...) +func (_L1OptimismMintableERC20Factory *L1OptimismMintableERC20FactoryRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _L1OptimismMintableERC20Factory.Contract.L1OptimismMintableERC20FactoryCaller.contract.Call(opts, result, method, params...) } // Transfer initiates a plain transaction to move funds to the contract, calling // its default method if one is available. -func (_OptimismMintableERC20Factory *OptimismMintableERC20FactoryRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _OptimismMintableERC20Factory.Contract.OptimismMintableERC20FactoryTransactor.contract.Transfer(opts) +func (_L1OptimismMintableERC20Factory *L1OptimismMintableERC20FactoryRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _L1OptimismMintableERC20Factory.Contract.L1OptimismMintableERC20FactoryTransactor.contract.Transfer(opts) } // Transact invokes the (paid) contract method with params as input values. -func (_OptimismMintableERC20Factory *OptimismMintableERC20FactoryRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _OptimismMintableERC20Factory.Contract.OptimismMintableERC20FactoryTransactor.contract.Transact(opts, method, params...) +func (_L1OptimismMintableERC20Factory *L1OptimismMintableERC20FactoryRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _L1OptimismMintableERC20Factory.Contract.L1OptimismMintableERC20FactoryTransactor.contract.Transact(opts, method, params...) } // Call invokes the (constant) contract method with params as input values and // sets the output to result. The result type might be a single field for simple // returns, a slice of interfaces for anonymous returns and a struct for named // returns. -func (_OptimismMintableERC20Factory *OptimismMintableERC20FactoryCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _OptimismMintableERC20Factory.Contract.contract.Call(opts, result, method, params...) +func (_L1OptimismMintableERC20Factory *L1OptimismMintableERC20FactoryCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _L1OptimismMintableERC20Factory.Contract.contract.Call(opts, result, method, params...) } // Transfer initiates a plain transaction to move funds to the contract, calling // its default method if one is available. -func (_OptimismMintableERC20Factory *OptimismMintableERC20FactoryTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _OptimismMintableERC20Factory.Contract.contract.Transfer(opts) +func (_L1OptimismMintableERC20Factory *L1OptimismMintableERC20FactoryTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _L1OptimismMintableERC20Factory.Contract.contract.Transfer(opts) } // Transact invokes the (paid) contract method with params as input values. -func (_OptimismMintableERC20Factory *OptimismMintableERC20FactoryTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _OptimismMintableERC20Factory.Contract.contract.Transact(opts, method, params...) +func (_L1OptimismMintableERC20Factory *L1OptimismMintableERC20FactoryTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _L1OptimismMintableERC20Factory.Contract.contract.Transact(opts, method, params...) } // Bridge is a free data retrieval call binding the contract method 0xe78cea92. // // Solidity: function bridge() view returns(address) -func (_OptimismMintableERC20Factory *OptimismMintableERC20FactoryCaller) Bridge(opts *bind.CallOpts) (common.Address, error) { +func (_L1OptimismMintableERC20Factory *L1OptimismMintableERC20FactoryCaller) Bridge(opts *bind.CallOpts) (common.Address, error) { var out []interface{} - err := _OptimismMintableERC20Factory.contract.Call(opts, &out, "bridge") + err := _L1OptimismMintableERC20Factory.contract.Call(opts, &out, "bridge") if err != nil { return *new(common.Address), err @@ -221,62 +221,62 @@ func (_OptimismMintableERC20Factory *OptimismMintableERC20FactoryCaller) Bridge( // Bridge is a free data retrieval call binding the contract method 0xe78cea92. // // Solidity: function bridge() view returns(address) -func (_OptimismMintableERC20Factory *OptimismMintableERC20FactorySession) Bridge() (common.Address, error) { - return _OptimismMintableERC20Factory.Contract.Bridge(&_OptimismMintableERC20Factory.CallOpts) +func (_L1OptimismMintableERC20Factory *L1OptimismMintableERC20FactorySession) Bridge() (common.Address, error) { + return _L1OptimismMintableERC20Factory.Contract.Bridge(&_L1OptimismMintableERC20Factory.CallOpts) } // Bridge is a free data retrieval call binding the contract method 0xe78cea92. // // Solidity: function bridge() view returns(address) -func (_OptimismMintableERC20Factory *OptimismMintableERC20FactoryCallerSession) Bridge() (common.Address, error) { - return _OptimismMintableERC20Factory.Contract.Bridge(&_OptimismMintableERC20Factory.CallOpts) +func (_L1OptimismMintableERC20Factory *L1OptimismMintableERC20FactoryCallerSession) Bridge() (common.Address, error) { + return _L1OptimismMintableERC20Factory.Contract.Bridge(&_L1OptimismMintableERC20Factory.CallOpts) } // CreateOptimismMintableERC20 is a paid mutator transaction binding the contract method 0xce5ac90f. // // Solidity: function createOptimismMintableERC20(address _remoteToken, string _name, string _symbol) returns(address) -func (_OptimismMintableERC20Factory *OptimismMintableERC20FactoryTransactor) CreateOptimismMintableERC20(opts *bind.TransactOpts, _remoteToken common.Address, _name string, _symbol string) (*types.Transaction, error) { - return _OptimismMintableERC20Factory.contract.Transact(opts, "createOptimismMintableERC20", _remoteToken, _name, _symbol) +func (_L1OptimismMintableERC20Factory *L1OptimismMintableERC20FactoryTransactor) CreateOptimismMintableERC20(opts *bind.TransactOpts, _remoteToken common.Address, _name string, _symbol string) (*types.Transaction, error) { + return _L1OptimismMintableERC20Factory.contract.Transact(opts, "createOptimismMintableERC20", _remoteToken, _name, _symbol) } // CreateOptimismMintableERC20 is a paid mutator transaction binding the contract method 0xce5ac90f. // // Solidity: function createOptimismMintableERC20(address _remoteToken, string _name, string _symbol) returns(address) -func (_OptimismMintableERC20Factory *OptimismMintableERC20FactorySession) CreateOptimismMintableERC20(_remoteToken common.Address, _name string, _symbol string) (*types.Transaction, error) { - return _OptimismMintableERC20Factory.Contract.CreateOptimismMintableERC20(&_OptimismMintableERC20Factory.TransactOpts, _remoteToken, _name, _symbol) +func (_L1OptimismMintableERC20Factory *L1OptimismMintableERC20FactorySession) CreateOptimismMintableERC20(_remoteToken common.Address, _name string, _symbol string) (*types.Transaction, error) { + return _L1OptimismMintableERC20Factory.Contract.CreateOptimismMintableERC20(&_L1OptimismMintableERC20Factory.TransactOpts, _remoteToken, _name, _symbol) } // CreateOptimismMintableERC20 is a paid mutator transaction binding the contract method 0xce5ac90f. // // Solidity: function createOptimismMintableERC20(address _remoteToken, string _name, string _symbol) returns(address) -func (_OptimismMintableERC20Factory *OptimismMintableERC20FactoryTransactorSession) CreateOptimismMintableERC20(_remoteToken common.Address, _name string, _symbol string) (*types.Transaction, error) { - return _OptimismMintableERC20Factory.Contract.CreateOptimismMintableERC20(&_OptimismMintableERC20Factory.TransactOpts, _remoteToken, _name, _symbol) +func (_L1OptimismMintableERC20Factory *L1OptimismMintableERC20FactoryTransactorSession) CreateOptimismMintableERC20(_remoteToken common.Address, _name string, _symbol string) (*types.Transaction, error) { + return _L1OptimismMintableERC20Factory.Contract.CreateOptimismMintableERC20(&_L1OptimismMintableERC20Factory.TransactOpts, _remoteToken, _name, _symbol) } // CreateStandardL2Token is a paid mutator transaction binding the contract method 0x896f93d1. // // Solidity: function createStandardL2Token(address _remoteToken, string _name, string _symbol) returns(address) -func (_OptimismMintableERC20Factory *OptimismMintableERC20FactoryTransactor) CreateStandardL2Token(opts *bind.TransactOpts, _remoteToken common.Address, _name string, _symbol string) (*types.Transaction, error) { - return _OptimismMintableERC20Factory.contract.Transact(opts, "createStandardL2Token", _remoteToken, _name, _symbol) +func (_L1OptimismMintableERC20Factory *L1OptimismMintableERC20FactoryTransactor) CreateStandardL2Token(opts *bind.TransactOpts, _remoteToken common.Address, _name string, _symbol string) (*types.Transaction, error) { + return _L1OptimismMintableERC20Factory.contract.Transact(opts, "createStandardL2Token", _remoteToken, _name, _symbol) } // CreateStandardL2Token is a paid mutator transaction binding the contract method 0x896f93d1. // // Solidity: function createStandardL2Token(address _remoteToken, string _name, string _symbol) returns(address) -func (_OptimismMintableERC20Factory *OptimismMintableERC20FactorySession) CreateStandardL2Token(_remoteToken common.Address, _name string, _symbol string) (*types.Transaction, error) { - return _OptimismMintableERC20Factory.Contract.CreateStandardL2Token(&_OptimismMintableERC20Factory.TransactOpts, _remoteToken, _name, _symbol) +func (_L1OptimismMintableERC20Factory *L1OptimismMintableERC20FactorySession) CreateStandardL2Token(_remoteToken common.Address, _name string, _symbol string) (*types.Transaction, error) { + return _L1OptimismMintableERC20Factory.Contract.CreateStandardL2Token(&_L1OptimismMintableERC20Factory.TransactOpts, _remoteToken, _name, _symbol) } // CreateStandardL2Token is a paid mutator transaction binding the contract method 0x896f93d1. // // Solidity: function createStandardL2Token(address _remoteToken, string _name, string _symbol) returns(address) -func (_OptimismMintableERC20Factory *OptimismMintableERC20FactoryTransactorSession) CreateStandardL2Token(_remoteToken common.Address, _name string, _symbol string) (*types.Transaction, error) { - return _OptimismMintableERC20Factory.Contract.CreateStandardL2Token(&_OptimismMintableERC20Factory.TransactOpts, _remoteToken, _name, _symbol) +func (_L1OptimismMintableERC20Factory *L1OptimismMintableERC20FactoryTransactorSession) CreateStandardL2Token(_remoteToken common.Address, _name string, _symbol string) (*types.Transaction, error) { + return _L1OptimismMintableERC20Factory.Contract.CreateStandardL2Token(&_L1OptimismMintableERC20Factory.TransactOpts, _remoteToken, _name, _symbol) } -// OptimismMintableERC20FactoryOptimismMintableERC20CreatedIterator is returned from FilterOptimismMintableERC20Created and is used to iterate over the raw logs and unpacked data for OptimismMintableERC20Created events raised by the OptimismMintableERC20Factory contract. -type OptimismMintableERC20FactoryOptimismMintableERC20CreatedIterator struct { - Event *OptimismMintableERC20FactoryOptimismMintableERC20Created // Event containing the contract specifics and raw log +// L1OptimismMintableERC20FactoryOptimismMintableERC20CreatedIterator is returned from FilterOptimismMintableERC20Created and is used to iterate over the raw logs and unpacked data for OptimismMintableERC20Created events raised by the L1OptimismMintableERC20Factory contract. +type L1OptimismMintableERC20FactoryOptimismMintableERC20CreatedIterator struct { + Event *L1OptimismMintableERC20FactoryOptimismMintableERC20Created // Event containing the contract specifics and raw log contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -290,7 +290,7 @@ type OptimismMintableERC20FactoryOptimismMintableERC20CreatedIterator struct { // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *OptimismMintableERC20FactoryOptimismMintableERC20CreatedIterator) Next() bool { +func (it *L1OptimismMintableERC20FactoryOptimismMintableERC20CreatedIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -299,7 +299,7 @@ func (it *OptimismMintableERC20FactoryOptimismMintableERC20CreatedIterator) Next if it.done { select { case log := <-it.logs: - it.Event = new(OptimismMintableERC20FactoryOptimismMintableERC20Created) + it.Event = new(L1OptimismMintableERC20FactoryOptimismMintableERC20Created) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -314,7 +314,7 @@ func (it *OptimismMintableERC20FactoryOptimismMintableERC20CreatedIterator) Next // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(OptimismMintableERC20FactoryOptimismMintableERC20Created) + it.Event = new(L1OptimismMintableERC20FactoryOptimismMintableERC20Created) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -330,19 +330,19 @@ func (it *OptimismMintableERC20FactoryOptimismMintableERC20CreatedIterator) Next } // Error returns any retrieval or parsing error occurred during filtering. -func (it *OptimismMintableERC20FactoryOptimismMintableERC20CreatedIterator) Error() error { +func (it *L1OptimismMintableERC20FactoryOptimismMintableERC20CreatedIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *OptimismMintableERC20FactoryOptimismMintableERC20CreatedIterator) Close() error { +func (it *L1OptimismMintableERC20FactoryOptimismMintableERC20CreatedIterator) Close() error { it.sub.Unsubscribe() return nil } -// OptimismMintableERC20FactoryOptimismMintableERC20Created represents a OptimismMintableERC20Created event raised by the OptimismMintableERC20Factory contract. -type OptimismMintableERC20FactoryOptimismMintableERC20Created struct { +// L1OptimismMintableERC20FactoryOptimismMintableERC20Created represents a OptimismMintableERC20Created event raised by the L1OptimismMintableERC20Factory contract. +type L1OptimismMintableERC20FactoryOptimismMintableERC20Created struct { LocalToken common.Address RemoteToken common.Address Deployer common.Address @@ -352,7 +352,7 @@ type OptimismMintableERC20FactoryOptimismMintableERC20Created struct { // FilterOptimismMintableERC20Created is a free log retrieval operation binding the contract event 0x52fe89dd5930f343d25650b62fd367bae47088bcddffd2a88350a6ecdd620cdb. // // Solidity: event OptimismMintableERC20Created(address indexed localToken, address indexed remoteToken, address deployer) -func (_OptimismMintableERC20Factory *OptimismMintableERC20FactoryFilterer) FilterOptimismMintableERC20Created(opts *bind.FilterOpts, localToken []common.Address, remoteToken []common.Address) (*OptimismMintableERC20FactoryOptimismMintableERC20CreatedIterator, error) { +func (_L1OptimismMintableERC20Factory *L1OptimismMintableERC20FactoryFilterer) FilterOptimismMintableERC20Created(opts *bind.FilterOpts, localToken []common.Address, remoteToken []common.Address) (*L1OptimismMintableERC20FactoryOptimismMintableERC20CreatedIterator, error) { var localTokenRule []interface{} for _, localTokenItem := range localToken { @@ -363,17 +363,17 @@ func (_OptimismMintableERC20Factory *OptimismMintableERC20FactoryFilterer) Filte remoteTokenRule = append(remoteTokenRule, remoteTokenItem) } - logs, sub, err := _OptimismMintableERC20Factory.contract.FilterLogs(opts, "OptimismMintableERC20Created", localTokenRule, remoteTokenRule) + logs, sub, err := _L1OptimismMintableERC20Factory.contract.FilterLogs(opts, "OptimismMintableERC20Created", localTokenRule, remoteTokenRule) if err != nil { return nil, err } - return &OptimismMintableERC20FactoryOptimismMintableERC20CreatedIterator{contract: _OptimismMintableERC20Factory.contract, event: "OptimismMintableERC20Created", logs: logs, sub: sub}, nil + return &L1OptimismMintableERC20FactoryOptimismMintableERC20CreatedIterator{contract: _L1OptimismMintableERC20Factory.contract, event: "OptimismMintableERC20Created", logs: logs, sub: sub}, nil } // WatchOptimismMintableERC20Created is a free log subscription operation binding the contract event 0x52fe89dd5930f343d25650b62fd367bae47088bcddffd2a88350a6ecdd620cdb. // // Solidity: event OptimismMintableERC20Created(address indexed localToken, address indexed remoteToken, address deployer) -func (_OptimismMintableERC20Factory *OptimismMintableERC20FactoryFilterer) WatchOptimismMintableERC20Created(opts *bind.WatchOpts, sink chan<- *OptimismMintableERC20FactoryOptimismMintableERC20Created, localToken []common.Address, remoteToken []common.Address) (event.Subscription, error) { +func (_L1OptimismMintableERC20Factory *L1OptimismMintableERC20FactoryFilterer) WatchOptimismMintableERC20Created(opts *bind.WatchOpts, sink chan<- *L1OptimismMintableERC20FactoryOptimismMintableERC20Created, localToken []common.Address, remoteToken []common.Address) (event.Subscription, error) { var localTokenRule []interface{} for _, localTokenItem := range localToken { @@ -384,7 +384,7 @@ func (_OptimismMintableERC20Factory *OptimismMintableERC20FactoryFilterer) Watch remoteTokenRule = append(remoteTokenRule, remoteTokenItem) } - logs, sub, err := _OptimismMintableERC20Factory.contract.WatchLogs(opts, "OptimismMintableERC20Created", localTokenRule, remoteTokenRule) + logs, sub, err := _L1OptimismMintableERC20Factory.contract.WatchLogs(opts, "OptimismMintableERC20Created", localTokenRule, remoteTokenRule) if err != nil { return nil, err } @@ -394,8 +394,8 @@ func (_OptimismMintableERC20Factory *OptimismMintableERC20FactoryFilterer) Watch select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(OptimismMintableERC20FactoryOptimismMintableERC20Created) - if err := _OptimismMintableERC20Factory.contract.UnpackLog(event, "OptimismMintableERC20Created", log); err != nil { + event := new(L1OptimismMintableERC20FactoryOptimismMintableERC20Created) + if err := _L1OptimismMintableERC20Factory.contract.UnpackLog(event, "OptimismMintableERC20Created", log); err != nil { return err } event.Raw = log @@ -419,18 +419,18 @@ func (_OptimismMintableERC20Factory *OptimismMintableERC20FactoryFilterer) Watch // ParseOptimismMintableERC20Created is a log parse operation binding the contract event 0x52fe89dd5930f343d25650b62fd367bae47088bcddffd2a88350a6ecdd620cdb. // // Solidity: event OptimismMintableERC20Created(address indexed localToken, address indexed remoteToken, address deployer) -func (_OptimismMintableERC20Factory *OptimismMintableERC20FactoryFilterer) ParseOptimismMintableERC20Created(log types.Log) (*OptimismMintableERC20FactoryOptimismMintableERC20Created, error) { - event := new(OptimismMintableERC20FactoryOptimismMintableERC20Created) - if err := _OptimismMintableERC20Factory.contract.UnpackLog(event, "OptimismMintableERC20Created", log); err != nil { +func (_L1OptimismMintableERC20Factory *L1OptimismMintableERC20FactoryFilterer) ParseOptimismMintableERC20Created(log types.Log) (*L1OptimismMintableERC20FactoryOptimismMintableERC20Created, error) { + event := new(L1OptimismMintableERC20FactoryOptimismMintableERC20Created) + if err := _L1OptimismMintableERC20Factory.contract.UnpackLog(event, "OptimismMintableERC20Created", log); err != nil { return nil, err } event.Raw = log return event, nil } -// OptimismMintableERC20FactoryStandardL2TokenCreatedIterator is returned from FilterStandardL2TokenCreated and is used to iterate over the raw logs and unpacked data for StandardL2TokenCreated events raised by the OptimismMintableERC20Factory contract. -type OptimismMintableERC20FactoryStandardL2TokenCreatedIterator struct { - Event *OptimismMintableERC20FactoryStandardL2TokenCreated // Event containing the contract specifics and raw log +// L1OptimismMintableERC20FactoryStandardL2TokenCreatedIterator is returned from FilterStandardL2TokenCreated and is used to iterate over the raw logs and unpacked data for StandardL2TokenCreated events raised by the L1OptimismMintableERC20Factory contract. +type L1OptimismMintableERC20FactoryStandardL2TokenCreatedIterator struct { + Event *L1OptimismMintableERC20FactoryStandardL2TokenCreated // Event containing the contract specifics and raw log contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -444,7 +444,7 @@ type OptimismMintableERC20FactoryStandardL2TokenCreatedIterator struct { // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *OptimismMintableERC20FactoryStandardL2TokenCreatedIterator) Next() bool { +func (it *L1OptimismMintableERC20FactoryStandardL2TokenCreatedIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -453,7 +453,7 @@ func (it *OptimismMintableERC20FactoryStandardL2TokenCreatedIterator) Next() boo if it.done { select { case log := <-it.logs: - it.Event = new(OptimismMintableERC20FactoryStandardL2TokenCreated) + it.Event = new(L1OptimismMintableERC20FactoryStandardL2TokenCreated) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -468,7 +468,7 @@ func (it *OptimismMintableERC20FactoryStandardL2TokenCreatedIterator) Next() boo // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(OptimismMintableERC20FactoryStandardL2TokenCreated) + it.Event = new(L1OptimismMintableERC20FactoryStandardL2TokenCreated) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -484,19 +484,19 @@ func (it *OptimismMintableERC20FactoryStandardL2TokenCreatedIterator) Next() boo } // Error returns any retrieval or parsing error occurred during filtering. -func (it *OptimismMintableERC20FactoryStandardL2TokenCreatedIterator) Error() error { +func (it *L1OptimismMintableERC20FactoryStandardL2TokenCreatedIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *OptimismMintableERC20FactoryStandardL2TokenCreatedIterator) Close() error { +func (it *L1OptimismMintableERC20FactoryStandardL2TokenCreatedIterator) Close() error { it.sub.Unsubscribe() return nil } -// OptimismMintableERC20FactoryStandardL2TokenCreated represents a StandardL2TokenCreated event raised by the OptimismMintableERC20Factory contract. -type OptimismMintableERC20FactoryStandardL2TokenCreated struct { +// L1OptimismMintableERC20FactoryStandardL2TokenCreated represents a StandardL2TokenCreated event raised by the L1OptimismMintableERC20Factory contract. +type L1OptimismMintableERC20FactoryStandardL2TokenCreated struct { RemoteToken common.Address LocalToken common.Address Raw types.Log // Blockchain specific contextual infos @@ -505,7 +505,7 @@ type OptimismMintableERC20FactoryStandardL2TokenCreated struct { // FilterStandardL2TokenCreated is a free log retrieval operation binding the contract event 0xceeb8e7d520d7f3b65fc11a262b91066940193b05d4f93df07cfdced0eb551cf. // // Solidity: event StandardL2TokenCreated(address indexed remoteToken, address indexed localToken) -func (_OptimismMintableERC20Factory *OptimismMintableERC20FactoryFilterer) FilterStandardL2TokenCreated(opts *bind.FilterOpts, remoteToken []common.Address, localToken []common.Address) (*OptimismMintableERC20FactoryStandardL2TokenCreatedIterator, error) { +func (_L1OptimismMintableERC20Factory *L1OptimismMintableERC20FactoryFilterer) FilterStandardL2TokenCreated(opts *bind.FilterOpts, remoteToken []common.Address, localToken []common.Address) (*L1OptimismMintableERC20FactoryStandardL2TokenCreatedIterator, error) { var remoteTokenRule []interface{} for _, remoteTokenItem := range remoteToken { @@ -516,17 +516,17 @@ func (_OptimismMintableERC20Factory *OptimismMintableERC20FactoryFilterer) Filte localTokenRule = append(localTokenRule, localTokenItem) } - logs, sub, err := _OptimismMintableERC20Factory.contract.FilterLogs(opts, "StandardL2TokenCreated", remoteTokenRule, localTokenRule) + logs, sub, err := _L1OptimismMintableERC20Factory.contract.FilterLogs(opts, "StandardL2TokenCreated", remoteTokenRule, localTokenRule) if err != nil { return nil, err } - return &OptimismMintableERC20FactoryStandardL2TokenCreatedIterator{contract: _OptimismMintableERC20Factory.contract, event: "StandardL2TokenCreated", logs: logs, sub: sub}, nil + return &L1OptimismMintableERC20FactoryStandardL2TokenCreatedIterator{contract: _L1OptimismMintableERC20Factory.contract, event: "StandardL2TokenCreated", logs: logs, sub: sub}, nil } // WatchStandardL2TokenCreated is a free log subscription operation binding the contract event 0xceeb8e7d520d7f3b65fc11a262b91066940193b05d4f93df07cfdced0eb551cf. // // Solidity: event StandardL2TokenCreated(address indexed remoteToken, address indexed localToken) -func (_OptimismMintableERC20Factory *OptimismMintableERC20FactoryFilterer) WatchStandardL2TokenCreated(opts *bind.WatchOpts, sink chan<- *OptimismMintableERC20FactoryStandardL2TokenCreated, remoteToken []common.Address, localToken []common.Address) (event.Subscription, error) { +func (_L1OptimismMintableERC20Factory *L1OptimismMintableERC20FactoryFilterer) WatchStandardL2TokenCreated(opts *bind.WatchOpts, sink chan<- *L1OptimismMintableERC20FactoryStandardL2TokenCreated, remoteToken []common.Address, localToken []common.Address) (event.Subscription, error) { var remoteTokenRule []interface{} for _, remoteTokenItem := range remoteToken { @@ -537,7 +537,7 @@ func (_OptimismMintableERC20Factory *OptimismMintableERC20FactoryFilterer) Watch localTokenRule = append(localTokenRule, localTokenItem) } - logs, sub, err := _OptimismMintableERC20Factory.contract.WatchLogs(opts, "StandardL2TokenCreated", remoteTokenRule, localTokenRule) + logs, sub, err := _L1OptimismMintableERC20Factory.contract.WatchLogs(opts, "StandardL2TokenCreated", remoteTokenRule, localTokenRule) if err != nil { return nil, err } @@ -547,8 +547,8 @@ func (_OptimismMintableERC20Factory *OptimismMintableERC20FactoryFilterer) Watch select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(OptimismMintableERC20FactoryStandardL2TokenCreated) - if err := _OptimismMintableERC20Factory.contract.UnpackLog(event, "StandardL2TokenCreated", log); err != nil { + event := new(L1OptimismMintableERC20FactoryStandardL2TokenCreated) + if err := _L1OptimismMintableERC20Factory.contract.UnpackLog(event, "StandardL2TokenCreated", log); err != nil { return err } event.Raw = log @@ -572,9 +572,9 @@ func (_OptimismMintableERC20Factory *OptimismMintableERC20FactoryFilterer) Watch // ParseStandardL2TokenCreated is a log parse operation binding the contract event 0xceeb8e7d520d7f3b65fc11a262b91066940193b05d4f93df07cfdced0eb551cf. // // Solidity: event StandardL2TokenCreated(address indexed remoteToken, address indexed localToken) -func (_OptimismMintableERC20Factory *OptimismMintableERC20FactoryFilterer) ParseStandardL2TokenCreated(log types.Log) (*OptimismMintableERC20FactoryStandardL2TokenCreated, error) { - event := new(OptimismMintableERC20FactoryStandardL2TokenCreated) - if err := _OptimismMintableERC20Factory.contract.UnpackLog(event, "StandardL2TokenCreated", log); err != nil { +func (_L1OptimismMintableERC20Factory *L1OptimismMintableERC20FactoryFilterer) ParseStandardL2TokenCreated(log types.Log) (*L1OptimismMintableERC20FactoryStandardL2TokenCreated, error) { + event := new(L1OptimismMintableERC20FactoryStandardL2TokenCreated) + if err := _L1OptimismMintableERC20Factory.contract.UnpackLog(event, "StandardL2TokenCreated", log); err != nil { return nil, err } event.Raw = log diff --git a/op-bindings/bindings/l2crossdomainmessenger_more.go b/op-bindings/bindings/l2crossdomainmessenger_more.go index 99d50b6f4673d..9ee127a1d6a39 100644 --- a/op-bindings/bindings/l2crossdomainmessenger_more.go +++ b/op-bindings/bindings/l2crossdomainmessenger_more.go @@ -9,7 +9,7 @@ import ( "github.com/ethereum-optimism/optimism/op-bindings/solc" ) -const L2CrossDomainMessengerStorageLayoutJSON = "{\"storage\":[{\"astId\":24694,\"contract\":\"contracts/L2/L2CrossDomainMessenger.sol:L2CrossDomainMessenger\",\"label\":\"spacer_0_0_20\",\"offset\":0,\"slot\":\"0\",\"type\":\"t_bytes20\"},{\"astId\":27155,\"contract\":\"contracts/L2/L2CrossDomainMessenger.sol:L2CrossDomainMessenger\",\"label\":\"_initialized\",\"offset\":20,\"slot\":\"0\",\"type\":\"t_uint8\"},{\"astId\":27158,\"contract\":\"contracts/L2/L2CrossDomainMessenger.sol:L2CrossDomainMessenger\",\"label\":\"_initializing\",\"offset\":21,\"slot\":\"0\",\"type\":\"t_bool\"},{\"astId\":27769,\"contract\":\"contracts/L2/L2CrossDomainMessenger.sol:L2CrossDomainMessenger\",\"label\":\"__gap\",\"offset\":0,\"slot\":\"1\",\"type\":\"t_array(t_uint256)50_storage\"},{\"astId\":27027,\"contract\":\"contracts/L2/L2CrossDomainMessenger.sol:L2CrossDomainMessenger\",\"label\":\"_owner\",\"offset\":0,\"slot\":\"51\",\"type\":\"t_address\"},{\"astId\":27147,\"contract\":\"contracts/L2/L2CrossDomainMessenger.sol:L2CrossDomainMessenger\",\"label\":\"__gap\",\"offset\":0,\"slot\":\"52\",\"type\":\"t_array(t_uint256)49_storage\"},{\"astId\":27320,\"contract\":\"contracts/L2/L2CrossDomainMessenger.sol:L2CrossDomainMessenger\",\"label\":\"_paused\",\"offset\":0,\"slot\":\"101\",\"type\":\"t_bool\"},{\"astId\":27425,\"contract\":\"contracts/L2/L2CrossDomainMessenger.sol:L2CrossDomainMessenger\",\"label\":\"__gap\",\"offset\":0,\"slot\":\"102\",\"type\":\"t_array(t_uint256)49_storage\"},{\"astId\":27440,\"contract\":\"contracts/L2/L2CrossDomainMessenger.sol:L2CrossDomainMessenger\",\"label\":\"_status\",\"offset\":0,\"slot\":\"151\",\"type\":\"t_uint256\"},{\"astId\":27484,\"contract\":\"contracts/L2/L2CrossDomainMessenger.sol:L2CrossDomainMessenger\",\"label\":\"__gap\",\"offset\":0,\"slot\":\"152\",\"type\":\"t_array(t_uint256)49_storage\"},{\"astId\":24744,\"contract\":\"contracts/L2/L2CrossDomainMessenger.sol:L2CrossDomainMessenger\",\"label\":\"spacer_201_0_32\",\"offset\":0,\"slot\":\"201\",\"type\":\"t_bytes32\"},{\"astId\":24747,\"contract\":\"contracts/L2/L2CrossDomainMessenger.sol:L2CrossDomainMessenger\",\"label\":\"spacer_202_0_32\",\"offset\":0,\"slot\":\"202\",\"type\":\"t_bytes32\"},{\"astId\":24752,\"contract\":\"contracts/L2/L2CrossDomainMessenger.sol:L2CrossDomainMessenger\",\"label\":\"successfulMessages\",\"offset\":0,\"slot\":\"203\",\"type\":\"t_mapping(t_bytes32,t_bool)\"},{\"astId\":24755,\"contract\":\"contracts/L2/L2CrossDomainMessenger.sol:L2CrossDomainMessenger\",\"label\":\"xDomainMsgSender\",\"offset\":0,\"slot\":\"204\",\"type\":\"t_address\"},{\"astId\":24758,\"contract\":\"contracts/L2/L2CrossDomainMessenger.sol:L2CrossDomainMessenger\",\"label\":\"msgNonce\",\"offset\":0,\"slot\":\"205\",\"type\":\"t_uint240\"},{\"astId\":24763,\"contract\":\"contracts/L2/L2CrossDomainMessenger.sol:L2CrossDomainMessenger\",\"label\":\"receivedMessages\",\"offset\":0,\"slot\":\"206\",\"type\":\"t_mapping(t_bytes32,t_bool)\"},{\"astId\":24768,\"contract\":\"contracts/L2/L2CrossDomainMessenger.sol:L2CrossDomainMessenger\",\"label\":\"__gap\",\"offset\":0,\"slot\":\"207\",\"type\":\"t_array(t_uint256)42_storage\"}],\"types\":{\"t_address\":{\"encoding\":\"inplace\",\"label\":\"address\",\"numberOfBytes\":\"20\"},\"t_array(t_uint256)42_storage\":{\"encoding\":\"inplace\",\"label\":\"uint256[42]\",\"numberOfBytes\":\"1344\"},\"t_array(t_uint256)49_storage\":{\"encoding\":\"inplace\",\"label\":\"uint256[49]\",\"numberOfBytes\":\"1568\"},\"t_array(t_uint256)50_storage\":{\"encoding\":\"inplace\",\"label\":\"uint256[50]\",\"numberOfBytes\":\"1600\"},\"t_bool\":{\"encoding\":\"inplace\",\"label\":\"bool\",\"numberOfBytes\":\"1\"},\"t_bytes20\":{\"encoding\":\"inplace\",\"label\":\"bytes20\",\"numberOfBytes\":\"20\"},\"t_bytes32\":{\"encoding\":\"inplace\",\"label\":\"bytes32\",\"numberOfBytes\":\"32\"},\"t_mapping(t_bytes32,t_bool)\":{\"encoding\":\"mapping\",\"label\":\"mapping(bytes32 =\u003e bool)\",\"numberOfBytes\":\"32\",\"key\":\"t_bytes32\",\"value\":\"t_bool\"},\"t_uint240\":{\"encoding\":\"inplace\",\"label\":\"uint240\",\"numberOfBytes\":\"30\"},\"t_uint256\":{\"encoding\":\"inplace\",\"label\":\"uint256\",\"numberOfBytes\":\"32\"},\"t_uint8\":{\"encoding\":\"inplace\",\"label\":\"uint8\",\"numberOfBytes\":\"1\"}}}" +const L2CrossDomainMessengerStorageLayoutJSON = "{\"storage\":[{\"astId\":24730,\"contract\":\"contracts/L2/L2CrossDomainMessenger.sol:L2CrossDomainMessenger\",\"label\":\"spacer_0_0_20\",\"offset\":0,\"slot\":\"0\",\"type\":\"t_bytes20\"},{\"astId\":27191,\"contract\":\"contracts/L2/L2CrossDomainMessenger.sol:L2CrossDomainMessenger\",\"label\":\"_initialized\",\"offset\":20,\"slot\":\"0\",\"type\":\"t_uint8\"},{\"astId\":27194,\"contract\":\"contracts/L2/L2CrossDomainMessenger.sol:L2CrossDomainMessenger\",\"label\":\"_initializing\",\"offset\":21,\"slot\":\"0\",\"type\":\"t_bool\"},{\"astId\":27805,\"contract\":\"contracts/L2/L2CrossDomainMessenger.sol:L2CrossDomainMessenger\",\"label\":\"__gap\",\"offset\":0,\"slot\":\"1\",\"type\":\"t_array(t_uint256)50_storage\"},{\"astId\":27063,\"contract\":\"contracts/L2/L2CrossDomainMessenger.sol:L2CrossDomainMessenger\",\"label\":\"_owner\",\"offset\":0,\"slot\":\"51\",\"type\":\"t_address\"},{\"astId\":27183,\"contract\":\"contracts/L2/L2CrossDomainMessenger.sol:L2CrossDomainMessenger\",\"label\":\"__gap\",\"offset\":0,\"slot\":\"52\",\"type\":\"t_array(t_uint256)49_storage\"},{\"astId\":27356,\"contract\":\"contracts/L2/L2CrossDomainMessenger.sol:L2CrossDomainMessenger\",\"label\":\"_paused\",\"offset\":0,\"slot\":\"101\",\"type\":\"t_bool\"},{\"astId\":27461,\"contract\":\"contracts/L2/L2CrossDomainMessenger.sol:L2CrossDomainMessenger\",\"label\":\"__gap\",\"offset\":0,\"slot\":\"102\",\"type\":\"t_array(t_uint256)49_storage\"},{\"astId\":27476,\"contract\":\"contracts/L2/L2CrossDomainMessenger.sol:L2CrossDomainMessenger\",\"label\":\"_status\",\"offset\":0,\"slot\":\"151\",\"type\":\"t_uint256\"},{\"astId\":27520,\"contract\":\"contracts/L2/L2CrossDomainMessenger.sol:L2CrossDomainMessenger\",\"label\":\"__gap\",\"offset\":0,\"slot\":\"152\",\"type\":\"t_array(t_uint256)49_storage\"},{\"astId\":24780,\"contract\":\"contracts/L2/L2CrossDomainMessenger.sol:L2CrossDomainMessenger\",\"label\":\"spacer_201_0_32\",\"offset\":0,\"slot\":\"201\",\"type\":\"t_bytes32\"},{\"astId\":24783,\"contract\":\"contracts/L2/L2CrossDomainMessenger.sol:L2CrossDomainMessenger\",\"label\":\"spacer_202_0_32\",\"offset\":0,\"slot\":\"202\",\"type\":\"t_bytes32\"},{\"astId\":24788,\"contract\":\"contracts/L2/L2CrossDomainMessenger.sol:L2CrossDomainMessenger\",\"label\":\"successfulMessages\",\"offset\":0,\"slot\":\"203\",\"type\":\"t_mapping(t_bytes32,t_bool)\"},{\"astId\":24791,\"contract\":\"contracts/L2/L2CrossDomainMessenger.sol:L2CrossDomainMessenger\",\"label\":\"xDomainMsgSender\",\"offset\":0,\"slot\":\"204\",\"type\":\"t_address\"},{\"astId\":24794,\"contract\":\"contracts/L2/L2CrossDomainMessenger.sol:L2CrossDomainMessenger\",\"label\":\"msgNonce\",\"offset\":0,\"slot\":\"205\",\"type\":\"t_uint240\"},{\"astId\":24799,\"contract\":\"contracts/L2/L2CrossDomainMessenger.sol:L2CrossDomainMessenger\",\"label\":\"receivedMessages\",\"offset\":0,\"slot\":\"206\",\"type\":\"t_mapping(t_bytes32,t_bool)\"},{\"astId\":24804,\"contract\":\"contracts/L2/L2CrossDomainMessenger.sol:L2CrossDomainMessenger\",\"label\":\"__gap\",\"offset\":0,\"slot\":\"207\",\"type\":\"t_array(t_uint256)42_storage\"}],\"types\":{\"t_address\":{\"encoding\":\"inplace\",\"label\":\"address\",\"numberOfBytes\":\"20\"},\"t_array(t_uint256)42_storage\":{\"encoding\":\"inplace\",\"label\":\"uint256[42]\",\"numberOfBytes\":\"1344\"},\"t_array(t_uint256)49_storage\":{\"encoding\":\"inplace\",\"label\":\"uint256[49]\",\"numberOfBytes\":\"1568\"},\"t_array(t_uint256)50_storage\":{\"encoding\":\"inplace\",\"label\":\"uint256[50]\",\"numberOfBytes\":\"1600\"},\"t_bool\":{\"encoding\":\"inplace\",\"label\":\"bool\",\"numberOfBytes\":\"1\"},\"t_bytes20\":{\"encoding\":\"inplace\",\"label\":\"bytes20\",\"numberOfBytes\":\"20\"},\"t_bytes32\":{\"encoding\":\"inplace\",\"label\":\"bytes32\",\"numberOfBytes\":\"32\"},\"t_mapping(t_bytes32,t_bool)\":{\"encoding\":\"mapping\",\"label\":\"mapping(bytes32 =\u003e bool)\",\"numberOfBytes\":\"32\",\"key\":\"t_bytes32\",\"value\":\"t_bool\"},\"t_uint240\":{\"encoding\":\"inplace\",\"label\":\"uint240\",\"numberOfBytes\":\"30\"},\"t_uint256\":{\"encoding\":\"inplace\",\"label\":\"uint256\",\"numberOfBytes\":\"32\"},\"t_uint8\":{\"encoding\":\"inplace\",\"label\":\"uint8\",\"numberOfBytes\":\"1\"}}}" var L2CrossDomainMessengerStorageLayout = new(solc.StorageLayout) diff --git a/op-bindings/bindings/l2optimismmintableerc20factory.go b/op-bindings/bindings/l2optimismmintableerc20factory.go new file mode 100644 index 0000000000000..d7489e67087da --- /dev/null +++ b/op-bindings/bindings/l2optimismmintableerc20factory.go @@ -0,0 +1,582 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package bindings + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription +) + +// L2OptimismMintableERC20FactoryMetaData contains all meta data concerning the L2OptimismMintableERC20Factory contract. +var L2OptimismMintableERC20FactoryMetaData = &bind.MetaData{ + ABI: "[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"localToken\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"remoteToken\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"deployer\",\"type\":\"address\"}],\"name\":\"OptimismMintableERC20Created\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"remoteToken\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"localToken\",\"type\":\"address\"}],\"name\":\"StandardL2TokenCreated\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"bridge\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_remoteToken\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"_name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_symbol\",\"type\":\"string\"}],\"name\":\"createOptimismMintableERC20\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_remoteToken\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"_name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_symbol\",\"type\":\"string\"}],\"name\":\"createStandardL2Token\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", + Bin: "0x60a060405234801561001057600080fd5b50734200000000000000000000000000000000000010608052608051611b1961004a60003960008181609a015261017e0152611b196000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c8063896f93d114610046578063ce5ac90f14610082578063e78cea9214610095575b600080fd5b610059610054366004610371565b6100bc565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b610059610090366004610371565b6100d1565b6100597f000000000000000000000000000000000000000000000000000000000000000081565b60006100c98484846100d1565b949350505050565b600073ffffffffffffffffffffffffffffffffffffffff841661017a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603f60248201527f4f7074696d69736d4d696e7461626c654552433230466163746f72793a206d7560448201527f73742070726f766964652072656d6f746520746f6b656e206164647265737300606482015260840160405180910390fd5b60007f00000000000000000000000000000000000000000000000000000000000000008585856040516101ac9061028a565b6101b9949392919061046b565b604051809103906000f0801580156101d5573d6000803e3d6000fd5b5090508073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fceeb8e7d520d7f3b65fc11a262b91066940193b05d4f93df07cfdced0eb551cf60405160405180910390a360405133815273ffffffffffffffffffffffffffffffffffffffff80831691908716907f52fe89dd5930f343d25650b62fd367bae47088bcddffd2a88350a6ecdd620cdb9060200160405180910390a3949350505050565b61164b806104c283390190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f8301126102d757600080fd5b813567ffffffffffffffff808211156102f2576102f2610297565b604051601f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190828211818310171561033857610338610297565b8160405283815286602085880101111561035157600080fd5b836020870160208301376000602085830101528094505050505092915050565b60008060006060848603121561038657600080fd5b833573ffffffffffffffffffffffffffffffffffffffff811681146103aa57600080fd5b9250602084013567ffffffffffffffff808211156103c757600080fd5b6103d3878388016102c6565b935060408601359150808211156103e957600080fd5b506103f6868287016102c6565b9150509250925092565b6000815180845260005b818110156104265760208185018101518683018201520161040a565b81811115610438576000602083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b600073ffffffffffffffffffffffffffffffffffffffff8087168352808616602084015250608060408301526104a46080830185610400565b82810360608401526104b68185610400565b97965050505050505056fe60806040523480156200001157600080fd5b506040516200164b3803806200164b833981016040819052620000349162000179565b8181600362000044838262000298565b50600462000053828262000298565b5050600580546001600160a01b039586166001600160a01b03199182161790915560068054969095169516949094179092555062000364915050565b80516001600160a01b0381168114620000a757600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b600082601f830112620000d457600080fd5b81516001600160401b0380821115620000f157620000f1620000ac565b604051601f8301601f19908116603f011681019082821181831017156200011c576200011c620000ac565b816040528381526020925086838588010111156200013957600080fd5b600091505b838210156200015d57858201830151818301840152908201906200013e565b838211156200016f5760008385830101525b9695505050505050565b600080600080608085870312156200019057600080fd5b6200019b856200008f565b9350620001ab602086016200008f565b60408601519093506001600160401b0380821115620001c957600080fd5b620001d788838901620000c2565b93506060870151915080821115620001ee57600080fd5b50620001fd87828801620000c2565b91505092959194509250565b600181811c908216806200021e57607f821691505b6020821081036200023f57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200029357600081815260208120601f850160051c810160208610156200026e5750805b601f850160051c820191505b818110156200028f578281556001016200027a565b5050505b505050565b81516001600160401b03811115620002b457620002b4620000ac565b620002cc81620002c5845462000209565b8462000245565b602080601f831160018114620003045760008415620002eb5750858301515b600019600386901b1c1916600185901b1785556200028f565b600085815260208120601f198616915b82811015620003355788860151825594840194600190910190840162000314565b5085821015620003545787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6112d780620003746000396000f3fe608060405234801561001057600080fd5b50600436106101365760003560e01c806395d89b41116100b2578063ae1f6aaf11610081578063d6c0b2c411610066578063d6c0b2c4146102bb578063dd62ed3e146102db578063e78cea921461032157600080fd5b8063ae1f6aaf1461025e578063c01e1bd61461029d57600080fd5b806395d89b411461021d5780639dc29fac14610225578063a457c2d714610238578063a9059cbb1461024b57600080fd5b806323b872dd1161010957806339509351116100ee57806339509351146101bf57806340c10f19146101d257806370a08231146101e757600080fd5b806323b872dd1461019d578063313ce567146101b057600080fd5b806301ffc9a71461013b57806306fdde0314610163578063095ea7b31461017857806318160ddd1461018b575b600080fd5b61014e610149366004611080565b610341565b60405190151581526020015b60405180910390f35b61016b610432565b60405161015a91906110c9565b61014e610186366004611165565b6104c4565b6002545b60405190815260200161015a565b61014e6101ab36600461118f565b6104dc565b6040516012815260200161015a565b61014e6101cd366004611165565b610500565b6101e56101e0366004611165565b61054c565b005b61018f6101f53660046111cb565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b61016b610656565b6101e5610233366004611165565b610665565b61014e610246366004611165565b61075e565b61014e610259366004611165565b61082f565b60065473ffffffffffffffffffffffffffffffffffffffff165b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161015a565b60055473ffffffffffffffffffffffffffffffffffffffff16610278565b6005546102789073ffffffffffffffffffffffffffffffffffffffff1681565b61018f6102e93660046111e6565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b6006546102789073ffffffffffffffffffffffffffffffffffffffff1681565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007f1d1d8b63000000000000000000000000000000000000000000000000000000007f0bc32271000000000000000000000000000000000000000000000000000000007fffffffff0000000000000000000000000000000000000000000000000000000085168314806103fa57507fffffffff00000000000000000000000000000000000000000000000000000000858116908316145b8061042957507fffffffff00000000000000000000000000000000000000000000000000000000858116908216145b95945050505050565b60606003805461044190611219565b80601f016020809104026020016040519081016040528092919081815260200182805461046d90611219565b80156104ba5780601f1061048f576101008083540402835291602001916104ba565b820191906000526020600020905b81548152906001019060200180831161049d57829003601f168201915b5050505050905090565b6000336104d281858561083d565b5060019392505050565b6000336104ea8582856109f1565b6104f5858585610ac8565b506001949350505050565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff871684529091528120549091906104d2908290869061054790879061129b565b61083d565b60065473ffffffffffffffffffffffffffffffffffffffff1633146105f8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603460248201527f4f7074696d69736d4d696e7461626c6545524332303a206f6e6c79206272696460448201527f67652063616e206d696e7420616e64206275726e00000000000000000000000060648201526084015b60405180910390fd5b6106028282610d7b565b8173ffffffffffffffffffffffffffffffffffffffff167f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d41213968858260405161064a91815260200190565b60405180910390a25050565b60606004805461044190611219565b60065473ffffffffffffffffffffffffffffffffffffffff16331461070c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603460248201527f4f7074696d69736d4d696e7461626c6545524332303a206f6e6c79206272696460448201527f67652063616e206d696e7420616e64206275726e00000000000000000000000060648201526084016105ef565b6107168282610e9b565b8173ffffffffffffffffffffffffffffffffffffffff167fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca58260405161064a91815260200190565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490919083811015610822576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f00000000000000000000000000000000000000000000000000000060648201526084016105ef565b6104f5828686840361083d565b6000336104d2818585610ac8565b73ffffffffffffffffffffffffffffffffffffffff83166108df576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f726573730000000000000000000000000000000000000000000000000000000060648201526084016105ef565b73ffffffffffffffffffffffffffffffffffffffff8216610982576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f737300000000000000000000000000000000000000000000000000000000000060648201526084016105ef565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610ac25781811015610ab5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016105ef565b610ac2848484840361083d565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8316610b6b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f647265737300000000000000000000000000000000000000000000000000000060648201526084016105ef565b73ffffffffffffffffffffffffffffffffffffffff8216610c0e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f657373000000000000000000000000000000000000000000000000000000000060648201526084016105ef565b73ffffffffffffffffffffffffffffffffffffffff831660009081526020819052604090205481811015610cc4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e6365000000000000000000000000000000000000000000000000000060648201526084016105ef565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260208190526040808220858503905591851681529081208054849290610d0890849061129b565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610d6e91815260200190565b60405180910390a3610ac2565b73ffffffffffffffffffffffffffffffffffffffff8216610df8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016105ef565b8060026000828254610e0a919061129b565b909155505073ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604081208054839290610e4490849061129b565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b73ffffffffffffffffffffffffffffffffffffffff8216610f3e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f730000000000000000000000000000000000000000000000000000000000000060648201526084016105ef565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090205481811015610ff4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f636500000000000000000000000000000000000000000000000000000000000060648201526084016105ef565b73ffffffffffffffffffffffffffffffffffffffff831660009081526020819052604081208383039055600280548492906110309084906112b3565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906020016109e4565b60006020828403121561109257600080fd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146110c257600080fd5b9392505050565b600060208083528351808285015260005b818110156110f6578581018301518582016040015282016110da565b81811115611108576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461116057600080fd5b919050565b6000806040838503121561117857600080fd5b6111818361113c565b946020939093013593505050565b6000806000606084860312156111a457600080fd5b6111ad8461113c565b92506111bb6020850161113c565b9150604084013590509250925092565b6000602082840312156111dd57600080fd5b6110c28261113c565b600080604083850312156111f957600080fd5b6112028361113c565b91506112106020840161113c565b90509250929050565b600181811c9082168061122d57607f821691505b602082108103611266577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600082198211156112ae576112ae61126c565b500190565b6000828210156112c5576112c561126c565b50039056fea164736f6c634300080f000aa164736f6c634300080f000a", +} + +// L2OptimismMintableERC20FactoryABI is the input ABI used to generate the binding from. +// Deprecated: Use L2OptimismMintableERC20FactoryMetaData.ABI instead. +var L2OptimismMintableERC20FactoryABI = L2OptimismMintableERC20FactoryMetaData.ABI + +// L2OptimismMintableERC20FactoryBin is the compiled bytecode used for deploying new contracts. +// Deprecated: Use L2OptimismMintableERC20FactoryMetaData.Bin instead. +var L2OptimismMintableERC20FactoryBin = L2OptimismMintableERC20FactoryMetaData.Bin + +// DeployL2OptimismMintableERC20Factory deploys a new Ethereum contract, binding an instance of L2OptimismMintableERC20Factory to it. +func DeployL2OptimismMintableERC20Factory(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *L2OptimismMintableERC20Factory, error) { + parsed, err := L2OptimismMintableERC20FactoryMetaData.GetAbi() + if err != nil { + return common.Address{}, nil, nil, err + } + if parsed == nil { + return common.Address{}, nil, nil, errors.New("GetABI returned nil") + } + + address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(L2OptimismMintableERC20FactoryBin), backend) + if err != nil { + return common.Address{}, nil, nil, err + } + return address, tx, &L2OptimismMintableERC20Factory{L2OptimismMintableERC20FactoryCaller: L2OptimismMintableERC20FactoryCaller{contract: contract}, L2OptimismMintableERC20FactoryTransactor: L2OptimismMintableERC20FactoryTransactor{contract: contract}, L2OptimismMintableERC20FactoryFilterer: L2OptimismMintableERC20FactoryFilterer{contract: contract}}, nil +} + +// L2OptimismMintableERC20Factory is an auto generated Go binding around an Ethereum contract. +type L2OptimismMintableERC20Factory struct { + L2OptimismMintableERC20FactoryCaller // Read-only binding to the contract + L2OptimismMintableERC20FactoryTransactor // Write-only binding to the contract + L2OptimismMintableERC20FactoryFilterer // Log filterer for contract events +} + +// L2OptimismMintableERC20FactoryCaller is an auto generated read-only Go binding around an Ethereum contract. +type L2OptimismMintableERC20FactoryCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// L2OptimismMintableERC20FactoryTransactor is an auto generated write-only Go binding around an Ethereum contract. +type L2OptimismMintableERC20FactoryTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// L2OptimismMintableERC20FactoryFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type L2OptimismMintableERC20FactoryFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// L2OptimismMintableERC20FactorySession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type L2OptimismMintableERC20FactorySession struct { + Contract *L2OptimismMintableERC20Factory // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// L2OptimismMintableERC20FactoryCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type L2OptimismMintableERC20FactoryCallerSession struct { + Contract *L2OptimismMintableERC20FactoryCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// L2OptimismMintableERC20FactoryTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type L2OptimismMintableERC20FactoryTransactorSession struct { + Contract *L2OptimismMintableERC20FactoryTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// L2OptimismMintableERC20FactoryRaw is an auto generated low-level Go binding around an Ethereum contract. +type L2OptimismMintableERC20FactoryRaw struct { + Contract *L2OptimismMintableERC20Factory // Generic contract binding to access the raw methods on +} + +// L2OptimismMintableERC20FactoryCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type L2OptimismMintableERC20FactoryCallerRaw struct { + Contract *L2OptimismMintableERC20FactoryCaller // Generic read-only contract binding to access the raw methods on +} + +// L2OptimismMintableERC20FactoryTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type L2OptimismMintableERC20FactoryTransactorRaw struct { + Contract *L2OptimismMintableERC20FactoryTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewL2OptimismMintableERC20Factory creates a new instance of L2OptimismMintableERC20Factory, bound to a specific deployed contract. +func NewL2OptimismMintableERC20Factory(address common.Address, backend bind.ContractBackend) (*L2OptimismMintableERC20Factory, error) { + contract, err := bindL2OptimismMintableERC20Factory(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &L2OptimismMintableERC20Factory{L2OptimismMintableERC20FactoryCaller: L2OptimismMintableERC20FactoryCaller{contract: contract}, L2OptimismMintableERC20FactoryTransactor: L2OptimismMintableERC20FactoryTransactor{contract: contract}, L2OptimismMintableERC20FactoryFilterer: L2OptimismMintableERC20FactoryFilterer{contract: contract}}, nil +} + +// NewL2OptimismMintableERC20FactoryCaller creates a new read-only instance of L2OptimismMintableERC20Factory, bound to a specific deployed contract. +func NewL2OptimismMintableERC20FactoryCaller(address common.Address, caller bind.ContractCaller) (*L2OptimismMintableERC20FactoryCaller, error) { + contract, err := bindL2OptimismMintableERC20Factory(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &L2OptimismMintableERC20FactoryCaller{contract: contract}, nil +} + +// NewL2OptimismMintableERC20FactoryTransactor creates a new write-only instance of L2OptimismMintableERC20Factory, bound to a specific deployed contract. +func NewL2OptimismMintableERC20FactoryTransactor(address common.Address, transactor bind.ContractTransactor) (*L2OptimismMintableERC20FactoryTransactor, error) { + contract, err := bindL2OptimismMintableERC20Factory(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &L2OptimismMintableERC20FactoryTransactor{contract: contract}, nil +} + +// NewL2OptimismMintableERC20FactoryFilterer creates a new log filterer instance of L2OptimismMintableERC20Factory, bound to a specific deployed contract. +func NewL2OptimismMintableERC20FactoryFilterer(address common.Address, filterer bind.ContractFilterer) (*L2OptimismMintableERC20FactoryFilterer, error) { + contract, err := bindL2OptimismMintableERC20Factory(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &L2OptimismMintableERC20FactoryFilterer{contract: contract}, nil +} + +// bindL2OptimismMintableERC20Factory binds a generic wrapper to an already deployed contract. +func bindL2OptimismMintableERC20Factory(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := abi.JSON(strings.NewReader(L2OptimismMintableERC20FactoryABI)) + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_L2OptimismMintableERC20Factory *L2OptimismMintableERC20FactoryRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _L2OptimismMintableERC20Factory.Contract.L2OptimismMintableERC20FactoryCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_L2OptimismMintableERC20Factory *L2OptimismMintableERC20FactoryRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _L2OptimismMintableERC20Factory.Contract.L2OptimismMintableERC20FactoryTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_L2OptimismMintableERC20Factory *L2OptimismMintableERC20FactoryRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _L2OptimismMintableERC20Factory.Contract.L2OptimismMintableERC20FactoryTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_L2OptimismMintableERC20Factory *L2OptimismMintableERC20FactoryCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _L2OptimismMintableERC20Factory.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_L2OptimismMintableERC20Factory *L2OptimismMintableERC20FactoryTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _L2OptimismMintableERC20Factory.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_L2OptimismMintableERC20Factory *L2OptimismMintableERC20FactoryTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _L2OptimismMintableERC20Factory.Contract.contract.Transact(opts, method, params...) +} + +// Bridge is a free data retrieval call binding the contract method 0xe78cea92. +// +// Solidity: function bridge() view returns(address) +func (_L2OptimismMintableERC20Factory *L2OptimismMintableERC20FactoryCaller) Bridge(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _L2OptimismMintableERC20Factory.contract.Call(opts, &out, "bridge") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// Bridge is a free data retrieval call binding the contract method 0xe78cea92. +// +// Solidity: function bridge() view returns(address) +func (_L2OptimismMintableERC20Factory *L2OptimismMintableERC20FactorySession) Bridge() (common.Address, error) { + return _L2OptimismMintableERC20Factory.Contract.Bridge(&_L2OptimismMintableERC20Factory.CallOpts) +} + +// Bridge is a free data retrieval call binding the contract method 0xe78cea92. +// +// Solidity: function bridge() view returns(address) +func (_L2OptimismMintableERC20Factory *L2OptimismMintableERC20FactoryCallerSession) Bridge() (common.Address, error) { + return _L2OptimismMintableERC20Factory.Contract.Bridge(&_L2OptimismMintableERC20Factory.CallOpts) +} + +// CreateOptimismMintableERC20 is a paid mutator transaction binding the contract method 0xce5ac90f. +// +// Solidity: function createOptimismMintableERC20(address _remoteToken, string _name, string _symbol) returns(address) +func (_L2OptimismMintableERC20Factory *L2OptimismMintableERC20FactoryTransactor) CreateOptimismMintableERC20(opts *bind.TransactOpts, _remoteToken common.Address, _name string, _symbol string) (*types.Transaction, error) { + return _L2OptimismMintableERC20Factory.contract.Transact(opts, "createOptimismMintableERC20", _remoteToken, _name, _symbol) +} + +// CreateOptimismMintableERC20 is a paid mutator transaction binding the contract method 0xce5ac90f. +// +// Solidity: function createOptimismMintableERC20(address _remoteToken, string _name, string _symbol) returns(address) +func (_L2OptimismMintableERC20Factory *L2OptimismMintableERC20FactorySession) CreateOptimismMintableERC20(_remoteToken common.Address, _name string, _symbol string) (*types.Transaction, error) { + return _L2OptimismMintableERC20Factory.Contract.CreateOptimismMintableERC20(&_L2OptimismMintableERC20Factory.TransactOpts, _remoteToken, _name, _symbol) +} + +// CreateOptimismMintableERC20 is a paid mutator transaction binding the contract method 0xce5ac90f. +// +// Solidity: function createOptimismMintableERC20(address _remoteToken, string _name, string _symbol) returns(address) +func (_L2OptimismMintableERC20Factory *L2OptimismMintableERC20FactoryTransactorSession) CreateOptimismMintableERC20(_remoteToken common.Address, _name string, _symbol string) (*types.Transaction, error) { + return _L2OptimismMintableERC20Factory.Contract.CreateOptimismMintableERC20(&_L2OptimismMintableERC20Factory.TransactOpts, _remoteToken, _name, _symbol) +} + +// CreateStandardL2Token is a paid mutator transaction binding the contract method 0x896f93d1. +// +// Solidity: function createStandardL2Token(address _remoteToken, string _name, string _symbol) returns(address) +func (_L2OptimismMintableERC20Factory *L2OptimismMintableERC20FactoryTransactor) CreateStandardL2Token(opts *bind.TransactOpts, _remoteToken common.Address, _name string, _symbol string) (*types.Transaction, error) { + return _L2OptimismMintableERC20Factory.contract.Transact(opts, "createStandardL2Token", _remoteToken, _name, _symbol) +} + +// CreateStandardL2Token is a paid mutator transaction binding the contract method 0x896f93d1. +// +// Solidity: function createStandardL2Token(address _remoteToken, string _name, string _symbol) returns(address) +func (_L2OptimismMintableERC20Factory *L2OptimismMintableERC20FactorySession) CreateStandardL2Token(_remoteToken common.Address, _name string, _symbol string) (*types.Transaction, error) { + return _L2OptimismMintableERC20Factory.Contract.CreateStandardL2Token(&_L2OptimismMintableERC20Factory.TransactOpts, _remoteToken, _name, _symbol) +} + +// CreateStandardL2Token is a paid mutator transaction binding the contract method 0x896f93d1. +// +// Solidity: function createStandardL2Token(address _remoteToken, string _name, string _symbol) returns(address) +func (_L2OptimismMintableERC20Factory *L2OptimismMintableERC20FactoryTransactorSession) CreateStandardL2Token(_remoteToken common.Address, _name string, _symbol string) (*types.Transaction, error) { + return _L2OptimismMintableERC20Factory.Contract.CreateStandardL2Token(&_L2OptimismMintableERC20Factory.TransactOpts, _remoteToken, _name, _symbol) +} + +// L2OptimismMintableERC20FactoryOptimismMintableERC20CreatedIterator is returned from FilterOptimismMintableERC20Created and is used to iterate over the raw logs and unpacked data for OptimismMintableERC20Created events raised by the L2OptimismMintableERC20Factory contract. +type L2OptimismMintableERC20FactoryOptimismMintableERC20CreatedIterator struct { + Event *L2OptimismMintableERC20FactoryOptimismMintableERC20Created // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *L2OptimismMintableERC20FactoryOptimismMintableERC20CreatedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(L2OptimismMintableERC20FactoryOptimismMintableERC20Created) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(L2OptimismMintableERC20FactoryOptimismMintableERC20Created) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *L2OptimismMintableERC20FactoryOptimismMintableERC20CreatedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *L2OptimismMintableERC20FactoryOptimismMintableERC20CreatedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// L2OptimismMintableERC20FactoryOptimismMintableERC20Created represents a OptimismMintableERC20Created event raised by the L2OptimismMintableERC20Factory contract. +type L2OptimismMintableERC20FactoryOptimismMintableERC20Created struct { + LocalToken common.Address + RemoteToken common.Address + Deployer common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterOptimismMintableERC20Created is a free log retrieval operation binding the contract event 0x52fe89dd5930f343d25650b62fd367bae47088bcddffd2a88350a6ecdd620cdb. +// +// Solidity: event OptimismMintableERC20Created(address indexed localToken, address indexed remoteToken, address deployer) +func (_L2OptimismMintableERC20Factory *L2OptimismMintableERC20FactoryFilterer) FilterOptimismMintableERC20Created(opts *bind.FilterOpts, localToken []common.Address, remoteToken []common.Address) (*L2OptimismMintableERC20FactoryOptimismMintableERC20CreatedIterator, error) { + + var localTokenRule []interface{} + for _, localTokenItem := range localToken { + localTokenRule = append(localTokenRule, localTokenItem) + } + var remoteTokenRule []interface{} + for _, remoteTokenItem := range remoteToken { + remoteTokenRule = append(remoteTokenRule, remoteTokenItem) + } + + logs, sub, err := _L2OptimismMintableERC20Factory.contract.FilterLogs(opts, "OptimismMintableERC20Created", localTokenRule, remoteTokenRule) + if err != nil { + return nil, err + } + return &L2OptimismMintableERC20FactoryOptimismMintableERC20CreatedIterator{contract: _L2OptimismMintableERC20Factory.contract, event: "OptimismMintableERC20Created", logs: logs, sub: sub}, nil +} + +// WatchOptimismMintableERC20Created is a free log subscription operation binding the contract event 0x52fe89dd5930f343d25650b62fd367bae47088bcddffd2a88350a6ecdd620cdb. +// +// Solidity: event OptimismMintableERC20Created(address indexed localToken, address indexed remoteToken, address deployer) +func (_L2OptimismMintableERC20Factory *L2OptimismMintableERC20FactoryFilterer) WatchOptimismMintableERC20Created(opts *bind.WatchOpts, sink chan<- *L2OptimismMintableERC20FactoryOptimismMintableERC20Created, localToken []common.Address, remoteToken []common.Address) (event.Subscription, error) { + + var localTokenRule []interface{} + for _, localTokenItem := range localToken { + localTokenRule = append(localTokenRule, localTokenItem) + } + var remoteTokenRule []interface{} + for _, remoteTokenItem := range remoteToken { + remoteTokenRule = append(remoteTokenRule, remoteTokenItem) + } + + logs, sub, err := _L2OptimismMintableERC20Factory.contract.WatchLogs(opts, "OptimismMintableERC20Created", localTokenRule, remoteTokenRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(L2OptimismMintableERC20FactoryOptimismMintableERC20Created) + if err := _L2OptimismMintableERC20Factory.contract.UnpackLog(event, "OptimismMintableERC20Created", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseOptimismMintableERC20Created is a log parse operation binding the contract event 0x52fe89dd5930f343d25650b62fd367bae47088bcddffd2a88350a6ecdd620cdb. +// +// Solidity: event OptimismMintableERC20Created(address indexed localToken, address indexed remoteToken, address deployer) +func (_L2OptimismMintableERC20Factory *L2OptimismMintableERC20FactoryFilterer) ParseOptimismMintableERC20Created(log types.Log) (*L2OptimismMintableERC20FactoryOptimismMintableERC20Created, error) { + event := new(L2OptimismMintableERC20FactoryOptimismMintableERC20Created) + if err := _L2OptimismMintableERC20Factory.contract.UnpackLog(event, "OptimismMintableERC20Created", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// L2OptimismMintableERC20FactoryStandardL2TokenCreatedIterator is returned from FilterStandardL2TokenCreated and is used to iterate over the raw logs and unpacked data for StandardL2TokenCreated events raised by the L2OptimismMintableERC20Factory contract. +type L2OptimismMintableERC20FactoryStandardL2TokenCreatedIterator struct { + Event *L2OptimismMintableERC20FactoryStandardL2TokenCreated // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *L2OptimismMintableERC20FactoryStandardL2TokenCreatedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(L2OptimismMintableERC20FactoryStandardL2TokenCreated) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(L2OptimismMintableERC20FactoryStandardL2TokenCreated) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *L2OptimismMintableERC20FactoryStandardL2TokenCreatedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *L2OptimismMintableERC20FactoryStandardL2TokenCreatedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// L2OptimismMintableERC20FactoryStandardL2TokenCreated represents a StandardL2TokenCreated event raised by the L2OptimismMintableERC20Factory contract. +type L2OptimismMintableERC20FactoryStandardL2TokenCreated struct { + RemoteToken common.Address + LocalToken common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterStandardL2TokenCreated is a free log retrieval operation binding the contract event 0xceeb8e7d520d7f3b65fc11a262b91066940193b05d4f93df07cfdced0eb551cf. +// +// Solidity: event StandardL2TokenCreated(address indexed remoteToken, address indexed localToken) +func (_L2OptimismMintableERC20Factory *L2OptimismMintableERC20FactoryFilterer) FilterStandardL2TokenCreated(opts *bind.FilterOpts, remoteToken []common.Address, localToken []common.Address) (*L2OptimismMintableERC20FactoryStandardL2TokenCreatedIterator, error) { + + var remoteTokenRule []interface{} + for _, remoteTokenItem := range remoteToken { + remoteTokenRule = append(remoteTokenRule, remoteTokenItem) + } + var localTokenRule []interface{} + for _, localTokenItem := range localToken { + localTokenRule = append(localTokenRule, localTokenItem) + } + + logs, sub, err := _L2OptimismMintableERC20Factory.contract.FilterLogs(opts, "StandardL2TokenCreated", remoteTokenRule, localTokenRule) + if err != nil { + return nil, err + } + return &L2OptimismMintableERC20FactoryStandardL2TokenCreatedIterator{contract: _L2OptimismMintableERC20Factory.contract, event: "StandardL2TokenCreated", logs: logs, sub: sub}, nil +} + +// WatchStandardL2TokenCreated is a free log subscription operation binding the contract event 0xceeb8e7d520d7f3b65fc11a262b91066940193b05d4f93df07cfdced0eb551cf. +// +// Solidity: event StandardL2TokenCreated(address indexed remoteToken, address indexed localToken) +func (_L2OptimismMintableERC20Factory *L2OptimismMintableERC20FactoryFilterer) WatchStandardL2TokenCreated(opts *bind.WatchOpts, sink chan<- *L2OptimismMintableERC20FactoryStandardL2TokenCreated, remoteToken []common.Address, localToken []common.Address) (event.Subscription, error) { + + var remoteTokenRule []interface{} + for _, remoteTokenItem := range remoteToken { + remoteTokenRule = append(remoteTokenRule, remoteTokenItem) + } + var localTokenRule []interface{} + for _, localTokenItem := range localToken { + localTokenRule = append(localTokenRule, localTokenItem) + } + + logs, sub, err := _L2OptimismMintableERC20Factory.contract.WatchLogs(opts, "StandardL2TokenCreated", remoteTokenRule, localTokenRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(L2OptimismMintableERC20FactoryStandardL2TokenCreated) + if err := _L2OptimismMintableERC20Factory.contract.UnpackLog(event, "StandardL2TokenCreated", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseStandardL2TokenCreated is a log parse operation binding the contract event 0xceeb8e7d520d7f3b65fc11a262b91066940193b05d4f93df07cfdced0eb551cf. +// +// Solidity: event StandardL2TokenCreated(address indexed remoteToken, address indexed localToken) +func (_L2OptimismMintableERC20Factory *L2OptimismMintableERC20FactoryFilterer) ParseStandardL2TokenCreated(log types.Log) (*L2OptimismMintableERC20FactoryStandardL2TokenCreated, error) { + event := new(L2OptimismMintableERC20FactoryStandardL2TokenCreated) + if err := _L2OptimismMintableERC20Factory.contract.UnpackLog(event, "StandardL2TokenCreated", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} diff --git a/op-bindings/bindings/l2optimismmintableerc20factory_more.go b/op-bindings/bindings/l2optimismmintableerc20factory_more.go new file mode 100644 index 0000000000000..823a7ebaca5d7 --- /dev/null +++ b/op-bindings/bindings/l2optimismmintableerc20factory_more.go @@ -0,0 +1,25 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package bindings + +import ( + "encoding/json" + + "github.com/ethereum-optimism/optimism/op-bindings/solc" +) + +const L2OptimismMintableERC20FactoryStorageLayoutJSON = "{\"storage\":null,\"types\":null}" + +var L2OptimismMintableERC20FactoryStorageLayout = new(solc.StorageLayout) + +var L2OptimismMintableERC20FactoryDeployedBin = "0x608060405234801561001057600080fd5b50600436106100415760003560e01c8063896f93d114610046578063ce5ac90f14610082578063e78cea9214610095575b600080fd5b610059610054366004610371565b6100bc565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b610059610090366004610371565b6100d1565b6100597f000000000000000000000000000000000000000000000000000000000000000081565b60006100c98484846100d1565b949350505050565b600073ffffffffffffffffffffffffffffffffffffffff841661017a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603f60248201527f4f7074696d69736d4d696e7461626c654552433230466163746f72793a206d7560448201527f73742070726f766964652072656d6f746520746f6b656e206164647265737300606482015260840160405180910390fd5b60007f00000000000000000000000000000000000000000000000000000000000000008585856040516101ac9061028a565b6101b9949392919061046b565b604051809103906000f0801580156101d5573d6000803e3d6000fd5b5090508073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fceeb8e7d520d7f3b65fc11a262b91066940193b05d4f93df07cfdced0eb551cf60405160405180910390a360405133815273ffffffffffffffffffffffffffffffffffffffff80831691908716907f52fe89dd5930f343d25650b62fd367bae47088bcddffd2a88350a6ecdd620cdb9060200160405180910390a3949350505050565b61164b806104c283390190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f8301126102d757600080fd5b813567ffffffffffffffff808211156102f2576102f2610297565b604051601f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190828211818310171561033857610338610297565b8160405283815286602085880101111561035157600080fd5b836020870160208301376000602085830101528094505050505092915050565b60008060006060848603121561038657600080fd5b833573ffffffffffffffffffffffffffffffffffffffff811681146103aa57600080fd5b9250602084013567ffffffffffffffff808211156103c757600080fd5b6103d3878388016102c6565b935060408601359150808211156103e957600080fd5b506103f6868287016102c6565b9150509250925092565b6000815180845260005b818110156104265760208185018101518683018201520161040a565b81811115610438576000602083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b600073ffffffffffffffffffffffffffffffffffffffff8087168352808616602084015250608060408301526104a46080830185610400565b82810360608401526104b68185610400565b97965050505050505056fe60806040523480156200001157600080fd5b506040516200164b3803806200164b833981016040819052620000349162000179565b8181600362000044838262000298565b50600462000053828262000298565b5050600580546001600160a01b039586166001600160a01b03199182161790915560068054969095169516949094179092555062000364915050565b80516001600160a01b0381168114620000a757600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b600082601f830112620000d457600080fd5b81516001600160401b0380821115620000f157620000f1620000ac565b604051601f8301601f19908116603f011681019082821181831017156200011c576200011c620000ac565b816040528381526020925086838588010111156200013957600080fd5b600091505b838210156200015d57858201830151818301840152908201906200013e565b838211156200016f5760008385830101525b9695505050505050565b600080600080608085870312156200019057600080fd5b6200019b856200008f565b9350620001ab602086016200008f565b60408601519093506001600160401b0380821115620001c957600080fd5b620001d788838901620000c2565b93506060870151915080821115620001ee57600080fd5b50620001fd87828801620000c2565b91505092959194509250565b600181811c908216806200021e57607f821691505b6020821081036200023f57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200029357600081815260208120601f850160051c810160208610156200026e5750805b601f850160051c820191505b818110156200028f578281556001016200027a565b5050505b505050565b81516001600160401b03811115620002b457620002b4620000ac565b620002cc81620002c5845462000209565b8462000245565b602080601f831160018114620003045760008415620002eb5750858301515b600019600386901b1c1916600185901b1785556200028f565b600085815260208120601f198616915b82811015620003355788860151825594840194600190910190840162000314565b5085821015620003545787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6112d780620003746000396000f3fe608060405234801561001057600080fd5b50600436106101365760003560e01c806395d89b41116100b2578063ae1f6aaf11610081578063d6c0b2c411610066578063d6c0b2c4146102bb578063dd62ed3e146102db578063e78cea921461032157600080fd5b8063ae1f6aaf1461025e578063c01e1bd61461029d57600080fd5b806395d89b411461021d5780639dc29fac14610225578063a457c2d714610238578063a9059cbb1461024b57600080fd5b806323b872dd1161010957806339509351116100ee57806339509351146101bf57806340c10f19146101d257806370a08231146101e757600080fd5b806323b872dd1461019d578063313ce567146101b057600080fd5b806301ffc9a71461013b57806306fdde0314610163578063095ea7b31461017857806318160ddd1461018b575b600080fd5b61014e610149366004611080565b610341565b60405190151581526020015b60405180910390f35b61016b610432565b60405161015a91906110c9565b61014e610186366004611165565b6104c4565b6002545b60405190815260200161015a565b61014e6101ab36600461118f565b6104dc565b6040516012815260200161015a565b61014e6101cd366004611165565b610500565b6101e56101e0366004611165565b61054c565b005b61018f6101f53660046111cb565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b61016b610656565b6101e5610233366004611165565b610665565b61014e610246366004611165565b61075e565b61014e610259366004611165565b61082f565b60065473ffffffffffffffffffffffffffffffffffffffff165b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161015a565b60055473ffffffffffffffffffffffffffffffffffffffff16610278565b6005546102789073ffffffffffffffffffffffffffffffffffffffff1681565b61018f6102e93660046111e6565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b6006546102789073ffffffffffffffffffffffffffffffffffffffff1681565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007f1d1d8b63000000000000000000000000000000000000000000000000000000007f0bc32271000000000000000000000000000000000000000000000000000000007fffffffff0000000000000000000000000000000000000000000000000000000085168314806103fa57507fffffffff00000000000000000000000000000000000000000000000000000000858116908316145b8061042957507fffffffff00000000000000000000000000000000000000000000000000000000858116908216145b95945050505050565b60606003805461044190611219565b80601f016020809104026020016040519081016040528092919081815260200182805461046d90611219565b80156104ba5780601f1061048f576101008083540402835291602001916104ba565b820191906000526020600020905b81548152906001019060200180831161049d57829003601f168201915b5050505050905090565b6000336104d281858561083d565b5060019392505050565b6000336104ea8582856109f1565b6104f5858585610ac8565b506001949350505050565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff871684529091528120549091906104d2908290869061054790879061129b565b61083d565b60065473ffffffffffffffffffffffffffffffffffffffff1633146105f8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603460248201527f4f7074696d69736d4d696e7461626c6545524332303a206f6e6c79206272696460448201527f67652063616e206d696e7420616e64206275726e00000000000000000000000060648201526084015b60405180910390fd5b6106028282610d7b565b8173ffffffffffffffffffffffffffffffffffffffff167f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d41213968858260405161064a91815260200190565b60405180910390a25050565b60606004805461044190611219565b60065473ffffffffffffffffffffffffffffffffffffffff16331461070c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603460248201527f4f7074696d69736d4d696e7461626c6545524332303a206f6e6c79206272696460448201527f67652063616e206d696e7420616e64206275726e00000000000000000000000060648201526084016105ef565b6107168282610e9b565b8173ffffffffffffffffffffffffffffffffffffffff167fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca58260405161064a91815260200190565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490919083811015610822576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f00000000000000000000000000000000000000000000000000000060648201526084016105ef565b6104f5828686840361083d565b6000336104d2818585610ac8565b73ffffffffffffffffffffffffffffffffffffffff83166108df576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f726573730000000000000000000000000000000000000000000000000000000060648201526084016105ef565b73ffffffffffffffffffffffffffffffffffffffff8216610982576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f737300000000000000000000000000000000000000000000000000000000000060648201526084016105ef565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610ac25781811015610ab5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016105ef565b610ac2848484840361083d565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8316610b6b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f647265737300000000000000000000000000000000000000000000000000000060648201526084016105ef565b73ffffffffffffffffffffffffffffffffffffffff8216610c0e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f657373000000000000000000000000000000000000000000000000000000000060648201526084016105ef565b73ffffffffffffffffffffffffffffffffffffffff831660009081526020819052604090205481811015610cc4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e6365000000000000000000000000000000000000000000000000000060648201526084016105ef565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260208190526040808220858503905591851681529081208054849290610d0890849061129b565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610d6e91815260200190565b60405180910390a3610ac2565b73ffffffffffffffffffffffffffffffffffffffff8216610df8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016105ef565b8060026000828254610e0a919061129b565b909155505073ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604081208054839290610e4490849061129b565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b73ffffffffffffffffffffffffffffffffffffffff8216610f3e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f730000000000000000000000000000000000000000000000000000000000000060648201526084016105ef565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090205481811015610ff4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f636500000000000000000000000000000000000000000000000000000000000060648201526084016105ef565b73ffffffffffffffffffffffffffffffffffffffff831660009081526020819052604081208383039055600280548492906110309084906112b3565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906020016109e4565b60006020828403121561109257600080fd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146110c257600080fd5b9392505050565b600060208083528351808285015260005b818110156110f6578581018301518582016040015282016110da565b81811115611108576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461116057600080fd5b919050565b6000806040838503121561117857600080fd5b6111818361113c565b946020939093013593505050565b6000806000606084860312156111a457600080fd5b6111ad8461113c565b92506111bb6020850161113c565b9150604084013590509250925092565b6000602082840312156111dd57600080fd5b6110c28261113c565b600080604083850312156111f957600080fd5b6112028361113c565b91506112106020840161113c565b90509250929050565b600181811c9082168061122d57607f821691505b602082108103611266577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600082198211156112ae576112ae61126c565b500190565b6000828210156112c5576112c561126c565b50039056fea164736f6c634300080f000aa164736f6c634300080f000a" + +func init() { + if err := json.Unmarshal([]byte(L2OptimismMintableERC20FactoryStorageLayoutJSON), L2OptimismMintableERC20FactoryStorageLayout); err != nil { + panic(err) + } + + layouts["L2OptimismMintableERC20Factory"] = L2OptimismMintableERC20FactoryStorageLayout + deployedBytecodes["L2OptimismMintableERC20Factory"] = L2OptimismMintableERC20FactoryDeployedBin +} diff --git a/op-bindings/bindings/l2standardbridge_more.go b/op-bindings/bindings/l2standardbridge_more.go index 50d2ceef0ef18..3ef2903cad7ed 100644 --- a/op-bindings/bindings/l2standardbridge_more.go +++ b/op-bindings/bindings/l2standardbridge_more.go @@ -9,7 +9,7 @@ import ( "github.com/ethereum-optimism/optimism/op-bindings/solc" ) -const L2StandardBridgeStorageLayoutJSON = "{\"storage\":[{\"astId\":26234,\"contract\":\"contracts/L2/L2StandardBridge.sol:L2StandardBridge\",\"label\":\"spacer_0_0_32\",\"offset\":0,\"slot\":\"0\",\"type\":\"t_bytes32\"},{\"astId\":26237,\"contract\":\"contracts/L2/L2StandardBridge.sol:L2StandardBridge\",\"label\":\"spacer_1_0_32\",\"offset\":0,\"slot\":\"1\",\"type\":\"t_bytes32\"},{\"astId\":26244,\"contract\":\"contracts/L2/L2StandardBridge.sol:L2StandardBridge\",\"label\":\"deposits\",\"offset\":0,\"slot\":\"2\",\"type\":\"t_mapping(t_address,t_mapping(t_address,t_uint256))\"},{\"astId\":26249,\"contract\":\"contracts/L2/L2StandardBridge.sol:L2StandardBridge\",\"label\":\"__gap\",\"offset\":0,\"slot\":\"3\",\"type\":\"t_array(t_uint256)47_storage\"}],\"types\":{\"t_address\":{\"encoding\":\"inplace\",\"label\":\"address\",\"numberOfBytes\":\"20\"},\"t_array(t_uint256)47_storage\":{\"encoding\":\"inplace\",\"label\":\"uint256[47]\",\"numberOfBytes\":\"1504\"},\"t_bytes32\":{\"encoding\":\"inplace\",\"label\":\"bytes32\",\"numberOfBytes\":\"32\"},\"t_mapping(t_address,t_mapping(t_address,t_uint256))\":{\"encoding\":\"mapping\",\"label\":\"mapping(address =\u003e mapping(address =\u003e uint256))\",\"numberOfBytes\":\"32\",\"key\":\"t_address\",\"value\":\"t_mapping(t_address,t_uint256)\"},\"t_mapping(t_address,t_uint256)\":{\"encoding\":\"mapping\",\"label\":\"mapping(address =\u003e uint256)\",\"numberOfBytes\":\"32\",\"key\":\"t_address\",\"value\":\"t_uint256\"},\"t_uint256\":{\"encoding\":\"inplace\",\"label\":\"uint256\",\"numberOfBytes\":\"32\"}}}" +const L2StandardBridgeStorageLayoutJSON = "{\"storage\":[{\"astId\":26270,\"contract\":\"contracts/L2/L2StandardBridge.sol:L2StandardBridge\",\"label\":\"spacer_0_0_32\",\"offset\":0,\"slot\":\"0\",\"type\":\"t_bytes32\"},{\"astId\":26273,\"contract\":\"contracts/L2/L2StandardBridge.sol:L2StandardBridge\",\"label\":\"spacer_1_0_32\",\"offset\":0,\"slot\":\"1\",\"type\":\"t_bytes32\"},{\"astId\":26280,\"contract\":\"contracts/L2/L2StandardBridge.sol:L2StandardBridge\",\"label\":\"deposits\",\"offset\":0,\"slot\":\"2\",\"type\":\"t_mapping(t_address,t_mapping(t_address,t_uint256))\"},{\"astId\":26285,\"contract\":\"contracts/L2/L2StandardBridge.sol:L2StandardBridge\",\"label\":\"__gap\",\"offset\":0,\"slot\":\"3\",\"type\":\"t_array(t_uint256)47_storage\"}],\"types\":{\"t_address\":{\"encoding\":\"inplace\",\"label\":\"address\",\"numberOfBytes\":\"20\"},\"t_array(t_uint256)47_storage\":{\"encoding\":\"inplace\",\"label\":\"uint256[47]\",\"numberOfBytes\":\"1504\"},\"t_bytes32\":{\"encoding\":\"inplace\",\"label\":\"bytes32\",\"numberOfBytes\":\"32\"},\"t_mapping(t_address,t_mapping(t_address,t_uint256))\":{\"encoding\":\"mapping\",\"label\":\"mapping(address =\u003e mapping(address =\u003e uint256))\",\"numberOfBytes\":\"32\",\"key\":\"t_address\",\"value\":\"t_mapping(t_address,t_uint256)\"},\"t_mapping(t_address,t_uint256)\":{\"encoding\":\"mapping\",\"label\":\"mapping(address =\u003e uint256)\",\"numberOfBytes\":\"32\",\"key\":\"t_address\",\"value\":\"t_uint256\"},\"t_uint256\":{\"encoding\":\"inplace\",\"label\":\"uint256\",\"numberOfBytes\":\"32\"}}}" var L2StandardBridgeStorageLayout = new(solc.StorageLayout) diff --git a/op-bindings/bindings/l2tol1messagepasser_more.go b/op-bindings/bindings/l2tol1messagepasser_more.go index 16b7829e3f01b..7fa70ec445da6 100644 --- a/op-bindings/bindings/l2tol1messagepasser_more.go +++ b/op-bindings/bindings/l2tol1messagepasser_more.go @@ -9,7 +9,7 @@ import ( "github.com/ethereum-optimism/optimism/op-bindings/solc" ) -const L2ToL1MessagePasserStorageLayoutJSON = "{\"storage\":[{\"astId\":2593,\"contract\":\"contracts/L2/L2ToL1MessagePasser.sol:L2ToL1MessagePasser\",\"label\":\"sentMessages\",\"offset\":0,\"slot\":\"0\",\"type\":\"t_mapping(t_bytes32,t_bool)\"},{\"astId\":2596,\"contract\":\"contracts/L2/L2ToL1MessagePasser.sol:L2ToL1MessagePasser\",\"label\":\"nonce\",\"offset\":0,\"slot\":\"1\",\"type\":\"t_uint256\"}],\"types\":{\"t_bool\":{\"encoding\":\"inplace\",\"label\":\"bool\",\"numberOfBytes\":\"1\"},\"t_bytes32\":{\"encoding\":\"inplace\",\"label\":\"bytes32\",\"numberOfBytes\":\"32\"},\"t_mapping(t_bytes32,t_bool)\":{\"encoding\":\"mapping\",\"label\":\"mapping(bytes32 =\u003e bool)\",\"numberOfBytes\":\"32\",\"key\":\"t_bytes32\",\"value\":\"t_bool\"},\"t_uint256\":{\"encoding\":\"inplace\",\"label\":\"uint256\",\"numberOfBytes\":\"32\"}}}" +const L2ToL1MessagePasserStorageLayoutJSON = "{\"storage\":[{\"astId\":2629,\"contract\":\"contracts/L2/L2ToL1MessagePasser.sol:L2ToL1MessagePasser\",\"label\":\"sentMessages\",\"offset\":0,\"slot\":\"0\",\"type\":\"t_mapping(t_bytes32,t_bool)\"},{\"astId\":2632,\"contract\":\"contracts/L2/L2ToL1MessagePasser.sol:L2ToL1MessagePasser\",\"label\":\"nonce\",\"offset\":0,\"slot\":\"1\",\"type\":\"t_uint256\"}],\"types\":{\"t_bool\":{\"encoding\":\"inplace\",\"label\":\"bool\",\"numberOfBytes\":\"1\"},\"t_bytes32\":{\"encoding\":\"inplace\",\"label\":\"bytes32\",\"numberOfBytes\":\"32\"},\"t_mapping(t_bytes32,t_bool)\":{\"encoding\":\"mapping\",\"label\":\"mapping(bytes32 =\u003e bool)\",\"numberOfBytes\":\"32\",\"key\":\"t_bytes32\",\"value\":\"t_bool\"},\"t_uint256\":{\"encoding\":\"inplace\",\"label\":\"uint256\",\"numberOfBytes\":\"32\"}}}" var L2ToL1MessagePasserStorageLayout = new(solc.StorageLayout) diff --git a/op-bindings/bindings/legacyerc20eth_more.go b/op-bindings/bindings/legacyerc20eth_more.go index 7165754b1563e..59e16b7518858 100644 --- a/op-bindings/bindings/legacyerc20eth_more.go +++ b/op-bindings/bindings/legacyerc20eth_more.go @@ -9,7 +9,7 @@ import ( "github.com/ethereum-optimism/optimism/op-bindings/solc" ) -const LegacyERC20ETHStorageLayoutJSON = "{\"storage\":[{\"astId\":27977,\"contract\":\"contracts/legacy/LegacyERC20ETH.sol:LegacyERC20ETH\",\"label\":\"_balances\",\"offset\":0,\"slot\":\"0\",\"type\":\"t_mapping(t_address,t_uint256)\"},{\"astId\":27983,\"contract\":\"contracts/legacy/LegacyERC20ETH.sol:LegacyERC20ETH\",\"label\":\"_allowances\",\"offset\":0,\"slot\":\"1\",\"type\":\"t_mapping(t_address,t_mapping(t_address,t_uint256))\"},{\"astId\":27985,\"contract\":\"contracts/legacy/LegacyERC20ETH.sol:LegacyERC20ETH\",\"label\":\"_totalSupply\",\"offset\":0,\"slot\":\"2\",\"type\":\"t_uint256\"},{\"astId\":27987,\"contract\":\"contracts/legacy/LegacyERC20ETH.sol:LegacyERC20ETH\",\"label\":\"_name\",\"offset\":0,\"slot\":\"3\",\"type\":\"t_string_storage\"},{\"astId\":27989,\"contract\":\"contracts/legacy/LegacyERC20ETH.sol:LegacyERC20ETH\",\"label\":\"_symbol\",\"offset\":0,\"slot\":\"4\",\"type\":\"t_string_storage\"},{\"astId\":25155,\"contract\":\"contracts/legacy/LegacyERC20ETH.sol:LegacyERC20ETH\",\"label\":\"remoteToken\",\"offset\":0,\"slot\":\"5\",\"type\":\"t_address\"},{\"astId\":25158,\"contract\":\"contracts/legacy/LegacyERC20ETH.sol:LegacyERC20ETH\",\"label\":\"bridge\",\"offset\":0,\"slot\":\"6\",\"type\":\"t_address\"}],\"types\":{\"t_address\":{\"encoding\":\"inplace\",\"label\":\"address\",\"numberOfBytes\":\"20\"},\"t_mapping(t_address,t_mapping(t_address,t_uint256))\":{\"encoding\":\"mapping\",\"label\":\"mapping(address =\u003e mapping(address =\u003e uint256))\",\"numberOfBytes\":\"32\",\"key\":\"t_address\",\"value\":\"t_mapping(t_address,t_uint256)\"},\"t_mapping(t_address,t_uint256)\":{\"encoding\":\"mapping\",\"label\":\"mapping(address =\u003e uint256)\",\"numberOfBytes\":\"32\",\"key\":\"t_address\",\"value\":\"t_uint256\"},\"t_string_storage\":{\"encoding\":\"bytes\",\"label\":\"string\",\"numberOfBytes\":\"32\"},\"t_uint256\":{\"encoding\":\"inplace\",\"label\":\"uint256\",\"numberOfBytes\":\"32\"}}}" +const LegacyERC20ETHStorageLayoutJSON = "{\"storage\":[{\"astId\":28013,\"contract\":\"contracts/legacy/LegacyERC20ETH.sol:LegacyERC20ETH\",\"label\":\"_balances\",\"offset\":0,\"slot\":\"0\",\"type\":\"t_mapping(t_address,t_uint256)\"},{\"astId\":28019,\"contract\":\"contracts/legacy/LegacyERC20ETH.sol:LegacyERC20ETH\",\"label\":\"_allowances\",\"offset\":0,\"slot\":\"1\",\"type\":\"t_mapping(t_address,t_mapping(t_address,t_uint256))\"},{\"astId\":28021,\"contract\":\"contracts/legacy/LegacyERC20ETH.sol:LegacyERC20ETH\",\"label\":\"_totalSupply\",\"offset\":0,\"slot\":\"2\",\"type\":\"t_uint256\"},{\"astId\":28023,\"contract\":\"contracts/legacy/LegacyERC20ETH.sol:LegacyERC20ETH\",\"label\":\"_name\",\"offset\":0,\"slot\":\"3\",\"type\":\"t_string_storage\"},{\"astId\":28025,\"contract\":\"contracts/legacy/LegacyERC20ETH.sol:LegacyERC20ETH\",\"label\":\"_symbol\",\"offset\":0,\"slot\":\"4\",\"type\":\"t_string_storage\"},{\"astId\":25191,\"contract\":\"contracts/legacy/LegacyERC20ETH.sol:LegacyERC20ETH\",\"label\":\"remoteToken\",\"offset\":0,\"slot\":\"5\",\"type\":\"t_address\"},{\"astId\":25194,\"contract\":\"contracts/legacy/LegacyERC20ETH.sol:LegacyERC20ETH\",\"label\":\"bridge\",\"offset\":0,\"slot\":\"6\",\"type\":\"t_address\"}],\"types\":{\"t_address\":{\"encoding\":\"inplace\",\"label\":\"address\",\"numberOfBytes\":\"20\"},\"t_mapping(t_address,t_mapping(t_address,t_uint256))\":{\"encoding\":\"mapping\",\"label\":\"mapping(address =\u003e mapping(address =\u003e uint256))\",\"numberOfBytes\":\"32\",\"key\":\"t_address\",\"value\":\"t_mapping(t_address,t_uint256)\"},\"t_mapping(t_address,t_uint256)\":{\"encoding\":\"mapping\",\"label\":\"mapping(address =\u003e uint256)\",\"numberOfBytes\":\"32\",\"key\":\"t_address\",\"value\":\"t_uint256\"},\"t_string_storage\":{\"encoding\":\"bytes\",\"label\":\"string\",\"numberOfBytes\":\"32\"},\"t_uint256\":{\"encoding\":\"inplace\",\"label\":\"uint256\",\"numberOfBytes\":\"32\"}}}" var LegacyERC20ETHStorageLayout = new(solc.StorageLayout) diff --git a/op-bindings/bindings/optimismmintableerc20factory_more.go b/op-bindings/bindings/optimismmintableerc20factory_more.go deleted file mode 100644 index ce2409575302d..0000000000000 --- a/op-bindings/bindings/optimismmintableerc20factory_more.go +++ /dev/null @@ -1,25 +0,0 @@ -// Code generated - DO NOT EDIT. -// This file is a generated binding and any manual changes will be lost. - -package bindings - -import ( - "encoding/json" - - "github.com/ethereum-optimism/optimism/op-bindings/solc" -) - -const OptimismMintableERC20FactoryStorageLayoutJSON = "{\"storage\":null,\"types\":null}" - -var OptimismMintableERC20FactoryStorageLayout = new(solc.StorageLayout) - -var OptimismMintableERC20FactoryDeployedBin = "0x608060405234801561001057600080fd5b50600436106100415760003560e01c8063896f93d114610046578063ce5ac90f14610082578063e78cea9214610095575b600080fd5b610059610054366004610371565b6100bc565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b610059610090366004610371565b6100d1565b6100597f000000000000000000000000000000000000000000000000000000000000000081565b60006100c98484846100d1565b949350505050565b600073ffffffffffffffffffffffffffffffffffffffff841661017a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603f60248201527f4f7074696d69736d4d696e7461626c654552433230466163746f72793a206d7560448201527f73742070726f766964652072656d6f746520746f6b656e206164647265737300606482015260840160405180910390fd5b60007f00000000000000000000000000000000000000000000000000000000000000008585856040516101ac9061028a565b6101b9949392919061046b565b604051809103906000f0801580156101d5573d6000803e3d6000fd5b5090508073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fceeb8e7d520d7f3b65fc11a262b91066940193b05d4f93df07cfdced0eb551cf60405160405180910390a360405133815273ffffffffffffffffffffffffffffffffffffffff80831691908716907f52fe89dd5930f343d25650b62fd367bae47088bcddffd2a88350a6ecdd620cdb9060200160405180910390a3949350505050565b61164b806104c283390190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f8301126102d757600080fd5b813567ffffffffffffffff808211156102f2576102f2610297565b604051601f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190828211818310171561033857610338610297565b8160405283815286602085880101111561035157600080fd5b836020870160208301376000602085830101528094505050505092915050565b60008060006060848603121561038657600080fd5b833573ffffffffffffffffffffffffffffffffffffffff811681146103aa57600080fd5b9250602084013567ffffffffffffffff808211156103c757600080fd5b6103d3878388016102c6565b935060408601359150808211156103e957600080fd5b506103f6868287016102c6565b9150509250925092565b6000815180845260005b818110156104265760208185018101518683018201520161040a565b81811115610438576000602083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b600073ffffffffffffffffffffffffffffffffffffffff8087168352808616602084015250608060408301526104a46080830185610400565b82810360608401526104b68185610400565b97965050505050505056fe60806040523480156200001157600080fd5b506040516200164b3803806200164b833981016040819052620000349162000179565b8181600362000044838262000298565b50600462000053828262000298565b5050600580546001600160a01b039586166001600160a01b03199182161790915560068054969095169516949094179092555062000364915050565b80516001600160a01b0381168114620000a757600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b600082601f830112620000d457600080fd5b81516001600160401b0380821115620000f157620000f1620000ac565b604051601f8301601f19908116603f011681019082821181831017156200011c576200011c620000ac565b816040528381526020925086838588010111156200013957600080fd5b600091505b838210156200015d57858201830151818301840152908201906200013e565b838211156200016f5760008385830101525b9695505050505050565b600080600080608085870312156200019057600080fd5b6200019b856200008f565b9350620001ab602086016200008f565b60408601519093506001600160401b0380821115620001c957600080fd5b620001d788838901620000c2565b93506060870151915080821115620001ee57600080fd5b50620001fd87828801620000c2565b91505092959194509250565b600181811c908216806200021e57607f821691505b6020821081036200023f57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200029357600081815260208120601f850160051c810160208610156200026e5750805b601f850160051c820191505b818110156200028f578281556001016200027a565b5050505b505050565b81516001600160401b03811115620002b457620002b4620000ac565b620002cc81620002c5845462000209565b8462000245565b602080601f831160018114620003045760008415620002eb5750858301515b600019600386901b1c1916600185901b1785556200028f565b600085815260208120601f198616915b82811015620003355788860151825594840194600190910190840162000314565b5085821015620003545787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6112d780620003746000396000f3fe608060405234801561001057600080fd5b50600436106101365760003560e01c806395d89b41116100b2578063ae1f6aaf11610081578063d6c0b2c411610066578063d6c0b2c4146102bb578063dd62ed3e146102db578063e78cea921461032157600080fd5b8063ae1f6aaf1461025e578063c01e1bd61461029d57600080fd5b806395d89b411461021d5780639dc29fac14610225578063a457c2d714610238578063a9059cbb1461024b57600080fd5b806323b872dd1161010957806339509351116100ee57806339509351146101bf57806340c10f19146101d257806370a08231146101e757600080fd5b806323b872dd1461019d578063313ce567146101b057600080fd5b806301ffc9a71461013b57806306fdde0314610163578063095ea7b31461017857806318160ddd1461018b575b600080fd5b61014e610149366004611080565b610341565b60405190151581526020015b60405180910390f35b61016b610432565b60405161015a91906110c9565b61014e610186366004611165565b6104c4565b6002545b60405190815260200161015a565b61014e6101ab36600461118f565b6104dc565b6040516012815260200161015a565b61014e6101cd366004611165565b610500565b6101e56101e0366004611165565b61054c565b005b61018f6101f53660046111cb565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b61016b610656565b6101e5610233366004611165565b610665565b61014e610246366004611165565b61075e565b61014e610259366004611165565b61082f565b60065473ffffffffffffffffffffffffffffffffffffffff165b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161015a565b60055473ffffffffffffffffffffffffffffffffffffffff16610278565b6005546102789073ffffffffffffffffffffffffffffffffffffffff1681565b61018f6102e93660046111e6565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b6006546102789073ffffffffffffffffffffffffffffffffffffffff1681565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007f1d1d8b63000000000000000000000000000000000000000000000000000000007f0bc32271000000000000000000000000000000000000000000000000000000007fffffffff0000000000000000000000000000000000000000000000000000000085168314806103fa57507fffffffff00000000000000000000000000000000000000000000000000000000858116908316145b8061042957507fffffffff00000000000000000000000000000000000000000000000000000000858116908216145b95945050505050565b60606003805461044190611219565b80601f016020809104026020016040519081016040528092919081815260200182805461046d90611219565b80156104ba5780601f1061048f576101008083540402835291602001916104ba565b820191906000526020600020905b81548152906001019060200180831161049d57829003601f168201915b5050505050905090565b6000336104d281858561083d565b5060019392505050565b6000336104ea8582856109f1565b6104f5858585610ac8565b506001949350505050565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff871684529091528120549091906104d2908290869061054790879061129b565b61083d565b60065473ffffffffffffffffffffffffffffffffffffffff1633146105f8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603460248201527f4f7074696d69736d4d696e7461626c6545524332303a206f6e6c79206272696460448201527f67652063616e206d696e7420616e64206275726e00000000000000000000000060648201526084015b60405180910390fd5b6106028282610d7b565b8173ffffffffffffffffffffffffffffffffffffffff167f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d41213968858260405161064a91815260200190565b60405180910390a25050565b60606004805461044190611219565b60065473ffffffffffffffffffffffffffffffffffffffff16331461070c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603460248201527f4f7074696d69736d4d696e7461626c6545524332303a206f6e6c79206272696460448201527f67652063616e206d696e7420616e64206275726e00000000000000000000000060648201526084016105ef565b6107168282610e9b565b8173ffffffffffffffffffffffffffffffffffffffff167fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca58260405161064a91815260200190565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490919083811015610822576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f00000000000000000000000000000000000000000000000000000060648201526084016105ef565b6104f5828686840361083d565b6000336104d2818585610ac8565b73ffffffffffffffffffffffffffffffffffffffff83166108df576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f726573730000000000000000000000000000000000000000000000000000000060648201526084016105ef565b73ffffffffffffffffffffffffffffffffffffffff8216610982576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f737300000000000000000000000000000000000000000000000000000000000060648201526084016105ef565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610ac25781811015610ab5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016105ef565b610ac2848484840361083d565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8316610b6b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f647265737300000000000000000000000000000000000000000000000000000060648201526084016105ef565b73ffffffffffffffffffffffffffffffffffffffff8216610c0e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f657373000000000000000000000000000000000000000000000000000000000060648201526084016105ef565b73ffffffffffffffffffffffffffffffffffffffff831660009081526020819052604090205481811015610cc4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e6365000000000000000000000000000000000000000000000000000060648201526084016105ef565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260208190526040808220858503905591851681529081208054849290610d0890849061129b565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610d6e91815260200190565b60405180910390a3610ac2565b73ffffffffffffffffffffffffffffffffffffffff8216610df8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016105ef565b8060026000828254610e0a919061129b565b909155505073ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604081208054839290610e4490849061129b565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b73ffffffffffffffffffffffffffffffffffffffff8216610f3e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f730000000000000000000000000000000000000000000000000000000000000060648201526084016105ef565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090205481811015610ff4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f636500000000000000000000000000000000000000000000000000000000000060648201526084016105ef565b73ffffffffffffffffffffffffffffffffffffffff831660009081526020819052604081208383039055600280548492906110309084906112b3565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906020016109e4565b60006020828403121561109257600080fd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146110c257600080fd5b9392505050565b600060208083528351808285015260005b818110156110f6578581018301518582016040015282016110da565b81811115611108576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461116057600080fd5b919050565b6000806040838503121561117857600080fd5b6111818361113c565b946020939093013593505050565b6000806000606084860312156111a457600080fd5b6111ad8461113c565b92506111bb6020850161113c565b9150604084013590509250925092565b6000602082840312156111dd57600080fd5b6110c28261113c565b600080604083850312156111f957600080fd5b6112028361113c565b91506112106020840161113c565b90509250929050565b600181811c9082168061122d57607f821691505b602082108103611266577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600082198211156112ae576112ae61126c565b500190565b6000828210156112c5576112c561126c565b50039056fea164736f6c634300080f000aa164736f6c634300080f000a" - -func init() { - if err := json.Unmarshal([]byte(OptimismMintableERC20FactoryStorageLayoutJSON), OptimismMintableERC20FactoryStorageLayout); err != nil { - panic(err) - } - - layouts["OptimismMintableERC20Factory"] = OptimismMintableERC20FactoryStorageLayout - deployedBytecodes["OptimismMintableERC20Factory"] = OptimismMintableERC20FactoryDeployedBin -} diff --git a/op-bindings/bindings/optimismportal_more.go b/op-bindings/bindings/optimismportal_more.go index a3efcdccdc14c..bfa6e0f9c2919 100644 --- a/op-bindings/bindings/optimismportal_more.go +++ b/op-bindings/bindings/optimismportal_more.go @@ -9,7 +9,7 @@ import ( "github.com/ethereum-optimism/optimism/op-bindings/solc" ) -const OptimismPortalStorageLayoutJSON = "{\"storage\":[{\"astId\":27155,\"contract\":\"contracts/L1/OptimismPortal.sol:OptimismPortal\",\"label\":\"_initialized\",\"offset\":0,\"slot\":\"0\",\"type\":\"t_uint8\"},{\"astId\":27158,\"contract\":\"contracts/L1/OptimismPortal.sol:OptimismPortal\",\"label\":\"_initializing\",\"offset\":1,\"slot\":\"0\",\"type\":\"t_bool\"},{\"astId\":1404,\"contract\":\"contracts/L1/OptimismPortal.sol:OptimismPortal\",\"label\":\"params\",\"offset\":0,\"slot\":\"1\",\"type\":\"t_struct(ResourceParams)1374_storage\"},{\"astId\":1409,\"contract\":\"contracts/L1/OptimismPortal.sol:OptimismPortal\",\"label\":\"__gap\",\"offset\":0,\"slot\":\"2\",\"type\":\"t_array(t_uint256)49_storage\"},{\"astId\":982,\"contract\":\"contracts/L1/OptimismPortal.sol:OptimismPortal\",\"label\":\"l2Sender\",\"offset\":0,\"slot\":\"51\",\"type\":\"t_address\"},{\"astId\":995,\"contract\":\"contracts/L1/OptimismPortal.sol:OptimismPortal\",\"label\":\"finalizedWithdrawals\",\"offset\":0,\"slot\":\"52\",\"type\":\"t_mapping(t_bytes32,t_bool)\"}],\"types\":{\"t_address\":{\"encoding\":\"inplace\",\"label\":\"address\",\"numberOfBytes\":\"20\"},\"t_array(t_uint256)49_storage\":{\"encoding\":\"inplace\",\"label\":\"uint256[49]\",\"numberOfBytes\":\"1568\"},\"t_bool\":{\"encoding\":\"inplace\",\"label\":\"bool\",\"numberOfBytes\":\"1\"},\"t_bytes32\":{\"encoding\":\"inplace\",\"label\":\"bytes32\",\"numberOfBytes\":\"32\"},\"t_mapping(t_bytes32,t_bool)\":{\"encoding\":\"mapping\",\"label\":\"mapping(bytes32 =\u003e bool)\",\"numberOfBytes\":\"32\",\"key\":\"t_bytes32\",\"value\":\"t_bool\"},\"t_struct(ResourceParams)1374_storage\":{\"encoding\":\"inplace\",\"label\":\"struct ResourceMetering.ResourceParams\",\"numberOfBytes\":\"32\"},\"t_uint128\":{\"encoding\":\"inplace\",\"label\":\"uint128\",\"numberOfBytes\":\"16\"},\"t_uint256\":{\"encoding\":\"inplace\",\"label\":\"uint256\",\"numberOfBytes\":\"32\"},\"t_uint64\":{\"encoding\":\"inplace\",\"label\":\"uint64\",\"numberOfBytes\":\"8\"},\"t_uint8\":{\"encoding\":\"inplace\",\"label\":\"uint8\",\"numberOfBytes\":\"1\"}}}" +const OptimismPortalStorageLayoutJSON = "{\"storage\":[{\"astId\":27191,\"contract\":\"contracts/L1/OptimismPortal.sol:OptimismPortal\",\"label\":\"_initialized\",\"offset\":0,\"slot\":\"0\",\"type\":\"t_uint8\"},{\"astId\":27194,\"contract\":\"contracts/L1/OptimismPortal.sol:OptimismPortal\",\"label\":\"_initializing\",\"offset\":1,\"slot\":\"0\",\"type\":\"t_bool\"},{\"astId\":1422,\"contract\":\"contracts/L1/OptimismPortal.sol:OptimismPortal\",\"label\":\"params\",\"offset\":0,\"slot\":\"1\",\"type\":\"t_struct(ResourceParams)1392_storage\"},{\"astId\":1427,\"contract\":\"contracts/L1/OptimismPortal.sol:OptimismPortal\",\"label\":\"__gap\",\"offset\":0,\"slot\":\"2\",\"type\":\"t_array(t_uint256)49_storage\"},{\"astId\":1000,\"contract\":\"contracts/L1/OptimismPortal.sol:OptimismPortal\",\"label\":\"l2Sender\",\"offset\":0,\"slot\":\"51\",\"type\":\"t_address\"},{\"astId\":1013,\"contract\":\"contracts/L1/OptimismPortal.sol:OptimismPortal\",\"label\":\"finalizedWithdrawals\",\"offset\":0,\"slot\":\"52\",\"type\":\"t_mapping(t_bytes32,t_bool)\"}],\"types\":{\"t_address\":{\"encoding\":\"inplace\",\"label\":\"address\",\"numberOfBytes\":\"20\"},\"t_array(t_uint256)49_storage\":{\"encoding\":\"inplace\",\"label\":\"uint256[49]\",\"numberOfBytes\":\"1568\"},\"t_bool\":{\"encoding\":\"inplace\",\"label\":\"bool\",\"numberOfBytes\":\"1\"},\"t_bytes32\":{\"encoding\":\"inplace\",\"label\":\"bytes32\",\"numberOfBytes\":\"32\"},\"t_mapping(t_bytes32,t_bool)\":{\"encoding\":\"mapping\",\"label\":\"mapping(bytes32 =\u003e bool)\",\"numberOfBytes\":\"32\",\"key\":\"t_bytes32\",\"value\":\"t_bool\"},\"t_struct(ResourceParams)1392_storage\":{\"encoding\":\"inplace\",\"label\":\"struct ResourceMetering.ResourceParams\",\"numberOfBytes\":\"32\"},\"t_uint128\":{\"encoding\":\"inplace\",\"label\":\"uint128\",\"numberOfBytes\":\"16\"},\"t_uint256\":{\"encoding\":\"inplace\",\"label\":\"uint256\",\"numberOfBytes\":\"32\"},\"t_uint64\":{\"encoding\":\"inplace\",\"label\":\"uint64\",\"numberOfBytes\":\"8\"},\"t_uint8\":{\"encoding\":\"inplace\",\"label\":\"uint8\",\"numberOfBytes\":\"1\"}}}" var OptimismPortalStorageLayout = new(solc.StorageLayout) diff --git a/op-bindings/bindings/sequencerfeevault_more.go b/op-bindings/bindings/sequencerfeevault_more.go index ba33595679cb1..ba5e25e8b2b20 100644 --- a/op-bindings/bindings/sequencerfeevault_more.go +++ b/op-bindings/bindings/sequencerfeevault_more.go @@ -9,7 +9,7 @@ import ( "github.com/ethereum-optimism/optimism/op-bindings/solc" ) -const SequencerFeeVaultStorageLayoutJSON = "{\"storage\":[{\"astId\":2741,\"contract\":\"contracts/L2/SequencerFeeVault.sol:SequencerFeeVault\",\"label\":\"l1FeeWallet\",\"offset\":0,\"slot\":\"0\",\"type\":\"t_address\"}],\"types\":{\"t_address\":{\"encoding\":\"inplace\",\"label\":\"address\",\"numberOfBytes\":\"20\"}}}" +const SequencerFeeVaultStorageLayoutJSON = "{\"storage\":[{\"astId\":2777,\"contract\":\"contracts/L2/SequencerFeeVault.sol:SequencerFeeVault\",\"label\":\"l1FeeWallet\",\"offset\":0,\"slot\":\"0\",\"type\":\"t_address\"}],\"types\":{\"t_address\":{\"encoding\":\"inplace\",\"label\":\"address\",\"numberOfBytes\":\"20\"}}}" var SequencerFeeVaultStorageLayout = new(solc.StorageLayout) diff --git a/op-bindings/predeploys/addresses.go b/op-bindings/predeploys/addresses.go index 4058db1c6520f..ed382887581eb 100644 --- a/op-bindings/predeploys/addresses.go +++ b/op-bindings/predeploys/addresses.go @@ -3,33 +3,33 @@ package predeploys import "github.com/ethereum/go-ethereum/common" const ( - L2ToL1MessagePasser = "0x4200000000000000000000000000000000000000" - DeployerWhitelist = "0x4200000000000000000000000000000000000002" - LegacyERC20ETH = "0xDeadDeAddeAddEAddeadDEaDDEAdDeaDDeAD0000" - WETH9 = "0x4200000000000000000000000000000000000006" - L2CrossDomainMessenger = "0x4200000000000000000000000000000000000007" - L2StandardBridge = "0x4200000000000000000000000000000000000010" - SequencerFeeVault = "0x4200000000000000000000000000000000000011" - OptimismMintableERC20Factory = "0x4200000000000000000000000000000000000012" - L1BlockNumber = "0x4200000000000000000000000000000000000013" - GasPriceOracle = "0x420000000000000000000000000000000000000F" - L1Block = "0x4200000000000000000000000000000000000015" - GovernanceToken = "0x4200000000000000000000000000000000000042" + L2ToL1MessagePasser = "0x4200000000000000000000000000000000000000" + DeployerWhitelist = "0x4200000000000000000000000000000000000002" + LegacyERC20ETH = "0xDeadDeAddeAddEAddeadDEaDDEAdDeaDDeAD0000" + WETH9 = "0x4200000000000000000000000000000000000006" + L2CrossDomainMessenger = "0x4200000000000000000000000000000000000007" + L2StandardBridge = "0x4200000000000000000000000000000000000010" + SequencerFeeVault = "0x4200000000000000000000000000000000000011" + L2OptimismMintableERC20Factory = "0x4200000000000000000000000000000000000012" + L1BlockNumber = "0x4200000000000000000000000000000000000013" + GasPriceOracle = "0x420000000000000000000000000000000000000F" + L1Block = "0x4200000000000000000000000000000000000015" + GovernanceToken = "0x4200000000000000000000000000000000000042" ) var ( - L2ToL1MessagePasserAddr = common.HexToAddress(L2ToL1MessagePasser) - DeployerWhitelistAddr = common.HexToAddress(DeployerWhitelist) - LegacyERC20ETHAddr = common.HexToAddress(LegacyERC20ETH) - WETH9Addr = common.HexToAddress(WETH9) - L2CrossDomainMessengerAddr = common.HexToAddress(L2CrossDomainMessenger) - L2StandardBridgeAddr = common.HexToAddress(L2StandardBridge) - SequencerFeeVaultAddr = common.HexToAddress(SequencerFeeVault) - OptimismMintableERC20FactoryAddr = common.HexToAddress(OptimismMintableERC20Factory) - L1BlockNumberAddr = common.HexToAddress(L1BlockNumber) - GasPriceOracleAddr = common.HexToAddress(GasPriceOracle) - L1BlockAddr = common.HexToAddress(L1Block) - GovernanceTokenAddr = common.HexToAddress(GovernanceToken) + L2ToL1MessagePasserAddr = common.HexToAddress(L2ToL1MessagePasser) + DeployerWhitelistAddr = common.HexToAddress(DeployerWhitelist) + LegacyERC20ETHAddr = common.HexToAddress(LegacyERC20ETH) + WETH9Addr = common.HexToAddress(WETH9) + L2CrossDomainMessengerAddr = common.HexToAddress(L2CrossDomainMessenger) + L2StandardBridgeAddr = common.HexToAddress(L2StandardBridge) + SequencerFeeVaultAddr = common.HexToAddress(SequencerFeeVault) + L2OptimismMintableERC20FactoryAddr = common.HexToAddress(L2OptimismMintableERC20Factory) + L1BlockNumberAddr = common.HexToAddress(L1BlockNumber) + GasPriceOracleAddr = common.HexToAddress(GasPriceOracle) + L1BlockAddr = common.HexToAddress(L1Block) + GovernanceTokenAddr = common.HexToAddress(GovernanceToken) Predeploys = make(map[string]*common.Address) ) @@ -42,7 +42,7 @@ func init() { Predeploys["L2CrossDomainMessenger"] = &L2CrossDomainMessengerAddr Predeploys["L2StandardBridge"] = &L2StandardBridgeAddr Predeploys["SequencerFeeVault"] = &SequencerFeeVaultAddr - Predeploys["OptimismMintableERC20Factory"] = &OptimismMintableERC20FactoryAddr + Predeploys["L2OptimismMintableERC20Factory"] = &L2OptimismMintableERC20FactoryAddr Predeploys["L1BlockNumber"] = &L1BlockNumberAddr Predeploys["GasPriceOracle"] = &GasPriceOracleAddr Predeploys["L1Block"] = &L1BlockAddr diff --git a/op-bindings/predeploys/dev_addresses.go b/op-bindings/predeploys/dev_addresses.go index 3a3c5fa54e656..3b0c58d8fb76c 100644 --- a/op-bindings/predeploys/dev_addresses.go +++ b/op-bindings/predeploys/dev_addresses.go @@ -3,23 +3,23 @@ package predeploys import "github.com/ethereum/go-ethereum/common" const ( - DevL2OutputOracle = "0x6900000000000000000000000000000000000000" - DevOptimismPortal = "0x6900000000000000000000000000000000000001" - DevL1CrossDomainMessenger = "0x6900000000000000000000000000000000000002" - DevL1StandardBridge = "0x6900000000000000000000000000000000000003" - DevOptimismMintableERC20Factory = "0x6900000000000000000000000000000000000004" - DevAddressManager = "0x6900000000000000000000000000000000000005" - DevProxyAdmin = "0x6900000000000000000000000000000000000006" + DevL2OutputOracle = "0x6900000000000000000000000000000000000000" + DevOptimismPortal = "0x6900000000000000000000000000000000000001" + DevL1CrossDomainMessenger = "0x6900000000000000000000000000000000000002" + DevL1StandardBridge = "0x6900000000000000000000000000000000000003" + DevL1OptimismMintableERC20Factory = "0x6900000000000000000000000000000000000004" + DevAddressManager = "0x6900000000000000000000000000000000000005" + DevProxyAdmin = "0x6900000000000000000000000000000000000006" ) var ( - DevL2OutputOracleAddr = common.HexToAddress(DevL2OutputOracle) - DevOptimismPortalAddr = common.HexToAddress(DevOptimismPortal) - DevL1CrossDomainMessengerAddr = common.HexToAddress(DevL1CrossDomainMessenger) - DevL1StandardBridgeAddr = common.HexToAddress(DevL1StandardBridge) - DevOptimismMintableERC20FactoryAddr = common.HexToAddress(DevOptimismMintableERC20Factory) - DevAddressManagerAddr = common.HexToAddress(DevAddressManager) - DevProxyAdminAddr = common.HexToAddress(DevProxyAdmin) + DevL2OutputOracleAddr = common.HexToAddress(DevL2OutputOracle) + DevOptimismPortalAddr = common.HexToAddress(DevOptimismPortal) + DevL1CrossDomainMessengerAddr = common.HexToAddress(DevL1CrossDomainMessenger) + DevL1StandardBridgeAddr = common.HexToAddress(DevL1StandardBridge) + DevL1OptimismMintableERC20FactoryAddr = common.HexToAddress(DevL1OptimismMintableERC20Factory) + DevAddressManagerAddr = common.HexToAddress(DevAddressManager) + DevProxyAdminAddr = common.HexToAddress(DevProxyAdmin) DevPredeploys = make(map[string]*common.Address) ) @@ -29,7 +29,7 @@ func init() { DevPredeploys["OptimismPortal"] = &DevOptimismPortalAddr DevPredeploys["L1CrossDomainMessenger"] = &DevL1CrossDomainMessengerAddr DevPredeploys["L1StandardBridge"] = &DevL1StandardBridgeAddr - DevPredeploys["OptimismMintableERC20Factory"] = &DevOptimismMintableERC20FactoryAddr + DevPredeploys["L1OptimismMintableERC20Factory"] = &DevL1OptimismMintableERC20FactoryAddr DevPredeploys["AddressManager"] = &DevAddressManagerAddr DevPredeploys["Admin"] = &DevProxyAdminAddr } diff --git a/op-chain-ops/genesis/layer_one.go b/op-chain-ops/genesis/layer_one.go index 181c0ecda9d9f..af3701b866b4b 100644 --- a/op-chain-ops/genesis/layer_one.go +++ b/op-chain-ops/genesis/layer_one.go @@ -24,7 +24,7 @@ var proxies = []string{ "L1CrossDomainMessengerProxy", "L1StandardBridgeProxy", "OptimismPortalProxy", - "OptimismMintableERC20FactoryProxy", + "L1OptimismMintableERC20FactoryProxy", } var portalMeteringSlot = common.Hash{31: 0x01} @@ -136,8 +136,8 @@ func BuildL1DeveloperGenesis(config *DeployConfig) (*core.Genesis, error) { if err := upgradeProxy( backend, opts, - depsByName["OptimismMintableERC20FactoryProxy"].Address, - depsByName["OptimismMintableERC20Factory"].Address, + depsByName["L1OptimismMintableERC20FactoryProxy"].Address, + depsByName["L1OptimismMintableERC20Factory"].Address, nil, ); err != nil { return nil, err @@ -228,7 +228,7 @@ func deployL1Contracts(config *DeployConfig, backend *backends.SimulatedBackend) Name: "L1StandardBridge", }, { - Name: "OptimismMintableERC20Factory", + Name: "L1OptimismMintableERC20Factory", }, { Name: "AddressManager", @@ -280,8 +280,8 @@ func l1Deployer(backend *backends.SimulatedBackend, opts *bind.TransactOpts, dep backend, predeploys.DevL1CrossDomainMessengerAddr, ) - case "OptimismMintableERC20Factory": - addr, _, _, err = bindings.DeployOptimismMintableERC20Factory( + case "L1OptimismMintableERC20Factory": + addr, _, _, err = bindings.DeployL1OptimismMintableERC20Factory( opts, backend, predeploys.DevL1StandardBridgeAddr, diff --git a/op-chain-ops/genesis/layer_one_test.go b/op-chain-ops/genesis/layer_one_test.go index 9378819d20bbe..c671ba1bcab34 100644 --- a/op-chain-ops/genesis/layer_one_test.go +++ b/op-chain-ops/genesis/layer_one_test.go @@ -86,7 +86,7 @@ func TestBuildL1DeveloperGenesis(t *testing.T) { require.NoError(t, err) require.Equal(t, predeploys.L2StandardBridgeAddr, otherBridge) - factory, err := bindings.NewOptimismMintableERC20(predeploys.DevOptimismMintableERC20FactoryAddr, sim) + factory, err := bindings.NewOptimismMintableERC20(predeploys.DevL1OptimismMintableERC20FactoryAddr, sim) require.NoError(t, err) bridgeAddr, err := factory.Bridge(callOpts) require.NoError(t, err) diff --git a/op-chain-ops/immutables/immutables.go b/op-chain-ops/immutables/immutables.go index fc75f7b1238fd..af759a3a431e5 100644 --- a/op-chain-ops/immutables/immutables.go +++ b/op-chain-ops/immutables/immutables.go @@ -4,7 +4,6 @@ import ( "fmt" "github.com/ethereum-optimism/optimism/op-bindings/bindings" - "github.com/ethereum-optimism/optimism/op-bindings/predeploys" "github.com/ethereum-optimism/optimism/op-chain-ops/deployer" "github.com/ethereum/go-ethereum/accounts/abi/bind" "github.com/ethereum/go-ethereum/accounts/abi/bind/backends" @@ -60,7 +59,7 @@ func BuildOptimism(immutable ImmutableConfig) (DeploymentResults, error) { Name: "DeployerWhitelist", }, { - Name: "L1BlockNumber", + Name: "L2OptimismMintableERC20Factory", }, } return BuildL2(deployments) @@ -111,8 +110,9 @@ func l2Deployer(backend *backends.SimulatedBackend, opts *bind.TransactOpts, dep case "SequencerFeeVault": // No arguments to SequencerFeeVault addr, _, _, err = bindings.DeploySequencerFeeVault(opts, backend) - case "OptimismMintableERC20Factory": - addr, _, _, err = bindings.DeployOptimismMintableERC20Factory(opts, backend, predeploys.L2StandardBridgeAddr) + case "L2OptimismMintableERC20Factory": + // No arguments to L2OptimismMintableERC20Factory + addr, _, _, err = bindings.DeployL2OptimismMintableERC20Factory(opts, backend) case "DeployerWhitelist": addr, _, _, err = bindings.DeployDeployerWhitelist(opts, backend) case "L1BlockNumber": diff --git a/op-chain-ops/immutables/immutables_test.go b/op-chain-ops/immutables/immutables_test.go index 91d5568fc5b36..1e4db2de6a541 100644 --- a/op-chain-ops/immutables/immutables_test.go +++ b/op-chain-ops/immutables/immutables_test.go @@ -21,15 +21,16 @@ func TestBuildOptimism(t *testing.T) { require.NotNil(t, results) contracts := map[string]bool{ - "GasPriceOracle": true, - "L1Block": true, - "L2CrossDomainMessenger": true, - "L2StandardBridge": true, - "L2ToL1MessagePasser": true, - "SequencerFeeVault": true, - "OptimismMintableERC20Factory": true, - "DeployerWhitelist": true, - "L1BlockNumber": true, + "GasPriceOracle": true, + "L1Block": true, + "L2CrossDomainMessenger": true, + "L2StandardBridge": true, + "L2ToL1MessagePasser": true, + "SequencerFeeVault": true, + "OptimismMintableERC20Factory": true, + "DeployerWhitelist": true, + "L2OptimismMintableERC20Factory": true, + "L1BlockNumber": true, } // Only the exact contracts that we care about are being diff --git a/packages/contracts-bedrock/contracts/L1/L1OptimismMintableERC20Factory.sol b/packages/contracts-bedrock/contracts/L1/L1OptimismMintableERC20Factory.sol new file mode 100644 index 0000000000000..011f76e5ae673 --- /dev/null +++ b/packages/contracts-bedrock/contracts/L1/L1OptimismMintableERC20Factory.sol @@ -0,0 +1,17 @@ +// SPDX-License-Identifier: MIT +pragma solidity 0.8.15; + +import { OptimismMintableERC20Factory } from "../universal/OptimismMintableERC20Factory.sol"; + +/** + * @custom:proxied + * @title L1OptimismMintableERC20Factory + * @notice L1OptimismMintableERC20Factory is the OptimismMintableERC20Factory that is deployed on + * L1. It allows for L2 native tokens to be withdrawn to L1. + */ +contract L1OptimismMintableERC20Factory is OptimismMintableERC20Factory { + /** + * @param _bridge Address of the StandardBridge on this chain. + */ + constructor(address _bridge) OptimismMintableERC20Factory(_bridge) {} +} diff --git a/packages/contracts-bedrock/contracts/L2/L2OptimismMintableERC20Factory.sol b/packages/contracts-bedrock/contracts/L2/L2OptimismMintableERC20Factory.sol new file mode 100644 index 0000000000000..42fad20a17264 --- /dev/null +++ b/packages/contracts-bedrock/contracts/L2/L2OptimismMintableERC20Factory.sol @@ -0,0 +1,18 @@ +// SPDX-License-Identifier: MIT +pragma solidity 0.8.15; + +import { OptimismMintableERC20Factory } from "../universal/OptimismMintableERC20Factory.sol"; +import { Predeploys } from "../libraries/Predeploys.sol"; + +/** + * @custom:proxied + * @custom:predeployed 0x4200000000000000000000000000000000000012 + * @title L2OptimismMintableERC20Factory + * @notice L2OptimismMintableERC20Factory is a factory contract that generates OptimismMintableERC20 + * contracts on L2 that allows for deposits of L1 native tokens. Simplifies the deployment + * process for users who may be less familiar with deploying smart contracts. Designed to + be backwards compatible with the legacy StandardL2ERC20Factory contract. + */ +contract L2OptimismMintableERC20Factory is OptimismMintableERC20Factory { + constructor() OptimismMintableERC20Factory(Predeploys.L2_STANDARD_BRIDGE) {} +} diff --git a/packages/contracts-bedrock/contracts/libraries/Predeploys.sol b/packages/contracts-bedrock/contracts/libraries/Predeploys.sol index f8d9dee343d4f..dbc8b0e6bd501 100644 --- a/packages/contracts-bedrock/contracts/libraries/Predeploys.sol +++ b/packages/contracts-bedrock/contracts/libraries/Predeploys.sol @@ -30,7 +30,7 @@ library Predeploys { /** * @notice Address of the OptimismMintableERC20Factory predeploy. */ - address internal constant OPTIMISM_MINTABLE_ERC20_FACTORY = + address internal constant L2_OPTIMISM_MINTABLE_ERC20_FACTORY = 0x4200000000000000000000000000000000000012; /** diff --git a/packages/contracts-bedrock/contracts/test/CommonTest.t.sol b/packages/contracts-bedrock/contracts/test/CommonTest.t.sol index 7732f6ef736d1..e2656486a5537 100644 --- a/packages/contracts-bedrock/contracts/test/CommonTest.t.sol +++ b/packages/contracts-bedrock/contracts/test/CommonTest.t.sol @@ -377,7 +377,7 @@ contract Bridge_Initializer is Messenger_Initializer { super.setUp(); vm.label(Predeploys.L2_STANDARD_BRIDGE, "L2StandardBridge"); - vm.label(Predeploys.OPTIMISM_MINTABLE_ERC20_FACTORY, "OptimismMintableERC20Factory"); + vm.label(Predeploys.L2_OPTIMISM_MINTABLE_ERC20_FACTORY, "L2OptimismMintableERC20Factory"); // Deploy the L1 bridge and initialize it with the address of the // L1CrossDomainMessenger @@ -408,9 +408,9 @@ contract Bridge_Initializer is Messenger_Initializer { OptimismMintableERC20Factory factory = new OptimismMintableERC20Factory( Predeploys.L2_STANDARD_BRIDGE ); - vm.etch(Predeploys.OPTIMISM_MINTABLE_ERC20_FACTORY, address(factory).code); + vm.etch(Predeploys.L2_OPTIMISM_MINTABLE_ERC20_FACTORY, address(factory).code); L2TokenFactory = OptimismMintableERC20Factory( - Predeploys.OPTIMISM_MINTABLE_ERC20_FACTORY + Predeploys.L2_OPTIMISM_MINTABLE_ERC20_FACTORY ); vm.etch(Predeploys.LEGACY_ERC20_ETH, address(new LegacyERC20ETH()).code); diff --git a/packages/contracts-bedrock/contracts/universal/OptimismMintableERC20Factory.sol b/packages/contracts-bedrock/contracts/universal/OptimismMintableERC20Factory.sol index f9e8b7dc92141..ebe6baf0cd6cf 100644 --- a/packages/contracts-bedrock/contracts/universal/OptimismMintableERC20Factory.sol +++ b/packages/contracts-bedrock/contracts/universal/OptimismMintableERC20Factory.sol @@ -1,17 +1,15 @@ // SPDX-License-Identifier: MIT pragma solidity 0.8.15; -/* Contract Imports */ import { OptimismMintableERC20 } from "../universal/OptimismMintableERC20.sol"; /** * @custom:proxied - * @custom:predeployed 0x4200000000000000000000000000000000000012 * @title OptimismMintableERC20Factory * @notice OptimismMintableERC20Factory is a factory contract that generates OptimismMintableERC20 * contracts on the network it's deployed to. Simplifies the deployment process for users * who may be less familiar with deploying smart contracts. Designed to be backwards - * compatible with the older StandardL2ERC20Factory contract. + * compatible with the legacy StandardL2ERC20Factory contract. */ contract OptimismMintableERC20Factory { /** diff --git a/packages/contracts-bedrock/deploy/000-InitProxies.deploy.ts b/packages/contracts-bedrock/deploy/000-InitProxies.deploy.ts index 89bc2139d6327..7932e8107976a 100644 --- a/packages/contracts-bedrock/deploy/000-InitProxies.deploy.ts +++ b/packages/contracts-bedrock/deploy/000-InitProxies.deploy.ts @@ -8,7 +8,7 @@ const proxies = [ 'L1CrossDomainMessengerProxy', 'L1StandardBridgeProxy', 'OptimismPortalProxy', - 'OptimismMintableERC20FactoryProxy', + 'L1OptimismMintableERC20FactoryProxy', ] const deployFn: DeployFunction = async (hre) => { diff --git a/packages/contracts-bedrock/deploy/001-InitImplementations.deploy.ts b/packages/contracts-bedrock/deploy/001-InitImplementations.deploy.ts index 9d339f103e924..1487c6eba9882 100644 --- a/packages/contracts-bedrock/deploy/001-InitImplementations.deploy.ts +++ b/packages/contracts-bedrock/deploy/001-InitImplementations.deploy.ts @@ -80,7 +80,7 @@ const deployFn: DeployFunction = async (hre) => { waitConfirmations: deployConfig.deploymentWaitConfirmations, nonce: ++nonce, }), - deploy('OptimismMintableERC20Factory', { + deploy('L1OptimismMintableERC20Factory', { from: deployer, args: [bridgeProxy.address], log: true, @@ -143,8 +143,8 @@ const deployFn: DeployFunction = async (hre) => { await tx.wait() console.log('Done') - const factory = await get('OptimismMintableERC20Factory') - const factoryProxy = await get('OptimismMintableERC20FactoryProxy') + const factory = await get('L1OptimismMintableERC20Factory') + const factoryProxy = await get('L1OptimismMintableERC20FactoryProxy') const factoryProxyContract = await hre.ethers.getContractAt( 'Proxy', factoryProxy.address @@ -247,9 +247,9 @@ const validateBridge = async (hre) => { const validateTokenFactory = async (hre) => { const bridge = await hre.deployments.get('L1StandardBridgeProxy') - const proxy = await hre.deployments.get('OptimismMintableERC20FactoryProxy') + const proxy = await hre.deployments.get('L1OptimismMintableERC20FactoryProxy') const OptimismMintableERC20Factory = await hre.ethers.getContractAt( - 'OptimismMintableERC20Factory', + 'L1OptimismMintableERC20Factory', proxy.address ) if (bridge.address !== (await OptimismMintableERC20Factory.bridge())) { diff --git a/packages/contracts-bedrock/deploy/001-InitImplementations.deploy.ts.orig b/packages/contracts-bedrock/deploy/001-InitImplementations.deploy.ts.orig new file mode 100644 index 0000000000000..d6ba402cd67c9 --- /dev/null +++ b/packages/contracts-bedrock/deploy/001-InitImplementations.deploy.ts.orig @@ -0,0 +1,267 @@ +/* Imports: Internal */ +import { DeployFunction } from 'hardhat-deploy/dist/types' +import { BigNumber } from 'ethers' +import 'hardhat-deploy' +import '@nomiclabs/hardhat-ethers' +import '@eth-optimism/hardhat-deploy-config' + +const upgradeABIs = { + L2OutputOracleProxy: async (deployConfig) => [ + 'initialize(bytes32,uint256,address,address)', + [ + deployConfig.l2OutputOracleGenesisL2Output, + deployConfig.l2OutputOracleStartingBlockNumber, + deployConfig.l2OutputOracleProposer, + deployConfig.l2OutputOracleOwner, + ], + ], + OptimismPortalProxy: async () => ['initialize', []], + L1CrossDomainMessengerProxy: async () => ['initialize', []], +} + +const deployFn: DeployFunction = async (hre) => { + const { deploy, get } = hre.deployments + const { deployer } = await hre.getNamedAccounts() + const { deployConfig } = hre + const l1 = hre.ethers.provider + + let deployL2StartingTimestamp = deployConfig.l2OutputOracleStartingTimestamp + if (deployL2StartingTimestamp < 0) { + const l1StartingBlock = await l1.getBlock(deployConfig.l1StartingBlockTag) + if (l1StartingBlock === null) { + throw new Error( + `Cannot fetch block tag ${deployConfig.l1StartingBlockTag}` + ) + } + deployL2StartingTimestamp = l1StartingBlock.timestamp + } + + const oracleProxy = await get('L2OutputOracleProxy') + const portalProxy = await get('OptimismPortalProxy') + const messengerProxy = await get('L1CrossDomainMessengerProxy') + const bridgeProxy = await get('L1StandardBridgeProxy') + + let nonce = await l1.getTransactionCount(deployer) + const implTxs = [ + deploy('L2OutputOracle', { + from: deployer, + args: [ + deployConfig.l2OutputOracleSubmissionInterval, + deployConfig.l2OutputOracleGenesisL2Output, + deployConfig.l2OutputOracleHistoricalTotalBlocks, + deployConfig.l2OutputOracleStartingBlockNumber, + deployL2StartingTimestamp, + deployConfig.l2BlockTime, + deployConfig.l2OutputOracleProposer, + deployConfig.l2OutputOracleOwner, + ], + log: true, + waitConfirmations: deployConfig.deploymentWaitConfirmations, + nonce, + }), + deploy('OptimismPortal', { + from: deployer, + args: [oracleProxy.address, 2], + log: true, + waitConfirmations: deployConfig.deploymentWaitConfirmations, + nonce: ++nonce, + }), + deploy('L1CrossDomainMessenger', { + from: deployer, + args: [portalProxy.address], + log: true, + waitConfirmations: deployConfig.deploymentWaitConfirmations, + nonce: ++nonce, + }), + deploy('L1StandardBridge', { + from: deployer, + args: [messengerProxy.address], + log: true, + waitConfirmations: deployConfig.deploymentWaitConfirmations, + nonce: ++nonce, + }), + deploy('L1OptimismMintableERC20Factory', { + from: deployer, + args: [bridgeProxy.address], + log: true, + waitConfirmations: deployConfig.deploymentWaitConfirmations, + nonce: ++nonce, + }), + deploy('AddressManager', { + from: deployer, + args: [], + log: true, + waitConfirmations: deployConfig.deploymentWaitConfirmations, + nonce: ++nonce, + }), + deploy('ProxyAdmin', { + from: deployer, + args: [deployer], + log: true, + waitConfirmations: deployConfig.deploymentWaitConfirmations, + nonce: ++nonce, + }), + ] + await Promise.all(implTxs) + + let tx + // Reset the nonce for the next set of transactions + for (const [proxy, upgrader] of Object.entries(upgradeABIs)) { + const upgraderOut = await upgrader(deployConfig) + const implName = proxy.replace('Proxy', '') + const implDeployment = await get(implName) + const implContract = await hre.ethers.getContractAt( + implName, + implDeployment.address + ) + const proxyDeployment = await get(proxy) + const proxyContract = await hre.ethers.getContractAt( + 'Proxy', + proxyDeployment.address + ) + console.log(`Upgrading contract impl ${implName}.`) + tx = await proxyContract.upgradeToAndCall( + implContract.address, + implContract.interface.encodeFunctionData( + upgraderOut[0] as string, + upgraderOut[1] as any[] + ) + ) + console.log(`Awaiting TX hash ${tx.hash}.`) + await tx.wait() + console.log('Done.') + } + +<<<<<<< HEAD + const factory = await get('L1OptimismMintableERC20Factory') + const factoryProxy = await get('L1OptimismMintableERC20FactoryProxy') +======= + const bridge = await get('L1StandardBridge') + const bridgeProxyContract = await hre.ethers.getContractAt( + 'Proxy', + bridgeProxy.address + ) + console.log(`Upgrading L1StandardBridge at ${bridge.address}.`) + tx = await bridgeProxyContract.upgradeTo(bridge.address) + console.log(`Awaiting TX hash ${tx.hash}.`) + await tx.wait() + console.log('Done') + + const factory = await get('OptimismMintableERC20Factory') + const factoryProxy = await get('OptimismMintableERC20FactoryProxy') +>>>>>>> upstream/develop + const factoryProxyContract = await hre.ethers.getContractAt( + 'Proxy', + factoryProxy.address + ) + console.log(`Upgrading OptimismMintableERC20Factory at ${factory.address}.`) + tx = await factoryProxyContract.upgradeTo(factory.address) + console.log(`Awaiting TX hash ${tx.hash}.`) + await tx.wait() + console.log('Done') + + await validateOracle(hre, deployConfig, deployL2StartingTimestamp) + await validatePortal(hre) + await validateMessenger(hre) + await validateBridge(hre) + await validateTokenFactory(hre) +} + +const validateOracle = async (hre, deployConfig, deployL2StartingTimestamp) => { + const proxy = await hre.deployments.get('L2OutputOracleProxy') + const L2OutputOracle = await hre.ethers.getContractAt( + 'L2OutputOracle', + proxy.address + ) + + const submissionInterval = await L2OutputOracle.SUBMISSION_INTERVAL() + if ( + !submissionInterval.eq( + BigNumber.from(deployConfig.l2OutputOracleSubmissionInterval) + ) + ) { + throw new Error('submission internal misconfigured') + } + + const historicalBlocks = await L2OutputOracle.HISTORICAL_TOTAL_BLOCKS() + if ( + !historicalBlocks.eq( + BigNumber.from(deployConfig.l2OutputOracleHistoricalTotalBlocks) + ) + ) { + throw new Error('historical total blocks misconfigured') + } + + const startingBlockNumber = await L2OutputOracle.STARTING_BLOCK_NUMBER() + if ( + !startingBlockNumber.eq( + BigNumber.from(deployConfig.l2OutputOracleStartingBlockNumber) + ) + ) { + throw new Error('starting block number misconfigured') + } + + const startingTimestamp = await L2OutputOracle.STARTING_TIMESTAMP() + if (!startingTimestamp.eq(BigNumber.from(deployL2StartingTimestamp))) { + throw new Error('starting timestamp misconfigured') + } + const l2BlockTime = await L2OutputOracle.L2_BLOCK_TIME() + if (!l2BlockTime.eq(BigNumber.from(deployConfig.l2BlockTime))) { + throw new Error('L2 block time misconfigured') + } +} + +const validatePortal = async (hre) => { + const oracle = await hre.deployments.get('L2OutputOracleProxy') + const proxy = await hre.deployments.get('OptimismPortalProxy') + + const OptimismPortal = await hre.ethers.getContractAt( + 'OptimismPortal', + proxy.address + ) + const l2Oracle = await OptimismPortal.L2_ORACLE() + if (l2Oracle !== oracle.address) { + throw new Error('L2 Oracle mismatch') + } +} + +const validateMessenger = async (hre) => { + const portal = await hre.deployments.get('OptimismPortalProxy') + const proxy = await hre.deployments.get('L1CrossDomainMessengerProxy') + const L1CrossDomainMessenger = await hre.ethers.getContractAt( + 'L1CrossDomainMessenger', + proxy.address + ) + const portalAddress = await L1CrossDomainMessenger.portal() + if (portalAddress !== portal.address) { + throw new Error('portal misconfigured') + } +} + +const validateBridge = async (hre) => { + const messenger = await hre.deployments.get('L1CrossDomainMessengerProxy') + const proxy = await hre.deployments.get('L1StandardBridgeProxy') + const L1StandardBridge = await hre.ethers.getContractAt( + 'L1StandardBridge', + proxy.address + ) + if (messenger.address !== (await L1StandardBridge.messenger())) { + throw new Error('misconfigured messenger') + } +} + +const validateTokenFactory = async (hre) => { + const bridge = await hre.deployments.get('L1StandardBridgeProxy') + const proxy = await hre.deployments.get('L1OptimismMintableERC20FactoryProxy') + const OptimismMintableERC20Factory = await hre.ethers.getContractAt( + 'L1OptimismMintableERC20Factory', + proxy.address + ) + if (bridge.address !== (await OptimismMintableERC20Factory.bridge())) { + throw new Error('bridge misconfigured') + } +} + +deployFn.tags = ['InitImplementations'] + +export default deployFn diff --git a/packages/contracts-bedrock/hardhat.config.ts b/packages/contracts-bedrock/hardhat.config.ts index eba79e42c87ce..a8870d95ff4c7 100644 --- a/packages/contracts-bedrock/hardhat.config.ts +++ b/packages/contracts-bedrock/hardhat.config.ts @@ -346,7 +346,7 @@ const config: HardhatUserConfig = { solidity: { compilers: [ { - version: '0.8.10', + version: '0.8.15', settings: { optimizer: { enabled: true, runs: 10_000 }, }, diff --git a/packages/contracts-bedrock/src/constants.ts b/packages/contracts-bedrock/src/constants.ts index 1e9725ca72ba0..540e93bc81c6a 100644 --- a/packages/contracts-bedrock/src/constants.ts +++ b/packages/contracts-bedrock/src/constants.ts @@ -13,7 +13,7 @@ export const predeploys = { GasPriceOracle: '0x420000000000000000000000000000000000000F', L2StandardBridge: '0x4200000000000000000000000000000000000010', SequencerFeeVault: '0x4200000000000000000000000000000000000011', - OptimismMintableERC20Factory: '0x4200000000000000000000000000000000000012', + L2OptimismMintableERC20Factory: '0x4200000000000000000000000000000000000012', L1BlockNumber: '0x4200000000000000000000000000000000000013', L1Block: '0x4200000000000000000000000000000000000015', LegacyERC20ETH: '0xDeadDeAddeAddEAddeadDEaDDEAdDeaDDeAD0000', diff --git a/packages/contracts-bedrock/tasks/check-l2-config.ts b/packages/contracts-bedrock/tasks/check-l2-config.ts index b520cecff8653..29a9ae145657b 100644 --- a/packages/contracts-bedrock/tasks/check-l2-config.ts +++ b/packages/contracts-bedrock/tasks/check-l2-config.ts @@ -67,7 +67,7 @@ task('check-l2-config', 'Validate L2 config') // Confirming that OptimismMintableERC20Factory.bridge() is set properly. const OptimismMintableERC20Factory = await loadPredeploy( - 'OptimismMintableERC20Factory' + 'L2OptimismMintableERC20Factory' ) const actualBridge = await OptimismMintableERC20Factory.bridge() const expectedBridge = predeploys.L2StandardBridge diff --git a/packages/contracts-bedrock/tasks/check-l2-config.ts.orig b/packages/contracts-bedrock/tasks/check-l2-config.ts.orig new file mode 100644 index 0000000000000..c9f4a98869ed0 --- /dev/null +++ b/packages/contracts-bedrock/tasks/check-l2-config.ts.orig @@ -0,0 +1,86 @@ +import { task, types } from 'hardhat/config' +import { providers, Contract } from 'ethers' +import '@nomiclabs/hardhat-ethers' +import 'hardhat-deploy' + +import { predeploys } from '../src' + +task('check-l2-config', 'Validate L2 config') + .addParam( + 'l2ProviderUrl', + 'L2 provider URL.', + 'http://localhost:9545', + types.string + ) + .setAction(async (args, hre) => { + const l2Provider = new providers.JsonRpcProvider(args.l2ProviderUrl) + + const loadPredeploy = async (name: string): Promise => { + const artifact = await hre.artifacts.readArtifact(name) + return new Contract(predeploys[name], artifact.abi, l2Provider) + } + + const getContractAddress = async (name: string): Promise => { + const deployment = await hre.deployments.get(name) + return deployment.address + } + + // Verify that all predeploys have code. + // TODO: Actually check that the predeploys have the expected code. + for (const [name, address] of Object.entries(predeploys)) { + const code = await l2Provider.getCode(address) + if (code === '0x') { + throw new Error(`Missing code for ${name}`) + } + } + + // Confirming that L2CrossDomainMessenger.otherMessenger() is set properly. + const L2CrossDomainMessenger = await loadPredeploy('L2CrossDomainMessenger') + const actualOtherMessenger = await getContractAddress( + 'L1CrossDomainMessengerProxy' + ) + const expectedOtherMessenger = await L2CrossDomainMessenger.otherMessenger() + if (expectedOtherMessenger !== actualOtherMessenger) { + throw new Error( + `L2CrossDomainMessenger otherMessenger not set correctly. Got ${actualOtherMessenger}, expected ${actualOtherMessenger}` + ) + } + + // Confirming that L2StandardBridge.messenger() is set properly. + const L2StandardBridge = await loadPredeploy('L2StandardBridge') + const actualMessenger = await L2StandardBridge.messenger() + const expectedMessenger = predeploys.L2CrossDomainMessenger + if (expectedMessenger !== actualMessenger) { + throw new Error( + `L2StandardBridge messenger not set correctly. Got ${actualMessenger}, expected ${expectedMessenger}` + ) + } + + // Confirming that L2StandardBridge.otherBridge() is set properly. + const actualOtherBridge = await getContractAddress('L1StandardBridgeProxy') + const expectedOtherBridge = await L2StandardBridge.otherBridge() + if (expectedOtherBridge !== actualOtherBridge) { + throw new Error( + `L2StandardBridge otherBridge not set correctly. Got ${actualMessenger}, expected ${expectedOtherBridge}` + ) + } + +<<<<<<< HEAD + const OptimismMintableERC20Factory = new Contract( + predeploys.L2OptimismMintableERC20Factory, + Artifact__OptimismMintableERC20Factory.abi, + l2Provider +======= + // Confirming that OptimismMintableERC20Factory.bridge() is set properly. + const OptimismMintableERC20Factory = await loadPredeploy( + 'OptimismMintableERC20Factory' +>>>>>>> upstream/develop + ) + const actualBridge = await OptimismMintableERC20Factory.bridge() + const expectedBridge = predeploys.L2StandardBridge + if (expectedBridge !== actualBridge) { + throw new Error( + `OptimismMintableERC20Factory bridge not set correctly. Got ${actualBridge}, expected ${expectedBridge}` + ) + } + }) diff --git a/specs/predeploys.md b/specs/predeploys.md index 38db3e1c3ec47..34ab772d31fd2 100644 --- a/specs/predeploys.md +++ b/specs/predeploys.md @@ -12,7 +12,7 @@ - [L2CrossDomainMessenger](#l2crossdomainmessenger) - [L2StandardBridge](#l2standardbridge) - [SequencerFeeVault](#sequencerfeevault) -- [OptimismMintableERC20Factory](#optimismmintableerc20factory) +- [L2OptimismMintableERC20Factory](#l2optimismmintableerc20factory) - [L1BlockNumber](#l1blocknumber) - [OVM\_GasPriceOracle](#ovm%5C_gaspriceoracle) - [Reserved System Address 1](#reserved-system-address-1) @@ -37,21 +37,21 @@ The following table includes each of the predeploys. The system version indicates when the predeploy was introduced. The possible values are `Legacy` or `Bedrock`. Deprecated contracts should not be used. -| Name | Address | Introduced | Deprecated | -| ---------------------------- | ------------------------------------------ | ---------- | ---------- | -| OVM\_L2ToL1MessagePasser | 0x4200000000000000000000000000000000000000 | Legacy | No | -| OVM\_DeployerWhitelist | 0x4200000000000000000000000000000000000002 | Legacy | Yes | -| OVM\_ETH | 0xDeadDeAddeAddEAddeadDEaDDEAdDeaDDeAD0000 | Legacy | Yes | -| WETH9 | 0x4200000000000000000000000000000000000006 | Legacy | No | -| L2CrossDomainMessenger | 0x4200000000000000000000000000000000000007 | Legacy | No | -| L2StandardBridge | 0x4200000000000000000000000000000000000010 | Legacy | No | -| SequencerFeeVault | 0x4200000000000000000000000000000000000011 | Legacy | No | -| OptimismMintableERC20Factory | 0x4200000000000000000000000000000000000012 | Legacy | No | -| L1BlockNumber | 0x4200000000000000000000000000000000000013 | Legacy | Yes | -| OVM\_GasPriceOracle | 0x420000000000000000000000000000000000000F | Legacy | No | -| Reserved System Address 1 | 0x4200000000000000000000000000000000000014 | Legacy | No | -| Reserved System Address 2 | 0x4200000000000000000000000000000000000042 | Legacy | No | -| L1Block | 0x4200000000000000000000000000000000000015 | Bedrock | No | +| Name | Address | Introduced | Deprecated | +| ------------------------------ | ------------------------------------------ | ---------- | ---------- | +| OVM\_L2ToL1MessagePasser | 0x4200000000000000000000000000000000000000 | Legacy | No | +| OVM\_DeployerWhitelist | 0x4200000000000000000000000000000000000002 | Legacy | Yes | +| OVM\_ETH | 0xDeadDeAddeAddEAddeadDEaDDEAdDeaDDeAD0000 | Legacy | Yes | +| WETH9 | 0x4200000000000000000000000000000000000006 | Legacy | No | +| L2CrossDomainMessenger | 0x4200000000000000000000000000000000000007 | Legacy | No | +| L2StandardBridge | 0x4200000000000000000000000000000000000010 | Legacy | No | +| SequencerFeeVault | 0x4200000000000000000000000000000000000011 | Legacy | No | +| L2OptimismMintableERC20Factory | 0x4200000000000000000000000000000000000012 | Legacy | No | +| L1BlockNumber | 0x4200000000000000000000000000000000000013 | Legacy | Yes | +| OVM\_GasPriceOracle | 0x420000000000000000000000000000000000000F | Legacy | No | +| Reserved System Address 1 | 0x4200000000000000000000000000000000000014 | Legacy | No | +| Reserved System Address 2 | 0x4200000000000000000000000000000000000042 | Legacy | No | +| L1Block | 0x4200000000000000000000000000000000000015 | Bedrock | No | ## OVM\_L2ToL1MessagePasser @@ -229,13 +229,12 @@ interface SequencerFeeVault { } ``` -## OptimismMintableERC20Factory +## L2OptimismMintableERC20Factory -The `OptimismMintableERC20Factory` can be used to create an ERC20 token contract -on a remote domain that maps to an ERC20 token contract on the local domain -where tokens can be deposited to the remote domain. It deploys an -`OptimismMintableERC20` which has the interface that works with the -`StandardBridge`. +The `L2OptimismMintableERC20Factory` can be used to create an ERC20 token contract +on L2 that an ERC20 token contract on L1 where tokens can be securely deposited to +L2 via the `L1StandardBridge`. It deploys an `OptimismMintableERC20` contract on +L2. ## L1BlockNumber