Cryo Explorer Ethereum Mainnet

Address Contract Verified

Address 0x53B73FEeFe3C30984b40dC3383983314A3FFfB58
Balance 0.000000000 ETH
Nonce 1
Code Size 13921 bytes
Indexed Transactions 0
External Etherscan · Sourcify

Contract Bytecode

13921 bytes
0x6080604052600436106103cc5760003560e01c806370a08231116101fb578063bbc0c74211610117578063dd62ed3e116100a5578063ee40166e11610077578063ee40166e14610bc8578063ee6bdf8914610bde578063eff165bd14610bfe578063f2fde38b14610c14578063f8b45b0514610c3457005b8063dd62ed3e14610b2c578063e1f1487414610b72578063e2f4560514610b92578063eba4c33314610ba857005b8063c8c8ebe4116100e9578063c8c8ebe414610a97578063cd0fd14914610aad578063d5f3948814610acd578063d73e12f614610b01578063d85ba06314610b1657005b8063bbc0c74214610a16578063bbd9e5b414610a37578063beb08ab914610a57578063c024666814610a7757005b8063924de9b711610194578063a457c2d711610166578063a457c2d714610965578063a9059cbb14610985578063aa498023146109a5578063b62496f5146109c5578063b6f68691146109f557005b8063924de9b7146108fa5780639292caaf1461091a57806395d89b41146109305780639a7a23d61461094557005b8063751039fc116101cd578063751039fc146108925780637571336a146108a75780638a8c523c146108c75780638da5cb5b146108dc57005b806370a0823114610807578063715018a61461083d578063719276281461085257806371fc46881461087257005b80632d8199c7116102ea5780634a62bb65116102835780635bea1f5d116102555780635bea1f5d146107855780636a3ffffb146107a55780636a486a8e146107bb5780636a7bd94b146107d15780636ddd1713146107e657005b80634a62bb65146106eb5780634fbee1931461070c5780635009716c14610745578063518fbc081461076557005b806339509351116102bc578063395093511461067f5780633f8a62041461069f57806347062402146106b557806349bd5a5e146106cb57005b80632d8199c7146106145780632e71c87714610629578063313ce56714610649578063343572fa1461066557005b80631694505e1161036757806320d3cc9e1161033957806320d3cc9e1461059e57806323b872dd146105b357806327163663146105d357806327c8f835146105e85780632b14ca56146105fe57005b80631694505e146104fe57806318160ddd1461054a5780631c499ab01461056957806320800a001461058957005b806306fdde03116103a057806306fdde031461046c578063095ea7b31461048e5780630ed91680146104ae57806310d5de53146104ce57005b8062ae3bf8146103ce57806302a32ae2146103ee57806302ce58131461042257806306c933d81461043c575b005b3480156103da57600080fd5b506103cc6103e936600461308c565b610c4a565b3480156103fa57600080fd5b50601d5461040d90610100900460ff1681565b60405190151581526020015b60405180910390f35b34801561042e57600080fd5b50601b5461040d9060ff1681565b34801561044857600080fd5b5061040d61045736600461308c565b601c6020526000908152604090205460ff1681565b34801561047857600080fd5b50610481610da5565b60405161041991906130f6565b34801561049a57600080fd5b5061040d6104a9366004613109565b610e37565b3480156104ba57600080fd5b506103cc6104c936600461308c565b610e4e565b3480156104da57600080fd5b5061040d6104e936600461308c565b60186020526000908152604090205460ff1681565b34801561050a57600080fd5b506105327f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6040516001600160a01b039091168152602001610419565b34801561055657600080fd5b506002545b604051908152602001610419565b34801561057557600080fd5b506103cc610584366004613135565b610efc565b34801561059557600080fd5b506103cc610fa3565b3480156105aa57600080fd5b506103cc6110d5565b3480156105bf57600080fd5b5061040d6105ce36600461314e565b611151565b3480156105df57600080fd5b506103cc6111a3565b3480156105f457600080fd5b5061053261dead81565b34801561060a57600080fd5b5061055b60135481565b34801561062057600080fd5b506103cc611223565b34801561063557600080fd5b506103cc61064436600461308c565b6112a1565b34801561065557600080fd5b5060405160128152602001610419565b34801561067157600080fd5b50601d5461040d9060ff1681565b34801561068b57600080fd5b5061040d61069a366004613109565b61134f565b3480156106ab57600080fd5b5061055b60145481565b3480156106c157600080fd5b5061055b60115481565b3480156106d757600080fd5b50600754610532906001600160a01b031681565b3480156106f757600080fd5b50600b5461040d90600160b81b900460ff1681565b34801561071857600080fd5b5061040d61072736600461308c565b6001600160a01b031660009081526017602052604090205460ff1690565b34801561075157600080fd5b50601d5461040d9062010000900460ff1681565b34801561077157600080fd5b506103cc61078036600461308c565b611386565b34801561079157600080fd5b506103cc6107a0366004613135565b611434565b3480156107b157600080fd5b5061055b600d5481565b3480156107c757600080fd5b5061055b60125481565b3480156107dd57600080fd5b506103cc6114b6565b3480156107f257600080fd5b50600b5461040d90600160b01b900460ff1681565b34801561081357600080fd5b5061055b61082236600461308c565b6001600160a01b031660009081526020819052604090205490565b34801561084957600080fd5b506103cc611535565b34801561085e57600080fd5b506103cc61086d36600461308c565b6115a9565b34801561087e57600080fd5b506103cc61088d366004613135565b611657565b34801561089e57600080fd5b5061040d6116de565b3480156108b357600080fd5b506103cc6108c236600461319d565b611748565b3480156108d357600080fd5b506103cc6117d2565b3480156108e857600080fd5b506005546001600160a01b0316610532565b34801561090657600080fd5b506103cc6109153660046131d6565b611908565b34801561092657600080fd5b5061055b601a5481565b34801561093c57600080fd5b5061048161197f565b34801561095157600080fd5b506103cc61096036600461319d565b61198e565b34801561097157600080fd5b5061040d610980366004613109565b6119f5565b34801561099157600080fd5b5061040d6109a0366004613109565b611a2c565b3480156109b157600080fd5b506103cc6109c0366004613135565b611a39565b3480156109d157600080fd5b5061040d6109e036600461308c565b60196020526000908152604090205460ff1681565b348015610a0157600080fd5b50601d5461040d906301000000900460ff1681565b348015610a2257600080fd5b50600b5461040d90600160a81b900460ff1681565b348015610a4357600080fd5b506103cc610a523660046131f3565b611ad9565b348015610a6357600080fd5b50600854610532906001600160a01b031681565b348015610a8357600080fd5b506103cc610a9236600461319d565b611bc6565b348015610aa357600080fd5b5061055b600e5481565b348015610ab957600080fd5b50600954610532906001600160a01b031681565b348015610ad957600080fd5b506105327f000000000000000000000000b75de041db2989e917bc2dd809681165f6fd9a1a81565b348015610b0d57600080fd5b506103cc611c48565b348015610b2257600080fd5b5061055b60105481565b348015610b3857600080fd5b5061055b610b4736600461327c565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b348015610b7e57600080fd5b50600b54610532906001600160a01b031681565b348015610b9e57600080fd5b5061055b60165481565b348015610bb457600080fd5b506103cc610bc3366004613135565b611cbe565b348015610bd457600080fd5b5061055b600c5481565b348015610bea57600080fd5b50600a54610532906001600160a01b031681565b348015610c0a57600080fd5b5061055b60155481565b348015610c2057600080fd5b506103cc610c2f36600461308c565b611d45565b348015610c4057600080fd5b5061055b600f5481565b6005546001600160a01b03163314610c7d5760405162461bcd60e51b8152600401610c74906132aa565b60405180910390fd5b6040516370a0823160e01b815230600482015281906000906001600160a01b038316906370a0823190602401602060405180830381865afa158015610cc6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cea91906132df565b905080600003610d0d5760405163081ceff360e41b815260040160405180910390fd5b816001600160a01b031663a9059cbb610d2e6005546001600160a01b031690565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602481018490526044016020604051808303816000875af1158015610d7b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d9f91906132f8565b50505050565b606060038054610db490613315565b80601f0160208091040260200160405190810160405280929190818152602001828054610de090613315565b8015610e2d5780601f10610e0257610100808354040283529160200191610e2d565b820191906000526020600020905b815481529060010190602001808311610e1057829003601f168201915b5050505050905090565b6000610e44338484611e30565b5060015b92915050565b6005546001600160a01b03163314610e785760405162461bcd60e51b8152600401610c74906132aa565b6001600160a01b038116610e9f5760405163f12aab9d60e01b815260040160405180910390fd5b600b546040516001600160a01b03918216918316907f5119b7c42595066c7ec6106563cbe03442f1ba8d305d4981ce87bc80ad3d8ddd90600090a3600b80546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b03163314610f265760405162461bcd60e51b8152600401610c74906132aa565b612710610f3260025490565b610f3d906064613365565b610f47919061337c565b811015610f675760405163a51c909d60e01b815260040160405180910390fd5b600f8190556040518181527f12528a3c61e0f3b2d6fc707a9fc58b1af86e252cad0d7f4c154ebeabb162dace906020015b60405180910390a150565b6005546001600160a01b03163314610fcd5760405162461bcd60e51b8152600401610c74906132aa565b60026006540361101f5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610c74565b60026006554760008190036110475760405163081ceff360e41b815260040160405180910390fd5b600061105b6005546001600160a01b031690565b6001600160a01b03168260405160006040518083038185875af1925050503d80600081146110a5576040519150601f19603f3d011682016040523d82523d6000602084013e6110aa565b606091505b50509050806110cc5760405163081ceff360e41b815260040160405180910390fd5b50506001600655565b336001600160a01b037f000000000000000000000000b75de041db2989e917bc2dd809681165f6fd9a1a161461111d5760405162461bcd60e51b8152600401610c749061339e565b601d54610100900460ff166111445760405162461bcd60e51b8152600401610c74906133ce565b601d805461ff0019169055565b600061115e848484611f55565b6001600160a01b0384166000908152600160209081526040808320338085529252909120546111999186916111949086906133fd565b611e30565b5060019392505050565b336001600160a01b037f000000000000000000000000b75de041db2989e917bc2dd809681165f6fd9a1a16146111eb5760405162461bcd60e51b8152600401610c749061339e565b601d546301000000900460ff166112145760405162461bcd60e51b8152600401610c74906133ce565b601d805463ff00000019169055565b336001600160a01b037f000000000000000000000000b75de041db2989e917bc2dd809681165f6fd9a1a161461126b5760405162461bcd60e51b8152600401610c749061339e565b601d5462010000900460ff166112935760405162461bcd60e51b8152600401610c74906133ce565b601d805462ff000019169055565b6005546001600160a01b031633146112cb5760405162461bcd60e51b8152600401610c74906132aa565b6001600160a01b0381166112f25760405163f12aab9d60e01b815260040160405180910390fd5b600a546040516001600160a01b03918216918316907fd5bab94e3f642caa9f25830fdd5537e2df93309890c3a49998c6d0eb0c8c053b90600090a3600a80546001600160a01b0319166001600160a01b0392909216919091179055565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610e44918590611194908690613410565b6005546001600160a01b031633146113b05760405162461bcd60e51b8152600401610c74906132aa565b6001600160a01b0381166113d75760405163f12aab9d60e01b815260040160405180910390fd5b6009546040516001600160a01b03918216918316907f5636c2b58fb71de1761762b630fb3be56d15e4474444f0f8e517c11aad57033a90600090a3600980546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b0316331461145e5760405162461bcd60e51b8152600401610c74906132aa565b6103e881111561148157604051633f86cacf60e11b815260040160405180910390fd5b60158190556040518181527fd08d3952aefe7cb7a7c742db67cd6bdb7cfea25b875f3797f4959c12a261197790602001610f98565b6005546001600160a01b031633146114e05760405162461bcd60e51b8152600401610c74906132aa565b601b5460ff166115295760405162461bcd60e51b815260206004820152601460248201527357686974656c697374206e6f742061637469766560601b6044820152606401610c74565b601b805460ff19169055565b6005546001600160a01b0316331461155f5760405162461bcd60e51b8152600401610c74906132aa565b6005546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b6005546001600160a01b031633146115d35760405162461bcd60e51b8152600401610c74906132aa565b6001600160a01b0381166115fa5760405163f12aab9d60e01b815260040160405180910390fd5b6008546040516001600160a01b03918216918316907fb91dbdeaf34f885ccae2d8abc3967cb03c079b6af2c7944e3893fd29427d75e790600090a3600880546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b031633146116815760405162461bcd60e51b8152600401610c74906132aa565b6011548111156116a457604051631f333b8160e01b815260040160405180910390fd5b601181905560108190556040518181527f491005465ab6f82fd10f4b13a1b1e5ca452bc4856b019f63775e33a6b1ad2feb90602001610f98565b6005546000906001600160a01b0316331461170b5760405162461bcd60e51b8152600401610c74906132aa565b600b805460ff60b81b191690556040517f7bfa7bacf025baa75e5308bf15bcf2948f406c7ebe3eb1a8bb611862b9d647ef90600090a15060015b90565b6005546001600160a01b031633146117725760405162461bcd60e51b8152600401610c74906132aa565b6001600160a01b038216600081815260186020908152604091829020805460ff191685151590811790915591519182527f388758d239a7790471b273e3760fe65d6424024ca3adb4582f843cec8e71ba5e91015b60405180910390a25050565b6005546001600160a01b031633146117fc5760405162461bcd60e51b8152600401610c74906132aa565b6008546001600160a01b03166118255760405163f12aab9d60e01b815260040160405180910390fd5b6009546001600160a01b031661184e5760405163f12aab9d60e01b815260040160405180910390fd5b600a546001600160a01b03166118775760405163f12aab9d60e01b815260040160405180910390fd5b600b546001600160a01b03166118a05760405163f12aab9d60e01b815260040160405180910390fd5b600b805462ffffff60a81b19166201010160a81b17905543600c81905542600d819055601a55601b805460ff191660011790556040519081527fb3da2db3dfc3778f99852546c6e9ab39ec253f9de7b0847afec61bd27878e9239060200160405180910390a1565b6005546001600160a01b031633146119325760405162461bcd60e51b8152600401610c74906132aa565b600b8054821515600160b01b0260ff60b01b199091161790556040517f436b6cf978c7b6998fcce43dfe4d37e3a0dc2bb780144a2eb55d7138201e8a1290610f9890831515815260200190565b606060048054610db490613315565b6005546001600160a01b031633146119b85760405162461bcd60e51b8152600401610c74906132aa565b6007546001600160a01b03908116908316036119e757604051630277ae4960e21b815260040160405180910390fd5b6119f18282612685565b5050565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610e449185906111949086906133fd565b6000610e44338484611f55565b6005546001600160a01b03163314611a635760405162461bcd60e51b8152600401610c74906132aa565b612710611a6f60025490565b611a7a906064613365565b611a84919061337c565b811015611aa45760405163c7d1448f60e01b815260040160405180910390fd5b600e8190556040518181527f7c1cb3702d8e1fa6d24b12dd90670ab69c6d66d58233103d37da8b07d6b850ac90602001610f98565b6005546001600160a01b03163314611b035760405162461bcd60e51b8152600401610c74906132aa565b60005b82811015610d9f5781601c6000868685818110611b2557611b25613423565b9050602002016020810190611b3a919061308c565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055838382818110611b7457611b74613423565b9050602002016020810190611b89919061308c565b6001600160a01b03167faab7954e9d246b167ef88aeddad35209ca2489d95a8aeb59e288d9b19fae5a5460405160405180910390a2600101611b06565b6005546001600160a01b03163314611bf05760405162461bcd60e51b8152600401610c74906132aa565b6001600160a01b038216600081815260176020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df791016117c6565b336001600160a01b037f000000000000000000000000b75de041db2989e917bc2dd809681165f6fd9a1a1614611c905760405162461bcd60e51b8152600401610c749061339e565b601d5460ff16611cb25760405162461bcd60e51b8152600401610c74906133ce565b601d805460ff19169055565b6005546001600160a01b03163314611ce85760405162461bcd60e51b8152600401610c74906132aa565b601354811115611d0b57604051631f333b8160e01b815260040160405180910390fd5b601381905560128190556040518181527f16df2c25b3392f376a685a3826b941b25140108d95899d6b1bd983feafbc1c5590602001610f98565b6005546001600160a01b03163314611d6f5760405162461bcd60e51b8152600401610c74906132aa565b6001600160a01b038116611dd45760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610c74565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b038316611e925760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610c74565b6001600160a01b038216611ef35760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610c74565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b038316611f7c57604051630b07e54560e11b815260040160405180910390fd5b6001600160a01b038216611fa357604051633a954ecd60e21b815260040160405180910390fd5b600b54600160a81b900460ff16612014576001600160a01b03831660009081526017602052604090205460ff16158015611ff657506001600160a01b03821660009081526017602052604090205460ff16155b1561201457604051632924508760e21b815260040160405180910390fd5b8060000361202d57612028838360006126d9565b505050565b600b54600160b81b900460ff1680156120505750600b54600160a01b900460ff16155b1561244f576005546001600160a01b0384811691161480159061208157506005546001600160a01b03838116911614155b801561209557506001600160a01b03821615155b80156120ac57506001600160a01b03821661dead14155b1561244f57601b5460009060ff1680156120d35750601a546120d09061012c613410565b42105b90506000808215612129576127106120ea60025490565b6120f5906028613365565b6120ff919061337c565b915061271061210d60025490565b612118906028613365565b612122919061337c565b9050612147565b5050600e54600f54601b5460ff161561214757601b805460ff191690555b82156122c4576001600160a01b03861660009081526019602052604090205460ff16156121ab576001600160a01b0385166000908152601c602052604090205460ff166121a65760405162461bcd60e51b8152600401610c7490613439565b6122c4565b6001600160a01b03851660009081526019602052604090205460ff1615612204576001600160a01b0386166000908152601c602052604090205460ff166121a65760405162461bcd60e51b8152600401610c7490613439565b6001600160a01b0386166000908152601c602052604090205460ff16801561224457506001600160a01b0385166000908152601c602052604090205460ff165b6122c45760405162461bcd60e51b815260206004820152604560248201527f426f74682073656e64657220616e6420726563697069656e74206d757374206260448201527f652077686974656c697374656420647572696e672077686974656c6973742070606482015264195c9a5bd960da1b608482015260a401610c74565b6001600160a01b03861660009081526019602052604090205460ff16801561230557506001600160a01b03851660009081526018602052604090205460ff16155b1561237a578184111561232b5760405163fdeb075d60e01b815260040160405180910390fd5b808461234c876001600160a01b031660009081526020819052604090205490565b6123569190613410565b11156123755760405163fd42866160e01b815260040160405180910390fd5b61244b565b6001600160a01b03851660009081526019602052604090205460ff1680156123bb57506001600160a01b03861660009081526018602052604090205460ff16155b156123e157818411156123755760405163fdeb075d60e01b815260040160405180910390fd5b6001600160a01b03851660009081526018602052604090205460ff1661244b578084612422876001600160a01b031660009081526020819052604090205490565b61242c9190613410565b111561244b5760405163fd42866160e01b815260040160405180910390fd5b5050505b3060009081526020819052604081205460165490919082108015919082906124805750600b54600160b01b900460ff165b80156124965750600b54600160a01b900460ff16155b80156124ba57506001600160a01b03851660009081526019602052604090205460ff165b80156124cf57506001600160a01b0386163014155b80156124f457506001600160a01b03861660009081526017602052604090205460ff16155b9050801561252657600b805460ff60a01b1916600160a01b17905561251884612840565b600b805460ff60a01b191690555b600b546001600160a01b03871660009081526017602052604090205460ff600160a01b90920482161591168061257457506001600160a01b03861660009081526017602052604090205460ff165b1561257d575060005b60008115612670576001600160a01b03871660009081526019602052604090205460ff1680156125af57506000601254115b156125ee57612710601254876125c59190613365565b6125cf919061337c565b905080601460008282546125e39190613410565b909155506126529050565b6001600160a01b03881660009081526019602052604090205460ff16801561261857506000601054115b15612652576127106010548761262e9190613365565b612638919061337c565b9050806014600082825461264c9190613410565b90915550505b8015612663576126638830836126d9565b61266d81876133fd565b95505b61267b8888886126d9565b5050505050505050565b6001600160a01b038216600081815260196020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6001600160a01b03831661273d5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610c74565b6001600160a01b03821661279f5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610c74565b6001600160a01b038316600090815260208190526040812080548392906127c79084906133fd565b90915550506001600160a01b038216600090815260208190526040812080548392906127f4908490613410565b92505081905550816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611f4891815260200190565b6002600654036128925760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610c74565b6002600655306000908152602081905260409020546014548115806128b5575080155b156128c157505061296e565b60006127106015546128d260025490565b6128dc9190613365565b6128e6919061337c565b905083818111156128f45750805b828111156128ff5750815b8381111561290a5750825b60165481101561291d575050505061296e565b600061292882612976565b9050801561295e57816014600082825461294291906133fd565b9091555047905080156129585761295881612c57565b50612968565b505050505061296e565b50505050505b506001600655565b6040805160028082526060820183526000928392919060208301908036833701905050905030816000815181106129af576129af613423565b60200260200101906001600160a01b031690816001600160a01b0316815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612a2d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a519190613480565b81600181518110612a6457612a64613423565b60200260200101906001600160a01b031690816001600160a01b031681525050612aaf307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d85611e30565b60405163791ac94760e01b815247906001600160a01b037f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d169063791ac94790612b0690879060009087903090429060040161349d565b600060405180830381600087803b158015612b2057600080fd5b505af1925050508015612b31575060015b612c0257612b3d61350f565b806308c379a003612b9f5750612b51613565565b80612b5c5750612ba1565b7fdf56312a616c0a93bb5bc464e3b9e2514160a42cbc69db8a095db22d397b4a198582604051612b8d9291906135ea565b60405180910390a16000935050612c50565b505b3d808015612bcb576040519150601f19603f3d011682016040523d82523d6000602084013e612bd0565b606091505b507fcac61de4cc24e08946cbe1f74266e89411092e0723d52258d0b9f3b6142c1df68582604051612b8d9291906135ea565b6000612c0e82476133fd565b60408051878152602081018390529192507fa808b9f34dc92cf15d3573b357678c78b5aeb0ae55a5d0fb3915b2a3611649c5910160405180910390a160019350505b5050919050565b80600003612c625750565b6000806000806000601d60029054906101000a900460ff1615612c91576106d69350612c8e8486613410565b94505b601d546301000000900460ff1615612cb5576101f49250612cb28386613410565b94505b601d5460ff1615612cd257610f239150612ccf8286613410565b94505b601d54610100900460ff1615612cf35750610f23612cf08186613410565b94505b84600003612d0357505050505050565b60008415612dc657600086612d18878a613365565b612d22919061337c565b9050612d2e8183613410565b600a546040519193506000916001600160a01b039091169083908381818185875af1925050503d8060008114612d80576040519150601f19603f3d011682016040523d82523d6000602084013e612d85565b606091505b5050905080612dc357600a54604080516001600160a01b0390921682526020820184905260008051602061360c833981519152910160405180910390a15b50505b8315612e8757600086612dd9868a613365565b612de3919061337c565b9050612def8183613410565b600b546040519193506000916001600160a01b039091169083908381818185875af1925050503d8060008114612e41576040519150601f19603f3d011682016040523d82523d6000602084013e612e46565b606091505b5050905080612e8457600b54604080516001600160a01b0390921682526020820184905260008051602061360c833981519152910160405180910390a15b50505b8215612f4857600086612e9a858a613365565b612ea4919061337c565b9050612eb08183613410565b6008546040519193506000916001600160a01b039091169083908381818185875af1925050503d8060008114612f02576040519150601f19603f3d011682016040523d82523d6000602084013e612f07565b606091505b5050905080612f4557600854604080516001600160a01b0390921682526020820184905260008051602061360c833981519152910160405180910390a15b50505b811561300957600086612f5b848a613365565b612f65919061337c565b9050612f718183613410565b6009546040519193506000916001600160a01b039091169083908381818185875af1925050503d8060008114612fc3576040519150601f19603f3d011682016040523d82523d6000602084013e612fc8565b606091505b505090508061300657600954604080516001600160a01b0390921682526020820184905260008051602061360c833981519152910160405180910390a15b50505b8681111561306b5760405162461bcd60e51b815260206004820152602960248201527f496e73756666696369656e74204554482062616c616e636520666f72206469736044820152683a3934b13aba34b7b760b91b6064820152608401610c74565b50505050505050565b6001600160a01b038116811461308957600080fd5b50565b60006020828403121561309e57600080fd5b81356130a981613074565b9392505050565b6000815180845260005b818110156130d6576020818501810151868301820152016130ba565b506000602082860101526020601f19601f83011685010191505092915050565b6020815260006130a960208301846130b0565b6000806040838503121561311c57600080fd5b823561312781613074565b946020939093013593505050565b60006020828403121561314757600080fd5b5035919050565b60008060006060848603121561316357600080fd5b833561316e81613074565b9250602084013561317e81613074565b929592945050506040919091013590565b801515811461308957600080fd5b600080604083850312156131b057600080fd5b82356131bb81613074565b915060208301356131cb8161318f565b809150509250929050565b6000602082840312156131e857600080fd5b81356130a98161318f565b60008060006040848603121561320857600080fd5b833567ffffffffffffffff81111561321f57600080fd5b8401601f8101861361323057600080fd5b803567ffffffffffffffff81111561324757600080fd5b8660208260051b840101111561325c57600080fd5b6020918201945092508401356132718161318f565b809150509250925092565b6000806040838503121561328f57600080fd5b823561329a81613074565b915060208301356131cb81613074565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6000602082840312156132f157600080fd5b5051919050565b60006020828403121561330a57600080fd5b81516130a98161318f565b600181811c9082168061332957607f821691505b60208210810361334957634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b8082028115828204841417610e4857610e4861334f565b60008261339957634e487b7160e01b600052601260045260246000fd5b500490565b60208082526016908201527513db9b1e4819195c1b1bde595c8818d85b8818d85b1b60521b604082015260600190565b60208082526015908201527415185e195cc8185b1c9958591e481c995d9bdad959605a1b604082015260600190565b81810381811115610e4857610e4861334f565b80820180821115610e4857610e4861334f565b634e487b7160e01b600052603260045260246000fd5b60208082526027908201527f4e6f742077686974656c697374656420647572696e672077686974656c697374604082015266081c195c9a5bd960ca1b606082015260800190565b60006020828403121561349257600080fd5b81516130a981613074565b600060a0820187835286602084015260a0604084015280865180835260c08501915060208801925060005b818110156134ef5783516001600160a01b03168352602093840193909201916001016134c8565b50506001600160a01b039590951660608401525050608001529392505050565b600060033d11156117455760046000803e5060005160e01c90565b601f8201601f1916810167ffffffffffffffff8111828210171561355e57634e487b7160e01b600052604160045260246000fd5b6040525050565b600060443d10156135735790565b6040513d600319016004823e80513d602482011167ffffffffffffffff8211171561359d57505090565b808201805167ffffffffffffffff8111156135b9575050505090565b3d84016003190182820160200111156135d3575050505090565b6135e26020828501018561352a565b509392505050565b82815260406020820152600061360360408301846130b0565b94935050505056fe1c43b9761b3fba5321ca8212bfc231945f668ccc0c446f333999eea9ce8fda81a26469706673582212200445f9ff9c42853ab4dc000cc1ca708c9fca37f2326b0427bfbcb23ed5d17d2764736f6c634300081b0033

