Lottery
Coming soon
Contract info
Contract name: CorgiSwap Lottery
Contract address:
Random number generator address: (Random number generator contract must be deployed first)
View CorgiSwapLottery.sol on BscScan.
View the CorgiSwap: Lottery contract on BscScan.
Audits
The CorgiSwap Lottery V2 has been audited twice so far. View the results below:
Peckshield's Lottery V2 Audit
Slowmist's Lottery V2 Audit
Lottery Status states
The lottery has four Status
states, Pending
, Open
, Close
, and Claimable
, that determine which actions can and cannot be taken at a given time.
Read/View functions
viewCurrentLotteryId
Returns the Id# of the current Lottery round as an integer. Round Id#s correlate to round number, and are incremental, e.g. the ninth round of Lottery will be 9
.
viewLottery
Returns information on specified Lottery round as tuple (see Lottery structure below).
viewNumbersAndStatusesForTicketIds
Returns the corresponding numbers and the statuses of ticketIds
array of tickets defined by their ticketId
.
viewRewardsForTicketId
Calculates rewards for a ticket after draw given the lotteryId
, ticketId
, and bracket
. Filling and querying will provide a link to detailed price information on BscScan.
viewUserInfoForLotteryId
Returns user lotteryTicketIds
, ticketNumbers
, and ticketStatuses
of a user for a given Lottery (defined by lotteryID
).
calculateRewardsForTicketId
Calculates rewards for a ticket after draw given the lotteryId
, ticketId
, and bracket
.
calculateTotalPriceForBulkTickets
Calculates the price for a set of tickets accounting for bulk discount.
discountDivisor:
totalPriceForBulkTickets = priceSingleTicket \cdot numberTickets \cdot \frac{(discountDivisor + 1 - numberTickets)}{discountDivisor}totalPriceForBulkTickets=priceSingleTicket⋅numberTickets⋅discountDivisor(discountDivisor+1−numberTickets)
Filling and querying will provide a link to detailed price information on BscScan.
Write functions (users)
buyTickets
Buy tickets for the current Open
Lottery round (between 1 and 100 per purchase). Calculates the price per ticket using calculateTotalPriceForBulkTickets
.
claimTickets
Claim a set of winning tickets for a Claimable
Lottery round. Checks lotteryId
to determine if round is claimable, ownership of ticketId
, eligibility of ticket (ticketId
falls between firstTicketId
and firstTicketIdNextLottery
), and whether ticketId
falls within eligible prize bracket
(between 0 and 5).
Write functions (operator/admin)
closeLottery
Closes the Open
Lottery to Close
state. Emits LotteryClose
event.
drawFinalNumberAndMakeLotteryClaimable
Lottery must be in Close
state. Draws the final Lottery number for results from randomResult
, calculates the rewards for brackets after accounting for treasury fee, makes Lottery state Claimable
, and transfers treasury fee to treasury address.
changeRandomNumberGenerator
Changes the random number generator contract address. Lottery must be Claimable
.
injectFunds
Inject funds into a Lottery. Lottery must be Open
.
startLottery
Starts the Lottery, setting it to Open
state. Status must be Claimable
.
recoverWrongTokens
Allows admin to recover incorrect tokens sent to address mistakenly. Cannot be CORIS tokens.
setMinAndMaxTicketPriceInCoris
Allows admin to set upper and lower limit of ticket price in CORIS value. Minimum price must be lower than maximum price.
setMaxNumberTicketsPerBuy
Set max number of tickets purchasable at a time (presently 100). Max number of tickets must be higher than 0.
setOperatorAndTreasuryAndInjectorAddress
Sets the address of the Lottery operator.
Events (User)
TicketsPurchase
Lottery tickets are purchased.
Emitter: buyTickets
go to buyTickets
TicketsClaim
Lottery tickets are claimed post-draw.
Emitter: claimTickets
go to claimTickets
Events (admin)
AdminTokenRecovery
Admin recovers incorrect tokens from Lottery address.
Emitter: recoverWrongTokens
go to recoverWrongTokens
LotteryClose
The Lottery is closed. lotteryId is indexed and firstTicketIdNextLottery
is determined by currentTicketId
.
Emitter: closeLottery
go to closeLottery
LotteryInjection
Funds are injected into Lottery.
Emitter: injectFunds
go to injectFunds
LotteryOpen
The Lottery is opened. firstTicketId
is set from currentTicketId
,
Emitter: startLottery
go to startLottery
LotteryNumberDrawn
Lottery numbers are drawn for Lottery round.
Emitter: drawFinalNumberAndMakeLotteryClaimable
go to drawFinalNumberAndMakeLotteryClaimable
NewOperatorAndTreasuryAndInjectorAddresses
New operator address is set.
Emitter: setOperatorAndTreasuryAndInjectorAddresses
go to setOperatorAndTreasuryAndInjectorAddresses
NewRandomNumberGenerator
New random number generator address is set.
Emitter: changeRandomGenerator
go to changeRandomGenerator
Last updated