penumbra testnet guide
Здравствуйте! Сегодня будем поднимать ноду проекта penumbra. Проект у нас на tendermint, реализован на Rust, соответственно нам необходимо предустановить Rust и Golang.
sudo apt update && sudo apt upgrade
sudo apt-get install screen curl tar git make clang libssl-dev build-essential pkg-config jq -y
C wget -O go1.18.1.linux-amd64.tar.gz https://golang.org/dl/go1.18.1.linux-amd64.tar.gz rm -rf /usr/local/go && sudo tar -C /usr/local -xzf go1.18.1.linux-amd64.tar.gz && rm go1.18.1.linux-amd64.tar.gz echo 'export GOROOT=/usr/local/go' >> $HOME/.bash_profile echo 'export GOPATH=$HOME/go' >> $HOME/.bash_profile echo 'export GO111MODULE=on' >> $HOME/.bash_profile echo 'export PATH=$PATH:/usr/local/go/bin:$HOME/go/bin' >> $HOME/.bash_profile && . $HOME/.bash_profile go version
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
Current installation options:
default host triple: x86_64-unknown-linux-gnu
default toolchain: stable (default)
profile: default
modify PATH variable: yes
1) Proceed with installation (default)
2) Customize installation
3) Cancel installation
>1source ~/.cargo/env
Теперь скачиваем и устанавливаем бинарник:
git clone https://github.com/penumbra-zone/penumbra
cd penumbra && git fetch && git checkout 016-pandia && cargo update
cargo build --release --bin pcli
cargo build --release --bin pd
Восстановление/генерация кошелька
Если у вас уже есть кошелек, привязываем его таким образом:
cargo run --quiet --release --bin pcli wallet import xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
где x - seed вашего кошелька
Далее проверяем что все гладко:
cargo run --quiet --release --bin pcli addr list
Index Label Address 0 Default penumbrav01t1...
Если кошелька нет, то генерируем:
cargo run --quiet --release --bin pcli wallet generate
Saving wallet to /home/$USER/.local/share/pcli/penumbra_wallet.json Saving backup wallet to /home/$USER/.local/share/penumbra-testnet-archive/penumbra-euporie/.../penumbra_wallet.json
Это бекап вашего кошелька, сохраните в надежное место.
Далее идем в дискорд, и просим тестовой валюты раз в сутки в ветке #testnet-faucet, вводим туда адрес кошелька penumbrav0t1(...)
git clone https://github.com/tendermint/tendermint.git cd tendermint
make install
tendermint init full
Подтягиваем конфиги tendermint:
curl -s http://testnet.penumbra.zone:26657/genesis | jq ".result.genesis" > $HOME/.tendermint/config/genesis.json
curl -s https://raw.githubusercontent.com/penumbra-zone/penumbra/main/testnets/tm_config_template.toml > $HOME/.tendermint/config/config.toml
curl -s http://testnet.penumbra.zone:26657/status | jq ".result.node_info.id"
В выводе видим что-то вроде этого:
"34124dd9c56ede72e1a2aa28ff47f8ba99fd7489"
nano $HOME/.tendermint/config/config.toml
Находим строку bootstrap-peers, и вписываем туда Node_ID из вывода выше в формате:
bootstrap-peers = "NODE_ID@testnet.penumbra.zone:26656"
Сохраняем конфиг Ctrl+S, Ctrl+C
screen -dmS pclilogs log export RUST_LOG="warn,pd=debug,penumbra=debug,jmt=info" && cargo run --release --bin pd start --rocks-path $HOME/.rocksdb
tendermint start
Создаем шаблон конфига валидатора
cargo run --release --bin pcli — validator template-definition --file validator.json
сat validator.json
{
"identity_key": "penumbravalid1g2huds8klwypzczfgx67j7zp6ntq2m5fxmctkf7ja96zn49d6s9qz72hu3",
"consensus_key": "Fodjg0m1kF/6uzcAZpRcLJswGf3EeNShLP2A+UCz8lw=",
"name": "",
"website": "",
"description": "",
"enabled": false,
"funding_streams": [
{
"address": "penumbrav1t1mw8270qtpgjy628fg97p2px45e860jtlw0nl3w5y7vq67qx697py9t8ppp3mhwfxv8kegg8wuny64nf60z966krx85cqznjpshqtngffpwnywtzqjklkg3qh7anxk368ywac9l",
"rate_bps": 100
}
],
"sequence_number": 0
}В нем нужно заменить soft-строки, вроде name, website и так далее
Строка enabled позволяет нам включать и выключать валидатора, как пишут разработчики, если вы знаете, что ваш валидатор будет какое-то время не активен, поставьте значение false, и он не попадет в тюрьму, соответственно включить его можно значением true.
Нам необходимо вписать актуальный consensus_key, найти мы его можем командой
grep -A3 pub_key ~/.tendermint/config/priv_validator_key.json | grep "value"
"value": "xxxxxxxxxxxxxxxxxxxxxxx"
- где x нам нужно вписать в строку "consensus_key": "....."
Выгружаем в chain нашего валидатора, затем проверяем список, ищем своего, и хорошенько запоминаем identity key:
cargo run --release --bin pcli — validator upload-definition --file validator.json
cargo run --release --bin pcli — stake list-validators -i
Делегируем токены, которые мы получили в дискорде на identity key своего валидатора
cargo run --release --bin pcli — stake delegate 99penumbra --to penumbravalid(...)
Кстати, проверим балланс нашего кошелька, ведь нам отдали в дискорде 100, а делегировали мы сейчас 99
cargo run --release --bin pcli — balance