price-serverinto a single Golang-based application for better UX, testability, and integration.
price-feedertool is responsible for performing the following:
price-feedertool runs off of a single configuration file. This configuration file defines what exchange rates to fetch and what providers to get them from. In addition, it defines the oracle's keyring and feeder account information. The keyring's password is defined via environment variables or user input. More information on the keyring can be found here Please see the example configuration for more details.
$ price-feeder /path/to/price_feeder_config.toml
backendare defined in the config file. You may use the
PRICE_FEEDER_PASSenvironment variable to set up the keyring password.
serversection contains configuration pertaining to the API served by the
price-feederprocess such as the listening address and various HTTP timeouts.
currency_pairssections contain one or more exchange rates along with the providers from which to get market data. It is important to note that the providers supplied in each
currency_pairsmust support the given exchange rate.
accountsection contains the oracle's feeder and validator account information. These are used to sign and populate data in pre-vote and vote oracle messages.
keyringsection contains Keyring related material used to fetch the key pair associated with the oracle account that signs pre-vote and vote oracle messages.
rpcsection contains the Tendermint and Cosmos application gRPC endpoints. These endpoints are used to query on-chain data that pertain to oracle functionality and for broadcasting signed pre-vote and vote oracle messages.
memorymodes are only for testing purposes. Do not use these modes for running the price feeder against the mainnet.