Ruby Raffles

Raffles are the primary mechanism for NFT Distribution, and can also have cash prizes.

Ruby.Exchange supports the user creation of raffles for cash prizes. Raffles can also be used by Ruby.Exchange to distribute gemstone NFTs at random to users who participate.

Winners are allocated at random via a simple raffle process controlled by a smart contract. Each raffle runs for a specified period of time, with a set number of tickets, and a set ticket price. A raffle can also have at most one NFT as its prize, and so the number of tickets issued effectively determines the odds of winning.

The smart contract uses the BLS signature included in every SKALE block as a random number generator. Because this is a threshold signature, it represents a trustworthy and decentralized source of randomness that cannot be front-run by an attacker, whether a user or a rogue network validator.

The raffle framework is designed to be flexible, with customizable parameters (number of tickets, cost, etc), allowing cash prizes (RUBY, USDC, etc) to be paid out to winners, as well as an NFT prize. Where multiple NFTs of the same type and value are to be distributed (for example, a series of 10 gemstones that reduce trading fees), the required number of raffles is simply held consecutively, with the next one starting when the previous one has been won.

Last updated