How to Run Hornet as a Verifier Node
A verifier node is a node which validates receipts. Receipts are an integral component of the migration mechanism used to migrate funds from the legacy network into the Chrysalis Phase 2 network. You can find a more detailed explanation on how the migration mechanism works in the Chrysalis documentation.
This guide explains how to configure a Hornet node as a verifier node:
- Make sure you enabled the
Receipts
plugin undernode.enablePlugins
. - Set :
receipts.validator.validate
totrue
. This enables the verification logic in your node.receipts.validator.ignoreSoftErrors
totrue
orfalse
.- Set it to
true
, if you don't want the verifier node to panic if it can not query a legacy node for data. - Set it to
false
if you want to make sure that your verifier node panics if it can not query for data from a legacy node. - An invalid receipt will always result in a panic.
ignoreSoftErrors
only controls API call failures to the legacy node.
- Set it to
receipts.validator.api.timeout
to something sensible like10s
(meaning 10 seconds).receipts.validator.api.address
to the URI of your legacy node. Note that this legacy node must have thegetWhiteFlagConfirmation
andgetNodeInfo
API commands whitelisted.receipts.validator.coordinator.address
to the Coordinator address in the legacy network.receipts.validator.coordinator.merkleTreeDepth
to the correct used Merkle tree depth in the legacy network.
- Run your Hornet verifier node and let it validate receipts.
We recommend that you use a load balanced endpoint to multiple legacy nodes for receipts.validator.api.address
to obtain high availability.
After this, if your verifier node panics because of an invalid receipt, it is clear that one of the produced receipts is not valid. In this case, as a verifier node operator, you are invited to inform the community and the IOTA Foundation of your findings. This is, by the way, the same result as when the Coordinator issues a milestone, which diverges from a consistent ledger state.