Running the Price feeder

How to run your own Oracle and price feeder

The Price Feederarrow-up-right is an application used by validators to easily provide price feeds to the oracle module. The application abstracts away all the Oracle module requirements to the validators.

circle-exclamation

Price feeder details

The Price Feederarrow-up-right is an essential component for validators added to Kiichain since version v3.0.0 to provide accurate cryptocurrency price data to the Kiichain network using the Oracle module.

Prerequisites

  • A running Kiichain validator node

  • At least 1000000000000000000akii (1 Kii) in your validator account for feeder delegation

There are no fees to run the price feeder:

  • As long as it's voting once per voting period

  • And the voter is the expected address for each validator

Exchange Rates and Providers

These are the prices stored on the blockchain (represented in USD).

  • $BTC

  • $ETC

  • $SOL

  • $XRP

  • $BNB

  • $USDT

  • $USDC

  • $TRX

These are the providers by default on the price feeder:

Feeder account

One important concept about the Oracle module and price-feeder is the feeder account.

The feeder is an account that:

  • Separates your validator address from the account handling oracle feeds

    • This increases the security of your validator's main address

    • Keeps the validator’s signing key offline

circle-exclamation

Feeder account setup

To set up or update your feeder account, you can use the following TX:

Upon TX success, the FEEDER_ADDR can then be used to provide price feeds for the Oracle module.

circle-exclamation

Installation Steps

The price feeder can be easily installed with our bootstrap script:

The script will automatically:

  • Build and install the price-feeder

  • Create a dedicated feeder account

  • Delegate price reporting rights

  • Fund the feeder account

  • Configure the systemd service

To execute it, just run:

circle-check

Manual installation

You can also install the price-feeder manually by following these steps:

  1. Build and install the price feeder

2. Configure the price-feeder

Download our example config with:

Now read the file and update all the main configurations based on our next section:

  1. Test your configuration

You can always test your configuration using:

  • Pay attention to the logs and errors

  • After running for a few seconds, all errors should clear out

  • If errors persist, your feeder address may be configured incorrectly

  1. Create the systemctl service

Upon confirmation that the price feeder is correctly configured, you can turn it into a service with this example systemd service file:

Don't forget to check:

  • Your user is not root

  • The path for the price-feeder and the path for the configuration file

  • Your keyring password

  1. Verify Operation

Check the service logs:

Price feeder configuration

There are multiple configurations that are important when managing the price feeder:

Some important configurations are:

Here you should set up the details of your account:

  • address: This is the feeder address used on the price-feeder

  • validator: This is your validator address. This is important when sending the feeds to the Oracle module

The above defines your RPC configuration:

  • It's highly recommended to point the endpoints to local nodes, but pointing to remote nodes is also possible

This defines your keyring configuration:

  • We highly recommend using OS as your keyring for the feeder key

  • The Keyring password should be provided with the environment key PRICE_FEEDER_PASS

Important Note: Oracle Voting Performance Requirements

Validators running the Price Feeder must maintain a high success rate when submitting price votes. The Oracle module enforces this through a slashing mechanism:

  • MinValidPerWindow Parameter: This governance-defined threshold (5%) sets the minimum percentage of successful votes a validator must submit per voting window (3600 blocks).

  • Penalty for Underperformance: If a validator’s ratio of successful votes / total votes falls below MinValidPerWindow:

    • The validator is automatically jailed

    • It cannot participate in consensus or earn staking rewards

    • Manual unjailing requires a governance proposal or fixed downtime duration

  • Recommendations for Validators:

    • Monitor your feeder’s logs (journalctl -fu price_feeder.service)

    • Ensure stable API connections to price providers

    • Maintain sufficient gas fees for timely transactions

circle-exclamation

References

Acknowledgment

This is the Kiichain version of the incredible work of SEI on the price feeder module. The original implementation is available at SEI's price-feederarrow-up-right.

Last updated