Cryo Explorer Ethereum Mainnet

Address Contract Partially Verified

Address 0xcbB3B5cb208B6A579dcf09ba53e7ECBECe690E95
Balance 0 ETH
Nonce 1
Code Size 12523 bytes
Indexed Transactions 0
External Etherscan · Sourcify

Contract Bytecode

12523 bytes
0x608060405234801561001057600080fd5b506004361061032b5760003560e01c80637cb04a21116101b2578063cac06522116100f9578063f25f4b56116100a2578063fcb53d361161007c578063fcb53d36146105e8578063fd1fb605146105f0578063fe354cd314610603578063ff3829eb146106165761032b565b8063f25f4b56146105ba578063f2fde38b146105c2578063f7d97577146105d55761032b565b8063de560cca116100d3578063de560cca14610597578063e085c9521461059f578063f0fde113146105a75761032b565b8063cac0652214610572578063d88e71e014610587578063dd9697281461058f5761032b565b80638fc1ea1e1161015b578063a0cbadb311610135578063a0cbadb31461054f578063ad82c25414610557578063b553207e1461056a5761032b565b80638fc1ea1e1461051657806392929a09146105295780639b9c97591461053c5761032b565b80638bdb1e4f1161018c5780638bdb1e4f146104f35780638da5cb5b146105065780638f73918e1461050e5761032b565b80637cb04a21146104ba5780637e320f7f146104cd57806388045588146104e05761032b565b806339e38f41116102765780635b65b9ab1161021f578063673cd98e116101f9578063673cd98e146104a257806371f4f3fb146104aa578063767eb6c7146104b25761032b565b80635b65b9ab146104625780635de9a1371461047557806365ab44771461049a5761032b565b80634e71d92d116102505780634e71d92d1461043f5780634fa77a48146104475780635a6da1e91461045a5761032b565b806339e38f411461041c57806340912990146104245780634a9fefc71461042c5761032b565b8063265243b6116102d85780632e5e8334116102b25780632e5e8334146103e157806336d8a893146103e9578063384c9aef146104095761032b565b8063265243b6146103b35780632866ed21146103c65780632afcf480146103ce5761032b565b8063179eb7fc11610309578063179eb7fc146103835780631fe9483f146103985780631fed13f2146103ab5761032b565b8063027dcbe6146103305780630985f7081461034e5780630b6bedec1461036e575b600080fd5b610338610629565b6040516103459190612f60565b60405180910390f35b61036161035c366004612276565b61062f565b6040516103459190612dc3565b6103766107d5565b6040516103459190612bec565b610396610391366004612463565b6107e4565b005b6103966103a6366004612445565b610845565b610338610894565b6103616103c13660046121da565b61089a565b6103616109d0565b6103616103dc366004612445565b6109de565b610338610d51565b6103fc6103f736600461217a565b610d57565b6040516103459190612cf7565b610396610417366004612445565b610df8565b610338610e27565b610338610e2d565b61037661043a36600461217a565b610e33565b610361610e7a565b61036161045536600461217a565b611518565b6103386116a1565b610396610470366004612493565b6116a7565b61048861048336600461217a565b611701565b60405161034596959493929190612f6e565b610338611738565b61033861173e565b610361611744565b61033861174d565b6103966104c8366004612445565b611753565b6103966104db3660046124e0565b611782565b6103966104ee366004612445565b6117c3565b6103966105013660046121a0565b6117f2565b610376611873565b610338611882565b610396610524366004612409565b611888565b610396610537366004612409565b6118c5565b61033861054a36600461217a565b611909565b6103386119ee565b610396610565366004612445565b6119f4565b610338611a23565b61057a611a29565b6040516103459190612dd1565b610338611a38565b610338611a3e565b610338611a44565b610338611a4a565b6103966105b53660046121a0565b611a50565b610376611b77565b6103966105d036600461217a565b611b86565b6103966105e3366004612463565b611bf8565b610338611c59565b6103966105fe3660046121a0565b611c5f565b6103616106113660046122d5565b611d33565b61037661062436600461217a565b611ef7565b60175481565b6001546000906001600160a01b031633146106655760405162461bcd60e51b815260040161065c90612e10565b60405180910390fd5b81518351146106865760405162461bcd60e51b815260040161065c90612e60565b60005b8251811015610791576000600360008684815181106106a457fe5b60200260200101516001600160a01b03166001600160a01b031681526020019081526020016000209050806000018483815181106106de57fe5b6020908102919091018101518254600181018455600093845291832090910180546001600160a01b0319166001600160a01b039092169190911790558451600490829087908690811061072d57fe5b60200260200101516001600160a01b03166001600160a01b03168152602001908152602001600020905085838151811061076357fe5b602090810291909101015181546001600160a01b0319166001600160a01b0390911617905550600101610689565b507f9dbeb05a6254e135c9083ae0658fc2bb9b12fa2507454a145f9a3e032a65979b83836040516107c3929190612d08565b60405180910390a15060015b92915050565b6007546001600160a01b031681565b6001546001600160a01b0316331461080e5760405162461bcd60e51b815260040161065c90612e10565b60008211801561081e5750600081115b61083a5760405162461bcd60e51b815260040161065c90612eb0565b600a91909155600b55565b6001546001600160a01b0316331461086f5760405162461bcd60e51b815260040161065c90612e10565b6000811161088f5760405162461bcd60e51b815260040161065c90612ec0565b600d55565b600c5481565b6001546000906001600160a01b031633146108c75760405162461bcd60e51b815260040161065c90612e10565b6001600160a01b0388166108ed5760405162461bcd60e51b815260040161065c90612f30565b6040518060c0016040528088815260200187815260200186815260200185815260200184815260200183815250600260008a6001600160a01b03166001600160a01b03168152602001908152602001600020600082015181600001556020820151816001015560408201518160020155606082015181600301556080820151816004015560a082015181600501559050507f1d258f449ca00d720f3d00f10cd38a6e2fbae3ff5b1b8b206acb2272c9640275888888888888886040516109b99796959493929190612c8f565b60405180910390a15060015b979650505050505050565b601854610100900460ff1681565b60185460009060ff161515600114610a085760405162461bcd60e51b815260040161065c90612ea0565b60008211610a285760405162461bcd60e51b815260040161065c90612df0565b6000610a506064610a44600c5486611f1290919063ffffffff16565b9063ffffffff611f5316565b6000546005546040516323b872dd60e01b81529293506001600160a01b03918216926323b872dd92610a8b9233929116908690600401612c15565b602060405180830381600087803b158015610aa557600080fd5b505af1158015610ab9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610add9190810190612427565b506000546040516323b872dd60e01b81526001600160a01b03909116906323b872dd90610b14903390309086890390600401612c15565b602060405180830381600087803b158015610b2e57600080fd5b505af1158015610b42573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610b669190810190612427565b50336000908152600260205260408120600381015490919015610bc157610bb562015180610a448460050154610ba9866003015442611f9590919063ffffffff16565b9063ffffffff611f1216565b60028301805490910190555b8154610bd1576010805460010190555b601654610be590869063ffffffff611f1216565b82540180835542600384015560028301546001840154601454600093610c3e9392610c329290918391610c2690606490610a4490849063ffffffff611f1216565b9063ffffffff611fd716565b9063ffffffff611f9516565b9050600d54811015610c5457600a549150610c5a565b600b5491505b42620151808302016004840155610c77818363ffffffff611f5316565b6005840155601654610c9090879063ffffffff611f1216565b600f80549091019055601180548701905533600090815260046020526040902080546001600160a01b031615610d0557610ce06064610a44601554610ba96016548c611f1290919063ffffffff16565b81546001600160a01b0316600090815260026020819052604090912001805490910190555b7f3eb0f553d9ec38e0ff3a72db450f9d6f5e372e70e824a3195a09ead1c01fb8763388601654604051610d3a93929190612c58565b60405180910390a16001955050505050505b919050565b600b5481565b60606001600160a01b038216610d7f5760405162461bcd60e51b815260040161065c90612e90565b6001600160a01b0382166000908152600360209081526040918290208054835181840281018401909452808452909291839190830182828015610deb57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610dcd575b5050505050915050919050565b6001546001600160a01b03163314610e225760405162461bcd60e51b815260040161065c90612e10565b601455565b60085481565b60105481565b60006001600160a01b038216610e5b5760405162461bcd60e51b815260040161065c90612f00565b506001600160a01b039081166000908152600460205260409020541690565b60185460009060ff610100909104161515600114610eaa5760405162461bcd60e51b815260040161065c90612f50565b336000908152600260205260409020600581015415801590610ed0575060008160030154115b610eec5760405162461bcd60e51b815260040161065c90612ee0565b60028101548154601454600091610f1591610c2690606490610a4490849063ffffffff611f1216565b6001840154909150808211610f3c5760405162461bcd60e51b815260040161065c90612f20565b6000610f6462015180610a448760050154610ba9896003015442611f9590919063ffffffff16565b4260038701556000600287015593840193905083610f945760405162461bcd60e51b815260040161065c90612e80565b600185015460009081908190870186811061120b57601754610fc090610a44898963ffffffff611f9516565b9350868960010181905550610fe56064610a4460065487611f1290919063ffffffff16565b92506110016064610a4460085487611f1290919063ffffffff16565b895460018b0154919350600091111561103a575060085460065460095403036110356064610a44878463ffffffff611f1216565b840193505b83156110ca5760005460055460405163a9059cbb60e01b81526001600160a01b039283169263a9059cbb92611076929116908890600401612c81565b602060405180830381600087803b15801561109057600080fd5b505af11580156110a4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506110c89190810190612427565b505b821561115a5760005460075460405163a9059cbb60e01b81526001600160a01b039283169263a9059cbb92611106929116908790600401612c81565b602060405180830381600087803b15801561112057600080fd5b505af1158015611134573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506111589190810190612427565b505b6000546001600160a01b031663a9059cbb3361118086610c328a8a63ffffffff611f9516565b6040518363ffffffff1660e01b815260040161119d929190612c3d565b602060405180830381600087803b1580156111b757600080fd5b505af11580156111cb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506111ef9190810190612427565b5050600060058a0181905560038a0181905560048a01556114a6565b60175461121f90899063ffffffff611f5316565b60018a0180548a01905560065490945061124790606490610a4490879063ffffffff611f1216565b92506112636064610a4460085487611f1290919063ffffffff16565b895460018b0154919350600091111561129c575060085460065460095403036112976064610a44878463ffffffff611f1216565b840193505b831561132c5760005460055460405163a9059cbb60e01b81526001600160a01b039283169263a9059cbb926112d8929116908890600401612c81565b602060405180830381600087803b1580156112f257600080fd5b505af1158015611306573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061132a9190810190612427565b505b82156113bc5760005460075460405163a9059cbb60e01b81526001600160a01b039283169263a9059cbb92611368929116908790600401612c81565b602060405180830381600087803b15801561138257600080fd5b505af1158015611396573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506113ba9190810190612427565b505b6000546001600160a01b031663a9059cbb336113e286610c328a8a63ffffffff611f9516565b6040518363ffffffff1660e01b81526004016113ff929190612c3d565b602060405180830381600087803b15801561141957600080fd5b505af115801561142d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506114519190810190612427565b506000611464898463ffffffff611f9516565b600d5490915060009082101561147d5750600a54611482565b50600b545b611492828263ffffffff611f5316565b60058d01556201518002420160048c015550505b60138054850190556017546114c290859063ffffffff611f1216565b6012805490910190556017546040517f4343fc0436cb075772fdb7e28d5380cc610e5334add5537e2d2b2946b8e2836f916115009133918891612c58565b60405180910390a16001995050505050505050505090565b60006001600160a01b0382166115405760405162461bcd60e51b815260040161065c90612f00565b6001600160a01b03808316600090815260046020526040902080549091161561157b5760405162461bcd60e51b815260040161065c90612f40565b336000908152600260208190526040909120600e5491810154600182015482546014549394936115c79392610c32929091839190610c2690606490610a4490849063ffffffff611f1216565b10156115e55760405162461bcd60e51b815260040161065c90612e00565b6001600160a01b038416600090815260026020526040902080541561161c5760405162461bcd60e51b815260040161065c90612e70565b33600081815260036020908152604080832080546001810182558185528385200180546001600160a01b038c166001600160a01b0319918216811790925590855260049093529281902080549092168417825551919290917f119ef486614f5f4e5c2be21ea6eaf1a60375d930dbc6fa4cba7989bcfbe0ec8591610d3a918a90612bfa565b60145481565b6001546001600160a01b031633146116d15760405162461bcd60e51b815260040161065c90612e10565b8183018110156116f35760405162461bcd60e51b815260040161065c90612ef0565b600692909255600855600955565b6002602081905260009182526040909120805460018201549282015460038301546004840154600590940154929493919290919086565b600e5481565b60115481565b60185460ff1681565b600d5481565b6001546001600160a01b0316331461177d5760405162461bcd60e51b815260040161065c90612e10565b601555565b6001546001600160a01b031633146117ac5760405162461bcd60e51b815260040161065c90612e10565b600f94909455601092909255601155601255601355565b6001546001600160a01b031633146117ed5760405162461bcd60e51b815260040161065c90612e10565b600c55565b6001546001600160a01b0316331461181c5760405162461bcd60e51b815260040161065c90612e10565b6001600160a01b0381166118425760405162461bcd60e51b815260040161065c90612f00565b6001600160a01b03908116600090815260046020526040902080546001600160a01b03191692909116919091179055565b6001546001600160a01b031681565b60095481565b6001546001600160a01b031633146118b25760405162461bcd60e51b815260040161065c90612e10565b6018805460ff1916911515919091179055565b6001546001600160a01b031633146118ef5760405162461bcd60e51b815260040161065c90612e10565b601880549115156101000261ff0019909216919091179055565b60006001600160a01b0382166119315760405162461bcd60e51b815260040161065c90612f30565b6001600160a01b03821660009081526002602052604090208054611959576000915050610d4c565b6002810154815460145460009161198291610c2690606490610a4490849063ffffffff611f1216565b600184015490915080821161199e576000945050505050610d4c565b60006119c662015180610a448760050154610ba9896003015442611f9590919063ffffffff16565b9050808401935082828501106119e3575090039250610d4c915050565b509195945050505050565b60125481565b6001546001600160a01b03163314611a1e5760405162461bcd60e51b815260040161065c90612e10565b600e55565b600a5481565b6000546001600160a01b031681565b60155481565b60165481565b600f5481565b60135481565b6001546001600160a01b03163314611a7a5760405162461bcd60e51b815260040161065c90612e10565b6001600160a01b0382166000908152600360205260408120905b8154811015611b7157826001600160a01b0316828281548110611ab357fe5b6000918252602090912001546001600160a01b03161415611b6957815482906000198101908110611ae057fe5b9060005260206000200160009054906101000a90046001600160a01b0316828281548110611b0a57fe5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555081805480611b4257fe5b600082815260209020810160001990810180546001600160a01b0319169055019055611b71565b600101611a94565b50505050565b6005546001600160a01b031681565b6001546001600160a01b03163314611bb05760405162461bcd60e51b815260040161065c90612e10565b6001600160a01b038116611bd65760405162461bcd60e51b815260040161065c90612e20565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b6001546001600160a01b03163314611c225760405162461bcd60e51b815260040161065c90612e10565b600082118015611c325750600081115b611c4e5760405162461bcd60e51b815260040161065c90612f10565b601691909155601755565b60065481565b6001546001600160a01b03163314611c895760405162461bcd60e51b815260040161065c90612e10565b6001600160a01b03821615801590611ca957506001600160a01b03811615155b611cc55760405162461bcd60e51b815260040161065c90612e30565b600580546001600160a01b038085166001600160a01b03199283161790925560078054928416929091169190911790556040517f9f4f5dce3c4d197b5d7496cb96e25f0a89809167195964b0daa3ef5fed63c00a90611d279084908490612c73565b60405180910390a15050565b6001546000906001600160a01b03163314611d605760405162461bcd60e51b815260040161065c90612e10565b86518851148015611d72575085518851145b8015611d7f575084518851145b8015611d8c575083518851145b8015611d99575082518851145b8015611da6575081518851145b611dc25760405162461bcd60e51b815260040161065c90612e40565b60005b8851811015611ebb576000600260008b8481518110611de057fe5b60200260200101516001600160a01b03166001600160a01b031681526020019081526020016000209050888281518110611e1657fe5b60200260200101518160000181905550878281518110611e3257fe5b60200260200101518160010181905550868281518110611e4e57fe5b60200260200101518160020181905550858281518110611e6a57fe5b60200260200101518160030181905550848281518110611e8657fe5b60200260200101518160040181905550838281518110611ea257fe5b6020908102919091010151600590910155600101611dc5565b507ff4a5e17d0336eb9b912ed5de3d810d3957d3b48b09452a5ccd34885369167807888888888888886040516109b99796959493929190612d2d565b6004602052600090815260409020546001600160a01b031681565b600082611f21575060006107cf565b82820282848281611f2e57fe5b0414611f4c5760405162461bcd60e51b815260040161065c90612ed0565b9392505050565b6000611f4c83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611ffc565b6000611f4c83836040518060400160405280601f81526020017f536166654d6174683a207375627472616374696f6e20756e646572666c6f7700815250612033565b600082820183811015611f4c5760405162461bcd60e51b815260040161065c90612e50565b6000818361201d5760405162461bcd60e51b815260040161065c9190612ddf565b50600083858161202957fe5b0495945050505050565b600081848411156120575760405162461bcd60e51b815260040161065c9190612ddf565b505050900390565b80356107cf8161307f565b600082601f83011261207b57600080fd5b813561208e61208982612fe4565b612fbd565b915081818352602084019350602081019050838560208402820111156120b357600080fd5b60005b838110156120df57816120c9888261205f565b84525060209283019291909101906001016120b6565b5050505092915050565b600082601f8301126120fa57600080fd5b813561210861208982612fe4565b9150818183526020840193506020810190508385602084028201111561212d57600080fd5b60005b838110156120df5781612143888261216f565b8452506020928301929190910190600101612130565b80356107cf81613096565b80516107cf81613096565b80356107cf8161309f565b60006020828403121561218c57600080fd5b6000612198848461205f565b949350505050565b600080604083850312156121b357600080fd5b60006121bf858561205f565b92505060206121d08582860161205f565b9150509250929050565b600080600080600080600060e0888a0312156121f557600080fd5b60006122018a8a61205f565b97505060206122128a828b0161216f565b96505060406122238a828b0161216f565b95505060606122348a828b0161216f565b94505060806122458a828b0161216f565b93505060a06122568a828b0161216f565b92505060c06122678a828b0161216f565b91505092959891949750929550565b6000806040838503121561228957600080fd5b823567ffffffffffffffff8111156122a057600080fd5b6122ac8582860161206a565b925050602083013567ffffffffffffffff8111156122c957600080fd5b6121d08582860161206a565b600080600080600080600060e0888a0312156122f057600080fd5b873567ffffffffffffffff81111561230757600080fd5b6123138a828b0161206a565b975050602088013567ffffffffffffffff81111561233057600080fd5b61233c8a828b016120e9565b965050604088013567ffffffffffffffff81111561235957600080fd5b6123658a828b016120e9565b955050606088013567ffffffffffffffff81111561238257600080fd5b61238e8a828b016120e9565b945050608088013567ffffffffffffffff8111156123ab57600080fd5b6123b78a828b016120e9565b93505060a088013567ffffffffffffffff8111156123d457600080fd5b6123e08a828b016120e9565b92505060c088013567ffffffffffffffff8111156123fd57600080fd5b6122678a828b016120e9565b60006020828403121561241b57600080fd5b60006121988484612159565b60006020828403121561243957600080fd5b60006121988484612164565b60006020828403121561245757600080fd5b6000612198848461216f565b6000806040838503121561247657600080fd5b6000612482858561216f565b92505060206121d08582860161216f565b6000806000606084860312156124a857600080fd5b60006124b4868661216f565b93505060206124c58682870161216f565b92505060406124d68682870161216f565b9150509250925092565b600080600080600060a086880312156124f857600080fd5b6000612504888861216f565b95505060206125158882890161216f565b94505060406125268882890161216f565b93505060606125378882890161216f565b92505060806125488882890161216f565b9150509295509295909350565b60006125618383612584565b505060200190565b60006125618383612be3565b61257e81613037565b82525050565b61257e81613018565b60006125988261300b565b6125a2818561300f565b93506125ad83613005565b8060005b838110156125db5781516125c58882612555565b97506125d083613005565b9250506001016125b1565b509495945050505050565b60006125f18261300b565b6125fb818561300f565b935061260683613005565b8060005b838110156125db57815161261e8882612569565b975061262983613005565b92505060010161260a565b61257e81613023565b61257e8161303e565b60006126518261300b565b61265b818561300f565b935061266b818560208601613049565b61267481613075565b9093019392505050565b600061268b600f8361300f565b6e24b73b30b634b21030b6b7bab73a1760891b815260200192915050565b60006126b660278361300f565b7f526566657272657220686173206e6f20726566657272616c207175616c69666981526631b0ba34b7b71760c91b602082015260400192915050565b60006126ff60228361300f565b7f4f6e6c79206f776e65722063616e2063616c6c20746869732066756e6374696f815261371760f11b602082015260400192915050565b600061274360188361300f565b7f4e6577206f776e65722063616e6e6f74206265203078302e0000000000000000815260200192915050565b600061277c600f8361300f565b6e496e76616c6964206164647265737360881b815260200192915050565b60006127a760298361300f565b7f546865206c656e677468206f662074686520617272617973206d757374206265815268207468652073616d6560b81b602082015260400192915050565b60006127f2601b8361300f565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000815260200192915050565b600061282b602d8361300f565b7f546865206c656e677468206f66207468652074776f20617272617973206d757381526c74206265207468652073616d6560981b602082015260400192915050565b600061287a60188361300f565b7f54686973206163636f756e7420686164207374616b6564210000000000000000815260200192915050565b60006128b360158361300f565b7f4e6f20696e74657265737420746f20636c61696d2e0000000000000000000000815260200192915050565b60006128ec601e8361300f565b7f7265666572726572416464726573732063616e6e6f74206265203078302e0000815260200192915050565b600061292560128361300f565b714e6f20696e7665737420616c6c6f7765642160701b815260200192915050565b6000612953601d8361300f565b7f646179732073686f756c642062652067726561746572207468616e2030000000815260200192915050565b600061298c601e8361300f565b7f6c6576656c2073686f756c642062652067726561746572207468616e20300000815260200192915050565b60006129c560218361300f565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f8152607760f81b602082015260400192915050565b6000612a0860118361300f565b702737903637b1b5b2b21030b6b7bab73a1760791b815260200192915050565b6000612a35603b8361300f565b7f5f66656532206d7573742062652067726561746572207468616e20746865207381527f756d206f66207468652066697273742074776f206e756d626572730000000000602082015260400192915050565b6000612a94601d8361300f565b7f696e7669746565416464726573732063616e6e6f74206265203078302e000000815260200192915050565b6000612acd60168361300f565b7f5072696365206d75737420626520706f73697469766500000000000000000000815260200192915050565b6000612b0660298361300f565b7f416c6c20696e766573746d656e74732068617665206265656e2066756c6c79208152683bb4ba34323930bbb760b91b602082015260400192915050565b6000612b5160148361300f565b7f5f757365722063616e6e6f74206265203078302e000000000000000000000000815260200192915050565b6000612b8a601e8361300f565b7f54686973206163636f756e7420686164206265656e20696e7669746564210000815260200192915050565b6000612bc360118361300f565b704e6f20636c61696d20616c6c6f7765642160781b815260200192915050565b61257e81613034565b602081016107cf8284612584565b60408101612c088285612575565b611f4c6020830184612584565b60608101612c238286612575565b612c306020830185612584565b6121986040830184612be3565b60408101612c4b8285612575565b611f4c6020830184612be3565b60608101612c668286612575565b612c306020830185612be3565b60408101612c088285612584565b60408101612c4b8285612584565b60e08101612c9d828a612584565b612caa6020830189612be3565b612cb76040830188612be3565b612cc46060830187612be3565b612cd16080830186612be3565b612cde60a0830185612be3565b612ceb60c0830184612be3565b98975050505050505050565b60208082528101611f4c818461258d565b60408082528101612d19818561258d565b90508181036020830152612198818461258d565b60e08082528101612d3e818a61258d565b90508181036020830152612d5281896125e6565b90508181036040830152612d6681886125e6565b90508181036060830152612d7a81876125e6565b90508181036080830152612d8e81866125e6565b905081810360a0830152612da281856125e6565b905081810360c0830152612db681846125e6565b9998505050505050505050565b602081016107cf8284612634565b602081016107cf828461263d565b60208082528101611f4c8184612646565b602080825281016107cf8161267e565b602080825281016107cf816126a9565b602080825281016107cf816126f2565b602080825281016107cf81612736565b602080825281016107cf8161276f565b602080825281016107cf8161279a565b602080825281016107cf816127e5565b602080825281016107cf8161281e565b602080825281016107cf8161286d565b602080825281016107cf816128a6565b602080825281016107cf816128df565b602080825281016107cf81612918565b602080825281016107cf81612946565b602080825281016107cf8161297f565b602080825281016107cf816129b8565b602080825281016107cf816129fb565b602080825281016107cf81612a28565b602080825281016107cf81612a87565b602080825281016107cf81612ac0565b602080825281016107cf81612af9565b602080825281016107cf81612b44565b602080825281016107cf81612b7d565b602080825281016107cf81612bb6565b602081016107cf8284612be3565b60c08101612f7c8289612be3565b612f896020830188612be3565b612f966040830187612be3565b612fa36060830186612be3565b612fb06080830185612be3565b6109c560a0830184612be3565b60405181810167ffffffffffffffff81118282101715612fdc57600080fd5b604052919050565b600067ffffffffffffffff821115612ffb57600080fd5b5060209081020190565b60200190565b5190565b90815260200190565b60006107cf82613028565b151590565b6001600160a01b031690565b90565b60006107cf825b60006107cf82613018565b60005b8381101561306457818101518382015260200161304c565b83811115611b715750506000910152565b601f01601f191690565b61308881613018565b811461309357600080fd5b50565b61308881613023565b6130888161303456fea365627a7a723158200f6631b5a51ec713c0bb2be84c50c5df39084d10d1ae99a2eef778c6312e75fe6c6578706572696d656e74616cf564736f6c63430005100040

