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 и др.
Website
Discord
Оглавление
- Подготовка сервера
- Установка ноды
- Создание генезис валидатора
- Создание кошелька и валидатора
- Обновление v0.28.0
- Soft update v0.23.2
- Удаление ноды
- Полезные команды
Подготовка сервера
Нода довольно таки прожорливая, я бы не советовал ставить, если у вас меньше 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
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
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
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 --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
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
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"