# Namada Pre-genesis Delegations #### Written by Spork on Sep 16, 2024 #### Last updated: Sep 17, 2024 by Spork --- 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: - Namada `v0.43.0` binaries. You can download these from the [Github releases page](https://github.com/anoma/namada/releases/tag/v0.43.0). - Mainnet genesis`balances.toml` file [here](https://raw.githubusercontent.com/anoma/namada-genesis/main/balances.toml). (This file will tell you how many tokens you have available to bond) - (Optional) A Ledger Nano or Nano S with the Namada app installed using a work-around according to these [instructions](https://docs.namada.net/users/wallet/hardware-wallet). **Note:** Nano X and others won't work until the Namada app has been updated in the Ledger Live catalogue. ## Step by step guide: 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) 2. 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... ``` 3. Find the address (`tnam...`) of the validator you wish to delegate to. Check the README of the [mainnet-genesis repo](https://github.com/anoma/namada-mainnet-genesis) for a list of potential validators. Copy/paste the address to a variable for later: ``` TARGET=tnam... ``` 4. Consult the [balances.toml](https://raw.githubusercontent.com/anoma/namada-genesis/main/balances.toml) and use Ctrl+F to find your address, to see how many NAM you have available to delegate. 5. Create the unsigned bond pre-genesis transaction, which will be written to the location specified by `--path` : ``` namadac utils genesis-bond \ --source $PUB_KEY \ --validator $TARGET \ --amount $AMOUNT \ --path ~/bond.toml ``` 6. (Optional) A toml file can contain one bond, or several. If you want to delegate to multiple validators, you can repeat Step 5 to generate a bond tx for each one, and then collect them all into a single toml file, which we will sign in the next step. For example, here we've done Step 5 twice to create separate files for two validators, and then copy/pasted them into a single file: ``` [[bond]] source = "tpknam1qqt3q97n8knytcfvsax4k4rvdthxl9f5pjkj9fmscvyg72r2kdl9674f37e" validator = "tnam1qxypnz2hsgdn6avhz6szk82c6nzxq7gvvvexmnrt" amount = "100" [[bond]] source = "tpknam1qqt3q97n8knytcfvsax4k4rvdthxl9f5pjkj9fmscvyg72r2kdl9674f37e" validator = "tnam1qxuv9e6rx0stfz7e842q4uwmpcexh50765qqw9ns" amount = "250" ``` *Note: Regardless of whether you're doing one bond or multiple, only sign and submit a single bond toml file* 7. 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. 8. Make a Pull Request to the [mainnet-genesis repo](https://github.com/anoma/namada-mainnet-genesis) by doing the following: a) rename the `signed-bond.toml` file to match the Github username of the account you'll be submitting from; ie. `github_username-bond.toml` 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](https://github.com/anoma/namada-mainnet-genesis) 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.** 9. 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