Verified Source Code Partial Match

Compiler: v0.5.16+commit.9c3226ce EVM: istanbul Optimization: Yes (300 runs)
EsgSHIPV3Pro.sol 378 lines
pragma solidity >=0.5.16;
pragma experimental ABIEncoderV2;

import "./EIP20Interface.sol";
import "./SafeMath.sol";

contract EsgSHIPV3Pro{
    using SafeMath for uint256;
    EIP20Interface public esg;
    address public owner;

    event SetInvitee(address referrerAddress, address inviteeAddress);

    event SetInviteeByOwner(address[] referrerAddress, address[] inviteeAddress);

    event EsgInvest(address account, uint256 amount, uint256 price);

    event EsgInvestByOwner(address[] account, uint256[] values, uint256[] withdraws, uint256[] bonuss, uint256[] lastTimes, uint256[] endTimes, uint256[] releaseRates);

    event EsgClaimed(address account, uint256 amount, uint256 price);

    event EsgChangeLockInfo(address _user, uint256 _value, uint256 _withdraw, uint256 _bonus, uint256 _lastTime, uint256 _endTime, uint256 _releaseRate);

    event FeeWalletChanged(address feewallet, address miniwallet);

    struct Lock {
        uint256 value;
        uint256 withdraw;
        uint256 bonus;
        uint256 lastTime;
        uint256 endTime;
        uint256 releaseRate;
    }
    mapping(address => Lock) public locks;

    modifier onlyOwner() {
        require(msg.sender == owner, "Only owner can call this function.");
        _;
    }

    struct Referrer {
        address[] invitees;
    }
    mapping (address => Referrer) internal inviteeslist;

    struct User {
        address referrer_addr;
    }
    mapping (address => User) public referreraddr;

    address public feeWallet = 0xaAc08D7CF5e7D9b0418e841d1E68cb5a2904A08C;
    uint256 public fee_rate = 5;
    address public miniWallet = 0x22656e9DeeCD1fC1D9380b1D5db11522c6139899;
    uint256 public mini_rate = 10;
    uint256 public fee_rate2 = 15;

    uint256 public invest_days1 = 350;
    uint256 public invest_days2 = 300;
    uint256 public invest_rate = 10;
    uint256 public first_level = 20000 * 1e24;

    uint256 public referralThreshold = 1000 * 1e24;
    uint256 public total_deposited;
    uint256 public total_user;
    uint256 public total_amount;
    uint256 public total_extracted;
    uint256 public total_claim_amount;
    uint256 public lockRates = 100;
    uint256 public staticRewardRate = 10;
    uint256 public invest_price = 511000;
    uint256 public claim_price = 511000;
    bool public investEnabled;
    bool public claimEnabled;

    constructor(address esgAddress) public {
        owner = msg.sender;
        investEnabled = true;
        claimEnabled = true;
        esg = EIP20Interface(esgAddress);
    }

    function setPrice(uint256 investPrice, uint256 claimPrice) onlyOwner public {
        require(investPrice > 0 && claimPrice > 0, "Price must be positive");
        invest_price = investPrice;
        claim_price = claimPrice;
    }

    function setFee(uint256 _fee, uint256 _minifee, uint256 _fee2) onlyOwner public {
        require(_fee2 >= _fee + _minifee, "_fee2 must be greater than the sum of the first two numbers");
        fee_rate = _fee;
        mini_rate = _minifee;
        fee_rate2 = _fee2;
    }

    function setFeeWallets(address _feewallet, address _miniwallet) onlyOwner public {
        require(_feewallet != address(0) && _miniwallet != address(0), "Invalid address");
        feeWallet = _feewallet;
        miniWallet = _miniwallet;
        emit FeeWalletChanged(_feewallet, _miniwallet);
    }

    function setInvestRate(uint256 _rate) onlyOwner public {
        invest_rate = _rate;
    }

    function setTotalNum(uint256 _deposited, uint256 _user, uint256 _amount, uint256 _extracted, uint256 _claimnum) onlyOwner public {
        total_deposited = _deposited;
        total_user = _user;
        total_amount = _amount;
        total_extracted = _extracted;
        total_claim_amount = _claimnum;
    }

    function setInvestEnabled(bool _investEnabled) onlyOwner public {
        investEnabled = _investEnabled;
    }

    function setClaimEnabled(bool _claimEnabled) onlyOwner public {
        claimEnabled = _claimEnabled;
    }

    function setInvestDays(uint256 days1, uint256 days2) onlyOwner public {
        require(days1 > 0 && days2 > 0, "days should be greater than 0");
        invest_days1 = days1;
        invest_days2 = days2;
    }

    function setInvestLevels(uint256 level) onlyOwner public {
        require(level > 0, "level should be greater than 0");
        first_level = level;
    }

    function setLockRates(uint256 _lockRates) onlyOwner public {
        lockRates = _lockRates;
    }

    function setReferralThreshold(uint256 _referralThreshold) onlyOwner public {
        referralThreshold = _referralThreshold;
    }

    function setStaticRewardRate(uint256 _staticRewardRate) onlyOwner public {
        staticRewardRate = _staticRewardRate;
    }

    function setInvitee(address inviteeAddress) public returns (bool) {
        require(inviteeAddress != address(0), "inviteeAddress cannot be 0x0.");

        User storage user = referreraddr[inviteeAddress];
        require(user.referrer_addr == address(0), "This account had been invited!");
        
        Lock storage lock = locks[msg.sender];
        require(lock.value.mul(lockRates).div(100).add(lock.value).sub(lock.withdraw).sub(lock.bonus) >= referralThreshold, "Referrer has no referral qualification.");

        Lock storage inviteeLocks = locks[inviteeAddress];
        require(inviteeLocks.value == 0, "This account had staked!");
        
        Referrer storage referrer = inviteeslist[msg.sender];
        referrer.invitees.push(inviteeAddress);

        User storage _user = referreraddr[inviteeAddress];
        _user.referrer_addr = msg.sender;

        emit SetInvitee(msg.sender, inviteeAddress);
        return true;   
    }

    function setInviteeByOwner(address[] memory referrerAddress, address[] memory inviteeAddress) public onlyOwner returns (bool) {
        require(referrerAddress.length == inviteeAddress.length, "The length of the two arrays must be the same");

        for (uint256 i = 0; i < inviteeAddress.length; i++) {
            Referrer storage referrer = inviteeslist[referrerAddress[i]];
            referrer.invitees.push(inviteeAddress[i]);
            User storage _user = referreraddr[inviteeAddress[i]];
            _user.referrer_addr = referrerAddress[i];
        }

        emit SetInviteeByOwner(referrerAddress, inviteeAddress);
        return true;   
    }

    function removeInvitee(address referrer, address invitee) public onlyOwner {
        address[] storage invitees = inviteeslist[referrer].invitees;
        for (uint i = 0; i < invitees.length; i++) {
            if (invitees[i] == invitee) {
                invitees[i] = invitees[invitees.length - 1];
                invitees.pop();
                break;
            }
        }
    }

    function changeReferrerAddr(address referrer, address invitee) public onlyOwner {
        require(invitee != address(0), "inviteeAddress cannot be 0x0.");
        User storage _user = referreraddr[invitee];
        _user.referrer_addr = referrer;
    }

    function getInviteelist(address referrerAddress) public view returns (address[] memory) {
        require(referrerAddress != address(0), "referrerAddress cannot be 0x0.");
        Referrer storage referrer = inviteeslist[referrerAddress];
        return referrer.invitees;
    }

    function getReferrer(address inviteeAddress) public view returns (address) {
        require(inviteeAddress != address(0), "inviteeAddress cannot be 0x0.");
        User storage user = referreraddr[inviteeAddress];
        return user.referrer_addr;
    }

    function invest(uint256 _amount) public returns (bool) {
        require(investEnabled == true, "No invest allowed!");
        require(_amount > 0, "Invalid amount.");

        uint256 fee_amount = _amount.mul(invest_rate).div(100);
        esg.transferFrom(msg.sender, feeWallet, fee_amount);
        esg.transferFrom(msg.sender, address(this), _amount - fee_amount);

        Lock storage user_locks = locks[msg.sender];
        uint256 invest_days = 0;
        if(user_locks.lastTime > 0){
            user_locks.bonus += block.timestamp.sub(user_locks.lastTime).mul(user_locks.releaseRate).div(86400);
        }

        if(user_locks.value == 0){
            total_user = total_user + 1;
        }
        
        user_locks.value += _amount.mul(invest_price);
        user_locks.lastTime = block.timestamp;
        
        uint256 deposit = user_locks.value.mul(lockRates).div(100).add(user_locks.value).sub(user_locks.withdraw).sub(user_locks.bonus);
        if(deposit < first_level){
            invest_days = invest_days1;
        }else{
            invest_days = invest_days2;
        } 
        user_locks.endTime = block.timestamp + (invest_days * 86400);
        user_locks.releaseRate = deposit.div(invest_days);

        total_deposited += _amount.mul(invest_price);
        total_amount += _amount;
            
        User storage user = referreraddr[msg.sender];

        if(user.referrer_addr != address(0)){
            locks[user.referrer_addr].bonus += _amount.mul(invest_price).mul(staticRewardRate).div(100);
        }

        emit EsgInvest(msg.sender, _amount, invest_price);
        return true;
    }

    function investByOwner(address[] memory investAddress, uint256[] memory _value, uint256[] memory _withdraw, uint256[] memory _bonus, uint256[] memory _lastTime, uint256[] memory _endTime, uint256[] memory _releaseRate) public onlyOwner returns (bool) {
        require(investAddress.length == _value.length && investAddress.length == _withdraw.length && investAddress.length == _bonus.length && investAddress.length == _lastTime.length && investAddress.length == _endTime.length && investAddress.length == _releaseRate.length, "The length of the arrays must be the same");
        
        for (uint256 i = 0; i < investAddress.length; i++) {
            Lock storage user_locks = locks[investAddress[i]];
            user_locks.value = _value[i];
            user_locks.withdraw = _withdraw[i];
            user_locks.bonus = _bonus[i];
            user_locks.lastTime = _lastTime[i];
            user_locks.endTime = _endTime[i];
            user_locks.releaseRate = _releaseRate[i];
        }

        emit EsgInvestByOwner(investAddress, _value, _withdraw, _bonus, _lastTime, _endTime, _releaseRate);
        return true;
    }

    function claim() public returns (bool) {
        require(claimEnabled == true, "No claim allowed!");
        Lock storage userLocks = locks[msg.sender];
        require(userLocks.releaseRate > 0 && userLocks.lastTime > 0, "No locked amount.");

        uint256 totalInterest = userLocks.bonus;
        uint256 userDeposit = userLocks.value.mul(lockRates).div(100).add(userLocks.value);
        uint256 userWithdraw = userLocks.withdraw;
        require(userDeposit > userWithdraw, "All investments have been fully withdrawn");

        uint256 interest = (block.timestamp.sub(userLocks.lastTime)).mul(userLocks.releaseRate).div(86400);    
        totalInterest += interest;
        userLocks.lastTime = block.timestamp;
        userLocks.bonus = 0;   
        require(totalInterest > 0, "No interest to claim.");

        uint256 transfer_amount = 0;
        uint256 feeAmount = 0;
        uint256 miniAmount = 0;
        uint256 total_withdraw = userLocks.withdraw + totalInterest;
        if(total_withdraw >= userDeposit){
            transfer_amount = (userDeposit.sub(userWithdraw)).div(claim_price);
            userLocks.withdraw = userDeposit;
            feeAmount = transfer_amount.mul(fee_rate).div(100);
            miniAmount = transfer_amount.mul(mini_rate).div(100);
            uint256 fee = 0;
            if(userLocks.withdraw > userLocks.value){
                fee = fee_rate2 - fee_rate - mini_rate;
                feeAmount += transfer_amount.mul(fee).div(100);
            }
            if(feeAmount > 0){
                esg.transfer(feeWallet, feeAmount);  
            }
            if(miniAmount > 0){
                esg.transfer(miniWallet, miniAmount);  
            }
            esg.transfer(msg.sender, transfer_amount.sub(feeAmount).sub(miniAmount));
            userLocks.releaseRate = 0;
            userLocks.lastTime = 0;
            userLocks.endTime = 0;
        }else{
            transfer_amount = totalInterest.div(claim_price);
            userLocks.withdraw += totalInterest;
            feeAmount = transfer_amount.mul(fee_rate).div(100);
            miniAmount = transfer_amount.mul(mini_rate).div(100);
            uint256 fee = 0;
            if(userLocks.withdraw > userLocks.value){
                fee = fee_rate2 - fee_rate - mini_rate;
                feeAmount += transfer_amount.mul(fee).div(100);
            }
            if(feeAmount > 0){
                esg.transfer(feeWallet, feeAmount);  
            }
            if(miniAmount > 0){
                esg.transfer(miniWallet, miniAmount);  
            }
            esg.transfer(msg.sender, transfer_amount.sub(feeAmount).sub(miniAmount));

            uint256 deposit = userDeposit.sub(total_withdraw);
            uint256 invest_days = 0;
            if(deposit < first_level){
                invest_days = invest_days1;
            }else{
                invest_days = invest_days2;
            } 
            userLocks.releaseRate = deposit.div(invest_days);
            userLocks.endTime = block.timestamp + (invest_days * 86400);
        }
        total_claim_amount += transfer_amount;
        total_extracted += transfer_amount.mul(claim_price);

        emit EsgClaimed (msg.sender, transfer_amount, claim_price); 
        return true;
    }

    function getUnclaimValue(address _user) public view returns (uint256) {
        require(_user != address(0), "_user cannot be 0x0.");
        Lock storage userLocks = locks[_user];
        if(userLocks.value == 0){
            return 0;
        }

        uint256 totalInterest = userLocks.bonus;
        uint256 userDeposit = userLocks.value.mul(lockRates).div(100).add(userLocks.value);
        uint256 userWithdraw = userLocks.withdraw;
        if(userDeposit <= userWithdraw){
            return 0;
        }

        uint256 interest = (block.timestamp.sub(userLocks.lastTime)).mul(userLocks.releaseRate).div(86400);    
        totalInterest += interest; 
        if(totalInterest + userWithdraw >= userDeposit){
            return userDeposit - userWithdraw;
        }
        return totalInterest;
    }

    function changeLockInfo(address _user, uint256 _value, uint256 _withdraw, uint256 _bonus, uint256 _lastTime, uint256 _endTime, uint256 _releaseRate) public onlyOwner returns (bool) {
        require(_user != address(0), "_user cannot be 0x0.");
        locks[_user] = Lock(_value, _withdraw, _bonus, _lastTime, _endTime, _releaseRate);
        emit EsgChangeLockInfo(_user, _value, _withdraw, _bonus, _lastTime, _endTime, _releaseRate);
        return true;
    }

    function transferOwnership(address newOwner) public onlyOwner {
        require(newOwner != address(0), "New owner cannot be 0x0.");
        owner = newOwner;
    }
}
SafeMath.sol 221 lines
pragma solidity ^0.5.16;

