Inspiration

Chainlink, of course :)

What it does

It's an on-chain magic 8-ball. Just a fun little project to learn about Chainlink and VRF. User asks a question to the Magic Oracle, and the Oracle uses Chainlink VRF to respond with an answer. Users can then choose to save the result as a fully on-chain SVG NFT.

How we built it

Solidity/Javascript/React/Ethersjs

Challenges we ran into

  1. Max contract size limit was reached due to SVG NFTs, had to break the contract into multiple pieces. Learned a lot about solidity interfaces and working with multiple contracts.
  2. Something's going on with ethersjs and Arbitrum events. Ethersjs v5 just wouldn't return any results when listening to events on arbitrum, and v6 was giving me errors when trying to filter by long integers (VRF request IDs) or their string equivalents. Just ended up having to check for on-chain state changes manually.

Accomplishments that we're proud of

First time using Chainlink!

What we learned

Learned a lot about how Chainlink works, ERC721, and finally made the switch from web3.js to ethers.js.

What's next for magicoracle.link

Deploying to Arbitrum mainnet.

Built With

Share this project:

Updates