Kroma
GithubCommunity
  • Introduction
    • Overview
    • KRO Tokenomics
      • Token Allocation
      • Token Distribution
      • Token Utilities
      • Airdrops
        • Initial Airdrop
    • Official Links
  • BUILDERS
    • Developers
      • Contract Deployment Tutorial
        • Using Foundry
        • Using Remix IDE
        • Using Hardhat
      • JSON-RPC API
      • Oracles
    • Node Operators
      • Kroma MPT Migration Guide
      • Running a Full Node
      • Running a Kroma v2 Validator Node
        • How to Migrate Your Validator to KRO-based Validator System
      • How to Sync Blocks Using a Snapshot
      • FAQ
      • [Deprecated] Running a Kroma v1 Validator Node
        • How to Check and Claim the Validator Reward
    • Network Information
    • Protocol Contracts
    • Testnet
      • Setup
      • Faucet
      • Bridge
      • Contract Addresses
  • USERS
    • Wallet Configuration
    • Bridge
    • Block Explorer
    • How to Swap legacy USDC to upgradable USDC
  • Governance
    • Kroma Security Council
  • Kroma Guardian House
    • Overview
    • Philosophy
    • KRO & KGH NFT Staking
      • Validator Boosting by KGH NFT
      • How to Get KRO
      • FAQ
    • KGH NFT Migration & KYC
      • KGH NFT Migration
      • How to Complete KYC with Argos
    • KGH NFT Sales (Ended)
      • KGH Utilities
      • Referral Program: Expand Your Impact
      • Estimated Reward Value
    • Notice
  • Resources
    • Security
    • Brand Kit
    • FAQs
    • Glossary
Powered by GitBook
On this page
  • API3
  • First-party oracles
  • Using dAPIs - API3 Datafeeds
  • Additional Resources
  • API3
  • First-party oracles
  • Using dAPIs - API3 Datafeeds
  • Additional Resources

Was this helpful?

  1. BUILDERS
  2. Developers

Oracles

PreviousJSON-RPC APINextNode Operators

Last updated 10 months ago

Was this helpful?

API3

is a collaborative project to deliver traditional API services to smart contract platforms in a decentralized and trust-minimized way. It is governed by a decentralized autonomous organization (DAO), namely the .

First-party oracles

An is a first-party oracle that pushes off-chain API data to your on-chain contract. Airnode lets API providers easily run their own oracle nodes. That way, they can provide data to any on-chain dApp that's interested in their services, all without an intermediary.

Using dAPIs - API3 Datafeeds

are continuously updated streams of off-chain data, such as the latest cryptocurrency, stock and commodity prices. They can power various decentralized applications such as DeFi lending, synthetic assets, stablecoins, derivatives, NFTs and more.

The data feeds are continuously updated by using signed data. dApp owners can read the on-chain value of any dAPI in real-time.

Due to being composed of first-party data feeds, dAPIs offer security, transparency, cost-efficiency and scalability in a turn-key package.

Apart from relying on deviation threshold and heartbeat configuration updates, unlike traditional data feeds, enables dApps using dAPIs to auction off the right to update the data feeds to searcher bots. Searcher bots can bid for price updates through the OEV Network to update the data feeds. All the OEV proceeds go back to the dApp.

The enables users to connect to a dAPI and access the associated data feed services.

Subscribing to dAPIs

  • Exploring, selecting and configuring your dAPI

    • The current supported configurations for dAPIs are:

Deviation
Heartbeat

0.25%

24 hours

0.5%

24 hours

1%

24 hours

5%

24 hours

  • Activating your dAPI

    • If a dAPI is already activated, make sure to check the expiration date and update parameters. You can update the parameters and extend the subscription by purchasing a new configuration. :::

    • After selecting the dAPI and the configuration, you will be presented with an option to purchase the dAPI and activate it. Make sure to check the time and amount of the subscription. If everything looks good, click on Purchase.

    • You can then connect your wallet and confirm the transaction. Once it's confirmed, you will be able to see the updated configuration for the dAPI.

  • Getting the proxy address

    • Once you are done configuring and activating the dAPI, you can now integrate it. To do so, click on the Integrate button on the dAPI details page.

    • You can now see the deployed proxy contract address. You can now use this to read from the configured dAPI.

Reading from a dAPI

Here's an example of a basic contract that reads from a dAPI.

// SPDX-License-Identifier: MIT
pragma solidity 0.8.17;

import "@openzeppelin/contracts@4.9.5/access/Ownable.sol";
import "@api3/contracts/api3-server-v1/proxies/interfaces/IProxy.sol";

contract DataFeedReaderExample is Ownable {
    // The proxy contract address obtained from the API3 Market UI.
    address public proxyAddress;

    // Updating the proxy contract address is a security-critical
    // action. In this example, only the owner is allowed to do so.
    function setProxyAddress(address _proxyAddress) public onlyOwner {
        proxyAddress = _proxyAddress;
    }

    function readDataFeed()
        external
        view
        returns (int224 value, uint256 timestamp)
    {
        // Use the IProxy interface to read a dAPI via its
        // proxy contract .
        (value, timestamp) = IProxy(proxyAddress).read();
        // If you have any assumptions about `value` and `timestamp`,
        // make sure to validate them after reading from the proxy.
    }
}
  • setProxyAddress() is used to set the address of the dAPI Proxy Contract.

  • readDataFeed() is a view function that returns the latest price of the set dAPI.

