Address Contract Verified
Address
0xb1fD84774467228fa7c9e4ACDdDF56466cdC94a9
Balance
0 ETH
Nonce
1
Code Size
17085 bytes
Creator
0x4642ad05...e1Ca at tx 0x1454a75e...203bb2
Indexed Transactions
0
Contract Bytecode
17085 bytes
0x6080604052600436106102e2575f3560e01c80638da5cb5b1161018f578063bec3fa17116100db578063d495a63111610094578063e9238daf1161006e578063e9238daf14610ac4578063f2fde38b14610b00578063f86a352914610b28578063fb4aa0a114610b52576102e2565b8063d495a63114610a42578063db203b7f14610a5e578063e00e061214610a88576102e2565b8063bec3fa1714610938578063c54e44eb14610960578063c63368be1461098a578063cb33365d146109b2578063cc0ea0a9146109ee578063cd0302ca14610a18576102e2565b8063a6a11bb111610148578063ab11417f11610122578063ab11417f14610894578063acfb2355146108be578063b5e75e1c146108e8578063b97a2d6414610910576102e2565b8063a6a11bb1146107fe578063a87430ba14610828578063aa1c3aa51461086a576102e2565b80638da5cb5b146107385780638e15f4731461076257806395877f781461078c57806396278f2c146107b4578063a43be57b146107de578063a4821719146107f4576102e2565b80635dfd59f61161024e57806377e6bb15116102075780637decf27f116101e15780637decf27f1461066e57806383ced170146106985780638577d452146106d45780638895283f14610710576102e2565b806377e6bb15146105f25780637ad3def21461061c5780637b3e5e7b14610644576102e2565b80635dfd59f61461051057806361a31e00146105385780636769d1f91461056057806370f58c971461058a578063715018a6146105b2578063741bef1a146105c8576102e2565b80633fc15f15116102a05780633fc15f151461042c578063405fb9441461045657806348c54b9d1461048057806353a29ad214610496578063544b15d2146104be5780635bf5d54c146104e6576102e2565b806213eb4b146102e657806324313768146103225780632d2fbfd41461035e5780632e37eef61461039c57806338c67b73146103da57806339878eaa14610402575b5f80fd5b3480156102f1575f80fd5b5061030c600480360381019061030791906130f1565b610b7c565b6040516103199190613136565b60405180910390f35b34801561032d575f80fd5b5061034860048036038101906103439190613182565b610b99565b60405161035591906131bc565b60405180910390f35b348015610369575f80fd5b50610384600480360381019061037f9190613182565b610bcd565b604051610393939291906131d5565b60405180910390f35b3480156103a7575f80fd5b506103c260048036038101906103bd9190613182565b610c28565b6040516103d1939291906131d5565b60405180910390f35b3480156103e5575f80fd5b5061040060048036038101906103fb9190613182565b610c4e565b005b34801561040d575f80fd5b50610416610cd4565b60405161042391906131bc565b60405180910390f35b348015610437575f80fd5b50610440610cda565b60405161044d9190613265565b60405180910390f35b348015610461575f80fd5b5061046a610cff565b60405161047791906131bc565b60405180910390f35b34801561048b575f80fd5b50610494610d05565b005b3480156104a1575f80fd5b506104bc60048036038101906104b791906130f1565b610f1e565b005b3480156104c9575f80fd5b506104e460048036038101906104df919061327e565b610fdd565b005b3480156104f1575f80fd5b506104fa6110e4565b60405161050791906131bc565b60405180910390f35b34801561051b575f80fd5b50610536600480360381019061053191906132ce565b6110ea565b005b348015610543575f80fd5b5061055e60048036038101906105599190613182565b61134a565b005b34801561056b575f80fd5b5061057461142e565b60405161058191906131bc565b60405180910390f35b348015610595575f80fd5b506105b060048036038101906105ab919061351c565b611434565b005b3480156105bd575f80fd5b506105c661159b565b005b3480156105d3575f80fd5b506105dc611622565b6040516105e991906135b2565b60405180910390f35b3480156105fd575f80fd5b50610606611647565b60405161061391906131bc565b60405180910390f35b348015610627575f80fd5b50610642600480360381019061063d91906130f1565b611699565b005b34801561064f575f80fd5b50610658611758565b60405161066591906131bc565b60405180910390f35b348015610679575f80fd5b5061068261175e565b60405161068f9190613136565b60405180910390f35b3480156106a3575f80fd5b506106be60048036038101906106b99190613182565b611771565b6040516106cb91906131bc565b60405180910390f35b3480156106df575f80fd5b506106fa60048036038101906106f59190613182565b611791565b60405161070791906131bc565b60405180910390f35b34801561071b575f80fd5b50610736600480360381019061073191906135f5565b6117b1565b005b348015610743575f80fd5b5061074c61184a565b604051610759919061362f565b60405180910390f35b34801561076d575f80fd5b50610776611871565b60405161078391906131bc565b60405180910390f35b348015610797575f80fd5b506107b260048036038101906107ad9190613683565b61190e565b005b3480156107bf575f80fd5b506107c86119cd565b6040516107d591906131bc565b60405180910390f35b3480156107e9575f80fd5b506107f26119d3565b005b6107fc611a73565b005b348015610809575f80fd5b50610812611fd4565b60405161081f91906131bc565b60405180910390f35b348015610833575f80fd5b5061084e600480360381019061084991906130f1565b611fda565b60405161086197969594939291906136ae565b60405180910390f35b348015610875575f80fd5b5061087e612018565b60405161088b91906131bc565b60405180910390f35b34801561089f575f80fd5b506108a861201e565b6040516108b591906131bc565b60405180910390f35b3480156108c9575f80fd5b506108d2612024565b6040516108df9190613136565b60405180910390f35b3480156108f3575f80fd5b5061090e60048036038101906109099190613182565b612037565b005b34801561091b575f80fd5b506109366004803603810190610931919061371b565b6125c1565b005b348015610943575f80fd5b5061095e600480360381019061095991906137ba565b61265f565b005b34801561096b575f80fd5b50610974612747565b6040516109819190613265565b60405180910390f35b348015610995575f80fd5b506109b060048036038101906109ab91906137f8565b61276c565b005b3480156109bd575f80fd5b506109d860048036038101906109d39190613823565b61282b565b6040516109e591906131bc565b60405180910390f35b3480156109f9575f80fd5b50610a02612892565b604051610a0f91906131bc565b60405180910390f35b348015610a23575f80fd5b50610a2c612898565b604051610a3991906131bc565b60405180910390f35b610a5c6004803603810190610a579190613861565b61289e565b005b348015610a69575f80fd5b50610a72612e1a565b604051610a7f91906131bc565b60405180910390f35b348015610a93575f80fd5b50610aae6004803603810190610aa99190613182565b612e26565b604051610abb919061362f565b60405180910390f35b348015610acf575f80fd5b50610aea6004803603810190610ae59190613823565b612e61565b604051610af791906131bc565b60405180910390f35b348015610b0b575f80fd5b50610b266004803603810190610b2191906130f1565b612e9d565b005b348015610b33575f80fd5b50610b3c612f93565b604051610b4991906131bc565b60405180910390f35b348015610b5d575f80fd5b50610b66612f99565b604051610b7391906138bf565b60405180910390f35b6016602052805f5260405f205f915054906101000a900460ff1681565b5f8068056bc75e2d63100000610bad611871565b84610bb89190613905565b610bc29190613973565b905080915050919050565b5f805f8060045f8681526020019081526020015f206040518060600160405290815f8201548152602001600182015481526020016002820154815250509050805f015181602001518260400151935093509350509193909250565b6004602052805f5260405f205f91509050805f0154908060010154908060020154905083565b610c56612fbe565b73ffffffffffffffffffffffffffffffffffffffff16610c7461184a565b73ffffffffffffffffffffffffffffffffffffffff1614610cca576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cc1906139fd565b60405180910390fd5b8060078190555050565b600b5481565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600a5481565b601260159054906101000a900460ff16610d54576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4b90613a65565b60405180910390fd5b5f60155f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2090505f816004015411610dda576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dd190613acd565b60405180910390fd5b5f81600601548260040154610def9190613aeb565b90505f8111610e33576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e2a90613b68565b60405180910390fd5b80826006015f828254610e469190613b86565b9250508190555060015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401610ea9929190613bb9565b5f604051808303815f87803b158015610ec0575f80fd5b505af1158015610ed2573d5f803e3d5ffd5b50505050803373ffffffffffffffffffffffffffffffffffffffff167f5d425a3a6a3d5a60fbf147dc6659ce3dfeb701fc44fe90058c32783b8807c57460405160405180910390a35050565b610f26612fbe565b73ffffffffffffffffffffffffffffffffffffffff16610f4461184a565b73ffffffffffffffffffffffffffffffffffffffff1614610f9a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f91906139fd565b60405180910390fd5b8060125f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b610fe5612fbe565b73ffffffffffffffffffffffffffffffffffffffff1661100361184a565b73ffffffffffffffffffffffffffffffffffffffff1614611059576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611050906139fd565b60405180910390fd5b5f60045f8581526020019081526020015f205f0154116110ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110a590613c2a565b60405180910390fd5b8160045f8581526020019081526020015f205f01819055508060045f8581526020019081526020015f2060020181905550505050565b60075481565b6110f2612fbe565b73ffffffffffffffffffffffffffffffffffffffff1661111061184a565b73ffffffffffffffffffffffffffffffffffffffff1614611166576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161115d906139fd565b60405180910390fd5b60165f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff166111ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111e690613c92565b60405180910390fd5b5f60155f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2090505f60155f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20905081600401548160040181905550816006015481600601819055505f82600401819055505f82600601819055505f60165f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160165f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050505050565b611352612fbe565b73ffffffffffffffffffffffffffffffffffffffff1661137061184a565b73ffffffffffffffffffffffffffffffffffffffff16146113c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113bd906139fd565b60405180910390fd5b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f1935050505015801561142a573d5f803e3d5ffd5b5050565b60085481565b61143c612fbe565b73ffffffffffffffffffffffffffffffffffffffff1661145a61184a565b73ffffffffffffffffffffffffffffffffffffffff16146114b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114a7906139fd565b60405180910390fd5b80518251146114f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114eb90613d20565b60405180910390fd5b5f5b82518110156115965781818151811061151257611511613d3e565b5b602002602001015160155f8584815181106115305761152f613d3e565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f206004015f8282546115829190613b86565b9250508190555080806001019150506114f6565b505050565b6115a3612fbe565b73ffffffffffffffffffffffffffffffffffffffff166115c161184a565b73ffffffffffffffffffffffffffffffffffffffff1614611617576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161160e906139fd565b60405180910390fd5b6116205f612fc5565b565b60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f80424333306040516020016116609493929190613dd0565b604051602081830303815290604052805190602001205f1c90506006816116879190613e1d565b60056116939190613b86565b91505090565b6116a1612fbe565b73ffffffffffffffffffffffffffffffffffffffff166116bf61184a565b73ffffffffffffffffffffffffffffffffffffffff1614611715576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161170c906139fd565b60405180910390fd5b8060015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60095481565b601260159054906101000a900460ff1681565b60108181548110611780575f80fd5b905f5260205f20015f915090505481565b601181815481106117a0575f80fd5b905f5260205f20015f915090505481565b6117b9612fbe565b73ffffffffffffffffffffffffffffffffffffffff166117d761184a565b73ffffffffffffffffffffffffffffffffffffffff161461182d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611824906139fd565b60405180910390fd5b80601260146101000a81548160ff02191690831515021790555050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f8060035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663feaf968c6040518163ffffffff1660e01b815260040160a060405180830381865afa1580156118dd573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906119019190613ed3565b5050509150508091505090565b611916612fbe565b73ffffffffffffffffffffffffffffffffffffffff1661193461184a565b73ffffffffffffffffffffffffffffffffffffffff161461198a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611981906139fd565b60405180910390fd5b8060035f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600d5481565b6119db612fbe565b73ffffffffffffffffffffffffffffffffffffffff166119f961184a565b73ffffffffffffffffffffffffffffffffffffffff1614611a4f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a46906139fd565b60405180910390fd5b6001601260156101000a81548160ff02191690831515021790555042601381905550565b601260159054906101000a900460ff1615611ac3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aba90613f94565b60405180910390fd5b601260149054906101000a900460ff16611b12576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b0990614022565b60405180910390fd5b60165f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16611c2d57600160165f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600c5f815480929190611bc790614040565b9190505550601433908060018154018082558091505060019003905f5260205f20015f9091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc3490811502906040515f60405180830381858888f19350505050158015611c91573d5f803e3d5ffd5b505f805f80611ca23460075461282b565b935060045f60075481526020019081526020015f205f01548460045f60075481526020019081526020015f2060010154611cdc9190613b86565b1115611d1d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d14906140f7565b60405180910390fd5b64012a05f200611d2c34610b99565b10611d9457611d39611647565b915060648285611d499190613905565b611d539190613973565b925082600e5f828254611d669190613b86565b9250508190555082600f5f828254611d7e9190613b86565b925050819055508284611d919190613b86565b90505b64012a05f200611da334610b99565b10158015611db55750600d54600e5411155b8015611df7575060045f60075481526020019081526020015f205f01548160045f60075481526020019081526020015f2060010154611df49190613b86565b11155b15611e51573373ffffffffffffffffffffffffffffffffffffffff167ff2dc69136497f8c6dd8f472315df1a2a909e66bee5827fcdbf3a1214561a3a9d8484604051611e44929190614115565b60405180910390a2611e55565b8390505b8060045f60075481526020019081526020015f206001015f828254611e7a9190613b86565b9250508190555080600854611e8f9190613b86565b60088190555034600954611ea39190613b86565b600981905550611eb234610b99565b600b54611ebf9190613b86565b600b81905550611ece34610b99565b60155f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f206003015f828254611f1c9190613b86565b925050819055503460155f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f015f828254611f719190613b86565b925050819055508060155f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f206004015f828254611fc79190613b86565b9250508190555050505050565b60135481565b6015602052805f5260405f205f91509050805f0154908060010154908060020154908060030154908060040154908060050154908060060154905087565b600c5481565b600e5481565b601260149054906101000a900460ff1681565b601260159054906101000a900460ff1615612087576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161207e90613f94565b60405180910390fd5b601260149054906101000a900460ff166120d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120cd90614022565b60405180910390fd5b60165f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff166121f157600160165f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600c5f81548092919061218b90614040565b9190505550601433908060018154018082558091505060019003905f5260205f20015f9091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd3360125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518463ffffffff1660e01b81526004016122709392919061415c565b5f604051808303815f87803b158015612287575f80fd5b505af1158015612299573d5f803e3d5ffd5b505050505f805f806122ad85600754612e61565b935060045f60075481526020019081526020015f205f01548460045f60075481526020019081526020015f20600101546122e79190613b86565b1115612328576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161231f906141db565b60405180910390fd5b64012a05f20085106123975761233c611647565b91506064828561234c9190613905565b6123569190613973565b925082600e5f8282546123699190613b86565b9250508190555082600f5f8282546123819190613b86565b9250508190555082846123949190613b86565b90505b64012a05f20085101580156123b05750600d54600e5411155b80156123f2575060045f60075481526020019081526020015f205f01548160045f60075481526020019081526020015f20600101546123ef9190613b86565b11155b1561244c573373ffffffffffffffffffffffffffffffffffffffff167ff2dc69136497f8c6dd8f472315df1a2a909e66bee5827fcdbf3a1214561a3a9d848460405161243f929190614115565b60405180910390a2612450565b8390505b8060045f60075481526020019081526020015f206001015f8282546124759190613b86565b925050819055508060085461248a9190613b86565b60088190555084600a5461249e9190613b86565b600a8190555084600b546124b29190613b86565b600b819055508460155f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f206003015f8282546125079190613b86565b925050819055508460155f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f206002015f82825461255d9190613b86565b925050819055508060155f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f206004015f8282546125b39190613b86565b925050819055505050505050565b6125c9612fbe565b73ffffffffffffffffffffffffffffffffffffffff166125e761184a565b73ffffffffffffffffffffffffffffffffffffffff161461263d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612634906139fd565b60405180910390fd5b836008819055508260098190555081600a8190555080600b8190555050505050565b612667612fbe565b73ffffffffffffffffffffffffffffffffffffffff1661268561184a565b73ffffffffffffffffffffffffffffffffffffffff16146126db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126d2906139fd565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401612716929190613bb9565b5f604051808303815f87803b15801561272d575f80fd5b505af115801561273f573d5f803e3d5ffd5b505050505050565b60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b612774612fbe565b73ffffffffffffffffffffffffffffffffffffffff1661279261184a565b73ffffffffffffffffffffffffffffffffffffffff16146127e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127df906139fd565b60405180910390fd5b8060025f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f80670de0b6b3a764000061283e611871565b856128499190613905565b6128539190613973565b90505f6305f5e10060045f8681526020019081526020015f20600201548361287b9190613905565b6128859190613973565b9050809250505092915050565b60055481565b600f5481565b601260159054906101000a900460ff16156128ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128e590613f94565b60405180910390fd5b601260149054906101000a900460ff1661293d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161293490614022565b60405180910390fd5b60165f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16612a5857600160165f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600c5f8154809291906129f290614040565b9190505550601482908060018154018082558091505060019003905f5260205f20015f9091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc3490811502906040515f60405180830381858888f19350505050158015612abc573d5f803e3d5ffd5b505f805f80612acd3460075461282b565b935060045f60075481526020019081526020015f205f01548460045f60075481526020019081526020015f2060010154612b079190613b86565b1115612b48576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b3f906140f7565b60405180910390fd5b64012a05f200612b5734610b99565b10612bbf57612b64611647565b915060648285612b749190613905565b612b7e9190613973565b925082600e5f828254612b919190613b86565b9250508190555082600f5f828254612ba99190613b86565b925050819055508284612bbc9190613b86565b90505b64012a05f200612bce34610b99565b10158015612be05750600d54600e5411155b8015612c22575060045f60075481526020019081526020015f205f01548160045f60075481526020019081526020015f2060010154612c1f9190613b86565b11155b15612c7c578573ffffffffffffffffffffffffffffffffffffffff167ff2dc69136497f8c6dd8f472315df1a2a909e66bee5827fcdbf3a1214561a3a9d8484604051612c6f929190614115565b60405180910390a2612c80565b8390505b8060045f60075481526020019081526020015f206001015f828254612ca59190613b86565b9250508190555080600854612cba9190613b86565b60088190555034600954612cce9190613b86565b600981905550612cdd34610b99565b600b54612cea9190613b86565b600b81905550612cf934610b99565b60155f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f206003015f828254612d479190613b86565b925050819055503460155f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f206001015f828254612d9d9190613b86565b925050819055508060155f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f206004015f828254612df39190613b86565b925050819055508460055f828254612e0b9190613b86565b92505081905550505050505050565b5f601480549050905090565b60148181548110612e35575f80fd5b905f5260205f20015f915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f80620f424060045f8581526020019081526020015f206002015485612e879190613905565b612e919190613973565b90508091505092915050565b612ea5612fbe565b73ffffffffffffffffffffffffffffffffffffffff16612ec361184a565b73ffffffffffffffffffffffffffffffffffffffff1614612f19576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f10906139fd565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612f87576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f7e90614269565b60405180910390fd5b612f9081612fc5565b50565b60065481565b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f33905090565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6130c082613097565b9050919050565b6130d0816130b6565b81146130da575f80fd5b50565b5f813590506130eb816130c7565b92915050565b5f602082840312156131065761310561308f565b5b5f613113848285016130dd565b91505092915050565b5f8115159050919050565b6131308161311c565b82525050565b5f6020820190506131495f830184613127565b92915050565b5f819050919050565b6131618161314f565b811461316b575f80fd5b50565b5f8135905061317c81613158565b92915050565b5f602082840312156131975761319661308f565b5b5f6131a48482850161316e565b91505092915050565b6131b68161314f565b82525050565b5f6020820190506131cf5f8301846131ad565b92915050565b5f6060820190506131e85f8301866131ad565b6131f560208301856131ad565b61320260408301846131ad565b949350505050565b5f819050919050565b5f61322d61322861322384613097565b61320a565b613097565b9050919050565b5f61323e82613213565b9050919050565b5f61324f82613234565b9050919050565b61325f81613245565b82525050565b5f6020820190506132785f830184613256565b92915050565b5f805f606084860312156132955761329461308f565b5b5f6132a28682870161316e565b93505060206132b38682870161316e565b92505060406132c48682870161316e565b9150509250925092565b5f80604083850312156132e4576132e361308f565b5b5f6132f1858286016130dd565b9250506020613302858286016130dd565b9150509250929050565b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b61335682613310565b810181811067ffffffffffffffff8211171561337557613374613320565b5b80604052505050565b5f613387613086565b9050613393828261334d565b919050565b5f67ffffffffffffffff8211156133b2576133b1613320565b5b602082029050602081019050919050565b5f80fd5b5f6133d96133d484613398565b61337e565b905080838252602082019050602084028301858111156133fc576133fb6133c3565b5b835b81811015613425578061341188826130dd565b8452602084019350506020810190506133fe565b5050509392505050565b5f82601f8301126134435761344261330c565b5b81356134538482602086016133c7565b91505092915050565b5f67ffffffffffffffff82111561347657613475613320565b5b602082029050602081019050919050565b5f6134996134948461345c565b61337e565b905080838252602082019050602084028301858111156134bc576134bb6133c3565b5b835b818110156134e557806134d1888261316e565b8452602084019350506020810190506134be565b5050509392505050565b5f82601f8301126135035761350261330c565b5b8135613513848260208601613487565b91505092915050565b5f80604083850312156135325761353161308f565b5b5f83013567ffffffffffffffff81111561354f5761354e613093565b5b61355b8582860161342f565b925050602083013567ffffffffffffffff81111561357c5761357b613093565b5b613588858286016134ef565b9150509250929050565b5f61359c82613234565b9050919050565b6135ac81613592565b82525050565b5f6020820190506135c55f8301846135a3565b92915050565b6135d48161311c565b81146135de575f80fd5b50565b5f813590506135ef816135cb565b92915050565b5f6020828403121561360a5761360961308f565b5b5f613617848285016135e1565b91505092915050565b613629816130b6565b82525050565b5f6020820190506136425f830184613620565b92915050565b5f613652826130b6565b9050919050565b61366281613648565b811461366c575f80fd5b50565b5f8135905061367d81613659565b92915050565b5f602082840312156136985761369761308f565b5b5f6136a58482850161366f565b91505092915050565b5f60e0820190506136c15f83018a6131ad565b6136ce60208301896131ad565b6136db60408301886131ad565b6136e860608301876131ad565b6136f560808301866131ad565b61370260a08301856131ad565b61370f60c08301846131ad565b98975050505050505050565b5f805f80608085870312156137335761373261308f565b5b5f6137408782880161316e565b94505060206137518782880161316e565b93505060406137628782880161316e565b92505060606137738782880161316e565b91505092959194509250565b5f613789826130b6565b9050919050565b6137998161377f565b81146137a3575f80fd5b50565b5f813590506137b481613790565b92915050565b5f80604083850312156137d0576137cf61308f565b5b5f6137dd858286016137a6565b92505060206137ee8582860161316e565b9150509250929050565b5f6020828403121561380d5761380c61308f565b5b5f61381a848285016137a6565b91505092915050565b5f80604083850312156138395761383861308f565b5b5f6138468582860161316e565b92505060206138578582860161316e565b9150509250929050565b5f80604083850312156138775761387661308f565b5b5f613884858286016130dd565b92505060206138958582860161316e565b9150509250929050565b5f6138a982613097565b9050919050565b6138b98161389f565b82525050565b5f6020820190506138d25f8301846138b0565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61390f8261314f565b915061391a8361314f565b92508282026139288161314f565b9150828204841483151761393f5761393e6138d8565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61397d8261314f565b91506139888361314f565b92508261399857613997613946565b5b828204905092915050565b5f82825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f6139e76020836139a3565b91506139f2826139b3565b602082019050919050565b5f6020820190508181035f830152613a14816139db565b9050919050565b7f50726573616c6520686173206e6f7420656e64656420796574000000000000005f82015250565b5f613a4f6019836139a3565b9150613a5a82613a1b565b602082019050919050565b5f6020820190508181035f830152613a7c81613a43565b9050919050565b7f4e6f20746f6b656e7320707572636861736564000000000000000000000000005f82015250565b5f613ab76013836139a3565b9150613ac282613a83565b602082019050919050565b5f6020820190508181035f830152613ae481613aab565b9050919050565b5f613af58261314f565b9150613b008361314f565b9250828203905081811115613b1857613b176138d8565b5b92915050565b7f4e6f20746f6b656e7320746f20636c61696d00000000000000000000000000005f82015250565b5f613b526012836139a3565b9150613b5d82613b1e565b602082019050919050565b5f6020820190508181035f830152613b7f81613b46565b9050919050565b5f613b908261314f565b9150613b9b8361314f565b9250828201905080821115613bb357613bb26138d8565b5b92915050565b5f604082019050613bcc5f830185613620565b613bd960208301846131ad565b9392505050565b7f70726573616c6520646f6e2774206578697374000000000000000000000000005f82015250565b5f613c146013836139a3565b9150613c1f82613be0565b602082019050919050565b5f6020820190508181035f830152613c4181613c08565b9050919050565b7f4f6c642055736572206e6f742061207061727469636970616e740000000000005f82015250565b5f613c7c601a836139a3565b9150613c8782613c48565b602082019050919050565b5f6020820190508181035f830152613ca981613c70565b9050919050565b7f41646472657373657320616e6420616d6f756e7473206d7573742062652065715f8201527f75616c0000000000000000000000000000000000000000000000000000000000602082015250565b5f613d0a6023836139a3565b9150613d1582613cb0565b604082019050919050565b5f6020820190508181035f830152613d3781613cfe565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f819050919050565b613d85613d808261314f565b613d6b565b82525050565b5f8160601b9050919050565b5f613da182613d8b565b9050919050565b5f613db282613d97565b9050919050565b613dca613dc5826130b6565b613da8565b82525050565b5f613ddb8287613d74565b602082019150613deb8286613d74565b602082019150613dfb8285613db9565b601482019150613e0b8284613db9565b60148201915081905095945050505050565b5f613e278261314f565b9150613e328361314f565b925082613e4257613e41613946565b5b828206905092915050565b5f69ffffffffffffffffffff82169050919050565b613e6b81613e4d565b8114613e75575f80fd5b50565b5f81519050613e8681613e62565b92915050565b5f819050919050565b613e9e81613e8c565b8114613ea8575f80fd5b50565b5f81519050613eb981613e95565b92915050565b5f81519050613ecd81613158565b92915050565b5f805f805f60a08688031215613eec57613eeb61308f565b5b5f613ef988828901613e78565b9550506020613f0a88828901613eab565b9450506040613f1b88828901613ebf565b9350506060613f2c88828901613ebf565b9250506080613f3d88828901613e78565b9150509295509295909350565b7f50726573616c6520656e646564210000000000000000000000000000000000005f82015250565b5f613f7e600e836139a3565b9150613f8982613f4a565b602082019050919050565b5f6020820190508181035f830152613fab81613f72565b9050919050565b7f2050726573616c65206973205061757365642c20636865636b206261636b206c5f8201527f6174657200000000000000000000000000000000000000000000000000000000602082015250565b5f61400c6024836139a3565b915061401782613fb2565b604082019050919050565b5f6020820190508181035f83015261403981614000565b9050919050565b5f61404a8261314f565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361407c5761407b6138d8565b5b600182019050919050565b7f5068617365206c696d69742072656163686564207761697420666f72206e65785f8201527f7420737461676500000000000000000000000000000000000000000000000000602082015250565b5f6140e16027836139a3565b91506140ec82614087565b604082019050919050565b5f6020820190508181035f83015261410e816140d5565b9050919050565b5f6040820190506141285f8301856131ad565b61413560208301846131ad565b9392505050565b5f61414682613234565b9050919050565b6141568161413c565b82525050565b5f60608201905061416f5f830186613620565b61417c602083018561414d565b61418960408301846131ad565b949350505050565b7f5068617365204c696d69742052656163686564000000000000000000000000005f82015250565b5f6141c56013836139a3565b91506141d082614191565b602082019050919050565b5f6020820190508181035f8301526141f2816141b9565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f6142536026836139a3565b915061425e826141f9565b604082019050919050565b5f6020820190508181035f83015261428081614247565b905091905056fea264697066735822122088ce713acde953f5b41f5a907d312d4bab5b6a77759041a4de85ea91561723ac64736f6c634300081a0033
Verified Source Code Full Match
Compiler: v0.8.26+commit.8a97fa7a
EVM: cancun
Optimization: No
nollarspresalebonus.sol 556 lines
/**
*Submitted for verification at Etherscan.io on 2024-09-19
*/
//SPDX-License-Identifier: MIT Licensed
pragma solidity ^0.8.18;
abstract contract Context {
function _msgSender() internal view virtual returns (address) {
return msg.sender;
}
function _msgData() internal view virtual returns (bytes calldata) {
return msg.data;
}
}
contract Ownable is Context {
address private _owner;
event OwnershipTransferred(
address indexed previousOwner,
address indexed newOwner
);
/**
* @dev Initializes the contract setting the deployer as the initial owner.
*/
constructor() {
_transferOwnership(_msgSender());
}
/**
* @dev Returns the address of the current owner.
*/
function owner() public view virtual returns (address) {
return _owner;
}
/**
* @dev Throws if called by any account other than the owner.
*/
modifier onlyOwner() {
require(owner() == _msgSender(), "Ownable: caller is not the owner");
_;
}
function renounceOwnership() public virtual onlyOwner {
_transferOwnership(address(0));
}
/**
* @dev Transfers ownership of the contract to a new account (`newOwner`).
* Can only be called by the current owner.
*/
function transferOwnership(address newOwner) public virtual onlyOwner {
require(
newOwner != address(0),
"Ownable: new owner is the zero address"
);
_transferOwnership(newOwner);
}
/**
* @dev Transfers ownership of the contract to a new account (`newOwner`).
* Internal function without access restriction.
*/
function _transferOwnership(address newOwner) internal virtual {
address oldOwner = _owner;
_owner = newOwner;
emit OwnershipTransferred(oldOwner, newOwner);
}
}
interface IERC20 {
function name() external view returns (string memory);
function symbol() external view returns (string memory);
function decimals() external view returns (uint8);
function totalSupply() external view returns (uint256);
function balanceOf(address owner) external view returns (uint256);
function allowance(address owner, address spender)
external
view
returns (uint256);
function approve(address spender, uint256 value) external;
function transfer(address to, uint256 value) external;
function transferFrom(
address from,
address to,
uint256 value
) external;
event Approval(
address indexed owner,
address indexed spender,
uint256 value
);
event Transfer(address indexed from, address indexed to, uint256 value);
}
interface AggregatorV3Interface {
function decimals() external view returns (uint8);
function description() external view returns (string memory);
function version() external view returns (uint256);
function getRoundData(uint80 _roundId)
external
view
returns (
uint80 roundId,
int256 answer,
uint256 startedAt,
uint256 updatedAt,
uint80 answeredInRound
);
function latestRoundData()
external
view
returns (
uint80 roundId,
int256 answer,
uint256 startedAt,
uint256 updatedAt,
uint80 answeredInRound
);
}
contract PresaleBonus is Ownable {
IERC20 public mainToken;
IERC20 public USDT = IERC20(0xdAC17F958D2ee523a2206206994597C13D831ec7);
AggregatorV3Interface public priceFeed;
struct Phase {
uint256 tokensToSell;
uint256 totalSoldTokens;
uint256 tokenPerUsdPrice;
}
mapping(uint256 => Phase) public phases;
// Stats
uint256 public cardboughtAmount;
uint256 public totalStages;
uint256 public currentStage;
uint256 public soldToken;
uint256 public amountRaised = 18187051183031750004;
uint256 public amountRaisedUSDT = 18255876000;
uint256 public amountRaisedOverall = 76688972813;
uint256 public uniqueBuyers;
// Bonus pool configuration
uint256 public BONUS_POOL_SIZE = 1_000_000 * 1e18; // 1M tokens with 18 decimals
uint256 public totalBonusDistributed;
uint256 public totalBonusOffered; // Total bonus tokens offered to users
uint256[] public tokenPerUsdPrice = [
2000000000000000000,
1820000000000000000,
1720000000000000000,
1670000000000000000,
1610000000000000000,
1540000000000000000,
1470000000000000000,
1430000000000000000,
1330000000000000000,
1250000000000000000
];
uint256[] public tokensToSell = [
400_000_000_000_000_000_000_000,
600_000_000_000_000_000_000_000,
1_000_000_000_000_000_000_000_000,
1_200_000_000_000_000_000_000_000,
1_400_000_000_000_000_000_000_000,
1_400_000_000_000_000_000_000_000,
1_200_000_000_000_000_000_000_000,
800_000_000_000_000_000_000_000,
600_000_000_000_000_000_000_000,
400_000_000_000_000_000_000_000
];
address payable public fundReceiver;
bool public presaleStatus;
bool public isPresaleEnded;
uint256 public claimStartTime;
address[] public UsersAddresses;
struct User {
uint256 native_balance;
uint256 card_balance;
uint256 usdt_balance;
uint256 overall_invested;
uint256 token_balance;
uint256 bonus_tokens;
uint256 claimed_tokens;
}
mapping(address => User) public users;
mapping(address => bool) public isExist;
event BuyToken(address indexed _user, uint256 indexed _amount);
event ClaimToken(address indexed _user, uint256 indexed _amount);
event UpdatePrice(uint256 _oldPrice, uint256 _newPrice);
event BonusAwarded(
address indexed user,
uint256 bonusAmount,
uint256 bonusPercent
);
constructor(IERC20 _token, address _fundReceiver) {
mainToken = _token;
fundReceiver = payable(_fundReceiver);
priceFeed = AggregatorV3Interface(
0x5f4eC3Df9cbd43714FE2740f5E3616155c5b8419
);
for (uint256 i = 0; i < tokensToSell.length; i++) {
phases[i].tokensToSell = tokensToSell[i];
phases[i].tokenPerUsdPrice = tokenPerUsdPrice[i];
}
totalStages = tokensToSell.length;
}
// update a presale
function updatePresale(
uint256 _phaseId,
uint256 _tokensToSell,
uint256 _tokenPerUsdPrice
) public onlyOwner {
require(phases[_phaseId].tokensToSell > 0, "presale don't exist");
phases[_phaseId].tokensToSell = _tokensToSell;
phases[_phaseId].tokenPerUsdPrice = _tokenPerUsdPrice;
}
// to get real time price of Eth
function getLatestPrice() public view returns (uint256) {
(, int256 price, , , ) = priceFeed.latestRoundData();
return uint256(price);
}
function buyTokenCard(address _user, uint256 _tokenAmount) public payable {
require(!isPresaleEnded, "Presale ended!");
require(presaleStatus, " Presale is Paused, check back later");
if (!isExist[_user]) {
isExist[_user] = true;
uniqueBuyers++;
UsersAddresses.push(_user);
}
fundReceiver.transfer(msg.value);
uint256 numberOfTokens;
uint256 bonus;
uint256 bonusPercent;
uint256 totalUserTokens;
numberOfTokens = nativeToToken(msg.value, currentStage);
require(
phases[currentStage].totalSoldTokens + numberOfTokens <=
phases[currentStage].tokensToSell,
"Phase limit reached wait for next stage"
);
if (ETHToUsd(msg.value) >= 5000000000) {
bonusPercent = getCurrentBonusPercent();
bonus = (numberOfTokens * bonusPercent) / 100;
totalBonusDistributed += bonus;
totalBonusOffered += bonus;
totalUserTokens = numberOfTokens + bonus;
}
if (
ETHToUsd(msg.value) >= 5000000000 &&
totalBonusDistributed <= BONUS_POOL_SIZE &&
phases[currentStage].totalSoldTokens + totalUserTokens <=
phases[currentStage].tokensToSell
) {
emit BonusAwarded(_user, bonus, bonusPercent);
} else {
totalUserTokens = numberOfTokens;
}
phases[currentStage].totalSoldTokens += totalUserTokens;
soldToken = soldToken + totalUserTokens;
amountRaised = amountRaised + msg.value;
amountRaisedOverall = amountRaisedOverall + ETHToUsd(msg.value);
users[_user].overall_invested += ETHToUsd(msg.value);
users[_user].card_balance += (msg.value);
users[_user].token_balance += totalUserTokens;
cardboughtAmount += _tokenAmount;
}
// to buy token during preSale time with Eth => for web3 use
function buyToken() public payable {
require(!isPresaleEnded, "Presale ended!");
require(presaleStatus, " Presale is Paused, check back later");
if (!isExist[msg.sender]) {
isExist[msg.sender] = true;
uniqueBuyers++;
UsersAddresses.push(msg.sender);
}
fundReceiver.transfer(msg.value);
uint256 numberOfTokens;
uint256 bonus;
uint256 bonusPercent;
uint256 totalUserTokens;
numberOfTokens = nativeToToken(msg.value, currentStage);
require(
phases[currentStage].totalSoldTokens + numberOfTokens <=
phases[currentStage].tokensToSell,
"Phase limit reached wait for next stage"
);
if (ETHToUsd(msg.value) >= 5000000000) {
bonusPercent = getCurrentBonusPercent();
bonus = (numberOfTokens * bonusPercent) / 100;
totalBonusDistributed += bonus;
totalBonusOffered += bonus;
totalUserTokens = numberOfTokens + bonus;
}
if (
ETHToUsd(msg.value) >= 5000000000 &&
totalBonusDistributed <= BONUS_POOL_SIZE &&
phases[currentStage].totalSoldTokens + totalUserTokens <=
phases[currentStage].tokensToSell
) {
emit BonusAwarded(msg.sender, bonus, bonusPercent);
} else {
totalUserTokens = numberOfTokens;
}
phases[currentStage].totalSoldTokens += totalUserTokens;
soldToken = soldToken + totalUserTokens;
amountRaised = amountRaised + (msg.value);
amountRaisedOverall = amountRaisedOverall + ETHToUsd(msg.value);
users[msg.sender].overall_invested += ETHToUsd(msg.value);
users[msg.sender].native_balance += (msg.value);
users[msg.sender].token_balance += totalUserTokens;
}
// to buy token during preSale time with USDT => for web3 use
function buyTokenUSDT(uint256 amount) public {
require(!isPresaleEnded, "Presale ended!");
require(presaleStatus, " Presale is Paused, check back later");
if (!isExist[msg.sender]) {
isExist[msg.sender] = true;
uniqueBuyers++;
UsersAddresses.push(msg.sender);
}
USDT.transferFrom(msg.sender, fundReceiver, amount);
uint256 numberOfTokens;
uint256 bonus;
uint256 bonusPercent;
uint256 totalUserTokens;
numberOfTokens = usdtToToken(amount, currentStage);
require(
phases[currentStage].totalSoldTokens + numberOfTokens <=
phases[currentStage].tokensToSell,
"Phase Limit Reached"
);
if (amount >= 5000000000) {
bonusPercent = getCurrentBonusPercent();
bonus = (numberOfTokens * bonusPercent) / 100;
totalBonusDistributed += bonus;
totalBonusOffered += bonus;
totalUserTokens = numberOfTokens + bonus;
}
if (
amount >= 5000000000 &&
totalBonusDistributed <= BONUS_POOL_SIZE &&
phases[currentStage].totalSoldTokens + totalUserTokens <=
phases[currentStage].tokensToSell
) {
emit BonusAwarded(msg.sender, bonus, bonusPercent);
} else {
totalUserTokens = numberOfTokens;
}
phases[currentStage].totalSoldTokens += totalUserTokens;
soldToken = soldToken + totalUserTokens;
amountRaisedUSDT = amountRaisedUSDT + amount;
amountRaisedOverall = amountRaisedOverall + amount;
users[msg.sender].overall_invested += amount;
users[msg.sender].usdt_balance += amount;
users[msg.sender].token_balance += totalUserTokens;
}
function getCurrentBonusPercent() public view returns (uint256) {
// Use multiple sources of randomness to make it harder to predict/game
uint256 seed = uint256(
keccak256(
abi.encodePacked(
block.timestamp, // Current block timestamp (seconds)
block.number, // Current block number
msg.sender, // Caller address
address(this) // Contract address
)
)
);
return 5 + (seed % 6); // returns 5 to 10
}
function claimTokens() external {
require(isPresaleEnded, "Presale has not ended yet");
User storage user = users[msg.sender];
require(user.token_balance > 0, "No tokens purchased");
uint256 claimableTokens = user.token_balance - user.claimed_tokens;
require(claimableTokens > 0, "No tokens to claim");
user.claimed_tokens += claimableTokens;
mainToken.transfer(msg.sender, claimableTokens);
emit ClaimToken(msg.sender, claimableTokens);
}
function changeClaimAddress(address _oldAddress, address _newWallet)
public
onlyOwner
{
require(isExist[_oldAddress], "Old User not a participant");
User storage user = users[_oldAddress];
User storage newUser = users[_newWallet];
newUser.token_balance = user.token_balance;
newUser.claimed_tokens = user.claimed_tokens;
user.token_balance = 0;
user.claimed_tokens = 0;
isExist[_oldAddress] = false;
isExist[_newWallet] = true;
}
function whitelistAddresses(
address[] memory _addresses,
uint256[] memory _tokenAmount
) external onlyOwner {
require(
_addresses.length == _tokenAmount.length,
"Addresses and amounts must be equal"
);
for (uint256 i = 0; i < _addresses.length; i++) {
users[_addresses[i]].token_balance += _tokenAmount[i];
}
}
function getPhaseDetail(uint256 phaseInd)
external
view
returns (
uint256 tokenToSell,
uint256 soldTokens,
uint256 priceUsd
)
{
Phase memory phase = phases[phaseInd];
return (
phase.tokensToSell,
phase.totalSoldTokens,
phase.tokenPerUsdPrice
);
}
function setPresaleStatus(bool _status) external onlyOwner {
presaleStatus = _status;
}
function endPresale() external onlyOwner {
isPresaleEnded = true;
claimStartTime = block.timestamp;
}
// to check number of token for given Eth
function nativeToToken(uint256 _amount, uint256 phaseId)
public
view
returns (uint256)
{
uint256 ethToUsd = (_amount * (getLatestPrice())) / (1 ether);
uint256 numberOfTokens = (ethToUsd * phases[phaseId].tokenPerUsdPrice) /
(1e8);
return numberOfTokens;
}
// to check number of token for given usdt
function usdtToToken(uint256 _amount, uint256 phaseId)
public
view
returns (uint256)
{
uint256 numberOfTokens = (_amount * phases[phaseId].tokenPerUsdPrice) /
(1e6);
return numberOfTokens;
}
// Eth to USD
function ETHToUsd(uint256 _amount) public view returns (uint256) {
uint256 nativeTousd = (_amount * (getLatestPrice())) / (1e20);
return nativeTousd;
}
function updateInfos(
uint256 _sold,
uint256 _raised,
uint256 _raisedInUsdt,
uint256 _amountRaisedOverall
) external onlyOwner {
soldToken = _sold;
amountRaised = _raised;
amountRaisedUSDT = _raisedInUsdt;
amountRaisedOverall = _amountRaisedOverall;
}
// change tokens
function updateToken(address _token) external onlyOwner {
mainToken = IERC20(_token);
}
//change tokens for buy
function updateStableTokens(IERC20 _USDT) external onlyOwner {
USDT = IERC20(_USDT);
}
// to withdraw funds for liquidity
function initiateTransfer(uint256 _value) external onlyOwner {
fundReceiver.transfer(_value);
}
// to withdraw funds for liquidity
function changeFundReciever(address _addr) external onlyOwner {
fundReceiver = payable(_addr);
}
// funtion is used to change the stage of presale
function setCurrentStage(uint256 _stageNum) public onlyOwner {
currentStage = _stageNum;
}
// to withdraw funds for liquidity
function updatePriceFeed(AggregatorV3Interface _priceFeed)
external
onlyOwner
{
priceFeed = _priceFeed;
}
// to withdraw out tokens
function transferTokens(IERC20 token, uint256 _value) external onlyOwner {
token.transfer(msg.sender, _value);
}
function totalUsersCount() external view returns (uint256) {
return UsersAddresses.length;
}
}
Read Contract
BONUS_POOL_SIZE 0x96278f2c → uint256
ETHToUsd 0x24313768 → uint256
USDT 0xc54e44eb → address
UsersAddresses 0xe00e0612 → address
amountRaised 0x7b3e5e7b → uint256
amountRaisedOverall 0x39878eaa → uint256
amountRaisedUSDT 0x405fb944 → uint256
cardboughtAmount 0xcc0ea0a9 → uint256
claimStartTime 0xa6a11bb1 → uint256
currentStage 0x5bf5d54c → uint256
fundReceiver 0xfb4aa0a1 → address
getCurrentBonusPercent 0x77e6bb15 → uint256
getLatestPrice 0x8e15f473 → uint256
getPhaseDetail 0x2d2fbfd4 → uint256, uint256, uint256
isExist 0x0013eb4b → bool
isPresaleEnded 0x7decf27f → bool
mainToken 0x3fc15f15 → address
nativeToToken 0xcb33365d → uint256
owner 0x8da5cb5b → address
phases 0x2e37eef6 → uint256, uint256, uint256
presaleStatus 0xacfb2355 → bool
priceFeed 0x741bef1a → address
soldToken 0x6769d1f9 → uint256
tokenPerUsdPrice 0x83ced170 → uint256
tokensToSell 0x8577d452 → uint256
totalBonusDistributed 0xab11417f → uint256
totalBonusOffered 0xcd0302ca → uint256
totalStages 0xf86a3529 → uint256
totalUsersCount 0xdb203b7f → uint256
uniqueBuyers 0xaa1c3aa5 → uint256
usdtToToken 0xe9238daf → uint256
users 0xa87430ba → uint256, uint256, uint256, uint256, uint256, uint256, uint256
Write Contract 19 functions
These functions modify contract state and require a wallet transaction to execute.
buyToken 0xa4821719
No parameters
buyTokenCard 0xd495a631
address _user
uint256 _tokenAmount
buyTokenUSDT 0xb5e75e1c
uint256 amount
changeClaimAddress 0x5dfd59f6
address _oldAddress
address _newWallet
changeFundReciever 0x53a29ad2
address _addr
claimTokens 0x48c54b9d
No parameters
endPresale 0xa43be57b
No parameters
initiateTransfer 0x61a31e00
uint256 _value
renounceOwnership 0x715018a6
No parameters
setCurrentStage 0x38c67b73
uint256 _stageNum
setPresaleStatus 0x8895283f
bool _status
transferOwnership 0xf2fde38b
address newOwner
transferTokens 0xbec3fa17
address token
uint256 _value
updateInfos 0xb97a2d64
uint256 _sold
uint256 _raised
uint256 _raisedInUsdt
uint256 _amountRaisedOverall
updatePresale 0x544b15d2
uint256 _phaseId
uint256 _tokensToSell
uint256 _tokenPerUsdPrice
updatePriceFeed 0x95877f78
address _priceFeed
updateStableTokens 0xc63368be
address _USDT
updateToken 0x7ad3def2
address _token
whitelistAddresses 0x70f58c97
address[] _addresses
uint256[] _tokenAmount
Recent Transactions
No transactions found for this address