Running the Price feeder

How to run your own Oracle and price feeder

The Price Feeder 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.

Price feeder details

The Price Feeder 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

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.

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:

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

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-feeder.

Last updated