Verified Source Code Full Match

Compiler: v0.8.27+commit.40a35a09 EVM: paris Optimization: Yes (200 runs)
IERC20Metadata.sol 10 lines
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.27;

import "./IERC20.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);
}
BLK.sol 795 lines
/**
     Telegram: https://t.me/BlocklanceGigs
     Twitter: https://x.com/BlocklanceGigs
     Website/Dapp: https://blocklance.work
     Docs: https://blocklances-organization.gitbook.io/blocklance-v1
     Medium: https://medium.com/@blocklance

     Blocklance is the first Web3-powered freelance marketplace designed to revolutionize the global gig economy 
     by addressing the limitations of traditional platforms. Leveraging blockchain technology, 
     Blocklance offers freelancers and recruiters a decentralized platform that eliminates high fees, 
     ensures data privacy, and enhances accessibility for users worldwide. With wallet-based sign-ups, 
     industry-low fees of just 5%, and AI-powered multilingual tools, Blocklance fosters seamless global collaboration. 
     As a gateway to Web3, it not only empowers the freelance community but also paves the way for millions to enter the blockchain ecosystem

     Officially Incubated by Sentinel Incubator - https://sentinelincubator.com
*/

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.27;

import "./IERC20.sol";
import "./IERC20Metadata.sol";
import "./ERC20.sol";
import "./Ownable.sol";
import "./ReentrancyGuard.sol";
import "./UniswapV2Contracts.sol";

