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 Validators 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 Validators 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 36 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 (DCs) 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 (PoC) challenges. A Miner’s location can be asserted more than once but each subsequent assertion will cost a fee.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. Therewards
transaction has taken its place.coinbase data credits
- Created the initial 10,000 DCs 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 Validator 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 an Organization Unique Identifier (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 thecreate 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.stake validator
- Stake a new Validator on the Helium Network.transfer validator
- Transfer a staked Validator to a new owner or a new Validator.unstake validator
- Unstake a previously staked Validator.
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.
Validators
Introduced in HIP25, and officially deployed to Mainnet on July 7, 2021, Validators are cloud-based nodes responsible for processing blocks and managing the blockchain consensus group. In return for securing the blockchain, Validators earn the 6% of HNT allocated to the consensus group reward. To operate a Validator, one must stake 10,000 HNT.