COSMOS WIKI
May 8, 2022

Запуск нескольких нод Cosmos на 1 сервере

🪓 Telegram канал UTSA 🪓 Telegram чат UTSA

Cosmos использует Tendermint. Tendermint — это алгоритм консенсуса, устойчивый к злоумышленным действиям. Запустив несколько нод с Tendermint пользователь столкнется с пересечением используемых портов и соответственно неработоспособностью второй и последующих нод

По умолчанию используются порты: 26656; 26657; 6060; 26658; 26660; 9090; 9091 и др

Не рекомендуется устанавливать большое количество нод на 1 сервер - делайте все на свой страх и риск!


config.toml

  • proxy_app = "tcp://127.0.0.1:26658"
  • rpc laddr = "tcp://127.0.0.1:26657"
  • pprof_laddr = "localhost:6060"
  • p2p laddr = "tcp://0.0.0.0:26656"
  • prometheus_listen_addr = ":26660"

app.toml

  • api address = "tcp://0.0.0.0:1317"
  • grpc address = "0.0.0.0:9090"
  • grpc-web address = "0.0.0.0:9091"

client.toml

  • node = "tcp://localhost:26657"

Соответственно для второй и последующих нод необходимо сменить данные порты, чтобы они не пересекались. Это можно сделать вручную $HOME/.defund/config/config.toml или используя следующие команды:

# зададим переменную
work_dir=.defund

config.toml

# для 2 ноды
sed -i.bak -e "s%^proxy_app = \"tcp://127.0.0.1:26658\"%proxy_app = \"tcp://127.0.0.1:36658\"%; s%^laddr = \"tcp://127.0.0.1:26657\"%laddr = \"tcp://127.0.0.1:36657\"%; s%^pprof_laddr = \"localhost:6060\"%pprof_laddr = \"localhost:6061\"%; s%^laddr = \"tcp://0.0.0.0:26656\"%laddr = \"tcp://0.0.0.0:36656\"%; s%^prometheus_listen_addr = \":26660\"%prometheus_listen_addr = \":36660\"%" $HOME/$work_dir/config/config.toml

# для 3 ноды
sed -i.bak -e "s%^proxy_app = \"tcp://127.0.0.1:26658\"%proxy_app = \"tcp://127.0.0.1:46658\"%; s%^laddr = \"tcp://127.0.0.1:26657\"%laddr = \"tcp://127.0.0.1:46657\"%; s%^pprof_laddr = \"localhost:6060\"%pprof_laddr = \"localhost:6062\"%; s%^laddr = \"tcp://0.0.0.0:26656\"%laddr = \"tcp://0.0.0.0:46656\"%; s%^prometheus_listen_addr = \":26660\"%prometheus_listen_addr = \":46660\"%" $HOME/$work_dir/config/config.toml

# для 4 ноды
sed -i.bak -e "s%^proxy_app = \"tcp://127.0.0.1:26658\"%proxy_app = \"tcp://127.0.0.1:56658\"%; s%^laddr = \"tcp://127.0.0.1:26657\"%laddr = \"tcp://127.0.0.1:56657\"%; s%^pprof_laddr = \"localhost:6060\"%pprof_laddr = \"localhost:6063\"%; s%^laddr = \"tcp://0.0.0.0:26656\"%laddr = \"tcp://0.0.0.0:56656\"%; s%^prometheus_listen_addr = \":26660\"%prometheus_listen_addr = \":56660\"%" $HOME/$work_dir/config/config.toml

# для 5 ноды
sed -i.bak -e "s%^proxy_app = \"tcp://127.0.0.1:26658\"%proxy_app = \"tcp://127.0.0.1:60558\"%; s%^laddr = \"tcp://127.0.0.1:26657\"%laddr = \"tcp://127.0.0.1:60557\"%; s%^pprof_laddr = \"localhost:6060\"%pprof_laddr = \"localhost:6064\"%; s%^laddr = \"tcp://0.0.0.0:26656\"%laddr = \"tcp://0.0.0.0:60556\"%; s%^prometheus_listen_addr = \":26660\"%prometheus_listen_addr = \":60560\"%" $HOME/$work_dir/config/config.toml

