Genesis Savings Pool (v1)
A no-loss savings game running on the Polygon blockchain
We launched our very first savings pools on the Polygon network, during June 2021:
Compete with other savers in our 'Genesis saving pool' and get higher interest rates than when you would save by yourself. All without losing your initial deposit. You can join our shared savings pool by depositing a fixed amount of DAI stablecoin into our smart contract (on Polygon). Add to your savings weekly to stay in the game. Feel proud as your balance grows and you hit your financial goals! By making all your deposits, you earn a slice of the pool’s interest! Players that missed a deposit, still get their initial deposit back but do not earn any interest. So the more people drop out, the greater the returns for the winners! 👻 💸
Pooled funds are deposited into a decentralized savings account powered by Aave, earning higher lending interest than in traditional finance. We may also provide additional incentives for early users, through yield farming and prize matching by some of our great sponsors. 🏆
Each game consists of multiple rounds, each with a fixed time duration (e.g. one week). Players can join a game once it becomes available though there are fixed spots and once filled, will close entry. To win, players need to make a deposit into the savings pool every round before that specific rounds' posted deadline. There is even a helpful countdown to keep you on track. Players that make all deposits will earn a slice of the pool’s rewards. At the end of the game, all players get back their initial deposit, irrespective whether they win or not. There is no fee charged to withdraw your initially deposited funds after the end of a game. Alternatively, if a player wants to withdraw his deposited funds prior to the end of a game, the player will be able to do so by paying an early withdrawal fee. Learn more about fees here.
On a technical level, deposits take place in digital stablecoins (such as DAI or USDC) whose value is soft-pegged to fiat currency (e.g. the US Dollar) and which can be transferred to our savings pool smart contract using blockchain technology. For our Genesis Saving Pool, we will make use of DAI on the Polygon PoS network (contract address). If you need help obtaining DAI on Polygon, see our guide.
All deposits are pooled and placed into an existing decentralized protocol, such as Aave or Curve, to generate rewards for the pool. After the final round, the earned rewards are split among all winning players. Players that happen to miss a deposit can still claim back their initial deposit after the end of the game. In this sense, one can consider it a no-loss savings game powered by blockchain technology. Our smart contracts can be found here: https://github.com/Good-Ghosting/goodghosting-smart-contracts/
Detailed User Flow 🏄♂️
- 1.A savings pool smart contract is deployed by the GoodGhosting team on the Polygon blockchain. Each savings pool runs for a fixed amount of time and accepts fixed periodic contributions (i.e. weekly or monthly, as determined at the time of pool creation) in one specific digital token (e.g. DAI). Pools create a social, gamified and incentivized environment to save.
- 2.Players join and therefore agree to attempt to save at the cadence and frequency the game mandates. For example: Deposit 50 DAI each week for a duration of one month. This happens by calling the
joinGame()function on our smart contract.
- 3.Ideally, players are able to make their regular contributions prior to each round’s deadline, via
makeDeposit()on our smart contract. However, if players wish to do so, they can stop contributing and withdraw their funds at any moment, via
earlyWithdraw()on our smart contract (subject to an early withdrawal fee).
- 4.At the end of each round, all contributions to the savings pool are supplied to an automated DeFi protocol (i.e. the pooled DAI is supplied to the Aave lending market on Polygon). This is done by calling the public
depositIntoExternalPool()function on our smart contract, thereby converting the player contributions into digital tokens used by the underlying DeFi protocol (i.e. interest-bearing aDAI). This enables additional rewards to be generated compared to the original principal contributed due to the accumulation of lending interest from the Aave lending market.In the future, we aim to support additional DeFi platforms and methods of generating rewards for users.
- 5.At the conclusion of the game (i.e. after the final round), our smart contract will use the same DeFi protocol to redeem the underlying tokens back into the contribution tokens, plus rewards generated. This happens via the
redeemFromExternalPool()function on our smart contract.Whenever there are additional rewards generated (e.g. WMATIC rewards due to liquidity mining on the Aave Polygon market), they will be claimed by the GoodGhosting smart contract and automatically distributed to all winning players. Thereby increasing rewards for all winning players.
Our smart contract contains three administrative functions (
adminFeeWithdraw()) that are accessible only to the admin (owner) of the contract. In this case, that would be the GoodGhosting wallet that deployed the game to the blockchain. There is no intention of using these functions during the game, but they are coded into the smart contract as a safeguard in the event something unexpected or malicious were to occur (bugs, exploits, attacks or similar).
Find below more information about each of these administrative functions and how they impact and limit the game. For full transparency, you can also search and find the name of the functions in our smart contracts.
pause()- this function allows the admin to pause the game (smart contract) for security reasons.
- These are all the functions that are unavailable to users when the game is paused:
- join the game (function
- make regular deposits (function
- transfer funds to the external automated DeFi protocol, i.e. Aave (function
- redeem funds to the external automated DeFi protocol, i.e. Aave (function
- make early withdraw (function
- The only function that users can execute when the game is paused is the function
withdraw(), after the end of the game has occurred.
unpause()- this function resumes a game that has been paused, enabling the smart contract.
adminFeeWithdraw()- reserved for future usage.