0 txs
0 calls
constructor
constructor(address admin, address backend, address guardian)
functions
BACKEND_ROLE
viewfunction BACKEND_ROLE() view returns (bytes32)
DEFAULT_ADMIN_ROLE
viewfunction DEFAULT_ADMIN_ROLE() view returns (bytes32)
getBackendAddress
viewfunction getBackendAddress() view returns (address)
getRoleAdmin
viewfunction getRoleAdmin(bytes32 role) view returns (bytes32)
getRoleMember
viewfunction getRoleMember(bytes32 role, uint256 index) view returns (address)
getRoleMemberCount
viewfunction getRoleMemberCount(bytes32 role) view returns (uint256)
getRoleMembers
viewfunction getRoleMembers(bytes32 role) view returns (address[])
getUserStrategies
viewfunction getUserStrategies(address user) view returns (address[])
GUARDIAN_ROLE
viewfunction GUARDIAN_ROLE() view returns (bytes32)
hasRole
viewfunction hasRole(bytes32 role, address account) view returns (bool)
implementationToId
viewfunction implementationToId(address) view returns (uint256)
isUserStrategy
viewfunction isUserStrategy(address user, address strategy) view returns (bool)
latestImplementationById
viewfunction latestImplementationById(uint256) view returns (address)
nextStrategyTypeId
viewfunction nextStrategyTypeId() view returns (uint256)
paused
viewfunction paused() view returns (bool)
supportsInterface
viewfunction supportsInterface(bytes4 interfaceId) view returns (bool)
whitelistedImplementations
viewfunction whitelistedImplementations(address) view returns (bool)
addStrategy
nonpayablefunction addStrategy(address user, address strategy)
grantRole
nonpayablefunction grantRole(bytes32 role, address account)
pause
nonpayablefunction pause()
recoverERC20
nonpayablefunction recoverERC20(address tokenAddress, address to, uint256 amount)
renounceRole
nonpayablefunction renounceRole(bytes32 role, address callerConfirmation)
revokeRole
nonpayablefunction revokeRole(bytes32 role, address account)
unpause
nonpayablefunction unpause()
updateStrategyOwner
nonpayablefunction updateStrategyOwner(address newOwner)
upgradeStrategy
nonpayablefunction upgradeStrategy(address strategy, address newImplementation)
whitelistImplementation
nonpayablefunction whitelistImplementation(address implementation, uint256 strategyTypeId) returns (uint256 assignedStrategyTypeId)
events
ImplementationWhitelisted
event ImplementationWhitelisted(address indexed implementation, uint256 indexed strategyType)
Paused
event Paused(address account)
RoleAdminChanged
event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole)
RoleGranted
event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender)
RoleRevoked
event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender)
StrategyAdded
event StrategyAdded(address indexed user, address strategy, address implementation)
StrategyImplementationUpdated
event StrategyImplementationUpdated(address indexed strategy, address indexed oldImplementation, address indexed newImplementation)
StrategyOwnerUpdated
event StrategyOwnerUpdated(address indexed strategy, address indexed oldOwner, address indexed newOwner)
TokenRecovered
event TokenRecovered(address indexed token, address indexed to, uint256 amount)
Unpaused
event Unpaused(address account)
errors
AccessControlBadConfirmation
error AccessControlBadConfirmation()
AccessControlUnauthorizedAccount
error AccessControlUnauthorizedAccount(address account, bytes32 neededRole)
EnforcedPause
error EnforcedPause()
ExpectedPause
error ExpectedPause()
SafeERC20FailedOperation
error SafeERC20FailedOperation(address token)
creation bytecode
0x60803461026f57601f611e4b38819003918201601f19168301916001600160401b038311848410176102735780849260609460405283398101031261026f5761004781610287565b61005f604061005860208501610287565b9301610287565b6002805460ff191690556001600160a01b03821691821561022a576001600160a01b0384169081156101e5576001600160a01b0383169485156101a0576100c2946100ac6100b79361029b565b610167575b50610311565b610121575b50610391565b6100db575b600160035560405161190990816104828239f35b5f516020611e2b5f395f51905f525f52600160205261011a907fe8fad4b49f5ba25b2c682cfec2ac50a7a40bbd1e12ab51733ec3e9c2f6f1c5db610411565b505f6100c7565b5f516020611dcb5f395f51905f525f526001602052610160907feb2b7e9fb33bd214e4eb1341cc6227bfa8ae181327e69ed47f46972bd2e9abbb610411565b505f6100bc565b5f80526001602052610199907fa6eef7e35abe7026729641147f7915573c7e97b47efa546f5f6e3230263bcb49610411565b505f6100b1565b60405162461bcd60e51b815260206004820152601860248201527f496e76616c696420677561726469616e206164647265737300000000000000006044820152606490fd5b60405162461bcd60e51b815260206004820152601760248201527f496e76616c6964206261636b656e6420616464726573730000000000000000006044820152606490fd5b60405162461bcd60e51b815260206004820152601560248201527f496e76616c69642061646d696e206164647265737300000000000000000000006044820152606490fd5b5f80fd5b634e487b7160e01b5f52604160045260245ffd5b51906001600160a01b038216820361026f57565b6001600160a01b0381165f9081525f516020611e0b5f395f51905f52602052604090205460ff1661030c576001600160a01b03165f8181525f516020611e0b5f395f51905f5260205260408120805460ff191660011790553391905f516020611d8b5f395f51905f528180a4600190565b505f90565b6001600160a01b0381165f9081525f516020611deb5f395f51905f52602052604090205460ff1661030c576001600160a01b03165f8181525f516020611deb5f395f51905f5260205260408120805460ff191660011790553391905f516020611dcb5f395f51905f52905f516020611d8b5f395f51905f529080a4600190565b6001600160a01b0381165f9081525f516020611dab5f395f51905f52602052604090205460ff1661030c576001600160a01b03165f8181525f516020611dab5f395f51905f5260205260408120805460ff191660011790553391905f516020611e2b5f395f51905f52905f516020611d8b5f395f51905f529080a4600190565b6001810190825f528160205260405f2054155f1461047a578054680100000000000000008110156102735760018101808355811015610466578390825f5260205f20015554915f5260205260405f2055600190565b634e487b7160e01b5f52603260045260245ffd5b5050505f9056fe6080806040526004361015610012575f80fd5b5f905f3560e01c90816301ffc9a71461134a575080630d5f7cbc146112ed5780631171bda9146111845780631806694314610cf8578063248a9ca314610cc657806324ea54f414610c8c5780632f2ff15d14610c2757806336568abe14610be15780633cd8ed4a14610a575780633ddad6e1146108765780633f4ba83a146108105780635c975abb146107ee57806367dee1061461058757806379f02fd4146104b25780638456cb59146104575780639010d07c1461041157806391d14854146103c857806392c2becc1461038d578063a217fddf14610371578063a3246ad3146102fd578063b01402c6146102df578063ca15c873146102b5578063d547741f1461026e578063edb39a40146101f4578063fcff48ed146101b5578063fd5ab9ef146101825763fd62df0714610147575f80fd5b3461017f57602036600319011261017f576020906040906001600160a01b0361016e6113b7565b168152600783522054604051908152f35b80fd5b503461017f57602036600319011261017f57602090600435815260068252604060018060a01b0391205416604051908152f35b503461017f57602036600319011261017f5760209060ff906040906001600160a01b036101e06113b7565b168152600584522054166040519015158152f35b503461017f578060031936011261017f577f25cf2b509f2a7f322675b2a5322b182f44ad2c03ac941a0af17c9b178f5d5d5f81526001602052604081209081541561025a5790815260208082205460405160039390931b1c6001600160a01b0316825290f35b634e487b7160e01b81526032600452602490fd5b503461017f57604036600319011261017f576102b160043561028e6113cd565b906102ac6102a7825f525f602052600160405f20015490565b6115e8565b61163b565b5080f35b503461017f57602036600319011261017f5760406020916004358152600183522054604051908152f35b503461017f578060031936011261017f576020600354604051908152f35b503461017f57602036600319011261017f576004358152600160205260408120604051918260208354918281520192825260208220915b81811061035b576103578561034b81870382611425565b604051918291826113e3565b0390f35b8254845260209093019260019283019201610334565b503461017f578060031936011261017f57602090604051908152f35b503461017f578060031936011261017f5760206040517f25cf2b509f2a7f322675b2a5322b182f44ad2c03ac941a0af17c9b178f5d5d5f8152f35b503461017f57604036600319011261017f5760406103e46113cd565b91600435815280602052209060018060a01b03165f52602052602060ff60405f2054166040519015158152f35b503461017f57604036600319011261017f5761043e60406020926004358152600184522060243590611675565b905460405160039290921b1c6001600160a01b03168152f35b503461017f578060031936011261017f57610470611579565b610478611620565b600160ff1960025416176002557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586020604051338152a180f35b503461017f57602036600319011261017f576001600160a01b036104d46113b7565b16808252600460205260408220546104eb81611512565b916104f96040519384611425565b818352601f1961050883611512565b01366020850137835b828110610526576040518061035786826113e3565b818552600460205261053b8160408720611675565b9054855160039290921b1c6001600160a01b031690821015610573576001600160a01b0316600582901b850160200152600101610511565b634e487b7160e01b86526032600452602486fd5b503461071f57604036600319011261071f576105a16113b7565b6105a96113cd565b906105b2611620565b335f5260046020526105df60405f209160018060a01b031680926001915f520160205260405f2054151590565b156107995760405163557887a160e11b815291602083600481855afa928315610714575f93610768575b506001600160a01b0390811692169081831461072357815f52600760205260405f20545f52600660205261064b60018060a01b0360405f2054169384146114c6565b825f52600560205261066360ff60405f20541661147a565b604051610671602082611425565b5f808252602082019190368337823b1561071f575f9060646040518094819363278f794360e11b8352896004840152604060248401525180918160448501528484015e8181018301859052601f01601f1916810103018183865af18015610714576106ff575b507f9263afc9abb2146cde7bb3be21ede745fdd8f79f13e0fc0ba1115746778dee928480a480f35b61070c9194505f90611425565b5f925f6106d7565b6040513d5f823e3d90fd5b5f80fd5b60405162461bcd60e51b815260206004820152601c60248201527f416c7265616479207573696e6720696d706c656d656e746174696f6e000000006044820152606490fd5b61078b91935060203d602011610792575b6107838183611425565b81019061145b565b915f610609565b503d610779565b60405162461bcd60e51b815260206004820152602760248201527f43616c6c6572206973206e6f7420746865206f776e6572206f662074686520736044820152667472617465677960c81b6064820152608490fd5b3461071f575f36600319011261071f57602060ff600254166040519015158152f35b3461071f575f36600319011261071f57610828611579565b60025460ff8116156108675760ff19166002557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa6020604051338152a1005b638dfc202b60e01b5f5260045ffd5b3461071f57602036600319011261071f5761088f6113b7565b610897611620565b604051638da5cb5b60e01b815290602082600481335afa918215610714575f92610a36575b506001600160a01b03169081156109f1576001600160a01b031680156109ac57805f5260046020526108ff3360405f206001915f520160205260405f2054151590565b1561095757805f5260046020526109193360405f2061180e565b50815f52600460205261092f3360405f2061169e565b50337f5c5d105233e9bd0a6244b4af448118b51a254de475b948b59e019dd5e51708d05f80a4005b60405162461bcd60e51b815260206004820152602760248201527f4e6f7420617574686f72697a656420746f2075706461746520737472617465676044820152663c9037bbb732b960c91b6064820152608490fd5b60405162461bcd60e51b815260206004820152601d60248201527f496e76616c69642063757272656e74206f776e657220616464726573730000006044820152606490fd5b60405162461bcd60e51b815260206004820152601960248201527f496e76616c6964206e6577206f776e65722061646472657373000000000000006044820152606490fd5b610a5091925060203d602011610792576107838183611425565b90826108bc565b3461071f57604036600319011261071f57610a706113b7565b60243590610a7c61152a565b6001600160a01b0316908115610b9c57815f52600560205260ff60405f205416610b4c5780610b435750600354905f198214610b2f57816001602093016003555b815f526005835260405f20600160ff19825416179055815f52600783528060405f2055805f526006835260405f20826bffffffffffffffffffffffff60a01b82541617905580604051927f52c0c0cf5b8ced69aa47a5759d7d3178a7230d505fd3a766df5c40765ddd96f05f80a38152f35b634e487b7160e01b5f52601160045260245ffd5b90602091610abd565b60405162461bcd60e51b815260206004820152602260248201527f496d706c656d656e746174696f6e20616c72656164792077686974656c697374604482015261195960f21b6064820152608490fd5b60405162461bcd60e51b815260206004820152601e60248201527f496e76616c696420696d706c656d656e746174696f6e206164647265737300006044820152606490fd5b3461071f57604036600319011261071f57610bfa6113cd565b336001600160a01b03821603610c1857610c169060043561163b565b005b63334bd91960e11b5f5260045ffd5b3461071f57604036600319011261071f57600435610c436113cd565b610c5b6102a7835f525f602052600160405f20015490565b610c65818361170c565b610c6b57005b5f91825260016020526040909120610c16916001600160a01b03169061169e565b3461071f575f36600319011261071f5760206040517f55435dd261a4b9b3364963f7738a7a662ad9c84396d64be3365284bb7f0a50418152f35b3461071f57602036600319011261071f576020610cf06004355f525f602052600160405f20015490565b604051908152f35b3461071f57604036600319011261071f57610d116113b7565b610d196113cd565b90610d22611620565b335f9081527f48c7bdbf6e737fbd4f28e9ac2ee21ca1cecfc20cb008a302f41dcc98ef949678602052604090205460ff161561114d576001600160a01b0316908115611111576001600160a01b031680156110cc57815f526004602052610d9a8160405f206001915f520160205260405f2054151590565b6110875760405163557887a160e11b8152602081600481855afa908115610714575f91611068575b506001600160a01b031690811561102a57815f526005602052610deb60ff60405f20541661147a565b604051638da5cb5b60e01b8152602081600481855afa80156107145784915f9161100b575b506001600160a01b031603610fc657604051635b69ee8960e11b8152602081600481855afa908115610714575f91610f84575b50306001600160a01b0390911603610f335760405163147663f760e31b8152602081600481855afa908115610714575f91610edf575b50907fbed8e8f7f7f40bdcad9266ea78deccef9b9590fcb85909285332b9550c9ba4cc926040925f526006602052610ebd60018060a01b03845f20541682146114c6565b845f526004602052610ed182845f2061169e565b5082519182526020820152a2005b9190506020823d602011610f2b575b81610efb60209383611425565b8101031261071f5790517fbed8e8f7f7f40bdcad9266ea78deccef9b9590fcb85909285332b9550c9ba4cc610e79565b3d9150610eee565b60405162461bcd60e51b815260206004820152602360248201527f5374726174656779207265676973747279206e6f742073657420636f72726563604482015262746c7960e81b6064820152608490fd5b90506020813d602011610fbe575b81610f9f60209383611425565b8101031261071f57516001600160a01b038116810361071f5784610e43565b3d9150610f92565b60405162461bcd60e51b815260206004820152601e60248201527f5374726174656779206f776e6572206973206e6f7420746865207573657200006044820152606490fd5b611024915060203d602011610792576107838183611425565b85610e10565b60405162461bcd60e51b815260206004820152601660248201527524b73b30b634b21034b6b83632b6b2b73a30ba34b7b760511b6044820152606490fd5b611081915060203d602011610792576107838183611425565b83610dc2565b60405162461bcd60e51b815260206004820152601f60248201527f537472617465677920616c726561647920616464656420666f722075736572006044820152606490fd5b60405162461bcd60e51b815260206004820152601860248201527f496e76616c6964207374726174656779206164647265737300000000000000006044820152606490fd5b60405162461bcd60e51b8152602060048201526014602482015273496e76616c69642075736572206164647265737360601b6044820152606490fd5b63e2517d3f60e01b5f52336004527f25cf2b509f2a7f322675b2a5322b182f44ad2c03ac941a0af17c9b178f5d5d5f60245260445ffd5b3461071f57606036600319011261071f5761119d6113b7565b6111a56113cd565b604435906111b161152a565b6001600160a01b03169182156112a85781156112635760018060a01b03169060205f6040518281019063a9059cbb60e01b8252866024820152846044820152604481526111ff606482611425565b519082865af115610714575f513d61125a5750813b155b6112475760207f879f92dded0f26b83c3e00b12e0395dc72cfc3077343d1854ed6988edd1f909691604051908152a3005b50635274afe760e01b5f5260045260245ffd5b60011415611216565b60405162461bcd60e51b815260206004820152601d60248201527f416d6f756e74206d7573742062652067726561746572207468616e20300000006044820152606490fd5b60405162461bcd60e51b815260206004820152601b60248201527f43616e6e6f742073656e6420746f207a65726f206164647265737300000000006044820152606490fd5b3461071f57604036600319011261071f57602061134061130b6113b7565b6113136113cd565b6001600160a01b039182165f90815260048552604080822092909316815260019091016020522054151590565b6040519015158152f35b3461071f57602036600319011261071f576004359063ffffffff60e01b821680920361071f57602091635a05180f60e01b811490811561138c575b5015158152f35b637965db0b60e01b8114915081156113a6575b5083611385565b6301ffc9a760e01b1490508361139f565b600435906001600160a01b038216820361071f57565b602435906001600160a01b038216820361071f57565b60206040818301928281528451809452019201905f5b8181106114065750505090565b82516001600160a01b03168452602093840193909201916001016113f9565b90601f8019910116810190811067ffffffffffffffff82111761144757604052565b634e487b7160e01b5f52604160045260245ffd5b9081602091031261071f57516001600160a01b038116810361071f5790565b1561148157565b60405162461bcd60e51b815260206004820152601e60248201527f496d706c656d656e746174696f6e206e6f742077686974656c697374656400006044820152606490fd5b156114cd57565b60405162461bcd60e51b815260206004820152601960248201527f4e6f74206c617465737420696d706c656d656e746174696f6e000000000000006044820152606490fd5b67ffffffffffffffff81116114475760051b60200190565b335f9081527fad3228b676f7d3cd4284a5443f17f1962b36e491b30a40b2405849e597ba5fb5602052604090205460ff161561156257565b63e2517d3f60e01b5f52336004525f60245260445ffd5b335f9081527f8a40f0b47fdc2a0ce293b772acfc7508c8315a4d462786c1adc3a56f92ca2d05602052604090205460ff16156115b157565b63e2517d3f60e01b5f52336004527f55435dd261a4b9b3364963f7738a7a662ad9c84396d64be3365284bb7f0a504160245260445ffd5b5f8181526020818152604080832033845290915290205460ff161561160a5750565b63e2517d3f60e01b5f523360045260245260445ffd5b60ff6002541661162c57565b63d93c066560e01b5f5260045ffd5b611645828261178e565b918261165057505090565b5f91825260016020526040909120611671916001600160a01b03169061180e565b5090565b805482101561168a575f5260205f2001905f90565b634e487b7160e01b5f52603260045260245ffd5b5f828152600182016020526040902054611706578054906801000000000000000082101561144757826116f16116db846001809601855584611675565b819391549060031b91821b915f19901b19161790565b90558054925f520160205260405f2055600190565b50505f90565b5f818152602081815260408083206001600160a01b038616845290915290205460ff16611706575f818152602081815260408083206001600160a01b0395909516808452949091528120805460ff19166001179055339291907f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9080a4600190565b5f818152602081815260408083206001600160a01b038616845290915290205460ff1615611706575f818152602081815260408083206001600160a01b0395909516808452949091528120805460ff19169055339291907ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9080a4600190565b906001820191815f528260205260405f20548015155f146118cb575f198101818111610b2f5782545f19810191908211610b2f57818103611896575b50505080548015611882575f1901906118638282611675565b8154905f199060031b1b19169055555f526020525f6040812055600190565b634e487b7160e01b5f52603160045260245ffd5b6118b66118a66116db9386611675565b90549060031b1c92839286611675565b90555f528360205260405f20555f808061184a565b505050505f9056fea2646970667358221220132926779519bc4c127563eab216d18f2e8d9a1ce10de5b344d83f998efc81ba64736f6c634300081c00332f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d8a40f0b47fdc2a0ce293b772acfc7508c8315a4d462786c1adc3a56f92ca2d0525cf2b509f2a7f322675b2a5322b182f44ad2c03ac941a0af17c9b178f5d5d5f48c7bdbf6e737fbd4f28e9ac2ee21ca1cecfc20cb008a302f41dcc98ef949678ad3228b676f7d3cd4284a5443f17f1962b36e491b30a40b2405849e597ba5fb555435dd261a4b9b3364963f7738a7a662ad9c84396d64be3365284bb7f0a5041000000000000000000000000dca82e03057329f53ed4173429d46b0511e46fb80000000000000000000000002ab03887829ea8632d972cf3816b825fe7fc5e7300000000000000000000000026c158a4cd56d148c554190a95a921d90f00c160