🎰The Lottery

Description of key lottery payout rules and mechanisms

Lottery Rules and Payouts

$BSCWIN is the native token of the lottery project and is equivalent to 1 lottery ticket. Buying and hodling 1 $BSCWIN token is the minimum required to be eligible for lottery payouts. In addition, the more $BSCWIN tokens a wallet holds, the higher the chances of winning the next lottery.

Setting up a decentralized lottery on Ethereum Virtual Machine (EVM) or similar infrastructure as that of BSC, Polygon, or KCC, is not straightforward. Logically you would have tickets; wallets would get attached to those tickets, you would pick a winning ticket at random, and to find the winner, you would loop through those tickets to see who has the winning ticket. This is challenging via EVM because, for more than 20 or so holders, you would run out of gas because of the number of iterations.

To overcome this obstacle, the BSCWIN lottery selection algorithm finds the winner backwards. That means we know how many tickets each wallet has in a dictionary. We pick a random wallet and then test how many tickets they have vs a randomly generated number up to a max scaling mechanism. When the pool fills and the lottery triggers, it might not find a winner on the first transaction. It could take multiple transactions. In testing with the scaling factor, it takes about 12 transactions on average to find a winner.

To generate those random numbers, we use accepted mathematical algorithms that can generate random numbers with random inputs. Those random inputs are the size of the liquidity pools of a couple of established high trading volume pairings (e.g., $BNB-$BUSD). This way, manipulating the drawing would be impossible or prohibitively expensive.

Lottery payouts are scheduled by default every 12 hours. The community can decide to increase or decrease the lottery frequency based on a voting system. The amount of the lottery payout is not fixed but set to increase with the increasing size of the liquidity pool. More details on that are below.

Advanced Liquidity Mechanism for Lottery Payouts

Most existing lottery projects implement a tax fee on each buy/sell transaction that fills a lottery pool dedicated to lottery payouts. Unfortunately, as soon as trading volume decreases significantly, the frequency of lottery payouts falls, even ceasing completely, leading to a negative feedback loop and causing the death of such projects.

Instead of taxing each buy/sell transaction, the main BSCWIN contract retains ownership of the liquidity pool each time the lottery is triggered; it removes an equal amount of $BUSD and $BSCWIN tokens from the liquidity. The $BUSD tokens removed are sent to the lottery winner, and the $BSCWIN tokens removed are sent to the Bulls DAO wallet. To protect the liquidity while sustaining the desired frequency of lottery payouts, the contract cannot drain more than a set threshold of the size of the liquidity each day. So, for example, if the threshold is 1% and the size of the liquidity pool in terms of $BUSD is $1,000,000, the contract will pay $10,000 a day in $BUSD tokens to lottery winners and remove a total of $10,000 a day in $BSCWIN tokens.

The aforementioned mechanism has several advantages:

  • Lotteries will be triggered regardless of the trading volume. Holders will not have to worry about new investors joining to sustain the project.

  • Removing BSCWIN-BUSD from the LP does not affect the price of $BSCWIN

  • The mechanism also ensures that the project's liquidity will never be wasted or locked forever; in the worst-case scenario, LP will be completely drained and funds will be distributed among BSCWIN holders in a fair and decentralized manner.

Keep in mind that only the token contract will have access to the liquidity and will trigger the frequency and amount of lottery payouts in a decentralized manner. You can check the Contract code on Bscscan or Github. Rest assured that funds are safu.

You will be able to check the Lottery schedule and stats on the website's lottery board.

Last updated