diff --git a/contracts/Makefile b/contracts/Makefile index a6e4f76ea..354c8ec9a 100644 --- a/contracts/Makefile +++ b/contracts/Makefile @@ -17,10 +17,17 @@ version: ## Print tool versions. build: version ## Build contracts. forge build + + +CONTRACTS := OmniPortal FeeOracleV1 OmniAVS OmniStake Create3 TransparentUpgradeableProxy \ + DelegationManager StrategyManager StrategyBase AVSDirectory \ + src/deploy/ProxyAdmin.sol:ProxyAdmin \ + test/avs/common/MockERC20.sol:MockERC20 + .PHONY: bindings bindings: check-abigen-version build ## Generate golang contract bindings. - ./bindings/scripts/gen.sh OmniPortal FeeOracleV1 OmniAVS OmniStake Create3 TransparentUpgradeableProxy ProxyAdmin DelegationManager StrategyManager StrategyBase AVSDirectory test/avs/common/MockERC20.sol:MockERC20 - ./bindings/scripts/genmore.sh OmniStake + ./bindings/scripts/gen.sh $(CONTRACTS) + ./bindings/scripts/genmore.sh OmniStake # Need OmniStake deployedBytecode go run ./bindings/scripts/commenttypes.go -- bindings/strategymanager.go IStrategyManagerDeprecatedStructQueuedWithdrawal IStrategyManagerDeprecatedStructWithdrawerAndNonce go run ./bindings/scripts/commenttypes.go -- bindings/avsdirectory.go ISignatureUtilsSignatureWithSaltAndExpiry diff --git a/contracts/bindings/mockerc20.go b/contracts/bindings/mockerc20.go index ee5cc71be..a8c80d77d 100644 --- a/contracts/bindings/mockerc20.go +++ b/contracts/bindings/mockerc20.go @@ -32,7 +32,7 @@ var ( // MockERC20MetaData contains all meta data concerning the MockERC20 contract. var MockERC20MetaData = &bind.MetaData{ ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"name\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"symbol\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"allowance\",\"inputs\":[{\"name\":\"owner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"spender\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"approve\",\"inputs\":[{\"name\":\"spender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"balanceOf\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"decimals\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint8\",\"internalType\":\"uint8\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"decreaseAllowance\",\"inputs\":[{\"name\":\"spender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"subtractedValue\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"increaseAllowance\",\"inputs\":[{\"name\":\"spender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"addedValue\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"mint\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"name\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"symbol\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"totalSupply\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"transfer\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"transferFrom\",\"inputs\":[{\"name\":\"from\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"Approval\",\"inputs\":[{\"name\":\"owner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"spender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Transfer\",\"inputs\":[{\"name\":\"from\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false}]", - Bin: "0x608060405234801561001057600080fd5b50610e6a806100206000396000f3fe608060405234801561001057600080fd5b50600436106100cf5760003560e01c80633644e5151161008c57806395d89b411161006657806395d89b41146101bb578063a9059cbb146101c3578063d505accf146101d6578063dd62ed3e146101e957600080fd5b80633644e5151461017357806370a082311461017b5780637ecebe001461019b57600080fd5b806306fdde03146100d4578063095ea7b3146100f25780631624f6c61461011557806318160ddd1461012a57806323b872dd14610141578063313ce56714610154575b600080fd5b6100dc610214565b6040516100e9919061096d565b60405180910390f35b6101056101003660046109d8565b6102a2565b60405190151581526020016100e9565b610128610123366004610ab6565b61030f565b005b61013360035481565b6040519081526020016100e9565b61010561014f366004610b2a565b6103ae565b6002546101619060ff1681565b60405160ff90911681526020016100e9565b6101336104c3565b610133610189366004610b66565b60046020526000908152604090205481565b6101336101a9366004610b66565b60086020526000908152604090205481565b6100dc6104e9565b6101056101d13660046109d8565b6104f6565b6101286101e4366004610b81565b61058d565b6101336101f7366004610beb565b600560209081526000928352604080842090915290825290205481565b6000805461022190610c1e565b80601f016020809104026020016040519081016040528092919081815260200182805461024d90610c1e565b801561029a5780601f1061026f5761010080835404028352916020019161029a565b820191906000526020600020905b81548152906001019060200180831161027d57829003601f168201915b505050505081565b3360008181526005602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906102fd9086815260200190565b60405180910390a35060015b92915050565b60095460ff161561035d5760405162461bcd60e51b81526020600482015260136024820152721053149150511657d253925512505312569151606a1b60448201526064015b60405180910390fd5b60006103698482610ca9565b5060016103768382610ca9565b506002805460ff191660ff831617905561038e6107eb565b600655610399610804565b60075550506009805460ff1916600117905550565b6001600160a01b0383166000908152600560209081526040808320338452909152812054600019811461040a576103e581846108a7565b6001600160a01b03861660009081526005602090815260408083203384529091529020555b6001600160a01b03851660009081526004602052604090205461042d90846108a7565b6001600160a01b03808716600090815260046020526040808220939093559086168152205461045c908461090a565b6001600160a01b0380861660008181526004602052604090819020939093559151908716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906104b09087815260200190565b60405180910390a3506001949350505050565b60006006546104d06107eb565b146104e2576104dd610804565b905090565b5060075490565b6001805461022190610c1e565b3360009081526004602052604081205461051090836108a7565b33600090815260046020526040808220929092556001600160a01b0385168152205461053c908361090a565b6001600160a01b0384166000818152600460205260409081902092909255905133907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906102fd9086815260200190565b428410156105dd5760405162461bcd60e51b815260206004820152601760248201527f5045524d49545f444541444c494e455f455850495245440000000000000000006044820152606401610354565b600060016105e96104c3565b6001600160a01b038a16600090815260086020526040812080547f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9928d928d928d9290919061063783610d7f565b909155506040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810188905260e001604051602081830303815290604052805190602001206040516020016106b092919061190160f01b81526002810192909252602282015260420190565b60408051601f198184030181528282528051602091820120600084529083018083525260ff871690820152606081018590526080810184905260a0016020604051602081039080840390855afa15801561070e573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116158015906107445750876001600160a01b0316816001600160a01b0316145b6107815760405162461bcd60e51b815260206004820152600e60248201526d24a72b20a624a22fa9a4a3a722a960911b6044820152606401610354565b6001600160a01b0381811660009081526005602090815260408083208b8516808552908352928190208a90555189815291928b16917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a35050505050505050565b6000610969806107fd63ffffffff8216565b9250505090565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60006040516108369190610d98565b60405180910390207fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc66108676107eb565b604080516020810195909552840192909252606083015260808201523060a082015260c00160405160208183030381529060405280519060200120905090565b6000818310156108f95760405162461bcd60e51b815260206004820152601c60248201527f45524332303a207375627472616374696f6e20756e646572666c6f77000000006044820152606401610354565b6109038284610e0e565b9392505050565b6000806109178385610e21565b9050838110156109035760405162461bcd60e51b815260206004820152601860248201527f45524332303a206164646974696f6e206f766572666c6f7700000000000000006044820152606401610354565b4690565b60006020808352835180602085015260005b8181101561099b5785810183015185820160400152820161097f565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b03811681146109d357600080fd5b919050565b600080604083850312156109eb57600080fd5b6109f4836109bc565b946020939093013593505050565b634e487b7160e01b600052604160045260246000fd5b600082601f830112610a2957600080fd5b813567ffffffffffffffff80821115610a4457610a44610a02565b604051601f8301601f19908116603f01168101908282118183101715610a6c57610a6c610a02565b81604052838152866020858801011115610a8557600080fd5b836020870160208301376000602085830101528094505050505092915050565b803560ff811681146109d357600080fd5b600080600060608486031215610acb57600080fd5b833567ffffffffffffffff80821115610ae357600080fd5b610aef87838801610a18565b94506020860135915080821115610b0557600080fd5b50610b1286828701610a18565b925050610b2160408501610aa5565b90509250925092565b600080600060608486031215610b3f57600080fd5b610b48846109bc565b9250610b56602085016109bc565b9150604084013590509250925092565b600060208284031215610b7857600080fd5b610903826109bc565b600080600080600080600060e0888a031215610b9c57600080fd5b610ba5886109bc565b9650610bb3602089016109bc565b95506040880135945060608801359350610bcf60808901610aa5565b925060a0880135915060c0880135905092959891949750929550565b60008060408385031215610bfe57600080fd5b610c07836109bc565b9150610c15602084016109bc565b90509250929050565b600181811c90821680610c3257607f821691505b602082108103610c5257634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115610ca4576000816000526020600020601f850160051c81016020861015610c815750805b601f850160051c820191505b81811015610ca057828155600101610c8d565b5050505b505050565b815167ffffffffffffffff811115610cc357610cc3610a02565b610cd781610cd18454610c1e565b84610c58565b602080601f831160018114610d0c5760008415610cf45750858301515b600019600386901b1c1916600185901b178555610ca0565b600085815260208120601f198616915b82811015610d3b57888601518255948401946001909101908401610d1c565b5085821015610d595787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b600060018201610d9157610d91610d69565b5060010190565b6000808354610da681610c1e565b60018281168015610dbe5760018114610dd357610e02565b60ff1984168752821515830287019450610e02565b8760005260208060002060005b85811015610df95781548a820152908401908201610de0565b50505082870194505b50929695505050505050565b8181038181111561030957610309610d69565b8082018082111561030957610309610d6956fea2646970667358221220d75331dc735e97a0cc5c82438370dbce5bc86accf33601dd1f6cefde44c3960464736f6c63430008180033", + Bin: "0x60806040523480156200001157600080fd5b5060405162000c3d38038062000c3d833981016040819052620000349162000126565b8181600362000044838262000221565b50600462000053828262000221565b5050505050620002ed565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200008657600080fd5b81516001600160401b0380821115620000a357620000a36200005e565b604051601f8301601f19908116603f01168101908282118183101715620000ce57620000ce6200005e565b8160405283815260209250866020858801011115620000ec57600080fd5b600091505b83821015620001105785820183015181830184015290820190620000f1565b6000602085830101528094505050505092915050565b600080604083850312156200013a57600080fd5b82516001600160401b03808211156200015257600080fd5b620001608683870162000074565b935060208501519150808211156200017757600080fd5b50620001868582860162000074565b9150509250929050565b600181811c90821680620001a557607f821691505b602082108103620001c657634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200021c576000816000526020600020601f850160051c81016020861015620001f75750805b601f850160051c820191505b81811015620002185782815560010162000203565b5050505b505050565b81516001600160401b038111156200023d576200023d6200005e565b62000255816200024e845462000190565b84620001cc565b602080601f8311600181146200028d5760008415620002745750858301515b600019600386901b1c1916600185901b17855562000218565b600085815260208120601f198616915b82811015620002be578886015182559484019460019091019084016200029d565b5085821015620002dd5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b61094080620002fd6000396000f3fe608060405234801561001057600080fd5b50600436106100b45760003560e01c806340c10f191161007157806340c10f191461014157806370a082311461015657806395d89b411461017f578063a457c2d714610187578063a9059cbb1461019a578063dd62ed3e146101ad57600080fd5b806306fdde03146100b9578063095ea7b3146100d757806318160ddd146100fa57806323b872dd1461010c578063313ce5671461011f578063395093511461012e575b600080fd5b6100c16101c0565b6040516100ce9190610789565b60405180910390f35b6100ea6100e53660046107f4565b610252565b60405190151581526020016100ce565b6002545b6040519081526020016100ce565b6100ea61011a36600461081e565b61026c565b604051601281526020016100ce565b6100ea61013c3660046107f4565b610290565b61015461014f3660046107f4565b6102b2565b005b6100fe61016436600461085a565b6001600160a01b031660009081526020819052604090205490565b6100c16102c0565b6100ea6101953660046107f4565b6102cf565b6100ea6101a83660046107f4565b61034f565b6100fe6101bb36600461087c565b61035d565b6060600380546101cf906108af565b80601f01602080910402602001604051908101604052809291908181526020018280546101fb906108af565b80156102485780601f1061021d57610100808354040283529160200191610248565b820191906000526020600020905b81548152906001019060200180831161022b57829003601f168201915b5050505050905090565b600033610260818585610388565b60019150505b92915050565b60003361027a8582856104ac565b610285858585610526565b506001949350505050565b6000336102608185856102a3838361035d565b6102ad91906108e9565b610388565b6102bc82826106ca565b5050565b6060600480546101cf906108af565b600033816102dd828661035d565b9050838110156103425760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084015b60405180910390fd5b6102858286868403610388565b600033610260818585610526565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6001600160a01b0383166103ea5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610339565b6001600160a01b03821661044b5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610339565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006104b8848461035d565b9050600019811461052057818110156105135760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610339565b6105208484848403610388565b50505050565b6001600160a01b03831661058a5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610339565b6001600160a01b0382166105ec5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610339565b6001600160a01b038316600090815260208190526040902054818110156106645760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610339565b6001600160a01b03848116600081815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3610520565b6001600160a01b0382166107205760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610339565b806002600082825461073291906108e9565b90915550506001600160a01b038216600081815260208181526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b60006020808352835180602085015260005b818110156107b75785810183015185820160400152820161079b565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b03811681146107ef57600080fd5b919050565b6000806040838503121561080757600080fd5b610810836107d8565b946020939093013593505050565b60008060006060848603121561083357600080fd5b61083c846107d8565b925061084a602085016107d8565b9150604084013590509250925092565b60006020828403121561086c57600080fd5b610875826107d8565b9392505050565b6000806040838503121561088f57600080fd5b610898836107d8565b91506108a6602084016107d8565b90509250929050565b600181811c908216806108c357607f821691505b6020821081036108e357634e487b7160e01b600052602260045260246000fd5b50919050565b8082018082111561026657634e487b7160e01b600052601160045260246000fdfea26469706673582212200e5ff8af1ddb3a64655b3cac018e983177503fd5a8a56a4a55979999bdb48dff64736f6c63430008180033", } // MockERC20ABI is the input ABI used to generate the binding from. diff --git a/contracts/bindings/proxyadmin.go b/contracts/bindings/proxyadmin.go index 304253ed3..ede2805a4 100644 --- a/contracts/bindings/proxyadmin.go +++ b/contracts/bindings/proxyadmin.go @@ -31,8 +31,8 @@ var ( // ProxyAdminMetaData contains all meta data concerning the ProxyAdmin contract. var ProxyAdminMetaData = &bind.MetaData{ - ABI: "[{\"type\":\"function\",\"name\":\"changeProxyAdmin\",\"inputs\":[{\"name\":\"proxy\",\"type\":\"address\",\"internalType\":\"contractITransparentUpgradeableProxy\"},{\"name\":\"newAdmin\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"getProxyAdmin\",\"inputs\":[{\"name\":\"proxy\",\"type\":\"address\",\"internalType\":\"contractITransparentUpgradeableProxy\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getProxyImplementation\",\"inputs\":[{\"name\":\"proxy\",\"type\":\"address\",\"internalType\":\"contractITransparentUpgradeableProxy\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"owner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"renounceOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"transferOwnership\",\"inputs\":[{\"name\":\"newOwner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"upgrade\",\"inputs\":[{\"name\":\"proxy\",\"type\":\"address\",\"internalType\":\"contractITransparentUpgradeableProxy\"},{\"name\":\"implementation\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"upgradeAndCall\",\"inputs\":[{\"name\":\"proxy\",\"type\":\"address\",\"internalType\":\"contractITransparentUpgradeableProxy\"},{\"name\":\"implementation\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"event\",\"name\":\"OwnershipTransferred\",\"inputs\":[{\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false}]", - Bin: "0x608060405234801561001057600080fd5b5061001a3361001f565b61006f565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b61069a8061007e6000396000f3fe60806040526004361061007b5760003560e01c80639623609d1161004e5780639623609d1461011157806399a88ec414610124578063f2fde38b14610144578063f3b7dead1461016457600080fd5b8063204e1c7a14610080578063715018a6146100bc5780637eff275e146100d35780638da5cb5b146100f3575b600080fd5b34801561008c57600080fd5b506100a061009b366004610499565b610184565b6040516001600160a01b03909116815260200160405180910390f35b3480156100c857600080fd5b506100d1610215565b005b3480156100df57600080fd5b506100d16100ee3660046104bd565b610229565b3480156100ff57600080fd5b506000546001600160a01b03166100a0565b6100d161011f36600461050c565b610291565b34801561013057600080fd5b506100d161013f3660046104bd565b610300565b34801561015057600080fd5b506100d161015f366004610499565b610336565b34801561017057600080fd5b506100a061017f366004610499565b6103b4565b6000806000836001600160a01b03166040516101aa90635c60da1b60e01b815260040190565b600060405180830381855afa9150503d80600081146101e5576040519150601f19603f3d011682016040523d82523d6000602084013e6101ea565b606091505b5091509150816101f957600080fd5b8080602001905181019061020d91906105e2565b949350505050565b61021d6103da565b6102276000610434565b565b6102316103da565b6040516308f2839760e41b81526001600160a01b038281166004830152831690638f283970906024015b600060405180830381600087803b15801561027557600080fd5b505af1158015610289573d6000803e3d6000fd5b505050505050565b6102996103da565b60405163278f794360e11b81526001600160a01b03841690634f1ef2869034906102c990869086906004016105ff565b6000604051808303818588803b1580156102e257600080fd5b505af11580156102f6573d6000803e3d6000fd5b5050505050505050565b6103086103da565b604051631b2ce7f360e11b81526001600160a01b038281166004830152831690633659cfe69060240161025b565b61033e6103da565b6001600160a01b0381166103a85760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b6103b181610434565b50565b6000806000836001600160a01b03166040516101aa906303e1469160e61b815260040190565b6000546001600160a01b031633146102275760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161039f565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b03811681146103b157600080fd5b6000602082840312156104ab57600080fd5b81356104b681610484565b9392505050565b600080604083850312156104d057600080fd5b82356104db81610484565b915060208301356104eb81610484565b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b60008060006060848603121561052157600080fd5b833561052c81610484565b9250602084013561053c81610484565b9150604084013567ffffffffffffffff8082111561055957600080fd5b818601915086601f83011261056d57600080fd5b81358181111561057f5761057f6104f6565b604051601f8201601f19908116603f011681019083821181831017156105a7576105a76104f6565b816040528281528960208487010111156105c057600080fd5b8260208601602083013760006020848301015280955050505050509250925092565b6000602082840312156105f457600080fd5b81516104b681610484565b60018060a01b038316815260006020604081840152835180604085015260005b8181101561063b5785810183015185820160600152820161061f565b8181111561064d576000606083870101525b50601f01601f19169290920160600194935050505056fea2646970667358221220c05fd01e9cb5a6d57ff48f40dd8e3c410a74fcc7c0c567cb80c11c5959dda6a164736f6c634300080c0033", + ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"owner\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"changeProxyAdmin\",\"inputs\":[{\"name\":\"proxy\",\"type\":\"address\",\"internalType\":\"contractITransparentUpgradeableProxy\"},{\"name\":\"newAdmin\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"getProxyAdmin\",\"inputs\":[{\"name\":\"proxy\",\"type\":\"address\",\"internalType\":\"contractITransparentUpgradeableProxy\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getProxyImplementation\",\"inputs\":[{\"name\":\"proxy\",\"type\":\"address\",\"internalType\":\"contractITransparentUpgradeableProxy\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"owner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"renounceOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"transferOwnership\",\"inputs\":[{\"name\":\"newOwner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"upgrade\",\"inputs\":[{\"name\":\"proxy\",\"type\":\"address\",\"internalType\":\"contractITransparentUpgradeableProxy\"},{\"name\":\"implementation\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"upgradeAndCall\",\"inputs\":[{\"name\":\"proxy\",\"type\":\"address\",\"internalType\":\"contractITransparentUpgradeableProxy\"},{\"name\":\"implementation\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"event\",\"name\":\"OwnershipTransferred\",\"inputs\":[{\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false}]", + Bin: "0x608060405234801561001057600080fd5b5060405161076a38038061076a83398101604081905261002f91610097565b61003833610047565b61004181610047565b506100c7565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602082840312156100a957600080fd5b81516001600160a01b03811681146100c057600080fd5b9392505050565b610694806100d66000396000f3fe60806040526004361061007b5760003560e01c80639623609d1161004e5780639623609d1461011157806399a88ec414610124578063f2fde38b14610144578063f3b7dead1461016457600080fd5b8063204e1c7a14610080578063715018a6146100bc5780637eff275e146100d35780638da5cb5b146100f3575b600080fd5b34801561008c57600080fd5b506100a061009b366004610499565b610184565b6040516001600160a01b03909116815260200160405180910390f35b3480156100c857600080fd5b506100d1610215565b005b3480156100df57600080fd5b506100d16100ee3660046104bd565b610229565b3480156100ff57600080fd5b506000546001600160a01b03166100a0565b6100d161011f36600461050c565b610291565b34801561013057600080fd5b506100d161013f3660046104bd565b610300565b34801561015057600080fd5b506100d161015f366004610499565b610336565b34801561017057600080fd5b506100a061017f366004610499565b6103b4565b6000806000836001600160a01b03166040516101aa90635c60da1b60e01b815260040190565b600060405180830381855afa9150503d80600081146101e5576040519150601f19603f3d011682016040523d82523d6000602084013e6101ea565b606091505b5091509150816101f957600080fd5b8080602001905181019061020d91906105e2565b949350505050565b61021d6103da565b6102276000610434565b565b6102316103da565b6040516308f2839760e41b81526001600160a01b038281166004830152831690638f283970906024015b600060405180830381600087803b15801561027557600080fd5b505af1158015610289573d6000803e3d6000fd5b505050505050565b6102996103da565b60405163278f794360e11b81526001600160a01b03841690634f1ef2869034906102c990869086906004016105ff565b6000604051808303818588803b1580156102e257600080fd5b505af11580156102f6573d6000803e3d6000fd5b5050505050505050565b6103086103da565b604051631b2ce7f360e11b81526001600160a01b038281166004830152831690633659cfe69060240161025b565b61033e6103da565b6001600160a01b0381166103a85760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b6103b181610434565b50565b6000806000836001600160a01b03166040516101aa906303e1469160e61b815260040190565b6000546001600160a01b031633146102275760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161039f565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b03811681146103b157600080fd5b6000602082840312156104ab57600080fd5b81356104b681610484565b9392505050565b600080604083850312156104d057600080fd5b82356104db81610484565b915060208301356104eb81610484565b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b60008060006060848603121561052157600080fd5b833561052c81610484565b9250602084013561053c81610484565b9150604084013567ffffffffffffffff8082111561055957600080fd5b818601915086601f83011261056d57600080fd5b81358181111561057f5761057f6104f6565b604051601f8201601f19908116603f011681019083821181831017156105a7576105a76104f6565b816040528281528960208487010111156105c057600080fd5b8260208601602083013760006020848301015280955050505050509250925092565b6000602082840312156105f457600080fd5b81516104b681610484565b60018060a01b03831681526000602060406020840152835180604085015260005b8181101561063c57858101830151858201606001528201610620565b506000606082860101526060601f19601f83011685010192505050939250505056fea264697066735822122048aa9689b126d844ddd731c358178a51dc08122d8763e64ce3b10706d6aa543564736f6c63430008180033", } // ProxyAdminABI is the input ABI used to generate the binding from. @@ -44,7 +44,7 @@ var ProxyAdminABI = ProxyAdminMetaData.ABI var ProxyAdminBin = ProxyAdminMetaData.Bin // DeployProxyAdmin deploys a new Ethereum contract, binding an instance of ProxyAdmin to it. -func DeployProxyAdmin(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *ProxyAdmin, error) { +func DeployProxyAdmin(auth *bind.TransactOpts, backend bind.ContractBackend, owner common.Address) (common.Address, *types.Transaction, *ProxyAdmin, error) { parsed, err := ProxyAdminMetaData.GetAbi() if err != nil { return common.Address{}, nil, nil, err @@ -53,7 +53,7 @@ func DeployProxyAdmin(auth *bind.TransactOpts, backend bind.ContractBackend) (co return common.Address{}, nil, nil, errors.New("GetABI returned nil") } - address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(ProxyAdminBin), backend) + address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(ProxyAdminBin), backend, owner) if err != nil { return common.Address{}, nil, nil, err } diff --git a/contracts/src/deploy/ProxyAdmin.sol b/contracts/src/deploy/ProxyAdmin.sol new file mode 100644 index 000000000..49c4b2f68 --- /dev/null +++ b/contracts/src/deploy/ProxyAdmin.sol @@ -0,0 +1,15 @@ +// SPDX-License-Identifier: AGPL-3.0 +pragma solidity ^0.8.12; + +import { ProxyAdmin as OZProxyAdmin } from "@openzeppelin/contracts/proxy/transparent/ProxyAdmin.sol"; + +/** + * @title ProxyAdmin + * @notice Wrapper around OpenZeppelin's ProxyAdmin that allows for setting the owner on deployment. + * @dev This allows us to use Create3 to deploy + */ +contract ProxyAdmin is OZProxyAdmin { + constructor(address owner) OZProxyAdmin() { + _transferOwnership(owner); + } +} diff --git a/contracts/test/portal/common/Fixtures.sol b/contracts/test/portal/common/Fixtures.sol index b9402cadf..ef6b148fd 100644 --- a/contracts/test/portal/common/Fixtures.sol +++ b/contracts/test/portal/common/Fixtures.sol @@ -2,9 +2,9 @@ pragma solidity =0.8.24; import { Strings } from "@openzeppelin/contracts/utils/Strings.sol"; -import { ProxyAdmin } from "@openzeppelin/contracts/proxy/transparent/ProxyAdmin.sol"; import { TransparentUpgradeableProxy } from "@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol"; +import { ProxyAdmin } from "src/deploy/ProxyAdmin.sol"; import { XTypes } from "src/libraries/XTypes.sol"; import { FeeOracleV1 } from "src/protocol/FeeOracleV1.sol"; import { OmniPortal } from "src/protocol/OmniPortal.sol"; @@ -322,8 +322,7 @@ contract Fixtures is CommonBase, StdCheats { vm.chainId(thisChainId); // portal constructor uses block.chainid - proxyAdmin = new ProxyAdmin(); - proxyAdmin.transferOwnership(owner); + proxyAdmin = new ProxyAdmin(owner); feeOracleImpl = new FeeOracleV1(); feeOracle = FeeOracleV1( @@ -356,8 +355,7 @@ contract Fixtures is CommonBase, StdCheats { vm.chainId(chainAId); - chainAProxyAdmin = new ProxyAdmin(); - chainAProxyAdmin.transferOwnership(owner); + chainAProxyAdmin = new ProxyAdmin(owner); chainAfeeOracleImpl = new FeeOracleV1(); chainAFeeOracle = FeeOracleV1( @@ -390,8 +388,7 @@ contract Fixtures is CommonBase, StdCheats { vm.chainId(chainBId); - chainBProxyAdmin = new ProxyAdmin(); - chainBProxyAdmin.transferOwnership(owner); + chainBProxyAdmin = new ProxyAdmin(owner); chainBfeeOracleImpl = new FeeOracleV1(); chainBFeeOracle = FeeOracleV1( diff --git a/e2e/netman/helpers.go b/e2e/netman/helpers.go index 92d31abcb..556389396 100644 --- a/e2e/netman/helpers.go +++ b/e2e/netman/helpers.go @@ -26,7 +26,7 @@ func deployOmniContracts(ctx context.Context, txOpts *bind.TransactOpts, backend owner := txOpts.From fee := new(big.Int).SetUint64(params.GWei) - proxyAdmin, err := DeployProxyAdmin(ctx, txOpts, backend) + proxyAdmin, err := DeployProxyAdmin(ctx, txOpts, backend, owner) if err != nil { return common.Address{}, nil, errors.Wrap(err, "deploy proxy admin") } @@ -49,10 +49,9 @@ func deployOmniContracts(ctx context.Context, txOpts *bind.TransactOpts, backend return portal, contract, nil } -func DeployProxyAdmin(ctx context.Context, txOpts *bind.TransactOpts, backend *ethbackend.Backend) ( - common.Address, error, -) { - proxyAdmin, tx, _, err := bindings.DeployProxyAdmin(txOpts, backend) +func DeployProxyAdmin(ctx context.Context, txOpts *bind.TransactOpts, backend *ethbackend.Backend, owner common.Address, +) (common.Address, error) { + proxyAdmin, tx, _, err := bindings.DeployProxyAdmin(txOpts, backend, owner) if err != nil { return common.Address{}, errors.Wrap(err, "deploy proxy admin") } diff --git a/lib/avs/deployer.go b/lib/avs/deployer.go index f455fbd6a..743b8a90e 100644 --- a/lib/avs/deployer.go +++ b/lib/avs/deployer.go @@ -137,7 +137,7 @@ func (d *Deployer) Deploy(ctx context.Context, backend *ethbackend.Backend, owne } // TODO: use same proxy admin for portal & avs on same chain - proxyAdmin, err := netman.DeployProxyAdmin(ctx, txOpts, backend) + proxyAdmin, err := netman.DeployProxyAdmin(ctx, txOpts, backend, owner) if err != nil { return errors.Wrap(err, "deploy proxy admin") }