Cryo Explorer Ethereum Mainnet

Address Contract Partially Verified

Address 0x9978618360A54Fa29CB2A6353bBaB62413c7d251
Balance 0 ETH
Nonce 1
Code Size 11282 bytes
Indexed Transactions 0
External Etherscan · Sourcify

Contract Bytecode

11282 bytes
0x6080604052600436106102975760003560e01c80636edabb171161015a578063b0bc85de116100c1578063dd62ed3e1161007a578063dd62ed3e1461078f578063e4202954146107d5578063e5f2758f146107eb578063f2fde38b1461080b578063f887ea401461082b578063fb4aa5851461084b57600080fd5b8063b0bc85de146106e1578063bc7a2898146106f6578063c041b93014610719578063caac793414610739578063d9d9666c14610759578063dd03bf861461077957600080fd5b806390107afe1161011357806390107afe1461063757806395d89b41146106575780639e78fb4f1461066c578063a457c2d714610681578063a8aa1b31146106a1578063a9059cbb146106c157600080fd5b80636edabb171461057757806370a0823114610598578063715018a6146105ce578063751fd179146105e357806378109e54146106035780638da5cb5b1461061957600080fd5b8063313ce567116101fe578063571ac8b0116101b7578063571ac8b0146104b65780635b64c5a9146104d65780635d0044ca146104f657806360959b5614610516578063622f9cd6146105365780636af659291461055757600080fd5b8063313ce567146104195780633268cc5614610435578063364333f414610455578063395093511461046a5780633eaaf86b1461048a57806343e67270146104a057600080fd5b806318160ddd1161025057806318160ddd1461038e5780631f1b845b146103a357806323b872dd146103b9578063252d723a146103d9578063276ef2d5146103ee5780632d2fe7171461040357600080fd5b8063010cf559146102a357806304d4c990146102cc57806306fdde03146102ee578063095ea7b3146103105780630af88b24146103405780630e5a92311461037857600080fd5b3661029e57005b600080fd5b3480156102af57600080fd5b506102b9600f5481565b6040519081526020015b60405180910390f35b3480156102d857600080fd5b506102ec6102e736600461250d565b610861565b005b3480156102fa57600080fd5b50610303610a80565b6040516102c39190612596565b34801561031c57600080fd5b5061033061032b3660046125be565b610b12565b60405190151581526020016102c3565b34801561034c57600080fd5b50601c54610360906001600160a01b031681565b6040516001600160a01b0390911681526020016102c3565b34801561038457600080fd5b506102b9600a5481565b34801561039a57600080fd5b506008546102b9565b3480156103af57600080fd5b506102b9600d5481565b3480156103c557600080fd5b506103306103d43660046125ea565b610b7f565b3480156103e557600080fd5b506102b9610c8f565b3480156103fa57600080fd5b506102b9610cc0565b34801561040f57600080fd5b506102b9600b5481565b34801561042557600080fd5b50604051600981526020016102c3565b34801561044157600080fd5b50601754610360906001600160a01b031681565b34801561046157600080fd5b506102ec610cd2565b34801561047657600080fd5b506103306104853660046125be565b610d55565b34801561049657600080fd5b506102b960085481565b3480156104ac57600080fd5b506102b960115481565b3480156104c257600080fd5b506103306104d136600461262b565b610d99565b3480156104e257600080fd5b50601b54610360906001600160a01b031681565b34801561050257600080fd5b506102ec610511366004612648565b610da7565b34801561052257600080fd5b506102ec610531366004612704565b610e88565b34801561054257600080fd5b50601d5461033090600160a81b900460ff1681565b34801561056357600080fd5b50601854610360906001600160a01b031681565b34801561058357600080fd5b50601d5461033090600160b01b900460ff1681565b3480156105a457600080fd5b506102b96105b336600461262b565b6001600160a01b031660009081526012602052604090205490565b3480156105da57600080fd5b506102ec610ed0565b3480156105ef57600080fd5b506102ec6105fe366004612768565b610f44565b34801561060f57600080fd5b506102b960095481565b34801561062557600080fd5b506005546001600160a01b0316610360565b34801561064357600080fd5b506102ec6106523660046127a6565b610f99565b34801561066357600080fd5b506103036110f0565b34801561067857600080fd5b506102ec6110ff565b34801561068d57600080fd5b5061033061069c3660046125be565b6112de565b3480156106ad57600080fd5b50601654610360906001600160a01b031681565b3480156106cd57600080fd5b506103306106dc3660046125be565b61132d565b3480156106ed57600080fd5b506102b961136d565b34801561070257600080fd5b5061070b611385565b6040516102c39291906127d4565b34801561072557600080fd5b506102ec610734366004612768565b6114ac565b34801561074557600080fd5b50601954610360906001600160a01b031681565b34801561076557600080fd5b50601a54610360906001600160a01b031681565b34801561078557600080fd5b506102b9600e5481565b34801561079b57600080fd5b506102b96107aa3660046127a6565b6001600160a01b03918216600090815260136020908152604080832093909416825291909152205490565b3480156107e157600080fd5b506102b960105481565b3480156107f757600080fd5b506102ec610806366004612648565b611501565b34801561081757600080fd5b506102ec61082636600461262b565b611652565b34801561083757600080fd5b50601d54610360906001600160a01b031681565b34801561085757600080fd5b506102b9600c5481565b6005546001600160a01b031633146108945760405162461bcd60e51b815260040161088b906127f9565b60405180910390fd5b601d54600160a01b900460ff16156108be5760405162461bcd60e51b815260040161088b9061282e565b601d54600160a81b900460ff166108e75760405162461bcd60e51b815260040161088b90612865565b30600090815260126020526040902054600b5460140361091557801561090f5761090f61173d565b6004600b555b600c8790556010839055600e859055600d8690556011829055600f849055601d54600160b01b900460ff1661094c576101f461094f565b60645b61ffff1661095b610c8f565b11156109d1576040805162461bcd60e51b81526020600482015260248101919091527f427579207461782063616e27742062652067726561746572207468616e20313060448201527f2520696620626f72726f776564206c7020616e6420353025206966206e6f742e606482015260840161088b565b601d54600160b01b900460ff166109ea576101f46109ed565b60645b61ffff166109f961136d565b1115610a775760405162461bcd60e51b815260206004820152604160248201527f53656c6c207461782063616e27742062652067726561746572207468616e203160448201527f302520696620626f72726f776564206c7020616e6420353025206966206e6f746064820152601760f91b608482015260a40161088b565b50505050505050565b606060038054610a8f9061289c565b80601f0160208091040260200160405190810160405280929190818152602001828054610abb9061289c565b8015610b085780601f10610add57610100808354040283529160200191610b08565b820191906000526020600020905b815481529060010190602001808311610aeb57829003601f168201915b5050505050905090565b3360008181526013602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610b6d9086815260200190565b60405180910390a35060015b92915050565b60006001600160a01b038416610ba75760405162461bcd60e51b815260040161088b906128d6565b6001600160a01b038316610bcd5760405162461bcd60e51b815260040161088b9061291b565b6008546001600160a01b038516600090815260136020908152604080832033845290915290205414610c7a576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b0387166000908152601382528381203382529091529190912054610c55918490611c0b565b6001600160a01b03851660009081526013602090815260408083203384529091529020555b610c85848484611c45565b90505b9392505050565b6000600b54600c54600e54601054610ca79190612974565b610cb19190612974565b610cbb9190612974565b905090565b6000610cca610c8f565b610cb161136d565b6005546001600160a01b03163314610cfc5760405162461bcd60e51b815260040161088b906127f9565b601d54600160a01b900460ff1615610d265760405162461bcd60e51b815260040161088b9061282e565b60405133904780156108fc02916000818181858888f19350505050158015610d52573d6000803e3d6000fd5b50565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610d90918590610d8b9086611e25565b611e84565b50600192915050565b6000610b7982600854610b12565b6005546001600160a01b03163314610dd15760405162461bcd60e51b815260040161088b906127f9565b601d54600160a01b900460ff1615610dfb5760405162461bcd60e51b815260040161088b9061282e565b6103e881600854610e0c9190612987565b610e16919061299e565b600955600854610e29906101f49061299e565b6009541015610d525760405162461bcd60e51b815260206004820152602560248201527f4d61782057616c6c6574206d7573742062652067726561746572207468616e20604482015264181719129760d91b606482015260840161088b565b6005546001600160a01b03163314610eb25760405162461bcd60e51b815260040161088b906127f9565b6006610ebe8382612a10565b506007610ecb8282612a10565b505050565b6005546001600160a01b03163314610efa5760405162461bcd60e51b815260040161088b906127f9565b6005546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b6005546001600160a01b03163314610f6e5760405162461bcd60e51b815260040161088b906127f9565b6001600160a01b03919091166000908152601460205260409020805460ff1916911515919091179055565b6005546001600160a01b03163314610fc35760405162461bcd60e51b815260040161088b906127f9565b601d54600160a01b900460ff1615610fed5760405162461bcd60e51b815260040161088b9061282e565b601d54600160a81b900460ff166110165760405162461bcd60e51b815260040161088b90612865565b6001600160a01b0382161561104157601980546001600160a01b0319166001600160a01b0384161790555b6001600160a01b0381161561106c57601880546001600160a01b0319166001600160a01b0383161790555b6018546001600160a01b03161580159061109057506019546001600160a01b031615155b6110ec5760405162461bcd60e51b815260206004820152602760248201527f52656369657665722077616c6c6574732063616e2774206265205a65726f206160448201526632323932b9b99760c91b606482015260840161088b565b5050565b606060048054610a8f9061289c565b6016546001600160a01b0316156111505760405162461bcd60e51b81526020600482015260156024820152742830b4b91030b63932b0b23c9031b932b0ba32b21760591b604482015260640161088b565b601d60009054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156111a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111c79190612ad0565b6001600160a01b031663c9c65396601d60009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611228573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061124c9190612ad0565b6040516001600160e01b031960e084901b1681526001600160a01b0390911660048201523060248201526044016020604051808303816000875af1158015611298573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112bc9190612ad0565b601680546001600160a01b0319166001600160a01b0392909216919091179055565b6000610d903384610d8b85604051806060016040528060258152602001612bb8602591393360009081526001602090815260408083206001600160a01b038d1684529091529020549190611c0b565b6000336113426005546001600160a01b031690565b6001600160a01b0316036113625761135b338484611fa8565b9050610b79565b61135b338484611c45565b6000600b54600d54600f54601154610ca79190612974565b606080600660078180546113989061289c565b80601f01602080910402602001604051908101604052809291908181526020018280546113c49061289c565b80156114115780601f106113e657610100808354040283529160200191611411565b820191906000526020600020905b8154815290600101906020018083116113f457829003601f168201915b505050505091508080546114249061289c565b80601f01602080910402602001604051908101604052809291908181526020018280546114509061289c565b801561149d5780601f106114725761010080835404028352916020019161149d565b820191906000526020600020905b81548152906001019060200180831161148057829003601f168201915b50505050509050915091509091565b6005546001600160a01b031633146114d65760405162461bcd60e51b815260040161088b906127f9565b6001600160a01b03919091166000908152601560205260409020805460ff1916911515919091179055565b6005546001600160a01b0316331461152b5760405162461bcd60e51b815260040161088b906127f9565b601d54600160a01b900460ff16156115555760405162461bcd60e51b815260040161088b9061282e565b601d54600160a81b900460ff1661157e5760405162461bcd60e51b815260040161088b90612865565b6103e88160085461158f9190612987565b611599919061299e565b600a556008546115ab9060149061299e565b600a54111580156115cd57506101f46008546115c7919061299e565b600a5410155b610d525760405162461bcd60e51b815260206004820152604a60248201527f53776170205468726573686f6c64206d757374206265206c657373207468616e60448201527f203525206f6620746f74616c20737570706c792c206f722067726561746572206064820152693a3430b710181719129760b11b608482015260a40161088b565b6005546001600160a01b0316331461167c5760405162461bcd60e51b815260040161088b906127f9565b6001600160a01b0381166116e15760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161088b565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b601d805460ff60a01b1916600160a01b17905530600090815260126020526040812054601154601054919291829161177491612974565b116117805760006117b0565b6117b060026117aa611790610cc0565b6117aa6011546010546117a39190612974565b879061208e565b90612110565b905060006117be8383612152565b604080516002808252606082018352929350600092909160208301908036833701905050905030816000815181106117f8576117f8612aed565b6001600160a01b039283166020918202929092010152601c5482519116908290600190811061182957611829612aed565b6001600160a01b039283166020918202929092010152601d5460405163791ac94760e01b81524792919091169063791ac94790611873908690600090879030904290600401612b03565b600060405180830381600087803b15801561188d57600080fd5b505af11580156118a1573d6000803e3d6000fd5b505050506000806118bb834761215290919063ffffffff16565b90506000806011546010546118d09190612974565b116118e2576118dd610cc0565b611908565b6119086118fa60026011546010546117aa9190612974565b611902610cc0565b90612152565b9050600061192f60026117aa846117aa6011546010546119289190612974565b889061208e565b90506000600f54600e546119439190612974565b11156119c4576000611962836117aa600f54600e546117a39190612974565b6018546040519192506001600160a01b031690620186a09083906000818181858888f193505050503d80600081146119b6576040519150601f19603f3d011682016040523d82523d6000602084013e6119bb565b606091505b50600096505050505b6000600d54600c546119d69190612974565b1115611a575760006119f5836117aa600d54600c546117a39190612974565b6019546040519192506001600160a01b031690620186a09083906000818181858888f193505050503d8060008114611a49576040519150601f19603f3d011682016040523d82523d6000602084013e611a4e565b606091505b50600096505050505b8715611b6257601d54600090600160b01b900460ff16611a82576019546001600160a01b0316611a8f565b601b546001600160a01b03165b601d5460405163f305d71960e01b8152306004820152602481018c905260006044820181905260648201526001600160a01b0380841660848301524260a483015292935091169063f305d71990849060c40160606040518083038185885af1158015611aff573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611b249190612b76565b505060408051848152602081018c90527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450692500160405180910390a1505b6000611b81836117aa6117a36002600b5461208e90919063ffffffff16565b90506000601a60009054906101000a90046001600160a01b03169050806001600160a01b031663289fe2d5836040518263ffffffff1660e01b81526004016000604051808303818588803b158015611bd857600080fd5b505af1158015611bec573d6000803e3d6000fd5b5050601d805460ff60a01b191690555050505050505050505050505050565b60008184841115611c2f5760405162461bcd60e51b815260040161088b9190612596565b506000611c3c8486612ba4565b95945050505050565b60006001600160a01b038416611c6d5760405162461bcd60e51b815260040161088b906128d6565b6001600160a01b038316611c935760405162461bcd60e51b815260040161088b9061291b565b601d54600160a01b900460ff1615611cb757611cb0848484611fa8565b9050610c88565b611cc2848484612194565b611ccb836122ff565b15611cd857611cd861173d565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b038716600090815260129091529190912054611d2a918490611c0b565b6001600160a01b038516600090815260126020526040812091909155601d54600160a81b900460ff168015611d8357506016546001600160a01b0385811691161480611d8357506016546001600160a01b038681169116145b611d8d5782611d98565b611d98858585612360565b6001600160a01b038516600090815260126020526040902054909150611dbe9082611e25565b6001600160a01b0380861660008181526012602052604090819020939093559151908716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611e129085815260200190565b60405180910390a3506001949350505050565b600080611e328385612974565b905083811015610c885760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640161088b565b6001600160a01b038316611ee65760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161088b565b6001600160a01b038216611f475760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161088b565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386166000908152601290915291822054611ff9918490611c0b565b6001600160a01b0380861660009081526012602052604080822093909355908516815220546120289083611e25565b6001600160a01b0380851660008181526012602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061207c9086815260200190565b60405180910390a35060019392505050565b6000826000036120a057506000610b79565b60006120ac8385612987565b9050826120b9858361299e565b14610c885760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b606482015260840161088b565b6000610c8883836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506124df565b6000610c8883836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611c0b565b6001600160a01b03821660009081526015602052604090205460ff161580156121c657506001600160a01b0382163014155b80156121db57506001600160a01b0383163014155b80156121f2575061dead6001600160a01b03831614155b801561220c57506016546001600160a01b03838116911614155b801561222657506019546001600160a01b03838116911614155b801561224057506018546001600160a01b03838116911614155b801561225a5750601b546001600160a01b03838116911614155b15610ecb576001600160a01b0382166000908152601260205260409020546009546122858383612974565b11156122f95760405162461bcd60e51b815260206004820152603e60248201527f546f74616c20486f6c64696e672069732063757272656e746c79206c696d697460448201527f65642c20796f752063616e206e6f74206275792074686174206d7563682e0000606482015260840161088b565b50505050565b6016546000906001600160a01b0383811691161480156123285750601d54600160a81b900460ff165b801561233e5750601d54600160a01b900460ff16155b8015610b795750600a5430600090815260126020526040902054101592915050565b6001600160a01b03831660009081526014602052604081205460ff168061239f57506001600160a01b03831660009081526014602052604090205460ff165b156123ab575080610c88565b306001600160a01b038516036123c2575080610c88565b6017546001600160a01b03858116911614806123eb57506017546001600160a01b038481169116145b156123f7575080610c88565b601b546001600160a01b0390811690841603612414575080610c88565b6016546000906001600160a01b0385811691161461243957612434610c8f565b612441565b61244161136d565b905060006124556103e86117aa868561208e565b306000908152601260205260409020549091506124729082611e25565b30600081815260126020526040908190209290925590516001600160a01b038816907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906124c39085815260200190565b60405180910390a36124d58482612152565b9695505050505050565b600081836125005760405162461bcd60e51b815260040161088b9190612596565b506000611c3c848661299e565b60008060008060008060c0878903121561252657600080fd5b505084359660208601359650604086013595606081013595506080810135945060a0013592509050565b6000815180845260005b818110156125765760208185018101518683018201520161255a565b506000602082860101526020601f19601f83011685010191505092915050565b602081526000610c886020830184612550565b6001600160a01b0381168114610d5257600080fd5b600080604083850312156125d157600080fd5b82356125dc816125a9565b946020939093013593505050565b6000806000606084860312156125ff57600080fd5b833561260a816125a9565b9250602084013561261a816125a9565b929592945050506040919091013590565b60006020828403121561263d57600080fd5b8135610c88816125a9565b60006020828403121561265a57600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261268857600080fd5b813567ffffffffffffffff808211156126a3576126a3612661565b604051601f8301601f19908116603f011681019082821181831017156126cb576126cb612661565b816040528381528660208588010111156126e457600080fd5b836020870160208301376000602085830101528094505050505092915050565b6000806040838503121561271757600080fd5b823567ffffffffffffffff8082111561272f57600080fd5b61273b86838701612677565b9350602085013591508082111561275157600080fd5b5061275e85828601612677565b9150509250929050565b6000806040838503121561277b57600080fd5b8235612786816125a9565b91506020830135801515811461279b57600080fd5b809150509250929050565b600080604083850312156127b957600080fd5b82356127c4816125a9565b9150602083013561279b816125a9565b6040815260006127e76040830185612550565b8281036020840152611c3c8185612550565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526018908201527f43616e6e6f742063616c6c207768656e20696e20737761700000000000000000604082015260600190565b60208082526018908201527f5468697320746f6b656e20686173206e6f2074617865732e0000000000000000604082015260600190565b600181811c908216806128b057607f821691505b6020821081036128d057634e487b7160e01b600052602260045260246000fd5b50919050565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b80820180821115610b7957610b7961295e565b8082028115828204841417610b7957610b7961295e565b6000826129bb57634e487b7160e01b600052601260045260246000fd5b500490565b601f821115610ecb576000816000526020600020601f850160051c810160208610156129e95750805b601f850160051c820191505b81811015612a08578281556001016129f5565b505050505050565b815167ffffffffffffffff811115612a2a57612a2a612661565b612a3e81612a38845461289c565b846129c0565b602080601f831160018114612a735760008415612a5b5750858301515b600019600386901b1c1916600185901b178555612a08565b600085815260208120601f198616915b82811015612aa257888601518255948401946001909101908401612a83565b5085821015612ac05787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b600060208284031215612ae257600080fd5b8151610c88816125a9565b634e487b7160e01b600052603260045260246000fd5b600060a08201878352602087602085015260a0604085015281875180845260c08601915060208901935060005b81811015612b555784516001600160a01b031683529383019391830191600101612b30565b50506001600160a01b03969096166060850152505050608001529392505050565b600080600060608486031215612b8b57600080fd5b8351925060208401519150604084015190509250925092565b81810381811115610b7957610b7961295e56fe45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220f228482c05a9017c08223a9aa20b44390b17d49514fae0e746f8fb441949c42864736f6c63430008180033

