7.6k txs
158k calls
constructor
constructor(address _token, address _vrfWrapperAddress)
functions
callbackGasLimit
viewfunction callbackGasLimit() view returns (uint32)
currentRound
viewfunction currentRound() view returns (uint16)
getBalance
viewfunction getBalance() view returns (uint256)
getEstimatedVRFCost
purefunction getEstimatedVRFCost() pure returns (uint256 cost)
getLinkToken
viewfunction getLinkToken() view returns (address)
getLotteryPoolSize
viewfunction getLotteryPoolSize(uint16 roundId) view returns (uint256 poolSize)
getPlayerTickets
viewfunction getPlayerTickets(address player) view returns (uint256 ticketCount)
getRoundTickets
viewfunction getRoundTickets(uint16 roundId) view returns (address[] players, uint256[] tickets)
i_vrfV2PlusWrapper
viewfunction i_vrfV2PlusWrapper() view returns (address)
owner
viewfunction owner() view returns (address)
requestConfirmations
viewfunction requestConfirmations() view returns (uint16)
rounds
viewfunction rounds(uint16) view returns (bool active, bool vrfCompleted, uint256 vrfRequestId, uint256 vrfResult, uint256 totalTickets, uint256 bonusAmount)
token
viewfunction token() view returns (address)
acceptOwnership
nonpayablefunction acceptOwnership()
addBonus
nonpayablefunction addBonus(uint256 amount)
addTickets
nonpayablefunction addTickets(address player, uint256 value)
finishLottery
payablefunction finishLottery() payable
pickWinners
nonpayablefunction pickWinners(uint16 roundId)
rawFulfillRandomWords
nonpayablefunction rawFulfillRandomWords(uint256 _requestId, uint256[] _randomWords)
startLottery
nonpayablefunction startLottery()
transferOwnership
nonpayablefunction transferOwnership(address to)
updateVRFParams
nonpayablefunction updateVRFParams(uint32 _gasLimit, uint16 _confirmations)
withdrawal
nonpayablefunction withdrawal(uint256 amount)
withdrawNative
nonpayablefunction withdrawNative(uint256 amount)
events
BonusAdded
event BonusAdded(uint16 indexed roundId, address indexed contributor, uint256 amount)
LotteryEntered
event LotteryEntered(uint16 indexed roundId, address indexed player, uint256 ticketsBought)
LotteryFinished
event LotteryFinished(uint16 indexed roundId, address indexed winner, uint256 prize)
LotteryStarted
event LotteryStarted(uint16 indexed roundId)
OwnershipTransferred
event OwnershipTransferred(address indexed from, address indexed to)
OwnershipTransferRequested
event OwnershipTransferRequested(address indexed from, address indexed to)
RandomnessFulfilled
event RandomnessFulfilled(uint16 indexed roundId, uint256 randomValue)
RandomnessRequested
event RandomnessRequested(uint16 indexed roundId, uint256 indexed requestId)
errors
EmptyLottery
error EmptyLottery()
InvalidAddress
error InvalidAddress()
InvalidAmount
error InvalidAmount()
InvalidRound
error InvalidRound()
LotteryAlreadyActive
error LotteryAlreadyActive()
LotteryNotActive
error LotteryNotActive()
OnlyVRFWrapperCanFulfill
error OnlyVRFWrapperCanFulfill(address have, address want)
RandomnessNotFulfilled
error RandomnessNotFulfilled()
TransferFailed
error TransferFailed()
UnknownRequest
error UnknownRequest()
creation bytecode
0x60e060409080825234620001da57818162001a0e8038038091620000248285620001df565b833981010312620001da576200003a8162000219565b6020916001600160a01b03919082906200005690850162000219565b16928451630711a57d60e21b81528181600481885afa8015620001cf5784916000916200018d575b50166080528360a05233156200014a5750600080546001600160a01b031916331790556001600255600380546001600160401b0319166614000186a000011790551690811590811562000140575b506200012f5760c052516117df90816200022f823960805181610248015260a05181818161059301528181610b860152610f02015260c05181818161014401528181610704015281816107a601528181611138015281816111ff01526113c40152f35b815163e6c4247b60e01b8152600490fd5b90501538620000cc565b60649085519062461bcd60e51b82526004820152601860248201527f43616e6e6f7420736574206f776e657220746f207a65726f00000000000000006044820152fd5b91508282813d8311620001c7575b620001a78183620001df565b81010312620001c45750620001bd849162000219565b386200007e565b80fd5b503d6200019b565b86513d6000823e3d90fd5b600080fd5b601f909101601f19168101906001600160401b038211908210176200020357604052565b634e487b7160e01b600052604160045260246000fd5b51906001600160a01b0382168203620001da5756fe60406080815260049081361015610020575b5050361561001e57600080fd5b005b600091823560e01c908163111878f61461134657816312065fe01461132b578163160344e2146112aa5781631a88c47c14610f705781631fe543e314610e8d5781632341319814610e4357816324f7469714610e1b5781632c906ba214610ac0578163311dfabe14610a4e57816363d926f7146108cd57816379ba509714610825578163835fc6ca146106ae57816384276d811461060d5781638a19c8bc146105ea5781638da5cb5b146105c25781639ed0868d1461057e578163a5da6c8514610511578163abc0c35e146104ef578163b0fb162f146104c9578163bae4e530146103fc578163e2f585bf14610277578163e76d516814610233578163f2fde38b14610177575063fc0c546a036100115734610173578160031936011261017357517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b5080fd5b90503461022f57602036600319011261022f576101926114f3565b9061019b611509565b6001600160a01b03918216923384146101ec575050600180546001600160a01b031916831790558254167fed8889f560326eb138920d842192f0eb3dd22b4f139c87a2c57538e05bae12788380a380f35b906020606492519162461bcd60e51b8352820152601760248201527f43616e6e6f74207472616e7366657220746f2073656c660000000000000000006044820152fd5b8280fd5b505034610173578160031936011261017357517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b9190503461022f578060031936011261022f576102926114f3565b6024359061ffff908160035416948587528060205260ff8588205416156103ee576102bb611509565b6001600160a01b039182169586156103df5784156103d05787528060205284872091600683019187895282602052868920541561034e575b50509160037f20e9eb31fcf7ac5e287444604d6c9aa367092de2908c927644bb03251c1358059492602094888a528552868920610331858254611589565b90550161033f838254611589565b9055600354169351908152a380f35b60058401805491680100000000000000008310156103bd5750926003926103a1836020989660017f20e9eb31fcf7ac5e287444604d6c9aa367092de2908c927644bb03251c1358059b999601815561155b565b8192915490861b918c831b921b191617905592945092946102f3565b634e487b7160e01b8b526041905260248afd5b50845163162908e360e11b8152fd5b50845163e6c4247b60e01b8152fd5b84516376c313d160e11b8152fd5b9190503461022f578060031936011261022f5781359163ffffffff8316918284036104c5576024359261ffff8416908185036104c15761043a611509565b61c35081109081156104b4575b506104a657801590811561049b575b5061048e57505065ffffffff000067ffff0000000000006003549260301b169260101b169067ffffffffffff00001916171760035580f35b5163162908e360e11b8152fd5b603291501138610456565b505163162908e360e11b8152fd5b622625a091501138610447565b8680fd5b8480fd5b50503461017357816003193601126101735760209061ffff60035460301c169051908152f35b5050346101735781600319360112610173576020905166071afd498d00008152f35b9190503461022f57602036600319011261022f578060c09361ffff61053461148d565b1681528360205220805492600182015460028301549160038401549301549360ff8151968181161515885260081c16151560208701528501526060840152608083015260a0820152f35b505034610173578160031936011261017357517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b505034610173578160031936011261017357905490516001600160a01b039091168152602090f35b50503461017357816003193601126101735760209061ffff600354169051908152f35b9190503461022f57602036600319011261022f57813561062b611509565b801580156106a5575b6104a6578380808093335af13d156106a0573d67ffffffffffffffff811161068d5782519061066d601f8201601f1916602001836114a3565b81528460203d92013e5b15610680578280f35b516312171d8360e31b8152fd5b634e487b7160e01b855260418452602485fd5b610677565b50478111610634565b9190503461022f576020806003193601126108215782356106cd611509565b8015801561078d575b61077e57825163a9059cbb60e01b8152338582019081526020810192909252908290829081906040010381887f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165af1918215610774578592610747575b505015610680578280f35b6107669250803d1061076d575b61075e81836114a3565b8101906115ac565b388061073c565b503d610754565b83513d87823e3d90fd5b50505163162908e360e11b8152fd5b5082516370a0823160e01b8152308582015282816024817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9081156108175786916107e6575b5081116106d6565b90508281813d8311610810575b6107fd81836114a3565b8101031261080c5751386107de565b8580fd5b503d6107f3565b84513d88823e3d90fd5b8380fd5b9190503461022f578260031936011261022f57600154916001600160a01b0391828416330361089157505082546001600160a01b03198082163390811786559316600155167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08380a380f35b906020606492519162461bcd60e51b8352820152601660248201527526bab9ba10313290383937b837b9b2b21037bbb732b960511b6044820152fd5b90508234610a4b57602091826003193601126101735761ffff6108f193929361148d565b168352815282822091600583019283549261090b846114db565b94610918875196876114a3565b848652610924856114db565b9482870193601f1980970136863761093b826114db565b926109488a5194856114a3565b828452610954836114db565b84860198013689376006879201915b8381106109e65750505050865196879681880191885251809152606087019390855b8181106109c657505050858303868301525180835291810193925b8281106109af57505050500390f35b8351855286955093810193928101926001016109a0565b82516001600160a01b031686528998509484019491840191600101610985565b808a610a2382610a019d9e98999b9a9c9d610a3e958761155b565b90546001600160a01b03949160031b1c8416610a1d8383611634565b52611634565b5116885283895285882054610a388289611634565b52611618565b9998979596949399610963565b80fd5b828434610a4b576020366003190112610a4b5761ffff80610a6d61148d565b16908115908115610ab2575b50610aa357928282602095610a9c94528286522090600382015491015490611589565b9051908152f35b5050516328ad4a9560e21b8152fd5b905060035416811185610a79565b83838160031936011261017357610ad5611509565b61ffff926003848154169485855260209583875260ff858720541615610e0b5785528286528385209166071afd498d00003410610dfb57825460ff19908116845585519767ffffffffffffffff90808a018281118b821017610de8578852600191828b5288519a63125fa26760e31b838d015251151596602497888d0152878c5260608c01918c831090831117610dd657899a9b828b9a9b528c87549163ffffffff8360101c169260018060a01b037f000000000000000000000000000000000000000000000000000000000000000016936313c34b7f60e01b87528060648401528860848401528787604481885afa9d8e15610dcd578f97859f610d98575b5051634e7e02c760e11b81529687015260301c8a16858c015260448501879052608060648601528051608486018190528693869390928e929190815b838110610d74575050848260a4928383969584010152601f801991011681010301925af1908115610d6a5784908d92610d34575b018190558554915086821690817fb7d2021709962e78ee98d427f72ff81dbdf86f58386331232f5703cc52f951478e80a3868114610d22578b949284928888968d940116809161ffff191617865586525289842091825416178155015554167f2648e1a01aab36cbb516efcbabaf46d7284723fe89c40413c256760eafe2b5f18680a2813411610cd3578480f35b81340392348411610d1157505083808093819382903414610d08575b3390f115610cfe578080808480f35b51903d90823e3d90fd5b506108fc610cef565b634e487b7160e01b86526011905284fd5b634e487b7160e01b8c5260118a52878cfd5b9150508282813d8311610d63575b610d4c81836114a3565b81010312610d5f57839151908290610c45565b8b80fd5b503d610d42565b8b513d8e823e3d90fd5b929550939592505081818401015160a48289010152018f9286938895938f93610c11565b929e505095508682813d8311610dc6575b610db381856114a3565b8101031261022f57519b8d958f8c610bd5565b503d610da9565b513d85823e3d90fd5b634e487b7160e01b8b5260418952878bfd5b634e487b7160e01b8a526041885260248afd5b845163162908e360e11b81528490fd5b84516376c313d160e11b81528490fd5b50503461017357816003193601126101735760209063ffffffff60035460101c169051908152f35b90503461022f57602036600319011261022f576020928291610e636114f3565b60035461ffff1683529085528282206001600160a01b039091168252600601845220549051908152f35b839150346101735782600319360112610173576024359067ffffffffffffffff821161022f573660238301121561022f5781810135610ecb816114db565b92610ed8865194856114a3565b81845260209160248386019160051b830101913683116104c157602401905b828210610f615750507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031691505033819003610f44575090610f4191356116d9565b80f35b604492508451916345d498b760e11b835233908301526024820152fd5b81358152908301908301610ef7565b828434610a4b576020918260031936011261017357610f8d61148d565b93610f96611509565b610f9e6115c4565b61ffff80951694851590811561129b575b5061128d578483528084528183209360ff855460081c161561127e578360039586810154908385820154610fe38185611589565b93600584015415159081611274575b50156111b4575050611005919250611648565b906001600160a01b038083161515806111ab575b611101575b509592955b84519081526001600160a01b039182169088907f7cc23a9f77cf7742e41aa713d78304cc4ff3b2a504c22ca3af4ea7ba8948d391908590a3868552858252838520600681019390600501865b81548110156110a257808461108761109d938561155b565b905490861b1c1689528686528888812055611618565b61106f565b5086828560058b848b8f82528285528120918183558160019681888601558160028601558401558201550190815491848155826110e3575b50505060025580f35b845283209081019082905b828110156110da578481550182906110ee565b855163a9059cbb60e01b81526001600160a01b038416868201908152602081018490529091859183919082908b90829060400103927f0000000000000000000000000000000000000000000000000000000000000000165af19081156111a1578791611184575b5015611174578861101e565b84516312171d8360e31b81528490fd5b61119b9150843d861161076d5761075e81836114a3565b89611168565b86513d89823e3d90fd5b50811515611019565b809192506111c7575b5050959295611023565b8754875163a9059cbb60e01b81526001600160a01b0391821688820190815260208101939093529350839182908a90829060400103927f0000000000000000000000000000000000000000000000000000000000000000165af190811561126a57869161124d575b501561123d578482896111bd565b83516312171d8360e31b81528390fd5b6112649150833d851161076d5761075e81836114a3565b8861122f565b85513d88823e3d90fd5b905015158c610ff2565b509051630e65220760e21b8152fd5b90516328ad4a9560e21b8152fd5b90506003541685101586610faf565b90503461022f578260031936011261022f576112c4611509565b61ffff9182600354168452816020528084209182549160ff831661131e57505060ff19166001178155600390810183905554167f2648e1a01aab36cbb516efcbabaf46d7284723fe89c40413c256760eafe2b5f18280a280f35b5163279bdd3960e01b8152fd5b50503461017357816003193601126101735751478152602090f35b9190503461022f57602080600319360112610821578235926113666115c4565b61ffff90816003541680875281845260ff85882054161561147e57851561146f578652808352808487200161139c868254611589565b905583516323b872dd60e01b815233828201523060248201526044810186905283816064818a7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165af1908115611465578791611448575b501561143a5750907f4e0b828191641d3d7a2856bb71f2706c707feb61e1cfcc950fe9fc330c8d496c916003541692519384523393a3600160025580f35b83516312171d8360e31b8152fd5b61145f9150843d861161076d5761075e81836114a3565b386113fc565b85513d89823e3d90fd5b50835163162908e360e11b8152fd5b5083516376c313d160e11b8152fd5b6004359061ffff8216820361149e57565b600080fd5b90601f8019910116810190811067ffffffffffffffff8211176114c557604052565b634e487b7160e01b600052604160045260246000fd5b67ffffffffffffffff81116114c55760051b60200190565b600435906001600160a01b038216820361149e57565b6000546001600160a01b0316330361151d57565b60405162461bcd60e51b815260206004820152601660248201527527b7363c9031b0b63630b1363290313c9037bbb732b960511b6044820152606490fd5b80548210156115735760005260206000200190600090565b634e487b7160e01b600052603260045260246000fd5b9190820180921161159657565b634e487b7160e01b600052601160045260246000fd5b9081602091031261149e5751801515810361149e5790565b60028054146115d35760028055565b60405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606490fd5b60001981146115965760010190565b8051156115735760200190565b80518210156115735760209160051b010190565b6003908181015480156116d1576002820154066000926005830193845494815b86811061167b5750505050505050600090565b6116af611688828461155b565b905490861b1c6001600160a01b031660008181526006890160205260409020549094611589565b928584116116c657506116c190611618565b611668565b965050505050505090565b505050600090565b6000199261ffff9284846003541601848111611596575b84811680156117975760008181526020906004825260408091208760018201541461173d5750505050841680156117285785016116f0565b60246000634e487b7160e01b81526011600452fd5b91959850939196507fbca09660beb78b208cca8d25782c2c0e5b09282d7002e566ff7a1f5fe19c4742955061178e925061010061ff0019825416178155600261178583611627565b51910155611627565b519051908152a2565b604051636d08029760e01b8152600490fdfea2646970667358221220ec6e0c220b83d8042a35c9690c2167b2495192909b926dd26fd9c717f4a1df8264736f6c634300081300330000000000000000000000004ed4e862860bed51a9570b96d89af5e1b0efefed000000000000000000000000b0407dbe851f8318bd31404a49e658143c982f23