
Prices agreed by the validators who build blocks
Validator oracle price feeds
Bonded validators vote exchange rates each period, and a power-weighted median is written into chain state.
Run a price feeder and your validator submits aggregate exchange-rate votes for the whitelisted denominations. At the end of each vote period the chain tallies one ballot per denomination, picks the highest-turnout denomination as the reference, derives cross rates, and stores the voting-power-weighted median with its height and timestamp. Read the result from module code, a CosmWasm contract, gRPC or the CLI. The EVM precompile is retired today and reverts, so Solidity contracts cannot read these feeds.
What it does
Bonded validators on the Paxeer X chain submit aggregate exchange-rate votes for a whitelisted set of denominations. At the last block of each vote period the chain groups the votes into one ballot per denomination, picks the denomination with the highest voting-power turnout as the reference, converts the other ballots into cross rates against it, and stores the voting-power-weighted median as the current rate together with the update height and timestamp. Each update emits an exchange-rate-update event. Other modules, CosmWasm contracts and RPC clients read the stored rates, the active denomination list and a time-weighted average price over stored snapshots.
Key capabilities
- Aggregate exchange-rate votes tallied by voting-power-weighted median every vote period.
- Feeder delegation lets a validator sign votes from a separate account.
- Cross-rate conversion prices every denomination against the highest-turnout reference.
- Reward band records in-range votes as wins, and misses and abstentions per validator.
- Slash-window events report each validator's success, miss and abstain counts.
- Queries for rates, actives, vote targets, snapshot history, TWAPs and penalty counters.
Who it's for
Validator operators who run a price feeder, and module or contract developers who need an exchange rate from chain state.
Why it matters
Prices come from the same validator set that produces blocks and are written during block execution, so a module or contract reads a rate from state instead of trusting an external publisher. Participation and accuracy are recorded per validator and per window, so an operator can see which feeds they missed.
Differentiators
The price is agreed inside the block by the validator set rather than pushed by an external reporter contract; the reference denomination is chosen each period by voting-power turnout and the remaining denominations are derived as cross rates; a validator's first vote in a window pays no fee.
Outcomes
- Read an exchange rate from chain state instead of an external publisher.
- Sign votes from a separate feeder account, delegated by the validator.
- See your per-window success, miss and abstain counts per feed.
Technical notes
- Configured defaults: vote period 2 blocks, vote threshold 0.667 of bonded power (validation requires more than 33%), reward band 2%, slash window
BlocksPerDay × 2(75 blocks per minute assumed), TWAP lookback duration 3600 seconds. A slash window must be a multiple of the vote period. - A ballot below the vote threshold sets no price; its voters are still credited with participation. A validator counts as a miss unless it was in band on every vote target, and as an abstain if it did not vote.
- Slashing is implemented but disabled by the defaults:
SlashFractionis 0.00% andMinValidPerWindowis 0 "now that Oracle Price Feeder is retired", so no validator falls below the threshold and none is slashed or jailed. Counters and end-of-window events are still produced. - The default whitelist covers two denominations only,
uatomandueth; two further entries, one of them for the native asset, are present in the source but commented out, so neither is a vote target. - An oracle vote or feed-consent message cannot share a transaction with any other message. A validator may submit one vote per block height at CheckTx, and the fee exemption applies only when no vote is already stored for that validator in the current window.
- The
oracleEVM precompile at0x0000000000000000000000000000000000001008is registered withgetExchangeRatesandgetOracleTwaps, but both revert with "oracle precompile is retired; oracle data queries are disabled", so EVM contracts cannot read these feeds today. The CosmWasm bindings (exchange_rates,oracle_twaps) and the gRPC and CLI queries are not retired. - The TWAP query rejects a lookback of 0 or one above the configured lookback duration, and it reads price snapshots. Snapshots are added only when genesis state is imported, so no new snapshot is written while the chain runs.
modules/oracle/README.mdis still a stub, with a single line noting that its contents were never written.
# delegate voting to a feeder account, then vote and read the result
paxd tx oracle set-feeder pax1... --from validator
paxd tx oracle aggregate-vote 1.243ueth,8.91uatom paxvaloper1... --from feeder
paxd query oracle exchange-rates ueth
paxd query oracle twaps 3600
paxd query oracle vote-penalty-counter paxvaloper1...More in Paxeer chain
Transaction admission, fees and gasless paths
Bounded gas prices and two fee-exempt classes
ExploreAutobahn lane consensus with sharded sequencing
Consensus that splits data from agreement
ExploreBonding-curve token launchpad
Launch a token that trades immediately
ExploreCheckpoint anchoring and challenges
Settle LayerX batches on the chain
ExploreBuild on Paxeer.
Give your agent a wallet, set its policy, and settle your first call on LayerX.