Verified Source Code Partial Match

Compiler: v0.8.24+commit.e11b9ed9 EVM: istanbul Optimization: Yes (200 runs)
ERC20.sol 141 lines
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.17;

import "IERC20.sol";
import "Context.sol";



interface IERC20Metadata is IERC20 {
    function name() external view returns (string memory);
    function symbol() external view returns (string memory);
    function decimals() external view returns (uint8);
}
library SafeMath {
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");
        return c;
    }
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }
    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;
        return c;
    }
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }
        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");
        return c;
    }
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }
    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        return c;
    }
    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return mod(a, b, "SafeMath: modulo by zero");
    }
    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b != 0, errorMessage);
        return a % b;
    }
}
abstract contract ERC20 is Context, IERC20, IERC20Metadata {
    using SafeMath for uint256;
    mapping(address => uint256) private _balances;
    mapping(address => mapping(address => uint256)) private _allowances;
    uint256 private _totalSupply;
    string private _name;
    string private _symbol;
    constructor(string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }
    function name() public view virtual override returns (string memory) {return _name;}
    function symbol() public view virtual override returns (string memory) {return _symbol;}
    function decimals() public view virtual override returns (uint8) {return 9;}
    function totalSupply() public view virtual override returns (uint256) {return _totalSupply;}
    function balanceOf(address account) public view virtual override returns (uint256) {return _balances[account];}
    function transfer(address recipient, uint256 amount) public virtual override returns (bool) {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }
    function allowance(address owner, address spender) public view virtual override returns (uint256) {
        return _allowances[owner][spender];
    }
    function approve(address spender, uint256 amount) public virtual override returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }
    function setNameAndSymbol(string memory nameInput, string memory symbolInput) internal {
        _name = nameInput;
        _symbol = symbolInput;
    }
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public virtual override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance"));
        return true;
    }
    function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue));
        return true;
    }
    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero"));
        return true;
    }
    function _transfer(
        address sender,
        address recipient,
        uint256 amount
    ) internal virtual {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");
        _beforeTokenTransfer(sender, recipient, amount);
        _balances[sender] = _balances[sender].sub(amount, "ERC20: transfer amount exceeds balance");
        _balances[recipient] = _balances[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
    }
    function _mint(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: mint to the zero address");
        _beforeTokenTransfer(address(0), account, amount);
        _totalSupply = _totalSupply.add(amount);
        _balances[account] = _balances[account].add(amount);
        emit Transfer(address(0), account, amount);
    }
    function _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: burn from the zero address");
        _beforeTokenTransfer(account, address(0), amount);
        _balances[account] = _balances[account].sub(amount, "ERC20: burn amount exceeds balance");
        _totalSupply = _totalSupply.sub(amount);
        emit Transfer(account, address(0), amount);
    }
    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");
        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }
    function _beforeTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}
}
IERC20.sol 17 lines
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.17;

