Pottery is a DeFi protocol that utilises Pendle in order to make a lossless on-chain lottery
Pottery is a DeFi protocol that utilises Pendle in order to make a lossless on-chain lottery
By leveraging Pendle’s modular architecture, Pottery generates lottery prizePools in pooled assets baskets which we call Kilns. A kiln is composed of three distinct phases; Live, where users are able to mint tickets, in exchange for Pendle yield bearing tokens (YT) Locked, yield accrues in the Kiln which will ultimately serve as the prize pool, randomly drawn to an individual jackpot winner, users can trade the tickets on NFT marketplaces Closed, the lotto has is finished and users are able to withdraw their assets and the random winner is able to claim their prize Built with React, TypeScript and Wagmi, the frontend allows users to easily interact with a set of smart contracts to buy/sell tickets in exchange for YT tokens. Using Foundry tools we deployed on Arbitrum and Mantle to showcase cross-chain functionality, utilising the lower gas costs to make NFT ticket minting & trading more cost effective for users. Once the kiln has cooked its juicy prize full of yield & points, a python Keeper bot draws the winner using Chainlink VRF for verified randomness. Unlike other existing defi lottery implementations like PoolTogether, Pottery will always have a winner. By using Pendle, we believe that it adds an extra layer to the existing dynamic / insanity that we call points farming. Allowing users to bet their chances for massive points returns instead of smaller yields, sell tickets at a premium or buy up unwanted tickets at a chance for the jackpot. By adding this dynamic, users can participate and price the expected value of the points and subsequent airdrop, by using the price discovery from trading the NFT tickets on marketplaces. The NFT Ticket price should reflect one equal share of the expected future value of the pool containing the airdropped tokens, yield and points. Users not interested in taking their chances with lottery and points can just elect to sell their ticket and lock in the yield.
This project uses smart contracts on arbitrum and mantle to hold yield tokens from already deployed instances of Pendle. We mint ERC-721 NFT tickets to users who deposit YT during the mint period. These are then used for the lottery of all yield accrued to the Kiln, on arbitrum, Chainlink VRF is used to draw the winner, however on mantle as no chainlink VRF deployment exists, we use a custom pseudo-random generator using requested blockhashes in 2 transactions, the first transaction pins the block hash to be used as the random seed in N blocks time, and the second getting the N block ahead block hash and calling back to the kiln with the seed. Both VRF & the custom rand are called by a permissioned keeper bot, written in python.