Cryo Explorer Ethereum Mainnet

Address Contract Partially Verified

Address 0xdF9F67004FB7e1B5fF7A91aD5F3De950aF217dFD
Balance 0 ETH
Nonce 1
Code Size 13601 bytes
Indexed Transactions 0
External Etherscan · Sourcify

Contract Bytecode

13601 bytes
0x608060405234801561001057600080fd5b50600436106102115760003560e01c806395d89b4111610125578063c4d66de8116100ad578063e0ab07721161007c578063e0ab077214610aa3578063e3ee160e14610b31578063e94a010214610bdf578063ed24911d14610c43578063fc0c546a14610c6157610211565b8063c4d66de8146108ef578063d505accf14610933578063d798f86e146109cc578063dd62ed3e14610a2b57610211565b8063a9059cbb116100f4578063a9059cbb146107c5578063ad615dec14610829578063ba9a7a561461087f578063c0bd9f161461089d578063c45a0155146108bb57610211565b806395d89b41146106ae578063a0cc6a6814610731578063a10adb171461074f578063a7f0e9031461079157610211565b80633408e470116101a85780634d861ece116101775780634d861ece1461050857806350b814a014610526578063687fbed81461059257806370a08231146105fe5780637ecebe001461065657610211565b80633408e470146104465780633750a8bd14610464578063411542701461048257806342966c68146104c457610211565b806323b872dd116101e457806323b872dd1461034f57806323c6e14c146103d357806330adf81f14610407578063313ce5671461042557610211565b806306fdde03146102165780630754617214610299578063095ea7b3146102cd57806318160ddd14610331575b600080fd5b61021e610c95565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561025e578082015181840152602081019050610243565b50505050905090810190601f16801561028b5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102a1610cce565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610319600480360360408110156102e357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610cf4565b60405180821515815260200191505060405180910390f35b610339610d0b565b6040518082815260200191505060405180910390f35b6103bb6004803603606081101561036557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610d11565b60405180821515815260200191505060405180910390f35b6103db610e65565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61040f610e7d565b6040518082815260200191505060405180910390f35b61042d610ea4565b604051808260ff16815260200191505060405180910390f35b61044e610ea9565b6040518082815260200191505060405180910390f35b61046c610eb1565b6040518082815260200191505060405180910390f35b6104ae6004803603602081101561049857600080fd5b8101908080359060200190929190505050610f8b565b6040518082815260200191505060405180910390f35b6104f0600480360360208110156104da57600080fd5b810190808035906020019092919050505061100d565b60405180821515815260200191505060405180910390f35b610510611022565b6040518082815260200191505060405180910390f35b61057c6004803603606081101561053c57600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611028565b6040518082815260200191505060405180910390f35b6105e8600480360360608110156105a857600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611226565b6040518082815260200191505060405180910390f35b6106406004803603602081101561061457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611432565b6040518082815260200191505060405180910390f35b6106986004803603602081101561066c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061144a565b6040518082815260200191505060405180910390f35b6106b6611462565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156106f65780820151818401526020810190506106db565b50505050905090810190601f1680156107235780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61073961149b565b6040518082815260200191505060405180910390f35b61077b6004803603602081101561076557600080fd5b81019080803590602001909291905050506114c2565b6040518082815260200191505060405180910390f35b610799611544565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610811600480360360408110156107db57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061155c565b60405180821515815260200191505060405180910390f35b6108696004803603606081101561083f57600080fd5b81019080803590602001909291908035906020019092919080359060200190929190505050611573565b6040518082815260200191505060405180910390f35b61088761169a565b6040518082815260200191505060405180910390f35b6108a56116a0565b6040518082815260200191505060405180910390f35b6108c36116a6565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6109316004803603602081101561090557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506116cc565b005b6109ca600480360360e081101561094957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190929190803560ff16906020019092919080359060200190929190803590602001909291905050506117d3565b005b610a0e600480360360208110156109e257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506119c5565b604051808381526020018281526020019250505060405180910390f35b610a8d60048036036040811015610a4157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611aa1565b6040518082815260200191505060405180910390f35b610b0d600480360360a0811015610ab957600080fd5b8101908080359060200190929190803590602001909291908035906020019092919080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611ac6565b60405180848152602001838152602001828152602001935050505060405180910390f35b610bdd6004803603610120811015610b4857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001909291908035906020019092919080359060200190929190803560ff1690602001909291908035906020019092919080359060200190929190505050611bc4565b005b610c2b60048036036040811015610bf557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611ea3565b60405180821515815260200191505060405180910390f35b610c4b611ed2565b6040518082815260200191505060405180910390f35b610c69611fa6565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6040518060400160405280601281526020017f464c4153482d414c542d4c5020546f6b656e000000000000000000000000000081525081565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610d01338484611fcc565b6001905092915050565b60005481565b600080600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610e4e57610dcd83826120b790919063ffffffff16565b600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b610e5985858561213a565b60019150509392505050565b73b4467e8d621105312a914f1d42f10770c0ffe3c881565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c960001b81565b601281565b600046905090565b60008073ec02f813404656e2a2aed5baeed41d785324e8d073ffffffffffffffffffffffffffffffffffffffff1663cc704d5460006040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b158015610f1a57600080fd5b505afa158015610f2e573d6000803e3d6000fd5b505050506040513d6020811015610f4457600080fd5b81019080805190602001909291905050509050610f85610f746611c37937e080008361235490919063ffffffff16565b6103e86120b790919063ffffffff16565b91505090565b600080610fa8610f99610eb1565b846123e390919063ffffffff16565b90506000610fc1600754836123e390919063ffffffff16565b90506000610fee83610fe06103e86006546123e390919063ffffffff16565b61248690919063ffffffff16565b9050611003818361235490919063ffffffff16565b9350505050919050565b60006110193383612509565b60019050919050565b60065481565b60006001600854146110a2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f506f6f6c3a204c4f434b4544000000000000000000000000000000000000000081525060200191505060405180910390fd5b6000600881905550600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461116d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f506f6f6c3a3a204f4e4c595f464143544f52590000000000000000000000000081525060200191505060405180910390fd5b611176846114c2565b9050808211156111ee576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f506f6f6c3a3a2045585045435445445f49535f4752454154455200000000000081525060200191505060405180910390fd5b6111f88482612623565b61121773b4467e8d621105312a914f1d42f10770c0ffe3c8848361265d565b60016008819055509392505050565b60006001600854146112a0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f506f6f6c3a204c4f434b4544000000000000000000000000000000000000000081525060200191505060405180910390fd5b6000600881905550600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461136b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f506f6f6c3a3a204f4e4c595f464143544f52590000000000000000000000000081525060200191505060405180910390fd5b61137484610f8b565b9050808211156113ec576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f506f6f6c3a3a2045585045435445445f49535f4752454154455200000000000081525060200191505060405180910390fd5b6113f68482612894565b611423600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16848361265d565b60016008819055509392505050565b60026020528060005260406000206000915090505481565b60046020528060005260406000206000915090505481565b6040518060400160405280600c81526020017f464c4153482d414c542d4c50000000000000000000000000000000000000000081525081565b7f7c7c6cdb67a18743f49ec6fa9b35f50d52ed05cbed4cc592e13b44501c1a226760001b81565b6000806114df6114d0610eb1565b846123e390919063ffffffff16565b905060006114f8600654836123e390919063ffffffff16565b90506000611525836115176103e86007546123e390919063ffffffff16565b61248690919063ffffffff16565b905061153a818361235490919063ffffffff16565b9350505050919050565b73ec02f813404656e2a2aed5baeed41d785324e8d081565b600061156933848461213a565b6001905092915050565b60008084116115ea576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f506f6f6c3a3a20494e53554646494349454e545f414d4f554e5400000000000081525060200191505060405180910390fd5b6000831180156115fa5750600082115b61166c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f506f6f6c3a3a20494e53554646494349454e545f4c495155494449545900000081525060200191505060405180910390fd5b6116918361168384876123e390919063ffffffff16565b61235490919063ffffffff16565b90509392505050565b6103e881565b60075481565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461178f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f506f6f6c3a3a204f4e4c595f464143544f52590000000000000000000000000081525060200191505060405180910390fd5b80600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b4284101561182c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806134366021913960400191505060405180910390fd5b60007f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c960001b888888600460008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205489604051602001808781526020018673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff16815260200184815260200183815260200182815260200196505050505050506040516020818303038152906040528051906020012090506119606001600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461248690919063ffffffff16565b600460008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506119b088828686866128ce565b6119bb888888611fcc565b5050505050505050565b600080600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611a8b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f506f6f6c3a3a204f4e4c595f464143544f52590000000000000000000000000081525060200191505060405180910390fd5b611a9483612a5e565b8092508193505050915091565b6003602052816000526040600020602052806000526040600020600091509150505481565b6000806000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611b8e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f506f6f6c3a3a204f4e4c595f464143544f52590000000000000000000000000081525060200191505060405180910390fd5b611b9a88888888612f5e565b8093508194505050611bad8484846130d4565b9050611bb983836131d8565b955095509592505050565b854211611c1c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602781526020018061347d6027913960400191505060405180910390fd5b844210611c74576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806134366021913960400191505060405180910390fd5b600560008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600085815260200190815260200160002060009054906101000a900460ff1615611d28576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806133e26026913960400191505060405180910390fd5b60007f7c7c6cdb67a18743f49ec6fa9b35f50d52ed05cbed4cc592e13b44501c1a226760001b8a8a8a8a8a8a604051602001808881526020018773ffffffffffffffffffffffffffffffffffffffff1681526020018673ffffffffffffffffffffffffffffffffffffffff168152602001858152602001848152602001838152602001828152602001975050505050505050604051602081830303815290604052805190602001209050611ddf8a828686866128ce565b6001600560008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600087815260200190815260200160002060006101000a81548160ff021916908315150217905550848a73ffffffffffffffffffffffffffffffffffffffff167f98de503528ee59b575ef0c0a2576a82497bfc029a5685b209e9ec333479b10a560405160405180910390a3611e978a8a8a61213a565b50505050505050505050565b60056020528160005260406000206020528060005260406000206000915091509054906101000a900460ff1681565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60001b7ffdde3a7807889787f51ab17062704a0d81341ba7debe5a9773b58a1b5e5f422c60001b7fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660001b611f48610ea9565b30604051602001808681526020018581526020018481526020018381526020018273ffffffffffffffffffffffffffffffffffffffff1681526020019550505050505060405160208183030381529060405280519060200120905090565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b6000828284039150811115612134576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f4d4154483a3a205355425f554e444552464c4f5700000000000000000000000081525060200191505060405180910390fd5b92915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156121c0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e815260200180613408602e913960400191505060405180910390fd5b61221281600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120b790919063ffffffff16565b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506122a781600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461248690919063ffffffff16565b600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b60008082116123cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f4d4154483a3a204449564953494f4e5f42595f5a45524f00000000000000000081525060200191505060405180910390fd5b60008284816123d657fe5b0490508091505092915050565b6000808314156123f65760009050612480565b600082840290508284828161240757fe5b041461247b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f4d4154483a3a204d554c5f4f564552464c4f570000000000000000000000000081525060200191505060405180910390fd5b809150505b92915050565b6000828284019150811015612503576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f4d4154483a3a204144445f4f564552464c4f570000000000000000000000000081525060200191505060405180910390fd5b92915050565b61255b81600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120b790919063ffffffff16565b600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506125b3816000546120b790919063ffffffff16565b600081905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b612638816006546120b790919063ffffffff16565b6006819055506126538260075461248690919063ffffffff16565b6007819055505050565b600060608473ffffffffffffffffffffffffffffffffffffffff166040518060400160405280601981526020017f7472616e7366657228616464726573732c75696e743235362900000000000000815250805190602001208585604051602401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040518082805190602001908083835b602083106127745780518252602082019150602081019050602083039250612751565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146127d6576040519150601f19603f3d011682016040523d82523d6000602084013e6127db565b606091505b509150915081801561281b575060008151148061281a575080806020019051602081101561280857600080fd5b81019080805190602001909291905050505b5b61288d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f506f6f6c3a3a205452414e534645525f4641494c45440000000000000000000081525060200191505060405180910390fd5b5050505050565b6128a98260065461248690919063ffffffff16565b6006819055506128c4816007546120b790919063ffffffff16565b6007819055505050565b60006128d8611ed2565b8560405160200180807f190100000000000000000000000000000000000000000000000000000000000081525060020183815260200182815260200192505050604051602081830303815290604052805190602001209050600060018286868660405160008152602001604052604051808581526020018460ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa15801561298c573d6000803e3d6000fd5b505050602060405103519050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614158015612a0057508673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b612a55576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806134576026913960400191505060405180910390fd5b50505050505050565b600080600160085414612ad9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f506f6f6c3a204c4f434b4544000000000000000000000000000000000000000081525060200191505060405180910390fd5b6000600881905550600073b4467e8d621105312a914f1d42f10770c0ffe3c873ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015612b5e57600080fd5b505afa158015612b72573d6000803e3d6000fd5b505050506040513d6020811015612b8857600080fd5b810190808051906020019092919050505090506000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015612c2657600080fd5b505afa158015612c3a573d6000803e3d6000fd5b505050506040513d6020811015612c5057600080fd5b810190808051906020019092919050505090506000600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050600054612cbd84836123e390919063ffffffff16565b81612cc457fe5b049450600054612cdd83836123e390919063ffffffff16565b81612ce457fe5b049350600085118015612cf75750600084115b612d4c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806134a46024913960400191505060405180910390fd5b612d563082612509565b612d7573b4467e8d621105312a914f1d42f10770c0ffe3c8878761265d565b612da2600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16878661265d565b612e6a73b4467e8d621105312a914f1d42f10770c0ffe3c873ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015612e2057600080fd5b505afa158015612e34573d6000803e3d6000fd5b505050506040513d6020811015612e4a57600080fd5b8101908080519060200190929190505050846120b790919063ffffffff16565b9250612f42600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015612ef857600080fd5b505afa158015612f0c573d6000803e3d6000fd5b505050506040513d6020811015612f2257600080fd5b8101908080519060200190929190505050836120b790919063ffffffff16565b9150612f4e8383613212565b5050506001600881905550915091565b6000806000600754148015612f7557506000600654145b15612f8957858580925081935050506130cb565b6000612f9a87600654600754611573565b90508581116130285783811015613019576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f506f6f6c3a3a20494e53554646494349454e545f425f414d4f554e540000000081525060200191505060405180910390fd5b868180935081945050506130c9565b600061303987600754600654611573565b905087811115801561304b5750858110155b6130bd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f506f6f6c3a3a20494e53554646494349454e545f415f414d4f554e540000000081525060200191505060405180910390fd5b80878094508195505050505b505b94509492505050565b60008060005414156131235761310f6103e86131016130fc85876123e390919063ffffffff16565b61324c565b6120b790919063ffffffff16565b905061311e60006103e86132ae565b61316e565b61316b60065461313e600054866123e390919063ffffffff16565b8161314557fe5b0460075461315e600054866123e390919063ffffffff16565b8161316557fe5b046133c8565b90505b600081116131c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806134c86024913960400191505060405180910390fd5b6131d184826132ae565b9392505050565b6131ed8260065461248690919063ffffffff16565b6006819055506132088160075461248690919063ffffffff16565b6007819055505050565b613227826006546120b790919063ffffffff16565b600681905550613242816007546120b790919063ffffffff16565b6007819055505050565b6000600382111561329b57819050600060016002848161326857fe5b040190505b818110156132955780915060028182858161328457fe5b04018161328d57fe5b04905061326d565b506132a9565b600082146132a857600190505b5b919050565b6132c38160005461248690919063ffffffff16565b60008190555061331b81600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461248690919063ffffffff16565b600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b60008183106133d757816133d9565b825b90509291505056fe464c4153482d414c542d4c5020546f6b656e3a3a20415554485f414c52454144595f55534544464c4153482d414c542d4c5020546f6b656e3a3a2052454345495645525f49535f544f4b454e5f4f525f5a45524f464c4153482d414c542d4c5020546f6b656e3a3a20415554485f45585049524544464c4153482d414c542d4c5020546f6b656e3a3a20494e56414c49445f5349474e4154555245464c4153482d414c542d4c5020546f6b656e3a3a20415554485f4e4f545f5945545f56414c4944506f6f6c3a3a20494e53554646494349454e545f4c49515549444954595f4255524e4544506f6f6c3a3a20494e53554646494349454e545f4c49515549444954595f4d494e544544a2646970667358221220a303fd62f349c50b6d9027293ed3707e0ca21c2a55fdb4ab6e1f684983b562db64736f6c634300060c0033

