Guides
April 2, 2023

Namada: Installation Guide

Namada - это Proof-of-Stake L1-проект для межцепочечной конфиденциальности активов. Протокол Namada фокусируется на подмножестве компонентов, что позволяет осуществлять защищенные переводы для любого вида токенов, независимо от платформы, на которой они были созданы. Используя Namada, вы можете перевести свои ETH, DAI или любой другой актив (NFT из Ethereum, ATOM, OSMO и т.д.) и отправить их с задержкой транзакции в несколько секунд и практически нулевой комиссией.

Namada - это первый фрактальный экземпляр Anoma и первый шаг на пути к видению многоцепочечного протокола, предусматривающего однородную архитектуру и разнородную безопасность.

Anoma собрали 32,8M USD инвестиций в двух раундах, который возглавил Polychain Capital. На борту также Electric Capital, Coinbase Ventures, FBG Capital, CMS Holdings и др.

DYOR:

Website
Discord
Twitter

Оглавление


Подготовка сервера

Оглавление

Нода довольно таки прожорливая, я бы не советовал ставить, если у вас меньше 300GB свободного места. Официальные требования: 4 CPU, 8 GB RAM, 1TB SSD.

Нода использует следующие порты: 26656, 26657, 26658.

В Namada в настоящее время не стоит менять порты на кастомные.

Перед установкой убедитесь, что у вас на сервере больше не стоит нод, использующих консенсус тендерминта (все космофорки, Penumbra и т.д.) на дефолтных портах - 26ххх.

Обновляем пакеты

sudo apt update && sudo apt upgrade -y

Устанавливаем инструменты разработчика и необходимые пакеты

sudo apt install curl tar wget clang libudev-dev pkg-config libssl-dev libclang-dev jq build-essential bsdmainutils git make ncdu gcc git jq chrony liblz4-tool uidmap dbus-user-session -y

Устанавливаем GO

wget https://go.dev/dl/go1.20.5.linux-amd64.tar.gz; \
rm -rv /usr/local/go; \
tar -C /usr/local -xzf go1.20.5.linux-amd64.tar.gz && \
rm -v go1.20.5.linux-amd64.tar.gz && \
echo "export PATH=$PATH:/usr/local/go/bin:$HOME/go/bin" >> ~/.bash_profile && \
source ~/.bash_profile && \
go version

Устанавливаем Rust

cd $HOME
sudo curl https://sh.rustup.rs -sSf | sh -s -- -y
. $HOME/.cargo/env
curl https://deb.nodesource.com/setup_17.x | sudo bash
sudo apt install cargo nodejs -y < "/dev/null"
cargo --version

Устанавливаем protoc

apt install unzip && apt -y remove protobuf-compiler
cd && mkdir protoc && cd protoc
wget https://github.com/protocolbuffers/protobuf/releases/download/v23.0/protoc-23.0-linux-x86_64.zip
unzip protoc-23.0-linux-x86_64.zip
cp bin/protoc /usr/local/bin/

Установка ноды

Оглавление

Создаем переменные

VALIDATOR_ALIAS=вводим свое имя
CHAIN_ID_NAMADA=shielded-expedition.b40d8e9055
WALLET_NAMADA=wallet
BASE_DIR_NAMADA=$HOME/.local/share/namada

Сохраняем переменные, перезагружаем .bash_profile и проверяем значения переменных

echo "export VALIDATOR_ALIAS="${VALIDATOR_ALIAS}"" >> $HOME/.bash_profile
echo "export CHAIN_ID_NAMADA="${CHAIN_ID_NAMADA}"" >> $HOME/.bash_profile
echo "export WALLET_NAMADA="${WALLET_NAMADA}"" >> $HOME/.bash_profile
echo "export BASE_DIR="${BASE_DIR_NAMADA}"" >> $HOME/.bash_profile

source $HOME/.bash_profile

echo -e "\nvalidator_alias > ${VALIDATOR_ALIAS}.\n"
echo -e "\nchain_id_namada > ${CHAIN_ID_NAMADA}.\n"
echo -e "\nwallet_namada > ${WALLET_NAMADA}.\n"
echo -e "\nbase_dir_namada > ${BASE_DIR_NAMADA}.\n"

Создаем директорию под базу данных

mkdir $HOME/.local/share/namada

Клонируем репозиторий Namada, переходим в папку и собираем бинарные файлы

cd $HOME
git clone https://github.com/anoma/namada
cd namada
git checkout v0.31.0
cp -r $HOME/protoc/include/google $HOME/namada/proto/
make build-release
cp "$HOME/namada/target/release/namada" /usr/local/bin/namada && cp "$HOME/namada/target/release/namadac" /usr/local/bin/namadac && cp "$HOME/namada/target/release/namadan" /usr/local/bin/namadan && cp "$HOME/namada/target/release/namadaw" /usr/local/bin/namadaw

