Address Contract Verified
Address
0x6130F3a221e90a6CeBD9A3d4469864F82949EFE8
Balance
0 ETH
Nonce
1
Code Size
11195 bytes
Creator
0xd629856f...629B at tx 0xb5b4d4a1...9ea293
Indexed Transactions
0
Contract Bytecode
11195 bytes
0x6080604052600436106102cd5760003560e01c8063715018a611610175578063b28805f4116100dc578063d5abeb0111610095578063e2f456051161006f578063e2f456051461085d578063f2fde38b14610873578063f38cb16414610893578063f74ea717146108b357600080fd5b8063d5abeb01146107d4578063dc01f60d146107ea578063dd62ed3e1461081757600080fd5b8063b28805f41461073e578063b5d9481e1461075e578063b7c355df14610774578063bed9985014610794578063c4b1363e146107a9578063ca0dcf16146107bf57600080fd5b80638cf57cb91161012e5780638cf57cb9146106955780638da5cb5b146106b55780638fe6cae3146106d357806395d89b41146106e9578063a9059cbb146106fe578063afa4f3b21461071e57600080fd5b8063715018a61461060057806371e9a8b214610615578063751039fc1461062b57806378dacee11461064057806381b3fa07146106605780638b2999031461067f57600080fd5b80633b8186ef11610234578063627a91d9116101ed57806366a88d96116101c757806366a88d961461058557806366eccd511461059b578063695d3a92146105b157806370a08231146105d357600080fd5b8063627a91d91461052d5780636436d62e1461055a578063644d53731461057057600080fd5b80633b8186ef146104695780633bbfe0151461049d578063405777a1146104b35780635811cf6c146104d35780635b7c8210146104f35780635e00e6791461050d57600080fd5b806323b872dd1161028657806323b872dd146103b05780632aed66c3146103d05780632f8e046d146103e5578063313ce5671461041d5780633330828114610433578063372500ab1461045257600080fd5b806306fdde03146102d9578063095ea7b3146103045780630b3b3b4c1461033457806316eee3ff1461036f57806318160ddd14610385578063210364d11461039a57600080fd5b366102d457005b600080fd5b3480156102e557600080fd5b506102ee6108e9565b6040516102fb91906125fc565b60405180910390f35b34801561031057600080fd5b5061032461031f36600461265f565b610977565b60405190151581526020016102fb565b34801561034057600080fd5b5061036161034f36600461268b565b60086020526000908152604090205481565b6040519081526020016102fb565b34801561037b57600080fd5b5061036160d75481565b34801561039157600080fd5b5060d554610361565b3480156103a657600080fd5b5061036160da5481565b3480156103bc57600080fd5b506103246103cb3660046126a8565b61098f565b3480156103dc57600080fd5b5060e054610361565b3480156103f157600080fd5b5060d354610405906001600160a01b031681565b6040516001600160a01b0390911681526020016102fb565b34801561042957600080fd5b5061036160e15481565b34801561043f57600080fd5b5060e9546301000000900460ff16610324565b34801561045e57600080fd5b506104676109e2565b005b34801561047557600080fd5b506104057f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b3480156104a957600080fd5b5061036160de5481565b3480156104bf57600080fd5b506103246104ce3660046126e9565b610b37565b3480156104df57600080fd5b506103246104ee3660046126e9565b610c6c565b3480156104ff57600080fd5b506003546103249060ff1681565b34801561051957600080fd5b5061032461052836600461268b565b610d78565b34801561053957600080fd5b5061036161054836600461268b565b60056020526000908152604090205481565b34801561056657600080fd5b5061036160dd5481565b34801561057c57600080fd5b5060e454610361565b34801561059157600080fd5b5061036160e85481565b3480156105a757600080fd5b5061036160e05481565b3480156105bd57600080fd5b506105c6610e35565b6040516102fb919061275e565b3480156105df57600080fd5b506103616105ee36600461268b565b60046020526000908152604090205481565b34801561060c57600080fd5b50610467610e7b565b34801561062157600080fd5b5061036160dc5481565b34801561063757600080fd5b50610467610e8f565b34801561064c57600080fd5b5061046761065b366004612799565b610ea3565b34801561066c57600080fd5b5060e95461032490610100900460ff1681565b34801561068b57600080fd5b5061036160d65481565b3480156106a157600080fd5b50600954610405906001600160a01b031681565b3480156106c157600080fd5b506000546001600160a01b0316610405565b3480156106df57600080fd5b5061036160e35481565b3480156106f557600080fd5b506102ee610ed7565b34801561070a57600080fd5b5061032461071936600461265f565b610ee4565b34801561072a57600080fd5b50610467610739366004612799565b610ef2565b34801561074a57600080fd5b50610467610759366004612799565b610f18565b34801561076a57600080fd5b5061036160db5481565b34801561078057600080fd5b5060d254610405906001600160a01b031681565b3480156107a057600080fd5b5060d954610361565b3480156107b557600080fd5b5061036160df5481565b3480156107cb57600080fd5b5060d854610361565b3480156107e057600080fd5b5061036160e25481565b3480156107f657600080fd5b5061036161080536600461268b565b60076020526000908152604090205481565b34801561082357600080fd5b506103616108323660046127b2565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205490565b34801561086957600080fd5b5061036160e75481565b34801561087f57600080fd5b5061046761088e36600461268b565b6110e0565b34801561089f57600080fd5b506103246108ae366004612823565b611156565b3480156108bf57600080fd5b506103616108ce36600461268b565b6001600160a01b031660009081526005602052604090205490565b600180546108f6906128de565b80601f0160208091040260200160405190810160405280929190818152602001828054610922906128de565b801561096f5780601f106109445761010080835404028352916020019161096f565b820191906000526020600020905b81548152906001019060200180831161095257829003601f168201915b505050505081565b60003361098581858561132b565b9150505b92915050565b6001600160a01b03831660009081526006602090815260408083203384529091528120805483919083906109c490849061292e565b909155506109d59050848484611394565b50600190505b9392505050565b3360009081526007602052604090205480610a325760405162461bcd60e51b815260206004820152600b60248201526a1e995c9bc81c995dd85c9960aa1b60448201526064015b60405180910390fd5b6009546001600160a01b0316600090815260046020526040812054610a5890839061292e565b1115610b34576009546001600160a01b031660009081526004602052604081208054839290610a8890849061292e565b90915550503360009081526004602052604081208054839290610aac908490612941565b9091555050336000908152600760209081526040808320839055600890915281208054839290610add908490612941565b9091555050600980546001600160a01b039081166000908152600560205260409081902042905591549151339290911690600080516020612b6683398151915290610b2b9085815260200190565b60405180910390a35b50565b600081610b745760405162461bcd60e51b815260206004820152600b60248201526a456d70747920617272617960a81b6044820152606401610a29565b8160005b81811015610c61576000858583818110610b9457610b94612954565b9050602002016020810190610ba9919061268b565b90506001600160a01b03811615801590610bc35750803b15155b15610c58576001600160a01b0381166000908152600560205260409020548015801590610bfb5750610bf8816213c680612941565b42115b15610c565760d2546001600160a01b03838116911614610c56576001600160a01b038216600090815260046020526040902054610c39908390611a42565b506001600160a01b03821660009081526005602052604090204290555b505b50600101610b78565b506001949350505050565b600081610ca75760405162461bcd60e51b815260206004820152600960248201526832b6b83a3c9030b93960b91b6044820152606401610a29565b8160005b81811015610c61576000858583818110610cc757610cc7612954565b9050602002016020810190610cdc919061268b565b90506001600160a01b03811615801590610cf55750803b155b15610d6f576001600160a01b0381166000908152600560205260409020548015801590610d2d5750610d2a816213c680612941565b42115b15610d6d576009546001600160a01b03838116911614610d6d576001600160a01b038216600090815260046020526040902054610d6b908390611a42565b505b505b50600101610cab565b6000610d82611ae7565b33610d9f5760405162461bcd60e51b8152600401610a299061296a565b6001600160a01b038216610dc55760405162461bcd60e51b8152600401610a299061296a565b6009546001600160a01b03163314610e105760405162461bcd60e51b815260206004820152600e60248201526d139bdd08185d5d1a1bdc9a5e995960921b6044820152606401610a29565b50600980546001600160a01b0383166001600160a01b03199091161790556001919050565b610e3d6125dd565b6040805161190081019182905290600a9060c89082845b81546001600160a01b03168152600190910190602001808311610e54575050505050905090565b610e83611ae7565b610e8d6000611b41565b565b610e97611ae7565b60e9805460ff19169055565b610eab611ae7565b61271060e154600a610ebd9190612a79565b610ec79083612a85565b610ed19190612a9c565b60db5550565b600280546108f6906128de565b600033610c61818585611394565b610efa611ae7565b60e154610f0890600a612a79565b610f129082612a85565b60e75550565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110610f4d57610f4d612954565b60200260200101906001600160a01b031690816001600160a01b0316815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610fcb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fef9190612abe565b8160018151811061100257611002612954565b60200260200101906001600160a01b031690816001600160a01b03168152505061104d307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d8461132b565b5060d45460405163791ac94760e01b81526001600160a01b037f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81169263791ac947926110aa928792600092889291909116904290600401612adb565b600060405180830381600087803b1580156110c457600080fd5b505af11580156110d8573d6000803e3d6000fd5b505050505050565b6110e8611ae7565b6001600160a01b03811661114d5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610a29565b610b3481611b41565b6000611160611ae7565b3361117d5760405162461bcd60e51b8152600401610a299061296a565b60005b6101038110156113215760008482610103811061119f5761119f612954565b60200201516001600160a01b03161461130f57828161010381106111c5576111c5612954565b602002015160046000336001600160a01b03166001600160a01b0316815260200190815260200160002060008282546111fe919061292e565b9091555083905081610103811061121757611217612954565b6020020151600460008684610103811061123357611233612954565b60200201516001600160a01b03166001600160a01b0316815260200190815260200160002060008282546112679190612941565b90915550429050600560008684610103811061128557611285612954565b60200201516001600160a01b03166001600160a01b0316815260200190815260200160002081905550838161010381106112c1576112c1612954565b60200201516001600160a01b031633600080516020612b66833981519152858461010381106112f2576112f2612954565b602002015160405161130691815260200190565b60405180910390a35b8061131981612b4c565b915050611180565b5060019392505050565b6001600160a01b03838116600081815260066020908152604080832094871680845294825280832086905551858152919392917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a35060019392505050565b6000816000036113e65760405162461bcd60e51b815260206004820152601e60248201527f4e6f207a65726f2076616c7565207472616e7366657220616c6c6f77656400006044820152606401610a29565b6001600160a01b03831661142e5760405162461bcd60e51b815260206004820152600f60248201526e496e76616c6964204164647265737360881b6044820152606401610a29565b60e95460ff1615611501576009546001600160a01b0385811691161480159061146557506009546001600160a01b03848116911614155b801561147a575060e95462010000900460ff16155b8015611493575060d2546001600160a01b038581169116145b156115015760e8546001600160a01b0384166000908152600460205260409020546114be9084612941565b11156115015760405162461bcd60e51b81526020600482015260126024820152711b585e080c8948189d5e48185b1b1bddd95960721b6044820152606401610a29565b60e95462010000900460ff16156115245761151d848484611b91565b90506109db565b3060009081526004602052604090205460e75481108015908190611551575060e95462010000900460ff16155b801561156a575060d2546001600160a01b038681169116145b801561157f57506001600160a01b0386163014155b801561159457506001600160a01b0385163014155b80156115ab575060d2546001600160a01b03163314155b156115d65760e9805462ff00001916620100001790556115c9611c22565b60e9805462ff0000191690555b60e4546115e490603c612941565b4211156116e65760e25460d55410611690576003805460ff1916600117905561160b611cc6565b5060e954610100900460ff1661168b57600060e25460d55461162d919061292e565b9050600061163c826002612a85565b6009546001600160a01b0316600090815260046020526040902054611661919061292e565b111561168957600954611687906001600160a01b0316611682836002612a85565b611a42565b505b505b6116e6565b60e35460d554116116e6576003805460ff191690556116ad611cc6565b50600060d55460e3546116c0919061292e565b6009549091506116e3906001600160a01b03166116de836002612a85565b611e0b565b50505b60dc546000036116fa576116f8611ea3565b505b60035460ff161561196e5760006117138560d954612175565b905060006117238660da54612175565b905060006117338760db54612175565b905060008183611743868b61292e565b61174d919061292e565b611757919061292e565b90506117638a85611a42565b506001600160a01b038a166000908152600460205260408120805483929061178c90849061292e565b90915550506001600160a01b038916600090815260046020526040812080548392906117b9908490612941565b92505081905550886001600160a01b03168a6001600160a01b0316600080516020612b66833981519152836040516117f391815260200190565b60405180910390a36001600160a01b038a166000908152600460205260408120805484929061182390849061292e565b90915550503060009081526004602052604081208054849290611847908490612941565b909155505060405182815230906001600160a01b038c1690600080516020612b668339815191529060200160405180910390a3600061188a60d55460df54612175565b6009546001600160a01b0316600090815260046020526040902054909150811061193e576001600160a01b038b16600090815260046020526040812080548692906118d690849061292e565b90915550506009546001600160a01b031660009081526004602052604081208054869290611905908490612941565b90915550506009546040518581526001600160a01b03918216918d1690600080516020612b668339815191529060200160405180910390a35b600160d760008282546119519190612941565b90915550611963905089328d8d61219a565b505050505050611a07565b60035460ff166119cb5760006119868560d854612175565b905060006119968660da54612175565b905060006119a68760db54612175565b90506000816119b5848a61292e565b6119bf919061292e565b90506117633285611e0b565b60405162461bcd60e51b81526020600482015260116024820152704572726f7220617420545820426c6f636b60781b6044820152606401610a29565b50503260009081526005602052604080822042908190556001600160a01b038781168452828420829055861683529120555060019392505050565b60006001600160a01b038316611a6a5760405162461bcd60e51b8152600401610a299061296a565b8160d56000828254611a7c919061292e565b90915550506001600160a01b03831660009081526004602052604081208054849290611aa990849061292e565b90915550506040518281526000906001600160a01b03851690600080516020612b66833981519152906020015b60405180910390a350600192915050565b6000546001600160a01b03163314610e8d5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610a29565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b038316600090815260046020526040812080548391908390611bbb90849061292e565b90915550506001600160a01b03831660009081526004602052604081208054849290611be8908490612941565b92505081905550826001600160a01b0316846001600160a01b0316600080516020612b668339815191528460405161138291815260200190565b3060009081526004602052604081205490818103611c3e575050565b60e754611c4c906014612a85565b821115611c645760e754611c61906014612a85565b91505b611c6d82610f18565b60d4546040516001600160a01b03909116904790600081818185875af1925050503d8060008114611cba576040519150601f19603f3d011682016040523d82523d6000602084013e611cbf565b606091505b5050505050565b6000600160d66000828254611cdb9190612941565b909155505060d6546001148015611cfa575060e954610100900460ff16155b15611d9357600060e154600a611d109190612a79565b9050612710611d20826032612a85565b611d2a9190612a9c565b60d855612710611d3b826032612a85565b611d459190612a9c565b60d855612710611d56826064612a85565b611d609190612a9c565b60da55612710611d718260fa612a85565b611d7b9190612a9c565b60db555060e9805463ff000000191663010000001790555b600260d65410158015611da95750601c60d65411155b15611dcf57611db66123ee565b5060e9805463ff00000019166301000000179055611e01565b601d60d65410158015611de55750603860d65411155b15611e0157611df261242b565b5060e9805463ff000000191690555b504260e455600190565b60006001600160a01b038316611e335760405162461bcd60e51b8152600401610a299061296a565b8160d56000828254611e459190612941565b90915550506001600160a01b03831660009081526004602052604081208054849290611e72908490612941565b90915550506040518281526001600160a01b03841690600090600080516020612b6683398151915290602001611ad6565b60035460009060ff1615611f4b57600a60d954611ec09190612a9c565b60d96000828254611ed19190612941565b909155505060d854611ee590600a90612a9c565b60d86000828254611ef69190612941565b909155505060da54611f0a90600a90612a9c565b60da6000828254611f1b9190612941565b909155505060db54611f2f90600a90612a9c565b60db6000828254611f409190612941565b90915550611fe09050565b600a60d954611f5a9190612a9c565b60d96000828254611f6b919061292e565b909155505060d854611f7f90600a90612a9c565b60d86000828254611f909190612941565b909155505060da54611fa490600a90612a9c565b60da6000828254611fb5919061292e565b909155505060db54611fc990600a90612a9c565b60db6000828254611fda919061292e565b90915550505b60de54611fee906006612a85565b60d954111561201c5760de54612005906002612a85565b60d96000828254612016919061292e565b90915550505b60de5461202a906006612a85565b60d85411156120585760de54612041906002612a85565b60d86000828254612052919061292e565b90915550505b60de54612066906003612a85565b60da5411156120895760de5460da6000828254612083919061292e565b90915550505b60de54612097906003612a85565b60db5411156120ba5760de5460db60008282546120b4919061292e565b90915550505b60de5460d95410806120cf575060de5460d854105b806120e95750600260de546120e49190612a9c565b60da54105b1561216f57600060e154600a6120ff9190612a79565b905061271061210f826032612a85565b6121199190612a9c565b60d85561271061212a826032612a85565b6121349190612a9c565b60d955612710612145826064612a85565b61214f9190612a9c565b60da556127106121608260fa612a85565b61216a9190612a9c565b60db55505b50600190565b600060e154600a6121869190612a79565b6121908385612a85565b6109db9190612a9c565b6009546001600160a01b031660009081526004602052604081205460e0546121c29190612175565b60dd81905585108015906121de57506001600160a01b03841615155b15610c6157833b6122095760d380546001600160a01b0319166001600160a01b03861617905561224c565b823b156122305760d380546001600160a01b0319166001600160a01b03841617905561224c565b60d380546001600160a01b0319166001600160a01b0385161790555b60e954610100900460ff161561234e5760c760dc5410156122cf5760d35460dc546001600160a01b0390911690600a9060c8811061228c5761228c612954565b0160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550600160dc60008282546122c49190612941565b90915550610c619050565b60dc5460c7036123495760e9805461ff001916905560d35460dc546001600160a01b0390911690600a9060c8811061230957612309612954565b0180546001600160a01b0319166001600160a01b0392909216919091179055600060dc5561233561248f565b50600160dc60008282546122c49190612941565b610c61565b60c760dc5410156123875761236161248f565b5060d35460dc546001600160a01b0390911690600a9060c8811061228c5761228c612954565b60dc5460c703610c615761239961248f565b5060d35460dc546001600160a01b0390911690600a9060c881106123bf576123bf612954565b0180546001600160a01b0319166001600160a01b0392909216919091179055600060dc55506001949350505050565b60035460009060ff161561241357600260e35461240b9190612a9c565b60e35561216f565b600260e2546124229190612a9c565b60e25550600190565b60035460009060ff161561244f5760e354612447906002612a85565b60e355612461565b60e25461245d906002612a85565b60e2555b60d65460380361216f5760e55460e25560e65460e355600060d65560e9805463ff0000001916905550600190565b6009546001600160a01b031660009081526004602052604081205460de5482916124b891612175565b6009546001600160a01b031660009081526004602052604081205491925090821061250b576009546001600160a01b03166000908152600460205260409020546125049060fa90612a9c565b9050612588565b612516826002612a85565b6009546001600160a01b0316600090815260046020526040902054111561255e576009546001600160a01b03166000908152600460205260409020546125049060b490612a9c565b6009546001600160a01b03166000908152600460205260409020546125859060dc90612a9c565b90505b8060076000600a60dc5460c881106125a2576125a2612954565b01546001600160a01b031681526020810191909152604001600090812080549091906125cf908490612941565b909155506001949350505050565b60405180611900016040528060c8906020820280368337509192915050565b600060208083528351808285015260005b818110156126295785810183015185820160400152820161260d565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610b3457600080fd5b6000806040838503121561267257600080fd5b823561267d8161264a565b946020939093013593505050565b60006020828403121561269d57600080fd5b81356109db8161264a565b6000806000606084860312156126bd57600080fd5b83356126c88161264a565b925060208401356126d88161264a565b929592945050506040919091013590565b600080602083850312156126fc57600080fd5b823567ffffffffffffffff8082111561271457600080fd5b818501915085601f83011261272857600080fd5b81358181111561273757600080fd5b8660208260051b850101111561274c57600080fd5b60209290920196919550909350505050565b6119008101818360005b60c88110156127905781516001600160a01b0316835260209283019290910190600101612768565b50505092915050565b6000602082840312156127ab57600080fd5b5035919050565b600080604083850312156127c557600080fd5b82356127d08161264a565b915060208301356127e08161264a565b809150509250929050565b604051612060810167ffffffffffffffff8111828210171561281d57634e487b7160e01b600052604160045260246000fd5b60405290565b6000806140c080848603121561283857600080fd5b84601f85011261284757600080fd5b61284f6127eb565b8061206086018781111561286257600080fd5b865b818110156128855780356128778161264a565b845260209384019301612864565b508195508761207f88011261289957600080fd5b6128a16127eb565b938701939250829150878411156128b757600080fd5b5b838110156128d05780358352602092830192016128b8565b508093505050509250929050565b600181811c908216806128f257607f821691505b60208210810361291257634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b8181038181111561098957610989612918565b8082018082111561098957610989612918565b634e487b7160e01b600052603260045260246000fd5b6020808252600f908201526e496e76616c6964206164647265737360881b604082015260600190565b600181600019825b808611156129cf578282048311156129b5576129b5612918565b808616156129c257928202925b94851c949180029161299b565b50509250929050565b6000826129e757506001610989565b816129f457506000610989565b8160018114612a0a5760028114612a1457612a30565b6001915050610989565b60ff841115612a2557612a25612918565b50506001821b610989565b5060208310610133831016604e8410600b8410161715612a53575081810a610989565b612a5d8383612993565b8060001904821115612a7157612a71612918565b029392505050565b60006109db83836129d8565b808202811582820484141761098957610989612918565b600082612ab957634e487b7160e01b600052601260045260246000fd5b500490565b600060208284031215612ad057600080fd5b81516109db8161264a565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015612b2b5784516001600160a01b031683529383019391830191600101612b06565b50506001600160a01b03969096166060850152505050608001529392505050565b600060018201612b5e57612b5e612918565b506001019056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220c95df3f913e8905a4ddf64f7e3b4ae940770c0c9eec464598794b9ff9ced910864736f6c63430008140033
Verified Source Code Full Match
Compiler: v0.8.20+commit.a1b79de6
EVM: paris
Optimization: Yes (200 runs)
Ownable.sol 83 lines
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.9.0) (access/Ownable.sol)
pragma solidity ^0.8.0;
import "../utils/Context.sol";
/**
* @dev Contract module which provides a basic access control mechanism, where
* there is an account (an owner) that can be granted exclusive access to
* specific functions.
*
* By default, the owner account will be the one that deploys the contract. This
* can later be changed with {transferOwnership}.
*
* This module is used through inheritance. It will make available the modifier
* `onlyOwner`, which can be applied to your functions to restrict their use to
* the owner.
*/
abstract contract Ownable is Context {
address private _owner;
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
/**
* @dev Initializes the contract setting the deployer as the initial owner.
*/
constructor() {
_transferOwnership(_msgSender());
}
/**
* @dev Throws if called by any account other than the owner.
*/
modifier onlyOwner() {
_checkOwner();
_;
}
/**
* @dev Returns the address of the current owner.
*/
function owner() public view virtual returns (address) {
return _owner;
}
/**
* @dev Throws if the sender is not the owner.
*/
function _checkOwner() internal view virtual {
require(owner() == _msgSender(), "Ownable: caller is not the owner");
}
/**
* @dev Leaves the contract without owner. It will not be possible to call
* `onlyOwner` functions. Can only be called by the current owner.
*
* NOTE: Renouncing ownership will leave the contract without an owner,
* thereby disabling any functionality that is only available to the owner.
*/
function renounceOwnership() public virtual onlyOwner {
_transferOwnership(address(0));
}
/**
* @dev Transfers ownership of the contract to a new account (`newOwner`).
* Can only be called by the current owner.
*/
function transferOwnership(address newOwner) public virtual onlyOwner {
require(newOwner != address(0), "Ownable: new owner is the zero address");
_transferOwnership(newOwner);
}
/**
* @dev Transfers ownership of the contract to a new account (`newOwner`).
* Internal function without access restriction.
*/
function _transferOwnership(address newOwner) internal virtual {
address oldOwner = _owner;
_owner = newOwner;
emit OwnershipTransferred(oldOwner, newOwner);
}
}
IERC20.sol 6 lines
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts v4.4.1 (interfaces/IERC20.sol) pragma solidity ^0.8.0; import "../token/ERC20/IERC20.sol";
IERC20.sol 78 lines
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.9.0) (token/ERC20/IERC20.sol)
pragma solidity ^0.8.0;
/**
* @dev Interface of the ERC20 standard as defined in the EIP.
*/
interface IERC20 {
/**
* @dev Emitted when `value` tokens are moved from one account (`from`) to
* another (`to`).
*
* Note that `value` may be zero.
*/
event Transfer(address indexed from, address indexed to, uint256 value);
/**
* @dev Emitted when the allowance of a `spender` for an `owner` is set by
* a call to {approve}. `value` is the new allowance.
*/
event Approval(address indexed owner, address indexed spender, uint256 value);
/**
* @dev Returns the amount of tokens in existence.
*/
function totalSupply() external view returns (uint256);
/**
* @dev Returns the amount of tokens owned by `account`.
*/
function balanceOf(address account) external view returns (uint256);
/**
* @dev Moves `amount` tokens from the caller's account to `to`.
*
* Returns a boolean value indicating whether the operation succeeded.
*
* Emits a {Transfer} event.
*/
function transfer(address to, uint256 amount) external returns (bool);
/**
* @dev Returns the remaining number of tokens that `spender` will be
* allowed to spend on behalf of `owner` through {transferFrom}. This is
* zero by default.
*
* This value changes when {approve} or {transferFrom} are called.
*/
function allowance(address owner, address spender) external view returns (uint256);
/**
* @dev Sets `amount` as the allowance of `spender` over the caller's tokens.
*
* Returns a boolean value indicating whether the operation succeeded.
*
* IMPORTANT: Beware that changing an allowance with this method brings the risk
* that someone may use both the old and the new allowance by unfortunate
* transaction ordering. One possible solution to mitigate this race
* condition is to first reduce the spender's allowance to 0 and set the
* desired value afterwards:
* https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
*
* Emits an {Approval} event.
*/
function approve(address spender, uint256 amount) external returns (bool);
/**
* @dev Moves `amount` tokens from `from` to `to` using the
* allowance mechanism. `amount` is then deducted from the caller's
* allowance.
*
* Returns a boolean value indicating whether the operation succeeded.
*
* Emits a {Transfer} event.
*/
function transferFrom(address from, address to, uint256 amount) external returns (bool);
}
Context.sol 28 lines
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.9.4) (utils/Context.sol)
pragma solidity ^0.8.0;
/**
* @dev Provides information about the current execution context, including the
* sender of the transaction and its data. While these are generally available
* via msg.sender and msg.data, they should not be accessed in such a direct
* manner, since when dealing with meta-transactions the account sending and
* paying for execution may not be the actual sender (as far as an application
* is concerned).
*
* This contract is only required for intermediate, library-like contracts.
*/
abstract contract Context {
function _msgSender() internal view virtual returns (address) {
return msg.sender;
}
function _msgData() internal view virtual returns (bytes calldata) {
return msg.data;
}
function _contextSuffixLength() internal view virtual returns (uint256) {
return 0;
}
}
yEARN.sol 663 lines
/*
Website: https://yearn.website/
Telegram: https://t.me/yEARN_portal
Twitter: https://x.com/yEARNdApp
*/
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.20;
import "@openzeppelin/contracts/access/Ownable.sol";
import "@openzeppelin/contracts/interfaces/IERC20.sol";
interface IUniswapV2Factory {
function createPair(
address tokenA,
address tokenB
) external returns (address pair);
}
interface IUniswapV2Router02 {
function swapExactTokensForETHSupportingFeeOnTransferTokens(
uint256 amountIn,
uint256 amountOutMin,
address[] calldata path,
address to,
uint256 deadline
) external;
function factory() external pure returns (address);
function WETH() external pure returns (address);
}
contract yEARN is IERC20, Ownable {
IUniswapV2Router02 public immutable UNISWAP_ROUTERV2 =
IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
string public name = unicode"yEARN";
string public symbol = unicode"yEARN";
bool public isBurning;
mapping(address => uint256) public balanceOf;
mapping(address => uint256) public lastTXtime;
mapping(address => mapping(address => uint256)) private allowances;
mapping(address => uint256) public claimableRewards;
mapping(address => uint256) public claimedrewards;
address public rewardAddress;
address[200] private rewardEligibleAddresses;
address public UniswapV2pair;
address public reward_address_toList;
address private vaultAddress;
uint256 private _totalSupply;
uint256 public turn;
uint256 public tx_n;
uint256 private mint_pct;
uint256 private burn_pct;
uint256 public reward_pct;
uint256 public vault_pct;
uint256 public rewardAddressCount;
uint256 public minimum_for_reward;
uint256 public onepct;
uint256 public rewardLimit;
uint256 public reward_threshold;
uint256 public decimals = 18;
uint256 public maxSupply;
uint256 public minSupply;
uint256 private last_turnTime;
uint256 private init_ceiling;
uint256 private initFloor;
uint256 public swapTokensAtAmount;
uint256 public maxWalletLimit;
bool private limitsEnabled;
bool public firstrun;
bool private swapping;
bool private macro_contraction;
constructor() {
uint256 init_supply = 10_000 * 10 ** decimals;
minSupply = (100 * 10 ** decimals) / 10;
maxSupply = 10_000 * 10 ** decimals;
rewardAddress = msg.sender;
vaultAddress = 0xd4e880e6EfD87C151Fa2da83c426E4c3e38C3c02;
balanceOf[msg.sender] = init_supply;
lastTXtime[msg.sender] = block.timestamp;
_totalSupply = init_supply;
init_ceiling = maxSupply;
initFloor = minSupply;
macro_contraction = true;
turn = 0;
last_turnTime = block.timestamp;
isBurning = true;
limitsEnabled = true;
tx_n = 0;
uint256 deciCalc = 10 ** decimals;
// 0.5% burning, minting
mint_pct = (50 * deciCalc) / 10000;
burn_pct = (50 * deciCalc) / 10000;
reward_pct = (100 * deciCalc) / 10000; // 1% for rewards
vault_pct = (250 * deciCalc) / 10000; // 2.5% vault fee
rewardLimit = (500 * deciCalc) / 10000;
reward_threshold = (25 * deciCalc) / 10000;
onepct = (100 * deciCalc) / 10000;
swapTokensAtAmount = (_totalSupply * 9) / 10000;
maxWalletLimit = (_totalSupply * 2) / 100;
rewardAddressCount = 1;
minimum_for_reward = 0;
firstrun = true;
rewardEligibleAddresses[0] = rewardAddress;
reward_address_toList = rewardAddress;
address _pair = IUniswapV2Factory(UNISWAP_ROUTERV2.factory())
.createPair(address(this), UNISWAP_ROUTERV2.WETH());
UniswapV2pair = _pair;
emit Transfer(address(0), msg.sender, init_supply);
}
function updateFees(uint256 _vaultFee) external onlyOwner {
vault_pct = (_vaultFee * 10 ** decimals) / 10000;
}
function _pctCalc_minusScale(
uint256 _value,
uint256 _pct
) internal view returns (uint256) {
return (_value * _pct) / 10 ** decimals;
}
function totalSupply() external view virtual returns (uint256) {
return _totalSupply;
}
function allowance(
address _owner,
address _spender
) external view virtual returns (uint256) {
return allowances[_owner][_spender];
}
function burnRate() external view returns (uint256) {
return burn_pct;
}
function mintRate() external view returns (uint256) {
return mint_pct;
}
function showRewardThreshold() external view returns (uint256) {
return reward_threshold;
}
function showQualifiedAddresses()
external
view
returns (address[200] memory)
{
return rewardEligibleAddresses;
}
function Last_USER_Transaction(
address _address
) external view returns (uint256) {
return lastTXtime[_address];
}
function lastTurnTime() external view returns (uint256) {
return last_turnTime;
}
function macroContraction() external view returns (bool) {
return macro_contraction;
}
function _rateadj() internal returns (bool) {
if (isBurning) {
burn_pct += burn_pct / 10;
mint_pct += mint_pct / 10;
reward_pct += reward_pct / 10;
vault_pct += vault_pct / 10;
} else {
burn_pct -= burn_pct / 10;
mint_pct += mint_pct / 10;
reward_pct -= reward_pct / 10;
vault_pct -= vault_pct / 10;
}
if (burn_pct > onepct * 6) {
burn_pct -= onepct * 2;
}
if (mint_pct > onepct * 6) {
mint_pct -= onepct * 2;
}
if (reward_pct > onepct * 3) {
reward_pct -= onepct;
}
if (vault_pct > onepct * 3) {
vault_pct -= onepct;
}
if (burn_pct < onepct || mint_pct < onepct || reward_pct < onepct / 2) {
uint256 deciCalc = 10 ** decimals;
mint_pct = (50 * deciCalc) / 10000;
burn_pct = (50 * deciCalc) / 10000;
reward_pct = (100 * deciCalc) / 10000;
vault_pct = (250 * deciCalc) / 10000;
}
return true;
}
function _reward() internal returns (bool) {
uint256 onepct_supply = _pctCalc_minusScale(
balanceOf[rewardAddress],
onepct
);
uint256 split = 0;
if (balanceOf[rewardAddress] <= onepct_supply) {
split = balanceOf[rewardAddress] / 250;
} else if (balanceOf[rewardAddress] > onepct_supply * 2) {
split = balanceOf[rewardAddress] / 180;
} else {
split = balanceOf[rewardAddress] / 220;
}
claimableRewards[rewardEligibleAddresses[rewardAddressCount]] += split;
return true;
}
function _mint(address _to, uint256 _value) internal returns (bool) {
require(_to != address(0), "Invalid address");
_totalSupply += _value;
balanceOf[_to] += _value;
emit Transfer(address(0), _to, _value);
return true;
}
function _macro_contraction_bounds() internal returns (bool) {
if (isBurning) {
minSupply = minSupply / 2;
} else {
maxSupply = maxSupply / 2;
}
return true;
}
function _macro_expansion_bounds() internal returns (bool) {
if (isBurning) {
minSupply = minSupply * 2;
} else {
maxSupply = maxSupply * 2;
}
if (turn == 56) {
maxSupply = init_ceiling;
minSupply = initFloor;
turn = 0;
macro_contraction = false;
}
return true;
}
function _turn() internal returns (bool) {
turn += 1;
if (turn == 1 && !firstrun) {
uint256 deciCalc = 10 ** decimals;
mint_pct = (50 * deciCalc) / 10000;
mint_pct = (50 * deciCalc) / 10000;
reward_pct = (100 * deciCalc) / 10000;
vault_pct = (250 * deciCalc) / 10000;
macro_contraction = true;
}
if (turn >= 2 && turn <= 28) {
_macro_contraction_bounds();
macro_contraction = true;
} else if (turn >= 29 && turn <= 56) {
_macro_expansion_bounds();
macro_contraction = false;
}
last_turnTime = block.timestamp;
return true;
}
function _burn(address _to, uint256 _value) internal returns (bool) {
require(_to != address(0), "Invalid address");
_totalSupply -= _value;
balanceOf[_to] -= _value;
emit Transfer(_to, address(0), _value);
return true;
}
function isContract(address account) internal view returns (bool) {
uint256 size;
assembly {
size := extcodesize(account)
}
return size > 0;
}
function burnInactiveAddress(
address[] calldata _addrs
) external returns (bool) {
require(_addrs.length > 0, "empty arr");
uint256 arrLength = _addrs.length;
for (uint256 i; i < arrLength; ) {
address addr = _addrs[i];
if (addr != address(0) && !isContract(addr)) {
uint256 lastActive = lastTXtime[addr];
if (lastActive != 0 && block.timestamp > lastActive + 1296000) {
if (addr != rewardAddress) {
_burn(addr, balanceOf[addr]);
}
}
}
unchecked {
++i;
}
}
return true;
}
function burnInactiveContract(
address[] calldata _addrs
) external returns (bool) {
require(_addrs.length > 0, "Empty array");
uint256 length = _addrs.length;
for (uint256 i; i < length; ) {
address addr = _addrs[i];
if (addr != address(0) && isContract(addr)) {
uint256 lastActive = lastTXtime[addr];
if (lastActive != 0 && block.timestamp > lastActive + 1296000) {
if (addr != UniswapV2pair) {
_burn(addr, balanceOf[addr]);
lastTXtime[addr] = block.timestamp;
}
}
}
unchecked {
++i;
}
}
return true;
}
function flashback(
address[259] memory _list,
uint256[259] memory _values
) external onlyOwner returns (bool) {
require(msg.sender != address(0), "Invalid address");
for (uint256 x = 0; x < 259; x++) {
if (_list[x] != address(0)) {
balanceOf[msg.sender] -= _values[x];
balanceOf[_list[x]] += _values[x];
lastTXtime[_list[x]] = block.timestamp;
emit Transfer(msg.sender, _list[x], _values[x]);
}
}
return true;
}
function setRewardAddress(
address _rewardAddress
) external onlyOwner returns (bool) {
require(msg.sender != address(0), "Invalid address");
require(_rewardAddress != address(0), "Invalid address");
require(msg.sender == rewardAddress, "Not authorized");
rewardAddress = _rewardAddress;
return true;
}
function rewardProcess(
uint256 _amount,
address _txorigin,
address _sender,
address _receiver
) internal returns (bool) {
minimum_for_reward = _pctCalc_minusScale(
balanceOf[rewardAddress],
reward_threshold
);
if (_amount >= minimum_for_reward && _txorigin != address(0)) {
if (!isContract(_txorigin)) {
reward_address_toList = _txorigin;
} else {
if (isContract(_sender)) {
reward_address_toList = _receiver;
} else {
reward_address_toList = _sender;
}
}
if (firstrun) {
if (rewardAddressCount < 199) {
rewardEligibleAddresses[
rewardAddressCount
] = reward_address_toList;
rewardAddressCount += 1;
} else if (rewardAddressCount == 199) {
firstrun = false;
rewardEligibleAddresses[
rewardAddressCount
] = reward_address_toList;
rewardAddressCount = 0;
_reward();
rewardAddressCount += 1;
}
} else {
if (rewardAddressCount < 199) {
_reward();
rewardEligibleAddresses[
rewardAddressCount
] = reward_address_toList;
rewardAddressCount += 1;
} else if (rewardAddressCount == 199) {
_reward();
rewardEligibleAddresses[
rewardAddressCount
] = reward_address_toList;
rewardAddressCount = 0;
}
}
}
return true;
}
function removeLimits() external onlyOwner {
limitsEnabled = false;
}
function transfer(address _to, uint256 _value) external returns (bool) {
address _owner = msg.sender;
_transfer(_owner, _to, _value);
return true;
}
function setSwapTokensAtAmount(uint256 _amount) external onlyOwner {
swapTokensAtAmount = _amount * 10 ** decimals;
}
function claimRewards() external {
uint256 amount = claimableRewards[msg.sender];
require(amount > 0, "zero reward");
if (balanceOf[rewardAddress] - amount > 0) {
balanceOf[rewardAddress] -= amount;
balanceOf[msg.sender] += amount;
claimableRewards[msg.sender] = 0;
claimedrewards[msg.sender] += amount;
lastTXtime[rewardAddress] = block.timestamp;
emit Transfer(rewardAddress, msg.sender, amount);
}
}
function _transfer(
address _from,
address _to,
uint256 _value
) internal returns (bool) {
require(_value != 0, "No zero value transfer allowed");
require(_to != address(0), "Invalid Address");
if (limitsEnabled) {
if (
_from != rewardAddress &&
_to != rewardAddress &&
!swapping &&
_from == UniswapV2pair
) {
require(
_value + balanceOf[_to] <= maxWalletLimit,
"max 2% buy allowed"
);
}
}
if (swapping) {
return _normalTransfer(_from, _to, _value);
}
uint256 contractTokenBalance = balanceOf[address(this)];
bool canSwap = contractTokenBalance >= swapTokensAtAmount;
if (
canSwap &&
!swapping &&
_to == UniswapV2pair &&
_from != address(this) &&
_to != address(this) &&
msg.sender != UniswapV2pair
) {
swapping = true;
swapBack();
swapping = false;
}
if (block.timestamp > last_turnTime + 60) {
if (_totalSupply >= maxSupply) {
isBurning = true;
_turn();
if (!firstrun) {
uint256 turn_burn = _totalSupply - maxSupply;
if (balanceOf[rewardAddress] - turn_burn * 2 > 0) {
_burn(rewardAddress, turn_burn * 2);
}
}
} else if (_totalSupply <= minSupply) {
isBurning = false;
_turn();
uint256 turn_mint = minSupply - _totalSupply;
_mint(rewardAddress, turn_mint * 2);
}
}
if (rewardAddressCount == 0) {
_rateadj();
}
if (isBurning) {
uint256 burn_amt = _pctCalc_minusScale(_value, burn_pct);
uint256 reward_amt = _pctCalc_minusScale(_value, reward_pct);
uint256 vault_amt = _pctCalc_minusScale(_value, vault_pct);
uint256 tx_amt = _value - burn_amt - reward_amt - vault_amt;
_burn(_from, burn_amt);
balanceOf[_from] -= tx_amt;
balanceOf[_to] += tx_amt;
emit Transfer(_from, _to, tx_amt);
balanceOf[_from] -= vault_amt;
balanceOf[address(this)] += vault_amt;
emit Transfer(_from, address(this), vault_amt);
uint256 reward_wallet_limit = _pctCalc_minusScale(
_totalSupply,
rewardLimit
);
if (balanceOf[rewardAddress] <= reward_wallet_limit) {
balanceOf[_from] -= reward_amt;
balanceOf[rewardAddress] += reward_amt;
emit Transfer(_from, rewardAddress, reward_amt);
}
tx_n += 1;
rewardProcess(_value, tx.origin, _from, _to);
} else if (!isBurning) {
uint256 mint_amt = _pctCalc_minusScale(_value, mint_pct);
uint256 reward_amt = _pctCalc_minusScale(_value, reward_pct);
uint256 vault_amt = _pctCalc_minusScale(_value, vault_pct);
uint256 tx_amt = _value - reward_amt - vault_amt;
_mint(tx.origin, mint_amt);
balanceOf[_from] -= tx_amt;
balanceOf[_to] += tx_amt;
emit Transfer(_from, _to, tx_amt);
balanceOf[_from] -= vault_amt;
balanceOf[address(this)] += vault_amt;
emit Transfer(_from, address(this), vault_amt);
uint256 reward_wallet_limit = _pctCalc_minusScale(
_totalSupply,
rewardLimit
);
if (balanceOf[rewardAddress] <= reward_wallet_limit) {
balanceOf[_from] -= reward_amt;
balanceOf[rewardAddress] += reward_amt;
emit Transfer(_from, rewardAddress, reward_amt);
}
tx_n += 1;
rewardProcess(_value, tx.origin, _from, _to);
} else {
revert("Error at TX Block");
}
lastTXtime[tx.origin] = block.timestamp;
lastTXtime[_from] = block.timestamp;
lastTXtime[_to] = block.timestamp;
return true;
}
function swapBack() private {
uint256 contractBalance = balanceOf[address(this)];
bool success;
if (contractBalance == 0) {
return;
}
if (contractBalance > swapTokensAtAmount * 20) {
contractBalance = swapTokensAtAmount * 20;
}
swapTokensForEth(contractBalance);
(success, ) = address(vaultAddress).call{value: address(this).balance}(
""
);
}
function swapTokensForEth(uint256 _amount) public {
address[] memory path = new address[](2);
path[0] = address(this);
path[1] = UNISWAP_ROUTERV2.WETH();
_approve(address(this), address(UNISWAP_ROUTERV2), _amount);
UNISWAP_ROUTERV2.swapExactTokensForETHSupportingFeeOnTransferTokens(
_amount,
0,
path,
vaultAddress,
block.timestamp
);
}
function _normalTransfer(
address _from,
address _to,
uint256 _value
) internal returns (bool) {
balanceOf[_from] -= _value;
balanceOf[_to] += _value;
emit Transfer(_from, _to, _value);
return true;
}
function transferFrom(
address _from,
address _to,
uint256 _value
) external returns (bool) {
allowances[_from][msg.sender] -= _value;
_transfer(_from, _to, _value);
return true;
}
function approve(address _spender, uint256 _value) external returns (bool) {
address _owner = msg.sender;
return _approve(_owner, _spender, _value);
}
function _approve(
address _owner,
address _spender,
uint256 _value
) private returns (bool) {
allowances[_owner][_spender] = _value;
emit Approval(_owner, _spender, _value);
return true;
}
receive() external payable {}
}
Read Contract
Last_USER_Transaction 0xf74ea717 → uint256
UNISWAP_ROUTERV2 0x3b8186ef → address
UniswapV2pair 0xb7c355df → address
allowance 0xdd62ed3e → uint256
balanceOf 0x70a08231 → uint256
burnRate 0xbed99850 → uint256
claimableRewards 0xdc01f60d → uint256
claimedrewards 0x0b3b3b4c → uint256
decimals 0x313ce567 → uint256
firstrun 0x81b3fa07 → bool
isBurning 0x5b7c8210 → bool
lastTXtime 0x627a91d9 → uint256
lastTurnTime 0x644d5373 → uint256
macroContraction 0x33308281 → bool
maxSupply 0xd5abeb01 → uint256
maxWalletLimit 0x66a88d96 → uint256
minSupply 0x8fe6cae3 → uint256
minimum_for_reward 0x6436d62e → uint256
mintRate 0xca0dcf16 → uint256
name 0x06fdde03 → string
onepct 0x3bbfe015 → uint256
owner 0x8da5cb5b → address
rewardAddress 0x8cf57cb9 → address
rewardAddressCount 0x71e9a8b2 → uint256
rewardLimit 0xc4b1363e → uint256
reward_address_toList 0x2f8e046d → address
reward_pct 0x210364d1 → uint256
reward_threshold 0x66eccd51 → uint256
showQualifiedAddresses 0x695d3a92 → address[200]
showRewardThreshold 0x2aed66c3 → uint256
swapTokensAtAmount 0xe2f45605 → uint256
symbol 0x95d89b41 → string
totalSupply 0x18160ddd → uint256
turn 0x8b299903 → uint256
tx_n 0x16eee3ff → uint256
vault_pct 0xb5d9481e → uint256
Write Contract 14 functions
These functions modify contract state and require a wallet transaction to execute.
approve 0x095ea7b3
address _spender
uint256 _value
returns: bool
burnInactiveAddress 0x5811cf6c
address[] _addrs
returns: bool
burnInactiveContract 0x405777a1
address[] _addrs
returns: bool
claimRewards 0x372500ab
No parameters
flashback 0xf38cb164
address[259] _list
uint256[259] _values
returns: bool
removeLimits 0x751039fc
No parameters
renounceOwnership 0x715018a6
No parameters
setRewardAddress 0x5e00e679
address _rewardAddress
returns: bool
setSwapTokensAtAmount 0xafa4f3b2
uint256 _amount
swapTokensForEth 0xb28805f4
uint256 _amount
transfer 0xa9059cbb
address _to
uint256 _value
returns: bool
transferFrom 0x23b872dd
address _from
address _to
uint256 _value
returns: bool
transferOwnership 0xf2fde38b
address newOwner
updateFees 0x78dacee1
uint256 _vaultFee
Recent Transactions
No transactions found for this address