Verified Source Code Partial Match

Compiler: v0.6.12+commit.27d51765 EVM: istanbul Optimization: No
Pool.sol 546 lines
// SPDX-License-Identifier: MIT


pragma solidity 0.6.12;

// A library for performing overflow-safe math, courtesy of DappHub: https://github.com/dapphub/ds-math/blob/d0ef6d6a5f/src/math.sol
// Modified to include only the essentials
library SafeMath {
    function add(uint256 x, uint256 y) internal pure returns (uint256 z) {
        require((z = x + y) >= x, "MATH:: ADD_OVERFLOW");
    }

    function sub(uint256 x, uint256 y) internal pure returns (uint256 z) {
        require((z = x - y) <= x, "MATH:: SUB_UNDERFLOW");
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
        // benefit is lost if 'b' is also tested.
        // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
        if (a == 0) {
            return 0;
        }

        uint256 c = a * b;
        require(c / a == b, "MATH:: MUL_OVERFLOW");

        return c;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        require(b > 0, "MATH:: DIVISION_BY_ZERO");
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }

    function min(uint x, uint y) internal pure returns (uint z) {
        z = x < y ? x : y;
    }

    // babylonian method (https://en.wikipedia.org/wiki/Methods_of_computing_square_roots#Babylonian_method)
    function sqrt(uint y) internal pure returns (uint z) {
        if (y > 3) {
            z = y;
            uint x = y / 2 + 1;
            while (x < z) {
                z = x;
                x = (y / x + x) / 2;
            }
        } else if (y != 0) {
            z = 1;
        }
    }
}



