5 txs
36 calls
constructor
constructor(address _initialOwner)
functions
explicitFunctionAccess
viewfunction explicitFunctionAccess(address, bytes4) view returns (bool)
owner
viewfunction owner() view returns (address)
whitelistedRouters
viewfunction whitelistedRouters(address router) view returns (bool allowed)
acceptOwner
nonpayablefunction acceptOwner()
execute
nonpayablefunction execute(address sellToken, uint256 sellTokenAmount, address buyToken, bytes swapData) returns (uint256 buyTokenAmount)
proposeNewOwner
nonpayablefunction proposeNewOwner(address account)
recoverToken
nonpayablefunction recoverToken(address token, address to, uint256 amount)
revokeOwnership
nonpayablefunction revokeOwnership()
setExplicitAccess
nonpayablefunction setExplicitAccess(address allowedCaller, tuple[] access)
whitelistRouter
nonpayablefunction whitelistRouter(address router, bool allowed)
events
ExplicitAccessSet
event ExplicitAccessSet(address indexed account, bytes4 indexed fnSelector, bool indexed value)
NewOwnerAccepted
event NewOwnerAccepted(address indexed oldOwner, address indexed newOwner)
NewOwnerProposed
event NewOwnerProposed(address indexed oldOwner, address indexed oldProposedOwner, address indexed newProposedOwner)
RouterWhitelisted
event RouterWhitelisted(address indexed router, bool allowed)
Swap
event Swap(address indexed sellToken, uint256 sellTokenAmount, address indexed buyToken, uint256 buyTokenAmount)
TokenRecovered
event TokenRecovered(address indexed to, address indexed token, uint256 amount)
errors
ExpectedNonZero
error ExpectedNonZero()
InvalidAccess
error InvalidAccess()
InvalidAddress
error InvalidAddress(address addr)
InvalidRouter
error InvalidRouter(address router)
InvalidSwap
error InvalidSwap()
Slippage
error Slippage(uint256 minAmountExpected, uint256 actualAmount)
UnknownSwapError
error UnknownSwapError(bytes result)
creation bytecode
0x60806040523480156200001157600080fd5b5060405162001cc738038062001cc78339810160408190526200003491620000c4565b80620000408162000048565b5050620000f6565b6000546001600160a01b0316156200007357604051633006171960e21b815260040160405180910390fd5b6001600160a01b038116620000a257604051634726455360e11b81526000600482015260240160405180910390fd5b600080546001600160a01b0319166001600160a01b0392909216919091179055565b600060208284031215620000d757600080fd5b81516001600160a01b0381168114620000ef57600080fd5b9392505050565b611bc180620001066000396000f3fe608060405234801561001057600080fd5b50600436106100be5760003560e01c8063b1f8100d11610076578063daeccc791161005b578063daeccc7914610196578063ebbc4965146101c4578063ee534a3f146101cc57600080fd5b8063b1f8100d14610170578063bfccf0ec1461018357600080fd5b80638da5cb5b116100a75780638da5cb5b146101055780638f3ed6831461014a578063a7229fd91461015d57600080fd5b80630f874a13146100c35780632b968958146100fb575b600080fd5b6100e66100d13660046115ff565b60036020526000908152604090205460ff1681565b60405190151581526020015b60405180910390f35b6101036101ed565b005b6000546101259073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100f2565b610103610158366004611631565b610334565b61010361016b36600461166a565b610422565b61010361017e3660046115ff565b610513565b6101036101913660046116ab565b61066f565b6100e66101a4366004611768565b600160209081526000928352604080842090915290825290205460ff1681565b610103610881565b6101df6101da36600461179d565b61094f565b6040519081526020016100f2565b61021b336000357fffffffff0000000000000000000000000000000000000000000000000000000016610bc2565b610251576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60025473ffffffffffffffffffffffffffffffffffffffff1661dead146102c5576002546040517f8e4c8aa600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911660048201526024015b60405180910390fd5b6000805460405173ffffffffffffffffffffffffffffffffffffffff909116907f5cd6b24c0149d980c82592262b3a81294b39f8f6e3c004126aaf0828c787d554908390a3600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b610362336000357fffffffff0000000000000000000000000000000000000000000000000000000016610bc2565b610398576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff821660008181526003602090815260409182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001685151590811790915591519182527fcf2b36bf2aa8353623d06f58eab9577176d9214e588362c013a7eeb0586463f1910160405180910390a25050565b610450336000357fffffffff0000000000000000000000000000000000000000000000000000000016610bc2565b610486576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f879f92dded0f26b83c3e00b12e0395dc72cfc3077343d1854ed6988edd1f9096836040516104e591815260200190565b60405180910390a361050e73ffffffffffffffffffffffffffffffffffffffff84168383610c47565b505050565b610541336000357fffffffff0000000000000000000000000000000000000000000000000000000016610bc2565b610577576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff81166105dc576040517f8e4c8aa600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821660048201526024016102bc565b6002546000805460405173ffffffffffffffffffffffffffffffffffffffff808616948116939216917f64420d4a41c6ed4de2bccbf33192eea18e576c5b23c79c3a722d4e9534c2e8d891a4600280547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b61069d336000357fffffffff0000000000000000000000000000000000000000000000000000000016610bc2565b6106d3576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8316610738576040517f8e4c8aa600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024016102bc565b604080518082019091526000808252602082015260005b8281101561087a578383828181106107695761076961183c565b90506040020180360381019061077f9190611912565b91508160200151151582600001517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168673ffffffffffffffffffffffffffffffffffffffff167ff5736e75de2c751f775d4c5ed517289f77074f8c337f451ba4c0c3ed1dd7f9ad60405160405180910390a460208281015173ffffffffffffffffffffffffffffffffffffffff871660009081526001808452604080832087517fffffffff0000000000000000000000000000000000000000000000000000000016845290945292902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169115159190911790550161074f565b5050505050565b60025473ffffffffffffffffffffffffffffffffffffffff1633146108d2576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008054604051339273ffffffffffffffffffffffffffffffffffffffff909216917f5cd6b24c0149d980c82592262b3a81294b39f8f6e3c004126aaf0828c787d55491a3600080547fffffffffffffffffffffffff00000000000000000000000000000000000000009081163317909155600280549091169055565b600061097f336000357fffffffff0000000000000000000000000000000000000000000000000000000016610bc2565b6109b5576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006109c38385018561196f565b805173ffffffffffffffffffffffffffffffffffffffff1660009081526003602052604090205490915060ff16610a415780516040517fd7f7333400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911660048201526024016102bc565b60608101518151610a709173ffffffffffffffffffffffffffffffffffffffff90911690899089908990610d1b565b602082015190925080831015610abc576040517f2746152a00000000000000000000000000000000000000000000000000000000815260048101829052602481018490526044016102bc565b6040820151610ae39073ffffffffffffffffffffffffffffffffffffffff88169085610c47565b8573ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fe5aa1cf5889c85b4317294c95f7f50feb57435a6defc7fa30823011ec18212a18986604051610b4b929190918252602082015260400190565b60405180910390a3816040015173ffffffffffffffffffffffffffffffffffffffff16636a68c7186040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610b9f57600080fd5b505af1158015610bb3573d6000803e3d6000fd5b50505050505095945050505050565b6000805473ffffffffffffffffffffffffffffffffffffffff84811691161480610c3e575073ffffffffffffffffffffffffffffffffffffffff831660009081526001602090815260408083207fffffffff000000000000000000000000000000000000000000000000000000008616845290915290205460ff165b90505b92915050565b60405173ffffffffffffffffffffffffffffffffffffffff831660248201526044810182905261050e9084907fa9059cbb00000000000000000000000000000000000000000000000000000000906064015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152611105565b600083600003610d57576040517f54db0c8c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152600090819073ffffffffffffffffffffffffffffffffffffffff8816906370a0823190602401602060405180830381865afa158015610dc6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dea9190611a7e565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff8716906370a0823190602401602060405180830381865afa158015610e54573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e789190611a7e565b9092509050610e9e73ffffffffffffffffffffffffffffffffffffffff88168988611214565b6000808973ffffffffffffffffffffffffffffffffffffffff1686604051610ec69190611abb565b6000604051808303816000865af19150503d8060008114610f03576040519150601f19603f3d011682016040523d82523d6000602084013e610f08565b606091505b509150915081610f5657805115610f225780518082602001fd5b806040517faa3541150000000000000000000000000000000000000000000000000000000081526004016102bc9190611b21565b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529388900393849073ffffffffffffffffffffffffffffffffffffffff8b16906370a0823190602401602060405180830381865afa158015610fc7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610feb9190611a7e565b14611022576040517f1115766700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152839073ffffffffffffffffffffffffffffffffffffffff8916906370a0823190602401602060405180830381865afa15801561108e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110b29190611a7e565b6110bc9190611b34565b9450846000036110f8576040517f1115766700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050505095945050505050565b6000611167826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff1661130a9092919063ffffffff16565b90508051600014806111885750808060200190518101906111889190611b6e565b61050e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f7420737563636565640000000000000000000000000000000000000000000060648201526084016102bc565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f095ea7b3000000000000000000000000000000000000000000000000000000001790526112a08482611321565b6113045760405173ffffffffffffffffffffffffffffffffffffffff84166024820152600060448201526112fa9085907f095ea7b30000000000000000000000000000000000000000000000000000000090606401610c99565b6113048482611105565b50505050565b606061131984846000856113e2565b949350505050565b60008060008473ffffffffffffffffffffffffffffffffffffffff168460405161134b9190611abb565b6000604051808303816000865af19150503d8060008114611388576040519150601f19603f3d011682016040523d82523d6000602084013e61138d565b606091505b50915091508180156113b75750805115806113b75750808060200190518101906113b79190611b6e565b80156113d9575073ffffffffffffffffffffffffffffffffffffffff85163b15155b95945050505050565b606082471015611474576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c000000000000000000000000000000000000000000000000000060648201526084016102bc565b6000808673ffffffffffffffffffffffffffffffffffffffff16858760405161149d9190611abb565b60006040518083038185875af1925050503d80600081146114da576040519150601f19603f3d011682016040523d82523d6000602084013e6114df565b606091505b50915091506114f0878383876114fb565b979650505050505050565b6060831561159157825160000361158a5773ffffffffffffffffffffffffffffffffffffffff85163b61158a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016102bc565b5081611319565b61131983838151156115a65781518083602001fd5b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102bc9190611b21565b73ffffffffffffffffffffffffffffffffffffffff811681146115fc57600080fd5b50565b60006020828403121561161157600080fd5b813561161c816115da565b9392505050565b80151581146115fc57600080fd5b6000806040838503121561164457600080fd5b823561164f816115da565b9150602083013561165f81611623565b809150509250929050565b60008060006060848603121561167f57600080fd5b833561168a816115da565b9250602084013561169a816115da565b929592945050506040919091013590565b6000806000604084860312156116c057600080fd5b83356116cb816115da565b9250602084013567ffffffffffffffff808211156116e857600080fd5b818601915086601f8301126116fc57600080fd5b81358181111561170b57600080fd5b8760208260061b850101111561172057600080fd5b6020830194508093505050509250925092565b80357fffffffff000000000000000000000000000000000000000000000000000000008116811461176357600080fd5b919050565b6000806040838503121561177b57600080fd5b8235611786816115da565b915061179460208401611733565b90509250929050565b6000806000806000608086880312156117b557600080fd5b85356117c0816115da565b94506020860135935060408601356117d7816115da565b9250606086013567ffffffffffffffff808211156117f457600080fd5b818801915088601f83011261180857600080fd5b81358181111561181757600080fd5b89602082850101111561182957600080fd5b9699959850939650602001949392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516080810167ffffffffffffffff811182821017156118bd576118bd61186b565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561190a5761190a61186b565b604052919050565b60006040828403121561192457600080fd5b6040516040810181811067ffffffffffffffff821117156119475761194761186b565b60405261195383611733565b8152602083013561196381611623565b60208201529392505050565b6000602080838503121561198257600080fd5b823567ffffffffffffffff8082111561199a57600080fd5b90840190608082870312156119ae57600080fd5b6119b661189a565b82356119c1816115da565b8152828401358482015260408301356119d9816115da565b60408201526060830135828111156119f057600080fd5b80840193505086601f840112611a0557600080fd5b823582811115611a1757611a1761186b565b611a47857fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116016118c3565b92508083528785828601011115611a5d57600080fd5b80858501868501376000908301909401939093526060830152509392505050565b600060208284031215611a9057600080fd5b5051919050565b60005b83811015611ab2578181015183820152602001611a9a565b50506000910152565b60008251611acd818460208701611a97565b9190910192915050565b60008151808452611aef816020860160208601611a97565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081526000610c3e6020830184611ad7565b81810381811115610c41577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600060208284031215611b8057600080fd5b815161161c8161162356fea2646970667358221220a2f121caf304c1e8a537cc49d5211d01b7c283a3ca8bde944a96885ace858abe64736f6c63430008160033000000000000000000000000b20aae0fe007519b7ce6f090a2ab8353b3da5d80