# для 6 ноды
sed -i.bak -e "s%^proxy_app = \"tcp://127.0.0.1:26658\"%proxy_app = \"tcp://127.0.0.1:60658\"%; s%^laddr = \"tcp://127.0.0.1:26657\"%laddr = \"tcp://127.0.0.1:60657\"%; s%^pprof_laddr = \"localhost:6060\"%pprof_laddr = \"localhost:6065\"%; s%^laddr = \"tcp://0.0.0.0:26656\"%laddr = \"tcp://0.0.0.0:60656\"%; s%^prometheus_listen_addr = \":26660\"%prometheus_listen_addr = \":60660\"%" $HOME/$work_dir/config/config.toml

# для 7 ноды
sed -i.bak -e "s%^proxy_app = \"tcp://127.0.0.1:26658\"%proxy_app = \"tcp://127.0.0.1:60758\"%; s%^laddr = \"tcp://127.0.0.1:26657\"%laddr = \"tcp://127.0.0.1:60757\"%; s%^pprof_laddr = \"localhost:6060\"%pprof_laddr = \"localhost:6066\"%; s%^laddr = \"tcp://0.0.0.0:26656\"%laddr = \"tcp://0.0.0.0:60756\"%; s%^prometheus_listen_addr = \":26660\"%prometheus_listen_addr = \":60760\"%" $HOME/$work_dir/config/config.toml

# для 8 ноды
sed -i.bak -e "s%^proxy_app = \"tcp://127.0.0.1:26658\"%proxy_app = \"tcp://127.0.0.1:60858\"%; s%^laddr = \"tcp://127.0.0.1:26657\"%laddr = \"tcp://127.0.0.1:60857\"%; s%^pprof_laddr = \"localhost:6060\"%pprof_laddr = \"localhost:6067\"%; s%^laddr = \"tcp://0.0.0.0:26656\"%laddr = \"tcp://0.0.0.0:60856\"%; s%^prometheus_listen_addr = \":26660\"%prometheus_listen_addr = \":60860\"%" $HOME/$work_dir/config/config.toml

# для 9 ноды
sed -i.bak -e "s%^proxy_app = \"tcp://127.0.0.1:26658\"%proxy_app = \"tcp://127.0.0.1:60958\"%; s%^laddr = \"tcp://127.0.0.1:26657\"%laddr = \"tcp://127.0.0.1:60957\"%; s%^pprof_laddr = \"localhost:6060\"%pprof_laddr = \"localhost:6068\"%; s%^laddr = \"tcp://0.0.0.0:26656\"%laddr = \"tcp://0.0.0.0:60956\"%; s%^prometheus_listen_addr = \":26660\"%prometheus_listen_addr = \":60960\"%" $HOME/$work_dir/config/config.toml

# для 10 ноды
sed -i.bak -e "s%^proxy_app = \"tcp://127.0.0.1:26658\"%proxy_app = \"tcp://127.0.0.1:61058\"%; s%^laddr = \"tcp://127.0.0.1:26657\"%laddr = \"tcp://127.0.0.1:61057\"%; s%^pprof_laddr = \"localhost:6060\"%pprof_laddr = \"localhost:6069\"%; s%^laddr = \"tcp://0.0.0.0:26656\"%laddr = \"tcp://0.0.0.0:61056\"%; s%^prometheus_listen_addr = \":26660\"%prometheus_listen_addr = \":61060\"%" $HOME/$work_dir/config/config.toml

# для 11 ноды
sed -i.bak -e "s%^proxy_app = \"tcp://127.0.0.1:26658\"%proxy_app = \"tcp://127.0.0.1:61158\"%; s%^laddr = \"tcp://127.0.0.1:26657\"%laddr = \"tcp://127.0.0.1:61157\"%; s%^pprof_laddr = \"localhost:6060\"%pprof_laddr = \"localhost:6070\"%; s%^laddr = \"tcp://0.0.0.0:26656\"%laddr = \"tcp://0.0.0.0:61156\"%; s%^prometheus_listen_addr = \":26660\"%prometheus_listen_addr = \":61160\"%" $HOME/$work_dir/config/config.toml

# для 12 ноды
sed -i.bak -e "s%^proxy_app = \"tcp://127.0.0.1:26658\"%proxy_app = \"tcp://127.0.0.1:61258\"%; s%^laddr = \"tcp://127.0.0.1:26657\"%laddr = \"tcp://127.0.0.1:61257\"%; s%^pprof_laddr = \"localhost:6060\"%pprof_laddr = \"localhost:6071\"%; s%^laddr = \"tcp://0.0.0.0:26656\"%laddr = \"tcp://0.0.0.0:61256\"%; s%^prometheus_listen_addr = \":26660\"%prometheus_listen_addr = \":61260\"%" $HOME/$work_dir/config/config.toml

