Inspiration
We want to improve the UX for working with oracles. Instead of subscribing to only one oracle provider, GOAT lets users subscribe to multiple data feeds at different oracle providers. This allows users to access any oracle they want, from a single entry point (the GOAT smart contract) and compare prices of each provider. For the oracle providers, our solution is a way to price their services based on the demand for each feed.
What it does
Users can delegate their NFT to a certain smart contract, giving that smart contract access to the oracle and data feed that the NFT relates to. Delegating the NFT will lock it, so the user will remain owner but is unable to transfer it or delegate it to another smart contract. It is possible to generate revenue by renting out the NFTs, which give access to data feeds.
How we built it
The front-end is build using React, NextJS, tailwind, yarn and npm.
- Minting page with overview of all price feeds from different oracles. User can mint or rent NFT
- Inventory page to view collection of user's NFTs. User can manage his/her collection and using NFT to a smart contract
The smart contract uses ERC-721A, ERC-6982 and ERC-4907.
- We created the NFTs according to the ERC-721A standard, so minting in batches will be cheaper.
- Next to that we implemented ERC-6982 for locking/unlocking the NFT's.
- We also implemented ERC-4907 for renting NFT's, which is interesting for our use-case.
Challenges we ran into
- Different oracle contract interfaces that we had to interact with. We started out with a tightly coupled solution for two oracles, but then we switched to a loosely coupled solution so we can integrate more oracles easily.
- Debugging on Ethereum is always a challenge. We had an uninitialized array that kept giving us errors, and due to generic error messages it took quite a while to figure out the root cause.
Accomplishments that we're proud of
- We started out with a rather hacky tightly coupled solution (as described above), which we decided on due to the obvious time constraints. In the end we made a very clean and sophisticated loosely coupled solution.
- We have a very clean and well organized front-end, even though none of us is an expert on the front-end. Because we did a very thorough and long brainstorming and planning session all Friday night, we managed to pull this off.
Hackathon bounties
Chronicle
- Our use-case is innovative and interesting for Chronicle Protocol as it provides oracle providers a way to monetize their services in a fair and demand-based way. Also it makes it oracles more accessible, aggregating them in a single place is a huge UX improvement for users. Chronicle Oracle is integrated into project using Oracles on Sepolia.
- Chronicle integrated in smart contract deployed on Ethereum Sepolia testnet
Mantle
- Post on Twitter mentioning @0xMantle
- Smart contract on Mantle testnet
- Aiming for Build on Mantle, Best Defi Project and Best UX
Celo
- Smart contract on Celo testnet
- Aiming for First, Second, Third Best dApp Building Solutions for Real World Usecases - deployed in Celo
What we learned
- Brainstorming and planning is very important. We spend the whole Friday planning, discussing and designing and only started coding on Saturday. In the end this turned out to be a great choice.
What's next for GOAT
- We would like to investigate product-market fit
- We aim to implement more Oracle Providers, so our aggregator solution will provide more value for users and be recognized as a brand GOAT
- We would like to promote the idea of using NFTs to guard access to data feed
- Discuss with oracle providers if additional revenue can result in more price pairs or other use cases and make their services more attractive to users
Log in or sign up for Devpost to join the conversation.