Guides / Instructions how to run a node
September 2, 2022

Penumbra запустила свой 28ой тестнет под названием Harpalyke (По моему, очень даже мелодично - Харпалюке)

Как написано в твиттере: "A fully private, cross-chain proof-of-stake network and decentralized exchange for the Cosmos and beyond."

Penumbra Twitter

Penubra Discord

Penubra официальный сайт

Приступим к установке ноды:

Итак, первое что нам нужно сделать - это обзавестись серваком. Настаивать не буду, но лично я использовал DigitalOcean и Hetzner.

4 CPU x 8 GB RAM x 200 GB SSD - Ubuntu 20.04 - Ставил вот на такой сервер.

1. Обновляемся:
sudo apt update && sudo apt upgrade -y
2. Устанавливаем дополнительные пакеты:
sudo apt install make curl tar wget clang pkg-config libssl-dev jq build-essential -y
3. Устанавливаем Rust (потом нужно будет нажать 1)
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
source ~/.cargo/env
4. Клонируем репозиторий
rm -rf penumbra 
git clone https://github.com/penumbra-zone/penumbra 
cd penumbra
5. Чтобы установить pcli, совместимую с текущей тестовой сетью, переходим в папку Penumbra, извлекаем последнюю версию из репозитория и проверяем последний тег для текущей тестовой сети:
git fetch && git checkout 028-harpalyke && cargo update
6. Переходим непосредственно к установке pcli
cargo build --release --bin pcli
7. Далее создаём новый кошелёк и копируем мнемонику.
cargo run --quiet --release --bin pcli keys generate
8. Тут же сразу глядим какой адрес нам присвоили и тоже его сохраняем:
cargo run --quiet --release --bin pcli view address
9. Далее переходим в Discord и в разделе testnet-faucet просим нам отсыпать монет. Просто кидаем адрес кошелька и нам переводят 50 монет.
10. Обновляем наш pcli:
git fetch && git checkout 028-harpalyke && cargo update
11. И ещё разок выстраиваем pcli:
cargo build --release --bin pcli
12. И ресетируем данные просмотра:
cargo run --quiet --release --bin pcli view reset
13. Получив свои первые токены, вы можете отсканировать цепочку, чтобы импортировать их в свой локальный кошелек (при первом запуске это может занять несколько минут):
cargo run --quiet --release --bin pcli view sync
14. А вот теперь можно позыркать наш баланс:
cargo run --quiet --release --bin pcli view balance

Раз уж мы уже при баблишке, предлагаю нам перейти к созданию валидатора

Ещё один интересный момент. Есть одно авторитетное мнение, что начать нужно с запуска тендерминта, а потом уже перейти к пд. В любом случае..будем поглядеть.

1. Устанавливаем pd.

pd является частью того же репозитория, что и pcli, поэтому следуйте этим инструкциям, чтобы клонировать репозиторий и установить зависимости.

Вам может понадобиться установить некоторые дополнительные пакеты для сборки pd, в зависимости от вашего дистрибутива. Для базовой установки Ubuntu вы можете запустить:

Большое огроменнешее спасибо очень доброму и умному человеку из дискорда tRDM#2598, у которого я урал один, а может даже и два гайда. Вот именно он мне всё и рассказал и обьяснил. От души братуха спасибо тебе. Больше у тебя не буду гайды красть. Но это не точно.

sudo apt-get install clang
cargo build --release --bin pd

2. Ресетимся:

cargo run --bin pd --release -- testnet unsafe-reset-all
cargo run --bin pd --release -- testnet join
Устанавливаем тендерминт
cd penumbra
rm -rf tendermint
git clone https://github.com/tendermint/tendermint.git && cd tendermint
git checkout v0.35.9
make install
tendermint version
export RUST_LOG="warn,pd=debug,penumbra=debug"
Создаём скрины
screen -S tendermint
В этом скрине запускаем тендерминт
tendermint start --home ~/.penumbra/testnet_data/node0/tendermint

Ctrl+A+D - выход с скрина

Тут у меня это сочетание клавишь не отрабатывает, я просто открываю ещё одно новое окно терминала и залажу ещё раз на свой сервер в папку пенумбры.

cd penumbra
Аналогичным образом создаём скрин для pd
screen -S pd
cargo run --bin pd --release -- start --home ~/.penumbra/testnetdata/node0/pd

А вот тут отработало Ctrl+A+D.

Итак у нас два окна, в одном мы можем поглядеть на тендерминт а в другом мы будем дальше по клаве клацать.

screen -x имя терминала - переключится на скрин screen -ls - просмотреть список скринов
Завершение Screen Если по какой-то причине сессия screen перестает отвечать, можно завершить ее. Для этого нужно подключиться к нужной сессии, затем нажать Ctrl + A и ввести команду «:quit».