Проверяем версию Namada

namada --version
#Namada v0.23.0

Клонируем репозиторий Comebft, переходим в папку и собираем бинарные файлы

cd $HOME
git clone https://github.com/cometbft/cometbft.git
cd cometbft
git checkout v0.37.2
make install
cp $HOME/go/bin/cometbft /usr/local/bin/cometbft

Проверяем версию Comebft

cometbft version
#0.37.2+fe45483be

Создание генезис валидатора

Оглавление

Создаем ключи валидатора

namadaw --pre-genesis key gen --alias $VALIDATOR_ALIAS
TX_FILE_PATH="$HOME/.local/share/namada/pre-genesis/transactions.toml"
namadac utils init-genesis-established-account --path $TX_FILE_PATH --aliases $VALIDATOR_ALIAS 

Записываем адрес и вносим его в качестве переменной

ESTABLISHED_ACCOUNT_ADDRESS="ваш established_account" 

Создаем переменные для почты и IP

EMAIL="your_email" 
SELF_BOND_AMOUNT=1000000 
IP="your_ip:26656" 

Инициализируем валидатора

namadac utils init-genesis-validator --address $ESTABLISHED_ACCOUNT_ADDRESS --alias $VALIDATOR_ALIAS --net-address $IP --commission-rate 0.05 --max-commission-rate-change 0.01 --self-bond-amount $SELF_BOND_AMOUNT --email $EMAIL --path $TX_FILE_PATH 
namadac utils sign-genesis-txs --path $TX_FILE_PATH --output $HOME/.local/share/namada/pre-genesis/signed-transactions.toml --alias $VALIDATOR_ALIAS

Скачиваем файл валидатора на компьютер ($HOME/.local/share/namada/pre-genesis/signed-transactions.toml) и переименовываем в формат "ваш_моникер.toml"

Переходим в гитхаб: https://github.com/anoma/namada-testnets/

Создаем форк репозитория

Переходим в папку namada-public-testnet-15 и загружаем файл валидатора

Возвращаемся в родительскую дирректорию и нажимаем на свой коммит

Нажимаем Create pull request. Если вы были в генезисе ранее называйте PR "Update <ваш_моникер>.toml" и добавляйте в описание ссылки на предыдущие PR, если вы подаетесь в первый раз, то называйте "Create <ваш_моникер>.toml"

На этом пока все. Ждем анонса чейн ID.

Присоединяемся в сети

cd $HOME
namada client utils join-network --chain-id $CHAIN_ID_NAMADA

Важно! Если вы являетесь генезис валидатором, то добавляем флаг --genesis-validator $VALIDATOR_ALIAS

cd $HOME
namada client utils join-network --chain-id $CHAIN_ID_NAMADA --genesis-validator $VALIDATOR_ALIAS

Создаем сервисный файл

printf "[Unit]
Description=namada
After=network-online.target
[Service]
User=root
WorkingDirectory=/root/.local/share/namada
Environment=NAMADA_CMT_STDOUT=true
Environment=TM_LOG_LEVEL="p2p:none,pex:error" 
ExecStart=/usr/local/bin/namada node ledger run
StandardOutput=syslog
StandardError=syslog
Restart=always
RestartSec=10
LimitNOFILE=65535
[Install]
WantedBy=multi-user.target" > /etc/systemd/system/namadad.service

Запускаем сервис и проверяем логи

sudo systemctl daemon-reload && \
sudo systemctl enable namadad && \
sudo systemctl restart namadad && \
sudo journalctl -u namadad -f -o cat

Ждем окончания синхронизации, проверить синхронизации можно командой

curl -s localhost:26657/status

Если вывод показывает false, синхронизация завершена.

P.S По непонятной для меня причине, параметр "catching_up" иногда отображает false с самого начала синхронизации. В таком случае ждем, когда последний блок (параметр - "latest_block_height") будет совпадать с показателем в эксплорере - https://namada.explorers.guru/blocks


Создание кошелька и валидатора

Оглавление

Создаем кошелек

cd $HOME
namada wallet address gen --alias $WALLET_NAMADA --unsafe-dont-encrypt

Запрашиваем токены с крана

namada client transfer --source faucet --target $WALLET_NAMADA --token NAM \
--amount 1000 --signer $WALLET_NAMADA

Ждем окончания PoW расчетов. Данный процесс занимает от 5 секунд до нескольких минут.

Успешное завершение процесса выглядит следующим образом

Инициализируем валидатора