// From https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/math/Math.sol
// Subject to the MIT license.

/**
 * @dev Wrappers over Solidity's arithmetic operations with added overflow
 * checks.
 *
 * Arithmetic operations in Solidity wrap on overflow. This can easily result
 * in bugs, because programmers usually assume that an overflow raises an
 * error, which is the standard behavior in high level programming languages.
 * `SafeMath` restores this intuition by reverting the transaction when an
 * operation overflows.
 *
 * Using this library instead of the unchecked operations eliminates an entire
 * class of bugs, so it's recommended to use it always.
 */
library SafeMath {
    /**
     * @dev Returns the addition of two unsigned integers, reverting on overflow.
     *
     * Counterpart to Solidity's `+` operator.
     *
     * Requirements:
     * - Addition cannot overflow.
     */
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");

        return c;
    }

    /**
     * @dev Returns the addition of two unsigned integers, reverting with custom message on overflow.
     *
     * Counterpart to Solidity's `+` operator.
     *
     * Requirements:
     * - Addition cannot overflow.
     */
    function add(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, errorMessage);

        return c;
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting on underflow (when the result is negative).
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     * - Subtraction cannot underflow.
     */
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction underflow");
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting with custom message on underflow (when the result is negative).
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     * - Subtraction cannot underflow.
     */
    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;

        return c;
    }

    /**
     * @dev Returns the multiplication of two unsigned integers, reverting on overflow.
     *
     * Counterpart to Solidity's `*` operator.
     *
     * Requirements:
     * - Multiplication cannot overflow.
     */
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
        // benefit is lost if 'b' is also tested.
        // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
        if (a == 0) {
            return 0;
        }

        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");

        return c;
    }

    /**
     * @dev Returns the multiplication of two unsigned integers, reverting on overflow.
     *
     * Counterpart to Solidity's `*` operator.
     *
     * Requirements:
     * - Multiplication cannot overflow.
     */
    function mul(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
        // benefit is lost if 'b' is also tested.
        // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
        if (a == 0) {
            return 0;
        }

        uint256 c = a * b;
        require(c / a == b, errorMessage);

        return c;
    }

    /**
     * @dev Returns the integer division of two unsigned integers.
     * Reverts on division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     * - The divisor cannot be zero.
     */
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }

    /**
     * @dev Returns the integer division of two unsigned integers.
     * Reverts with custom message on division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     * - The divisor cannot be zero.
     */
    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        // Solidity only automatically asserts when dividing by 0
        require(b > 0, errorMessage);
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * Reverts when dividing by zero.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     * - The divisor cannot be zero.
     */
    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return mod(a, b, "SafeMath: modulo by zero");
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * Reverts with custom message when dividing by zero.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     * - The divisor cannot be zero.
     */
    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b != 0, errorMessage);
        return a % b;
    }

    /**
   * @dev gives square root of given x.
   */
  function sqrt(uint256 x) internal pure returns(uint256 y) {
        uint256 z = ((add(x, 1)) / 2);
        y = x;
        while (z < y) {
            y = z;
            z = ((add((x / z), z)) / 2);
        }
  }

  /**
   * @dev gives square. multiplies x by x
   */
  function sq(uint256 x) internal pure returns(uint256) {
       return (mul(x, x));
  }

  /**
   * @dev x to the power of y
   */
  function pwr(uint256 x, uint256 y) internal pure returns(uint256) {
    if (x == 0)
      return (0);
    else if (y == 0)
      return (1);
    else {
      uint256 z = x;
      for (uint256 i = 1; i < y; i++)
        z = mul(z, x);
      return (z);
    }
  }
}
EIP20Interface.sol 62 lines
pragma solidity ^0.5.16;

