Helicon Upgrade hits Mainnet September 22.Mainnet September 22Read more

Subnets

Create subnets, add validators, transfer ownership, and convert to L1 blockchains

Platform CLI supports creating subnets, transferring ownership, and converting them to L1 blockchains.

Create a Subnet

platform-cli subnet create --key-name mykey --network fuji
Creating new subnet...
Owner: P-fuji1abc123...
Submitting transaction...
Subnet created successfully!
Subnet ID: 2QYfFcfZ9...

The subnet owner is the wallet address used to create it. You need P-Chain AVAX balance to create subnets.

Transfer Subnet Ownership

Transfer ownership to a new P-Chain address:

platform-cli subnet transfer-ownership \
  --subnet-id 2QYfFcfZ9... \
  --new-owner P-fuji1xyz789... \
  --key-name mykey

Add a Validator (Permissioned Subnet)

Add a validator to a permissioned subnet (AddSubnetValidatorTx). The node must already be a primary network validator, and the subnet owner key authorizes the transaction.

platform-cli subnet add-validator \
  --subnet-id 2QYfFcfZ9... \
  --node-id NodeID-BFa1paAAAA... \
  --weight 100 \
  --duration 336h \
  --key-name mykey

The validation period must fall within the node's primary network validation window. --weight is the validator's sampling weight on the subnet (not a stake amount). To add validators to a subnet that has already been converted to an L1, use l1 register-validator instead.

Convert Subnet to L1

Convert a permissioned subnet to an L1 blockchain. This operation is irreversible.

Auto-Discovery Mode

Provide validator node addresses and let the CLI fetch NodeID and BLS credentials:

platform-cli subnet convert-to-l1 \
  --subnet-id 2QYfFcfZ9... \
  --chain-id 3RZgGdaH1... \
  --manager 0x1234567890abcdef1234567890abcdef12345678 \
  --validators 127.0.0.1:9650,127.0.0.1:9652 \
  --validator-balance 1.0 \
  --key-name mykey

Manual Mode

Provide validator data explicitly (all lists must be comma-separated and aligned by index):

platform-cli subnet convert-to-l1 \
  --subnet-id 2QYfFcfZ9... \
  --chain-id 3RZgGdaH1... \
  --manager 0x1234... \
  --validator-node-ids NodeID-A...,NodeID-B... \
  --validator-bls-public-keys 0xabc...,0xdef... \
  --validator-bls-pops 0x111...,0x222... \
  --validator-balance 1.0 \
  --key-name mykey

Mock Validator (Testing)

For local testing, generate a mock validator with random BLS credentials:

platform-cli subnet convert-to-l1 \
  --subnet-id 2QYfFcfZ9... \
  --chain-id 3RZgGdaH1... \
  --mock-validator \
  --key-name mykey \
  --rpc-url http://127.0.0.1:9650

Is this guide helpful?