contract BLK is ERC20, Ownable, ReentrancyGuard {
    // Uniswap router and pair addresses
    IUniswapV2Router02 public immutable uniswapV2Router;
    address public uniswapV2Pair;

    // Address where burned tokens are sent
    address public constant deadAddress = address(0xdead);

    // Wallets for fee distribution
    address public projectWallet;
    address public projectWalletTwo;
    address public incubatorWallet;
    address public referralWallet;

    // Swap and trading flags
    bool private swapping;
    bool public tradingActive = false;
    bool public swapEnabled = false;
    bool public limitsInEffect = true;

    // Block number and timestamp when trading was enabled
    uint256 public tradingActiveBlock;
    uint256 public tradingActiveTimestamp;

    // Maximum transaction amount and wallet balance
    uint256 public maxTransactionAmount;
    uint256 public maxWallet;

    // Fee percentages (per 10,000 units, where 10,000 = 100%)
    uint256 public buyTotalFees;
    uint256 public buyFee;

    uint256 public sellTotalFees;
    uint256 public sellFee;

    // Tokens accumulated for fees
    uint256 public tokensForFees;

    // Swap back percentage threshold (in basis points, out of 10,000)
    uint256 public maxSwapBackPercent = 50; // 0.5%

    // Minimum amount of tokens to trigger swap back (0.01% of total supply)
    uint256 public swapTokensAtAmount;

    // Mappings for fee and transaction exclusions
    mapping(address => bool) private _isExcludedFromFees;
    mapping(address => bool) public _isExcludedMaxTransactionAmount;

    // Automated market maker pairs
    mapping(address => bool) public automatedMarketMakerPairs;

    // Whitelist variables
    uint256 public whitelistStartTime;
    bool public whitelistActive = true;
    mapping(address => bool) public whitelistedAddresses;

    // Events for tracking state changes
    event ExcludeFromFees(address indexed account, bool isExcluded);
    event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value);
    event ProjectWalletUpdated(address indexed newWallet, address indexed oldWallet);
    event ProjectWalletTwoUpdated(address indexed newWallet, address indexed oldWallet);
    event IncubatorWalletUpdated(address indexed newWallet, address indexed oldWallet);
    event ReferralWalletUpdated(address indexed newWallet, address indexed oldWallet);
    event TradingEnabled(uint256 blockNumber);
    event LimitsRemoved();
    event MaxTransactionAmountUpdated(uint256 newAmount);
    event MaxWalletUpdated(uint256 newAmount);
    event ExcludedFromMaxTransaction(address indexed account, bool isExcluded);
    event SwapEnabledUpdated(bool enabled);
    event BuyFeesUpdated(uint256 fee);
    event SellFeesUpdated(uint256 fee);
    event MaxSwapBackPercentUpdated(uint256 newPercent);
    event TokenSwap(uint256 tokensSwapped, uint256 ethReceived);
    event TokenSwapFailed(uint256 tokenAmount);
    event TokenSwapFailedWithReason(uint256 tokenAmount, string reason);
    event TokenSwapFailedWithData(uint256 tokenAmount, bytes data);
    event TransferFailed(address to, uint256 amount);
    event Whitelisted(address indexed account);

    // Custom Errors
    error TradingNotActive();
    error ExceedsMaxTransactionAmount();
    error ExceedsMaxWalletAmount();
    error MaxTransactionAmountTooLow();
    error MaxWalletTooLow();
    error CannotRemovePrimaryPair();
    error NewWalletIsZeroAddress();
    error CannotIncreaseFees();
    error TransferFromZeroAddress();
    error TransferToZeroAddress();
    error SwapFailed();
    error MaxSwapBackPercentTooHigh();

    // Deployer address
    address public immutable deployer;

    // Tax enablement flags
    bool public isProjectWalletTaxEnabled = true;
    bool public isProjectWalletTwoTaxEnabled = true;
    bool public isIncubatorWalletTaxEnabled = true;
    bool public isReferralWalletTaxEnabled = true;

    /**
     * @dev Constructor initializes the token and sets up Uniswap pair.
     * @param _router Address of the UniswapV2Router02.
     */
    constructor(address _router) ERC20("Blocklance", "BLK") {
        address _owner = _msgSender();
        deployer = _owner;

        uint256 totalSupply_ = 100_000_000 * (10 ** decimals());

        // Adjusted percentages per 10,000 units
        maxTransactionAmount = (totalSupply_ * 150) / 10_000; // 1.5% of total supply
        maxWallet = (totalSupply_ * 150) / 10_000; // 1.5% of total supply

        // Fee percentages (per 10,000 units, where 10,000 = 100%)
        buyFee = 2500; // 25%
        buyTotalFees = buyFee;

        sellFee = 3000; // 30%
        sellTotalFees = sellFee;

        // Set initial wallets
        projectWallet = address(0xaA334785e9cC08cF35C7FD3a7c84964649a150d3);
        projectWalletTwo = address(0x8637b1691A58CEb11F115843E1e8630EDebc584a);
        incubatorWallet = address(0x85dBe4ce3c809DAC17E4B1D32a5A2478038a3ae1);
        referralWallet = address(0x4f82b6Bda395C43A047dDc30CD6eDf7479A2C7Af);

        if (_router == address(0)) revert NewWalletIsZeroAddress();

        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(_router);

        uniswapV2Router = _uniswapV2Router;

        // Exclude router from max transaction amount
        excludeFromMaxTransaction(address(_uniswapV2Router), true);

        // Create or get existing Uniswap pair
        address existingPair = IUniswapV2Factory(_uniswapV2Router.factory())
            .getPair(address(this), _uniswapV2Router.WETH());
        if (existingPair != address(0)) {
            uniswapV2Pair = existingPair;
        } else {
            uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
                .createPair(address(this), _uniswapV2Router.WETH());
        }

        // Set the pair as an AMM pair
        _setAutomatedMarketMakerPair(uniswapV2Pair, true);

        // Exclude Uniswap pair from max transaction limits
        excludeFromMaxTransaction(uniswapV2Pair, true);

        // Exclude from fees and max transaction limits
        excludeFromFees(_owner, true);
        excludeFromFees(address(this), true);
        excludeFromFees(deadAddress, true);

        excludeFromMaxTransaction(_owner, true);
        excludeFromMaxTransaction(address(this), true);
        excludeFromMaxTransaction(deadAddress, true);

        // Set the minimum tokens to swap back (0.01% of total supply)
        swapTokensAtAmount = (totalSupply_ * 1) / 10_000; // 0.01%

        // Initialize whitelist
        whitelistActive = true;

        // Mint total supply to owner
        _mint(_owner, totalSupply_);
    }

    /**
     * @dev Enables trading and allows swaps.
     */
    function enableTrading() external onlyOwner {
        if (projectWallet == address(0)) revert NewWalletIsZeroAddress();
        if (projectWalletTwo == address(0)) revert NewWalletIsZeroAddress();
        if (incubatorWallet == address(0)) revert NewWalletIsZeroAddress();
        if (referralWallet == address(0)) revert NewWalletIsZeroAddress();
        tradingActive = true;
        swapEnabled = true;
        limitsInEffect = true;
        tradingActiveBlock = block.number;
        tradingActiveTimestamp = block.timestamp;
        whitelistStartTime = block.timestamp; // Start the whitelist period
        whitelistActive = true; // Ensure whitelist is active
        emit TradingEnabled(block.number);
    }

    /**
     * @dev Removes transaction and wallet limits.
     * @return True if successful.
     */
    function removeLimits() external onlyOwner returns (bool) {
        limitsInEffect = false;
        emit LimitsRemoved();
        return true;
    }

    /**
     * @dev Updates the maximum transaction amount.
     * @param newAmount The new maximum transaction amount.
     */
    function updateMaxTransactionAmount(uint256 newAmount) external onlyOwner {
        if (newAmount < (totalSupply() * 100) / 10_000) revert MaxTransactionAmountTooLow(); // Minimum 1%
        maxTransactionAmount = newAmount;
        emit MaxTransactionAmountUpdated(newAmount);
    }

    /**
     * @dev Updates the maximum wallet balance.
     * @param newAmount The new maximum wallet balance.
     */
    function updateMaxWallet(uint256 newAmount) external onlyOwner {
        if (newAmount < (totalSupply() * 100) / 10_000) revert MaxWalletTooLow(); // Minimum 1%
        maxWallet = newAmount;
        emit MaxWalletUpdated(newAmount);
    }

    /**
     * @dev Excludes or includes an account from the max transaction limit.
     * @param account The account to modify.
     * @param isExcluded Whether the account is excluded.
     */
    function excludeFromMaxTransaction(address account, bool isExcluded)
        public
        onlyOwner
    {
        _isExcludedMaxTransactionAmount[account] = isExcluded;
        emit ExcludedFromMaxTransaction(account, isExcluded);
    }

    /**
     * @dev Enables or disables the swap mechanism.
     * @param enabled Whether swapping is enabled.
     */
    function updateSwapEnabled(bool enabled) external onlyOwner {
        swapEnabled = enabled;
        emit SwapEnabledUpdated(enabled);
    }

    /**
     * @dev Excludes or includes an account from fees.
     * @param account The account to modify.
     * @param excluded Whether the account is excluded.
     */
    function excludeFromFees(address account, bool excluded) public onlyOwner {
        _isExcludedFromFees[account] = excluded;
        emit ExcludeFromFees(account, excluded);
    }

    /**
     * @dev Sets an address as an automated market maker pair.
     * @param pair The address to set.
     * @param value Whether it is an AMM pair.
     */
    function setAutomatedMarketMakerPair(address pair, bool value)
        external
        onlyOwner
    {
        if (pair == uniswapV2Pair) revert CannotRemovePrimaryPair();
        _setAutomatedMarketMakerPair(pair, value);
    }

    /**
     * @dev Internal function to set an AMM pair.
     * @param pair The address to set.
     * @param value Whether it is an AMM pair.
     */
    function _setAutomatedMarketMakerPair(address pair, bool value) private {
        automatedMarketMakerPairs[pair] = value;
        emit SetAutomatedMarketMakerPair(pair, value);
    }

    /**
     * @dev Updates the project wallet address.
     * @param newWallet The new wallet address.
     */
    function updateProjectWallet(address newWallet) external onlyOwner {
        if (newWallet == address(0)) revert NewWalletIsZeroAddress();
        emit ProjectWalletUpdated(newWallet, projectWallet);
        projectWallet = newWallet;
    }

    /**
     * @dev Updates the project wallet two address.
     * @param newWallet The new wallet address.
     */
    function updateProjectWalletTwo(address newWallet) external onlyOwner {
        if (newWallet == address(0)) revert NewWalletIsZeroAddress();
        emit ProjectWalletTwoUpdated(newWallet, projectWalletTwo);
        projectWalletTwo = newWallet;
    }

    /**
     * @dev Updates the incubator wallet address.
     * @param newWallet The new wallet address.
     */
    function updateIncubatorWallet(address newWallet) external onlyOwner {
        if (newWallet == address(0)) revert NewWalletIsZeroAddress();
        emit IncubatorWalletUpdated(newWallet, incubatorWallet);
        incubatorWallet = newWallet;
    }

    /**
     * @dev Updates the referral wallet address.
     * @param newWallet The new wallet address.
     */
    function updateReferralWallet(address newWallet) external onlyOwner {
        if (newWallet == address(0)) revert NewWalletIsZeroAddress();
        emit ReferralWalletUpdated(newWallet, referralWallet);
        referralWallet = newWallet;
    }

    /**
     * @dev Updates the max swap back percentage.
     * @param newPercent The new max swap back percentage (in basis points, out of 10,000).
     */
    function updateMaxSwapBackPercent(uint256 newPercent) external onlyOwner {
        if (newPercent > 1000) revert MaxSwapBackPercentTooHigh(); // Cannot set above 10%
        maxSwapBackPercent = newPercent;
        emit MaxSwapBackPercentUpdated(newPercent);
    }

    /**
     * @dev Checks if an account is excluded from fees.
     * @param account The account to check.
     * @return True if excluded, false otherwise.
     */
    function isExcludedFromFees(address account) external view returns (bool) {
        return _isExcludedFromFees[account];
    }

    /**
     * @dev Updates the buy fees.
     * @param newFee The new buy fee percentage (per 10,000 units).
     */
    function updateBuyFees(uint256 newFee) external onlyOwner {
        if (newFee > buyFee) revert CannotIncreaseFees();
        buyFee = newFee;
        buyTotalFees = buyFee;
        emit BuyFeesUpdated(buyFee);
    }

    /**
     * @dev Updates the sell fees.
     * @param newFee The new sell fee percentage (per 10,000 units).
     */
    function updateSellFees(uint256 newFee) external onlyOwner {
        if (newFee > sellFee) revert CannotIncreaseFees();
        sellFee = newFee;
        sellTotalFees = sellFee;
        emit SellFeesUpdated(sellFee);
    }

    /**
     * @dev Whitelists or removes addresses from the whitelist.
     * @param wallets The array of addresses to modify.
     * @param isWhitelisted Whether the addresses are whitelisted.
     */
    function whitelistWallets(address[] calldata wallets, bool isWhitelisted) external onlyOwner {
        for (uint256 i = 0; i < wallets.length; i++) {
            whitelistedAddresses[wallets[i]] = isWhitelisted;
            emit Whitelisted(wallets[i]);
        }
    }

    /**
     * @dev Manually ends the whitelist period.
     */
    function shutOffWhitelist() external onlyOwner {
        require(whitelistActive, "Whitelist not active");
        whitelistActive = false;
    }

    /**
     * @dev Revokes taxes to the project wallet. Can only be called once by the deployer.
     */
    function revokeProjectWalletTax() external {
        require(msg.sender == deployer, "Only deployer can call");
        require(isProjectWalletTaxEnabled, "Taxes already revoked");
        isProjectWalletTaxEnabled = false;
    }

    /**
     * @dev Revokes taxes to the project wallet two. Can only be called once by the deployer.
     */
    function revokeProjectWalletTwoTax() external {
        require(msg.sender == deployer, "Only deployer can call");
        require(isProjectWalletTwoTaxEnabled, "Taxes already revoked");
        isProjectWalletTwoTaxEnabled = false;
    }

    /**
     * @dev Revokes taxes to the incubator wallet. Can only be called once by the deployer.
     */
    function revokeIncubatorWalletTax() external {
        require(msg.sender == deployer, "Only deployer can call");
        require(isIncubatorWalletTaxEnabled, "Taxes already revoked");
        isIncubatorWalletTaxEnabled = false;
    }

    /**
     * @dev Revokes taxes to the referral wallet. Can only be called once by the deployer.
     */
    function revokeReferralWalletTax() external {
        require(msg.sender == deployer, "Only deployer can call");
        require(isReferralWalletTaxEnabled, "Taxes already revoked");
        isReferralWalletTaxEnabled = false;
    }

    /**
     * @dev Internal transfer function with fee logic and whitelist enforcement.
     * @param from The sender address.
     * @param to The recipient address.
     * @param amount The amount to transfer.
     */
    function _transfer(
        address from,
        address to,
        uint256 amount
    ) internal override {
        if (from == address(0)) revert TransferFromZeroAddress();
        if (to == address(0)) revert TransferToZeroAddress();

        // Check if trading is active
        if (!tradingActive) {
            if (!_isExcludedFromFees[from] && !_isExcludedFromFees[to]) {
                revert TradingNotActive();
            }
        }

        // Early return if amount is zero
        if (amount == 0) {
            super._transfer(from, to, 0);
            return;
        }

        // Limits and whitelist checks
        if (limitsInEffect && !swapping) {
            if (
                from != owner() &&
                to != owner() &&
                to != address(0) &&
                to != deadAddress
            ) {
                // Determine if we are in the whitelist period (first 5 minutes)
                bool isInWhitelistPeriod = whitelistActive && (block.timestamp < whitelistStartTime + 5 minutes);

                uint256 currentMaxTransactionAmount;
                uint256 currentMaxWallet;

                if (isInWhitelistPeriod) {
                    currentMaxTransactionAmount = (totalSupply() * 40) / 10_000; // 0.4%
                    currentMaxWallet = (totalSupply() * 40) / 10_000; // 0.4%
                } else {
                    currentMaxTransactionAmount = maxTransactionAmount; // 1.5%
                    currentMaxWallet = maxWallet; // 1.5%
                    // Whitelist period has ended
                    if (whitelistActive) {
                        whitelistActive = false;
                    }
                }

                // Whitelist enforcement during whitelist period
                if (isInWhitelistPeriod) {
                    // Enforce whitelist checks for all transactions
                    if (automatedMarketMakerPairs[from]) {
                        // Buying: Only whitelisted addresses can buy
                        require(
                            whitelistedAddresses[to],
                            "Not whitelisted during whitelist period"
                        );
                    } else if (automatedMarketMakerPairs[to]) {
                        // Selling: Only whitelisted addresses can sell
                        require(
                            whitelistedAddresses[from],
                            "Not whitelisted during whitelist period"
                        );
                    } else {
                        // Transfers between wallets
                        require(
                            whitelistedAddresses[from] && whitelistedAddresses[to],
                            "Both sender and recipient must be whitelisted during whitelist period"
                        );
                    }
                }

                // Max transaction and wallet limits
                if (automatedMarketMakerPairs[from] && !_isExcludedMaxTransactionAmount[to]) {
                    // Buy transaction
                    if (amount > currentMaxTransactionAmount)
                        revert ExceedsMaxTransactionAmount();
                    if (balanceOf(to) + amount > currentMaxWallet)
                        revert ExceedsMaxWalletAmount();
                } else if (automatedMarketMakerPairs[to] && !_isExcludedMaxTransactionAmount[from]) {
                    // Sell transaction
                    if (amount > currentMaxTransactionAmount)
                        revert ExceedsMaxTransactionAmount();
                } else if (!_isExcludedMaxTransactionAmount[to]) {
                    // Regular transfer
                    if (balanceOf(to) + amount > currentMaxWallet)
                        revert ExceedsMaxWalletAmount();
                }
            }
        }

        uint256 contractTokenBalance = balanceOf(address(this));
        bool canSwap = contractTokenBalance >= swapTokensAtAmount;

        // Check if we should perform a swap back
        bool shouldSwapBack = canSwap &&
            swapEnabled &&
            !swapping &&
            automatedMarketMakerPairs[to] && // Sell transaction
            from != address(this) &&
            !_isExcludedFromFees[from];

        if (shouldSwapBack) {
            swapping = true;
            swapBack(amount);
            swapping = false;
        }

        bool takeFee = !swapping;

        // If any account is excluded from fee, remove the fee
        if (_isExcludedFromFees[from] || _isExcludedFromFees[to]) {
            takeFee = false;
        }

        uint256 fees = 0;

        // Calculate fees if applicable
        if (takeFee) {
            if (automatedMarketMakerPairs[to] && sellTotalFees > 0) {
                // Sell transaction
                fees = (amount * sellTotalFees) / 10_000; // Fees are per 10,000 units
                tokensForFees += fees;
            } else if (automatedMarketMakerPairs[from] && buyTotalFees > 0) {
                // Buy transaction
                fees = (amount * buyTotalFees) / 10_000; // Fees are per 10,000 units
                tokensForFees += fees;
            }

            if (fees > 0) {
                super._transfer(from, address(this), fees);
            }

            amount -= fees;
        }

        // Perform the actual token transfer
        super._transfer(from, to, amount);
    }

    /**
     * @dev Swaps tokens for ETH using Uniswap.
     * @param tokenAmount The amount of tokens to swap.
     * @return success True if the swap was successful.
     */
    function swapTokensForEth(uint256 tokenAmount) private returns (bool success) {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();

        _approve(address(this), address(uniswapV2Router), tokenAmount);

        uint256 initialETHBalance = address(this).balance;

        try
            uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
                tokenAmount,
                0, // Accept any amount of ETH
                path,
                address(this),
                block.timestamp
            )
        {
            uint256 ethReceived = address(this).balance - initialETHBalance;
            emit TokenSwap(tokenAmount, ethReceived);
            success = true;
        } catch Error(string memory reason) {
            emit TokenSwapFailedWithReason(tokenAmount, reason);
            success = false;
        } catch (bytes memory data) {
            emit TokenSwapFailedWithData(tokenAmount, data);
            success = false;
        }
    }

    /**
     * @dev Swaps back tokens for ETH and distributes to wallets.
     * @param sellAmount The amount of tokens being sold in the current transaction.
     */
    function swapBack(uint256 sellAmount) private nonReentrant {
        uint256 contractBalance = balanceOf(address(this));
        uint256 tokensToSwap = tokensForFees;

        if (contractBalance == 0 || tokensToSwap == 0) {
            return;
        }

        // Calculate maximum swap amount based on maxSwapBackPercent
        uint256 maxSwapAmount = (totalSupply() * maxSwapBackPercent) / 10_000;

        // Determine amount to swap (small amount to avoid large dumps)
        uint256 amountToSwap = sellAmount;

        if (amountToSwap > maxSwapAmount) {
            amountToSwap = maxSwapAmount;
        }

        if (amountToSwap > tokensToSwap) {
            amountToSwap = tokensToSwap;
        }

        if (amountToSwap > contractBalance) {
            amountToSwap = contractBalance;
        }

        // Ensure amount to swap meets minimum threshold
        if (amountToSwap < swapTokensAtAmount) {
            return;
        }

        // Swap tokens for ETH
        bool success = swapTokensForEth(amountToSwap);

        if (success) {
            // Decrement tokensForFees
            tokensForFees -= amountToSwap;

            // Distribute ETH to wallets
            uint256 ethBalance = address(this).balance;

            if (ethBalance > 0) {
                distributeEth(ethBalance);
            }
        } else {
            // Handle swap failure if necessary
            return;
        }
    }

    /**
     * @dev Distributes ETH to the wallets based on enabled taxes.
     * @param ethBalance The total ETH balance to distribute.
     */
    function distributeEth(uint256 ethBalance) private {
        if (ethBalance == 0) {
            return;
        }

        // Define percentages per 10,000 units (where 10,000 = 100%)
        uint256 totalPercentage = 0;
        uint256 incubatorWalletPercentage = 0;
        uint256 referralWalletPercentage = 0;
        uint256 projectWalletPercentage = 0;
        uint256 projectWalletTwoPercentage = 0;

        if (isIncubatorWalletTaxEnabled) {
            incubatorWalletPercentage = 1750; // 17.5%
            totalPercentage += incubatorWalletPercentage;
        }

        if (isReferralWalletTaxEnabled) {
            referralWalletPercentage = 500; // 5%
            totalPercentage += referralWalletPercentage;
        }

        if (isProjectWalletTaxEnabled) {
            projectWalletPercentage = 3875; // 38.75%
            totalPercentage += projectWalletPercentage;
        }

        if (isProjectWalletTwoTaxEnabled) {
            projectWalletTwoPercentage = 3875; // 38.75%
            totalPercentage += projectWalletTwoPercentage;
        }

        // Check for division by zero
        if (totalPercentage == 0) {
            // No wallets are enabled, nothing to distribute
            return;
        }

        // Distribute ETH based on enabled wallets
        uint256 totalDistributed = 0;

        if (incubatorWalletPercentage > 0) {
            uint256 ethForIncubator = (ethBalance * incubatorWalletPercentage) / totalPercentage;
            totalDistributed += ethForIncubator;

            // Distribute ETH to incubator wallet
            (bool successIncubator, ) = incubatorWallet.call{value: ethForIncubator}("");
            if (!successIncubator) {
                emit TransferFailed(incubatorWallet, ethForIncubator);
            }
        }

        if (referralWalletPercentage > 0) {
            uint256 ethForReferral = (ethBalance * referralWalletPercentage) / totalPercentage;
            totalDistributed += ethForReferral;

            // Distribute ETH to referral wallet
            (bool successReferral, ) = referralWallet.call{value: ethForReferral}("");
            if (!successReferral) {
                emit TransferFailed(referralWallet, ethForReferral);
            }
        }

        if (projectWalletPercentage > 0) {
            uint256 ethForProject = (ethBalance * projectWalletPercentage) / totalPercentage;
            totalDistributed += ethForProject;

            // Distribute ETH to project wallet
            (bool successProject, ) = projectWallet.call{value: ethForProject}("");
            if (!successProject) {
                emit TransferFailed(projectWallet, ethForProject);
            }
        }

        if (projectWalletTwoPercentage > 0) {
            uint256 ethForProjectTwo = (ethBalance * projectWalletTwoPercentage) / totalPercentage;
            totalDistributed += ethForProjectTwo;

            // Distribute ETH to project wallet two
            (bool successProjectTwo, ) = projectWalletTwo.call{value: ethForProjectTwo}("");
            if (!successProjectTwo) {
                emit TransferFailed(projectWalletTwo, ethForProjectTwo);
            }
        }

        // Ensure the total distribution does not exceed balance
        require(totalDistributed <= ethBalance, "Insufficient ETH balance for distribution");
    }

    /**
     * @dev Allows the owner to rescue ETH from the contract.
     */
    function rescueETH() external onlyOwner nonReentrant {
        uint256 contractETHBalance = address(this).balance;
        if (contractETHBalance == 0) revert SwapFailed();

        (bool success, ) = owner().call{value: contractETHBalance}("");
        if (!success) revert SwapFailed();
    }

    /**
     * @dev Allows the owner to rescue any ERC20 tokens, including the contract's own tokens.
     * @param tokenAddress The address of the token to rescue.
     */
    function rescueTokens(address tokenAddress) external onlyOwner {
        IERC20 token = IERC20(tokenAddress);
        uint256 contractTokenBalance = token.balanceOf(address(this));
        if (contractTokenBalance == 0) revert SwapFailed();
        token.transfer(owner(), contractTokenBalance);
    }

    // Receive function to accept ETH
    receive() external payable {}

    // Fallback function
    fallback() external payable {}
}
Context.sol 12 lines
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.27;

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

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