# для 13 ноды
sed -i.bak -e "s%^proxy_app = \"tcp://127.0.0.1:26658\"%proxy_app = \"tcp://127.0.0.1:61358\"%; s%^laddr = \"tcp://127.0.0.1:26657\"%laddr = \"tcp://127.0.0.1:61357\"%; s%^pprof_laddr = \"localhost:6060\"%pprof_laddr = \"localhost:6072\"%; s%^laddr = \"tcp://0.0.0.0:26656\"%laddr = \"tcp://0.0.0.0:61356\"%; s%^prometheus_listen_addr = \":26660\"%prometheus_listen_addr = \":61360\"%" $HOME/$work_dir/config/config.toml


# для 14 ноды
sed -i.bak -e "s%^proxy_app = \"tcp://127.0.0.1:26658\"%proxy_app = \"tcp://127.0.0.1:61458\"%; s%^laddr = \"tcp://127.0.0.1:26657\"%laddr = \"tcp://127.0.0.1:61457\"%; s%^pprof_laddr = \"localhost:6060\"%pprof_laddr = \"localhost:6073\"%; s%^laddr = \"tcp://0.0.0.0:26656\"%laddr = \"tcp://0.0.0.0:61456\"%; s%^prometheus_listen_addr = \":26660\"%prometheus_listen_addr = \":61460\"%" $HOME/$work_dir/config/config.toml

# для 15 ноды
sed -i.bak -e "s%^proxy_app = \"tcp://127.0.0.1:26658\"%proxy_app = \"tcp://127.0.0.1:61558\"%; s%^laddr = \"tcp://127.0.0.1:26657\"%laddr = \"tcp://127.0.0.1:61557\"%; s%^pprof_laddr = \"localhost:6060\"%pprof_laddr = \"localhost:6074\"%; s%^laddr = \"tcp://0.0.0.0:26656\"%laddr = \"tcp://0.0.0.0:61556\"%; s%^prometheus_listen_addr = \":26660\"%prometheus_listen_addr = \":61560\"%" $HOME/$work_dir/config/config.toml

app.toml

# для 2 ноды
sed -i.bak -e "s%^address = \"0.0.0.0:9090\"%address = \"0.0.0.0:9190\"%; s%^address = \"0.0.0.0:9091\"%address = \"0.0.0.0:9191\"%; s%^address = \"tcp://0.0.0.0:1317\"%address = \"tcp://0.0.0.0:1327\"%" $HOME/$work_dir/config/app.toml

# для 3 ноды
sed -i.bak -e "s%^address = \"0.0.0.0:9090\"%address = \"0.0.0.0:9290\"%; s%^address = \"0.0.0.0:9091\"%address = \"0.0.0.0:9291\"%; s%^address = \"tcp://0.0.0.0:1317\"%address = \"tcp://0.0.0.0:1337\"%" $HOME/$work_dir/config/app.toml

# для 4 ноды
sed -i.bak -e "s%^address = \"0.0.0.0:9090\"%address = \"0.0.0.0:9390\"%; s%^address = \"0.0.0.0:9091\"%address = \"0.0.0.0:9391\"%; s%^address = \"tcp://0.0.0.0:1317\"%address = \"tcp://0.0.0.0:1347\"%" $HOME/$work_dir/config/app.toml

# для 5 ноды
sed -i.bak -e "s%^address = \"0.0.0.0:9090\"%address = \"0.0.0.0:9490\"%; s%^address = \"0.0.0.0:9091\"%address = \"0.0.0.0:9491\"%; s%^address = \"tcp://0.0.0.0:1317\"%address = \"tcp://0.0.0.0:1357\"%" $HOME/$work_dir/config/app.toml

# для 6 ноды
sed -i.bak -e "s%^address = \"0.0.0.0:9090\"%address = \"0.0.0.0:9590\"%; s%^address = \"0.0.0.0:9091\"%address = \"0.0.0.0:9591\"%; s%^address = \"tcp://0.0.0.0:1317\"%address = \"tcp://0.0.0.0:1367\"%" $HOME/$work_dir/config/app.toml