pragma solidity 0.6.12;

interface IERC20 {
    function totalSupply() external view returns (uint256);

    function balanceOf(address account) external view returns (uint256);

    function allowance(address owner, address spender) external view returns (uint256);

    function approve(address spender, uint256 amount) external returns (bool);

    function transfer(address recipient, uint256 amount) external returns (bool);

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);

    function burn(uint256 value) external returns (bool);
}



pragma solidity 0.6.12;

interface IFlashProtocol {
    function stake(
        uint256 _amountIn,
        uint256 _days,
        address _receiver,
        bytes calldata _data
    )
        external
        returns (
            uint256 mintedAmount,
            uint256 matchedAmount,
            bytes32 id
        );

    function unstake(bytes32 _id)
        external
        returns (uint256 withdrawAmount);

    function getFPY(uint256 _amountIn) external view returns (uint256);
}



pragma solidity 0.6.12;

interface IPool {
    function initialize(address _token) external;

    function stakeWithFeeRewardDistribution(
        uint256 _amountIn,
        address _staker,
        uint256 _expectedOutput
    ) external returns (uint256 result);

    function addLiquidity(
        uint256 _amountFLASH,
        uint256 _amountALT,
        uint256 _amountFLASHMin,
        uint256 _amountALTMin,
        address _maker
    )
        external
        returns (
            uint256,
            uint256,
            uint256
        );

