An Aragon application which creates a vote to mint an ERC721 once a user stakes a minimum amount of an ERC20 (in this case DAI).
A user interested in adding a listing to the Research Collective's knowledge registry calls the contract with a URI that points to the appropriate metadata as an argument The contract transfers DAI from the sender to the contract (or the token manager address?) The DAI is minted into rDAI, with the interest going to the DAO (probably Agent, double check how interest is redeemed in rtoken). A vote is created to use the Agent application to call the mint function on an ERC721 contract.
DAO Members cast their votes on whether or not to mint the proposed ERC721. On the social side, this should involve some sort of discussion around the metadata submitted.
If the vote is not approved, the token is not minted, and the user can now withdraw their stake in rDai. The interest should continue to be payed to the DAO until the rDai is redeemed to Dai.
If the vote is approved, the token is minted, and its metadata becomes available in the Research Collective knowledge base. The user is able to withdraw the rDai.
In either case, there can be additional side-effects (like the user earning reputation if the token is minted)
- What's the best way to setup a development environment for an Aragon application that will make use of the Voting and Agent apps to interact with other contracts (ERC721, DAI, rDAI)?