namada client init-validator --alias $VALIDATOR_ALIAS --source $WALLET_NAMADA \
--commission-rate 0.05 --max-commission-rate-change 0.01 --signer $WALLET_NAMADA \
--gas-amount 100000000 --gas-token NAM --scheme ed25519 --unsafe-dont-encrypt

При успешной инициализации вывод покажет вам информацию о вашем валидаторе: адрес, аккаунт и ключ консенсуса.

Важно!! Сохраняем в надежном месте приватные ключи:

  • Ключ кошелька: /root/.local/share/namada/public-testnet-xxxxxx/wallet.toml
  • Ключ валидатора: /root/.local/share/namada/public-testnet-xxxxx/tendermint/config/priv_validator_key.json

Для создания валидатора нам понадобится 1000 токенов + комиссия. Так как кран дает за один раз только 1000 токенов, запрашиваем два раза

namada client transfer --token NAM --amount 1000 --source faucet \
--target $VALIDATOR_ALIAS --signer $VALIDATOR_ALIAS

Запрашиваем токены еще раз

namada client transfer --token NAM --amount 1000 --source faucet \
--target $VALIDATOR_ALIAS --signer $VALIDATOR_ALIAS

Проверяем баланс

namada client balance --owner $VALIDATOR_ALIAS --token NAM
#NAM: 2000

Перед тем как застейкать токены валидатору, нужно подождать 2 эпохи. Проверить текущую эпоху можно командой

namada client epoch

По прошествии 2 эпох (около 30 минут), стейкаем токены валидатору

namada client bond --validator $VALIDATOR_ALIAS --amount 1800 \
--signer $VALIDATOR_ALIAS --source $VALIDATOR_ALIAS

Ждем еще 2 эпохи и проверяем застейкались ли токены

namada client bonded-stake --validator $VALIDATOR_ALIAS
namada client bonds --validator $VALIDATOR_ALIAS

P.S. Все имеющиеся на данный момент эксплореры работают нестабильно


Обновление v0.28.0

Оглавление

Клонируем репозиторий Namada, переходим в папку и собираем бинарные файлы

cd $HOME/namada
git fetch && git checkout v0.28.0
make build-release

! Если при предыдущих обновлениях вы устанавливали comebft, то пропускаем этот блок

С версии v0.17.5 используется консенсус Comebft

Клонируем репозиторий Comebft, переходим в папку и собираем бинарные файлы

cd $HOME
git clone https://github.com/cometbft/cometbft.git
cd cometbft
git checkout v0.37.2
make install
cp $HOME/go/bin/cometbft /usr/local/bin/cometbft

Проверяем версию Comebft

cometbft version
#0.37.2+fe45483be

Останавливаем ноду и заменяем исполняемые файлы

cd $HOME 
sudo systemctl stop namadad && sudo systemctl disable namadad

rm /etc/systemd/system/namadad.service
rm /usr/local/bin/namada /usr/local/bin/namadac /usr/local/bin/namadan /usr/local/bin/namadaw

cp "$HOME/namada/target/release/namada" /usr/local/bin/namada
cp "$HOME/namada/target/release/namadac" /usr/local/bin/namadac
cp "$HOME/namada/target/release/namadan" /usr/local/bin/namadan
cp "$HOME/namada/target/release/namadaw" /usr/local/bin/namadaw

Проверяем версию

namada --version
#Namada v0.28.0

Удаляем предыдущие базы данных

rm -r $HOME/.namada/public-testnet-3.0.81edd4d6eb6
rm $HOME/.namada/public-testnet-3.0.81edd4d6eb6.toml
rm -r $HOME/.namada/public-testnet-4.0.16a35d789f4
rm $HOME/.namada/public-testnet-4.0.16a35d789f4.toml
rm -r $HOME/.namada/public-testnet-5.0.d25aa64ace6
rm $HOME/.namada/public-testnet-5.0.d25aa64ace6.toml
rm -r $HOME/.namada/public-testnet-6.0.a0266444b06
rm $HOME/.namada/public-testnet-6.0.a0266444b06.toml
rm -r $HOME/.namada/public-testnet-7.0.3c5a38dc983
rm $HOME/.namada/public-testnet-7.0.3c5a38dc983.toml
rm -r $HOME/.local/share/namada/public-testnet-8.0.b92ef72b820
rm $HOME/.local/share/namada/public-testnet-8.0.b92ef72b820.toml
rm -r $HOME/.local/share/namada/public-testnet-9.0.5aa315d1a22
rm $HOME/.local/share/namada/public-testnet-9.0.5aa315d1a22.toml
rm -r $HOME/.local/share/namada/public-testnet-10.3718993c3648
rm $HOME/.local/share/namada/public-testnet-10.3718993c3648.toml
rm -r $HOME/.local/share/namada/public-testnet-11.3aaeae0d49ea
rm $HOME/.local/share/namada/public-testnet-11.3aaeae0d49ea.toml
rm -r $HOME/.local/share/namada/public-testnet-12.fedec12f3428
rm $HOME/.local/share/namada/public-testnet-12.fedec12f3428.toml
rm -r $HOME/.local/share/namada/public-testnet-13.facd514666d5
rm $HOME/.local/share/namada/public-testnet-13.facd514666d5.toml
rm -r $HOME/.local/share/namada/public-testnet-14.5d79b6958580
rm $HOME/.local/share/namada/public-testnet-14.5d79b6958580.toml
rm $HOME/.namada/global-config.toml
rm $HOME/.local/share/namada/global-config.toml

