ARCHIVE
April 23, 2022

Penumbra - тестовая сеть Philophrosyne

Важное уточнение — команда не планирует никаких вознаграждений за тестовую сеть - https://discord.com/channels/824484045370818580/824484046335246348/960393830597799956

Обновление

cd penumbra && git pull
git checkout 008-philophrosyne && cargo update
cargo build --release --bin pcli
# После обновления сбросьте кошелек
cargo run --release --bin pcli wallet reset

Установка на новом сервере

0. Берем недорогой сервер (к примеру cpx21 - 2/4/40)

1. Обновляем репозитории и устанавливаем необходимое ПО

sudo apt update && sudo apt upgrade -y
sudo apt install make clang pkg-config libssl-dev build-essential tmux -y

2. Устанавливаем rust

curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

# press 1

source ~/.cargo/env 

3. Устанавливаем ноду

git clone https://github.com/penumbra-zone/penumbra
cd penumbra && git checkout 008-philophrosyne && cargo update
cargo build --release --bin pcli

4. Генерируем новый кошелек или восстанавливаем ранее созданный. После сохраняем penumbra_wallet.json из /root/.local/share/pcli/

# Создать новый кошелек
cargo run --quiet --release --bin pcli wallet generate

# Экспортировать кошелек
cargo run --quiet --release --bin pcli wallet export

# Импортировать кошелек
cargo run --quiet --release --bin pcli wallet import <seed>

Penumbra позволяет создавать произвольное количество общедоступных адресов, которые соответствуют вашему основному кошельку

# Добавляем к основному кошельку новые "подкошельки" (при желании)
cargo run --quiet --release --bin pcli addr new <new_name_wallet>

# Смотрим список кошельков
cargo run --quiet --release --bin pcli addr list

При восстановлении всех подкошельков необходимо помимо импорта seed основного кошелька выполнить команды pcli addr new <new_name_wallet> для восстановления всех подкошельков, что детерминированно сгенерирует тот же адрес, что и раньше. В настоящее время нет механизма для восстановления из сети информации о том, какие адреса вы использовали, но это должно быть решено в будущем

5. Включаем логи

export RUST_LOG=info

6. Cинхронизируемся

cargo run --quiet --release --bin pcli sync

7. Просим тестовые токены в дискорде в канале #testnet-faucet

# Проверяем общий баланс
cargo run --quiet --release --bin pcli balance

# Проверяем баланс всех кошельков по отдельности
cargo run --quiet --release --bin pcli balance -b

8. Отправляем транзакции

Так как кошельков в Penumbra можно создать любое количество и все они будут привязаны к одному json, то при отправке транзакций без параметра --source средства будут использоваться с любого из ваших адресов. Не только с адреса по умолчанию

# Отправка транзакций с рандомного кошелька своего
cargo run --quiet --release --bin pcli tx send 5penumbra --to <address>

# Отправка транзакций с определенного кошелька, где  --source 1 это индекс кошелька
cargo run --quiet --release --bin pcli tx send --source 1 5penumbra --to <address>

Отправка монет в стейк

# Смотрим список текущих валидаторов
cargo run --quiet --release --bin pcli stake list-validators
# Делегируем 10 монет валидатору
cargo run --quiet --release --bin pcli stake delegate 10penumbra --to penumbravalid1hz7u...

# Делегируем с определенного кошелька, где --source 1 это индекс кошелька
cargo run --quiet --release --bin pcli stake delegate --source 1 10penumbra --to penumbravalid1hz7u...
# Показать делегации
cargo run --quiet --release --bin pcli stake show
# Отменить делегирование
cargo run --quiet --release --bin pcli stake undelegate 1delegation_penumbraval

PD и Tendermint

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

1. Устанавливаем GO (одной командой)

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

2. Клонируем репозиторий

cargo build --release --bin pd

3. Устанавливаем tendermint

cd $HOME && git clone https://github.com/tendermint/tendermint.git && cd tendermint
git checkout v0.35.4
make install
tendermint version

4. Инициализируем

tendermint init full

5. Добавляем peers

peers="[email protected]:26656,[email protected]:26656"

sed -i.bak -e "s/^persistent-peers =.*/persistent-peers = \"$peers\"/" $HOME/.tendermint/config/config.toml

6. Скачиваем Genesis

wget -O $HOME/.tendermint/config/genesis.json "https://raw.githubusercontent.com/penumbra-zone/penumbra/main/testnets/008-philophrosyne/genesis.json"

7. Запускаем pd в отдельном окне tmux

cd $HOME/penumbra && tmux new-session -s pd

export RUST_LOG="warn,pd=debug,penumbra=debug,jmt=info"

cargo run --release --bin pd start --rocks-path $HOME/.rocksdb

8. Запускаем tendermint в отдельном окне tmux

Сначала сворачиваем окно tmux c pd нажав CTRL+B потом D

tmux new-session -s tendermint

tendermint start

Если все правильно, то видим следующий результат:

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

# Все команды выполняются из директории
cd $HOME/penumbra
# help
cargo run --quiet --release --bin pcli help
# Очищаем блокчейн (старого тестнета)
cargo run --quiet --release --bin pcli wallet reset
# Удаляем кошелек
cargo run --quiet --release --bin pcli wallet delete
# Help по стейкингу
cargo run --quiet --release --bin pcli stake --help

Документация Penumbra - https://protocol.penumbra.zone/main/index.html

Офф инструкция теста - https://github.com/penumbra-zone/penumbra

Шпаргалка по TMUX https://losst.ru/shpargalka-po-tmux