Pull Oracle Main-net Progress report.

Charli3
3 min readOct 7, 2024

--

Proof of Achievement M4 (1100090)

● Project Catalyst ID: 1100090

● Project Name: CHARLI3 — “pull oracle” real-time price feeds on request (On Demand Validation service MVP)

● Full Project Details:

https://projectcatalyst.io/funds/11/cardano-use-cases-solution/charli3-pull-oracle-real-time-price-feeds-on-request-on-demand-validation-service-mvp

● Project Milestones:

https://milestones.projectcatalyst.io/projects/1100090/milestones/4

Description of Milestone =

— The Charli3 team created a dummy-use case to showcase “pull” functionality of our Oracle, this milestone is to finally launch a functioning version on Mainnet Cardano. The output will be a mainnet demo where a user can fund a demo contract causing the Charli3 Oracle Network to respond by providing data on-chain on the next block. In a previous milestone (2) we completed a Preproduction version. During milestone 3, we conducted an internal audit and completed remedies to any issues found. Remedies focused on Chang hard fork updates, especially with dependencies on other tooling that may have been behind updating their solutions after the fork.

Required Evidence/Output Evidence

Design Summary

The ODV architecture uses 90% of the same logic as the current oracles on main-net (Oracle-V3). The difference lies in the triggering event for the node-update and aggregate transactions.

Current oracles on main-net (Oracle-V3) use a heartbeat, which means they generate a feed with a specific frequency or when a given percentage of change occurs. For this, the contracts need an X amount of C3 tokens in the contract to maintain constant feed generation. These tokens are used to reward node operators and platform operators consuming a fraction with each feed generation.

The contracts on ODV will always maintain a 0 C3 balance most of the time. If an application (or user) wants to generate an oracle feed, they must first send C3 tokens into the contract to cover all rewards. The pull-request transaction dynamically calculates and sends the minimum amount of C3 tokens that the contract needs to generate one aggregation.

For those familiar with the heartbeat model, the transaction we are describing in the ODV model is the add-funds transaction. So, we have changed the purpose of this transaction; in the heartbeat model, it serves as a method to support and keep alive any oracle by injecting and staking C3 amounts that will serve to generate feeds in the future. In the ODV model, it adds funds but only for one round.

Charli3 will be open-sourcing some of our solution in the coming year starting with our node software in Q4 2025. That said, the advancements during this project are closed sourced and we cannot give more information on the exact architectural design. However, here is a diagram that summarizes how the functionality works:

On-chain results on Mainnet

Demo video: https://drive.google.com/file/d/1trqOYkJ5BL6NJQnGPo1OCRigboIU0T8I/view?usp=sharing
Contract address (Odv-oracle-contract): https://cexplorer.io/address/addr1w93vmc4m23cc6j507lhjf2duqxpjp5mdfey3fs767etxxjcyfmfv3/tx#data
Github Repo to interact with the Dummy use-case: https://github.com/Charli3-Official/swap-demo-contract

On-chain results on Preproduction

Pre-production “ODV” contract: https://preprod.cexplorer.io/address/addr_test1wzy5k07lnrrdjjqwzq4t3vvn0zp5de34s4z7res9y4jjuwcaz3amy/tx#data
Swap contract: https://preprod.cexplorer.io/address/addr_test1wp5p6ztmlsc5agr2crc3yhrqpwrkq7a29a2muyzn3ekdrhqmzzdjz/tx#data

--

--