Charli3's First Functional Prototype Details
Charli3 oracle is based on eUTXO model and is the first such oracle solution developed on the Cardano ecosystem. Charli3 is designed to be a decentralized solution with the data and aggregation happening on-chain making it a transparent and efficient solution. In this alpha prototype we have designed two types of contracts:
1. Node (for use by Data Providers)
2. Oracle (for use by Data Aggregator)
These contracts work with each other to produce a data feed, which is then aggregated and used by an external third party in a cycle which consists of the following three steps.
Step 1: Data providers feed outside data (ex: exchange rates, weather data etc) into the blockchain. They do this by continuously producing UTXOs which contains the data along with an unique NFT (Non-Fungible Token) representing their identity. In the following architecture diagram, we can see 5 data providers providing the Price Feed from different sources. They submit their respective UTXO by submitting transactions (Tx 1 to Tx5) to the Cardano chain.
Step 2: In eUTXO model the data from an UTXO is read by spending the UTXO through an on-chain function called Redeemer. The Oracle contract, run by the Data Aggregators, is designed to spend the UTXOs from the data providers, thereby reading the values and submits a transaction that creates an UTXO with the aggregated value by calculating the median of the values. It also recreates the consumed UTXOs, so that they can be updated by their respective data providers. The oracle contract also makes the payment in native C3 tokens to each node (data provider) which are in consensus with the others.
Step 3: A Data Consumer is a third party contract/user who wishes to use the aggregated value from the Oracle. It reads the data by submitting a transaction consuming the UTXO containing the aggregated value along with an unique NFT and recreating the UTXO to be updated by the oracle or used again later.
The above cycle repeats itself, with payment being made to the data providers for every update (which is made in some interval pre-agreed by providers).
This alpha version has been developed with the existing Plutus libraries, tested and validated with the Plutus Application Backend. The next version with better features and capabilities is being developed and it will be deployed to the Alonzo testnet along with integration with the partners by the end of August.