# для 7 ноды
sed -i.bak -e "s%^address = \"0.0.0.0:9090\"%address = \"0.0.0.0:9690\"%; s%^address = \"0.0.0.0:9091\"%address = \"0.0.0.0:9691\"%; s%^address = \"tcp://0.0.0.0:1317\"%address = \"tcp://0.0.0.0:1377\"%" $HOME/$work_dir/config/app.toml

# для 8 ноды
sed -i.bak -e "s%^address = \"0.0.0.0:9090\"%address = \"0.0.0.0:9790\"%; s%^address = \"0.0.0.0:9091\"%address = \"0.0.0.0:9791\"%; s%^address = \"tcp://0.0.0.0:1317\"%address = \"tcp://0.0.0.0:1387\"%" $HOME/$work_dir/config/app.toml

# для 9 ноды
sed -i.bak -e "s%^address = \"0.0.0.0:9090\"%address = \"0.0.0.0:9890\"%; s%^address = \"0.0.0.0:9091\"%address = \"0.0.0.0:9891\"%; s%^address = \"tcp://0.0.0.0:1317\"%address = \"tcp://0.0.0.0:1397\"%" $HOME/$work_dir/config/app.toml

# для 10 ноды
sed -i.bak -e "s%^address = \"0.0.0.0:9090\"%address = \"0.0.0.0:9990\"%; s%^address = \"0.0.0.0:9091\"%address = \"0.0.0.0:9991\"%; s%^address = \"tcp://0.0.0.0:1317\"%address = \"tcp://0.0.0.0:1407\"%" $HOME/$work_dir/config/app.toml

# для 11 ноды
sed -i.bak -e "s%^address = \"0.0.0.0:9090\"%address = \"0.0.0.0:9900\"%; s%^address = \"0.0.0.0:9091\"%address = \"0.0.0.0:9901\"%; s%^address = \"tcp://0.0.0.0:1317\"%address = \"tcp://0.0.0.0:1417\"%" $HOME/$work_dir/config/app.toml

# для 12 ноды
sed -i.bak -e "s%^address = \"0.0.0.0:9090\"%address = \"0.0.0.0:9910\"%; s%^address = \"0.0.0.0:9091\"%address = \"0.0.0.0:9911\"%; s%^address = \"tcp://0.0.0.0:1317\"%address = \"tcp://0.0.0.0:1427\"%" $HOME/$work_dir/config/app.toml

# для 13 ноды
sed -i.bak -e "s%^address = \"0.0.0.0:9090\"%address = \"0.0.0.0:9920\"%; s%^address = \"0.0.0.0:9091\"%address = \"0.0.0.0:9921\"%; s%^address = \"tcp://0.0.0.0:1317\"%address = \"tcp://0.0.0.0:1437\"%" $HOME/$work_dir/config/app.toml

# для 14 ноды
sed -i.bak -e "s%^address = \"0.0.0.0:9090\"%address = \"0.0.0.0:9930\"%; s%^address = \"0.0.0.0:9091\"%address = \"0.0.0.0:9931\"%; s%^address = \"tcp://0.0.0.0:1317\"%address = \"tcp://0.0.0.0:1447\"%" $HOME/$work_dir/config/app.toml

# для 15 ноды
sed -i.bak -e "s%^address = \"0.0.0.0:9090\"%address = \"0.0.0.0:9940\"%; s%^address = \"0.0.0.0:9091\"%address = \"0.0.0.0:9941\"%; s%^address = \"tcp://0.0.0.0:1317\"%address = \"tcp://0.0.0.0:1457\"%" $HOME/$work_dir/config/app.toml

client.toml

# для 2 ноды
sed -i.bak -e "s%^node = \"tcp://localhost:26657\"%node = \"tcp://localhost:36657\"%" $HOME/$work_dir/config/client.toml

# для 3 ноды
sed -i.bak -e "s%^node = \"tcp://localhost:26657\"%node = \"tcp://localhost:46657\"%" $HOME/$work_dir/config/client.toml

# для 4 ноды
sed -i.bak -e "s%^node = \"tcp://localhost:26657\"%node = \"tcp://localhost:56657\"%" $HOME/$work_dir/config/client.toml

# для 5 ноды
sed -i.bak -e "s%^node = \"tcp://localhost:26657\"%node = \"tcp://localhost:60557\"%" $HOME/$work_dir/config/client.toml

# для 6 ноды
sed -i.bak -e "s%^node = \"tcp://localhost:26657\"%node = \"tcp://localhost:60657\"%" $HOME/$work_dir/config/client.toml