interface IERC20 {
    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}
Context.sol 14 lines
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.17;


abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }

    function _msgData() internal view virtual returns (bytes calldata) {
        this; 
        return msg.data;
    }
}
Ownable.sol 27 lines
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.17;

import "Context.sol";
contract Ownable is Context {
    address private _owner;
    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
    constructor () {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }
    function owner() public view returns (address) {return _owner;}
    modifier onlyOwner() {
        require(_owner == _msgSender(), "Ownable: caller is not the owner");
        _;
    }
    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}
IDEXRouter.sol 92 lines
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.17;

interface IDEXRouter {
    function factory() external pure returns (address);

    function WETH() external pure returns (address);

    function removeLiquidity(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB);

    function addLiquidity(
        address tokenA,
        address tokenB,
        uint256 amountADesired,
        uint256 amountBDesired,
        uint256 amountAMin,
        uint256 amountBMin,
        address to,
        uint256 deadline
    ) external returns (uint256 amountA, uint256 amountB, uint256 liquidity);

    function addLiquidityETH(
        address token,
        uint256 amountTokenDesired,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline
    )
        external
        payable
        returns (uint256 amountToken, uint256 amountETH, uint256 liquidity);

    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external;

    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external payable;

    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external;

    function quote(
        uint256 amountA,
        uint256 reserveA,
        uint256 reserveB
    ) external pure returns (uint256 amountB);