Создаем генезис валидатора

Инструкция тут

На этом пока все. Ждем анонса чейн ID.

Создаем переменные

NEW_CHAIN_ID_NAMADA=<будет анонсирован позже>

Сохраняем переменные, перезагружаем .bash_profile и проверяем значения переменных

echo "export NEW_CHAIN_ID_NAMADA="${NEW_CHAIN_ID_NAMADA}"" >> $HOME/.bash_profile

source $HOME/.bash_profile

echo -e "\nnew_chain_id_namada > ${NEW_CHAIN_ID_NAMADA}.\n"

Вносим изменения в сервисный файл

printf "[Unit]
Description=namada
After=network-online.target
[Service]
User=root
WorkingDirectory=/root/.local/share/namada
Environment=NAMADA_CMT_STDOUT=true
Environment=TM_LOG_LEVEL="p2p:none,pex:error" 
ExecStart=/usr/local/bin/namada node ledger run
StandardOutput=syslog
StandardError=syslog
Restart=always
RestartSec=10
LimitNOFILE=65535
[Install]
WantedBy=multi-user.target" > /etc/systemd/system/namadad.service

Если вы являетесь генезис валидатором выполняете только данные действия

namada client utils join-network --chain-id $NEW_CHAIN_ID_NAMADA --genesis-validator $VALIDATOR_ALIAS

Вводим пароль

sudo systemctl daemon-reload && \
sudo systemctl restart namadad && \
sudo journalctl -u namadad -f -o cat

#[2023-02-22] Genesis time is in the future. Sleeping until then... module=main genTime="******"

Присоединяемся к сети

cd $HOME
namada client utils join-network --chain-id $NEW_CHAIN_ID_NAMADA

Запускаем сервис и проверяем логи

sudo systemctl daemon-reload && \
sudo systemctl restart namadad && \
sudo journalctl -u namadad -f -o cat

Soft update v0.23.2 (не актуально)

Оглавление

Клонируем репозиторий Namada, переходим в папку и собираем бинарные файлы

cd $HOME/namada
git fetch && git checkout v0.23.2
make build-release
sudo mv $HOME/namada/target/release/namada* /usr/local/bin/

Проверяем версию

namada --version 
#Namada v0.23.2

Перезапускаем ноду и проверяем логи

sudo systemctl restart namadad && sudo journalctl -u namadad -f -o cat

Удаление ноды

Оглавление

Сохраняем в надежном месте приватные ключи:

  • Ключ кошелька: $HOME/.namada/public-testnet-xxxxxx/wallet.toml
  • Ключ валидатора: $HOME/.namada/public-testnet-xxxxx/tendermint/config/priv_validator_key.json

Для удаления ноды используйте следующие команды

sudo systemctl stop namadad
sudo systemctl disable namadad
rm -rf $(which namadad)
rm /usr/local/bin/namada /usr/local/bin/namadac /usr/local/bin/namadan /usr/local/bin/namadaw
rm -rf $HOME/.namada* 
rm -rf $HOME/namada 
rm -rf /etc/systemd/system/namadad.service
rm -rf $HOME/tendermint
sudo systemctl daemon-reload

Полезные команды

Оглавление

Рестарт ноды

sudo systemctl restart namadad

Проверка логов

sudo journalctl -u namadad -f -o cat

Узнать адрес кошелька

RAW_ADDRESS=`cat "$HOME/.namada/$CHAIN_ID_NAMADA/wallet.toml" | grep address`
WALLET_ADDRESS=$(echo -e $RAW_ADDRESS | sed 's|.*=||' | sed -e 's/^ "//' | sed -e 's/"$//')
echo "export WALLET_ADDRESS=$WALLET_ADDRESS" >> ~/.bash_profile
source ~/.bash_profile
echo -e " YOUR WALLET ADDRESS: $WALLET_ADDRESS"

Nodera

Telegram | Discord | Twitter