import "./Context.sol";
import "./IERC20.sol";
import "./IERC20Metadata.sol";

contract ERC20 is Context, IERC20, IERC20Metadata {
    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 18;
    }

    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 transferFrom(address sender, address recipient, uint256 amount) public virtual override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(sender, _msgSender(), _allowances[sender][_msgSender()] - amount);
        return true;
    }

    function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue);
        return true;
    }

    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender] - subtractedValue);
        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');

        _balances[sender] -= amount;
        _balances[recipient] += amount;
        emit Transfer(sender, recipient, amount);
    }

    function _mint(address account, uint256 amount) internal virtual {
        require(account != address(0), 'ERC20: mint to the zero address');
        _totalSupply += amount;
        _balances[account] += 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');
        _balances[account] -= amount;
        _totalSupply -= 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);
    }
}
IERC20.sol 14 lines
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.27;

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);
}
Ownable.sol 36 lines
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.27;

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;
    }
}
ReentrancyGuard.sol 20 lines
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.27;

abstract contract ReentrancyGuard {
    uint256 private constant _NOT_ENTERED = 1;
    uint256 private constant _ENTERED = 2;

    uint256 private _status;

    constructor() {
        _status = _NOT_ENTERED;
    }

    modifier nonReentrant() {
        require(_status != _ENTERED, "ReentrancyGuard: reentrant call");
        _status = _ENTERED;
        _;
        _status = _NOT_ENTERED;
    }
}
UniswapV2Contracts.sol 257 lines
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.27;

