0 txs
3.6k calls
constructor
No constructor.
functions
bonusMultiplier
viewfunction bonusMultiplier() view returns (uint256)
claim
viewfunction claim() view returns (address)
currentMultiplier
viewfunction currentMultiplier() view returns (uint256)
getErc20Balance
viewfunction getErc20Balance(address user) view returns (uint256)
getMultiplier
viewfunction getMultiplier(address user) view returns (uint256)
getPointsBalance
viewfunction getPointsBalance(address user) view returns (uint256)
owner
viewfunction owner() view returns (address)
packedStartDateAndMaxMultiplier
viewfunction packedStartDateAndMaxMultiplier() view returns (uint256)
paused
viewfunction paused() view returns (bool)
shopContract
viewfunction shopContract() view returns (address)
token
viewfunction token() view returns (address)
users
viewfunction users(address) view returns (uint256 erc20balance, uint256 erc20initial, uint256 accumulatedPoints, uint64 lastUpdatedTime, uint16 multiplier)
claimAndDeposit
nonpayablefunction claimAndDeposit(uint256 index, uint256 amount, bytes32[] merkleProof)
claimAndDepositPermit
nonpayablefunction claimAndDepositPermit(uint256 index, uint256 amount, uint256 permitAmount, bytes32[] merkleProof, uint256 deadline, uint8 v, bytes32 r, bytes32 s)
deposit
nonpayablefunction deposit(uint256 amount)
depositPermit
nonpayablefunction depositPermit(uint256 amount, uint256 permitAmount, uint256 deadline, uint8 v, bytes32 r, bytes32 s)
initialize
nonpayablefunction initialize(address _token, address _claim)
pause
nonpayablefunction pause()
purchase
nonpayablefunction purchase(uint256[] skuEntities, uint256[] quantities)
renounceOwnership
nonpayablefunction renounceOwnership()
setBonusMultiplier
nonpayablefunction setBonusMultiplier(uint256 _bonusMultiplier)
setShopContract
nonpayablefunction setShopContract(address _shopContract)
setStartDateAndMaxMultiplier
nonpayablefunction setStartDateAndMaxMultiplier(uint64 _startDate, uint192 _maxMultiplier)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
unpause
nonpayablefunction unpause()
withdraw
nonpayablefunction withdraw(uint256 amount)
events
Deposit
event Deposit(address indexed user, uint256 amount, uint256 multiplier)
Initialized
event Initialized(uint64 version)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
Paused
event Paused(address account)
SetGlobals
event SetGlobals(uint192 maxMultiplier, uint64 startDate)
Unpaused
event Unpaused(address account)
Withdraw
event Withdraw(address indexed user, uint256 amount, uint256 multiplier)
errors
AddressEmptyCode
error AddressEmptyCode(address target)
EnforcedPause
error EnforcedPause()
ExpectedPause
error ExpectedPause()
FailedCall
error FailedCall()
IncorrectAmount
error IncorrectAmount()
InsufficientBalance
error InsufficientBalance()
InsufficientBalance
error InsufficientBalance(uint256 balance, uint256 needed)
InvalidInitialization
error InvalidInitialization()
InvalidMultiplier
error InvalidMultiplier()
InvalidPurchase
error InvalidPurchase()
InvalidPurchaseContract
error InvalidPurchaseContract()
NotInitializing
error NotInitializing()
OwnableInvalidOwner
error OwnableInvalidOwner(address owner)
OwnableUnauthorizedAccount
error OwnableUnauthorizedAccount(address account)
ReentrancyGuardReentrantCall
error ReentrancyGuardReentrantCall()
SafeERC20FailedOperation
error SafeERC20FailedOperation(address token)
creation bytecode
0x6080604052348015600e575f80fd5b506118eb8061001c5f395ff3fe608060405234801561000f575f80fd5b5060043610610187575f3560e01c80638456cb59116100d9578063b6b55f2511610093578063e707f36f1161006e578063e707f36f146103ea578063f2fde38b146103fd578063fc0c546a14610410578063fd58e63a14610423575f80fd5b8063b6b55f251461039c578063cc42010b146103af578063dc3de811146103d7575f80fd5b80638456cb591461029357806386f3b23d1461029b5780638da5cb5b146102ae578063a87430ba146102de578063a8b973a11461035d578063a9d637e114610366575f80fd5b8063485cc95511610144578063668c45bd1161011f578063668c45bd1461025d5780636fbaaa1e14610270578063715018a6146102785780637af973c714610280575f80fd5b8063485cc955146102155780634e71d92d146102285780635c975abb1461023b575f80fd5b80630148a6341461018b57806309090a51146101a05780631aee31d0146101d05780632e1a7d4d146101e357806336281086146101f65780633f4ba83a1461020d575b5f80fd5b61019e61019936600461147b565b610436565b005b6005546101b3906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b61019e6101de3660046114de565b6104c3565b61019e6101f1366004611563565b6105be565b6101ff60035481565b6040519081526020016101c7565b61019e6106f6565b61019e610223366004611590565b610708565b6002546101b3906001600160a01b031681565b5f805160206118968339815191525460ff1660405190151581526020016101c7565b61019e61026b3660046115c1565b610865565b6101ff610984565b61019e6109eb565b61019e61028e3660046115da565b6109fc565b61019e610a53565b61019e6102a9366004611627565b610a63565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b03166101b3565b6103286102ec3660046115c1565b5f602081905290815260409020805460018201546002830154600390930154919290916001600160401b03811690600160401b900461ffff1685565b604080519586526020860194909452928401919091526001600160401b0316606083015261ffff16608082015260a0016101c7565b6101ff60045481565b6101ff6103743660046115c1565b6001600160a01b03165f90815260208190526040902060030154600160401b900461ffff1690565b61019e6103aa366004611563565b610c1b565b6101ff6103bd3660046115c1565b6001600160a01b03165f9081526020819052604090205490565b61019e6103e5366004611681565b610c3d565b6101ff6103f83660046115c1565b610cce565b61019e61040b3660046115c1565b610cf4565b6001546101b3906001600160a01b031681565b61019e610431366004611563565b610d33565b61043e610d63565b610446610dd0565b6002546001600160a01b0316632e7ba6ef85338686866040518663ffffffff1660e01b815260040161047c9594939291906116fe565b5f604051808303815f87803b158015610493575f80fd5b505af11580156104a5573d5f803e3d5ffd5b505050506104b583600454610e00565b6104bd610f2b565b50505050565b6104cb610d63565b6104d3610dd0565b6002546001600160a01b0316632e7ba6ef8a338b8a8a6040518663ffffffff1660e01b81526004016105099594939291906116fe565b5f604051808303815f87803b158015610520575f80fd5b505af1158015610532573d5f803e3d5ffd5b505060015460405163d505accf60e01b81526001600160a01b03909116925063d505accf915061057290339030908c908a908a908a908a90600401611736565b5f604051808303815f87803b158015610589575f80fd5b505af115801561059b573d5f803e3d5ffd5b505050506105ab88600454610e00565b6105b3610f2b565b505050505050505050565b6105c6610d63565b6105ce610dd0565b805f036105ee576040516334b2073960e11b815260040160405180910390fd5b335f908152602081905260409020805482111561061e57604051631e9acf1760e31b815260040160405180910390fd5b61062781610f55565b6002820155805461063990839061178b565b815560038101805467ffffffffffffffff1916426001600160401b0316179055610661610984565b60038201805461ffff92909216600160401b0269ffff0000000000000000199092169190911790556106a0336001546001600160a01b03169084610f8f565b600381015460408051848152600160401b90920461ffff166020830152805133927ff279e6a1f5e320cca91135676d9cb6e44ca8a08c0b88342bcdb1144f6511b56892908290030190a2506106f3610f2b565b50565b6106fe610ff3565b61070661104e565b565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b03165f8115801561074c5750825b90505f826001600160401b031660011480156107675750303b155b905081158015610775575080155b156107935760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff1916600117855583156107bd57845460ff60401b1916600160401b1785555b6107c6336110ad565b6107ce6110be565b600180546001600160a01b03808a166001600160a01b03199283161790925560028054928916929091169190911790556101f44260c01b1760035560326004556108166110ce565b831561085c57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050565b61086d610ff3565b6005546001600160a01b0316156108f55760015460055460405163095ea7b360e01b81526001600160a01b0391821660048201525f602482015291169063095ea7b3906044016020604051808303815f875af11580156108cf573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108f3919061179e565b505b600580546001600160a01b0319166001600160a01b0383811691821790925560015460405163095ea7b360e01b815260048101929092525f1960248301529091169063095ea7b3906044016020604051808303815f875af115801561095c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610980919061179e565b5050565b6003545f9060c081901c6bffffffffffffffffffffffff821683620151806109ac844261178b565b6109b691906117d1565b9050600a8102828110156109dc57808303925060648310156109d757606492505b6109e1565b606492505b5090949350505050565b6109f3610ff3565b6107065f611116565b610a04610ff3565b612710816001600160c01b03161115610a3057604051631bc4bcf760e21b815260040160405180910390fd5b806001600160c01b031660c0836001600160401b0316901b176003819055505050565b610a5b610ff3565b6107066110ce565b610a6b610d63565b610a73610dd0565b828114610a93576040516329e89cc960e11b815260040160405180910390fd5b6005546001600160a01b0316610abc57604051636833232560e01b815260040160405180910390fd5b335f908152602081905260409020610ad381610f55565b600282015560038101805467ffffffffffffffff1916426001600160401b03161790556005545f9081906001600160a01b031663f3aff3fe33898989896040518663ffffffff1660e01b8152600401610b309594939291906117f0565b60408051808303815f875af1158015610b4b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b6f9190611833565b9150915080835f01541015610b9757604051631e9acf1760e31b815260040160405180910390fd5b815f03610bb7576040516329e89cc960e11b815260040160405180910390fd5b8254610bc490829061178b565b8355600383015460408051838152600160401b90920461ffff166020830152805133927ff279e6a1f5e320cca91135676d9cb6e44ca8a08c0b88342bcdb1144f6511b56892908290030190a25050506104bd610f2b565b610c23610d63565b610c2b610dd0565b610c35815f610e00565b6106f3610f2b565b610c45610d63565b610c4d610dd0565b6001546001600160a01b031663d505accf333088888888886040518863ffffffff1660e01b8152600401610c879796959493929190611736565b5f604051808303815f87803b158015610c9e575f80fd5b505af1158015610cb0573d5f803e3d5ffd5b50505050610cbe865f610e00565b610cc6610f2b565b505050505050565b6001600160a01b0381165f908152602081905260408120610cee90610f55565b92915050565b610cfc610ff3565b6001600160a01b038116610d2a57604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b6106f381611116565b610d3b610ff3565b6103e8811115610d5e57604051631bc4bcf760e21b815260040160405180910390fd5b600455565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005c15610da357604051633ee5aeb560e01b815260040160405180910390fd5b61070660017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005b90611186565b5f805160206118968339815191525460ff16156107065760405163d93c066560e01b815260040160405180910390fd5b815f03610e20576040516334b2073960e11b815260040160405180910390fd5b610e38336001546001600160a01b031690308561118d565b335f908152602081905260409020610e4f81610f55565b60028201558054610e61908490611855565b815560038101805467ffffffffffffffff1916426001600160401b031617905560018101545f03610e9457600181018390555b6003810154600160401b900461ffff165f03610edc5781610eb3610984565b610ebd9190611855565b8160030160086101000a81548161ffff021916908361ffff1602179055505b600381015460408051858152600160401b90920461ffff166020830152805133927f90890809c654f11d6e72a28fa60149770a0d11ec6c92319d6ceb2bb0a4ea1a1592908290030190a2505050565b6107065f7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00610dca565b600281015460038201545f9190606490600160401b900461ffff16610f79856111c6565b0281610f8757610f876117bd565b040192915050565b6040516001600160a01b03838116602483015260448201839052610fee91859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180516001600160e01b0383818316178352505050506111fa565b505050565b336110257f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b0316146107065760405163118cdaa760e01b8152336004820152602401610d21565b61105661125b565b5f80516020611896833981519152805460ff191681557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a150565b6110b561128a565b6106f3816112d3565b6110c661128a565b6107066112db565b6110d6610dd0565b5f80516020611896833981519152805460ff191660011781557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2583361108f565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b80825d5050565b6040516001600160a01b0384811660248301528381166044830152606482018390526104bd9186918216906323b872dd90608401610fbc565b60038101545f90610e10906111e4906001600160401b03164261178b565b83546111f09190611868565b610cee91906117d1565b5f61120e6001600160a01b038416836112fb565b905080515f14158015611232575080806020019051810190611230919061179e565b155b15610fee57604051635274afe760e01b81526001600160a01b0384166004820152602401610d21565b5f805160206118968339815191525460ff1661070657604051638dfc202b60e01b815260040160405180910390fd5b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff1661070657604051631afcd79f60e31b815260040160405180910390fd5b610cfc61128a565b6112e361128a565b5f80516020611896833981519152805460ff19169055565b606061130883835f61130f565b9392505050565b60608147101561133b5760405163cf47918160e01b815247600482015260248101839052604401610d21565b5f80856001600160a01b03168486604051611356919061187f565b5f6040518083038185875af1925050503d805f8114611390576040519150601f19603f3d011682016040523d82523d5f602084013e611395565b606091505b50915091506113a58683836113af565b9695505050505050565b6060826113c4576113bf8261140b565b611308565b81511580156113db57506001600160a01b0384163b155b1561140457604051639996b31560e01b81526001600160a01b0385166004820152602401610d21565b5080611308565b80511561141b5780518082602001fd5b60405163d6bda27560e01b815260040160405180910390fd5b5f8083601f840112611444575f80fd5b5081356001600160401b0381111561145a575f80fd5b6020830191508360208260051b8501011115611474575f80fd5b9250929050565b5f805f806060858703121561148e575f80fd5b843593506020850135925060408501356001600160401b038111156114b1575f80fd5b6114bd87828801611434565b95989497509550505050565b803560ff811681146114d9575f80fd5b919050565b5f805f805f805f805f6101008a8c0312156114f7575f80fd5b8935985060208a0135975060408a0135965060608a01356001600160401b03811115611521575f80fd5b61152d8c828d01611434565b90975095505060808a0135935061154660a08b016114c9565b925060c08a0135915060e08a013590509295985092959850929598565b5f60208284031215611573575f80fd5b5035919050565b80356001600160a01b03811681146114d9575f80fd5b5f80604083850312156115a1575f80fd5b6115aa8361157a565b91506115b86020840161157a565b90509250929050565b5f602082840312156115d1575f80fd5b6113088261157a565b5f80604083850312156115eb575f80fd5b82356001600160401b0381168114611601575f80fd5b915060208301356001600160c01b038116811461161c575f80fd5b809150509250929050565b5f805f806040858703121561163a575f80fd5b84356001600160401b0380821115611650575f80fd5b61165c88838901611434565b90965094506020870135915080821115611674575f80fd5b506114bd87828801611434565b5f805f805f8060c08789031215611696575f80fd5b8635955060208701359450604087013593506116b4606088016114c9565b92506080870135915060a087013590509295509295509295565b8183525f6001600160fb1b038311156116e5575f80fd5b8260051b80836020870137939093016020019392505050565b85815260018060a01b0385166020820152836040820152608060608201525f61172b6080830184866116ce565b979650505050505050565b6001600160a01b0397881681529590961660208601526040850193909352606084019190915260ff16608083015260a082015260c081019190915260e00190565b634e487b7160e01b5f52601160045260245ffd5b81810381811115610cee57610cee611777565b5f602082840312156117ae575f80fd5b81518015158114611308575f80fd5b634e487b7160e01b5f52601260045260245ffd5b5f826117eb57634e487b7160e01b5f52601260045260245ffd5b500490565b6001600160a01b03861681526060602082018190525f9061181490830186886116ce565b82810360408401526118278185876116ce565b98975050505050505050565b5f8060408385031215611844575f80fd5b505080516020909101519092909150565b80820180821115610cee57610cee611777565b8082028115828204841417610cee57610cee611777565b5f82518060208501845e5f92019182525091905056fecd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f03300a264697066735822122059de621f0af33adb489739057207461ff2feeeb51635b6ffa305cda9c51467f464736f6c63430008190033