# для 7 ноды
sed -i.bak -e "s%^node = \"tcp://localhost:26657\"%node = \"tcp://localhost:60757\"%" $HOME/$work_dir/config/client.toml

# для 8 ноды
sed -i.bak -e "s%^node = \"tcp://localhost:26657\"%node = \"tcp://localhost:60857\"%" $HOME/$work_dir/config/client.toml

# для 9 ноды
sed -i.bak -e "s%^node = \"tcp://localhost:26657\"%node = \"tcp://localhost:60957\"%" $HOME/$work_dir/config/client.toml

# для 10 ноды
sed -i.bak -e "s%^node = \"tcp://localhost:26657\"%node = \"tcp://localhost:61057\"%" $HOME/$work_dir/config/client.toml

# для 11 ноды
sed -i.bak -e "s%^node = \"tcp://localhost:26657\"%node = \"tcp://localhost:61157\"%" $HOME/$work_dir/config/client.toml

# для 12 ноды
sed -i.bak -e "s%^node = \"tcp://localhost:26657\"%node = \"tcp://localhost:61257\"%" $HOME/$work_dir/config/client.toml

# для 13 ноды
sed -i.bak -e "s%^node = \"tcp://localhost:26657\"%node = \"tcp://localhost:61357\"%" $HOME/$work_dir/config/client.toml

# для 14 ноды
sed -i.bak -e "s%^node = \"tcp://localhost:26657\"%node = \"tcp://localhost:61457\"%" $HOME/$work_dir/config/client.toml

# для 15 ноды
sed -i.bak -e "s%^node = \"tcp://localhost:26657\"%node = \"tcp://localhost:61557\"%" $HOME/$work_dir/config/client.toml

После меняем external_address

# для 2 ноды
sed -i.bak -e "s/^external_address *=.*/external_address = \"$external_address:36656\"/" $HOME/$work_dir/config/config.toml

# для 3 ноды
sed -i.bak -e "s/^external_address *=.*/external_address = \"$external_address:46656\"/" $HOME/$work_dir/config/config.toml

# для 4 ноды
sed -i.bak -e "s/^external_address *=.*/external_address = \"$external_address:56656\"/" $HOME/$work_dir/config/config.toml

# для 5 ноды
sed -i.bak -e "s/^external_address *=.*/external_address = \"$external_address:60556\"/" $HOME/$work_dir/config/config.toml

# для 6 ноды
sed -i.bak -e "s/^external_address *=.*/external_address = \"$external_address:60656\"/" $HOME/$work_dir/config/config.toml

# для 7 ноды
sed -i.bak -e "s/^external_address *=.*/external_address = \"$external_address:60756\"/" $HOME/$work_dir/config/config.toml

# для 8 ноды
sed -i.bak -e "s/^external_address *=.*/external_address = \"$external_address:60856\"/" $HOME/$work_dir/config/config.toml

# для 9 ноды
sed -i.bak -e "s/^external_address *=.*/external_address = \"$external_address:60956\"/" $HOME/$work_dir/config/config.toml

# для 10 ноды
sed -i.bak -e "s/^external_address *=.*/external_address = \"$external_address:61056\"/" $HOME/$work_dir/config/config.toml

# для 11 ноды
sed -i.bak -e "s/^external_address *=.*/external_address = \"$external_address:61156\"/" $HOME/$work_dir/config/config.toml

# для 12 ноды
sed -i.bak -e "s/^external_address *=.*/external_address = \"$external_address:61256\"/" $HOME/$work_dir/config/config.toml

# для 13 ноды
sed -i.bak -e "s/^external_address *=.*/external_address = \"$external_address:61356\"/" $HOME/$work_dir/config/config.toml

# для 14 ноды
sed -i.bak -e "s/^external_address *=.*/external_address = \"$external_address:61456\"/" $HOME/$work_dir/config/config.toml

# для 15 ноды
sed -i.bak -e "s/^external_address *=.*/external_address = \"$external_address:61556\"/" $HOME/$work_dir/config/config.toml
# после изменений не забываем перезагрузить ноду
sudo systemctl restart defundd && sudo journalctl -u defundd -f -o cat
Поддержим природу вместе: 0xa7476EC14cD663C742d527113638C77a1631Cc89 cosmos1m2mm7kzvw6m3464h94ryqg8xvr6tyeyyecppnq