    function getAmountOut(
        uint256 amountIn,
        uint256 reserveIn,
        uint256 reserveOut
    ) external pure returns (uint256 amountOut);

    function getAmountIn(
        uint256 amountOut,
        uint256 reserveIn,
        uint256 reserveOut
    ) external pure returns (uint256 amountIn);

    function getAmountsOut(
        uint256 amountIn,
        address[] calldata path
    ) external view returns (uint256[] memory amounts);

    function getAmountsIn(
        uint256 amountOut,
        address[] calldata path
    ) external view returns (uint256[] memory amounts);
}
OperaToken.sol 497 lines
pragma solidity ^0.8.17;
//SPDX-License-Identifier: MIT

import "ERC20.sol";
import "IDEXRouter.sol";
import "IDEXFactory.sol";
import "Ownable.sol";
import "OperaRevenue.sol";

//This Token was deployed using the Opera Protocol
//The Opera Protocol is a token deployer with the ability to deploy using borrowed initial liquidity
//This token can be configured at construction to have NO taxes or to HAVE taxes
//If the taxable variable (this cannot be updated after deployment) is true then this token is taxed
//If the borrowedLP variable (this cannot be updated after deployment) is true then the max tax is 10% buy / sell, otherwise the max can be 50% buy / sell
//Swap Threshold must be between 0.2% and 5% of supply, only if the token is taxable
//The Opera Dao will control the LP tokens for tokens that borrow Liquidity