Additional Resources

Here are some additional developer resources:

API3

First-party oracles

Using dAPIs - API3 Datafeeds

Due to being composed of first-party data feeds, dAPIs offer security, transparency, cost-efficiency and scalability in a turn-key package.

Subscribing to dAPIs

  • Exploring, selecting and configuring your dAPI

    • The current supported configurations for dAPIs are:

Deviation
Heartbeat

0.25%

24 hours

0.5%

24 hours

1%

24 hours

5%

24 hours

  • Activating your dAPI

    • If a dAPI is already activated, make sure to check the expiration date and update parameters. You can update the parameters and extend the subscription by purchasing a new configuration. :::

    • After selecting the dAPI and the configuration, you will be presented with an option to purchase the dAPI and activate it. Make sure to check the time and amount of the subscription. If everything looks good, click on Purchase.

    • You can then connect your wallet and confirm the transaction. Once it's confirmed, you will be able to see the updated configuration for the dAPI.

  • Getting the proxy address

    • Once you are done configuring and activating the dAPI, you can now integrate it. To do so, click on the Integrate button on the dAPI details page.

    • You can now see the deployed proxy contract address. You can now use this to read from the configured dAPI.

Reading from a dAPI

Here's an example of a basic contract that reads from a dAPI.

// SPDX-License-Identifier: MIT
pragma solidity 0.8.17;

import "@openzeppelin/contracts@4.9.5/access/Ownable.sol";
import "@api3/contracts/api3-server-v1/proxies/interfaces/IProxy.sol";

contract DataFeedReaderExample is Ownable {
    // The proxy contract address obtained from the API3 Market UI.
    address public proxyAddress;

    // Updating the proxy contract address is a security-critical
    // action. In this example, only the owner is allowed to do so.
    function setProxyAddress(address _proxyAddress) public onlyOwner {
        proxyAddress = _proxyAddress;
    }

    function readDataFeed()
        external
        view
        returns (int224 value, uint256 timestamp)
    {
        // Use the IProxy interface to read a dAPI via its
        // proxy contract .
        (value, timestamp) = IProxy(proxyAddress).read();
        // If you have any assumptions about `value` and `timestamp`,
        // make sure to validate them after reading from the proxy.
    }
}
  • setProxyAddress() is used to set the address of the dAPI Proxy Contract.

  • readDataFeed() is a view function that returns the latest price of the set dAPI.

Additional Resources

Here are some additional developer resources:

The lets users access dAPIs on both and .

The provides a list of all the dAPIs available across multiple chains including testnets. You can filter the list by mainnet or testnet chains. After selecting the chain, you can now search for a specific dAPI by name. Once selected, you will land on the details page (eg ETH/USD on Kroma Testnet) where you can find more information about the dAPI.

You can read more about dAPIs .

is a collaborative project to deliver traditional API services to smart contract platforms in a decentralized and trust-minimized way. It is governed by a decentralized autonomous organization (DAO), namely the .

An is a first-party oracle that pushes off-chain API data to your on-chain contract. Airnode lets API providers easily run their own oracle nodes. That way, they can provide data to any on-chain dApp that's interested in their services, all without an intermediary.

are continuously updated streams of off-chain data, such as the latest cryptocurrency, stock and commodity prices. They can power various decentralized applications such as DeFi lending, synthetic assets, stablecoins, derivatives, NFTs and more.

The data feeds are continuously updated by using signed data. dApp owners can read the on-chain value of any dAPI in real-time.

Apart from relying on deviation threshold and heartbeat configuration updates, unlike traditional data feeds, enables dApps using dAPIs to auction off the right to update the data feeds to searcher bots. Searcher bots can bid for price updates through the OEV Network to update the data feeds. All the OEV proceeds go back to the dApp.

The enables users to connect to a dAPI and access the associated data feed services.

The lets users access dAPIs on both and .

The provides a list of all the dAPIs available across multiple chains including testnets. You can filter the list by mainnet or testnet chains. After selecting the chain, you can now search for a specific dAPI by name. Once selected, you will land on the details page (eg ETH/USD on Kroma Testnet) where you can find more information about the dAPI.

You can read more about dAPIs .

To learn more about how dAPIs work, click here
API3 Market
Kroma Mainnet
Testnet
API3 Market
here
Try deploying it on Remix!
API3 Market
API3 Docs
dAPI Docs
Github
Medium
API3
API3 DAO
Airnode
dAPIs
first-party oracles
OEV Network
API3 Market
To learn more about how dAPIs work, click here
API3 Market
Kroma Mainnet
Testnet
API3 Market
here
Try deploying it on Remix!
API3 Market
API3 Docs
dAPI Docs
Github
Medium
API3
API3 DAO
Airnode
dAPIs
first-party oracles
OEV Network
API3 Market