// IUniswapV2Pair Interface
interface IUniswapV2Pair {
    // Events
    event Approval(address indexed owner, address indexed spender, uint value);
    event Transfer(address indexed from, address indexed to, uint value);
    event Mint(address indexed sender, uint amount0, uint amount1);
    event Burn(address indexed sender, uint amount0, uint amount1, address indexed to);
    event Swap(address indexed sender, uint amount0In, uint amount1In, uint amount0Out, uint amount1Out, address indexed to);
    event Sync(uint112 reserve0, uint112 reserve1);
    
    // Functions
    function name() external pure returns (string memory);
    function symbol() external pure returns (string memory);
    function decimals() external pure returns (uint8);
    function totalSupply() external view returns (uint);
    function balanceOf(address owner) external view returns (uint);
    function allowance(address owner, address spender) external view returns (uint);
    function approve(address spender, uint value) external returns (bool);
    function transfer(address to, uint value) external returns (bool);
    function transferFrom(address from, address to, uint value) external returns (bool);
    function DOMAIN_SEPARATOR() external view returns (bytes32);
    function PERMIT_TYPEHASH() external pure returns (bytes32);
    function nonces(address owner) external view returns (uint);
    function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external;
    function MINIMUM_LIQUIDITY() external pure returns (uint);
    function factory() external view returns (address);
    function token0() external view returns (address);
    function token1() external view returns (address);
    function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);
    function price0CumulativeLast() external view returns (uint);
    function price1CumulativeLast() external view returns (uint);
    function kLast() external view returns (uint);
    function mint(address to) external returns (uint liquidity);
    function burn(address to) external returns (uint amount0, uint amount1);
    function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external;
    function skim(address to) external;
    function sync() external;
    function initialize(address, address) external;
}

