Complete details about our submission can be found in our blog post: https://medium.com/@atvanguard/introducing-defidollar-742e30be9780
Including the most important parts here as well:
Now, say the price of A fluctuates to $1.1 and B goes to $0.9.
While the arbitrage opportunity discussed above will keep the relative prices of the underlying coins in sync, there is still a possibility that the DefiDollar slips from its peg. A couple of such scenarios are when all of the underlying coins have fallen above or below the $1 mark.
To be able to explain this, let me draw your attention back to the earnings pool discussed above, which was accruing earnings from the interest and trade fees. Let’s say this pool has accrued 5 coins of A and B each over some time. This pool will act as a volatility cushion.
After there are enough funds for the volatility cushion, any following earnings will act as the protocol fee.
The central point of the DefiDollar system is the core contract. It interfaces with:
Aave for deposits/withdrawals of the underlying stable coin assets. These can vary from 2-8 coins.
Balancer to create a (LiquidityBootstrapping) pool that holds these interest-bearing Aave coins - which are the underlying reserve backing the DefiDollar.
Chainlink reference data contracts (https://docs.chain.link/docs/using-chainlink-reference-contracts) for the rebalance mechanism.
Uniswap to support more assets for minting/burning the defiDollar.
All of our contracts code can be found in https://github.com/defidollar/defidollar-protocol/tree/master/contracts
Since folks from these sponsor companies were readily available for answering any queries, integrating with the protocols, and diving into their code was actually quite fun.
We built the frontend in Vue.js and integrated Metamask and Portis. This part was fairly straightforward. The frontend app supports mint/burn/swap/reBalance.