Helium Blockchain Primitives

Below are some of the larger components and concepts of the Helium blockchain.

Blocks

Blocks are used to record the most recent set of transactions in the Helium blockchain. Blocks are mined based on time, as defined in the block_time chain variable. The current target block time is 60000 milliseconds (or 60 seconds). During any given epoch, the most recent block consists of:

  • Block Version
  • Block Height
  • Previous Block Hash
  • Transactions (stored as a Merkle hash)
  • Threshold signature from the current consensus group

The easiest way to see the blocks being mined is with the Helium Blockchain Explorer. The Helium Mobile App also shows block details. Developers can also use the Helium blockchain API to access all blockchain transactions and metadata.

Epochs

An epoch is the target time period for which a given group of Miners is elected to serve as the consensus group. The target time for an epoch is currently 30 blocks, as defined in the election_interval chain variable. Approximately every 30 blocks mined marks the passing of an epoch, after which a new group of Miners is elected to form the next consensus group. Mining rewards are distributed per epoch (as opposed to per block in most blockchain-based systems). At the conclusion of each epoch, the consensus group will distribute all the $HNT produced in that block via the rewards transaction.

Transactions

The Helium blockchain currently has 20 native transaction types. Some appear in nearly every block mined while others were created to be used only once and will never be heard from again.

You can see various transaction types in action using the Helium Blockchain Explorer. At a low level, transactions are represented as Protocol Buffers, aka "protobuf". To sign a transaction, other signature fields (if present) are cleared and the serialized protobuf is signed by the actor. The protobuf definitions are available here.

All transactions occur on-chain, and all transactions require Helium Data Credits to be submitted and confirmed. The following is a list of the supported transactions:

  • add gateway - Add a new gateway to the Helium Network. For the purposes of transactions, a “gateway” is the term for a Helium-compliant Miner that is mining and providing coverage.
  • assert location - Assert a gateway’s location on the Helium Network. This happens after a gateway has been added via the add gateway transaction. Once asserted, this location is then used as part of Proof of Coverage challenges. A Miner’s location can be asserted more than once but each subsequent assertion will a) cost a fee and b) reset that Miner’s score to neutral (.15)
  • chain vars - Change a chain variable.
  • coinbase - Similar to the bitcoin blockchain’s coinbase transaction but used only during testnet phases of the Helium blockchain. The rewards transaction has taken its place.
  • coinbase data credits - Created the initial 10,000 Data Credits required to bring the first group of Miners online.
  • consensus group - Marks the election of a new consensus group, responsible for mining during the next epoch.
  • create hashed timelock - Creates a transaction that can only be redeemed by providing the correct pre-image to the hashlock within the specified timelock.
  • create proof of coverage request - Submitted by a Miner wishing to initiate a challenge.
  • data credits - Burn HNT for DCs at the current oracle price and deliver them to the target wallet address.
  • genesis gateway - Used to define the initial group of Miners that bootstrapped the blockchain.
  • multi-payment - Used to send $HNT from one wallet to multiple wallets.
  • OUI - Create a OUI for a new router on the Helium network. In the Helium blockchain, Miners forward packets to Routers that own them based on their OUI as stored in the blockchain.
  • payment - Used to send $HNT from one wallet to another.
  • proof of coverage receipts - The result of a POC submitted to the network upon completion.
  • redeem hashed timelock - Redeem the transaction created using the create hashed timelock transaction.
  • reward - A token payout for a specific event on the network such as submitting a valid proof of coverage request, participating in a consensus group, etc.
  • rewards - Bundles multiple reward transactions at the end of each epoch and distributes all $HNT produced in that block to wallets that have earned them.
  • routing - Update the routing information associated with an OUI.
  • security coinbase - Distribution of security tokens in the genesis block.
  • security exchange - The transfer of security tokens from one address to another.
  • state channel open - Opens a new state channel on a Helium Router
  • state channel close - Closes a specific state channel on a Helium Router
  • token burn exchange rate - Change the exchange rate for burning $HNT to DCs.

Extended Reading on Transactions

Chain Variables

Chain Variables, often referred to as chain vars, are a series of configuration settings for the Helium blockchain. Chain Variables can be used to change things like target block time, target epoch time, the minimum number of targets in a POC Challenge, and much more. Chain Variables can be altered by submitting a transaction containing the chain variable to be changed, its new value, and a signature of the chain variable master key.

A full list of chain vars and their current values can be found here.

Accounts, Wallets, and Keys

The Helium blockchain uses an account-based system for wallets and balances (similar to Ethereum and others) as opposed to a UTXO-based ledger like Bitcoin blockchain. Users have several options for creating Helium wallets and managing their private keys:

  • If you’re using the Helium Mobile Wallet (iOS, Android), your private key is encrypted locally (and can be recreated on another mobile device using the 12 word passphrase generated when your wallet was first created);
  • Using the Helium CLI Wallet, users are responsible for creating, storing, and securing a wallet’s private key and associated passphrase;

Both the Helium Mobile Wallet and the CLI Wallet create and use keys based on the ed25519 public key signature system. The CLI can also support NIST p-256 keys. And the Helium blockchain supports both key types.

To learn more about existing wallet solutions, check out our section on wallets.