/**
 * @title ERC 20 Token Standard Interface
 *  https://eips.ethereum.org/EIPS/eip-20
 */
interface EIP20Interface {
    function name() external view returns (string memory);
    function symbol() external view returns (string memory);
    function decimals() external view returns (uint8);

    /**
      * @notice Get the total number of tokens in circulation
      * @return The supply of tokens
      */
    function totalSupply() external view returns (uint256);

    /**
     * @notice Gets the balance of the specified address
     * @param owner The address from which the balance will be retrieved
     * @return The balance
     */
    function balanceOf(address owner) external view returns (uint256 balance);

    /**
      * @notice Transfer `amount` tokens from `msg.sender` to `dst`
      * @param dst The address of the destination account
      * @param amount The number of tokens to transfer
      * @return Whether or not the transfer succeeded
      */
    function transfer(address dst, uint256 amount) external returns (bool success);

    /**
      * @notice Transfer `amount` tokens from `src` to `dst`
      * @param src The address of the source account
      * @param dst The address of the destination account
      * @param amount The number of tokens to transfer
      * @return Whether or not the transfer succeeded
      */
    function transferFrom(address src, address dst, uint256 amount) external returns (bool success);

    /**
      * @notice Approve `spender` to transfer up to `amount` from `src`
      * @dev This will overwrite the approval amount for `spender`
      *  and is subject to issues noted [here](https://eips.ethereum.org/EIPS/eip-20#approve)
      * @param spender The address of the account which may transfer tokens
      * @param amount The number of tokens that are approved (-1 means infinite)
      * @return Whether or not the approval succeeded
      */
    function approve(address spender, uint256 amount) external returns (bool success);

