Signing-key aliasing
Validators need to be able to sign messages without their primary keys being made available to a live networked node.
If a node is compromised a primary signing key must remain safe for the node operator and the network itself.
For the node to be able to recover it must be possible to rotate the signing key while still keeping it associated with the user's license and stake.
We do this through signing-key aliasing.
Process for signing-key aliasing
- Install the
cardano-cli - Create a new payment address on mainnet
- Construct and send a self transaction with custom metadata
At the end of this process a user will have a new (aliased) public/private key signing pair that is linked to their accounts holding the Orcfax License and staked $FACT.
1. Install the cardano-cli
Operators will need to install the cardano-cli which is distributed as part of
the cardano-node. This can be done on your local machine.
Download the latest release asset for your platform (e.g linux, macos, or win64) and extract its contents.
The cardano-cli is accessed from the node's bin folder, e.g. if installed in
your home directory: /home/<user>/cardano-node/bin/cardano-cli.
Either move the contents of the bin folder to a directory that’s part of your
PATH (or add it to your PATH) e.g. in the example below, replacing <user> with
the name of your user's home folder:
export PATH=$PATH:/home/<user>/cardano-node/bin/
To verify it is installed correctly, run:
cardano-cli --version
2. Create a new payment address on mainnet
Create a new verification (vkey) and signing (skey) key pair
cardano-cli address key-gen \
--verification-key-file payment.vkey \
--signing-key-file payment.skey
Build the new payment address
cardano-cli address build \
--payment-verification-key-file payment.vkey \
--out-file payment.addr \
--mainnet
Calculate the vkey hash
cardano-cli address key-hash \
--payment-verification-key-file payment.vkey \
--out-file payment.hash
At this point, you should have the following files in your working directory:
payment.addrpayment.skeypayment.vkeypayment.hash
You will need to send the contents of the payment.hash file as part of the
custom metadata in the next step. It should look something like:
37bf5119bb8ea27ad0796f04951456ad16748001c78aea8cab2b49c0.
Later, you will also need to make the payment.skey created above available on
the collector node you will be running in the ITN. This is described further
here.
3. Construct and send a self transaction with custom metadata
Finally, to complete the process, you will need to construct a transaction to yourself using the wallet that holds your Orcfax Validator License.
You are only sending it back to yourself and will need to do this in the future if you need to alias your address again.
The transaction must be constructed as follows:
- Send exactly
1.246010in ADA - Attach your Orcfax Validator License to the transaction
(IMPORTANT: this allows Orcfax to index the transaction using the policy ID.) - Add the custom metadata
The metadata label must be "674" and must have the following 3 fields in
order:
"REGISTER""ITN""<YOUR_PAYMENT_HASH>"
The metadata fields will need to be on separate lines so as to fit within the Cardano metadata character limit (max-length: 64 bytes).
For more information, refer to the following Cardano transaction metadata specifications:
If using eternl wallet, you will need to click options and then
Custom Metadata to add the metadata. NoConversions should be selected.
An example transaction that results in the correct metadata can be seen here and should look like this:
{
"674": {
"msg": ["REGISTER", "ITN", "<YOUR_PAYMENT_HASH>"]
}
}
If all looks good, sign and complete the transaction.
What Orcfax will see
Orcfax will be monitoring the Cardano network for the ADA value (1.246010) and
NFT policy ID (0c6f22bfabcb055927ca3235eac387945b6017f15223d9365e6e4e43).
When a transaction is registered, metadata is expected, the message will be processed, and the sending address compared against all known license holders.
If the wallet holds a validator license and the correct amount of staked $FACT it will be eligible for participation in the ITN.
There is no need to deregister an address as this process only needs to be done to claim ITN rewards.
If you find you have a need to change your secondary (aliased) address then you can submit a new transaction and it will not affect your ability to participate in the ITN.
Secondary (aliased) addresses, validator license wallets, and staked $FACT will be checked at runtime at all times and so information about participation will remain up-to-date if validator licenses change hands.