Skip to content

Commit

Permalink
Update genesis (#41)
Browse files Browse the repository at this point in the history
  • Loading branch information
chalabi2 authored Apr 11, 2024
1 parent 11d07c0 commit 5d18c06
Show file tree
Hide file tree
Showing 6 changed files with 696 additions and 234 deletions.
133 changes: 133 additions & 0 deletions network/manifest-1/GENESIS.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,133 @@
# Mainnet Genesis

TODO:

- Update PoA Admin(s) from manifest10d07y265gmmuvt4z0w9aw880jnsr700jmq3jzm
- Remove manifest1hj5fveer5cjtn4wd6wstzugjfdxzl0xp8ws9ct once others are given genesis allocations

# Post Genesis Validators

If you are a validator joining the network after the initial genesis launch, follow the [post genesis document here](./POST_GENESIS.md).

## Hardware Requirements

**Minimal**

- 4 GB RAM
- 100 GB SSD
- 3.2 GHz x4 CPU

**Recommended**

- 8 GB RAM
- 100 GB NVME SSD
- 4.2 GHz x6 CPU

**Operating System**

- Linux (x86_64) or Linux (amd64)

### Dependencies

> Prerequisite: go1.22+, git, gcc, make, jq
**Arch Linux:**

```
pacman -S go git gcc make
```

**Ubuntu Linux:**

```
sudo snap install go --classic
sudo apt-get install git gcc make jq
```

## manifestd Installation Steps

```bash
# Clone git repository
git clone https://github.com/liftedinit/manifest-ledger.git
cd manifest-ledger
git checkout VERSION

make install # go install ./...
# For ledger support `go install -tags ledger ./...`
manifestd config set client chain-id manifest-1
```

OR

```bash
wget <link to manifest precompile>
chmod +x manifestd
mv manifestd /usr/local/bin
```

### Generate keys

- `manifestd keys add [key_name]`
- `manifestd keys add [key_name] --recover` to regenerate keys with your BIP39 mnemonic to add ledger key
- `manifestd keys add [key_name] --ledger` to add a ledger key

# Validator setup instructions

## Genesis Tx:

```bash
# Validator variables
KEYNAME='' # your keyname
MONIKER='' # your validator moniker
SECURITY_CONTACT="[email protected]"
WEBSITE="https://domain.com"
MAX_RATE='0.20' # 20%
COMMISSION_RATE='0.00' # 0%
MAX_CHANGE='0.01' # 1%
CHAIN_ID='manifest-1'
PROJECT_HOME="${HOME}/.manifest"
KEYNAME_ADDR=$(manifestd keys show $KEYNAME -a)

# Remove old files if they exist and replace genesis.json
manifestd tendermint unsafe-reset-all
rm $HOME/.manifest/config/genesis.json
rm $HOME/.manifest/config/gentx/*.json
wget https://raw.githubusercontent.com/liftedinit/manifest-ledger/main/network/manifest-1/genesis.json -O $HOME/.manifest/config/genesis.json

# Give yourself 1POASTAKE for the genesis Tx signed
manifestd init "$MONIKER" --chain-id $CHAIN_ID --staking-bond-denom upoa
manifestd add-genesis-account $KEYNAME_ADDR 1000000upoa

# genesis transaction using all above variables
manifestd gentx $KEYNAME 1000000upoa \
--home=$PROJECT_HOME \
--chain-id=$CHAIN_ID \
--moniker="$MONIKER" \
--commission-max-change-rate=$MAX_CHANGE \
--commission-max-rate=$MAX_RATE \
--commission-rate=$COMMISSION_RATE \
--security-contact=$SECURITY_CONTACT \
--website=$WEBSITE \
--details=""

# Get that gentx data easily -> your home directory
cat ${PROJECT_HOME}/config/gentx/gentx-*.json

# get your peer
echo $(manifestd tendermint show-node-id)@$(curl -s ifconfig.me):26656`
```

> Update minimum gas prices

```bash
# nano ${HOME}/.manifest/config/app.toml # minimum-gas-prices -> "0umfx"
sed -i 's/minimum-gas-prices = "0stake"/minimum-gas-prices = "0umfx"/g' ${HOME}/.manifest/config/app.toml
```

## Collect Gentx

After you create your gentx, you will need to submit it to the network. You can do this by creating a PR to the network repository with your gentx file, or by collecting all gentx files in the `~/.manifest/config/gentx` then running `manifestd genesis collect-gentxs` to collect all gentx files and create a new genesis file.

## Start your node

Start your node with the new genesis file `manifestd start`.
8 changes: 4 additions & 4 deletions network/manifest-1/POST_GENESIS.md
Original file line number Diff line number Diff line change
Expand Up @@ -67,9 +67,9 @@ mv manifestd /usr/local/bin
### Configure & start your node

- #### Intialize
`manifestd init <moniker> --chain-id manifest-1 --default-denom poastake`
`manifestd init <moniker> --chain-id manifest-1 --default-denom upoa`
- #### Genesis
`cp github.com/liftedinit/manifest-ledger/network/manifest-1/genesis.json ~/.manifestd/config/genesis.json`
`cp github.com/liftedinit/manifest-ledger/network/manifest-1/manifest-1_genesis.json ~/.manifestd/config/genesis.json`
- #### Peers
`sed -i 's/seeds = ""/seeds = "SEED_ADDRESS"/g' ${HOME}/.manifest/config/config.toml`
- #### Minimum Gas
Expand Down Expand Up @@ -112,13 +112,13 @@ sudo sytemctl start manifestd && journalctl -u manifestd -f -o cat --no-hostname

- #### Generate your validator file

Use this command to generate your validator file and change all the entries to your own information. `amount` should remain the same unless the team specifies otherwise. 1 POA power is 1000000poastake.
Use this command to generate your validator file and change all the entries to your own information. `amount` should remain the same unless the team specifies otherwise. 1 POA power is 1000000upoa.

```bash
cat <<EOF > validator.json
{
"pubkey": {"@type":"/cosmos.crypto.ed25519.PubKey","key":"oWg2ISpLF405Jcm2vXV+2v4fnjodh6aafuIdeoW+rUw="},
"amount": "1000000poastake",
"amount": "1000000upoa",
"moniker": "validator's name",
"identity": "keybase-identity",
"website": "validator's (optional) website",
Expand Down
126 changes: 16 additions & 110 deletions network/manifest-1/README.md
Original file line number Diff line number Diff line change
@@ -1,124 +1,30 @@
# Mainnet Genesis
# Manifest-1 Network Guide

TODO:
This guide will assist you in setting up a Manifest-1 network. There are three primary methods to join the network:

- Update PoA Admin(s) from manifest10d07y265gmmuvt4z0w9aw880jnsr700jmq3jzm
- Remove manifest1hj5fveer5cjtn4wd6wstzugjfdxzl0xp8ws9ct once others are given genesis allocations
1. [Genesis](./GENESIS.md): For validators joining at the network's inception, please refer to the genesis document.
2. [Post Genesis](./POST_GENESIS.md): For validators joining after the initial network launch, consult the post-genesis document.
3. [Custom Genesis](#custom-genesis): To create your genesis file, follow the custom genesis guide.

# Post Genesis Validators
## [Genesis](./GENESIS.md)

If you are a validator joining the network after the initial genesis launch, follow the [post genesis document here](./POST_GENESIS.md).
This section is tailored for validators intending to participate in the genesis ceremony. Prospective validators must download the genesis file and adhere to the provided steps to join the network. The genesis file originates from the [set-genesis-params.sh](./set-genesis-params.sh) script, which facilitates the generation of a bespoke genesis file. This file allows for the specification of network parameters, such as the Proof of Authority (PoA) token denomination and PoA administrators.

## Hardware Requirements
## [Post Genesis](./POST_GENESIS.md)

**Minimal**
This section addresses validators aiming to join the network post-initial launch. Such validators need to execute the outlined steps to generate their validator file and integrate into the network by submitting a join request to the PoA administrators.

- 4 GB RAM
- 100 GB SSD
- 3.2 GHz x4 CPU
## Custom Genesis

**Recommended**
This section is for those who wish to construct their genesis file for the network, enabling the modification of PoA administrator details and other parameters. Utilizing the [set-genesis-params.sh](./set-genesis-params.sh) script, you can alter the PoA administrator, the PoA denomination, among other settings.

- 8 GB RAM
- 100 GB NVME SSD
- 4.2 GHz x6 CPU

**Operating System**

- Linux (x86_64) or Linux (amd64)

### Dependencies

> Prerequisite: go1.22+, git, gcc, make, jq
**Arch Linux:**

```
pacman -S go git gcc make
```

**Ubuntu Linux:**

```
sudo snap install go --classic
sudo apt-get install git gcc make jq
```

## manifestd Installation Steps

```bash
# Clone git repository
git clone https://github.com/liftedinit/manifest-ledger.git
cd manifest-ledger
git checkout VERSION

make install # go install ./...
# For ledger support `go install -tags ledger ./...`
manifestd config set client chain-id manifest-1
```

OR

```bash
wget <link to manifest precompile>
chmod +x manifestd
mv manifestd /usr/local/bin
```

### Generate keys

- `manifestd keys add [key_name]`
- `manifestd keys add [key_name] --recover` to regenerate keys with your BIP39 mnemonic to add ledger key
- `manifestd keys add [key_name] --ledger` to add a ledger key

# Validator setup instructions

## Genesis Tx:
In the script, you will encounter the following lines:

```bash
# Validator variables
KEYNAME='validator' # your keyname
MONIKER='pbcups'
SECURITY_CONTACT="[email protected]"
WEBSITE="https://domain.com"
MAX_RATE='0.20' # 20%
COMMISSION_RATE='0.00' # 0%
MAX_CHANGE='0.01' # 1%
CHAIN_ID='manifest-1'
PROJECT_HOME="${HOME}/.manifest"
KEYNAME_ADDR=$(manifestd keys show $KEYNAME -a)

# Remove old files if they exist
manifestd tendermint unsafe-reset-all
rm $HOME/.manifest/config/genesis.json
rm $HOME/.manifest/config/gentx/*.json

# Give yourself 1POASTAKE for the genesis Tx signed
manifestd init "$MONIKER" --chain-id $CHAIN_ID --staking-bond-denom poastake
manifestd add-genesis-account $KEYNAME_ADDR 1000000poastake

# genesis transaction using all above variables
manifestd gentx $KEYNAME 1000000poastake \
--home=$PROJECT_HOME \
--chain-id=$CHAIN_ID \
--moniker="$MONIKER" \
--commission-max-change-rate=$MAX_CHANGE \
--commission-max-rate=$MAX_RATE \
--commission-rate=$COMMISSION_RATE \
--security-contact=$SECURITY_CONTACT \
--website=$WEBSITE \
--details=""

# Get that gentx data easily -> your home directory
cat ${PROJECT_HOME}/config/gentx/gentx-*.json

# get your peer
echo $(manifestd tendermint show-node-id)@$(curl -s ifconfig.me):26656`
update_genesis '.app_state["poa"]["params"]["admins"]=["manifest1wxjfftrc0emj5f7ldcvtpj05lxtz3t2npghwsf"]'
update_genesis '.app_state["staking"]["params"]["bond_denom"]="upoa"'
```

> Update minimum gas prices
Modifying the quoted values allows you to customize them as desired. After making the changes, execute the script, and your revised genesis file will be located at `$HOME/.manifest/config/genesis.json`.

```bash
# nano ${HOME}/.manifest/config/app.toml # minimum-gas-prices -> "0umfx"
sed -i 's/minimum-gas-prices = "0stake"/minimum-gas-prices = "0umfx"/g' ${HOME}/.manifest/config/app.toml
```
Following these adjustments, proceed to the [Genesis](./GENESIS.md) document to finalize your node setup and participate in the genesis ceremony or launch your own.
Loading

0 comments on commit 5d18c06

Please sign in to comment.