    /**
      * @notice Get the current allowance from `owner` for `spender`
      * @param owner The address of the account which owns the tokens to be spent
      * @param spender The address of the account which may transfer tokens
      * @return The number of tokens allowed to be spent (-1 means infinite)
      */
    function allowance(address owner, address spender) external view returns (uint256 remaining);

    event Transfer(address indexed from, address indexed to, uint256 amount);
    event Approval(address indexed owner, address indexed spender, uint256 amount);
}

Read Contract

claimEnabled 0x2866ed21 → bool
claim_price 0x027dcbe6 → uint256
esg 0xcac06522 → address
feeWallet 0xf25f4b56 → address
fee_rate 0xfcb53d36 → uint256
fee_rate2 0x8f73918e → uint256
first_level 0x767eb6c7 → uint256
getInviteelist 0x36d8a893 → address[]
getReferrer 0x4a9fefc7 → address
getUnclaimValue 0x9b9c9759 → uint256
investEnabled 0x71f4f3fb → bool
invest_days1 0xb553207e → uint256
invest_days2 0x2e5e8334 → uint256
invest_price 0xdd969728 → uint256
invest_rate 0x1fed13f2 → uint256
lockRates 0x5a6da1e9 → uint256
locks 0x5de9a137 → uint256, uint256, uint256, uint256, uint256, uint256
miniWallet 0x0b6bedec → address
mini_rate 0x39e38f41 → uint256
owner 0x8da5cb5b → address
referralThreshold 0x65ab4477 → uint256
referreraddr 0xff3829eb → address
staticRewardRate 0xd88e71e0 → uint256
total_amount 0x673cd98e → uint256
total_claim_amount 0xe085c952 → uint256
total_deposited 0xde560cca → uint256
total_extracted 0xa0cbadb3 → uint256
total_user 0x40912990 → uint256

