Skip to main content

On-Chain Maker Creation

On Solana, the issuance of Hotspots requires that an approved maker be created on-chain. This happens in 3 steps:

  • Creation of a maker in the onboarding server.
  • Approval of the MakerV0 on-chain.
  • Creation of the MakerV0 on-chain.

First, you will need a working Solana wallet with the Solana CLI. Follow this guide https://docs.solanalabs.com/cli/wallets/file-system.

You will need to fund this wallet with Sol to create the maker.

Getting a Maker in the Onboarding Server

Contact the Helium Foundation to have an API key and maker public key created on the onboarding server. For the rest of this guide, the maker public key will be referred to as the Issuing Authority. This is the Solana public key that has the authority to create Hotspots for this maker.

Installing the Helium Admin CLI

The helium-admin-cli is a very minimal command line interface for performing administrative operations on the Solana blockchain. Its target is mainly developers and contains minimal help or documentation. For this guide, you will only need to run one specific command which will be documented here.

If you do not already have nodejs installed on your system, you will need to install it.

Then,

npm install -g @helium/helium-admin-cli

You will be using the create-maker command with the following args:

  -k, --wallet            Anchor wallet keypair
[default: "/Users/noahprince/.config/solana/id.json"]
-u, --url The solana url [default: "http://127.0.0.1:8899"]
-n, --name The name of the maker [string] [required]
--issuingAuthority Key that can issue hotspots on behalf of this maker
[string] [required]
--updateAuthority Key that can update the maker's issuing authority
[string] [required]
--metadataUrl URL to metadata for this maker. Should be JSON with at
least { name, image, description } [string] [required]
-c, --makerCount Estimated number of hotspots this maker will have
[number] [required]

Onboarding yourself as a maker will require paying for a merkle tree to store the Hotspot NFTs created under your maker account. You should use the flag -c to estimate the count of Hotspots you plan to eventually onboard. If this limit is reached, your maker wallet will be charged an equal amount of sol to create another tree.

The --metadataUrl flag should be used to set the collection metadata for your maker. Every Hotspot issued is an NFT, and it will belong to an NFT collection defined by the JSON at this URL. Ideally, it should have the following fields:

  • name - The name of the maker
  • description - A short description of the maker
  • image - A recognizable image for the maker, likely a logo.

To create the maker:

helium-admin create-maker -u <your-rpc-url> \
-k path/to/your/solana/wallet.json \
-n <your maker name> \
--issuingAuthority <your issuing authority> \
--updateAuthority <the pubkey you will use as an admin for this maker> \
-c <your estimated hotspot count> \
--metadataUrl <your-metadata-url>

You should see some output like:


Creating maker with address: 4nUkTv8wcE6taMwPthp1HoDgiykkTdmceArj1u1xsLTY
Issuing Authority: devXCnFPU71StPEFNnGRf4iqXoRpYkNsGEg9m757ktP.
Capacity: 2^5, buffer: 8, canopy: 2.
Space: 2072 bytes
Cost: ~0.0153 Sol

txid 29mCMni21nmbsqyw7Z5rnLp2u3URWKB4xF8dzN2fAWK7V8xZYrm33KbujasEwbVkvRxzUEeSVVCgyEwtSvF92gFz
Latency 29mCMni21nmbsqyw7Z5rnLp2u3URWKB4xF8dzN2fAWK7V8xZYrm33KbujasEwbVkvRxzUEeSVVCgyEwtSvF92gFz 0.6640000343322754
Total sol needed: 0.0153
txid xByfLKdF2J5W9XZaU3dKjRePw3D5pewiHBz2jNUwJMBMFemxPix57zof99Hb9MXzssieiALbhSpGV1a5VSWpRNa
Latency xByfLKdF2J5W9XZaU3dKjRePw3D5pewiHBz2jNUwJMBMFemxPix57zof99Hb9MXzssieiALbhSpGV1a5VSWpRNa 0.7189998626708984

MOBILE Maker

Mobile makers are required to stake 50m MOBILE. To do this, transfer 50m MOBILE tokens to the maker address listed above when creating the maker (the text after Creating maker with address:).

Maker Approval

Once your maker has been created on-chain, and all other maker requirements have been fulfilled, the Helium Foundation multisig will need to approve the maker. Please contact the Helium Foundation and provide the exact name you used with the -n flag.