#
Tutorial: Your First VerusID
A beginner-friendly walkthrough to registering your own self-sovereign identity on the Verus blockchain.
Estimated time: 15–20 minutes
Difficulty: Beginner
What you'll learn: What a VerusID is, why you'd want one, and exactly how to create one step by step.
#
What Is a VerusID?
A VerusID is a self-sovereign blockchain identity. Think of it like a username that:
- You own — not a company, not a platform. It's on the blockchain and only you control it.
- Is human-readable — instead of
RXyz123ABCdefGHI456..., you're justalice@ - Can receive funds — people send coins to
alice@instead of a long address - Stores data — attach metadata, keys, and content to your identity
- Is revocable/recoverable — if your keys are compromised, you can revoke and recover (unlike regular crypto addresses)
- Can launch currencies — your VerusID is the foundation for creating tokens
#
What You Need
- Verus CLI installed and synced to testnet (setup guide)
- A wallet with some VRSCTEST (~100 VRSCTEST for a root ID on testnet — same cost as mainnet but with free test coins)
- A name you want to register (letters, numbers, spaces — no special characters)
#
Step 1: Make Sure Your Daemon Is Running
./verus -testnet getinfo
What you should see:
{
"version": 2000753,
"blocks": 926961,
"headers": 926961,
"connections": 8,
...
}
✅ blocks should equal headers (fully synced).
✅ connections should be > 0 (connected to network).
If you get an error: Start the daemon first:
./verusd -testnet -bootstrap
#
Step 2: Get a Wallet Address
You need an R-address. This will be the primary address that controls your VerusID.
./verus -testnet getnewaddress "verusid-primary"
What you should see:
RXyz123ABCdefGHI456...
📝 Copy this address. You'll use it multiple times. We'll call it YOUR_ADDRESS from here on.
#
Step 3: Fund Your Address
Check your balance:
./verus -testnet getbalance
What you should see:
0.00000000
or some number. You need ~100 VRSCTEST for a root VerusID (same cost as mainnet). Get free VRSCTEST from the Discord faucet.
How to get testnet coins:
- Ask in the Verus Discord
#testnetchannel - Mine briefly:
./verus -testnet setgenerate true 1(then stop withsetgenerate falseafter getting some coins)
#
Step 4: Pick a Name
Before committing, check if your desired name is available:
./verus -testnet getidentity "alice@"
If available (what you want to see):
Cannot find identity
If taken (pick a different name):
{
"identity": {
"name": "alice",
...
}
}
#
Name Rules
Your name:
- ✅ Can have: letters, numbers, hyphens, spaces
- ❌ Cannot have:
\ / : * ? " < > | @ . - ❌ Cannot start or end with spaces
- ❌ Cannot have multiple consecutive spaces
- Is case-insensitive (
Alice=alice=ALICE)
#
Step 5: Create the Name Commitment
This is a security step. It hides your chosen name in a hash so miners can't see it and steal it before you register.
./verus -testnet registernamecommitment "YOUR_NAME" "YOUR_ADDRESS" "REFERRAL_IDENTITY"
The referral identity is optional but recommended. If you don't have a referrer, use "Verus Coin Foundation@" as the default — it supports the project and can reduce your registration cost:
./verus -testnet registernamecommitment "YOUR_NAME" "YOUR_ADDRESS" "Verus Coin Foundation@"
Example with actual values:
./verus -testnet registernamecommitment "alice" "<R-address>" "Verus Coin Foundation@"
What you should see:
{
"txid": "a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2",
"namereservation": {
"version": 1,
"name": "alice",
"parent": "iJhCezBExJHvtyH3fGhNnt2NhU4Ztkf2yq",
"salt": "7f8a9b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0c1d2e3f4a5b6c7d8e9f0a",
"referral": "",
"nameid": "iJKLmnoPQRstUVwxYZ123..."
}
}
⚠️ CRITICAL: Copy and save this ENTIRE output somewhere safe!
You need thetxid,salt, andnameidfor the next step. If you lose thesalt, your commitment is wasted and you'll need to start over.
#
Why Two Steps?
Why not just register in one command? Security!
- Commit (this step) — publishes a hash of your name. No one can see what name you chose.
- Register (next step) — reveals your name. Since your commitment was first, no one can front-run you.
This prevents miners from seeing "alice" in the mempool and quickly registering it themselves.
#
Step 6: Wait for the Commitment to Confirm
The commitment must be mined into a block before you can register. Wait ~1 minute (1 block):
./verus -testnet gettransaction "YOUR_COMMITMENT_TXID"
What you're looking for:
{
"confirmations": 1,
...
}
✅ confirmations must be at least 1. If it says 0, wait and try again.
#
Step 7: Register Your VerusID
Now use the commitment output to register. Replace the values below with YOUR actual values from Step 5:
./verus -testnet registeridentity '{
"txid": "YOUR_COMMITMENT_TXID",
"namereservation": {
"version": 1,
"name": "YOUR_NAME",
"parent": "YOUR_PARENT_FROM_STEP5",
"salt": "YOUR_SALT",
"referral": "",
"nameid": "YOUR_NAMEID"
},
"identity": {
"name": "YOUR_NAME",
"primaryaddresses": ["YOUR_ADDRESS"],
"minimumsignatures": 1,
"version": 3
}
}'
⚠️ CRITICAL: The
namereservationmust include ALL fields exactly as returned in Step 5 —version,name,parent,salt,referral, andnameid. Missing any field causes a hash mismatch error. The safest approach: copy your entirenamereservationoutput from Step 5 exactly as-is.Note: The
parentfield will be"iJhCezBExJHvtyH3fGhNnt2NhU4Ztkf2yq"on testnet (VRSCTEST) or"i5w5MuNik5NtLcYmNzcvaoixooEebB6MGV"on mainnet (VRSC). Always use the exact value from your Step 5 output.
Full example with actual values:
./verus -testnet registeridentity '{
"txid": "a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2",
"namereservation": {
"version": 1,
"name": "alice",
"parent": "iJhCezBExJHvtyH3fGhNnt2NhU4Ztkf2yq",
"salt": "7f8a9b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0c1d2e3f4a5b6c7d8e9f0a",
"referral": "",
"nameid": "iJKLmnoPQRstUVwxYZ123..."
},
"identity": {
"name": "alice",
"primaryaddresses": ["<R-address>"],
"minimumsignatures": 1,
"version": 3
}
}'
What you should see:
f6e5d4c3b2a1f6e5d4c3b2a1f6e5d4c3b2a1f6e5d4c3b2a1f6e5d4c3b2a1f6e5
That's the registration transaction ID. 🎉
#
Step 8: Verify Your New Identity
Wait for 1 confirmation, then:
./verus -testnet getidentity "alice@"
What you should see:
{
"identity": {
"version": 3,
"name": "alice",
"primaryaddresses": [
"<R-address>"
],
"minimumsignatures": 1,
"revocationauthority": "alice@",
"recoveryauthority": "alice@",
...
}
}
Congratulations! You now own alice@ on the Verus blockchain! 🎉
Notice that revocationauthority and recoveryauthority default to yourself. This means:
- You can revoke your own ID if compromised
- You can recover it after revocation
(In production, you'd set these to trusted friends or backup identities for extra security.)
#
Step 9: Try Receiving Coins to Your VerusID
Now anyone can send coins to your ID instead of a long address:
# Someone else runs this:
./verus -testnet sendcurrency "*" '[{"address":"alice@","amount":1}]'
Check balance:
./verus -testnet getbalance
#
Using a Referral (Save on Mainnet)
On mainnet, a root VerusID costs ~100 VRSC (80 VRSC with a referral (as low as ~20 net with a full referral chain)). Other options: free IDs from the Valu community program, cheap IDs on PBaaS chains (pennies), or subIDs under an existing namespace (fractions of a cent). Example with referral:
./verus registernamecommitment "alice" "YOUR_ADDRESS" "existingfriend@"
The referral identity must already exist. Both you and the referrer benefit.
#
What Could Go Wrong
#
What You've Learned
✅ What a VerusID is and why it matters
✅ The two-step commitment/registration process
✅ How to check name availability
✅ How to register and verify your identity
✅ How to receive coins to your VerusID
#
Next Steps
- Update your VerusID — add multisig, change authorities
- Launch a token — your VerusID can become a currency
- Send and receive — practice moving coins around
Last updated: 2026-02-07