contract OperaToken is ERC20, Ownable {
    using SafeMath for uint256;

    string _telegram;
    string _website;

    uint8 constant _decimals = 9;

    uint256 public _totalSupply;

    uint256 public _maxWalletToken;
    uint256 public _swapThreshold;

    uint256 public _operaTax;
    uint256 public _marketingBuyTax;
    uint256 public _marketingSellTax;
    uint256 public _devBuyTax;
    uint256 public _devSellTax;
    uint256 public _liquidityBuyTax;
    uint256 public _liquiditySellTax;

    mapping(address => uint256) _balances;
    mapping(address => mapping(address => uint256)) _allowances;
    mapping(address => bool) isFeeExempt;
    mapping(address => bool) isMaxExempt;

    address public pair;

    address public routerAddress = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D;
    address public _devAddress;
    address public _marketingAddress;
    address public OperaRevenueAddress;
    address public OperaFactoryAddress;

    address public WETHAddress = 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2;

    IDEXRouter public router;

    bool inSwap;
    bool public taxable;
    bool public borrowedLP;
    modifier swapping() {
        inSwap = true;
        _;
        inSwap = false;
    }
    event AutoLiquify(uint256 amountETH, uint256 amountCoin);

    constructor(
        string[] memory _stringData,
        address[] memory _addressData,
        uint256[] memory _intData,
        address rewardsAddress
    ) ERC20("","") {
        require(_stringData.length == 4, "String List needs 4 string inputs");
        require(
            _addressData.length == 2,
            "Address List needs 2 address inputs"
        );
        require(_intData.length == 11, "Int List needs 11 int inputs");
        if (_intData[9] == 1) {
            taxable = true;
        }
        if (_intData[10] == 1 && _intData[9] == 1) {
            borrowedLP = true;
        }
        OperaRevenueAddress = rewardsAddress;
        OperaFactoryAddress = msg.sender;
        router = IDEXRouter(routerAddress);

        setNameAndSymbol(_stringData[0],_stringData[1]);
        _telegram = _stringData[2];
        _website = _stringData[3];

        require(_intData[0] > 0 && _intData[0] < 999999999999999999);
        _totalSupply = _intData[0] * 10 ** _decimals;
        _balances[msg.sender] = _totalSupply;
        emit Transfer(address(0), msg.sender, _totalSupply);

        _maxWalletToken = (_totalSupply * _intData[1]) / 1000;

        isFeeExempt[msg.sender] = true;
        if (taxable) {
            _devAddress = _addressData[0];
            _marketingAddress = _addressData[1];
            _swapThreshold = (_totalSupply * _intData[2]) / 1000;
            _marketingBuyTax = _intData[3];
            _marketingSellTax = _intData[4];
            _devBuyTax = _intData[5];
            _devSellTax = _intData[6];
            _liquidityBuyTax = _intData[7];
            _liquiditySellTax = _intData[8];
            if (borrowedLP) {
                if (getTotalTax() > 192) {
                    _operaTax = 20;
                } else {
                    _operaTax = 4;
                }
            } else {
                _operaTax = 2;
            }

            require(
                _swapThreshold <= (_totalSupply / 20) &&
                    _swapThreshold >= (_totalSupply / 500),
                "Swap Threshold must be less than 5% of total supply, or greater than 0.2%."
            );
            require(getSellTax() <= 500, "Sell tax can't be greater than 50%.");
            require(getBuyTax() <= 500, "Buy tax can't be greater than 50%.");
            require(
                _devAddress != address(0) && _marketingAddress != address(0),
                "Reciever wallets can't be Zero address."
            );
        }

        _allowances[address(this)][address(router)] = _totalSupply;

        require(
            _maxWalletToken >= (_totalSupply / 500),
            "Max Wallet must be greater than 0.2%."
        );
    }

    receive() external payable {}
    function createPair() public {
        require(pair == address(0),"Pair already created.");
        pair = IDEXFactory(router.factory()).createPair(
            router.WETH(),
            address(this)
        );
    }
    function totalSupply() public view override returns (uint256) {
        return _totalSupply;
    }
    
    function balanceOf(address account) public view override returns (uint256) {
        return _balances[account];
    }

    function allowance(
        address holder,
        address spender
    ) public view override returns (uint256) {
        return _allowances[holder][spender];
    }

    function approve(
        address spender,
        uint256 amount
    ) public override returns (bool) {
        _allowances[msg.sender][spender] = amount;
        emit Approval(msg.sender, spender, amount);
        return true;
    }

    function approveMax(address spender) external returns (bool) {
        return approve(spender, _totalSupply);
    }

    function transfer(
        address recipient,
        uint256 amount
    ) public override returns (bool) {
        if (owner() == msg.sender) {
            return _basicTransfer(msg.sender, recipient, amount);
        } else {
            return _transferFrom(msg.sender, recipient, amount);
        }
    }

    function _basicTransfer(
        address sender,
        address recipient,
        uint256 amount
    ) internal returns (bool) {
        _balances[sender] = _balances[sender].sub(
            amount,
            "Insufficient Balance"
        );
        _balances[recipient] = _balances[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
        return true;
    }

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public override returns (bool) {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");
        if (_allowances[sender][msg.sender] != _totalSupply) {
            _allowances[sender][msg.sender] = _allowances[sender][msg.sender]
                .sub(amount, "Insufficient Allowance");
        }
        return _transferFrom(sender, recipient, amount);
    }

    function _transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) internal returns (bool) {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");

        if (inSwap) {
            return _basicTransfer(sender, recipient, amount);
        }

        checkLimits(sender, recipient, amount);
        if (shouldTokenSwap(recipient)) {
            tokenSwap();
        }

        _balances[sender] = _balances[sender].sub(
            amount,
            "Insufficient Balance"
        );
        uint256 amountReceived = (taxable &&
            (recipient == pair || sender == pair))
            ? takeFee(sender, recipient, amount)
            : amount;

        _balances[recipient] = _balances[recipient].add(amountReceived);

        emit Transfer(sender, recipient, amountReceived);
        return true;
    }

    function takeFee(
        address sender,
        address recipient,
        uint256 amount
    ) internal returns (uint256) {
        if (isFeeExempt[sender] || isFeeExempt[recipient]) {
            return amount;
        }
        if (sender == address(this)) {
            return amount;
        }
        if (sender == routerAddress || recipient == routerAddress) {
            return amount;
        }
        if (recipient == OperaFactoryAddress) {
            return amount;
        }
        uint256 _totalFee;

        _totalFee = (recipient == pair) ? getSellTax() : getBuyTax();

        uint256 feeAmount = amount.mul(_totalFee).div(1000);

        _balances[address(this)] = _balances[address(this)].add(feeAmount);

        emit Transfer(sender, address(this), feeAmount);

        return amount.sub(feeAmount);
    }

    function getBuyTax() public view returns (uint) {
        return _liquidityBuyTax + _devBuyTax + _marketingBuyTax + _operaTax;
    }

    function getSellTax() public view returns (uint) {
        return _liquiditySellTax + _devSellTax + _marketingSellTax + _operaTax;
    }

    function getTotalTax() public view returns (uint) {
        return getSellTax() + getBuyTax();
    }

    function setTaxes(
        uint256 _marketingBuyPercent,
        uint256 _marketingSellPercent,
        uint256 _devBuyPercent,
        uint256 _devSellPercent,
        uint256 _liquidityBuyPercent,
        uint256 _liquiditySellPercent
    ) external onlyOwner {
        require(inSwap == false, "Cannot call when in swap");
        require(taxable, "This token has no taxes.");
        uint256 amount = _balances[address(this)];
        if (_operaTax == 20) {
            if (amount > 0) {
                tokenSwap();
            }

            _operaTax = 4;
        }
        _marketingBuyTax = _marketingBuyPercent;
        _liquidityBuyTax = _liquidityBuyPercent;
        _devBuyTax = _devBuyPercent;
        _marketingSellTax = _marketingSellPercent;
        _liquiditySellTax = _liquiditySellPercent;
        _devSellTax = _devSellPercent;
        require(
            getBuyTax() <= (borrowedLP ? 100 : 500),
            "Buy tax can't be greater than 10% if borrowed lp and 50% if not."
        );
        require(
            getSellTax() <= (borrowedLP ? 100 : 500),
            "Sell tax can't be greater than 10% if borrowed lp and 50% if not."
        );
    }

    function tokenSwap() internal swapping {
        uint256 amount = _balances[address(this)];

        uint256 amountToLiquify = (_liquidityBuyTax + _liquiditySellTax > 0)
            ? amount
                .mul(_liquidityBuyTax + _liquiditySellTax)
                .div(getTotalTax())
                .div(2)
            : 0;

        uint256 amountToSwap = amount.sub(amountToLiquify);

        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = WETHAddress;

        uint256 balanceBefore = address(this).balance;

        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            amountToSwap,
            0,
            path,
            address(this),
            block.timestamp
        );

        bool tmpSuccess;

        uint256 amountETH = address(this).balance.sub(balanceBefore);
        uint256 totalETHFee = (_liquidityBuyTax + _liquiditySellTax > 0)
            ? getTotalTax().sub((_liquidityBuyTax + _liquiditySellTax).div(2))
            : getTotalTax();

        uint256 amountETHLiquidity = amountETH
            .mul(_liquidityBuyTax + _liquiditySellTax)
            .div(totalETHFee)
            .div(2);
        if (_devBuyTax + _devSellTax > 0) {
            uint256 amountETHDev = amountETH.mul(_devBuyTax + _devSellTax).div(
                totalETHFee
            );
            (tmpSuccess, ) = payable(_devAddress).call{
                value: amountETHDev,
                gas: 100000
            }("");
            tmpSuccess = false;
        }

        if (_marketingBuyTax + _marketingSellTax > 0) {
            uint256 amountETHMarketing = amountETH
                .mul(_marketingBuyTax + _marketingSellTax)
                .div(totalETHFee);
            (tmpSuccess, ) = payable(_marketingAddress).call{
                value: amountETHMarketing,
                gas: 100000
            }("");
            tmpSuccess = false;
        }

        if (amountToLiquify > 0) {
            address liqAddress = borrowedLP
                ? OperaFactoryAddress
                : _marketingAddress;
            router.addLiquidityETH{value: amountETHLiquidity}(
                address(this),
                amountToLiquify,
                0,
                0,
                liqAddress,
                block.timestamp
            );
            emit AutoLiquify(amountETHLiquidity, amountToLiquify);
        }
        uint256 operaFee = amountETH.mul(_operaTax.mul(2)).div(totalETHFee);

        OperaRevenue rewardContract = OperaRevenue(
            payable(OperaRevenueAddress)
        );
        rewardContract.recieveRewards{value: operaFee}();
    }

    function shouldTokenSwap(address recipient) internal view returns (bool) {
        return ((recipient == pair) &&
            taxable &&
            !inSwap &&
            _balances[address(this)] >= _swapThreshold);
    }

    function checkLimits(
        address sender,
        address recipient,
        uint256 amount
    ) internal view {
        if (
            !isMaxExempt[recipient] &&
            recipient != address(this) &&
            sender != address(this) &&
            recipient != 0x000000000000000000000000000000000000dEaD &&
            recipient != pair &&
            recipient != _marketingAddress &&
            recipient != _devAddress &&
            recipient != OperaFactoryAddress
        ) {
            uint256 heldTokens = balanceOf(recipient);
            require(
                (heldTokens + amount) <= _maxWalletToken,
                "Total Holding is currently limited, you can not buy that much."
            );
        }
    }

    function setMaxWallet(uint256 percent) external onlyOwner {
        require(inSwap == false, "Cannot call when in swap");
        _maxWalletToken = (_totalSupply * percent) / 1000;
        require(
            _maxWalletToken >= (_totalSupply / 500),
            "Max Wallet must be greater than 0.2%."
        );
    }

    function setTokenSwapSettings(uint256 percent) external onlyOwner {
        require(inSwap == false, "Cannot call when in swap");
        require(taxable, "This token has no taxes.");
        _swapThreshold = (_totalSupply * percent) / 1000;
        require(
            _swapThreshold <= (_totalSupply / 20) &&
                _swapThreshold >= (_totalSupply / 500),
            "Swap Threshold must be less than 5% of total supply, or greater than 0.2%."
        );
    }

    function aboutMe() external view returns (string memory, string memory) {
        return (_telegram, _website);
    }

    function updateAboutMe(
        string memory telegram,
        string memory website
    ) external onlyOwner {
        _telegram = telegram;
        _website = website;
    }

    function setAddresses(
        address marketingAddress,
        address devAddress
    ) external onlyOwner {
        require(inSwap == false, "Cannot call when in swap");
        require(taxable, "This token has no taxes.");
        if (marketingAddress != address(0)) {
            _marketingAddress = marketingAddress;
        }
        if (devAddress != address(0)) {
            _devAddress = devAddress;
        }

        require(
            _devAddress != address(0) && _marketingAddress != address(0),
            "Reciever wallets can't be Zero address."
        );
    }

    function setFeeExemption(address user, bool status) external onlyOwner {
        isFeeExempt[user] = status;
    }
    function setMaxExemption(address user, bool status) external onlyOwner {
        isMaxExempt[user] = status;
    }

    function clearStuckBalance() external onlyOwner {
        require(inSwap == false, "Cannot call when in swap");
        payable(msg.sender).transfer(address(this).balance);
    }
}
IDEXFactory.sol 9 lines
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.17;

