Inspiration
Creating proposals between a group of people, raising funds through social media should be simple. This project attempts to use twitter as one of the approval mediums.
What it does
Oppanda is an experimental project to add support for creating off chain proposals with defined validators that can be funded. Proposals are defined off-chain and proposal=> external validator url is recorded onchain. Funds are transferred when external oracle validates that proposal is approved by validators. Currently proposals can be validated through tweets from validators and through Off-chain signature proofs stored in IPFS.
It optionally stores proof of approval in IPFS. Leverages Web3.Storage for uploading to ipfs and pinning.
How we built it
- A solidity contract that uses Chainlink's
Any APIsupport. This is the piece that ties everything together. - Implementation of an external oracle (called with
Any APIsupport) that queries twitter apis to see if validators have tweeted their approval for a proposal. This is build in dotnet and is hosted in azure functions. Nethereumis used for signature validation.Web3.Storagehttp api is used for storing in IPFS and pinning.
Challenges we ran into
- This was the first time I used solidity. Hardhat was great, and increased learning speed. But it didn't work well for chainlink integration, and for methods that took
bytes32. There are boiler plates, but the amount of things to learn was overwhelming. Developing mostly with hardhat, and then using remix for integration and deployment worked well. - Figuring out which oracle worked for
Any APIwas hard. Documentation suggested market place, but the ones in Kovan network did not work. - Error messages from remix was not very detailed, the fact that the contract needs LINK balance while obvious at the end, took sometime initially.
Accomplishments that we're proud of
- Successfully deploying a contract that can be used for real use cases.
What we learned
- Solidity, development in hardhat, deploying and testing.
- Exploring transactions with ether scan.
- Discord community is very helpful.
What's next for Oppanda
- UX for creating proposal, checking status.
- Mainnet deployment.
- Mechanisms to withdraw funds after expiration.
Built With
- azure-functions
- azure-tables
- chainlink
- dotnet
- ipfs
- nethereum
- solidity
Log in or sign up for Devpost to join the conversation.