What is an OUI?

Each LoRaWAN Network Server (LNS) on the Helium Network acquires an Organizationally Unique Identifier (OUI). This registers the LNS with the blockchain and allocates two very important routing objects owned and maintained by the OUI operator:

  • up to five filters, describing the sets (AppEUI, DevEUI) expected by the LNS
  • one or more slabs of DevAddrs, reserving an address space for the OUI's devices on the Helium Network

A device, defined by (AppEui, DevEui), can be allocated any of the DevAddrs owned by the OUI. It is even possible to multiplex many devices on the same DevAddr at the same time, using the Message Integrity Check (MIC) to disambiguate.

OUI Cost

The OUI is purchased with data credits (DC). Costs are subject to change, but currently the OUI itself costs $100 worth of DCs and each DevAddr cost an additional $100 in DC.

DevAddr are sold in sequential blocks between 8 and 65,536 and any power of two. You must purchase a slab when purchasing an OUI, therefore, the minimum cost for an OUI is $800 for eight DevAddr's and $100 for the OUI itself.

The OUI purchase transaction itself incurs a fee based as does any other blockchain transaction; generally this will be $0.35-1.00 worth of DCs based on how the fields get filled and change the transaction size.

Purchase Transaction

You need the Helium wallet to go any further. You'll want to create a wallet and to have at least $900 in HNT (base on current HNT Oracle pricing).

Create Data Credits

Many fees benefit from implicit burn, but when paying for OUIs and DevAddr's, the Data Credits must be part of the purchasers balance.

$ ./helium-wallet balance
+-----------------------------------------------------+------------+--------------+-----------------+
| Address                                             | Balance    | Data Credits | Security Tokens |
+-----------------------------------------------------+------------+--------------+-----------------+
| 12yUUZmsVyVaomxkvuNXtD2rAHYWgYwJLXtz4H9FjYgE2WcniLx | 0.00000000 | 0            | 0.00000000      |
+-----------------------------------------------------+------------+--------------+-----------------+

If we don't have an account balance of at least 90,000,000 DCs ($900), we need to create the data credits now.

Inspect the current oracle price and you'll get the current price of HNT as agreed by the Helium Network; it's represented in 10^-8 dollars. Suppose it is currently $4.5, so we would get:

{"data":{"timestamp":"2021-02-25T10:01:32.000000Z","price":450000000,"block":735970}}

Since 1 DC = $.00001 = $10^-5 and we need to normalize with the $10^-8 from the oracle price, we can plug the following into our favorite calculate (for example, in Python):

>>> 90000000*10**3/450000000
200.0

I need to 200 HNT to get $900 of DC (plus a little extra for the OUI txn fee). From any wallet with ~201 HNT, I need to initiate the following transaction, which sets the wallet I just created as the beneficiary of the burn.

Note: I burn an extra 0.5 HNT ~= $2 with the values in this example. This should be sufficient for fees. That extra amount changes depending on the current oracle price.

./helium-wallet burn --amount 200.5 --payee 12yUUZmsVyVaomxkvuNXtD2rAHYWgYwJLXtz4H9FjYgE2WcniLx --commit

This submits the transaction and the CLI will output the transaction hash which you can track at the following endpoint:

https://api.helium.io/v1/pending_transactions/HASH

When the transaction clears, our balance should look like this:

$ ./helium-wallet balance
+-----------------------------------------------------+------------+--------------+-----------------+
| Address                                             | Balance    | Data Credits | Security Tokens |
+-----------------------------------------------------+------------+--------------+-----------------+
| 12yUUZmsVyVaomxkvuNXtD2rAHYWgYwJLXtz4H9FjYgE2WcniLx | 0.00000000 | 90225000     | 0.00000000      |
+-----------------------------------------------------+------------+--------------+-----------------+

Purchase the OUI

The next part is simple. Submit a "create OUI" transaction:

./helium-wallet oui create --subnet-size 8 --filter wVwCiewtCpEKAAAAAAAAAAAAcCK3fwAAAAAAAAAAAABI7IQOAHAAAAAAAAAAAAAAAQAAADBlAAAAAAAAAAAAADEAAAA2AAAAOgAAAA

The filter is a dummy filter to initialize the OUI. When you get Console running, it will automatically maintain it. You can once again track the transaction with the endpoint above. When it is complete, you should also see your OUI as the most recently purchased and on this list here.

Congratulations! You are the proud owner of a Helium Network OUI. OUIs are numbered sequentially, so the lower you are, the earlier you were on the Network!.