Compete with other players 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 an existing game with other players that share the same goals by entering the same ‘saving pool’. To win, players need to make a deposit into the saving pool every round, prior to the round’s deadline. Players that make all deposits, 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 the game. Alternatively, if a player wants to withdraw his deposited funds prior to the end of the 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 saving 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 deposited into existing decentralized protocols (such as Aave) 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 🏄♂️
A saving pool smart contract is deployed by the GoodGhosting team on the Polygon blockchain. Each saving 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 tokens (e.g. DAI). Pools create a social, gamified and incentivised environment to save.
Players join and therefore agree to attempt to save at the cadence and frequency the game mandates. For example: deposit 50 DAI each week, during one month.
This happens by calling the
joinGame()function on our smart contract.
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).
At the end of each round, all contributions to the saving 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 ways to generate rewards for users.
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 increasing rewards for all winning players.
All players are able to withdraw at least their principal funds. This happens via the
withdraw() function on our smart contract.
Admin Functions 🗝
Our smart contract contains three administrative functions (
adminFeeWithdraw()) that are accessible only to the admin (owner) of the contract (the GoodGhosting wallet that deployed the game to the blockchain). There's no intention of using these functions during the game, but they are coded into the smart contract for precaution - to be used as a safeguard in case something goes wrong happens (bugs, exploits, attacks, etc.).
Find below more information about each of these administrative functions and how they impact and limit the game. For full transparency, you'll also find the name of the functions in our smart contract:
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.
unpause()- this function allows the admin to resume the game (unpause the smart contract).
adminFeeWithdraw() - reserved for future usage.