Penumbra: installation guide
Penumbra - это полностью приватная PoS сеть и децентрализованный обменник для экосистемы Cosmos. Команда проекта строит полностью защищенную зону в экосистеме Cosmos, которая позволит каждому безопасно совершать транзакции, не сообщая свою личную информацию. Подробную информацию о проекте можно почитать здесь.
В ноябре 2021 года привлекли $4.75M в сид раунде, лид инвестором стал Dragonfly Capital. Interchain Foundation, Lemniscap, Robot Ventures, Volt Capital, Figment, Strangelove Ventures, Informal Systems, ZKValidator также инвестировали в проект.
Обсуждение проекта, как обычно, в дискорде Nodera - https://discord.gg/TmnKznRqnv
Гайд актуален для версии v0.66.0
Website
Discord
Оглавление
- Подготовка сервера
- Установка и запуск pcli
- Создание кошелька
- Запуск pd и tendermint
- Создание валидатора
- Обновление
- Задания
- Полезные команды
Подготовка сервера
На данном этапе минимальные требования к серверу не озвучены, у меня работает без проблем на Hetzner - CPX21.
sudo apt update && sudo apt upgrade -y
Устанавливаем инструменты разработчика и необходимые пакеты
sudo apt install make curl tar wget jq build-essential -y sudo apt install make clang pkg-config libssl-dev -y
# устанавливаем необходимые пакеты sudo apt install curl build-essential gcc make -y # загружаем установочный скрипт Rust curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
Выбираем пункт 1) продолжить установку (по умолчанию).
# активируем среду Rust для текущей оболочки source ~/.profile source ~/.cargo/env
Установка и запуск pcli
Клонируем репозиторий проекта с нодой
git clone https://github.com/penumbra-zone/penumbra
Переходим в папку с проектом, подтягиваем последнюю версию и переключаемся на версию v0.66.0
cd penumbra && git fetch && git checkout v0.66.0 && cargo update
cargo build --release --bin pcli cp $HOME/penumbra/target/release/pcli /usr/local/bin
pcli --version
Создание кошелька
cargo run --quiet --release --bin pcli init soft-kms generate
Сохраняем бэкап кошелька и сид-фразу в надежном месте
$HOME/.local/share/pcli/config.json
Для импорта существующего кошелька используем команду
cargo run --quiet --release --bin pcli init soft-kms import-phrase
cargo run --quiet --release --bin pcli view address 0
В канале #testnet-faucet запрашиваем тестовые токены, введя адрес своего кошелька.
Запуск pd и tendermint
Penumbra использует консенсус тендерминта, поэтому для запуска валидатора нам необходимо скачать
Устанавливаем go, версия 1.19.5
cd wget https://go.dev/dl/go1.19.5.linux-amd64.tar.gz; \ rm -rv /usr/local/go; \ tar -C /usr/local -xzf go1.19.5.linux-amd64.tar.gz && \ rm -v go1.19.5.linux-amd64.tar.gz && \ echo "export PATH=$PATH:/usr/local/go/bin:$HOME/go/bin" >> ~/.bash_profile && \ source ~/.bash_profile && \ go version
cd penumbra cargo build --release --bin pd
Сбрасываем данные и присоединяемся к тестнету
cargo run --bin pd --release -- testnet unsafe-reset-all cargo run --bin pd --release -- testnet join
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
Cоздаем скрин для запуска cometbft
screen -S cometbft
cometbft start --home ~/.penumbra/testnet_data/node0/cometbft
Не обращаем внимание на логи, выходим из скрина при помощи сочетания клавиш Ctrl+A+D (убедитесь, что выбрана английская раскладка клавиатуры)
screen -S pd
cd penumbra cargo run --bin pd --release -- start --home ~/.penumbra/testnet_data/node0/pd
Если все сделано правильно, должна начаться синхронизация.
Ждем окончания синхронизации. Проверить актуальный блок можно командой
cargo run --quiet --release --bin pcli view sync
Важно! Проверку актуального блока лучше делать из основного терминала
Для выхода из скрина pd: Ctrl+A+D
screen -x pd
Создание валидатора
Выполняем команду ниже и копируем данные, отмеченные в зеленном квадрате, в блокнот
cargo run --release --bin pcli validator definition template
Копируем и записываем в блокнот значение value из файла priv_validator_key.json
grep -A3 pub_key ~/.penumbra/testnet_data/node0/cometbft/config/priv_validator_key.json
Удаляем старый и создаем новый файл валидатора
rm -rf validator.toml && nano validator.toml
Далее необходимо выполнить ряд действий:
- Вставляем данные, указанные на скрине выше.
- Изменяем значение value, скопированное из priv_validator_key.json.
- Добавляем имя ноды в параметр "name"
- Добавляем сайт и описание (опционально)
- Параметр "enabled" меняем с false на true
- Параметр "sequence_number" меняем с 0 на 1
Сохраняем изменения комбинацией клавиш Ctrl+X > y> Enter
Загружаем изменения в файл валидатора
cargo run --release --bin pcli -- validator definition upload --file validator.toml
Узнаем адреса кошелька и валидатора командами
#адрес кошелька cargo run --quiet --release --bin pcli view address 0 #адрес валидатора cargo run --release --bin pcli -- validator identity
Создаем переменные с адресом кошелька и валидатора
PENUMBRA_WALLET=<адрес кошелька> PENUMBRA_VALID=<адрес валидатора>
Сохраняем переменные, перезагружаем .bash_profile и проверяем значения переменных
echo "export PENUMBRA_WALLET="${PENUMBRA_WALLET}"" >> $HOME/.bash_profile echo "export PENUMBRA_VALID="${PENUMBRA_VALID}"" >> $HOME/.bash_profile source $HOME/.bash_profile echo -e "\npenumbra_wallet > ${PENUMBRA_WALLET}.\n" echo -e "\npenumbra_valid > ${PENUMBRA_VALID}.\n"
Делегируем токены своему валидатору
cargo run --release --bin pcli -- tx delegate 1000penumbra --to $PENUMBRA_VALID
Проверяем своего валидатора в списке
cargo run --release --bin pcli -- query validator list -i
Важно! Если в дальнейшем вам будет необходимо внести изменения в файл validator.toml, алгоритм действий следующий:
cargo run --release --bin pcli -- validator definition fetch --file validator.toml
2. Вносим необходимые изменения
3. В файле validator.toml изменяем параметр "sequence_number" на n+1, где n - текущее значение (если было "sequence_number": 2, то ставим "sequence_number": 3)
cargo run --release --bin pcli -- validator definition upload --file validator.tomln
Обновление
cd penumbra cargo run --release --bin pcli -- validator definition fetch --file validator.toml
Переходим в папку, обновляем локальный репозиторий, переходим в ветку v0.66.0 и обновляем кошелек
git pull origin git stash git checkout v0.66.0 cargo build --release --bin pcli cargo run --quiet --release --bin pcli view reset cp $HOME/penumbra/target/release/pcli /usr/local/bin pcli --version #pcli 0.66.0
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
Сбрасываем данные и присоединяемся к тестнету
cd $HOME/penumbra cargo run --bin pd --release -- testnet unsafe-reset-all cargo run --bin pd --release -- testnet join
Переходим в скрины и перезапускаем pd и tendermint
screen -x pd
cd penumbra cargo run --bin pd --release -- start --home ~/.penumbra/testnet_data/node0/pd
Выходим из скрина при помощи сочетания клавиш Ctrl+A+D
screen -x cometbft
cometbft start --home ~/.penumbra/testnet_data/node0/cometbft
Ждем окончания синхронизации и выходим из скрина при помощи сочетания клавиш Ctrl+A+D
Копируем и записываем в блокнот значение value из файла priv_validator_key.json
grep -A3 pub_key ~/.penumbra/testnet_data/node0/cometbft/config/priv_validator_key.json
Важно! Если вы не участвовали в 42-м и последующих тестнетах выполняем инструкции ниже
Сохраняем предыдущую версию файла валидатора
mkdir penumbra_backup && cp validator.json $HOME/penumbra/penumbra_backup/validator_backup.toml
Выполняем команду ниже и копируем данные, отмеченные в зеленном квадрате, в блокнот
cargo run --release --bin pcli validator definition template
Удаляем старый и создаем новый файл валидатора
rm -rf validator.json && nano validator.toml
nano validator.toml
- Изменяем значение value, скопированное из priv_validator_key.json.
- Параметр "sequence_number" меняем с 0 на 1
Загружаем изменения в файл валидатора
cargo run --release --bin pcli -- validator definition upload --file validator.toml
Делегируем токены своему валидатору
cargo run --release --bin pcli -- tx delegate 1000penumbra --to $PENUMBRA_VALID
Проверяем своего валидатора в списке
cargo run --release --bin pcli -- query validator list -i
Задания
После получения токенов, начинаем тестировать отправку токенов на другие кошельки (можно взять адреса в канале #testnet-faucet) следующей командой
cargo run --quiet --release --bin pcli tx send <amount>penumbra --to <recipient address> # например отправим 10 токенов на адрес penumbrav2t... cargo run --quiet --release --bin pcli tx send 10penumbra --to penumbrav2t164kgxd6el8elnd9jqp7dz5qjn4qayh8aen46y02nhu559cq84q0m3nzncxf42lquk2mhkwunke3cqq6gz9cvd7nemxufccl8wczze8yfn3545juyt0t54rgttmfcfdylgs7uut
Полезные команды
cargo run --quiet --release --bin pcli view address
cargo run --quiet --release --bin pcli view balance
cargo run --quiet --release --bin pcli view sync