Plottery is a lottery system running on Ethereum. It solves the problem of running a decentralized lottery on-chain when the house, players, and Ethereum miners don't trust each other. It uses a commit-reveal scheme run by a Dealer DAO combined with a future block hash which uses Gelato's keeper bots to prevent the promised block's hash from rolling out of EVM memory and thus being inaccessible to smart contracts. Normally, a block hash is only available for about an hour (unpredictable) but Gelato's bots call our contract to store a hash before it gets lost. This prevents the house from seeing a block hash that would cause an unfavorable payout and then wait 256 blocks for a different hash.

Plottery showcase

How it's made

The system is implemented in 4 contracts plus a contract deployed by NFTPort. A Gelato task is created to periodically call one of the Plottery contract's functions. One of the contracts can be replaced by a DAO's own (governance) token to be used to buy tickets. NFTPort's token contract is used as an airdrop token which the community can mint and airdrop inside the app for free as a reward to their community and then sold on the secondary market (OpenSea). The contracts can be upgraded to use different token contracts later. The jackpot is designed to be perpetual. Any number of tickets can be entered per round and money collected from ticket sales goes to the jackpot. There's an expected value of over half the face value per ticket with the highest prize being 1000x ticket price subject to amount remaining in the jackpot which can never go below a minimum threshold. The jackpot is expected to grow the longer it's played. The House/Dealer is a DAO. The game's opening and closing can be called by any member of the DAO which is defined by anyone who owns a DealerKey NFT. This is a trusted role so the DAO is responsible for deciding who gets the key(s).