Подробнее почитать про работу со скринами можно тут: Клац

После запуска вашей ноды, вы теперь должны участвовать в сети как полный узел. Однако ваш валидатор еще не будет виден в цепочке, так как определение еще не загружено.

Определение валидатора содержит поля, определяющие метаданные, касающиеся вашего валидатора, а также потоки финансирования, которые в Penumbra являются аналогом комиссий валидатора.

Корнем личности валидатора является его идентификационный ключ. В настоящее время pcli повторно использует ключ авторизации расходов в любом активном кошельке в качестве ключа идентификации валидатора. Этот ключ используется для подписи определений валидатора, которые обновляют конфигурацию валидатора.

Я хз как это нормально на русский перевести. Брал инфу с официального гайда.

6. Создание тех самых определений:
cargo run --release --bin pcli -- validator definition template --file validator.json
7. Далее открываем наш validator.json и глядим, что у нас там показывает:

Выглядит это примерно таким образом:

$ cargo run --release --bin pcli -- validator definition template --file validator.json
$ cat 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
}

Так, пока оставляем этот файл в покое. Я когда устанавливал свою ноду, столкнулся с одним нюансом который мы сейчас будем устранять. Во первых - в строчке "enabled": стоит false. Должны будем поменять на true.

А во вторых в строчке "consensus_key": "Fodjg0m1kF/6uzcAZpRcLJswGf3EeNShLP2A+UCz8lw=", - тоже залипуха, которую нужно перепроверить и исправить.

8. Пишем следующее:
grep -A3 pub_key ~/.penumbra/testnet_data/node0/tendermint/config/priv_validator_key.json

И тут мы видим, наш настоящий "consensus_key". Выглядить это должно примерно вот так:

"pub_key": {
"type": "tendermint/PubKeyEd25519",
"value": "Fodjg0m1kF/6uzcAZpRcLJswGf3EeNShLP2A+UCz8lw="
}

Далее удобней всего ручками залезть в папку penumbra, отыскать там наш файл с названием validator.json, и исправить всё что нам не нравится и дописать дополнительную информацию про нашу ноду.

А, и ещё, забыл сказать, что потребуется "sequence_number": изменить на 1.
9. Загружаем наши определения:
cargo run --release --bin pcli -- validator definition upload --file validator.json
cargo run --release --bin pcli -- query validator list -i
10. Теперь нужно делегировать нашему валидатору денег. Глядим какой у него адрес:
cargo run --release --bin pcli -- validator identity
11. И скидываем ему 40 монет. Адрес только не завтыкайте на свой поменять.
cargo run --release --bin pcli -- tx delegate 40penumbra --to penumbravalid1r2yk0x56duwe483chfevtfvlwukgp4wtta0u56vxwgzc8h3q4qgs7qkhv2
И тут я столкнулся со следующей ошибкой:
Решением этой проблемы будет:
cargo run --release --bin pcli tx sweep

12. Глядим что у нас в кошельке осталось. Прибегнем к несложным математическим вычислениям и в теории у нас должно остаться ровно 10 монет.

cargo run --release --bin pcli view balance
13. Если вдруг удумаете что то ещё менять в файле validator.json, то сначала извлеките существующее определение валидатора из цепочки:
cargo run --release --bin pcli -- validator definition fetch --file validator.json
14. Затем внесите необходимые изменения и обязательно увеличьте значение sequence_number как минимум на 1! sequence_number — это уникальный увеличивающийся идентификатор версии определения валидатора.
После обновления определения валидатора вы можете загрузить его снова, чтобы обновить метаданные валидатора в сети:
cargo run --release --bin pcli -- validator definition upload --file validator.json
А так этой командой мы можем всегда поглядеть на список валидаторов:
cargo run --release --bin pcli -- query validator list -i

Тут можно запалить красивый информативный сайт: (http://penumbra.zpoken.io/)

Тут можно глянуть всех активных и не очень валидаторов: (http://penumbra.zpoken.io/validators)

А тут можно глянуть сколько блоком мы пропустили: (https://testnet.penumbra.zone/d/YT0tG3X7z/penumbra?orgId=1&from=now-5m&to=now&viewPanel=12)

Должно быть вот так!

Если вот так, как ниже на картинке - то очевидно вы где то дали ебака:

Ну вот и всё. Не самая приятная нода для установки, но мы справились.

С вами был Yoda. До скорых встреч.

Yoda's Nodes Telegram

Yoda's Nodes Youtube

Yoda's Nodes Twitter

Выражаю огромнейшую благодарность, признание, вечную любовь и моё почтение мистеру tRDM#2598. Ты лучший. Ванлов

Nodera founder

https://nodera.org/

https://discord.gg/TmnKznRqnv