This was an expansion on the idea of liquid-pledging originally presented by Jordi Baylina at Devcon 3: https://youtu.be/1MjcsFRvXVM?t=639 and implemented by Giveth.
What it does
Anyone can create a project to be funded in any major token or fund a project as well as fund delegates with the option to veto the delegate funding decision if they disagree with it.
How I built it
Using the original Giveth contracts I was able to build an enhanced dapp by incorporating several technologies. When a project is created, the project data is stored on IPFS with the hash then being stored in the project record in the contract on Ethereum. A subgraph was created to index this data and allow for a near web 2.0 like loading experience while still being more decentralized than the average dapp. The UI was also made to be mobile responsive to support usage on mobile wallets such as Trust wallet and Status. The dapp also generates Status chat rooms for each project so that anyone interested in the project can communicate in censorship resistant and privacy preserving manner.
The most relevant part was building a proxy contract that uses the Kyber network proxy to enable funders to fund a project using any major token of their choosing while enabling the project to receive funds in the token that it desires, removing the friction of having to manually exchange tokens to fund a project.
The proxy contract design also has a vault which receives referral fees from Kyber on swaps with plans for the funds that accrue in the vault to be directed by a governance structure such as token based voting.
The dapp also allows for projects to request funding in compound wrapped tokens such as cDAI and cETH.
Challenges I ran into
Interactions between protocols can be hard to test in an automated manner. Getting the dapp to work on both Ropsten and Mainnet is challenging because of differences in environment and limitations of the testnets. Decentralized technologies such as IPFS and Whisper are still young and getting them to work reliably can be very time consuming. Building a mobile first dapp means being fast loading and low bandwidth, which when incorporating decentralized technologies is hard to mange.
Accomplishments that I'm proud of
Getting over the challenges described above and getting a work version deployed to Ropsten.
What I learned
I learned a lot about the Kyber network and it has led to me come up with a generalized pattern I'm referring to as ProxyVaults, which enable business models to be built on top of protocols that require a native token. Using this pattern dapp developers can build on top of existing protocols and either have a "connivence fee" for enabling users to use any token or get a referral fee. They can also enhance the protocols by letting token stakeholders direct accumulated fees in the vault using token voting.
What's next for Liquid-Funding
Deploy to mainnet and fund some projects!