Write Contract 21 functions

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

changeLockInfo 0x265243b6
address _user
uint256 _value
uint256 _withdraw
uint256 _bonus
uint256 _lastTime
uint256 _endTime
uint256 _releaseRate
returns: bool
changeReferrerAddr 0x8bdb1e4f
address referrer
address invitee
claim 0x4e71d92d
No parameters
returns: bool
invest 0x2afcf480
uint256 _amount
returns: bool
investByOwner 0xfe354cd3
address[] investAddress
uint256[] _value
uint256[] _withdraw
uint256[] _bonus
uint256[] _lastTime
uint256[] _endTime
uint256[] _releaseRate
returns: bool
removeInvitee 0xf0fde113
address referrer
address invitee
setClaimEnabled 0x92929a09
bool _claimEnabled
setFee 0x5b65b9ab
uint256 _fee
uint256 _minifee
uint256 _fee2
setFeeWallets 0xfd1fb605
address _feewallet
address _miniwallet
setInvestDays 0x179eb7fc
uint256 days1
uint256 days2
setInvestEnabled 0x8fc1ea1e
bool _investEnabled
setInvestLevels 0x1fe9483f
uint256 level
setInvestRate 0x88045588
uint256 _rate
setInvitee 0x4fa77a48
address inviteeAddress
returns: bool
setInviteeByOwner 0x0985f708
address[] referrerAddress
address[] inviteeAddress
returns: bool
setLockRates 0x384c9aef
uint256 _lockRates
setPrice 0xf7d97577
uint256 investPrice
uint256 claimPrice
setReferralThreshold 0xad82c254
uint256 _referralThreshold
setStaticRewardRate 0x7cb04a21
uint256 _staticRewardRate
setTotalNum 0x7e320f7f
uint256 _deposited
uint256 _user
uint256 _amount
uint256 _extracted
uint256 _claimnum
transferOwnership 0xf2fde38b
address newOwner

Recent Transactions

No transactions found for this address