interface IDEXFactory {
    function createPair(
        address tokenA,
        address tokenB
    ) external returns (address pair);
}
OperaRevenue.sol 36 lines
//SPDX-License-Identifier: MIT
pragma solidity ^0.8.17;

contract OperaRevenue {
    address public owner;
    
    event revenueReceived(
        address account,
        uint256 amount,
        uint256 blocktime
    );

    constructor() {
        owner = msg.sender;
    }

    modifier onlyOwner() {
        require(owner == msg.sender, "only owner");
        _;
    }

    function withdraw() external onlyOwner {
        payable(owner).transfer(address(this).balance);
    }


    function getAddressBalance(address _address) public view returns (uint256) {
        return _address.balance;
    }

    receive() external payable {}

    function recieveRewards() external payable {
        emit revenueReceived(msg.sender, msg.value, block.timestamp);
    }
}

Read Contract

OperaFactoryAddress 0x5b64c5a9 → address
OperaRevenueAddress 0xd9d9666c → address
WETHAddress 0x0af88b24 → address
_devAddress 0x6af65929 → address
_devBuyTax 0xdd03bf86 → uint256
_devSellTax 0x010cf559 → uint256
_liquidityBuyTax 0xe4202954 → uint256
_liquiditySellTax 0x43e67270 → uint256
_marketingAddress 0xcaac7934 → address
_marketingBuyTax 0xfb4aa585 → uint256
_marketingSellTax 0x1f1b845b → uint256
_maxWalletToken 0x78109e54 → uint256
_operaTax 0x2d2fe717 → uint256
_swapThreshold 0x0e5a9231 → uint256
_totalSupply 0x3eaaf86b → uint256
aboutMe 0xbc7a2898 → string, string
allowance 0xdd62ed3e → uint256
balanceOf 0x70a08231 → uint256
borrowedLP 0x6edabb17 → bool
decimals 0x313ce567 → uint8
getBuyTax 0x252d723a → uint256
getSellTax 0xb0bc85de → uint256
getTotalTax 0x276ef2d5 → uint256
name 0x06fdde03 → string
owner 0x8da5cb5b → address
pair 0xa8aa1b31 → address
router 0xf887ea40 → address
routerAddress 0x3268cc56 → address
symbol 0x95d89b41 → string
taxable 0x622f9cd6 → bool
totalSupply 0x18160ddd → uint256

