-
Notifications
You must be signed in to change notification settings - Fork 3
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
6 changed files
with
696 additions
and
234 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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`. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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. |
Oops, something went wrong.