Try   HackMD

Namada Pre-genesis Delegations

Written by Spork on Sep 16, 2024

Last updated: Oct 7, 2024 by Gavin

Looking for validator instructions? https://hackmd.io/@ian-knowable/H1XlWIq5A

Quick reference

Find your NAM balance: https://raw.githubusercontent.com/anoma/namada-genesis/main/balances.toml
Pre-genesis delegation instructions: https://hackmd.io/hrSE8cvaREivp4CYTe55Tw
Pre-genesis delegation interface: https://namada-genesis.kintsugi-nodes.com
Testnet explorers:

Testnet interface to test your balance: https://interface.housefire.tududes.com

Read me!

Pre-genesis delegations will be used to determine which validators will launch the Namada mainnet. Any valid delegation will be included.

If you are a validator, please do not try to openly solicit delegations using this process. Please ask your prospective delegators to wait until mainnet so that they have a web Namada interface.

The easiest way to delegate will be with a web interface (like Namadillo) after mainnet, but please continue if you're one of the following:

  • a validator
  • a backer
  • an early core contributor
  • someone that's excited to participate in mainnet launch

What you need before starting:

  • Confirm your NAM allocation in the mainnet genesis balances.toml file here.
  • The tnam address for each validator you want to delegate to in the pre-genesis list.
  • Namada v0.43.0 software (aka "binaries")
    You can download these from the Github releases page.
  • (Optional) A Ledger Nano S (not X) with the Namada app installed using a work-around according to these instructions.

⚠️ Note: Nano X and others won't work until the Namada app has been updated in the Ledger Live catalogue.

Step by step guide

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →
Here is a 5-minute video walk-through of the entire process, from beginning to end.

  1. Add your keys to your wallet. In these commands, $ALIAS is a name of your choosing.
  • Using mnemonic: namadaw --pre-genesis derive --alias $ALIAS
  • Using private key: namadaw --pre-genesis add --alias $ALIAS --value $RAW_PRIVATE_KEY
  • Using a Ledger:namadaw --pre-genesis derive --alias $ALIAS --use-device (you will be prompted to confirm on your device)
  1. Display your address and public key; you'll need them in the next steps:
namadaw --pre-genesis list

Copy/paste the public key to a variable:

PUB_KEY=tpknam...
  1. Find the address (tnam...) of the validator you wish to delegate to. Check the README of the mainnet-genesis repo for a list of potential validators. Copy/paste the address to a variable for later:
TARGET=tnam...
  1. Consult the balances.toml and use Ctrl+F to find your address, to see how many NAM you have available to delegate.

DO NOT DELEGATE YOUR ENTIRE BALANCE, save at least 1 NAM for transaction fees.

AMOUNT=5000
  1. Create the unsigned bond pre-genesis transaction, which will be written to the location specified by --path. Example below delegates 5000 NAM:
namadac utils genesis-bond \
  --source $PUB_KEY \
  --validator $TARGET \
  --amount $AMOUNT \
  --path bond.toml
  1. Multiple delegations
    It may be wise to distribute your stake among several validators to lessen the penalty-size risk of cubic slashing, but this is optional.

Use Step 5 to create the bond.toml file and open in a plaintext editor. Copy/paste and then update the validator and amount for each new paste:

[[bond]]
source = "tpknam1qqt3q97n8knytcfvsax4k4rvdthxl9f5pjkj9fmscvyg72r2kdl9674f37e"
validator = "tnam1qxypnz2hsgdn6avhz6szk82c6nzxq7gvvvexmnrt"
amount = "10000"
[[bond]]
source = "tpknam1qqt3q97n8knytcfvsax4k4rvdthxl9f5pjkj9fmscvyg72r2kdl9674f37e"
validator = "tnam1qxuv9e6rx0stfz7e842q4uwmpcexh50765qqw9ns"
amount = "5000"
[[bond]]
source = "tpknam1qqt3q97n8knytcfvsax4k4rvdthxl9f5pjkj9fmscvyg72r2kdl9674f37e"
validator = "tnam1q4k4rvdthxl9f5pjkj9fmswmpcexh50765qqw9ns"
amount = "25000"

Note: Regardless of whether you're doing one bond or multiple, only sign and submit one bond toml file

  1. Finally, sign the transaction(s) file. In the below command, --path is the input file and --output is the resulting signed file:
namadac utils sign-genesis-txs \
  --path bond.toml \
  --output signed-bond.toml

If you're using a Ledger Nano S, the command is almost the same:

namadac utils sign-genesis-txs \
  --path bond.toml \
  --output signed-bond.toml \
  --use-device

You will be prompted on the device to confirm the signing.

  1. Make a Pull Request to the mainnet-genesis repo by doing the following:
    a) rename the signed-bond.toml file to match the Github username of the account you'll be submitting from; eg. gavinly-bond.toml
    !! the filename must be all lowercase !!
    b) clone the repo and place your [github_username]-bond.toml in the transactions/ folder
    c) Create a new Pull Request with the name "Add [github_username]-bond.toml"

As pre-genesis bond txs are added, the README and graph on the mainnet-genesis repo will dynamically update with the current voting power.

Until the end of Stage 2, you can update/delete your delegation(s) by making a PR to modify/remove your existing [github_username]-bond.toml. After Stage 2 is complete, you will not be able to make further modifications prior to chain-launch.

  1. If you like, you can sign up for the staking newsletter for updates about mainnet and next steps: https://namada.us7.list-manage.com/subscribe?u=69adafe0399f0f2a434d8924b&id=263f552276