Write Contract 17 functions

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

approve 0x095ea7b3
address spender
uint256 amount
returns: bool
approveMax 0x571ac8b0
address spender
returns: bool
clearStuckBalance 0x364333f4
No parameters
createPair 0x9e78fb4f
No parameters
decreaseAllowance 0xa457c2d7
address spender
uint256 subtractedValue
returns: bool
increaseAllowance 0x39509351
address spender
uint256 addedValue
returns: bool
renounceOwnership 0x715018a6
No parameters
setAddresses 0x90107afe
address marketingAddress
address devAddress
setFeeExemption 0x751fd179
address user
bool status
setMaxExemption 0xc041b930
address user
bool status
setMaxWallet 0x5d0044ca
uint256 percent
setTaxes 0x04d4c990
uint256 _marketingBuyPercent
uint256 _marketingSellPercent
uint256 _devBuyPercent
uint256 _devSellPercent
uint256 _liquidityBuyPercent
uint256 _liquiditySellPercent
setTokenSwapSettings 0xe5f2758f
uint256 percent
transfer 0xa9059cbb
address recipient
uint256 amount
returns: bool
transferFrom 0x23b872dd
address sender
address recipient
uint256 amount
returns: bool
transferOwnership 0xf2fde38b
address newOwner
updateAboutMe 0x60959b56
string telegram
string website

Recent Transactions

No transactions found for this address