    function removeLiquidity(address _maker) external returns (uint256, uint256);

    function swapWithFeeRewardDistribution(
        uint256 _amountIn,
        address _staker,
        uint256 _expectedOutput
    ) external returns (uint256 result);
}



pragma solidity 0.6.12;



// Lightweight token modelled after UNI-LP:
// https://github.com/Uniswap/uniswap-v2-core/blob/v1.0.1/contracts/UniswapV2ERC20.sol
// Adds:
//   - An exposed `mint()` with minting role
//   - An exposed `burn()`
//   - ERC-3009 (`transferWithAuthorization()`)
//   - flashMint() - allows to flashMint an arbitrary amount of FLASH, with the
//     condition that it is burned before the end of the transaction.
contract PoolERC20 is IERC20 {
    using SafeMath for uint256;

    // bytes32 private constant EIP712DOMAIN_HASH =
    // keccak256("EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)")
    bytes32 private constant EIP712DOMAIN_HASH = 0x8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f;

    // bytes32 private constant NAME_HASH = keccak256("FLASH-ALT-LP Token")
    bytes32 private constant NAME_HASH = 0xfdde3a7807889787f51ab17062704a0d81341ba7debe5a9773b58a1b5e5f422c;

    // bytes32 private constant VERSION_HASH = keccak256("1")
    bytes32 private constant VERSION_HASH = 0xc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6;

    // bytes32 public constant PERMIT_TYPEHASH =
    // keccak256("Permit(address owner,address spender,uint256 value,uint256 nonce,uint256 deadline)");
    bytes32 public constant PERMIT_TYPEHASH = 0x6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9;

    // bytes32 public constant TRANSFER_WITH_AUTHORIZATION_TYPEHASH =
    // keccak256("TransferWithAuthorization(address from,address to,uint256 value,uint256 validAfter,uint256 validBefore,bytes32 nonce)");
    bytes32
        public constant TRANSFER_WITH_AUTHORIZATION_TYPEHASH = 0x7c7c6cdb67a18743f49ec6fa9b35f50d52ed05cbed4cc592e13b44501c1a2267;

    string public constant name = "FLASH-ALT-LP Token";
    string public constant symbol = "FLASH-ALT-LP";
    uint8 public constant decimals = 18;

    uint256 public override totalSupply;

    address public minter;

    mapping(address => uint256) public override balanceOf;
    mapping(address => mapping(address => uint256)) public override allowance;

    // ERC-2612, ERC-3009 state
    mapping(address => uint256) public nonces;
    mapping(address => mapping(bytes32 => bool)) public authorizationState;

    event Approval(address indexed owner, address indexed spender, uint256 value);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event AuthorizationUsed(address indexed authorizer, bytes32 indexed nonce);

    function _validateSignedData(
        address signer,
        bytes32 encodeData,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) internal view {
        bytes32 digest = keccak256(abi.encodePacked("\x19\x01", getDomainSeparator(), encodeData));
        address recoveredAddress = ecrecover(digest, v, r, s);
        // Explicitly disallow authorizations for address(0) as ecrecover returns address(0) on malformed messages
        require(recoveredAddress != address(0) && recoveredAddress == signer, "FLASH-ALT-LP Token:: INVALID_SIGNATURE");
    }

    function _mint(address to, uint256 value) internal {
        totalSupply = totalSupply.add(value);
        balanceOf[to] = balanceOf[to].add(value);
        emit Transfer(address(0), to, value);
    }

    function _burn(address from, uint256 value) internal {
        // Balance is implicitly checked with SafeMath's underflow protection
        balanceOf[from] = balanceOf[from].sub(value);
        totalSupply = totalSupply.sub(value);
        emit Transfer(from, address(0), value);
    }

    function _approve(
        address owner,
        address spender,
        uint256 value
    ) private {
        allowance[owner][spender] = value;
        emit Approval(owner, spender, value);
    }

    function _transfer(
        address from,
        address to,
        uint256 value
    ) private {
        require(to != address(0), "FLASH-ALT-LP Token:: RECEIVER_IS_TOKEN_OR_ZERO");
        // Balance is implicitly checked with SafeMath's underflow protection
        balanceOf[from] = balanceOf[from].sub(value);
        balanceOf[to] = balanceOf[to].add(value);
        emit Transfer(from, to, value);
    }

    function getChainId() public pure returns (uint256 chainId) {
        // solhint-disable-next-line no-inline-assembly
        assembly {
            chainId := chainid()
        }
    }

    function getDomainSeparator() public view returns (bytes32) {
        return keccak256(abi.encode(EIP712DOMAIN_HASH, NAME_HASH, VERSION_HASH, getChainId(), address(this)));
    }

    function burn(uint256 value) external override returns (bool) {
        _burn(msg.sender, value);
        return true;
    }

    function approve(address spender, uint256 value) external override returns (bool) {
        _approve(msg.sender, spender, value);
        return true;
    }

    function transfer(address to, uint256 value) external override returns (bool) {
        _transfer(msg.sender, to, value);
        return true;
    }

    function transferFrom(
        address from,
        address to,
        uint256 value
    ) external override returns (bool) {
        uint256 fromAllowance = allowance[from][msg.sender];
        if (fromAllowance != uint256(-1)) {
            // Allowance is implicitly checked with SafeMath's underflow protection
            allowance[from][msg.sender] = fromAllowance.sub(value);
        }
        _transfer(from, to, value);
        return true;
    }

    function permit(
        address owner,
        address spender,
        uint256 value,
        uint256 deadline,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external {
        require(deadline >= block.timestamp, "FLASH-ALT-LP Token:: AUTH_EXPIRED");

        bytes32 encodeData = keccak256(abi.encode(PERMIT_TYPEHASH, owner, spender, value, nonces[owner], deadline));
        nonces[owner] = nonces[owner].add(1);
        _validateSignedData(owner, encodeData, v, r, s);

        _approve(owner, spender, value);
    }

    function transferWithAuthorization(
        address from,
        address to,
        uint256 value,
        uint256 validAfter,
        uint256 validBefore,
        bytes32 nonce,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external {
        require(block.timestamp > validAfter, "FLASH-ALT-LP Token:: AUTH_NOT_YET_VALID");
        require(block.timestamp < validBefore, "FLASH-ALT-LP Token:: AUTH_EXPIRED");
        require(!authorizationState[from][nonce], "FLASH-ALT-LP Token:: AUTH_ALREADY_USED");

        bytes32 encodeData = keccak256(
            abi.encode(TRANSFER_WITH_AUTHORIZATION_TYPEHASH, from, to, value, validAfter, validBefore, nonce)
        );
        _validateSignedData(from, encodeData, v, r, s);

        authorizationState[from][nonce] = true;
        emit AuthorizationUsed(from, nonce);

        _transfer(from, to, value);
    }
}



pragma solidity 0.6.12;






contract Pool is PoolERC20, IPool {
    using SafeMath for uint256;

    uint256 public constant MINIMUM_LIQUIDITY = 10**3;
    bytes4 private constant TRANSFER_SELECTOR = bytes4(keccak256(bytes("transfer(address,uint256)")));
    address public constant FLASH_TOKEN = 0xB4467E8D621105312a914F1D42f10770C0Ffe3c8;
    address public constant FLASH_PROTOCOL = 0xEc02f813404656E2A2AEd5BaeEd41D785324E8D0;

    uint256 public reserveFlashAmount;
    uint256 public reserveAltAmount;
    uint256 private unlocked = 1;

    address public token;
    address public factory;

    modifier lock() {
        require(unlocked == 1, "Pool: LOCKED");
        unlocked = 0;
        _;
        unlocked = 1;
    }

    modifier onlyFactory() {
        require(msg.sender == factory, "Pool:: ONLY_FACTORY");
        _;
    }

    constructor() public {
        factory = msg.sender;
    }

    function _safeTransfer(
        address _token,
        address _to,
        uint256 _value
    ) private {
        (bool success, bytes memory data) = _token.call(abi.encodeWithSelector(TRANSFER_SELECTOR, _to, _value));
        require(success && (data.length == 0 || abi.decode(data, (bool))), "Pool:: TRANSFER_FAILED");
    }

    function initialize(address _token) public override onlyFactory {
        token = _token;
    }

    function swapWithFeeRewardDistribution(
        uint256 _amountIn,
        address _staker,
        uint256 _expectedOutput
    ) public override lock onlyFactory returns (uint256 result) {
        result = getAPYSwap(_amountIn);
        require(_expectedOutput <= result, "Pool:: EXPECTED_IS_GREATER");
        calcNewReserveSwap(_amountIn, result);
        _safeTransfer(FLASH_TOKEN, _staker, result);
    }

    function stakeWithFeeRewardDistribution(
        uint256 _amountIn,
        address _staker,
        uint256 _expectedOutput
    ) public override lock onlyFactory returns (uint256 result) {
        result = getAPYStake(_amountIn);
        require(_expectedOutput <= result, "Pool:: EXPECTED_IS_GREATER");
        calcNewReserveStake(_amountIn, result);
        _safeTransfer(token, _staker, result);
    }

    function addLiquidity(
        uint256 _amountFLASH,
        uint256 _amountALT,
        uint256 _amountFLASHMin,
        uint256 _amountALTMin,
        address _maker
    )
        public
        override
        onlyFactory
        returns (
            uint256 amountFLASH,
            uint256 amountALT,
            uint256 liquidity
        )
    {
        (amountFLASH, amountALT) = _addLiquidity(_amountFLASH, _amountALT, _amountFLASHMin, _amountALTMin);
        liquidity = mintLiquidityTokens(_maker, amountFLASH, amountALT);
        calcNewReserveAddLiquidity(amountFLASH, amountALT);
    }

    function removeLiquidity(address _maker)
        public
        override
        onlyFactory
        returns (uint256 amountFLASH, uint256 amountALT)
    {
        (amountFLASH, amountALT) = burn(_maker);
    }

    function getAPYStake(uint256 _amountIn) public view returns (uint256 result) {
        uint256 amountInWithFee = _amountIn.mul(getLPFee());
        uint256 num = amountInWithFee.mul(reserveAltAmount);
        uint256 den = (reserveFlashAmount.mul(1000)).add(amountInWithFee);
        result = num.div(den);
    }

    function getAPYSwap(uint256 _amountIn) public view returns (uint256 result) {
        uint256 amountInWithFee = _amountIn.mul(getLPFee());
        uint256 num = amountInWithFee.mul(reserveFlashAmount);
        uint256 den = (reserveAltAmount.mul(1000)).add(amountInWithFee);
        result = num.div(den);
    }

    function getLPFee() public view returns (uint256) {
        uint256 fpy = IFlashProtocol(FLASH_PROTOCOL).getFPY(0);
        return uint256(1000).sub(fpy.div(5e15));
    }

    function quote(
        uint256 _amountA,
        uint256 _reserveA,
        uint256 _reserveB
    ) public pure returns (uint256 amountB) {
        require(_amountA > 0, "Pool:: INSUFFICIENT_AMOUNT");
        require(_reserveA > 0 && _reserveB > 0, "Pool:: INSUFFICIENT_LIQUIDITY");
        amountB = _amountA.mul(_reserveB).div(_reserveA);
    }

    function burn(address to) private lock returns (uint256 amountFLASH, uint256 amountALT) {
        uint256 balanceFLASH = IERC20(FLASH_TOKEN).balanceOf(address(this));
        uint256 balanceALT = IERC20(token).balanceOf(address(this));
        uint256 liquidity = balanceOf[address(this)];

        amountFLASH = liquidity.mul(balanceFLASH) / totalSupply;
        amountALT = liquidity.mul(balanceALT) / totalSupply;

        require(amountFLASH > 0 && amountALT > 0, "Pool:: INSUFFICIENT_LIQUIDITY_BURNED");

        _burn(address(this), liquidity);

        _safeTransfer(FLASH_TOKEN, to, amountFLASH);
        _safeTransfer(token, to, amountALT);

        balanceFLASH = balanceFLASH.sub(IERC20(FLASH_TOKEN).balanceOf(address(this)));
        balanceALT = balanceALT.sub(IERC20(token).balanceOf(address(this)));

        calcNewReserveRemoveLiquidity(balanceFLASH, balanceALT);
    }

    function _addLiquidity(
        uint256 _amountFLASH,
        uint256 _amountALT,
        uint256 _amountFLASHMin,
        uint256 _amountALTMin
    ) private view returns (uint256 amountFLASH, uint256 amountALT) {
        if (reserveAltAmount == 0 && reserveFlashAmount == 0) {
            (amountFLASH, amountALT) = (_amountFLASH, _amountALT);
        } else {
            uint256 amountALTQuote = quote(_amountFLASH, reserveFlashAmount, reserveAltAmount);
            if (amountALTQuote <= _amountALT) {
                require(amountALTQuote >= _amountALTMin, "Pool:: INSUFFICIENT_B_AMOUNT");
                (amountFLASH, amountALT) = (_amountFLASH, amountALTQuote);
            } else {
                uint256 amountFLASHQuote = quote(_amountALT, reserveAltAmount, reserveFlashAmount);
                require(
                    (amountFLASHQuote <= _amountFLASH) && (amountFLASHQuote >= _amountFLASHMin),
                    "Pool:: INSUFFICIENT_A_AMOUNT"
                );
                (amountFLASH, amountALT) = (amountFLASHQuote, _amountALT);
            }
        }
    }

    function mintLiquidityTokens(
        address _to,
        uint256 _flashAmount,
        uint256 _altAmount
    ) private returns (uint256 liquidity) {
        if (totalSupply == 0) {
            liquidity = SafeMath.sqrt(_flashAmount.mul(_altAmount)).sub(MINIMUM_LIQUIDITY);
            _mint(address(0), MINIMUM_LIQUIDITY);
        } else {
            liquidity = SafeMath.min(
                _flashAmount.mul(totalSupply) / reserveFlashAmount,
                _altAmount.mul(totalSupply) / reserveAltAmount
            );
        }
        require(liquidity > 0, "Pool:: INSUFFICIENT_LIQUIDITY_MINTED");
        _mint(_to, liquidity);
    }

    function calcNewReserveStake(uint256 _amountIn, uint256 _amountOut) private {
        reserveFlashAmount = reserveFlashAmount.add(_amountIn);
        reserveAltAmount = reserveAltAmount.sub(_amountOut);
    }

    function calcNewReserveSwap(uint256 _amountIn, uint256 _amountOut) private {
        reserveFlashAmount = reserveFlashAmount.sub(_amountOut);
        reserveAltAmount = reserveAltAmount.add(_amountIn);
    }

    function calcNewReserveAddLiquidity(uint256 _amountFLASH, uint256 _amountALT) private {
        reserveFlashAmount = reserveFlashAmount.add(_amountFLASH);
        reserveAltAmount = reserveAltAmount.add(_amountALT);
    }

    function calcNewReserveRemoveLiquidity(uint256 _amountFLASH, uint256 _amountALT) private {
        reserveFlashAmount = reserveFlashAmount.sub(_amountFLASH);
        reserveAltAmount = reserveAltAmount.sub(_amountALT);
    }
}

Read Contract

FLASH_PROTOCOL 0xa7f0e903 → address
FLASH_TOKEN 0x23c6e14c → address
MINIMUM_LIQUIDITY 0xba9a7a56 → uint256
PERMIT_TYPEHASH 0x30adf81f → bytes32
TRANSFER_WITH_AUTHORIZATION_TYPEHASH 0xa0cc6a68 → bytes32
allowance 0xdd62ed3e → uint256
authorizationState 0xe94a0102 → bool
balanceOf 0x70a08231 → uint256
decimals 0x313ce567 → uint8
factory 0xc45a0155 → address
getAPYStake 0x41154270 → uint256
getAPYSwap 0xa10adb17 → uint256
getChainId 0x3408e470 → uint256
getDomainSeparator 0xed24911d → bytes32
getLPFee 0x3750a8bd → uint256
minter 0x07546172 → address
name 0x06fdde03 → string
nonces 0x7ecebe00 → uint256
quote 0xad615dec → uint256
reserveAltAmount 0xc0bd9f16 → uint256
reserveFlashAmount 0x4d861ece → uint256
symbol 0x95d89b41 → string
token 0xfc0c546a → address
totalSupply 0x18160ddd → uint256

Write Contract 11 functions

These functions modify contract state and require a wallet transaction to execute.

addLiquidity 0xe0ab0772
uint256 _amountFLASH
uint256 _amountALT
uint256 _amountFLASHMin
uint256 _amountALTMin
address _maker
returns: uint256, uint256, uint256
approve 0x095ea7b3
address spender
uint256 value
returns: bool
burn 0x42966c68
uint256 value
returns: bool
initialize 0xc4d66de8
address _token
permit 0xd505accf
address owner
address spender
uint256 value
uint256 deadline
uint8 v
bytes32 r
bytes32 s
removeLiquidity 0xd798f86e
address _maker
returns: uint256, uint256
stakeWithFeeRewardDistribution 0x687fbed8
uint256 _amountIn
address _staker
uint256 _expectedOutput
returns: uint256
swapWithFeeRewardDistribution 0x50b814a0
uint256 _amountIn
address _staker
uint256 _expectedOutput
returns: uint256
transfer 0xa9059cbb
address to
uint256 value
returns: bool
transferFrom 0x23b872dd
address from
address to
uint256 value
returns: bool
transferWithAuthorization 0xe3ee160e
address from
address to
uint256 value
uint256 validAfter
uint256 validBefore
bytes32 nonce
uint8 v
bytes32 r
bytes32 s

Recent Transactions

No transactions found for this address