// IUniswapV2Factory Interface
interface IUniswapV2Factory {
    // Events
    event PairCreated(address indexed token0, address indexed token1, address pair, uint);
    
    // Functions
    function feeTo() external view returns (address);
    function feeToSetter() external view returns (address);
    function getPair(address tokenA, address tokenB) external view returns (address pair);
    function allPairs(uint) external view returns (address pair);
    function allPairsLength() external view returns (uint);
    function createPair(address tokenA, address tokenB) external returns (address pair);
    function setFeeTo(address) external;
    function setFeeToSetter(address) external;
}

// IUniswapV2Router01 Interface
interface IUniswapV2Router01 {
    // Functions
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    
    // Liquidity functions
    function addLiquidity(
        address tokenA,
        address tokenB,
        uint amountADesired,
        uint amountBDesired,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB, uint liquidity);
    
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
    
    function removeLiquidity(
        address tokenA,
        address tokenB, 
        uint liquidity, 
        uint amountAMin, 
        uint amountBMin, 
        address to, 
        uint deadline
    ) external returns (uint amountA, uint amountB);
    
    function removeLiquidityETH(
        address token, 
        uint liquidity, 
        uint amountTokenMin, 
        uint amountETHMin, 
        address to, 
        uint deadline
    ) external returns (uint amountToken, uint amountETH);
    
