November 24, 2022

By sdbondi

Validator Node Registration

This week, draft RFC-0313 - ValidatorNodeRegistration was merged and implemented for the igor network. This RFC describes the procedure for permissionless validator node registration and is the first step to participating in the Tari L2 network.

This process is still under evaluation and some details may change as the development on the second layer continues.

The primary goals of validator node registration process are to:

  1. provide a consistent and verifiable view of the current validator node set across the L2 network,
  2. add some cost to joining the L2 network to mitigate against node spamming, and
  3. to periodically assign a new pseudorandom shard key to each validator.

A validator node submits a signed registration UTXO to the base layer which is included in a block. This registration activates at the next epoch after the registration height.

Each validator monitors the base chain for new registrations. These registrations must have a large number of confirmations before they are recognised to prevent inconsistencies that can occur from base chain reorgs. The base chain provides the validator node public key, the assigned shard key and a merkle root that commits to the current validator set for each epoch.

Each validator node registration is valid for up to VNRegistrationValidityPeriod epochs and a validator may re-register before the registration expires to ensure continued participation in L2 consensus.

A number of new base layer consensus constants are added, namely

  • EpochLength - defines the number of base chain blocks for an epoch
  • VNRegistrationValidityPeriod - the validity period of a validator node registration UTXO
  • VNRegDepositAmount - the minimum amount of base layer coins that must be locked up in the validator node registration UTXO
  • VNRegLockHeight - the number of epochs that funds in the validator node registration UTXO must be locked
  • VNShardShuffleInterval - the number of epochs before the validator node shard key will be pseudorandomly reassigned

Additionally, a new block header field validator_node_mr is added that commits the validator set for the current epoch.

At the time of writing, there are no igor seed nodes or a validator node network, so you might want to wait for these before trying this out.

That said, the current process is as follows:

  1. Run a local base node and wallet with GRPC enabled on the igor network.
  2. Ensure your wallet has some funds.
  3. Run a validator node from the DAN repo.
  4. Use the validator node CLI or web UI (more on that in another post) to register your validator node.
     $ cargo run --bin tari_validator_node_cli --  vn register
     ✅ Validator node registration submitted (tx_id: 5416354101787587057)
  5. Thereafter, the validator node will automatically re-register at the right time.
  6. Once the validator node registration has enough confirmations, your validator node is registered and ready to begin processing instructions as shown in a previous post.