Skip to content
This repository has been archived by the owner on Feb 12, 2021. It is now read-only.

Latest commit

 

History

History
99 lines (67 loc) · 5.67 KB

hnt-price-oracles.md

File metadata and controls

99 lines (67 loc) · 5.67 KB
description
The Helium blockchain uses prices submitted periodically by a group of Oracles to establish the on-chain price of HNT in $USD

HNT Price Oracles

HNT coverts to Data Credits at a rate pegged to $.00001 , and so the blockchain requires a canonical HNT/$USD price for this conversion. Beginning in June 2020, the Helium blockchain started using a system of decentralized price oracles to supply the $USD to HNT price used for on-chain for burn transactions. (This system is inspired by the Maker Foundation's Oracle usage.)

To find this price, nine oracles (this number may change in the future) periodically submit HNT/$USD prices. Once the blockchain has enough new price data, it will calculate a new HNT/$USD price that will remain valid until enough new, valid oracle inputs are submitted, triggering a new price revision.

Calculating the HNT Price based on Oracle inputs

Every 10 blocks (roughly every 10 minutes) the blockchain will attempt to establish a new HNT/$USD price. To do this:

  1. The blockchain looks for recent price submissions from valid Oracles (submitted using a new transaction called price_oracle_submission). A valid price submission is anything that was submitted within the last 25 hours but is older than 1 hour. This gives us the ability to calculate a trailing 24 hour median while also having a buffer against outlier price inputs in the most recent 60 minutes.
  2. If there are enough new, valid price submissions in the 24 hour window, a new price will be calculated. For this to happen, a majority of the price Oracles need to have submitted a price in the window - ((N / 2) +1 ). So, in our system of 9 Oracles, we would need valid prices from at least 5. (If there aren’t ((N / 2) +1 ) new prices, no new HNT price is calculated.)
  3. If there are at least 5 new prices, we then proceed to sort order the list low to high, and take the median. So, if we had 7 valid submissions of $.20, $.22, $.235, $.238, $.25, $.27, $.45, the blockchain would select $.238, and use this as the external price of HNT for all HNT / DC burn transactions until a new price is established (which could be as soon as 10 blocks).

{% hint style="info" %} What's the current HNT Oracle Price? Click here. {% endhint %}

Who are the HNT Price Oracles?

The HNT Oracle price feeds are supplied by a group of nine (9) Oracles, composed of companies, organizations, and individuals. They are:

  • Helium, Inc
  • Decentralized Wireless Alliance (DEWI)
  • Seven (7) Anonymous Individual Community Members

We’ve chosen to keep the names of the individual feed contributors anonymous as it’s essential to prevent any external attempts at extortion or blackmail. The names of large companies and organizations that supply feeds, however, are public and it’s easier for them to combat potential attacks and bad actors.

The current set of public keys for the nine HNT Price Oracles are (in no particular order):

13Btezbvbwr9LhKmDQLgBnJUgjhZighEjNPLeu79dqBbmXRwoWm
13CFFcmPtMvNQCpWQRXCTqXPnXtcsibDWVwiQRKpUCt4nqtF7RE
1431WVQvoV7RAJpoLCaBrTKner1Soed4bk69DddcrHUTCWHV6pj
136n9BEbreGUNgXJWtyzkBQcXiNzdMQ5GBoP8L2J6ZReFUAwUjy
14sqAYg1qxzjKTtyHLYZdH6yDtA3KgyoARhWN1cvLZ94dZw5vEc
145J6Aye86pKTJrUHREiXu7qqppZBcWY1bvWo8id7ZjxyuainYj
14t33QjopqCUVr8FXG4sr58FTu5HnPwGBLPrVK1BFXLR3UsnQSn
14EzXp4i1xYA7SNyim6R4J5aXN1yHYKNiPrrJ2WEvoDnxmLgaCg
147yRbowD1krUCC1DhhSMhpFEqnkwb26mHBow5nk9q43AakSHNA

Submitting an HNT Oracle Price

{% hint style="info" %} An HNT price will only be accepted if the transaction is signed by the private key associated with one of the known oracle public keys listed above. {% endhint %}

Required Software

Currently Oracles use the Helium Wallet CLI for submitting prices to the blockchain. Download this and get comfortable with it on your machine if you're not using it already.

Submitting HNT Prices

We've added a new transaction to the blockchain for Oracle price submissions - price_oracle_submission added a corresponding CLI command - oracle report.

When you download the CLI and run helium-wallet oracle report --help, here's what you'll see (as of version 1.2.8):

helium-wallet-oracle-report 1.2.8
Construct an oracle price report and optionally commit it to the Helium Blockchain

USAGE:
    helium-wallet oracle report [FLAGS] --block <block> --price <price>

FLAGS:
        --commit     Commit the oracle price report to the API
    -h, --help       Prints help information
    -V, --version    Prints version information

OPTIONS:
        --block <block>    Block height to report the price at. Use "auto" to pick the latest known block height from
                           the API
        --price <price>    The oracle price to report. Specify in USD or supply one of the supported price lookup
                           services ("coingecko", "bilaxy")

Example Command

Here's a full command to submit a price (with the leading $ the command line will supply):

$ helium-wallet oracle report --price 1.1 --block auto --commit

This is telling the blockchain you are reporting a price of $1.1 and the current block height and that you're ready to commit it.

Once you hit Return, you'll be asked to input your wallet key passphrase. Supply this, submit it, and you're done.

Price Oracle Reports API

All data from HNT price oracles is available via the Oracle Price Reports API.