    function removeLiquidityWithPermit(
        address tokenA, 
        address tokenB, 
        uint liquidity, 
        uint amountAMin, 
        uint amountBMin, 
        address to, 
        uint deadline, 
        bool approveMax, 
        uint8 v, 
        bytes32 r, 
        bytes32 s
    ) external returns (uint amountA, uint amountB);
    
    function removeLiquidityETHWithPermit(
        address token, 
        uint liquidity, 
        uint amountTokenMin, 
        uint amountETHMin, 
        address to, 
        uint deadline, 
        bool approveMax, 
        uint8 v, 
        bytes32 r, 
        bytes32 s
    ) external returns (uint amountETH);
    
    // Swap functions
    function swapExactTokensForTokens(
        uint amountIn, 
        uint amountOutMin, 
        address[] calldata path, 
        address to, 
        uint deadline
    ) external returns (uint[] memory amounts);
    
    function swapTokensForExactTokens(
        uint amountOut, 
        uint amountInMax, 
        address[] calldata path, 
        address to, 
        uint deadline
    ) external returns (uint[] memory amounts);
    
    function swapExactETHForTokens(
        uint amountOutMin, 
        address[] calldata path, 
        address to, 
        uint deadline
    ) external payable returns (uint[] memory amounts);
    
    function swapTokensForExactETH(
        uint amountOut, 
        uint amountInMax, 
        address[] calldata path, 
        address to, 
        uint deadline
    ) external returns (uint[] memory amounts);
    
