Inspiration

The inspiration for this project came from a desire to leverage blockchain technology and Chainlink oracles to bring real-world data onto the blockchain. We identified a specific use case in the finance industry where credit ratings from multiple agencies could be aggregated and represented in a unique, immutable, and transparent manner through the use of dynamic Non-Fungible Tokens (NFTs). We believed this innovation could lead to more personalized and fair financial services, opening up a whole new range of possibilities.

What it does

Our smart contract mints NFTs that store an individual's credit ratings from multiple agencies, retrieved using Chainlink oracles. Each NFT represents a unique individual and contains their aggregated credit rating. This allows credit ratings to be easily and transparently referenced on-chain, paving the way for more personalized financial services. For example, these NFTs could be used to determine an individual's borrowing rates in a decentralized lending protocol.

How we built it

We developed a smart contract in Solidity for the Polygon Mumbai testnet blockchain. This contract leverages the ERC721 standard for creating unique tokens (NFTs), OpenZeppelin's libraries for security and standard compliance, and Chainlink's technology for reliable and secure data retrieval from off-chain. When a user requests to mint an NFT, a Chainlink oracle fetches their credit rating from a designated API and stores it within the NFT.

Our frontend has been designed for efficient and interactive EVM-based blockchain interactions. Built with the power of React, Vite, wagmi, viem, Chakra-UI, and other top-tier libraries, ChainRisk provides a seamless and intuitive user experience.

Challenges we ran into

One of the main challenges was managing and securing the oracle data retrieval process in a way that is cost-effective and efficient. We had to make some changes to our process as there were no POST Jobs available in Mumbai testnet, which required us to change the API call process. Another challenge was ensuring that the contract is secure and robust, which required careful consideration of potential attack vectors and meticulous testing.

What's next for the project

Our roadmap for ChainRisk is ambitious and forward-looking, designed to create a comprehensive and user-friendly platform for dynamic credit rating representation:

  1. Include ApiKeys for personal ratings: We plan to offer more personalized credit ratings by incorporating user-specific ApiKeys. This will enhance accuracy and provide a customized user experience.

  2. Real Credit Rating Agencies data: To bolster our credit rating system's reliability and credibility, we aim to use real data from established Credit Rating Agencies, thus broadening our data sources and ensuring a more robust rating.

  3. Update code for NFT expiration: We aim to incorporate an NFT expiration mechanism to ensure that credit ratings are periodically updated and accurately represent the user's current financial standing.

  4. Improve user experience with LINK payments: We are planning on refining the process of LINK payments for minting NFTs, aiming to make it more intuitive and user-friendly, thus reducing the steps and complexity involved in the transactions.

  5. ERC4337 to use a single token for payments: In our pursuit to streamline the payment process further, we intend to implement ERC4337, a standard that would allow the usage of a single token for payments. This will simplify transactions and provide a seamless user experience.

  6. Ensure full security, audibility and scalability of the solution: As we continue to develop ChainRisk, we are committed to maintaining the highest standards of security, audibility, and scalability. We will keep refining our solution to ensure it's safe, transparent, and ready to scale as the demand grows.

Our journey ahead is exciting as we work on enhancing ChainRisk to serve our users better and transform the credit rating landscape leveraging the power of blockchain technology and Chainlink.

Built With

Share this project:

Updates