    function swapExactTokensForETH(
        uint amountIn, 
        uint amountOutMin, 
        address[] calldata path, 
        address to, 
        uint deadline
    ) external returns (uint[] memory amounts);
    
    function swapETHForExactTokens(
        uint amountOut, 
        address[] calldata path, 
        address to, 
        uint deadline
    ) external payable returns (uint[] memory amounts);
    
    // Utility functions
    function quote(
        uint amountA, 
        uint reserveA, 
        uint reserveB
    ) external pure returns (uint amountB);
    
    function getAmountOut(
        uint amountIn, 
        uint reserveIn, 
        uint reserveOut
    ) external pure returns (uint amountOut);
    
    function getAmountIn(
        uint amountOut, 
        uint reserveIn, 
        uint reserveOut
    ) external pure returns (uint amountIn);
    
    function getAmountsOut(
        uint amountIn, 
        address[] calldata path
    ) external view returns (uint[] memory amounts);
    
    function getAmountsIn(
        uint amountOut, 
        address[] calldata path
    ) external view returns (uint[] memory amounts);
}

// IUniswapV2Router02 Interface
interface IUniswapV2Router02 is IUniswapV2Router01 {
    // Additional swap functions supporting fee-on-transfer tokens
    function removeLiquidityETHSupportingFeeOnTransferTokens(
        address token, 
        uint liquidity, 
        uint amountTokenMin, 
        uint amountETHMin, 
        address to, 
        uint deadline
    ) external returns (uint amountETH);
    
    function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(
        address token, 
        uint liquidity, 
        uint amountTokenMin, 
        uint amountETHMin, 
        address to, 
        uint deadline, 
        bool approveMax, 
        uint8 v, 
        bytes32 r, 
        bytes32 s
    ) external returns (uint amountETH);
    
    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint amountIn, 
        uint amountOutMin, 
        address[] calldata path, 
        address to, 
        uint deadline
    ) external;
    
    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint amountOutMin, 
        address[] calldata path, 
        address to, 
        uint deadline
    ) external payable;
    
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn, 
        uint amountOutMin, 
        address[] calldata path, 
        address to, 
        uint deadline
    ) external;
}

Read Contract

_isExcludedMaxTransactionAmount 0x10d5de53 → bool
allowance 0xdd62ed3e → uint256
automatedMarketMakerPairs 0xb62496f5 → bool
balanceOf 0x70a08231 → uint256
buyFee 0x47062402 → uint256
buyTotalFees 0xd85ba063 → uint256
deadAddress 0x27c8f835 → address
decimals 0x313ce567 → uint8
deployer 0xd5f39488 → address
incubatorWallet 0xee6bdf89 → address
isExcludedFromFees 0x4fbee193 → bool
isIncubatorWalletTaxEnabled 0x5009716c → bool
isProjectWalletTaxEnabled 0x343572fa → bool
isProjectWalletTwoTaxEnabled 0x02a32ae2 → bool
isReferralWalletTaxEnabled 0xb6f68691 → bool
limitsInEffect 0x4a62bb65 → bool
maxSwapBackPercent 0xeff165bd → uint256
maxTransactionAmount 0xc8c8ebe4 → uint256
maxWallet 0xf8b45b05 → uint256
name 0x06fdde03 → string
owner 0x8da5cb5b → address
projectWallet 0xbeb08ab9 → address
projectWalletTwo 0xcd0fd149 → address
referralWallet 0xe1f14874 → address
sellFee 0x2b14ca56 → uint256
sellTotalFees 0x6a486a8e → uint256
swapEnabled 0x6ddd1713 → bool
swapTokensAtAmount 0xe2f45605 → uint256
symbol 0x95d89b41 → string
tokensForFees 0x3f8a6204 → uint256
totalSupply 0x18160ddd → uint256
tradingActive 0xbbc0c742 → bool
tradingActiveBlock 0xee40166e → uint256
tradingActiveTimestamp 0x6a3ffffb → uint256
uniswapV2Pair 0x49bd5a5e → address
uniswapV2Router 0x1694505e → address
whitelistActive 0x02ce5813 → bool
whitelistStartTime 0x9292caaf → uint256
whitelistedAddresses 0x06c933d8 → bool

Write Contract 30 functions

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

approve 0x095ea7b3
address spender
uint256 amount
returns: bool
decreaseAllowance 0xa457c2d7
address spender
uint256 subtractedValue
returns: bool
enableTrading 0x8a8c523c
No parameters
excludeFromFees 0xc0246668
address account
bool excluded
excludeFromMaxTransaction 0x7571336a
address account
bool isExcluded
increaseAllowance 0x39509351
address spender
uint256 addedValue
returns: bool
removeLimits 0x751039fc
No parameters
returns: bool
renounceOwnership 0x715018a6
No parameters
rescueETH 0x20800a00
No parameters
rescueTokens 0x00ae3bf8
address tokenAddress
revokeIncubatorWalletTax 0x2d8199c7
No parameters
revokeProjectWalletTax 0xd73e12f6
No parameters
revokeProjectWalletTwoTax 0x20d3cc9e
No parameters
revokeReferralWalletTax 0x27163663
No parameters
setAutomatedMarketMakerPair 0x9a7a23d6
address pair
bool value
shutOffWhitelist 0x6a7bd94b
No parameters
transfer 0xa9059cbb
address recipient
uint256 amount
returns: bool
transferFrom 0x23b872dd
address sender
address recipient
uint256 amount
returns: bool
transferOwnership 0xf2fde38b
address newOwner
updateBuyFees 0x71fc4688
uint256 newFee
updateIncubatorWallet 0x2e71c877
address newWallet
updateMaxSwapBackPercent 0x5bea1f5d
uint256 newPercent
updateMaxTransactionAmount 0xaa498023
uint256 newAmount
updateMaxWallet 0x1c499ab0
uint256 newAmount
updateProjectWallet 0x71927628
address newWallet
updateProjectWalletTwo 0x518fbc08
address newWallet
updateReferralWallet 0x0ed91680
address newWallet
updateSellFees 0xeba4c333
uint256 newFee
updateSwapEnabled 0x924de9b7
bool enabled
whitelistWallets 0xbbd9e5b4
address[] wallets
bool isWhitelisted

Recent Transactions

No transactions found for this address