<?xml version="1.0" encoding="utf-8" ?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:tt="http://teletype.in/" xmlns:opensearch="http://a9.com/-/spec/opensearch/1.1/"><title>lesnik13utsa</title><author><name>lesnik13utsa</name></author><id>https://teletype.in/atom/lesnik13utsa</id><link rel="self" type="application/atom+xml" href="https://teletype.in/atom/lesnik13utsa?offset=0"></link><link rel="alternate" type="text/html" href="https://teletype.in/@lesnik13utsa?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=lesnik13utsa"></link><link rel="next" type="application/rss+xml" href="https://teletype.in/atom/lesnik13utsa?offset=10"></link><link rel="search" type="application/opensearchdescription+xml" title="Teletype" href="https://teletype.in/opensearch.xml"></link><updated>2026-04-04T20:08:36.693Z</updated><entry><id>lesnik13utsa:N1yIMX2HtYy</id><link rel="alternate" type="text/html" href="https://teletype.in/@lesnik13utsa/N1yIMX2HtYy?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=lesnik13utsa"></link><title>La Tanda Chain</title><published>2026-03-25T11:59:53.128Z</published><updated>2026-03-28T10:59:57.312Z</updated><summary type="html">&lt;img src=&quot;https://img3.teletype.in/files/ac/6e/ac6e1e0d-defd-49a8-a013-982f0a502db0.png&quot;&gt;UTSA validator</summary><content type="html">
  &lt;figure id=&quot;S1KG&quot; class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://img3.teletype.in/files/ac/6e/ac6e1e0d-defd-49a8-a013-982f0a502db0.png&quot; width=&quot;820&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;head&quot; data-align=&quot;center&quot;&gt;🪓 &lt;a href=&quot;https://t.me/utsa_channel&quot; target=&quot;_blank&quot;&gt;Telegram канал UTSA&lt;/a&gt; 🪓 &lt;a href=&quot;https://t.me/utsa_chat&quot; target=&quot;_blank&quot;&gt;Telegram чат UTSA&lt;/a&gt;&lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(236, 74%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;p id=&quot;D2wo&quot; data-align=&quot;center&quot;&gt;&lt;strong&gt;&lt;a href=&quot;https://n8n.latanda.online/chain/&quot; target=&quot;_blank&quot;&gt;Web&lt;/a&gt; &lt;a href=&quot;https://discord.gg/Ve9M2ZSYC2&quot; target=&quot;_blank&quot;&gt;Discord&lt;/a&gt; &lt;a href=&quot;https://github.com/INDIGOAZUL?tab=repositories&quot; target=&quot;_blank&quot;&gt;Github&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
  &lt;/section&gt;
  &lt;p id=&quot;sHgA&quot;&gt;&lt;u&gt;&lt;strong&gt;Testnet details&lt;/strong&gt;&lt;/u&gt;&lt;/p&gt;
  &lt;ul id=&quot;2h1F&quot;&gt;
    &lt;li id=&quot;ED8t&quot;&gt;Network Chain ID: &lt;code&gt;latanda-testnet-1&lt;/code&gt;&lt;/li&gt;
    &lt;li id=&quot;8tyv&quot;&gt;Denom stake: &lt;code&gt;ultd&lt;/code&gt;&lt;/li&gt;
    &lt;li id=&quot;SZWc&quot;&gt;Binary: &lt;code&gt;latandad&lt;/code&gt;&lt;/li&gt;
    &lt;li id=&quot;OnH1&quot;&gt;Working directory: &lt;code&gt;.latanda&lt;/code&gt;&lt;/li&gt;
    &lt;li id=&quot;AdcU&quot;&gt;RPC: &lt;a href=&quot;https://t-latanda.rpc.utsa.tech/&quot; target=&quot;_blank&quot;&gt;https://t-latanda.rpc.utsa.tech/&lt;/a&gt;&lt;/li&gt;
    &lt;li id=&quot;LaYP&quot;&gt;API: &lt;a href=&quot;https://t-latanda.api.utsa.tech/&quot; target=&quot;_blank&quot;&gt;https://t-latanda.api.utsa.tech/&lt;/a&gt;&lt;/li&gt;
    &lt;li id=&quot;pEU9&quot;&gt;Explorer: &lt;a href=&quot;https://exp.utsa.tech/latanda/staking&quot; target=&quot;_blank&quot;&gt;https://exp.utsa.tech/latanda/staking&lt;/a&gt;&lt;/li&gt;
    &lt;li id=&quot;W5Z0&quot;&gt;Explorer: &lt;a href=&quot;https://latanda.online/chain/#explorador&quot; target=&quot;_blank&quot;&gt;https://latanda.online/chain/#explorador&lt;/a&gt;&lt;/li&gt;
    &lt;li id=&quot;ZvSO&quot;&gt;Docs: &lt;a href=&quot;https://n8n.latanda.online/chain/#recursos&quot; target=&quot;_blank&quot;&gt;https://n8n.latanda.online/chain/#recursos&lt;/a&gt;&lt;/li&gt;
    &lt;li id=&quot;Erhj&quot;&gt;Faucet: просить токены в дискорде&lt;/li&gt;
  &lt;/ul&gt;
  &lt;hr /&gt;
  &lt;p id=&quot;4x6c&quot;&gt;La Tanda - это блокчейн-проект, который переносит классическую модель “сберегательных кругов” (tanda/ROSCA) в цифровой формат: участники объединяются в группы и по очереди получают общий пул средств. Идея сама по себе рабочая и используется во многих странах, однако роль блокчейна и токена в этой модели мне не до конца очевидна&lt;/p&gt;
  &lt;p id=&quot;43do&quot;&gt;Тестовая сеть только запустилась и судя по дорожной карте валидаторы будут добавляться частями - &lt;a href=&quot;https://n8n.latanda.online/chain/#roadmap&quot; target=&quot;_blank&quot;&gt;https://n8n.latanda.online/chain/#roadmap&lt;/a&gt;  &lt;/p&gt;
  &lt;p id=&quot;T2gv&quot;&gt;Заходить в валидаторы имеет смысл только без лишних ожиданий и затрат&lt;/p&gt;
  &lt;hr /&gt;
  &lt;section style=&quot;background-color:hsl(hsl(236, 74%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;pre data-lang=&quot;bash&quot; id=&quot;d9Ov&quot;&gt;# проверяем статус prevotes/precommits
FOLDER=.latanda

# узнать порт RPC
echo -e &amp;quot;\033[0;32m$(grep -A 3 &amp;quot;\[rpc\]&amp;quot; ~/$FOLDER/config/config.toml | egrep -o &amp;quot;:[0-9]+&amp;quot;)\033[0m&amp;quot;

PORT=&amp;lt;ввести свой порт&amp;gt;

# Проверка prevotes/precommits. Пригодится при обновах
curl -s localhost:$PORT/consensus_state | jq &amp;#x27;.result.round_state.height_vote_set[0].prevotes_bit_array&amp;#x27; &amp;amp;&amp;amp; \
curl -s localhost:$PORT/consensus_state | jq &amp;#x27;.result.round_state.height_vote_set[0].precommits_bit_array&amp;#x27;&lt;/pre&gt;
  &lt;/section&gt;
  &lt;section style=&quot;background-color:hsl(hsl(236, 74%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;p id=&quot;CJUj&quot;&gt;&lt;strong&gt;UPD 🕊 v (Высота обновления: )&lt;/strong&gt;&lt;/p&gt;
    &lt;pre data-lang=&quot;bash&quot; id=&quot;gctM&quot;&gt;cd $HOME/latanda-build
wget -q https://latanda.online/chain/latanda-chain-source.tar.gz
tar -xzf latanda-chain-source.tar.gz

go mod tidy
go build -o latandad ./cmd/latandad

$HOME/latanda-build/bin/latandad version --long | grep -e version -e commit
# version: 
# commit: 

# # ПОСЛЕ ОСТАНОВКИ СЕТИ НА НУЖНОМ БЛОКЕ!!!
systemctl stop latandad
mv latandad $(which latandad)
latandad version --long | grep -e version -e commit
#

systemctl restart latandad &amp;amp;&amp;amp; journalctl -u latandad -f -o cat&lt;/pre&gt;
  &lt;/section&gt;
  &lt;p id=&quot;gctM&quot;&gt;&lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(55,  86%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;h2 id=&quot;6FkE&quot;&gt;Подготовка сервера&lt;/h2&gt;
  &lt;/section&gt;
  &lt;pre data-lang=&quot;bash&quot; id=&quot;n0vj&quot;&gt;# обновляем репозитории
apt update &amp;amp;&amp;amp; sudo apt upgrade -y

# устанавливаем необходимые утилиты
apt install curl build-essential git wget jq make gcc tmux htop nvme-cli pkg-config libssl-dev libleveldb-dev tar clang bsdmainutils ncdu unzip libleveldb-dev -y

# проверяем работу жестких дисков
curl -sL yabs.sh | bash -s — -ig

# проверяем работу интернета
curl -sL yabs.sh | bash -s — -fg&lt;/pre&gt;
  &lt;p id=&quot;M4EP&quot;&gt;&lt;strong&gt;File2Ban&lt;/strong&gt; - подробнее &lt;a href=&quot;https://www.linuxshop.ru/articles/a26710798-nastroyka_fail2ban&quot; target=&quot;_blank&quot;&gt;здесь&lt;/a&gt;&lt;/p&gt;
  &lt;pre data-lang=&quot;bash&quot; id=&quot;TWGp&quot;&gt;# устанавливаем и копируем конфиг, который будет иметь больший приоритет
apt install fail2ban -y &amp;amp;&amp;amp; \
cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local &amp;amp;&amp;amp; \
nano /etc/fail2ban/jail.local
# раскомментировать и добавить свой IP: ignoreip = 127.0.0.1/8 ::1 &amp;lt;ip&amp;gt;
systemctl restart fail2ban

# проверяем status 
systemctl status fail2ban
# проверяем, какие jails активны (по умолчанию только sshd)
fail2ban-client status
# проверяем статистику по sshd
fail2ban-client status sshd
# смотрим логи
tail /var/log/fail2ban.log
# останавливаем работу и удаляем с автозагрузки
#systemctl stop fail2ban &amp;amp;&amp;amp; systemctl disable fail2ban&lt;/pre&gt;
  &lt;p id=&quot;eKUj&quot;&gt;&lt;strong&gt;Устанавливаем Go&lt;/strong&gt;&lt;/p&gt;
  &lt;pre data-lang=&quot;bash&quot; id=&quot;K30V&quot;&gt;ver=&amp;quot;1.21.13&amp;quot; &amp;amp;&amp;amp; \
wget &amp;quot;https://golang.org/dl/go$ver.linux-amd64.tar.gz&amp;quot; &amp;amp;&amp;amp; \
sudo rm -rf /usr/local/go &amp;amp;&amp;amp; \
sudo tar -C /usr/local -xzf &amp;quot;go$ver.linux-amd64.tar.gz&amp;quot; &amp;amp;&amp;amp; \
rm &amp;quot;go$ver.linux-amd64.tar.gz&amp;quot; &amp;amp;&amp;amp; \
echo &amp;quot;export PATH=$PATH:/usr/local/go/bin:$HOME/go/bin&amp;quot; &amp;gt;&amp;gt; $HOME/.bash_profile &amp;amp;&amp;amp; \
source $HOME/.bash_profile &amp;amp;&amp;amp; \
go version&lt;/pre&gt;
  &lt;p id=&quot;j3bM&quot;&gt;&lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(34,  84%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;h2 id=&quot;1b58&quot;&gt;Новая установка ноды&lt;/h2&gt;
  &lt;/section&gt;
  &lt;section&gt;
    &lt;p id=&quot;z8pZ&quot;&gt;&lt;u&gt;&lt;em&gt;&lt;strong&gt;ВАЖНО &lt;/strong&gt;— в командах ниже все, что в &lt;strong&gt;&amp;lt;&amp;gt;&lt;/strong&gt; меняем на свое значение и убираем сами&lt;strong&gt; &amp;lt;&amp;gt;&lt;/strong&gt;&lt;/em&gt;&lt;/u&gt;&lt;/p&gt;
  &lt;/section&gt;
  &lt;p id=&quot;sjXD&quot;&gt;&lt;strong&gt;Устанавливаем бинарники&lt;/strong&gt;&lt;/p&gt;
  &lt;pre data-lang=&quot;bash&quot; id=&quot;9sYS&quot;&gt;mkdir -p $HOME/latanda-build &amp;amp;&amp;amp; cd $HOME/latanda-build

wget -q https://latanda.online/chain/latanda-chain-source.tar.gz
tar -xzf latanda-chain-source.tar.gz

go mod tidy
go build -o latandad ./cmd/latandad

mv latandad $HOME/go/bin/

latandad version --long | grep -e version -e commit
# version: &amp;quot;&amp;quot;
# commit: &amp;quot;&amp;quot; &lt;/pre&gt;
  &lt;p id=&quot;vp48&quot;&gt;&lt;strong&gt;Инициализируем ноду, чтобы создать необходимые файлы конфигурации&lt;/strong&gt;&lt;/p&gt;
  &lt;pre data-lang=&quot;bash&quot; id=&quot;1EGv&quot;&gt;latandad init UTSA_guide --chain-id latanda-testnet-1 --default-denom ultd&lt;/pre&gt;
  &lt;p id=&quot;Qrh4&quot;&gt;&lt;strong&gt;Скачиваем Genesis&lt;/strong&gt;&lt;/p&gt;
  &lt;pre data-lang=&quot;bash&quot; id=&quot;rQ2e&quot;&gt;wget -O $HOME/.latanda/config/genesis.json &amp;quot;https://latanda.online/chain/genesis.json&amp;quot;

# Проверим генезис
sha256sum ~/.latanda/config/genesis.json
# 98fc9871d6a3b7b12b3f7fcaa1ca3303ffcfad0f209d61355975a15069ac3907&lt;/pre&gt;
  &lt;p id=&quot;4cmW&quot;&gt;&lt;strong&gt;Скачиваем Addr book&lt;/strong&gt;&lt;/p&gt;
  &lt;pre data-lang=&quot;bash&quot; id=&quot;IucL&quot;&gt;wget -O $HOME/.latanda/config/addrbook.json &amp;quot;https://share101.utsa.tech/latanda/addrbook.json&amp;quot;&lt;/pre&gt;
  &lt;p id=&quot;WQhY&quot;&gt;&lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(34,  84%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;h2 id=&quot;kBZ8&quot;&gt;Настраиваем конфигурацию ноды&lt;/h2&gt;
  &lt;/section&gt;
  &lt;pre data-lang=&quot;bash&quot; id=&quot;rXOk&quot;&gt;# правим конфиг, благодаря чему мы можем больше не использовать флаг chain-id для каждой команды CLI в client.toml
sed -i.bak -e &amp;quot;s/^chain-id *=.*/chain-id = \&amp;quot;latanda-testnet-1\&amp;quot;/;&amp;quot; ~/.latanda/config/client.toml
sed -i.bak -e &amp;quot;s/^keyring-backend *=.*/keyring-backend = \&amp;quot;os\&amp;quot;/;&amp;quot; ~/.latanda/config/client.toml

# настраиваем минимальную цену за газ в app.toml
sed -i.bak -e &amp;quot;s/^minimum-gas-prices *=.*/minimum-gas-prices = \&amp;quot;0.001ultd\&amp;quot;/;&amp;quot; ~/.latanda/config/app.toml

# добавляем seeds/bpeers/peers в config.toml
external_address=$(wget -qO- eth0.me)
sed -i.bak -e &amp;quot;s/^external_address *=.*/external_address = \&amp;quot;$external_address:26656\&amp;quot;/&amp;quot; $HOME/.latanda/config/config.toml

peers=&amp;quot;483a8110c3cd93c8dd3801d935151e98656f5b67@168.231.67.201:26656&amp;quot;
sed -i.bak -e &amp;quot;s/^persistent_peers *=.*/persistent_peers = \&amp;quot;$peers\&amp;quot;/&amp;quot; $HOME/.latanda/config/config.toml
seeds=&amp;quot;&amp;quot;
sed -i.bak -e &amp;quot;s/^seeds =.*/seeds = \&amp;quot;$seeds\&amp;quot;/&amp;quot; $HOME/.latanda/config/config.toml

# настраиваем фильтрацию &amp;quot;плохих&amp;quot; peers
sed -i -e &amp;quot;s/^filter_peers *=.*/filter_peers = \&amp;quot;true\&amp;quot;/&amp;quot; $HOME/.latanda/config/config.toml&lt;/pre&gt;
  &lt;p id=&quot;QI2Z&quot;&gt;&lt;strong&gt;(ОПЦИОНАЛЬНО) Настраиваем прунинг в&lt;code&gt;app.toml&lt;/code&gt;&lt;/strong&gt;&lt;/p&gt;
  &lt;pre data-lang=&quot;bash&quot; id=&quot;Aprq&quot;&gt;pruning=&amp;quot;custom&amp;quot;
pruning_keep_recent=&amp;quot;1000&amp;quot;
pruning_interval=&amp;quot;10&amp;quot;
sed -i -e &amp;quot;s/^pruning *=.*/pruning = \&amp;quot;$pruning\&amp;quot;/&amp;quot; $HOME/.latanda/config/app.toml
sed -i -e &amp;quot;s/^pruning-keep-recent *=.*/pruning-keep-recent = \&amp;quot;$pruning_keep_recent\&amp;quot;/&amp;quot; $HOME/.latanda/config/app.toml
sed -i -e &amp;quot;s/^pruning-interval *=.*/pruning-interval = \&amp;quot;$pruning_interval\&amp;quot;/&amp;quot; $HOME/.latanda/config/app.toml&lt;/pre&gt;
  &lt;p id=&quot;dGeO&quot;&gt;&lt;strong&gt;(ОПЦИОНАЛЬНО) Выкл индексацию в&lt;code&gt;config.toml&lt;/code&gt;&lt;/strong&gt;&lt;/p&gt;
  &lt;pre data-lang=&quot;bash&quot; id=&quot;07j7&quot;&gt;indexer=&amp;quot;null&amp;quot;
sed -i -e &amp;quot;s/^indexer *=.*/indexer = \&amp;quot;$indexer\&amp;quot;/&amp;quot; $HOME/.latanda/config/config.toml&lt;/pre&gt;
  &lt;p id=&quot;UDzq&quot;&gt;&lt;strong&gt;(ОПЦИОНАЛЬНО) Вкл/выкл снэпшоты в&lt;code&gt;app.toml&lt;/code&gt;&lt;/strong&gt;&lt;/p&gt;
  &lt;pre data-lang=&quot;bash&quot; id=&quot;Hutq&quot;&gt;snapshot_interval=1000
sed -i.bak -e &amp;quot;s/^snapshot-interval *=.*/snapshot-interval = \&amp;quot;$snapshot_interval\&amp;quot;/&amp;quot; ~/.latanda/config/app.toml&lt;/pre&gt;
  &lt;p id=&quot;Hu7v&quot;&gt;&lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(236, 74%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;h2 id=&quot;5cMj&quot;&gt;State sync&lt;/h2&gt;
  &lt;/section&gt;
  &lt;section style=&quot;background-color:hsl(hsl(236, 74%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;pre data-lang=&quot;bash&quot; id=&quot;ffLz&quot;&gt;# add peer
peers=&amp;quot;d6217d85d3747ebbfbf75898bd4407da567f5291@65.108.206.118:60556&amp;quot;
sed -i.bak -e &amp;quot;s/^persistent_peers *=.*/persistent_peers = \&amp;quot;$peers\&amp;quot;/&amp;quot; $HOME/.latanda/config/config.toml&lt;/pre&gt;
    &lt;pre data-lang=&quot;bash&quot; id=&quot;HU7h&quot;&gt;SNAP_RPC=https://t-latanda.rpc.utsa.tech:443

LATEST_HEIGHT=$(curl -s $SNAP_RPC/block | jq -r .result.block.header.height); \
BLOCK_HEIGHT=$((LATEST_HEIGHT - 100)); \
TRUST_HASH=$(curl -s &amp;quot;$SNAP_RPC/block?height=$BLOCK_HEIGHT&amp;quot; | jq -r .result.block_id.hash)

echo $LATEST_HEIGHT $BLOCK_HEIGHT $TRUST_HASH

sed -i.bak -E &amp;quot;s|^(enable[[:space:]]+=[[:space:]]+).*$|\1true| ; \
s|^(rpc_servers[[:space:]]+=[[:space:]]+).*$|\1\&amp;quot;$SNAP_RPC,$SNAP_RPC\&amp;quot;| ; \
s|^(trust_height[[:space:]]+=[[:space:]]+).*$|\1$BLOCK_HEIGHT| ; \
s|^(trust_hash[[:space:]]+=[[:space:]]+).*$|\1\&amp;quot;$TRUST_HASH\&amp;quot;| ; \
s|^(seeds[[:space:]]+=[[:space:]]+).*$|\1\&amp;quot;\&amp;quot;|&amp;quot; $HOME/.latanda/config/config.toml&lt;/pre&gt;
    &lt;pre data-lang=&quot;bash&quot; id=&quot;OF8l&quot;&gt;systemctl restart latandad &amp;amp;&amp;amp; journalctl -u latandad -f -o cat&lt;/pre&gt;
  &lt;/section&gt;
  &lt;p id=&quot;fuhu&quot;&gt;&lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(236, 74%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;h2 id=&quot;N1Bw&quot;&gt;&lt;strong&gt;&lt;s&gt;Snapshots&lt;/s&gt;&lt;/strong&gt;&lt;/h2&gt;
  &lt;/section&gt;
  &lt;section style=&quot;background-color:hsl(hsl(236, 74%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;p id=&quot;yPUl&quot; data-align=&quot;center&quot;&gt;&lt;s&gt;time: &lt;strong&gt;every 24 hours&lt;/strong&gt; &lt;strong&gt;| &lt;/strong&gt;indexer:&lt;strong&gt; kv | &lt;/strong&gt;pruning:&lt;strong&gt; 100/10&lt;/strong&gt;&lt;/s&gt;&lt;/p&gt;
    &lt;p id=&quot;SP72&quot; data-align=&quot;center&quot;&gt;&lt;s&gt;🌐&lt;/s&gt;&lt;/p&gt;
    &lt;pre data-lang=&quot;bash&quot; id=&quot;o0h8&quot;&gt;cd $HOME
systemctl stop latandad

cp $HOME/.latanda/data/priv_validator_state.json $HOME/.latanda/priv_validator_state.json.backup

# удаляем старую базу данных
rm -rf $HOME/.latanda/data/{application.db,evidence.db,snapshots,tx_index.db,blockstore.db,state.db,cs.wal}

# скачиваем snapshot
curl -o - -L https://server-4.net/testnet/latanda/latanda_2026-03-20_11888537_snap.tar.lz4 | lz4 -c -d - | tar -x -C $HOME/.latanda/

mv $HOME/.latanda/priv_validator_state.json.backup $HOME/.latanda/data/priv_validator_state.json

systemctl restart latandad &amp;amp;&amp;amp; journalctl -u latandad -f -o cat&lt;/pre&gt;
  &lt;/section&gt;
  &lt;p id=&quot;AwrS&quot;&gt;&lt;strong&gt;Создаем сервисный файл&lt;/strong&gt;&lt;/p&gt;
  &lt;pre data-lang=&quot;bash&quot; id=&quot;I8Os&quot;&gt;tee /etc/systemd/system/latandad.service &amp;gt; /dev/null &amp;lt;&amp;lt;EOF
[Unit]
Description=latandad
After=network-online.target
Wants=network-online.target

[Service]
User=$USER
ExecStart=$(which latandad) start --home $HOME/.latanda
Restart=on-failure
RestartSec=3
LimitNOFILE=65535

[Install]
WantedBy=multi-user.target
EOF&lt;/pre&gt;
  &lt;pre data-lang=&quot;bash&quot; id=&quot;P7os&quot;&gt;systemctl daemon-reload
systemctl enable latandad
systemctl restart latandad &amp;amp;&amp;amp; journalctl -u latandad -f -o cat&lt;/pre&gt;
  &lt;p id=&quot;P3nc&quot;&gt;&lt;strong&gt;Создаем или восстанавливаем кошелек и сохраняем вывод&lt;/strong&gt;&lt;/p&gt;
  &lt;pre data-lang=&quot;bash&quot; id=&quot;xgZg&quot;&gt;# создать кошелек
latandad keys add &amp;lt;name_wallet&amp;gt; --keyring-backend os

# восстановить кошелек (после команды вставить seed)
latandad keys add &amp;lt;name_wallet&amp;gt; --recover --keyring-backend os&lt;/pre&gt;
  &lt;section style=&quot;background-color:hsl(hsl(55,  86%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;p id=&quot;YLko&quot;&gt;&lt;strong&gt;Не забываем сохранить seed !!!&lt;/strong&gt;&lt;/p&gt;
  &lt;/section&gt;
  &lt;p id=&quot;rltT&quot;&gt;&lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(34,  84%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;h2 id=&quot;sBaD&quot;&gt;&lt;strong&gt;Создаем валидатора&lt;/strong&gt;&lt;/h2&gt;
  &lt;/section&gt;
  &lt;p id=&quot;asq2&quot;&gt;1. Получаем свой pubkey&lt;/p&gt;
  &lt;pre data-lang=&quot;bash&quot; id=&quot;nd0a&quot;&gt;latandad comet show-validator&lt;/pre&gt;
  &lt;p id=&quot;ywEz&quot;&gt;2. Создаем validator.json&lt;/p&gt;
  &lt;pre data-lang=&quot;bash&quot; id=&quot;jo3m&quot;&gt;nano $HOME/.latanda/validator.json&lt;/pre&gt;
  &lt;p id=&quot;qdbf&quot;&gt;3. Вставляем наш конфиг&lt;/p&gt;
  &lt;pre data-lang=&quot;bash&quot; id=&quot;JFIW&quot;&gt;{
    &amp;quot;pubkey&amp;quot;: {&amp;quot;@type&amp;quot;:&amp;quot;/cosmos.crypto.ed25519.PubKey&amp;quot;,&amp;quot;key&amp;quot;:&amp;quot;c+EuycPpudgiyVl6guYODKveo=&amp;quot;},
    &amp;quot;amount&amp;quot;: &amp;quot;1100000000000000000ultd&amp;quot;,
    &amp;quot;moniker&amp;quot;: &amp;quot;yourmoniker&amp;quot;,
    &amp;quot;identity&amp;quot;: &amp;quot;optional identity signature (ex. UPort or Keybase)&amp;quot;,
    &amp;quot;website&amp;quot;: &amp;quot;validator&amp;#x27;s (optional) website&amp;quot;,
    &amp;quot;security&amp;quot;: &amp;quot;validator&amp;#x27;s (optional) security contact email&amp;quot;,
    &amp;quot;details&amp;quot;: &amp;quot;validator&amp;#x27;s (optional) details&amp;quot;,
    &amp;quot;commission-rate&amp;quot;: &amp;quot;0.1&amp;quot;,
    &amp;quot;commission-max-rate&amp;quot;: &amp;quot;0.2&amp;quot;,
    &amp;quot;commission-max-change-rate&amp;quot;: &amp;quot;0.01&amp;quot;,
    &amp;quot;min-self-delegation&amp;quot;: &amp;quot;1&amp;quot;
}&lt;/pre&gt;
  &lt;p id=&quot;KCoo&quot;&gt;4. Отправляем транзакцию&lt;/p&gt;
  &lt;pre data-lang=&quot;bash&quot; id=&quot;x15y&quot;&gt;latandad tx staking create-validator $HOME/.latanda/validator.json \
    --from=&amp;lt;name_wallet&amp;gt; \
    --chain-id=latanda-testnet-1 \
    --fees 5000ultd -y&lt;/pre&gt;
  &lt;section style=&quot;background-color:hsl(hsl(55,  86%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;p id=&quot;kj2D&quot;&gt;&lt;strong&gt;Не забываем сохранить priv_validator_key.json !!!&lt;/strong&gt;&lt;/p&gt;
    &lt;p id=&quot;VBzA&quot;&gt;Подробнее о создании/редактировании валидатора можно почитать &lt;a href=&quot;/@lesnik13utsa/RPLJpWXIoDQ&quot;&gt;здесь&lt;/a&gt;&lt;/p&gt;
  &lt;/section&gt;
  &lt;p id=&quot;3Ilq&quot;&gt;&lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(34,  84%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;h2 id=&quot;1eUH&quot;&gt;Полезные команды&lt;/h2&gt;
  &lt;/section&gt;
  &lt;p id=&quot;Fuvu&quot;&gt;&lt;strong&gt;Информация&lt;/strong&gt;&lt;/p&gt;
  &lt;pre data-lang=&quot;bash&quot; id=&quot;Vgbg&quot;&gt;# проверить логи
sudo journalctl -u latandad -f -o cat
# проверить статус
curl localhost:$PORT/status | jq
# проверить баланс
latandad q bank balances &amp;lt;address&amp;gt;
# проверить pubkey валидатора
latandad tendermint show-validator
# проверить валидатора
latandad query staking validator &amp;lt;valoper_address&amp;gt;
latandad query staking validators --limit 1000000 -o json | jq &amp;#x27;.validators[] | select(.description.moniker==&amp;quot;&amp;lt;name_moniker&amp;gt;&amp;quot;)&amp;#x27; | jq
# проверка информации по TX_HASH
latandad query tx &amp;lt;TX_HASH&amp;gt;
# параметры сети
latandad q staking params
latandad q slashing params
# проверить сколько блоков пропущено валидатором и с какого блока актив
latandad q slashing signing-info $(latandad tendermint show-validator)
# проверить slashing
latandad q slashing signing-info $(latandad tendermint show-validator)
# узнать транзакцию создания валидатора (заменить свой valoper_address)
latandad query txs --events=&amp;#x27;create_validator.validator=&amp;lt;your_valoper_address&amp;gt;&amp;#x27; -o=json | jq .txs[0].txhash -r
# просмотр активного сета
latandad query staking validators -o json \
| jq -r &amp;#x27;.validators[] 
 | select(.status==&amp;quot;BOND_STATUS_BONDED&amp;quot;) 
 | &amp;quot;\(.tokens) \(.operator_address) \(.description.moniker)&amp;quot;&amp;#x27; \
| sort -gr | nl
# просмотр неактивного сета
latandad query staking validators -o json \
| jq -r &amp;#x27;.validators[] 
  | select(.status!=&amp;quot;BOND_STATUS_BONDED&amp;quot;) 
  | &amp;quot;\(.tokens) \(.operator_address) \(.description.moniker) \(.status)&amp;quot;&amp;#x27; \
| sort -gr | nl&lt;/pre&gt;
  &lt;p id=&quot;nXYz&quot;&gt;&lt;strong&gt;Транзакции&lt;/strong&gt;&lt;/p&gt;
  &lt;pre data-lang=&quot;bash&quot; id=&quot;DwKX&quot;&gt;# собрать комиссионные + реварды
latandad tx distribution withdraw-rewards &amp;lt;valoper_address&amp;gt; --from &amp;lt;name_wallet&amp;gt; --fees 328408000000000ultd --gas auto --gas-adjustment 1.5 --commission -y

# заделегировать себе в стейк еще (так отправляется 1 монетa)
latandad tx staking delegate &amp;lt;valoper_address&amp;gt; 1000000ultd --from &amp;lt;name_wallet&amp;gt; --fees 328408000000000ultd --gas auto --gas-adjustment 1.5 -y

# ределегирование на другого валидатора
latandad tx staking redelegate &amp;lt;src-validator-addr&amp;gt; &amp;lt;dst-validator-addr&amp;gt; 1000000ultd --from &amp;lt;name_wallet&amp;gt; --fees 328408000000000ultd --gas auto --gas-adjustment 1.5 -y

# unbond 
latandad tx staking unbond &amp;lt;addr_valoper&amp;gt; 1000000ultd --from &amp;lt;name_wallet&amp;gt; --fees 328408000000000ultd --gas auto --gas-adjustment 1.5 -y

# отправить монеты на другой адрес
latandad tx bank send &amp;lt;name_wallet&amp;gt; &amp;lt;address&amp;gt; 1000000ultd --fees 328408000000000ultd --gas auto --gas-adjustment 1.5 -y

# выбраться из тюрьмы
latandad tx slashing unjail --from &amp;lt;name_wallet&amp;gt; --fees 328408000000000ultd --gas auto --gas-adjustment 1.5 -y&lt;/pre&gt;
  &lt;p id=&quot;zl2g&quot;&gt;&lt;strong&gt;Работа с кошельками&lt;/strong&gt;&lt;/p&gt;
  &lt;pre data-lang=&quot;bash&quot; id=&quot;gSNW&quot;&gt;# вывести список кошельков
latandad keys list

# показать ключ аккаунта
latandad keys show &amp;lt;name_wallet&amp;gt; --bech acc

# показать ключ валидатора
latandad keys show &amp;lt;name_wallet&amp;gt; --bech val

# показать ключ консенсуса
latandad keys show &amp;lt;name_wallet&amp;gt; --bech cons

# запрос учетной записи
latandad q auth account $(latandad keys show &amp;lt;name_wallet&amp;gt; -a) -o text

# удалить кошелек
latandad keys delete &amp;lt;name_wallet&amp;gt;&lt;/pre&gt;
  &lt;p id=&quot;Qfld&quot;&gt;&lt;strong&gt;Удалить ноду&lt;/strong&gt;&lt;/p&gt;
  &lt;pre data-lang=&quot;bash&quot; id=&quot;Ojqs&quot;&gt;systemctl stop latandad &amp;amp;&amp;amp; \
systemctl disable latandad &amp;amp;&amp;amp; \
rm /etc/systemd/system/latandad.service &amp;amp;&amp;amp; \
systemctl daemon-reload &amp;amp;&amp;amp; \
cd $HOME &amp;amp;&amp;amp; \
rm -rf .latanda latanda-build &amp;amp;&amp;amp; \
rm -rf $(which latandad)&lt;/pre&gt;
  &lt;p id=&quot;fYh0&quot;&gt;&lt;strong&gt;ГОВЕРНАНС&lt;/strong&gt;&lt;/p&gt;
  &lt;pre data-lang=&quot;bash&quot; id=&quot;8njc&quot;&gt;# список proposals
latandad q gov proposals

# посмотреть результат голосования
latandad q gov proposals --voter &amp;lt;ADDRESS&amp;gt;

# проголосовать за предложение 
latandad tx gov vote 1 yes --from &amp;lt;name_wallet&amp;gt; --fees 328408000000000ultd --gas auto --gas-adjustment 1.5

# внести депозит в предложение
latandad tx gov deposit 1 1000000ultd --from &amp;lt;name_wallet&amp;gt; --fees 328408000000000ultd --gas auto --gas-adjustment 1.5

# создать предложение
latandad tx gov submit-proposal --title=&amp;quot;Randomly reward&amp;quot; --description=&amp;quot;Reward 10 testnet participants who completed more than 3 tasks&amp;quot; --type=&amp;quot;Text&amp;quot; --deposit=&amp;quot;11000000ultd&amp;quot; --from=&amp;lt;name_wallet&amp;gt; --fees 328408000000000ultd --gas auto --gas-adjustment 1.5&lt;/pre&gt;
  &lt;p id=&quot;chat-messages-932182862663389245&quot;&gt;&lt;strong&gt;Peers and RPC&lt;/strong&gt;&lt;/p&gt;
  &lt;pre data-lang=&quot;bash&quot; id=&quot;zfCY&quot;&gt;FOLDER=.latanda

# узнать свой peer
PORTR=$(grep -A 3 &amp;quot;\[p2p\]&amp;quot; ~/$FOLDER/config/config.toml | egrep -o &amp;quot;:[0-9]+&amp;quot;) &amp;amp;&amp;amp; \
echo $(latandad tendermint show-node-id)@$(wget -qO- eth0.me)$PORTR

# узнать порт RPC
echo -e &amp;quot;\033[0;32m$(grep -A 3 &amp;quot;\[rpc\]&amp;quot; ~/$FOLDER/config/config.toml | egrep -o &amp;quot;:[0-9]+&amp;quot;)\033[0m&amp;quot;

# проверка количества пиров
PORT=
curl -s http://localhost:$PORT/net_info | jq -r &amp;#x27;.result.peers[] | &amp;quot;\(.node_info.id)@\(.remote_ip):\(.node_info.listen_addr | split(&amp;quot;:&amp;quot;)[2])&amp;quot;&amp;#x27; | wc -l

# cписок моникеров подключенных пиров
curl -s http://localhost:$PORT/net_info | jq &amp;#x27;.result.peers[].node_info.moniker&amp;#x27;

# Проверка prevotes/precommits. Пригодится при обновах
curl -s localhost:$PORT/consensus_state | jq &amp;#x27;.result.round_state.height_vote_set[0].prevotes_bit_array&amp;#x27; &amp;amp;&amp;amp; \
curl -s localhost:$PORT/consensus_state | jq &amp;#x27;.result.round_state.height_vote_set[0].precommits_bit_array&amp;#x27;

# check prevote of your validator
curl -s localhost:$PORT/consensus_state -s | grep $(curl -s localhost:26657/status | jq -r .result.validator_info.address[:12])&lt;/pre&gt;
  &lt;figure id=&quot;cY95&quot; class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://img3.teletype.in/files/e9/28/e92895ca-f71d-497c-9fd2-2e7eeedd5303.png&quot; width=&quot;278&quot; /&gt;
    &lt;figcaption&gt;&lt;strong&gt;Поддержим природу вместе: 0xa7476EC14cD663C742d527113638C77a1631Cc89 cosmos1m2mm7kzvw6m3464h94ryqg8xvr6tyeyyecppnq&lt;/strong&gt;&lt;/figcaption&gt;
  &lt;/figure&gt;

</content></entry><entry><id>lesnik13utsa:HYJHkYMK-K4</id><link rel="alternate" type="text/html" href="https://teletype.in/@lesnik13utsa/HYJHkYMK-K4?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=lesnik13utsa"></link><title>Lumen</title><published>2026-01-04T09:15:19.660Z</published><updated>2026-03-21T15:18:00.192Z</updated><category term="mainnet" label="MAINNET"></category><summary type="html">&lt;img src=&quot;https://img3.teletype.in/files/ac/6e/ac6e1e0d-defd-49a8-a013-982f0a502db0.png&quot;&gt;🪓 Telegram канал UTSA 🪓 Telegram чат UTSA</summary><content type="html">
  &lt;figure id=&quot;S1KG&quot; class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://img3.teletype.in/files/ac/6e/ac6e1e0d-defd-49a8-a013-982f0a502db0.png&quot; width=&quot;820&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;head&quot; data-align=&quot;center&quot;&gt;🪓 &lt;a href=&quot;https://t.me/utsa_channel&quot; target=&quot;_blank&quot;&gt;Telegram канал UTSA&lt;/a&gt; 🪓 &lt;a href=&quot;https://t.me/utsa_chat&quot; target=&quot;_blank&quot;&gt;Telegram чат UTSA&lt;/a&gt;&lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(236, 74%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;p id=&quot;D2wo&quot; data-align=&quot;center&quot;&gt;&lt;strong&gt;Web &lt;a href=&quot;https://discord.gg/DwK6V9shKc&quot; target=&quot;_blank&quot;&gt;Discord&lt;/a&gt; &lt;a href=&quot;https://github.com/network-lumen/validator-kit/tree/master&quot; target=&quot;_blank&quot;&gt;Github&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
  &lt;/section&gt;
  &lt;p id=&quot;sHgA&quot;&gt;&lt;u&gt;&lt;strong&gt;Testnet details&lt;/strong&gt;&lt;/u&gt;&lt;/p&gt;
  &lt;ul id=&quot;2h1F&quot;&gt;
    &lt;li id=&quot;ED8t&quot;&gt;Network Chain ID: &lt;code&gt;lumen&lt;/code&gt;&lt;/li&gt;
    &lt;li id=&quot;8tyv&quot;&gt;Denom stake: &lt;code&gt;ulmn&lt;/code&gt;&lt;/li&gt;
    &lt;li id=&quot;SZWc&quot;&gt;Binary: &lt;code&gt;lumend&lt;/code&gt;&lt;/li&gt;
    &lt;li id=&quot;OnH1&quot;&gt;Working directory: &lt;code&gt;.lumen&lt;/code&gt;&lt;/li&gt;
    &lt;li id=&quot;AdcU&quot;&gt;RPC: &lt;a href=&quot;https://m-lumen.rpc.utsa.tech/&quot; target=&quot;_blank&quot;&gt;https://m-lumen.rpc.utsa.tech/&lt;/a&gt;&lt;/li&gt;
    &lt;li id=&quot;LaYP&quot;&gt;API: &lt;a href=&quot;https://m-lumen.api.utsa.tech/&quot; target=&quot;_blank&quot;&gt;https://m-lumen.api.utsa.tech/&lt;/a&gt;&lt;/li&gt;
    &lt;li id=&quot;W5Z0&quot;&gt;Explorer: &lt;a href=&quot;https://exp.utsa.tech/lumen/staking&quot; target=&quot;_blank&quot;&gt;https://exp.utsa.tech/lumen/staking&lt;/a&gt;&lt;/li&gt;
    &lt;li id=&quot;ZvSO&quot;&gt;Docs: &lt;a href=&quot;https://github.com/network-lumen/validator-kit/tree/master&quot; target=&quot;_blank&quot;&gt;https://github.com/network-lumen/validator-kit/tree/master&lt;/a&gt;&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p id=&quot;17y2&quot;&gt;Lumen - это децентрализованный интернет-стек, объединяющий браузер, шлюзы и блокчейн. Нативный браузер для экосистемы Lumen обеспечивает прямой доступ к состоянию блокчейна, контенту IPFS и сетевым шлюзам без централизованных серверов или доверенных посредников&lt;/p&gt;
  &lt;p id=&quot;AAG7&quot;&gt;&lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(34,  84%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;h2 id=&quot;6FkE&quot;&gt;Подготовка сервера&lt;/h2&gt;
  &lt;/section&gt;
  &lt;pre data-lang=&quot;bash&quot; id=&quot;Ld2e&quot;&gt;# обновляем репозитории
apt update &amp;amp;&amp;amp; apt upgrade -y

# устанавливаем необходимые утилиты
apt install curl build-essential git wget jq make gcc tmux htop nvme-cli pkg-config libssl-dev libleveldb-dev tar clang bsdmainutils ncdu unzip libleveldb-dev -y

# проверяем работу жестких дисков
curl -sL yabs.sh | bash -s — -ig

# проверяем работу интернета
curl -sL yabs.sh | bash -s — -fg&lt;/pre&gt;
  &lt;p id=&quot;M4EP&quot;&gt;&lt;strong&gt;File2Ban&lt;/strong&gt; - подробнее &lt;a href=&quot;https://www.linuxshop.ru/articles/a26710798-nastroyka_fail2ban&quot; target=&quot;_blank&quot;&gt;здесь&lt;/a&gt;&lt;/p&gt;
  &lt;pre data-lang=&quot;bash&quot; id=&quot;Zpig&quot;&gt;# устанавливаем и копируем конфиг, который будет иметь больший приоритет
apt install fail2ban -y &amp;amp;&amp;amp; \
cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local &amp;amp;&amp;amp; \
nano /etc/fail2ban/jail.local
# раскомментировать и добавить свой IP: ignoreip = 127.0.0.1/8 ::1 &amp;lt;ip&amp;gt;
systemctl restart fail2ban

# проверяем status 
systemctl status fail2ban
# проверяем, какие jails активны (по умолчанию только sshd)
fail2ban-client status
# проверяем статистику по sshd
fail2ban-client status sshd
# смотрим логи
tail /var/log/fail2ban.log
# останавливаем работу и удаляем с автозагрузки
#systemctl stop fail2ban &amp;amp;&amp;amp; systemctl disable fail2ban&lt;/pre&gt;
  &lt;p id=&quot;eKUj&quot;&gt;&lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(34,  84%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;h2 id=&quot;1b58&quot;&gt;Новая установка ноды&lt;/h2&gt;
  &lt;/section&gt;
  &lt;section&gt;
    &lt;p id=&quot;z8pZ&quot;&gt;&lt;u&gt;&lt;em&gt;&lt;strong&gt;ВАЖНО &lt;/strong&gt;— в командах ниже все, что в &lt;strong&gt;&amp;lt;&amp;gt;&lt;/strong&gt; меняем на свое значение и убираем сами&lt;strong&gt; &amp;lt;&amp;gt;&lt;/strong&gt;&lt;/em&gt;&lt;/u&gt;&lt;/p&gt;
  &lt;/section&gt;
  &lt;p id=&quot;sjXD&quot;&gt;&lt;strong&gt;Перед установкой ноды ознакомьтесь с рекомендациями для валидатора. Необходимо настроить валидатора совместно с sentry нодами для безопасности -  &lt;a href=&quot;https://github.com/network-lumen/validator-kit/blob/master/ops/validator_specs.md&quot; target=&quot;_blank&quot;&gt;https://github.com/network-lumen/validator-kit/blob/master/ops/validator_specs.md&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;uIPV&quot;&gt;Команда частями добавляет валидаторов в активный сет. Для того, чтобы заявить о себе настройте ноду валидатора, которая будет работать через sentry и расскажите о себе в дискорде на канале Introduction. Также команда рекомендует использовать сервера не в Европе и Индонезии для увеличения децентрализации и шансов попадания в активный сет. Подробнее о планах развития валидаторов здесь - &lt;a href=&quot;https://github.com/network-lumen/validator-kit/blob/master/ops/stake_bootstrap.md&quot; target=&quot;_blank&quot;&gt;https://github.com/network-lumen/validator-kit/blob/master/ops/stake_bootstrap.md&lt;/a&gt;&lt;/p&gt;
  &lt;p id=&quot;8hy3&quot;&gt;Команда проекта создала множество удобных скриптов для настройки как валидатора, так и sentry и RPC узлов&lt;/p&gt;
  &lt;p id=&quot;qCnR&quot;&gt;&lt;strong&gt;Для быстрой установки воспользуйтесь скриптом&lt;/strong&gt;&lt;/p&gt;
  &lt;pre data-lang=&quot;bash&quot; id=&quot;9xn7&quot;&gt;git clone https://github.com/network-lumen/validator-kit.git
cd validator-kit

./join.sh &amp;lt;moniker&amp;gt;

$HOME/validator-kit/bin/lumend version
# v1.3.0

cp $HOME//validator-kit/bin/lumend /usr/local/bin/lumend
lumend version
# v1.3.0

journalctl -u lumend -f -o cat&lt;/pre&gt;
  &lt;p id=&quot;vp48&quot;&gt;На данном этапе на сервере будет запущена full node и Вы можете оставить все как есть или внести необходимые Вам изменения через файлы конфигов&lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(236, 74%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;p id=&quot;6x9e&quot;&gt;&lt;strong&gt;Для установки актуального бинарного файла необходимо сделать следующее&lt;/strong&gt;&lt;/p&gt;
    &lt;pre id=&quot;NScm&quot; data-lang=&quot;bash&quot;&gt;systemctl stop lumend

sudo sed -i &amp;#x27;s|^ExecStart=/root/validator-kit/bin/lumend start --home /root/.lumen \\|ExecStart=/usr/local/bin/lumend start --home /root/.lumen \\|&amp;#x27; /etc/systemd/system/lumend.service
systemctl daemon-reload

SEEDS=&amp;quot;0a4bbe418246ca2b9d1dec063ea1cb8898c01763@77.42.72.251:26656,1a5cbd9d580f502f5af5ecc5762553da7a7c6584@65.21.253.43:26656,825673007163d80295eefc5c00ff54aee7b33a67@seed.blocksync.me:34656&amp;quot;

sed -i \
  -e &amp;quot;s/^seeds *=.*/seeds = \&amp;quot;$SEEDS\&amp;quot;/&amp;quot; \
  -e &amp;quot;s/^pex *=.*/pex = true/&amp;quot; \
  /root/.lumen/config/config.toml&lt;/pre&gt;
    &lt;pre id=&quot;NScm&quot; data-lang=&quot;bash&quot;&gt;cd /root/validator-kit
curl -L https://github.com/network-lumen/blockchain/releases/download/v1.5.2/linux-amd64-v1.5.2 -o lumend
chmod +x lumend
/root/validator-kit/lumend version --long
# version: v1.5.2
# commit: 94a79b6

mv /root/validator-kit/lumend /usr/local/bin/lumend
systemctl restart lumend &amp;amp;&amp;amp; journalctl -u lumend -f -o cat&lt;/pre&gt;
  &lt;/section&gt;
  &lt;p id=&quot;58GT&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;w41O&quot;&gt;Если нода не может поймать пиры, то обновите адресную книгу&lt;/p&gt;
  &lt;pre id=&quot;wx4p&quot; data-lang=&quot;bash&quot;&gt;wget -O $HOME/.lumen/config/addrbook.json &amp;quot;https://share.utsa.tech/lumen/addrbook.json&amp;quot;&lt;/pre&gt;
  &lt;section style=&quot;background-color:hsl(hsl(55,  86%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;p id=&quot;Yczk&quot;&gt;Рекомендации для validator, sentrys &lt;a href=&quot;https://github.com/network-lumen/validator-kit/blob/master/ops/validator_specs.md&quot; target=&quot;_blank&quot;&gt;https://github.com/network-lumen/validator-kit/blob/master/ops/validator_specs.md&lt;/a&gt;&lt;/p&gt;
    &lt;hr /&gt;
    &lt;p id=&quot;dxxv&quot;&gt;Обращаю Ваше внимание на то, что есть тонкие настройки sentry и validator. Вы можете воспользоваться готовым скриптом от команды на гитхабе или самостоятельно изменить настройки брандмауэра и конфигурационных файлов&lt;/p&gt;
    &lt;p id=&quot;oyLI&quot;&gt;При ручном изменении конфигураций необходимо как минимум:&lt;/p&gt;
    &lt;p id=&quot;SnHy&quot;&gt;Изменить настройки для validator&lt;/p&gt;
    &lt;pre id=&quot;U7m2&quot; data-lang=&quot;bash&quot;&gt;!!! CONFIG TOML
seeds = &amp;quot;&amp;quot;
pex = false
persistent_peers = &amp;quot;&amp;lt;PEER_SENTRY1,PEER_SENTRY2&amp;gt;&amp;quot;
private_peer_ids = &amp;quot;&amp;lt;ID_SENTRY1,ID_SENTRY2&amp;gt;&amp;quot;
unconditional_peer_ids = &amp;quot;&amp;lt;ID_SENTRY1,ID_SENTRY2&amp;gt;&amp;quot;&lt;/pre&gt;
    &lt;p id=&quot;SXLN&quot;&gt;Изменить настройки для sentrys&lt;/p&gt;
    &lt;pre id=&quot;gaVJ&quot; data-lang=&quot;bash&quot;&gt;!!! CONFIG TOML
pex = true
persistent_peers = &amp;quot;&amp;lt;PEER_VALIDATOR&amp;gt;&amp;quot;&lt;/pre&gt;
    &lt;p id=&quot;gaVJ&quot;&gt;Настроить Ваши брандмауэры для ограниченной связи sentry и validator&lt;/p&gt;
    &lt;p id=&quot;VVPd&quot;&gt;После того как Вы выполните все настройки и запустите ноды проверьте сколько peers имеется у Ваших нод. Для validator значение должно быть равно количеству Ваших sentrys&lt;/p&gt;
    &lt;pre id=&quot;AcFo&quot; data-lang=&quot;bash&quot;&gt;# проверка количества пиров
PORT=
curl -s http://localhost:$PORT/net_info | jq -r &amp;#x27;.result.peers[] | &amp;quot;\(.node_info.id)@\(.remote_ip):\(.node_info.listen_addr | split(&amp;quot;:&amp;quot;)[2])&amp;quot;&amp;#x27; | wc -l

# cписок моникеров подключенных пиров
curl -s http://localhost:$PORT/net_info | jq &amp;#x27;.result.peers[].node_info.moniker&amp;#x27;&lt;/pre&gt;
  &lt;/section&gt;
  &lt;p id=&quot;uTjh&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;KoQx&quot;&gt;Также Вы можете воспользоваться snapshot или state-sync. Пожалуйста, воспользуйтесь скриптами на гитхабе или командами ниже&lt;/p&gt;
  &lt;p id=&quot;nPwK&quot;&gt;&lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(236, 74%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;h2 id=&quot;5cMj&quot;&gt;State sync&lt;/h2&gt;
  &lt;/section&gt;
  &lt;section style=&quot;background-color:hsl(hsl(236, 74%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;pre data-lang=&quot;bash&quot; id=&quot;LXiP&quot;&gt;# add peer
peers=&amp;quot;546d284c7b7f7a717b06d17002f28ee746ded36f@144.76.29.90:26656&amp;quot;
sed -i.bak -e &amp;quot;s/^persistent_peers *=.*/persistent_peers = \&amp;quot;$peers\&amp;quot;/&amp;quot; $HOME/.lumen/config/config.toml&lt;/pre&gt;
    &lt;pre data-lang=&quot;bash&quot; id=&quot;zh3X&quot;&gt;SNAP_RPC=https://m-lumen.rpc.utsa.tech:443

LATEST_HEIGHT=$(curl -s $SNAP_RPC/block | jq -r .result.block.header.height); \
BLOCK_HEIGHT=$((LATEST_HEIGHT - 100)); \
TRUST_HASH=$(curl -s &amp;quot;$SNAP_RPC/block?height=$BLOCK_HEIGHT&amp;quot; | jq -r .result.block_id.hash)

echo $LATEST_HEIGHT $BLOCK_HEIGHT $TRUST_HASH

sed -i.bak -E &amp;quot;s|^(enable[[:space:]]+=[[:space:]]+).*$|\1true| ; \
s|^(rpc_servers[[:space:]]+=[[:space:]]+).*$|\1\&amp;quot;$SNAP_RPC,$SNAP_RPC\&amp;quot;| ; \
s|^(trust_height[[:space:]]+=[[:space:]]+).*$|\1$BLOCK_HEIGHT| ; \
s|^(trust_hash[[:space:]]+=[[:space:]]+).*$|\1\&amp;quot;$TRUST_HASH\&amp;quot;| ; \
s|^(seeds[[:space:]]+=[[:space:]]+).*$|\1\&amp;quot;\&amp;quot;|&amp;quot; $HOME/.lumen/config/config.toml&lt;/pre&gt;
    &lt;pre data-lang=&quot;bash&quot; id=&quot;O7KW&quot;&gt;systemctl restart lumend &amp;amp;&amp;amp; journalctl -u lumend -f -o cat&lt;/pre&gt;
  &lt;/section&gt;
  &lt;p id=&quot;pjza&quot;&gt;&lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(236, 74%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;h2 id=&quot;N1Bw&quot;&gt;&lt;strong&gt;Snapshot&lt;/strong&gt;&lt;/h2&gt;
  &lt;/section&gt;
  &lt;section style=&quot;background-color:hsl(hsl(236, 74%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;p id=&quot;yPUl&quot; data-align=&quot;center&quot;&gt;time: &lt;strong&gt;every __ hours&lt;/strong&gt; &lt;strong&gt;| &lt;/strong&gt;indexer:&lt;strong&gt; kv | &lt;/strong&gt;pruning:&lt;strong&gt; 1000/100&lt;/strong&gt;&lt;/p&gt;
    &lt;p id=&quot;SP72&quot; data-align=&quot;center&quot;&gt;🌐 &lt;a href=&quot;https://file.blocksync.me/lumen/&quot; target=&quot;_blank&quot;&gt;https://file.blocksync.me/lumen/&lt;/a&gt;&lt;/p&gt;
    &lt;pre data-lang=&quot;bash&quot; id=&quot;v6Yl&quot;&gt;cd $HOME
systemctl stop lumend

cp $HOME/.lumen/data/priv_validator_state.json $HOME/.lumen/priv_validator_state.json.backup

# удаляем старую базу данных
rm -rf $HOME/.lumen/data/{application.db,evidence.db,snapshots,tx_index.db,blockstore.db,state.db}

# скачиваем snapshot от blocksync
#curl -o - -L https://file.blocksync.me/lumen/snapshot_20260103.tar.lz4 | lz4 -c -d - | tar -x -C $HOME/.lumen/
curl -o - -L https://data.winsnip.xyz/list/mainnet/lumen/snapshot/lumen_snapshot-latest.tar.lz4 | lz4 -c -d - | tar -x -C $HOME/.lumen/

mv $HOME/.lumen/priv_validator_state.json.backup $HOME/.lumen/data/priv_validator_state.json

systemctl restart lumend &amp;amp;&amp;amp; journalctl -u lumend -f -o cat&lt;/pre&gt;
  &lt;/section&gt;
  &lt;p id=&quot;AwrS&quot;&gt;&lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(34,  84%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;h2 id=&quot;sBaD&quot;&gt;&lt;strong&gt;Создаем валидатора&lt;/strong&gt;&lt;/h2&gt;
  &lt;/section&gt;
  &lt;p id=&quot;uNd8&quot;&gt;&lt;strong&gt;Создаем или восстанавливаем кошелек и сохраняем вывод&lt;/strong&gt;&lt;/p&gt;
  &lt;pre data-lang=&quot;bash&quot; id=&quot;ztnj&quot;&gt;# создать кошелек
lumend keys add validator --home ~/.lumen --keyring-backend test

# восстановить кошелек (после команды вставить seed)
lumend keys add validator --home ~/.lumen --recover --keyring-backend test&lt;/pre&gt;
  &lt;p id=&quot;ztnj&quot;&gt;Для создания валидатора Вам необходимо будет воспользоваться скриптом ниже. Данный скрипт сделает следующее:&lt;/p&gt;
  &lt;ul id=&quot;hDdt&quot;&gt;
    &lt;li id=&quot;nRYk&quot;&gt;проверит, что ключ PQC validator-pqc существует (и сгенерирует его при необходимости);&lt;/li&gt;
    &lt;li id=&quot;GOm2&quot;&gt;свяжет учетную запись PQC в блокчейне, использует существующий открытый ключ консенсуса из &lt;code&gt;lumend tendermint show-validator;&lt;/code&gt;&lt;/li&gt;
    &lt;li id=&quot;WSM9&quot;&gt;отправит транзакцию стейкинга &lt;code&gt;create-validator&lt;/code&gt; с минимальным самоделегированием;&lt;/li&gt;
    &lt;li id=&quot;2k0T&quot;&gt;при необходимости создаст структурированную резервную копию в &lt;code&gt;~/.lumen/validator-node.bak&lt;/code&gt;&lt;/li&gt;
  &lt;/ul&gt;
  &lt;pre id=&quot;ztnj&quot; data-lang=&quot;bash&quot;&gt;cd
HOME_DIR=~/.lumen FROM=validator \
  ops/scripts/blockchain/become_validator.sh --moniker &amp;quot;&amp;lt;public-validator-name&amp;gt;&amp;quot;&lt;/pre&gt;
  &lt;section style=&quot;background-color:hsl(hsl(55,  86%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;p id=&quot;bgLL&quot;&gt;&lt;strong&gt;Валидаторы ДОЛЖНЫ создавать резервные копии ОБОИХ криптографических ключей:&lt;/strong&gt;&lt;/p&gt;
    &lt;ul id=&quot;spEX&quot;&gt;
      &lt;li id=&quot;qrF2&quot;&gt;✅ &lt;strong&gt;ключ ed25519&lt;/strong&gt; (классический ключ Cosmos)&lt;/li&gt;
      &lt;li id=&quot;lY9P&quot;&gt;✅ &lt;strong&gt;ключ PQC (Dilithium)&lt;/strong&gt;&lt;/li&gt;
    &lt;/ul&gt;
    &lt;p id=&quot;jBxb&quot;&gt;👉 &lt;strong&gt;Если Вы потеряете ОДИН из них, вы ЛИШИТЕСЬ ДОСТУПА К СВОИМ СРЕДСТВАМ!!!&lt;br /&gt;Подробнее о ключах здесь - &lt;a href=&quot;https://github.com/network-lumen/validator-kit/blob/master/learn/validator-key-hardening.md&quot; target=&quot;_blank&quot;&gt;https://github.com/network-lumen/validator-kit/blob/master/learn/validator-key-hardening.md&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
  &lt;/section&gt;
  &lt;p id=&quot;82Zp&quot;&gt;&lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(34,  84%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;h2 id=&quot;1eUH&quot;&gt;Полезные команды&lt;/h2&gt;
  &lt;/section&gt;
  &lt;p id=&quot;vgre&quot;&gt;&lt;strong&gt;Информация&lt;/strong&gt;&lt;/p&gt;
  &lt;pre data-lang=&quot;bash&quot; id=&quot;KCOZ&quot;&gt;# проверить логи
journalctl -u lumend -f -o cat
# проверить статус
curl localhost:$PORT/status | jq
# проверить баланс
lumend q bank balances &amp;lt;address&amp;gt;
# проверить pubkey валидатора
lumend tendermint show-validator
# проверить валидатора
lumend query staking validator &amp;lt;valoper_address&amp;gt;
lumend query staking validators --limit 1000000 -o json | jq &amp;#x27;.validators[] | select(.description.moniker==&amp;quot;&amp;lt;name_moniker&amp;gt;&amp;quot;)&amp;#x27; | jq
# проверка информации по TX_HASH
lumend query tx &amp;lt;TX_HASH&amp;gt;
# параметры сети
lumend q staking params
lumend q slashing params
# проверить сколько блоков пропущено валидатором и с какого блока актив
lumend q slashing signing-info $(lumend tendermint show-validator)
# проверить slashing
lumend q slashing signing-info $(lumend tendermint show-validator)
# узнать транзакцию создания валидатора (заменить свой valoper_address)
lumend query txs --events=&amp;#x27;create_validator.validator=&amp;lt;your_valoper_address&amp;gt;&amp;#x27; -o=json | jq .txs[0].txhash -r&lt;/pre&gt;
  &lt;p id=&quot;nXYz&quot;&gt;&lt;strong&gt;Транзакции&lt;/strong&gt;&lt;/p&gt;
  &lt;pre data-lang=&quot;bash&quot; id=&quot;SQXf&quot;&gt;# создать валидатора
HOME_DIR=/root/.lumen FROM=validator \
  ops/scripts/blockchain/become_validator.sh --moniker &amp;quot;UTSA&amp;quot;

# докинуть стейк
HOME_DIR=/root/.lumen FROM=validator \
  ops/scripts/blockchain/stake_tokens.sh --amount 1000000ulmn


# собрать награды
ADDR=$(lumend keys show validator -a --home /root/.lumen --keyring-backend test)

lumend tx distribution withdraw-rewards &amp;lt;lmnvaloperXXX&amp;gt; \
  --chain-id lumen \
  --from validator \
  --commission \
  --fees 0ulmn \
  --keyring-backend test \
  --pqc-enable \
  --pqc-from &amp;quot;$ADDR&amp;quot; \
  --pqc-key &amp;quot;validator-pqc&amp;quot; \
  --node tcp://127.0.0.1:26657

# отправить монеты
TO=&amp;quot;&amp;lt;lmn1addr&amp;gt;&amp;quot;
AMOUNT=&amp;quot;1200000ulmn&amp;quot;
ADDR=$(lumend keys show validator -a --home /root/.lumen --keyring-backend test)

lumend tx bank send &amp;quot;$ADDR&amp;quot; &amp;quot;$TO&amp;quot; &amp;quot;$AMOUNT&amp;quot; \
  --chain-id lumen \
  --from validator \
  --fees 0ulmn \
  --keyring-backend test \
  --pqc-enable \
  --pqc-from &amp;quot;$ADDR&amp;quot; \
  --pqc-key &amp;quot;validator-pqc&amp;quot; \
  --node tcp://127.0.0.1:26657 \
  -y&lt;/pre&gt;
  &lt;p id=&quot;zl2g&quot;&gt;&lt;strong&gt;Работа с кошельками&lt;/strong&gt;&lt;/p&gt;
  &lt;pre data-lang=&quot;bash&quot; id=&quot;xTjh&quot;&gt;# вывести список кошельков
lumend keys list --keyring-backend test

# показать ключ аккаунта
lumend keys show validator --bech acc --keyring-backend test

# показать ключ валидатора
lumend keys show validator --bech val --keyring-backend test

# показать ключ консенсуса
lumend keys show validator --bech cons --keyring-backend test

# удалить кошелек
lumend keys delete validator&lt;/pre&gt;
  &lt;p id=&quot;Qfld&quot;&gt;&lt;strong&gt;Удалить ноду&lt;/strong&gt;&lt;/p&gt;
  &lt;pre data-lang=&quot;bash&quot; id=&quot;24aT&quot;&gt;systemctl stop lumend &amp;amp;&amp;amp; \
systemctl disable lumend &amp;amp;&amp;amp; \
rm /etc/systemd/system/lumend.service &amp;amp;&amp;amp; \
systemctl daemon-reload &amp;amp;&amp;amp; \
cd $HOME &amp;amp;&amp;amp; \
rm -rf .lumen validator-kit &amp;amp;&amp;amp; \
rm -rf $(which lumend)&lt;/pre&gt;
  &lt;p id=&quot;fYh0&quot;&gt;&lt;strong&gt;ГОВЕРНАНС&lt;/strong&gt;&lt;/p&gt;
  &lt;pre data-lang=&quot;bash&quot; id=&quot;fRx5&quot;&gt;# список proposals
lumend q gov proposals

# посмотреть результат голосования
lumend q gov proposals --voter &amp;lt;ADDRESS&amp;gt;

# проголосовать за предложение 
HOME=/root/.lumen
KEYRING=test
FROM=validator
PROP_ID=8

ADDR=$(lumend keys show $FROM -a --home $HOME --keyring-backend $KEYRING)

lumend tx gov vote $PROP_ID yes \
  --chain-id lumen \
  --from $FROM \
  --keyring-backend $KEYRING \
  --fees 0ulmn \
  --gas auto \
  --gas-adjustment 1.5 \
  --node tcp://127.0.0.1:26657 \
  --pqc-enable \
  --pqc-from &amp;quot;$ADDR&amp;quot; \
  --pqc-key &amp;quot;validator-pqc&amp;quot; \
  -y&lt;/pre&gt;
  &lt;p id=&quot;chat-messages-932182862663389245&quot;&gt;&lt;strong&gt;Peers and RPC&lt;/strong&gt;&lt;/p&gt;
  &lt;pre data-lang=&quot;bash&quot; id=&quot;CFLR&quot;&gt;FOLDER=.lumen

# узнать свой peer
PORTR=$(grep -A 3 &amp;quot;\[p2p\]&amp;quot; ~/$FOLDER/config/config.toml | egrep -o &amp;quot;:[0-9]+&amp;quot;) &amp;amp;&amp;amp; \
echo $(lumend tendermint show-node-id)@$(wget -qO- eth0.me)$PORTR

# узнать порт RPC
echo -e &amp;quot;\033[0;32m$(grep -A 3 &amp;quot;\[rpc\]&amp;quot; ~/$FOLDER/config/config.toml | egrep -o &amp;quot;:[0-9]+&amp;quot;)\033[0m&amp;quot;

# проверка количества пиров
PORT=
curl -s http://localhost:$PORT/net_info | jq -r &amp;#x27;.result.peers[] | &amp;quot;\(.node_info.id)@\(.remote_ip):\(.node_info.listen_addr | split(&amp;quot;:&amp;quot;)[2])&amp;quot;&amp;#x27; | wc -l

# cписок моникеров подключенных пиров
curl -s http://localhost:$PORT/net_info | jq &amp;#x27;.result.peers[].node_info.moniker&amp;#x27;

# Проверка prevotes/precommits. Пригодится при обновах
curl -s localhost:$PORT/consensus_state | jq &amp;#x27;.result.round_state.height_vote_set[0].prevotes_bit_array&amp;#x27; &amp;amp;&amp;amp; \
curl -s localhost:$PORT/consensus_state | jq &amp;#x27;.result.round_state.height_vote_set[0].precommits_bit_array&amp;#x27;

# check prevote of your validator
curl -s localhost:$PORT/consensus_state -s | grep $(curl -s localhost:26657/status | jq -r .result.validator_info.address[:12])&lt;/pre&gt;
  &lt;figure id=&quot;cY95&quot; class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://img3.teletype.in/files/e9/28/e92895ca-f71d-497c-9fd2-2e7eeedd5303.png&quot; width=&quot;278&quot; /&gt;
  &lt;/figure&gt;

</content></entry><entry><id>lesnik13utsa:MWGQZbjRa2b</id><link rel="alternate" type="text/html" href="https://teletype.in/@lesnik13utsa/MWGQZbjRa2b?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=lesnik13utsa"></link><title>Canton Network</title><published>2025-10-04T09:01:57.035Z</published><updated>2025-10-04T21:06:54.693Z</updated><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img2.teletype.in/files/dd/5b/dd5b5933-699f-4cfb-a540-6dfb896266dd.png"></media:thumbnail><summary type="html">&lt;img src=&quot;https://img4.teletype.in/files/f0/1f/f01fd6c9-0980-4052-a054-5d5a0ca4e92d.png&quot;&gt;Canton Network</summary><content type="html">
  &lt;figure id=&quot;5fmi&quot; class=&quot;m_custom&quot;&gt;
    &lt;img src=&quot;https://img4.teletype.in/files/f0/1f/f01fd6c9-0980-4052-a054-5d5a0ca4e92d.png&quot; width=&quot;1065&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;vdYt&quot; data-align=&quot;center&quot;&gt;🪓 &lt;a href=&quot;https://t.me/utsa_channel&quot; target=&quot;_blank&quot;&gt;Telegram канал UTSA&lt;/a&gt; 🪓 &lt;a href=&quot;https://t.me/utsa_chat&quot; target=&quot;_blank&quot;&gt;Telegram чат UTSA&lt;/a&gt;&lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(236, 74%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;p id=&quot;6ser&quot; data-align=&quot;center&quot;&gt;&lt;strong&gt;&lt;a href=&quot;https://www.canton.network/&quot; target=&quot;_blank&quot;&gt;Web&lt;/a&gt; &lt;a href=&quot;https://twitter.com/CantonNetwork&quot; target=&quot;_blank&quot;&gt;Twitter&lt;/a&gt; &lt;a href=&quot;https://canton.thetie.io/&quot; target=&quot;_blank&quot;&gt;Dashboard&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
  &lt;/section&gt;
  &lt;p id=&quot;DF8U&quot;&gt;&lt;u&gt;&lt;strong&gt;Details&lt;/strong&gt;&lt;/u&gt;&lt;/p&gt;
  &lt;ul id=&quot;2h1F&quot;&gt;
    &lt;li id=&quot;ED8t&quot;&gt;Networks: &lt;code&gt;devnet; mainnet&lt;/code&gt;&lt;/li&gt;
    &lt;li id=&quot;ZxOs&quot;&gt;Working directory: &lt;code&gt;.canton&lt;/code&gt;&lt;/li&gt;
    &lt;li id=&quot;1UaE&quot;&gt;Explorer: &lt;a href=&quot;https://lighthouse.devnet.cantonloop.com/&quot; target=&quot;_blank&quot;&gt;https://lighthouse.devnet.cantonloop.com/&lt;/a&gt;&lt;/li&gt;
    &lt;li id=&quot;q4pT&quot;&gt;Интерфейс WALLET: &lt;a href=&quot;http://wallet.localhost/&quot; target=&quot;_blank&quot;&gt;http://wallet.localhost/&lt;/a&gt;&lt;/li&gt;
    &lt;li id=&quot;qtMN&quot;&gt;Интерфейс CNS: &lt;a href=&quot;http://ans.localhost/&quot; target=&quot;_blank&quot;&gt;http://ans.localhost/&lt;/a&gt;&lt;/li&gt;
    &lt;li id=&quot;MpzD&quot;&gt;Docs: &lt;a href=&quot;https://sync.global/docs/&quot; target=&quot;_blank&quot;&gt;https://sync.global/docs/&lt;/a&gt;&lt;/li&gt;
    &lt;li id=&quot;eK50&quot;&gt;WhitePaper: &lt;a href=&quot;https://www.canton.network/whitepaper&quot; target=&quot;_blank&quot;&gt;https://www.canton.network/whitepaper&lt;/a&gt;&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p id=&quot;xbFy&quot;&gt;&lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(55,  86%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;h2 id=&quot;i2L0&quot;&gt;&lt;strong&gt;Canton Network&lt;/strong&gt;&lt;/h2&gt;
  &lt;/section&gt;
  &lt;p id=&quot;0EDn&quot;&gt;&lt;strong&gt;Canton Network&lt;/strong&gt; — это первая в мире блокчейн-сеть с поддержкой конфиденциальности и полной межоперабельностью, ориентированная на &lt;strong&gt;реальные, регулируемые активы&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;8EDt&quot;&gt;Её цель - создать безопасную инфраструктуру, где финансовые организации могут взаимодействовать напрямую, не теряя контроля над данными и соблюдая требования регуляторов&lt;/p&gt;
  &lt;p id=&quot;iuuk&quot;&gt;В основе экосистемы лежит &lt;strong&gt;Global Synchronizer&lt;/strong&gt; - децентрализованный сервис, который обеспечивает синхронизацию и связь между независимыми блокчейнами внутри Canton Network. Он использует &lt;strong&gt;BFT-консенсус&lt;/strong&gt; и управляется открытым сообществом независимых организаций, называемых &lt;strong&gt;Super Validators&lt;/strong&gt;. Эти участники отвечают за надёжность, безопасность и порядок транзакций в сети&lt;/p&gt;
  &lt;hr /&gt;
  &lt;p id=&quot;k7xW&quot;&gt;🧩 &lt;strong&gt;Валидаторы: основа работы сети&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;m70p&quot;&gt;Помимо супер-валидаторов, важнейшую роль играют &lt;strong&gt;простые валидаторы&lt;/strong&gt; — именно им и посвящён этот гайд&lt;/p&gt;
  &lt;p id=&quot;7Adi&quot;&gt;&lt;strong&gt;Validators&lt;/strong&gt; - это участники, которые работают внутри Canton Network, проверяя транзакции, ведя учёт активности и обеспечивая связь между пользователями и приложениями&lt;/p&gt;
  &lt;p id=&quot;navY&quot;&gt;Каждый валидатор хранит только те данные, которые ему необходимы, и взаимодействует с другими узлами через синхронизаторы, что делает сеть масштабируемой и безопасной&lt;/p&gt;
  &lt;p id=&quot;XQSV&quot;&gt;Основные задачи валидатора:&lt;/p&gt;
  &lt;ul id=&quot;X5xf&quot;&gt;
    &lt;li id=&quot;9OQK&quot;&gt;Проверять транзакции и подтверждать их корректность;&lt;/li&gt;
    &lt;li id=&quot;JQNJ&quot;&gt;Записывать активность и обеспечивать целостность данных;&lt;/li&gt;
    &lt;li id=&quot;gD5q&quot;&gt;Поддерживать стабильное соединение между пользователями и приложениями;&lt;/li&gt;
    &lt;li id=&quot;EgpK&quot;&gt;Участвовать в обновлениях и миграциях сети&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p id=&quot;9jGD&quot;&gt;Активность и стабильность узла напрямую влияют на &lt;strong&gt;вознаграждение валидатора&lt;/strong&gt;. Сеть поощряет тех, кто работает надёжно и постоянно обрабатывает трафик - через механизм &lt;strong&gt;minting rewards&lt;/strong&gt; и &lt;strong&gt;liveness incentives&lt;/strong&gt;&lt;/p&gt;
  &lt;hr /&gt;
  &lt;p id=&quot;v3Su&quot;&gt;💰 &lt;strong&gt;Canton Coin и стимулы сети&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;n1Eo&quot;&gt;Нативный токен &lt;strong&gt;Canton Coin&lt;/strong&gt; используется для стимулирования участников сети. Он обеспечивает баланс между использованием и эмиссией - токены сжигаются при оплате комиссий и создаются вновь как вознаграждение активным валидаторам&lt;/p&gt;
  &lt;p id=&quot;ZQRn&quot;&gt;Таким образом, чем активнее используется сеть, тем устойчивее становится экономика Canton Network.&lt;/p&gt;
  &lt;hr /&gt;
  &lt;p id=&quot;q52r&quot;&gt;⚡ &lt;strong&gt;Сеть Canton создаёт фундамент для децентрализованной, но регулируемой финансовой инфраструктуры нового поколения&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;UABR&quot;&gt;Здесь роль валидаторов особенно значима - именно они обеспечивают надёжность и живучесть экосистемы, формируя её устойчивость и доверие&lt;/p&gt;
  &lt;hr /&gt;
  &lt;p id=&quot;aJJy&quot;&gt;💰 &lt;strong&gt;Инвестиции&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;SWIn&quot;&gt;Проект уже получил &lt;strong&gt;косвенные инвестиции около $400 млн&lt;/strong&gt; от топовых (Tier 1) фондов - &lt;a href=&quot;https://crypto-fundraising.info/projects/canton-network/&quot; target=&quot;_blank&quot;&gt;источник&lt;/a&gt;&lt;/p&gt;
  &lt;hr /&gt;
  &lt;p id=&quot;xNoE&quot;&gt;&lt;strong&gt;⚠️ Важно&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;ciw2&quot;&gt;Данный гайд описывает &lt;strong&gt;общие условия и принципы установки ноды Canton Network&lt;/strong&gt;&lt;/p&gt;
  &lt;ul id=&quot;MxqA&quot;&gt;
    &lt;li id=&quot;fhmL&quot;&gt;Перед запуском &lt;strong&gt;обязательно ознакомьтесь с официальной документацией&lt;/strong&gt; от команды проекта, только она содержит актуальные технические требования и инструкции по настройке&lt;/li&gt;
    &lt;li id=&quot;vybE&quot;&gt;Настоятельно рекомендуется &lt;strong&gt;обеспечить безопасность своего кошелька и приватных ключей&lt;/strong&gt;, особенно при запуске через docker-compose, так как развертывание по умолчанию крайне небезопасно -&lt;a href=&quot;https://docs.dev.sync.global/validator_operator/validator_compose.html#compose-validator-auth&quot; target=&quot;_blank&quot;&gt;https://docs.dev.sync.global/validator_operator/validator_compose.html#compose-validator-auth&lt;/a&gt;&lt;/li&gt;
    &lt;li id=&quot;QVPk&quot;&gt;&lt;strong&gt;Обязательно делайте резервные копии базы данных&lt;/strong&gt; - &lt;a href=&quot;https://docs.dev.sync.global/validator_operator/validator_backups.html#backup-of-node-identities&quot; target=&quot;_blank&quot;&gt;https://docs.dev.sync.global/validator_operator/validator_backups.html#backup-of-node-identities&lt;/a&gt;&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p id=&quot;0dTZ&quot;&gt;&lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(55,  86%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;h2 id=&quot;2e4N&quot;&gt;Подача заявки на валидатора&lt;/h2&gt;
  &lt;/section&gt;
  &lt;p id=&quot;RYUq&quot;&gt;Воспользуйтесь формой ниже, если Вы хотите настроить свою собственную ноду  в качестве оператора, заявка будет отправлена в Комитет по токеномике для рассмотрения. Процесс занимает примерно 2 недели&lt;/p&gt;
  &lt;p id=&quot;jdqP&quot;&gt;🔗 &lt;a href=&quot;https://sync.global/validator-request/&quot; target=&quot;_blank&quot;&gt;https://sync.global/validator-request/&lt;/a&gt;&lt;/p&gt;
  &lt;p id=&quot;WV72&quot;&gt;Для подачи заявки нельзя использовать бесплатную почту - воспользуйтесь собственной почтой на собственном домене&lt;/p&gt;
  &lt;p id=&quot;hrx4&quot;&gt;Более подробно с процессом развертывания валидатора Вы можете ознакомиться в данной статье - &lt;a href=&quot;https://docs.dev.sync.global/validator_operator/validator_onboarding.html&quot; target=&quot;_blank&quot;&gt;https://docs.dev.sync.global/validator_operator/validator_onboarding.html&lt;/a&gt;&lt;/p&gt;
  &lt;p id=&quot;Xxi0&quot;&gt;&lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(34,  84%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;h2 id=&quot;6FkE&quot;&gt;Подготовка сервера&lt;/h2&gt;
  &lt;/section&gt;
  &lt;pre data-lang=&quot;bash&quot; id=&quot;AZIc&quot;&gt;# обновляем репозитории
apt update &amp;amp;&amp;amp; apt upgrade -y

# устанавливаем необходимые утилиты
apt install curl iptables build-essential git wget jq make gcc nano tmux htop nvme-cli pkg-config libssl-dev libleveldb-dev tar clang bsdmainutils ncdu unzip libleveldb-dev -y&lt;/pre&gt;
  &lt;p id=&quot;M4EP&quot;&gt;&lt;strong&gt;File2Ban&lt;/strong&gt; - подробнее &lt;a href=&quot;https://putty.org.ru/articles/fail2ban-ssh.html&quot; target=&quot;_blank&quot;&gt;здесь&lt;/a&gt; и &lt;a href=&quot;https://www.linuxshop.ru/articles/a26710798-nastroyka_fail2ban&quot; target=&quot;_blank&quot;&gt;здесь&lt;/a&gt;&lt;/p&gt;
  &lt;pre data-lang=&quot;bash&quot; id=&quot;BwPC&quot;&gt;# устанавливаем и копируем конфиг, который будет иметь больший приоритет
apt install fail2ban -y &amp;amp;&amp;amp; \
cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local &amp;amp;&amp;amp; \
nano /etc/fail2ban/jail.local
# раскомментировать и добавить свой IP: ignoreip = 127.0.0.1/8 ::1 &amp;lt;ip&amp;gt;
systemctl restart fail2ban

# проверяем status 
systemctl status fail2ban
# проверяем, какие jails активны (по умолчанию только sshd)
fail2ban-client status
# проверяем статистику по sshd
fail2ban-client status sshd
# смотрим логи
tail /var/log/fail2ban.log
# останавливаем работу и удаляем с автозагрузки
#systemctl stop fail2ban &amp;amp;&amp;amp; systemctl disable fail2ban&lt;/pre&gt;
  &lt;p id=&quot;E2u0&quot;&gt;&lt;strong&gt;Устанавливаем docker + docker-compose&lt;/strong&gt;&lt;/p&gt;
  &lt;pre data-lang=&quot;bash&quot; id=&quot;Xe1p&quot;&gt;# https://www.digitalocean.com/community/tutorials/how-to-install-and-use-docker-on-ubuntu-20-04-ru
apt update &amp;amp;&amp;amp; \
apt install apt-transport-https ca-certificates curl software-properties-common -y &amp;amp;&amp;amp; \
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - &amp;amp;&amp;amp; \
add-apt-repository &amp;quot;deb [arch=amd64] https://download.docker.com/linux/ubuntu focal stable&amp;quot; &amp;amp;&amp;amp; \
apt update &amp;amp;&amp;amp; \
apt-cache policy docker-ce &amp;amp;&amp;amp; \
sudo apt install docker-ce -y &amp;amp;&amp;amp; \
docker --version&lt;/pre&gt;
  &lt;pre data-lang=&quot;bash&quot; id=&quot;mDSs&quot;&gt;# ручная установка docker-compose https://www.digitalocean.com/community/tutorials/how-to-install-and-use-docker-compose-on-ubuntu-20-04-ru
# проверяем версию https://github.com/docker/compose/releases и подставляем в команду установки
curl -L &amp;quot;https://github.com/docker/compose/releases/download/v2.10.1/docker-compose-$(uname -s)-$(uname -m)&amp;quot; -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
ln -sf /usr/local/bin/docker-compose /usr/bin/docker-compose

# проверить версию
docker-compose --version&lt;/pre&gt;
  &lt;p id=&quot;EUKz&quot;&gt;&lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(34,  84%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;h2 id=&quot;1b58&quot;&gt;Новая установка ноды&lt;/h2&gt;
  &lt;/section&gt;
  &lt;section style=&quot;background-color:hsl(hsl(323, 50%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;p id=&quot;ImyQ&quot;&gt;&lt;strong&gt;Важно:&lt;/strong&gt; развертывание по умолчанию через docker-compose крайне небезопасно, поэтому позаботьтесь о том, чтобы только Вы могли заходить на свой кошелек &lt;a href=&quot;http://wallet.localhost/&quot; target=&quot;_blank&quot;&gt;http://wallet.localhost/&lt;/a&gt;&lt;/p&gt;
    &lt;p id=&quot;bNMG&quot;&gt;В случае если Вы оставите порты открытыми, то любой сможет зайти на Ваш кошелек зная Ваш IP адрес. Пожалуйста создаете токен &lt;strong&gt;auth&lt;/strong&gt; или закройте порты в docker!!!&lt;/p&gt;
  &lt;/section&gt;
  &lt;p id=&quot;sjXD&quot;&gt;&lt;strong&gt;Создаем необходимые каталоги. Для каждой новой версии мы будем использовать новый каталог&lt;/strong&gt;&lt;/p&gt;
  &lt;pre data-lang=&quot;bash&quot; id=&quot;RzVi&quot;&gt;mkdir -p ~/.canton
mkdir -p ~/.canton/0.4.19
cd ~/.canton/0.4.19&lt;/pre&gt;
  &lt;p id=&quot;Y8zz&quot;&gt;&lt;strong&gt;Скачиваем архив с docker-compose&lt;/strong&gt;&lt;/p&gt;
  &lt;pre data-lang=&quot;bash&quot; id=&quot;vBX8&quot;&gt;wget https://github.com/digital-asset/decentralized-canton-sync/releases/download/v0.4.19/0.4.19_splice-node.tar.gz
tar xzvf 0.4.19_splice-node.tar.gz
cd ~/.canton/0.4.19/splice-node/docker-compose/validator&lt;/pre&gt;
  &lt;p id=&quot;dIgE&quot;&gt;&lt;strong&gt;Явно указываем версию для правильной сборки&lt;/strong&gt;&lt;/p&gt;
  &lt;pre id=&quot;ESzT&quot; data-lang=&quot;bash&quot;&gt;export IMAGE_TAG=0.4.19&lt;/pre&gt;
  &lt;p id=&quot;k0lB&quot;&gt;Для запуска ноды нам необходимо получить токен доступа. Для Devnet мы можем получить его самостоятельно, для Testnet и Mainnet нам необходимо получить его у спонсора&lt;/p&gt;
  &lt;p id=&quot;jHJa&quot;&gt;&lt;strong&gt;Получаем токен для DEVNET (действует 1 час)&lt;/strong&gt;&lt;br /&gt;# при первом включении используем его - при дальнейших запусках удаляем токен и оставляем &lt;code&gt;-o &amp;quot;&amp;quot;&lt;/code&gt;&lt;/p&gt;
  &lt;pre id=&quot;qC1C&quot; data-lang=&quot;bash&quot;&gt;curl -X POST https://sv.sv-1.dev.global.canton.network.sync.global/api/sv/v0/devnet/onboard/validator/prepare&lt;/pre&gt;
  &lt;p id=&quot;FR9F&quot;&gt;&lt;strong&gt;Запускаем ноду&lt;/strong&gt;&lt;/p&gt;
  &lt;pre id=&quot;zmhm&quot;&gt;./start.sh -s &amp;quot;&amp;lt;SPONSOR_SV_URL&amp;gt;&amp;quot; -o &amp;quot;&amp;lt;ONBOARDING_SECRET&amp;gt;&amp;quot; -p &amp;quot;&amp;lt;party_hint&amp;gt;&amp;quot; -m &amp;quot;&amp;lt;MIGRATION_ID&amp;gt;&amp;quot; -w&lt;/pre&gt;
  &lt;section style=&quot;background-color:hsl(hsl(323, 50%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;p id=&quot;mqSD&quot;&gt;Где:&lt;/p&gt;
    &lt;ul id=&quot;3lNf&quot;&gt;
      &lt;li id=&quot;mMSC&quot;&gt;&amp;lt;SPONSOR_SV_URL&amp;gt; = &lt;a href=&quot;https://sv.sv-1.dev.global.canton.network.sync.global&quot; target=&quot;_blank&quot;&gt;https://sv.sv-1.dev.global.canton.network.sync.global&lt;/a&gt;&lt;/li&gt;
      &lt;li id=&quot;RS0W&quot;&gt;&amp;lt;ONBOARDING_SECRET&amp;gt; = Ваш токен для Devnet&lt;/li&gt;
      &lt;li id=&quot;EhX1&quot;&gt;&amp;lt;party_hint&amp;gt;= Ваше название валидатора (пример: Val-validator-1)&lt;/li&gt;
      &lt;li id=&quot;huwo&quot;&gt;&amp;lt;MIGRATION_ID&amp;gt;=0 для Devnet (смотрим здесь - &lt;a href=&quot;https://sync.global/sv-network/&quot; target=&quot;_blank&quot;&gt;https://sync.global/sv-network/&lt;/a&gt;)&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/section&gt;
  &lt;p id=&quot;bVHt&quot;&gt;&lt;strong&gt;После успешного запуска Вы можете проверить логи&lt;/strong&gt;&lt;/p&gt;
  &lt;pre id=&quot;hApt&quot; data-lang=&quot;bash&quot;&gt;cd /root/.canton/0.4.19/splice-node/docker-compose/validator
docker compose logs -f validator&lt;/pre&gt;
  &lt;figure id=&quot;fn0B&quot; class=&quot;m_custom&quot;&gt;
    &lt;img src=&quot;https://img4.teletype.in/files/f1/d0/f1d0706d-010e-46d4-aba4-5e36ab48b203.png&quot; width=&quot;965&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;NAGB&quot;&gt;Обратите внимание, что валидатор можно остановить с помощью команды &lt;code&gt;./stop.sh&lt;/code&gt; и перезапустить с помощью той же команды &lt;code&gt;start.sh&lt;/code&gt;, как указано выше. При последующих вызовах токен можно не указывать и оставить поле пустым, но флаг &lt;code&gt;-o&lt;/code&gt; по-прежнему обязателен, поэтому необходимо указать аргумент &lt;code&gt;-o &amp;quot;&amp;quot;&lt;/code&gt;&lt;/p&gt;
  &lt;p id=&quot;8U3w&quot;&gt;&lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(55,  86%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;h2 id=&quot;1eUH&quot;&gt;Полезные команды&lt;/h2&gt;
  &lt;/section&gt;
  &lt;p id=&quot;Fuvu&quot;&gt;&lt;strong&gt;Посмотреть логи&lt;/strong&gt;&lt;/p&gt;
  &lt;pre data-lang=&quot;bash&quot; id=&quot;KP5m&quot;&gt;cd ~/.canton/0.4.19/splice-node/docker-compose/validator
docker compose logs -f validator&lt;/pre&gt;
  &lt;p id=&quot;Qfld&quot;&gt;&lt;strong&gt;Остановить ноду&lt;/strong&gt;&lt;/p&gt;
  &lt;pre data-lang=&quot;bash&quot; id=&quot;1oae&quot;&gt;cd ~/.canton/0.4.19/splice-node/docker-compose/validator
./stop.sh&lt;/pre&gt;
  &lt;p id=&quot;NaAg&quot;&gt;&lt;strong&gt;Запустить ноду повторно&lt;/strong&gt;&lt;/p&gt;
  &lt;pre id=&quot;pKyr&quot; data-lang=&quot;bash&quot;&gt;cd ~/.canton/0.4.19/splice-node/docker-compose/validator
./start.sh -s &amp;quot;https://sv.sv-1.dev.global.canton.network.sync.global&amp;quot; -o &amp;quot;&amp;quot; -p &amp;quot;&lt;/pre&gt;
  &lt;p id=&quot;2HAs&quot;&gt;&lt;strong&gt;Проверить приняли ли IP супервалидаторы для Devnet&lt;/strong&gt;&lt;/p&gt;
  &lt;pre id=&quot;rptk&quot; data-lang=&quot;bash&quot;&gt;(set -o pipefail
CURL=&amp;#x27;curl -fsS -m 5 --connect-timeout 5&amp;#x27;
for url in $($CURL https://scan.sv-1.dev.global.canton.network.sync.global/api/scan/v0/scans | jq -r &amp;#x27;.scans[].scans[].publicUrl&amp;#x27;); do
  echo -n &amp;quot;$url: &amp;quot;
  $CURL &amp;quot;$url&amp;quot;/api/scan/version | jq -r &amp;#x27;.version&amp;#x27;
done)&lt;/pre&gt;
  &lt;p id=&quot;pakl&quot;&gt;&lt;strong&gt;Проверить приняли ли IP супервалидаторы для Mainnet&lt;/strong&gt;&lt;/p&gt;
  &lt;pre id=&quot;3MwN&quot; data-lang=&quot;bash&quot;&gt;(set -o pipefail
CURL=&amp;#x27;curl -fsS -m 5 --connect-timeout 5&amp;#x27;
for url in $($CURL https://scan.sv-1.global.canton.network.sync.global/api/scan/v0/scans | jq -r &amp;#x27;.scans[].scans[].publicUrl&amp;#x27;); do
  echo -n &amp;quot;$url: &amp;quot;
  $CURL &amp;quot;$url&amp;quot;/api/scan/version | jq -r &amp;#x27;.version&amp;#x27;
done)&lt;/pre&gt;
  &lt;p id=&quot;K1f2&quot;&gt;&lt;strong&gt;Пример обновления. Перед обновлением обязательно делайте резервные копии&lt;/strong&gt;&lt;/p&gt;
  &lt;pre id=&quot;1oae&quot; data-lang=&quot;bash&quot;&gt;# останавливаем ноду
cd ~/.canton/0.4.18/splice-node/docker-compose/validator
./stop.sh

# создаем отдельный каталог
mkdir -p ~/.canton/0.4.19
cd ~/.canton/0.4.19

# скачиваем архив
wget https://github.com/digital-asset/decentralized-canton-sync/releases/download/v0.4.19/0.4.19_splice-node.tar.gz
tar xzvf 0.4.19_splice-node.tar.gz
cd ~/.canton/0.4.19/splice-node/docker-compose/validator

#экпортируем версию!!!
export IMAGE_TAG=0.4.19

# запускаем - -o &amp;quot;&amp;quot; оставляем пустыми (без токена), так как он вводится только 1 раз
# ./start.sh -s &amp;quot;&amp;lt;SPONSOR_SV_URL&amp;gt;&amp;quot; -o &amp;quot;&amp;lt;ONBOARDING_SECRET&amp;gt;&amp;quot; -p &amp;quot;&amp;lt;party_hint&amp;gt;&amp;quot; -m &amp;quot;&amp;lt;MIGRATION_ID&amp;gt;&amp;quot; -w

# посмотреть логи
cd ~/.canton/0.4.19/splice-node/docker-compose/validator
docker compose logs -f validator&lt;/pre&gt;
  &lt;figure id=&quot;MBuk&quot; class=&quot;m_original&quot; data-caption-align=&quot;center&quot;&gt;
    &lt;img src=&quot;https://img3.teletype.in/files/e9/28/e92895ca-f71d-497c-9fd2-2e7eeedd5303.png&quot; width=&quot;278&quot; /&gt;
    &lt;figcaption&gt;&lt;strong&gt;Поддержим природу вместе: 0xa7476EC14cD663C742d527113638C77a1631Cc89 cosmos1m2mm7kzvw6m3464h94ryqg8xvr6tyeyyecppnq&lt;/strong&gt;&lt;/figcaption&gt;
  &lt;/figure&gt;

</content></entry><entry><id>lesnik13utsa:r9Z_bQwRqdd</id><link rel="alternate" type="text/html" href="https://teletype.in/@lesnik13utsa/r9Z_bQwRqdd?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=lesnik13utsa"></link><title>XRPL EVM (testnet)</title><published>2025-03-01T17:44:12.063Z</published><updated>2025-05-24T09:15:25.810Z</updated><category term="cosmos" label="COSMOS"></category><summary type="html">&lt;img src=&quot;https://img3.teletype.in/files/ac/6e/ac6e1e0d-defd-49a8-a013-982f0a502db0.png&quot;&gt;UTSA</summary><content type="html">
  &lt;figure id=&quot;S1KG&quot; class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://img3.teletype.in/files/ac/6e/ac6e1e0d-defd-49a8-a013-982f0a502db0.png&quot; width=&quot;820&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;head&quot; data-align=&quot;center&quot;&gt;🪓 &lt;a href=&quot;https://t.me/utsa_channel&quot; target=&quot;_blank&quot;&gt;Telegram канал UTSA&lt;/a&gt; 🪓 &lt;a href=&quot;https://t.me/utsa_chat&quot; target=&quot;_blank&quot;&gt;Telegram чат UTSA&lt;/a&gt;&lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(236, 74%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;p id=&quot;D2wo&quot; data-align=&quot;center&quot;&gt;&lt;strong&gt;Web &lt;a href=&quot;https://discord.gg/S26j3f5aqb&quot; target=&quot;_blank&quot;&gt;Discord&lt;/a&gt; &lt;a href=&quot;https://github.com/xrplevm/node&quot; target=&quot;_blank&quot;&gt;Github&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
  &lt;/section&gt;
  &lt;p id=&quot;sHgA&quot;&gt;&lt;u&gt;&lt;strong&gt;Testnet details&lt;/strong&gt;&lt;/u&gt;&lt;/p&gt;
  &lt;ul id=&quot;2h1F&quot;&gt;
    &lt;li id=&quot;ED8t&quot;&gt;Network Chain ID: &lt;code&gt;xrplevm_1449000-1&lt;/code&gt;&lt;/li&gt;
    &lt;li id=&quot;8tyv&quot;&gt;Denom stake: &lt;code&gt;axrp&lt;/code&gt;&lt;/li&gt;
    &lt;li id=&quot;SZWc&quot;&gt;Binary: &lt;code&gt;exrpd&lt;/code&gt;&lt;/li&gt;
    &lt;li id=&quot;OnH1&quot;&gt;Working directory: &lt;code&gt;.exrpd&lt;/code&gt;&lt;/li&gt;
    &lt;li id=&quot;AdcU&quot;&gt;RPC: &lt;a href=&quot;https://t-xrpl.rpc.utsa.tech/&quot; target=&quot;_blank&quot;&gt;https://t-xrpl.rpc.utsa.tech/&lt;/a&gt;&lt;/li&gt;
    &lt;li id=&quot;LaYP&quot;&gt;API: &lt;a href=&quot;https://t-xrpl.api.utsa.tech/&quot; target=&quot;_blank&quot;&gt;https://t-xrpl.api.utsa.tech/&lt;/a&gt;&lt;/li&gt;
    &lt;li id=&quot;Z8rq&quot;&gt;gRPC: &lt;code&gt;t-xrpl.grpc.utsa.tech:433&lt;/code&gt;&lt;/li&gt;
    &lt;li id=&quot;NAC1&quot;&gt;EVM RPC: &lt;code&gt;t-xrpl.evm.utsa.tech&lt;/code&gt;&lt;/li&gt;
    &lt;li id=&quot;am20&quot;&gt;EVM WSS: &lt;code&gt;wss://t-xrpl.wss.utsa.tech:443&lt;/code&gt;&lt;/li&gt;
    &lt;li id=&quot;W5Z0&quot;&gt;Explorer: &lt;a href=&quot;https://exp.utsa.tech/xrpl-testnet/staking&quot; target=&quot;_blank&quot;&gt;https://exp.utsa.tech/xrpl-testnet/staking&lt;/a&gt;&lt;/li&gt;
    &lt;li id=&quot;jHeg&quot;&gt;Explorer: &lt;a href=&quot;https://governance.xrplevm.org/xrplevm&quot; target=&quot;_blank&quot;&gt;https://governance.xrplevm.org/xrplevm&lt;/a&gt;&lt;/li&gt;
    &lt;li id=&quot;ZvSO&quot;&gt;Docs: &lt;a href=&quot;https://docs.xrplevm.org/pages/operators/getting-started/installing-the-node&quot; target=&quot;_blank&quot;&gt;https://docs.xrplevm.org/pages/operators/getting-started/installing-the-node&lt;/a&gt;&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p id=&quot;motH&quot;&gt;&lt;/p&gt;
  &lt;hr /&gt;
  &lt;section style=&quot;background-color:hsl(hsl(236, 74%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;pre data-lang=&quot;bash&quot; id=&quot;K9xb&quot;&gt;# проверяем статус prevotes/precommits
FOLDER=.exrpd

# узнать порт RPC
echo -e &amp;quot;\033[0;32m$(grep -A 3 &amp;quot;\[rpc\]&amp;quot; ~/$FOLDER/config/config.toml | egrep -o &amp;quot;:[0-9]+&amp;quot;)\033[0m&amp;quot;

PORT=&amp;lt;ввести свой порт&amp;gt;

# Проверка prevotes/precommits. Пригодится при обновах
curl -s localhost:$PORT/consensus_state | jq &amp;#x27;.result.round_state.height_vote_set[0].prevotes_bit_array&amp;#x27; &amp;amp;&amp;amp; \
curl -s localhost:$PORT/consensus_state | jq &amp;#x27;.result.round_state.height_vote_set[0].precommits_bit_array&amp;#x27;&lt;/pre&gt;
  &lt;/section&gt;
  &lt;section style=&quot;background-color:hsl(hsl(236, 74%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;p id=&quot;CJUj&quot;&gt;&lt;strong&gt;UPD 🕊 v8.0.0 (Высота обновления: 1485600)&lt;/strong&gt;&lt;/p&gt;
    &lt;pre data-lang=&quot;bash&quot; id=&quot;HMSi&quot;&gt;cd $HOME/xrpl
git pull
git checkout v8.0.0
make build
$HOME/xrpl/bin/exrpd version --long | grep -e version -e commit
# version: v8.0.0
# commit: 8d92d087b9a1014de748b8887868e0e90b97b56f

# # ПОСЛЕ ОСТАНОВКИ СЕТИ НА НУЖНОМ БЛОКЕ!!!
systemctl stop exrpd
mv $HOME/xrpl/bin/exrpd $(which exrpd)
exrpd version --long | grep -e version -e commit
#

systemctl restart exrpd &amp;amp;&amp;amp; journalctl -u exrpd -f -o cat&lt;/pre&gt;
  &lt;/section&gt;
  &lt;p id=&quot;PFZP&quot;&gt;&lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(34,  84%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;h2 id=&quot;6FkE&quot;&gt;Подготовка сервера&lt;/h2&gt;
  &lt;/section&gt;
  &lt;pre data-lang=&quot;bash&quot; id=&quot;bYXJ&quot;&gt;# обновляем репозитории
apt update &amp;amp;&amp;amp; sudo apt upgrade -y

# устанавливаем необходимые утилиты
apt install curl build-essential git wget jq make gcc tmux htop nvme-cli pkg-config libssl-dev libleveldb-dev tar clang bsdmainutils ncdu unzip libleveldb-dev -y

# проверяем работу жестких дисков
curl -sL yabs.sh | bash -s — -ig

# проверяем работу интернета
curl -sL yabs.sh | bash -s — -fg&lt;/pre&gt;
  &lt;p id=&quot;M4EP&quot;&gt;&lt;strong&gt;File2Ban&lt;/strong&gt; - подробнее &lt;a href=&quot;https://www.linuxshop.ru/articles/a26710798-nastroyka_fail2ban&quot; target=&quot;_blank&quot;&gt;здесь&lt;/a&gt;&lt;/p&gt;
  &lt;pre data-lang=&quot;bash&quot; id=&quot;Ffrt&quot;&gt;# устанавливаем и копируем конфиг, который будет иметь больший приоритет
apt install fail2ban -y &amp;amp;&amp;amp; \
cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local &amp;amp;&amp;amp; \
nano /etc/fail2ban/jail.local
# раскомментировать и добавить свой IP: ignoreip = 127.0.0.1/8 ::1 &amp;lt;ip&amp;gt;
systemctl restart fail2ban

# проверяем status 
systemctl status fail2ban
# проверяем, какие jails активны (по умолчанию только sshd)
fail2ban-client status
# проверяем статистику по sshd
fail2ban-client status sshd
# смотрим логи
tail /var/log/fail2ban.log
# останавливаем работу и удаляем с автозагрузки
#systemctl stop fail2ban &amp;amp;&amp;amp; systemctl disable fail2ban&lt;/pre&gt;
  &lt;p id=&quot;eKUj&quot;&gt;&lt;strong&gt;Устанавливаем Go&lt;/strong&gt;&lt;/p&gt;
  &lt;pre data-lang=&quot;bash&quot; id=&quot;ac95&quot;&gt;ver=&amp;quot;1.21.13&amp;quot; &amp;amp;&amp;amp; \
wget &amp;quot;https://golang.org/dl/go$ver.linux-amd64.tar.gz&amp;quot; &amp;amp;&amp;amp; \
sudo rm -rf /usr/local/go &amp;amp;&amp;amp; \
sudo tar -C /usr/local -xzf &amp;quot;go$ver.linux-amd64.tar.gz&amp;quot; &amp;amp;&amp;amp; \
rm &amp;quot;go$ver.linux-amd64.tar.gz&amp;quot; &amp;amp;&amp;amp; \
echo &amp;quot;export PATH=$PATH:/usr/local/go/bin:$HOME/go/bin&amp;quot; &amp;gt;&amp;gt; $HOME/.bash_profile &amp;amp;&amp;amp; \
source $HOME/.bash_profile &amp;amp;&amp;amp; \
go version&lt;/pre&gt;
  &lt;p id=&quot;xUzv&quot;&gt;&lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(34,  84%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;h2 id=&quot;1b58&quot;&gt;Новая установка ноды&lt;/h2&gt;
  &lt;/section&gt;
  &lt;section&gt;
    &lt;p id=&quot;z8pZ&quot;&gt;&lt;u&gt;&lt;em&gt;&lt;strong&gt;ВАЖНО &lt;/strong&gt;— в командах ниже все, что в &lt;strong&gt;&amp;lt;&amp;gt;&lt;/strong&gt; меняем на свое значение и убираем сами&lt;strong&gt; &amp;lt;&amp;gt;&lt;/strong&gt;&lt;/em&gt;&lt;/u&gt;&lt;/p&gt;
  &lt;/section&gt;
  &lt;p id=&quot;sjXD&quot;&gt;&lt;strong&gt;Устанавливаем бинарники&lt;/strong&gt;&lt;/p&gt;
  &lt;pre data-lang=&quot;bash&quot; id=&quot;4J9d&quot;&gt;git clone https://github.com/xrplevm/node xrpl &amp;amp;&amp;amp; cd xrpl
git checkout v8.0.0
make install

exrpd version --long | grep -e version -e commit
# version: v8.0.0
# commit: 8d92d087b9a1014de748b8887868e0e90b97b56f&lt;/pre&gt;
  &lt;p id=&quot;vp48&quot;&gt;&lt;strong&gt;Инициализируем ноду, чтобы создать необходимые файлы конфигурации&lt;/strong&gt;&lt;/p&gt;
  &lt;pre data-lang=&quot;bash&quot; id=&quot;Miqc&quot;&gt;exrpd init UTSA_guide --chain-id xrplevm_1449000-1&lt;/pre&gt;
  &lt;p id=&quot;Qrh4&quot;&gt;&lt;strong&gt;Скачиваем Genesis&lt;/strong&gt;&lt;/p&gt;
  &lt;pre data-lang=&quot;bash&quot; id=&quot;x5XQ&quot;&gt;wget -O $HOME/.exrpd/config/genesis.json &amp;quot;https://raw.githubusercontent.com/xrplevm/networks/refs/heads/main/testnet/genesis.json&amp;quot;

# Проверим генезис
sha256sum ~/.exrpd/config/genesis.json
# 3431b691e99742921d9b092ae7796a791f4a3df0fd532fd3e876245a05e15ea9&lt;/pre&gt;
  &lt;p id=&quot;4cmW&quot;&gt;&lt;strong&gt;Скачиваем Addr book&lt;/strong&gt;&lt;/p&gt;
  &lt;pre data-lang=&quot;bash&quot; id=&quot;N1Hb&quot;&gt;wget -O $HOME/.exrpd/config/addrbook.json &amp;quot;https://share102.utsa.tech/xrpl/addrbook.json&amp;quot;&lt;/pre&gt;
  &lt;p id=&quot;LpCO&quot;&gt;&lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(34,  84%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;h2 id=&quot;kBZ8&quot;&gt;Настраиваем конфигурацию ноды&lt;/h2&gt;
  &lt;/section&gt;
  &lt;pre data-lang=&quot;bash&quot; id=&quot;9Fj8&quot;&gt;# правим конфиг, благодаря чему мы можем больше не использовать флаг chain-id для каждой команды CLI в client.toml
sed -i.bak -e &amp;quot;s/^chain-id *=.*/chain-id = \&amp;quot;xrplevm_1449000-1\&amp;quot;/;&amp;quot; ~/.exrpd/config/client.toml
sed -i.bak -e &amp;quot;s/^keyring-backend *=.*/keyring-backend = \&amp;quot;os\&amp;quot;/;&amp;quot; ~/.exrpd/config/client.toml

# настраиваем минимальную цену за газ в app.toml
sed -i.bak -e &amp;quot;s/^minimum-gas-prices *=.*/minimum-gas-prices = \&amp;quot;0.0025axrp\&amp;quot;/;&amp;quot; ~/.exrpd/config/app.toml

# добавляем seeds/bpeers/peers в config.toml
external_address=$(wget -qO- eth0.me)
sed -i.bak -e &amp;quot;s/^external_address *=.*/external_address = \&amp;quot;$external_address:26656\&amp;quot;/&amp;quot; $HOME/.exrpd/config/config.toml

peers=&amp;quot;&amp;quot;
sed -i.bak -e &amp;quot;s/^persistent_peers *=.*/persistent_peers = \&amp;quot;$peers\&amp;quot;/&amp;quot; $HOME/.exrpd/config/config.toml
seeds=&amp;quot;&amp;quot;
sed -i.bak -e &amp;quot;s/^seeds =.*/seeds = \&amp;quot;$seeds\&amp;quot;/&amp;quot; $HOME/.exrpd/config/config.toml
PEERS=&amp;#x60;curl -sL https://raw.githubusercontent.com/xrplevm/networks/main/testnet/peers.txt | sort -R | head -n 10 | awk &amp;#x27;{print $1}&amp;#x27; | paste -s -d, -&amp;#x60;
sed -i.bak -e &amp;quot;s/^seeds *=.*/seeds = \&amp;quot;$PEERS\&amp;quot;/&amp;quot; ~/.exrpd/config/config.toml

# настраиваем фильтрацию &amp;quot;плохих&amp;quot; peers
sed -i -e &amp;quot;s/^filter_peers *=.*/filter_peers = \&amp;quot;true\&amp;quot;/&amp;quot; $HOME/.exrpd/config/config.toml&lt;/pre&gt;
  &lt;p id=&quot;QI2Z&quot;&gt;&lt;strong&gt;(ОПЦИОНАЛЬНО) Настраиваем прунинг в&lt;code&gt;app.toml&lt;/code&gt;&lt;/strong&gt;&lt;/p&gt;
  &lt;pre data-lang=&quot;bash&quot; id=&quot;ATId&quot;&gt;pruning=&amp;quot;custom&amp;quot;
pruning_keep_recent=&amp;quot;1000&amp;quot;
pruning_interval=&amp;quot;100&amp;quot;
sed -i -e &amp;quot;s/^pruning *=.*/pruning = \&amp;quot;$pruning\&amp;quot;/&amp;quot; $HOME/.exrpd/config/app.toml
sed -i -e &amp;quot;s/^pruning-keep-recent *=.*/pruning-keep-recent = \&amp;quot;$pruning_keep_recent\&amp;quot;/&amp;quot; $HOME/.exrpd/config/app.toml
sed -i -e &amp;quot;s/^pruning-interval *=.*/pruning-interval = \&amp;quot;$pruning_interval\&amp;quot;/&amp;quot; $HOME/.exrpd/config/app.toml&lt;/pre&gt;
  &lt;p id=&quot;dGeO&quot;&gt;&lt;strong&gt;(ОПЦИОНАЛЬНО) Выкл индексацию в&lt;code&gt;config.toml&lt;/code&gt;&lt;/strong&gt;&lt;/p&gt;
  &lt;pre data-lang=&quot;bash&quot; id=&quot;tlXv&quot;&gt;indexer=&amp;quot;null&amp;quot;
sed -i -e &amp;quot;s/^indexer *=.*/indexer = \&amp;quot;$indexer\&amp;quot;/&amp;quot; $HOME/.exrpd/config/config.toml&lt;/pre&gt;
  &lt;p id=&quot;UDzq&quot;&gt;&lt;strong&gt;(ОПЦИОНАЛЬНО) Вкл/выкл снэпшоты в&lt;code&gt;app.toml&lt;/code&gt;&lt;/strong&gt;&lt;/p&gt;
  &lt;pre data-lang=&quot;bash&quot; id=&quot;kxKy&quot;&gt;snapshot_interval=1000
sed -i.bak -e &amp;quot;s/^snapshot-interval *=.*/snapshot-interval = \&amp;quot;$snapshot_interval\&amp;quot;/&amp;quot; ~/.exrpd/config/app.toml&lt;/pre&gt;
  &lt;p id=&quot;igmo&quot;&gt;&lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(34,  84%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;h2 id=&quot;5cMj&quot;&gt;State sync&lt;/h2&gt;
  &lt;/section&gt;
  &lt;section style=&quot;background-color:hsl(hsl(236, 74%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;pre data-lang=&quot;bash&quot; id=&quot;PZt7&quot;&gt;# add peer
peers=&amp;quot;4a132daa35f22194e332cea80f5e25e7b28f2786@5.9.87.231:26656&amp;quot;
sed -i.bak -e &amp;quot;s/^persistent_peers *=.*/persistent_peers = \&amp;quot;$peers\&amp;quot;/&amp;quot; $HOME/.exrpd/config/config.toml&lt;/pre&gt;
    &lt;pre data-lang=&quot;bash&quot; id=&quot;6SCM&quot;&gt;SNAP_RPC=https://t-xrpl.rpc.utsa.tech:443

LATEST_HEIGHT=$(curl -s $SNAP_RPC/block | jq -r .result.block.header.height); \
BLOCK_HEIGHT=$((LATEST_HEIGHT - 100)); \
TRUST_HASH=$(curl -s &amp;quot;$SNAP_RPC/block?height=$BLOCK_HEIGHT&amp;quot; | jq -r .result.block_id.hash)

echo $LATEST_HEIGHT $BLOCK_HEIGHT $TRUST_HASH

sed -i.bak -E &amp;quot;s|^(enable[[:space:]]+=[[:space:]]+).*$|\1true| ; \
s|^(rpc_servers[[:space:]]+=[[:space:]]+).*$|\1\&amp;quot;$SNAP_RPC,$SNAP_RPC\&amp;quot;| ; \
s|^(trust_height[[:space:]]+=[[:space:]]+).*$|\1$BLOCK_HEIGHT| ; \
s|^(trust_hash[[:space:]]+=[[:space:]]+).*$|\1\&amp;quot;$TRUST_HASH\&amp;quot;| ; \
s|^(seeds[[:space:]]+=[[:space:]]+).*$|\1\&amp;quot;\&amp;quot;|&amp;quot; $HOME/.exrpd/config/config.toml&lt;/pre&gt;
    &lt;pre data-lang=&quot;bash&quot; id=&quot;pwPu&quot;&gt;systemctl restart exrpd &amp;amp;&amp;amp; journalctl -u exrpd -f -o cat&lt;/pre&gt;
  &lt;/section&gt;
  &lt;p id=&quot;W54Q&quot;&gt;&lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(34,  84%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;h2 id=&quot;N1Bw&quot;&gt;&lt;strong&gt;Snapshots&lt;/strong&gt;&lt;/h2&gt;
  &lt;/section&gt;
  &lt;section style=&quot;background-color:hsl(hsl(236, 74%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;p id=&quot;yPUl&quot; data-align=&quot;center&quot;&gt;time: &lt;strong&gt;every 24 hours&lt;/strong&gt; &lt;strong&gt;| &lt;/strong&gt;indexer:&lt;strong&gt; kv | &lt;/strong&gt;pruning:&lt;strong&gt; 1000/100&lt;/strong&gt;&lt;/p&gt;
    &lt;p id=&quot;SP72&quot; data-align=&quot;center&quot;&gt;🌐 &lt;a href=&quot;https://share102.utsa.tech/xrpl/&quot; target=&quot;_blank&quot;&gt;&lt;strong&gt;https://share102.utsa.tech/xrpl/&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;
    &lt;pre data-lang=&quot;bash&quot; id=&quot;vhcG&quot;&gt;cd $HOME
systemctl stop exrpd

cp $HOME/.exrpd/data/priv_validator_state.json $HOME/.exrpd/priv_validator_state.json.backup

# удаляем старую базу данных
rm -rf $HOME/.exrpd/data/{application.db,evidence.db,snapshots,tx_index.db,blockstore.db,state.db,cs.wal}

# скачиваем snapshot
curl -o - -L https://share102.utsa.tech/xrpl/xrpl.tar.lz4 | lz4 -c -d - | tar -x -C $HOME/.exrpd/

mv $HOME/.exrpd/priv_validator_state.json.backup $HOME/.exrpd/data/priv_validator_state.json

systemctl restart exrpd &amp;amp;&amp;amp; journalctl -u exrpd -f -o cat&lt;/pre&gt;
  &lt;/section&gt;
  &lt;section style=&quot;background-color:hsl(hsl(236, 74%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;p id=&quot;7iPW&quot; data-align=&quot;center&quot;&gt;time: &lt;strong&gt;every 48 hours&lt;/strong&gt; &lt;strong&gt;| &lt;/strong&gt;indexer:&lt;strong&gt; kv | &lt;/strong&gt;pruning:&lt;strong&gt; archive&lt;/strong&gt;&lt;/p&gt;
    &lt;p id=&quot;KsGC&quot; data-align=&quot;center&quot;&gt;🌐 &lt;a href=&quot;https://share.utsa.tech/xrpl/&quot; target=&quot;_blank&quot;&gt;&lt;strong&gt;https://share.utsa.tech/xrpl/&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;
    &lt;pre data-lang=&quot;bash&quot; id=&quot;TtfZ&quot;&gt;cd $HOME
systemctl stop exrpd

cp $HOME/.exrpd/data/priv_validator_state.json $HOME/.exrpd/priv_validator_state.json.backup

# удаляем старую базу данных
rm -rf $HOME/.exrpd/data/{application.db,evidence.db,snapshots,tx_index.db,blockstore.db,state.db,cs.wal}

# скачиваем snapshot
curl -o - -L https://share.utsa.tech/xrpl/xrpl-archive.tar.lz4 | lz4 -c -d - | tar -x -C $HOME/.exrpd/

mv $HOME/.exrpd/priv_validator_state.json.backup $HOME/.exrpd/data/priv_validator_state.json

systemctl restart exrpd &amp;amp;&amp;amp; journalctl -u exrpd -f -o cat&lt;/pre&gt;
  &lt;/section&gt;
  &lt;p id=&quot;AwrS&quot;&gt;&lt;strong&gt;Создаем сервисный файл&lt;/strong&gt;&lt;/p&gt;
  &lt;pre data-lang=&quot;bash&quot; id=&quot;G8NT&quot;&gt;tee /etc/systemd/system/exrpd.service &amp;gt; /dev/null &amp;lt;&amp;lt;EOF
[Unit]
Description=exrpd
After=network-online.target

[Service]
User=$USER
ExecStart=$(which exrpd) start
Restart=on-failure
RestartSec=3
LimitNOFILE=65535

[Install]
WantedBy=multi-user.target
EOF&lt;/pre&gt;
  &lt;pre data-lang=&quot;bash&quot; id=&quot;geOC&quot;&gt;systemctl daemon-reload
systemctl enable exrpd
systemctl restart exrpd &amp;amp;&amp;amp; journalctl -u exrpd -f -o cat&lt;/pre&gt;
  &lt;p id=&quot;P3nc&quot;&gt;&lt;strong&gt;Создаем или восстанавливаем кошелек и сохраняем вывод&lt;/strong&gt;&lt;/p&gt;
  &lt;pre data-lang=&quot;bash&quot; id=&quot;BX4P&quot;&gt;# создать кошелек
exrpd keys add &amp;lt;name_wallet&amp;gt; --key-type eth_secp256k1 --keyring-backend os

# восстановить кошелек (после команды вставить seed)
exrpd keys add &amp;lt;name_wallet&amp;gt; --key-type eth_secp256k1 --recover --keyring-backend os&lt;/pre&gt;
  &lt;section style=&quot;background-color:hsl(hsl(236, 74%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;p id=&quot;YLko&quot;&gt;&lt;strong&gt;Не забываем сохранить seed !!!&lt;/strong&gt;&lt;/p&gt;
  &lt;/section&gt;
  &lt;p id=&quot;0wHL&quot;&gt;&lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(34,  84%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;h2 id=&quot;sBaD&quot;&gt;&lt;strong&gt;Создаем валидатора&lt;/strong&gt;&lt;/h2&gt;
  &lt;/section&gt;
  &lt;p id=&quot;JZb3&quot;&gt;XRPL EVM работает используя консенсус Proof of Authority. Чтобы начать подписывать новые блоки и участвовать в сетевом консенсусе, текущие валидаторы должны принять Вашу ноду в качестве нового доверенного валидатора. Этот демократический процесс требует одобрения большинства текущих валидаторов.&lt;/p&gt;
  &lt;p id=&quot;koyN&quot;&gt;Чтобы начать процесс необходимо присоединится к discord и выбрать роль валидатора на канале &lt;code&gt;#roles&lt;/code&gt;. После этого Вам нужно будет представиться на канале &lt;code&gt;#become-a-validator&lt;/code&gt;&lt;/p&gt;
  &lt;p id=&quot;KHVc&quot;&gt;При заполнении анкеты нужно будет указать данные, которые идентифицируют вашего валидатора&lt;/p&gt;
  &lt;ul id=&quot;lhAL&quot;&gt;
    &lt;li id=&quot;AVuW&quot;&gt;&lt;strong&gt;Moniker&lt;/strong&gt;&lt;/li&gt;
    &lt;li id=&quot;5jzN&quot;&gt;&lt;strong&gt;Validator operator address&lt;/strong&gt;&lt;/li&gt;
  &lt;/ul&gt;
  &lt;pre id=&quot;2tWV&quot;&gt;exrpd keys show wallet --bech val&lt;/pre&gt;
  &lt;ul id=&quot;hA9z&quot;&gt;
    &lt;li id=&quot;VbjT&quot;&gt;&lt;strong&gt;Public key&lt;/strong&gt;&lt;/li&gt;
  &lt;/ul&gt;
  &lt;pre id=&quot;vx1u&quot;&gt;exrpd tendermint show-validator&lt;/pre&gt;
  &lt;p id=&quot;1T8t&quot;&gt;&lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(236, 74%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;p id=&quot;kj2D&quot;&gt;&lt;strong&gt;Не забываем сохранить priv_validator_key.json !!!&lt;/strong&gt;&lt;/p&gt;
    &lt;p id=&quot;VBzA&quot;&gt;Подробнее о создании/редактировании валидатора можно почитать &lt;a href=&quot;/@lesnik13utsa/RPLJpWXIoDQ&quot;&gt;здесь&lt;/a&gt;&lt;/p&gt;
  &lt;/section&gt;
  &lt;p id=&quot;4K8P&quot;&gt;&lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(34,  84%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;h2 id=&quot;1eUH&quot;&gt;Полезные команды&lt;/h2&gt;
  &lt;/section&gt;
  &lt;p id=&quot;Fuvu&quot;&gt;&lt;strong&gt;Информация&lt;/strong&gt;&lt;/p&gt;
  &lt;pre data-lang=&quot;bash&quot; id=&quot;h8Db&quot;&gt;# проверить логи
sudo journalctl -u exrpd -f -o cat
# проверить статус
curl localhost:$PORT/status | jq
# проверить баланс
exrpd q bank balances &amp;lt;address&amp;gt;
# проверить pubkey валидатора
exrpd tendermint show-validator
# проверить валидатора
exrpd query staking validator &amp;lt;valoper_address&amp;gt;
exrpd query staking validators --limit 1000000 -o json | jq &amp;#x27;.validators[] | select(.description.moniker==&amp;quot;&amp;lt;name_moniker&amp;gt;&amp;quot;)&amp;#x27; | jq
# проверка информации по TX_HASH
exrpd query tx &amp;lt;TX_HASH&amp;gt;
# параметры сети
exrpd q staking params
exrpd q slashing params
# проверить сколько блоков пропущено валидатором и с какого блока актив
exrpd q slashing signing-info $(exrpd tendermint show-validator)
# проверить slashing
exrpd q slashing signing-info $(exrpd tendermint show-validator)
# узнать транзакцию создания валидатора (заменить свой valoper_address)
exrpd query txs --events=&amp;#x27;create_validator.validator=&amp;lt;your_valoper_address&amp;gt;&amp;#x27; -o=json | jq .txs[0].txhash -r
# просмотр активного сета
exrpd q staking validators -o json --limit=1000 \
| jq &amp;#x27;.validators[] | select(.status==&amp;quot;BOND_STATUS_BONDED&amp;quot;)&amp;#x27; \
| jq -r &amp;#x27;.tokens + &amp;quot; - &amp;quot; + .description.moniker&amp;#x27; \
| sort -gr | nl
# просмотр неактивного сета
exrpd q staking validators -o json --limit=1000 \
| jq &amp;#x27;.validators[] | select(.status==&amp;quot;BOND_STATUS_UNBONDED&amp;quot;)&amp;#x27; \
| jq -r &amp;#x27;.tokens + &amp;quot; - &amp;quot; + .description.moniker&amp;#x27; \
| sort -gr | nl&lt;/pre&gt;
  &lt;p id=&quot;nXYz&quot;&gt;&lt;strong&gt;Транзакции&lt;/strong&gt;&lt;/p&gt;
  &lt;pre data-lang=&quot;bash&quot; id=&quot;G2eQ&quot;&gt;# собрать комиссионные + реварды
exrpd tx distribution withdraw-rewards &amp;lt;valoper_address&amp;gt; --from &amp;lt;name_wallet&amp;gt; --fees 500axrp --commission -y

# заделегировать себе в стейк еще (так отправляется 1 монетa)
exrpd tx staking delegate &amp;lt;valoper_address&amp;gt; 1000000axrp --from &amp;lt;name_wallet&amp;gt; --fees 500axrp -y

# ределегирование на другого валидатора
exrpd tx staking redelegate &amp;lt;src-validator-addr&amp;gt; &amp;lt;dst-validator-addr&amp;gt; 1000000axrp --from &amp;lt;name_wallet&amp;gt; --fees 500axrp -y

# unbond 
exrpd tx staking unbond &amp;lt;addr_valoper&amp;gt; 1000000axrp --from &amp;lt;name_wallet&amp;gt; --fees 500axrp -y

# отправить монеты на другой адрес
exrpd tx bank send &amp;lt;name_wallet&amp;gt; &amp;lt;address&amp;gt; 1000000axrp --fees 500axrp -y

# выбраться из тюрьмы
exrpd tx slashing unjail --from &amp;lt;name_wallet&amp;gt; --fees 500axrp -y&lt;/pre&gt;
  &lt;p id=&quot;zl2g&quot;&gt;&lt;strong&gt;Работа с кошельками&lt;/strong&gt;&lt;/p&gt;
  &lt;pre data-lang=&quot;bash&quot; id=&quot;khv2&quot;&gt;# вывести список кошельков
exrpd keys list

# показать ключ аккаунта
exrpd keys show &amp;lt;name_wallet&amp;gt; --bech acc

# показать ключ валидатора
exrpd keys show &amp;lt;name_wallet&amp;gt; --bech val

# показать ключ консенсуса
exrpd keys show &amp;lt;name_wallet&amp;gt; --bech cons

# запрос учетной записи
exrpd q auth account $(exrpd keys show &amp;lt;name_wallet&amp;gt; -a) -o text

# удалить кошелек
exrpd keys delete &amp;lt;name_wallet&amp;gt;&lt;/pre&gt;
  &lt;p id=&quot;Qfld&quot;&gt;&lt;strong&gt;Удалить ноду&lt;/strong&gt;&lt;/p&gt;
  &lt;pre data-lang=&quot;bash&quot; id=&quot;cAKM&quot;&gt;systemctl stop exrpd &amp;amp;&amp;amp; \
systemctl disable exrpd &amp;amp;&amp;amp; \
rm /etc/systemd/system/exrpd.service &amp;amp;&amp;amp; \
systemctl daemon-reload &amp;amp;&amp;amp; \
cd $HOME &amp;amp;&amp;amp; \
rm -rf .exrpd xrpl &amp;amp;&amp;amp; \
rm -rf $(which exrpd)&lt;/pre&gt;
  &lt;p id=&quot;fYh0&quot;&gt;&lt;strong&gt;ГОВЕРНАНС&lt;/strong&gt;&lt;/p&gt;
  &lt;pre data-lang=&quot;bash&quot; id=&quot;PYFQ&quot;&gt;# список proposals
exrpd q gov proposals

# посмотреть результат голосования
exrpd q gov proposals --voter &amp;lt;ADDRESS&amp;gt;

# проголосовать за предложение 
exrpd tx gov vote 1 yes --from &amp;lt;name_wallet&amp;gt; --fees 500axrp

# внести депозит в предложение
exrpd tx gov deposit 1 1000000axrp --from &amp;lt;name_wallet&amp;gt; --fees 500axrp

# создать предложение
exrpd tx gov submit-proposal --title=&amp;quot;Randomly reward&amp;quot; --description=&amp;quot;Reward 10 testnet participants who completed more than 3 tasks&amp;quot; --type=&amp;quot;Text&amp;quot; --deposit=&amp;quot;11000000axrp&amp;quot; --from=&amp;lt;name_wallet&amp;gt; --fees 500axrp&lt;/pre&gt;
  &lt;p id=&quot;chat-messages-932182862663389245&quot;&gt;&lt;strong&gt;Peers and RPC&lt;/strong&gt;&lt;/p&gt;
  &lt;pre data-lang=&quot;bash&quot; id=&quot;CMyV&quot;&gt;FOLDER=.exrpd

# узнать свой peer
PORTR=$(grep -A 3 &amp;quot;\[p2p\]&amp;quot; ~/$FOLDER/config/config.toml | egrep -o &amp;quot;:[0-9]+&amp;quot;) &amp;amp;&amp;amp; \
echo $(exrpd tendermint show-node-id)@$(wget -qO- eth0.me)$PORTR

# узнать порт RPC
echo -e &amp;quot;\033[0;32m$(grep -A 3 &amp;quot;\[rpc\]&amp;quot; ~/$FOLDER/config/config.toml | egrep -o &amp;quot;:[0-9]+&amp;quot;)\033[0m&amp;quot;

# проверка количества пиров
PORT=
curl -s http://localhost:$PORT/net_info | jq -r &amp;#x27;.result.peers[] | &amp;quot;\(.node_info.id)@\(.remote_ip):\(.node_info.listen_addr | split(&amp;quot;:&amp;quot;)[2])&amp;quot;&amp;#x27; | wc -l

# cписок моникеров подключенных пиров
curl -s http://localhost:$PORT/net_info | jq &amp;#x27;.result.peers[].node_info.moniker&amp;#x27;

# Проверка prevotes/precommits. Пригодится при обновах
curl -s localhost:$PORT/consensus_state | jq &amp;#x27;.result.round_state.height_vote_set[0].prevotes_bit_array&amp;#x27; &amp;amp;&amp;amp; \
curl -s localhost:$PORT/consensus_state | jq &amp;#x27;.result.round_state.height_vote_set[0].precommits_bit_array&amp;#x27;

# check prevote of your validator
curl -s localhost:$PORT/consensus_state -s | grep $(curl -s localhost:26657/status | jq -r .result.validator_info.address[:12])&lt;/pre&gt;
  &lt;figure id=&quot;cY95&quot; class=&quot;m_original&quot; data-caption-align=&quot;center&quot;&gt;
    &lt;img src=&quot;https://img3.teletype.in/files/e9/28/e92895ca-f71d-497c-9fd2-2e7eeedd5303.png&quot; width=&quot;278&quot; /&gt;
    &lt;figcaption&gt;&lt;strong&gt;Поддержим природу вместе: 0xa7476EC14cD663C742d527113638C77a1631Cc89 cosmos1m2mm7kzvw6m3464h94ryqg8xvr6tyeyyecppnq&lt;/strong&gt;&lt;/figcaption&gt;
  &lt;/figure&gt;

</content></entry><entry><id>lesnik13utsa:7ibJohZtyhY</id><link rel="alternate" type="text/html" href="https://teletype.in/@lesnik13utsa/7ibJohZtyhY?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=lesnik13utsa"></link><title>Tellor</title><published>2025-02-16T12:21:56.968Z</published><updated>2025-04-30T06:08:48.058Z</updated><category term="cosmos" label="COSMOS"></category><summary type="html">&lt;img src=&quot;https://img3.teletype.in/files/ac/6e/ac6e1e0d-defd-49a8-a013-982f0a502db0.png&quot;&gt;UTSA validator</summary><content type="html">
  &lt;figure id=&quot;8Pqm&quot; class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://img3.teletype.in/files/ac/6e/ac6e1e0d-defd-49a8-a013-982f0a502db0.png&quot; width=&quot;820&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;head&quot; data-align=&quot;center&quot;&gt;🪓 &lt;a href=&quot;https://t.me/utsa_channel&quot; target=&quot;_blank&quot;&gt;Telegram канал UTSA&lt;/a&gt; 🪓 &lt;a href=&quot;https://t.me/utsa_chat&quot; target=&quot;_blank&quot;&gt;Telegram чат UTSA&lt;/a&gt;&lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(236, 74%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;p id=&quot;D2wo&quot; data-align=&quot;center&quot;&gt;&lt;strong&gt;&lt;a href=&quot;https://tellor.io/&quot; target=&quot;_blank&quot;&gt;Web&lt;/a&gt; &lt;a href=&quot;https://discord.gg/tellor&quot; target=&quot;_blank&quot;&gt;Discord&lt;/a&gt; &lt;a href=&quot;https://github.com/tellor-io/layer&quot; target=&quot;_blank&quot;&gt;Github&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
  &lt;/section&gt;
  &lt;p id=&quot;sHgA&quot;&gt;&lt;u&gt;&lt;strong&gt;Testnet details&lt;/strong&gt;&lt;/u&gt;&lt;/p&gt;
  &lt;ul id=&quot;2h1F&quot;&gt;
    &lt;li id=&quot;ED8t&quot;&gt;Network Chain ID: layertest-4&lt;/li&gt;
    &lt;li id=&quot;8tyv&quot;&gt;Denom stake: &lt;code&gt;loya&lt;/code&gt;&lt;/li&gt;
    &lt;li id=&quot;SZWc&quot;&gt;Binary: &lt;code&gt;layerd&lt;/code&gt;&lt;/li&gt;
    &lt;li id=&quot;OnH1&quot;&gt;Working directory: &lt;code&gt;.layer&lt;/code&gt;&lt;/li&gt;
    &lt;li id=&quot;AdcU&quot;&gt;RPC: &lt;a href=&quot;https://t-tellor.rpc.utsa.tech/&quot; target=&quot;_blank&quot;&gt;https://t-tellor.rpc.utsa.tech/&lt;/a&gt;&lt;/li&gt;
    &lt;li id=&quot;CQAm&quot;&gt;API: &lt;a href=&quot;https://t-tellor.api.utsa.tech/&quot; target=&quot;_blank&quot;&gt;https://t-tellor.api.utsa.tech/&lt;/a&gt;&lt;/li&gt;
    &lt;li id=&quot;NJ2g&quot;&gt;Explorer: &lt;a href=&quot;https://exp.utsa.tech/tellor-test/staking&quot; target=&quot;_blank&quot;&gt;https://exp.utsa.tech/tellor-test/staking&lt;/a&gt;&lt;/li&gt;
  &lt;/ul&gt;
  &lt;hr /&gt;
  &lt;section style=&quot;background-color:hsl(hsl(236, 74%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;pre data-lang=&quot;bash&quot; id=&quot;UK5r&quot;&gt;# проверяем статус prevotes/precommits
FOLDER=.layer

# узнать порт RPC
echo -e &amp;quot;\033[0;32m$(grep -A 3 &amp;quot;\[rpc\]&amp;quot; ~/$FOLDER/config/config.toml | egrep -o &amp;quot;:[0-9]+&amp;quot;)\033[0m&amp;quot;

PORT=&amp;lt;ввести свой порт&amp;gt;

# Проверка prevotes/precommits. Пригодится при обновах
curl -s localhost:$PORT/consensus_state | jq &amp;#x27;.result.round_state.height_vote_set[0].prevotes_bit_array&amp;#x27; &amp;amp;&amp;amp; \
curl -s localhost:$PORT/consensus_state | jq &amp;#x27;.result.round_state.height_vote_set[0].precommits_bit_array&amp;#x27;&lt;/pre&gt;
  &lt;/section&gt;
  &lt;section style=&quot;background-color:hsl(hsl(236, 74%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;p id=&quot;CJUj&quot;&gt;&lt;strong&gt;UPD 🕊 v4.0.1 (Высота обновления: 452800)&lt;/strong&gt;&lt;/p&gt;
    &lt;pre data-lang=&quot;bash&quot; id=&quot;1lCH&quot;&gt;cd
rm -r $HOME/layer
git clone https://github.com/tellor-io/layer &amp;amp;&amp;amp; cd layer

wget https://github.com/tellor-io/layer/releases/download/4.0.1/layer_Linux_x86_64.tar.gz
tar -xvzf layer_Linux_x86_64.tar.gz
$HOME/layer/layerd version --long | grep -e version -e commit
# version: 4.0.1
# commit: 9e25c0ae96970d960c49ede51d008e6eecdd5bd3

# ПОСЛЕ ОСТАНОВКИ СЕТИ НА НУЖНОМ БЛОКЕ!!!

mv $HOME/layer/layerd $(which layerd)
layerd version --long | grep -e version -e commit
# 
systemctl restart layerd &amp;amp;&amp;amp; journalctl -u layerd -f -o cat&lt;/pre&gt;
  &lt;/section&gt;
  &lt;section style=&quot;background-color:hsl(hsl(236, 74%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;p id=&quot;CJUj&quot;&gt;&lt;strong&gt;&lt;s&gt;UPD 🕊 v4.0.2 (Высота обновления: )&lt;/s&gt;&lt;/strong&gt;&lt;/p&gt;
    &lt;pre data-lang=&quot;bash&quot; id=&quot;76bw&quot;&gt;cd
rm -r $HOME/layer
git clone https://github.com/tellor-io/layer &amp;amp;&amp;amp; cd layer

wget https://github.com/tellor-io/layer/releases/download/v4.0.2/layer_Linux_x86_64.tar.gz
tar -xvzf layer_Linux_x86_64.tar.gz
$HOME/layer/layerd version --long | grep -e version -e commit
# version: 4.0.2
# commit: a145758262e7ca5fe568897f3c1bc04bf75a2039

# ПОСЛЕ ОСТАНОВКИ СЕТИ НА НУЖНОМ БЛОКЕ!!!

mv $HOME/layer/layerd $(which layerd)
layerd version --long | grep -e version -e commit
# 
systemctl restart layerd &amp;amp;&amp;amp; journalctl -u layerd -f -o cat&lt;/pre&gt;
  &lt;/section&gt;
  &lt;section style=&quot;background-color:hsl(hsl(236, 74%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;p id=&quot;Hbm6&quot;&gt;&lt;strong&gt;UPD 🕊 v4.0.3 (Высота обновления: 2154000)&lt;/strong&gt;&lt;/p&gt;
    &lt;pre data-lang=&quot;bash&quot; id=&quot;3Xoj&quot;&gt;cd
rm -r $HOME/layer
git clone https://github.com/tellor-io/layer &amp;amp;&amp;amp; cd layer

wget https://github.com/tellor-io/layer/releases/download/v4.0.3/layer_Linux_x86_64.tar.gz
tar -xvzf layer_Linux_x86_64.tar.gz
$HOME/layer/layerd version --long | grep -e version -e commit
# version: 4.0.3
# commit: 683b709191e1342b8722f62b0f9bb897b525a92f

# ПОСЛЕ ОСТАНОВКИ СЕТИ НА НУЖНОМ БЛОКЕ!!!

mv $HOME/layer/layerd $(which layerd)
layerd version --long | grep -e version -e commit
# 
systemctl restart layerd &amp;amp;&amp;amp; journalctl -u layerd -f -o cat&lt;/pre&gt;
  &lt;/section&gt;
  &lt;p id=&quot;oQEo&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;HcnD&quot;&gt;&lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(34,  84%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;h2 id=&quot;6FkE&quot;&gt;Подготовка сервера&lt;/h2&gt;
  &lt;/section&gt;
  &lt;pre data-lang=&quot;bash&quot; id=&quot;SdUl&quot;&gt;# обновляем репозитории
apt update &amp;amp;&amp;amp; sudo apt upgrade -y

# устанавливаем необходимые утилиты
apt install curl build-essential git wget jq make gcc tmux htop nvme-cli pkg-config libssl-dev libleveldb-dev tar clang bsdmainutils ncdu unzip libleveldb-dev -y

# проверяем работу жестких дисков
curl -sL yabs.sh | bash -s — -ig

# проверяем работу интернета
curl -sL yabs.sh | bash -s — -fg&lt;/pre&gt;
  &lt;p id=&quot;M4EP&quot;&gt;&lt;strong&gt;File2Ban&lt;/strong&gt; - подробнее &lt;a href=&quot;https://www.linuxshop.ru/articles/a26710798-nastroyka_fail2ban&quot; target=&quot;_blank&quot;&gt;здесь&lt;/a&gt;&lt;/p&gt;
  &lt;pre data-lang=&quot;bash&quot; id=&quot;Xiui&quot;&gt;# устанавливаем и копируем конфиг, который будет иметь больший приоритет
apt install fail2ban -y &amp;amp;&amp;amp; \
cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local &amp;amp;&amp;amp; \
nano /etc/fail2ban/jail.local
# раскомментировать и добавить свой IP: ignoreip = 127.0.0.1/8 ::1 &amp;lt;ip&amp;gt;
systemctl restart fail2ban

# проверяем status 
systemctl status fail2ban
# проверяем, какие jails активны (по умолчанию только sshd)
fail2ban-client status
# проверяем статистику по sshd
fail2ban-client status sshd
# смотрим логи
tail /var/log/fail2ban.log
# останавливаем работу и удаляем с автозагрузки
#systemctl stop fail2ban &amp;amp;&amp;amp; systemctl disable fail2ban&lt;/pre&gt;
  &lt;p id=&quot;eKUj&quot;&gt;&lt;strong&gt;Устанавливаем Go&lt;/strong&gt;&lt;/p&gt;
  &lt;pre data-lang=&quot;bash&quot; id=&quot;HdXH&quot;&gt;ver=&amp;quot;1.21.13&amp;quot; &amp;amp;&amp;amp; \
wget &amp;quot;https://golang.org/dl/go$ver.linux-amd64.tar.gz&amp;quot; &amp;amp;&amp;amp; \
sudo rm -rf /usr/local/go &amp;amp;&amp;amp; \
sudo tar -C /usr/local -xzf &amp;quot;go$ver.linux-amd64.tar.gz&amp;quot; &amp;amp;&amp;amp; \
rm &amp;quot;go$ver.linux-amd64.tar.gz&amp;quot; &amp;amp;&amp;amp; \
echo &amp;quot;export PATH=$PATH:/usr/local/go/bin:$HOME/go/bin&amp;quot; &amp;gt;&amp;gt; $HOME/.bash_profile &amp;amp;&amp;amp; \
source $HOME/.bash_profile &amp;amp;&amp;amp; \
go version&lt;/pre&gt;
  &lt;p id=&quot;RD7Y&quot;&gt;&lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(34,  84%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;h2 id=&quot;1b58&quot;&gt;Новая установка ноды&lt;/h2&gt;
  &lt;/section&gt;
  &lt;section&gt;
    &lt;p id=&quot;z8pZ&quot;&gt;&lt;u&gt;&lt;em&gt;&lt;strong&gt;ВАЖНО &lt;/strong&gt;— в командах ниже все, что в &lt;strong&gt;&amp;lt;&amp;gt;&lt;/strong&gt; меняем на свое значение и убираем сами&lt;strong&gt; &amp;lt;&amp;gt;&lt;/strong&gt;&lt;/em&gt;&lt;/u&gt;&lt;/p&gt;
  &lt;/section&gt;
  &lt;p id=&quot;sjXD&quot;&gt;&lt;strong&gt;Устанавливаем бинарники&lt;/strong&gt;&lt;/p&gt;
  &lt;pre data-lang=&quot;bash&quot; id=&quot;HckD&quot;&gt;git clone https://github.com/tellor-io/layer &amp;amp;&amp;amp; cd layer
#git checkout v4.0.0
#make install

cd $HOME/layer
wget https://github.com/tellor-io/layer/releases/download/v4.0.3/layer_Linux_x86_64.tar.gz
tar -xvzf layer_Linux_x86_64.tar.gz
mv $HOME/layer/layerd $(which layerd)

layerd version --long | grep -e version -e commit
# version: 4.0.3
# commit: 683b709191e1342b8722f62b0f9bb897b525a92f
&lt;/pre&gt;
  &lt;p id=&quot;vp48&quot;&gt;&lt;strong&gt;Инициализируем ноду, чтобы создать необходимые файлы конфигурации&lt;/strong&gt;&lt;/p&gt;
  &lt;pre data-lang=&quot;bash&quot; id=&quot;WLgm&quot;&gt;layerd init UTSA_guide --chain-id layertest-4&lt;/pre&gt;
  &lt;p id=&quot;Qrh4&quot;&gt;&lt;strong&gt;Скачиваем Genesis&lt;/strong&gt;&lt;/p&gt;
  &lt;pre data-lang=&quot;bash&quot; id=&quot;yiRs&quot;&gt;curl https://node-palmito.tellorlayer.com/rpc/genesis | jq &amp;#x27;.result.genesis&amp;#x27; &amp;gt; ~/.layer/config/genesis.json
#wget -O $HOME/.layer/config/genesis.json &amp;quot;https://tellor.test.rpc.nodeshub.online/genesis&amp;quot;

# Проверим генезис
sha256sum ~/.layer/config/genesis.json
# b65ea5530e3ab666005b67103245b0f07603660c67656b7a6a057ada10212885&lt;/pre&gt;
  &lt;p id=&quot;4cmW&quot;&gt;&lt;strong&gt;Скачиваем Addrbook&lt;/strong&gt;&lt;/p&gt;
  &lt;pre data-lang=&quot;bash&quot; id=&quot;TszX&quot;&gt;wget -O $HOME/.layer/config/addrbook.json &amp;quot;https://share102.utsa.tech/tellor/addrbook.json&amp;quot;&lt;/pre&gt;
  &lt;p id=&quot;xMXz&quot;&gt;&lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(34,  84%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;h2 id=&quot;kBZ8&quot;&gt;Настраиваем конфигурацию ноды&lt;/h2&gt;
  &lt;/section&gt;
  &lt;pre data-lang=&quot;bash&quot; id=&quot;pYkf&quot;&gt;# правим конфиг, благодаря чему мы можем больше не использовать флаг chain-id для каждой команды CLI в client.toml
sed -i.bak -e &amp;quot;s/^chain-id *=.*/chain-id = \&amp;quot;layertest-4\&amp;quot;/;&amp;quot; ~/.layer/config/client.toml
sed -i.bak -e &amp;quot;s/^keyring-backend *=.*/keyring-backend = \&amp;quot;test\&amp;quot;/;&amp;quot; ~/.layer/config/client.toml

# настраиваем минимальную цену за газ в app.toml
sed -i.bak -e &amp;quot;s/^minimum-gas-prices *=.*/minimum-gas-prices = \&amp;quot;0.000025loya\&amp;quot;/;&amp;quot; ~/.layer/config/app.toml

# добавляем seeds/bpeers/peers в config.toml
external_address=$(wget -qO- eth0.me)
sed -i.bak -e &amp;quot;s/^external_address *=.*/external_address = \&amp;quot;$external_address:26656\&amp;quot;/&amp;quot; $HOME/.layer/config/config.toml

peers=&amp;quot;c7b175a5bafb35176cdcba3027e764a0dbd0811c@34.219.95.82:26656,05105e8bb28e8c5ace1cecacefb8d4efb0338ec6@18.218.114.74:26656,705f6154c6c6aeb0ba36c8b53639a5daa1b186f6@3.80.39.230:26656,1f6522a346209ee99ecb4d3e897d9d97633ae146@3.101.138.30:26656,3822fa2eb0052b36360a7a6e285c18cc92e26215@175.41.188.192:26656&amp;quot;
sed -i.bak -e &amp;quot;s/^persistent_peers *=.*/persistent_peers = \&amp;quot;$peers\&amp;quot;/&amp;quot; $HOME/.layer/config/config.toml
seeds=&amp;quot;&amp;quot;
sed -i.bak -e &amp;quot;s/^seeds =.*/seeds = \&amp;quot;$seeds\&amp;quot;/&amp;quot; $HOME/.layer/config/config.toml&lt;/pre&gt;
  &lt;pre id=&quot;OyOo&quot;&gt;sed -i &amp;#x27;s/timeout_commit = &amp;quot;5s&amp;quot;/timeout_commit = &amp;quot;1s&amp;quot;/&amp;#x27; ~/.layer/config/config.toml&lt;/pre&gt;
  &lt;p id=&quot;MF9b&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;RkYw&quot;&gt;&lt;strong&gt;(ОПЦИОНАЛЬНО) Настраиваем прунинг в&lt;code&gt;app.toml&lt;/code&gt;&lt;/strong&gt;&lt;/p&gt;
  &lt;pre data-lang=&quot;bash&quot; id=&quot;4BGp&quot;&gt;pruning=&amp;quot;custom&amp;quot;
pruning_keep_recent=&amp;quot;1000&amp;quot;
pruning_interval=&amp;quot;10&amp;quot;
sed -i -e &amp;quot;s/^pruning *=.*/pruning = \&amp;quot;$pruning\&amp;quot;/&amp;quot; $HOME/.layer/config/app.toml
sed -i -e &amp;quot;s/^pruning-keep-recent *=.*/pruning-keep-recent = \&amp;quot;$pruning_keep_recent\&amp;quot;/&amp;quot; $HOME/.layer/config/app.toml
sed -i -e &amp;quot;s/^pruning-interval *=.*/pruning-interval = \&amp;quot;$pruning_interval\&amp;quot;/&amp;quot; $HOME/.layer/config/app.toml&lt;/pre&gt;
  &lt;p id=&quot;dGeO&quot;&gt;&lt;strong&gt;(ОПЦИОНАЛЬНО) Выкл индексацию в&lt;code&gt;config.toml&lt;/code&gt;&lt;/strong&gt;&lt;/p&gt;
  &lt;pre data-lang=&quot;bash&quot; id=&quot;5d32&quot;&gt;#indexer=&amp;quot;null&amp;quot;
#sed -i -e &amp;quot;s/^indexer *=.*/indexer = \&amp;quot;$indexer\&amp;quot;/&amp;quot; $HOME/.layer/config/config.toml&lt;/pre&gt;
  &lt;p id=&quot;UDzq&quot;&gt;&lt;strong&gt;(ОПЦИОНАЛЬНО) Вкл/выкл снэпшоты в&lt;code&gt;app.toml&lt;/code&gt;&lt;/strong&gt;&lt;/p&gt;
  &lt;pre data-lang=&quot;bash&quot; id=&quot;qCon&quot;&gt;snapshot_interval=1000
sed -i.bak -e &amp;quot;s/^snapshot-interval *=.*/snapshot-interval = \&amp;quot;$snapshot_interval\&amp;quot;/&amp;quot; ~/.layer/config/app.toml&lt;/pre&gt;
  &lt;p id=&quot;Ynzo&quot;&gt;&lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(34,  84%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;h2 id=&quot;5cMj&quot;&gt;State sync&lt;/h2&gt;
  &lt;/section&gt;
  &lt;section style=&quot;background-color:hsl(hsl(236, 74%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;pre data-lang=&quot;bash&quot; id=&quot;MNny&quot;&gt;systemctl stop layerd
rm -rf /root/.layer/data/{tx_index.db,state.db,snapshots,evidence.db,blockstore.db,application.db}&lt;/pre&gt;
    &lt;pre id=&quot;MNny&quot; data-lang=&quot;bash&quot;&gt;# add peer
peers=&amp;quot;18a60772ed3b2e06a780f5701a5fe17d95955566@5.9.87.231:56656&amp;quot;
sed -i.bak -e &amp;quot;s/^persistent_peers *=.*/persistent_peers = \&amp;quot;$peers\&amp;quot;/&amp;quot; $HOME/.layer/config/config.toml&lt;/pre&gt;
    &lt;pre data-lang=&quot;bash&quot; id=&quot;noST&quot;&gt;SNAP_RPC=https://t-tellor.rpc.utsa.tech:443

LATEST_HEIGHT=$(curl -s $SNAP_RPC/block | jq -r .result.block.header.height); \
BLOCK_HEIGHT=$((LATEST_HEIGHT - 100)); \
TRUST_HASH=$(curl -s &amp;quot;$SNAP_RPC/block?height=$BLOCK_HEIGHT&amp;quot; | jq -r .result.block_id.hash)

echo $LATEST_HEIGHT $BLOCK_HEIGHT $TRUST_HASH

sed -i.bak -E &amp;quot;s|^(enable[[:space:]]+=[[:space:]]+).*$|\1true| ; \
s|^(rpc_servers[[:space:]]+=[[:space:]]+).*$|\1\&amp;quot;$SNAP_RPC,$SNAP_RPC\&amp;quot;| ; \
s|^(trust_height[[:space:]]+=[[:space:]]+).*$|\1$BLOCK_HEIGHT| ; \
s|^(trust_hash[[:space:]]+=[[:space:]]+).*$|\1\&amp;quot;$TRUST_HASH\&amp;quot;| ; \
s|^(seeds[[:space:]]+=[[:space:]]+).*$|\1\&amp;quot;\&amp;quot;|&amp;quot; $HOME/.layer/config/config.toml&lt;/pre&gt;
    &lt;pre data-lang=&quot;bash&quot; id=&quot;kIeI&quot;&gt;systemctl restart layerd &amp;amp;&amp;amp; journalctl -u layerd -f -o cat&lt;/pre&gt;
  &lt;/section&gt;
  &lt;p id=&quot;1eVQ&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;4KFf&quot;&gt;&lt;strong&gt;Создаем или восстанавливаем кошелек и сохраняем вывод&lt;/strong&gt;&lt;/p&gt;
  &lt;pre data-lang=&quot;bash&quot; id=&quot;AQnx&quot;&gt;# создать кошелек
layerd keys add &amp;lt;name_wallet&amp;gt; --keyring-backend test

# восстановить кошелек (после команды вставить seed)
layerd keys add &amp;lt;name_wallet&amp;gt; --recover --keyring-backend test

# подключить кошелек ledger
layerd keys add &amp;lt;name_wallet&amp;gt; --ledger &lt;/pre&gt;
  &lt;section style=&quot;background-color:hsl(hsl(236, 74%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;p id=&quot;OvP9&quot;&gt;&lt;strong&gt;Не забываем сохранить seed !!!&lt;/strong&gt;&lt;/p&gt;
  &lt;/section&gt;
  &lt;p id=&quot;DBin&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;fTsT&quot;&gt;&lt;strong&gt;Создаем сервисный файл&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;vepI&quot;&gt;Замените &lt;strong&gt;&amp;lt;name_wallet&amp;gt;&lt;/strong&gt; на название своего кошелька&lt;/p&gt;
  &lt;pre data-lang=&quot;bash&quot; id=&quot;lBEs&quot;&gt;tee /etc/systemd/system/layerd.service &amp;gt; /dev/null &amp;lt;&amp;lt;EOF
[Unit]
Description=layerd
After=network-online.target

[Service]
User=$USER
ExecStart=$(which layerd) start --home /root/.layer --key-name &amp;lt;name_wallet&amp;gt; --keyring-backend test
Restart=on-failure
RestartSec=3
LimitNOFILE=65535

[Install]
WantedBy=multi-user.target
EOF&lt;/pre&gt;
  &lt;pre data-lang=&quot;bash&quot; id=&quot;0WbF&quot;&gt;systemctl daemon-reload
systemctl enable layerd
systemctl restart layerd &amp;amp;&amp;amp; journalctl -u layerd -f -o cat&lt;/pre&gt;
  &lt;p id=&quot;T9FX&quot;&gt;&lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(34,  84%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;h2 id=&quot;sBaD&quot;&gt;&lt;strong&gt;Создаем валидатора&lt;/strong&gt;&lt;/h2&gt;
  &lt;/section&gt;
  &lt;p id=&quot;0ztD&quot;&gt;Сначала нужно получить монеты в дискорде используя кошелек EVM, после используя мост &lt;a href=&quot;https://bridge.tellor.io/&quot; target=&quot;_blank&quot;&gt;https://bridge.tellor.io/&lt;/a&gt; обменять монеты. Обмен будет происходить 12 часов&lt;/p&gt;
  &lt;p id=&quot;tKiy&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;asq2&quot;&gt;1. Получаем свой pubkey&lt;/p&gt;
  &lt;pre data-lang=&quot;bash&quot; id=&quot;0UyM&quot;&gt;layerd comet show-validator
# {&amp;quot;@type&amp;quot;:&amp;quot;/cosmos.crypto.ed25519.PubKey&amp;quot;,&amp;quot;key&amp;quot;:&amp;quot;ZXONS7NNjLWH4HePBOoHKDAYeLXQO5iUwpCRQSi1poI=&amp;quot;}&lt;/pre&gt;
  &lt;p id=&quot;ywEz&quot;&gt;2. Создаем validator.json&lt;/p&gt;
  &lt;pre data-lang=&quot;bash&quot; id=&quot;RwD8&quot;&gt;nano $HOME/.layer/validator.json&lt;/pre&gt;
  &lt;p id=&quot;qdbf&quot;&gt;3. Вставляем наш конфиг&lt;/p&gt;
  &lt;pre data-lang=&quot;bash&quot; id=&quot;GqFm&quot;&gt;{
    &amp;quot;pubkey&amp;quot;: {&amp;quot;@type&amp;quot;:&amp;quot;/cosmos.crypto.ed25519.PubKey&amp;quot;,&amp;quot;key&amp;quot;:&amp;quot;c+EuycPpudgiyVl6guYG9oyPSImHHJz1z0Pg4ODKveo=&amp;quot;},
    &amp;quot;amount&amp;quot;: &amp;quot;69666420loya&amp;quot;,
    &amp;quot;moniker&amp;quot;: &amp;quot;yourmoniker&amp;quot;,
    &amp;quot;identity&amp;quot;: &amp;quot;optional identity signature (ex. UPort or Keybase)&amp;quot;,
    &amp;quot;website&amp;quot;: &amp;quot;validator&amp;#x27;s (optional) website&amp;quot;,
    &amp;quot;security&amp;quot;: &amp;quot;validator&amp;#x27;s (optional) security contact email&amp;quot;,
    &amp;quot;details&amp;quot;: &amp;quot;validator&amp;#x27;s (optional) details&amp;quot;,
    &amp;quot;commission-rate&amp;quot;: &amp;quot;0.1&amp;quot;,
    &amp;quot;commission-max-rate&amp;quot;: &amp;quot;0.2&amp;quot;,
    &amp;quot;commission-max-change-rate&amp;quot;: &amp;quot;0.01&amp;quot;,
    &amp;quot;min-self-delegation&amp;quot;: &amp;quot;1&amp;quot;
}&lt;/pre&gt;
  &lt;p id=&quot;KCoo&quot;&gt;4. Отправляем транзакцию&lt;/p&gt;
  &lt;pre data-lang=&quot;bash&quot; id=&quot;pyLH&quot;&gt;layerd tx staking create-validator $HOME/.layer/validator.json \
    --from=&amp;lt;key-name&amp;gt; \
    --chain-id=layertest-4 \
    --fees=5loya&lt;/pre&gt;
  &lt;p id=&quot;M9sA&quot;&gt;&lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(236, 74%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;p id=&quot;kj2D&quot;&gt;&lt;strong&gt;Не забываем сохранить priv_validator_key.json !!!&lt;/strong&gt;&lt;/p&gt;
    &lt;p id=&quot;VBzA&quot;&gt;Подробнее о создании/редактировании валидатора можно почитать &lt;a href=&quot;/@lesnik13utsa/RPLJpWXIoDQ&quot;&gt;здесь&lt;/a&gt;&lt;/p&gt;
  &lt;/section&gt;
  &lt;p id=&quot;7hXY&quot;&gt;&lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(34,  84%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;h2 id=&quot;Dhg3&quot;&gt;Запуск Data Reporter&lt;/h2&gt;
  &lt;/section&gt;
  &lt;p id=&quot;aw7Z&quot;&gt;&lt;em&gt;&lt;strong&gt;Предполагается, что у Вас уже работает нода и валидатор&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;
  &lt;p id=&quot;04DU&quot;&gt;&lt;strong&gt;1. Выполняем команду create-reporter&lt;/strong&gt;&lt;/p&gt;
  &lt;ul id=&quot;Pvww&quot;&gt;
    &lt;li id=&quot;8uJH&quot;&gt;&lt;code&gt;commision-rate&lt;/code&gt; 0.25 означает, что Вы будете получать 25% вознаграждений от selectors&lt;/li&gt;
    &lt;li id=&quot;v7by&quot;&gt;&lt;code&gt;min-tokens-required&lt;/code&gt; предотвращает спам, требуя, чтобы у selectors было не менее 1 монеты в их кошельке&lt;/li&gt;
  &lt;/ul&gt;
  &lt;pre id=&quot;Yu88&quot; data-lang=&quot;bash&quot;&gt;# layerd tx reporter create-reporter 0.25 1000000 REPORTER_MONIKER --from YOUR_ACCOUNT_NAME --chain-id layertest-4 --fees 10loya --yes
layerd tx reporter create-reporter 0.25 1000000 UTSA_guide--from &amp;lt;name_wallet&amp;gt; --chain-id layertest-4 --fees 5loya --yes&lt;/pre&gt;
  &lt;p id=&quot;z0Pc&quot;&gt;&lt;strong&gt;2. Проверьте, успешно ли был создан ваш репортер. Если Вы видите свой адрес в списке, значит, ваш репортер был успешно создан&lt;/strong&gt;&lt;/p&gt;
  &lt;pre id=&quot;Lng5&quot; data-lang=&quot;bash&quot;&gt;layerd query reporter reporters | grep &amp;lt;tellor1k8v5l...&amp;gt;&lt;/pre&gt;
  &lt;p id=&quot;ohPx&quot;&gt;&lt;strong&gt;3.  В сервисном файле измените строку запуска и добавьте Environments. Замените на свои значения все, что находится в &amp;lt;&amp;gt;&lt;/strong&gt;&lt;/p&gt;
  &lt;pre id=&quot;bR2N&quot; data-lang=&quot;bash&quot;&gt;nano /etc/systemd/system/layerd.service&lt;/pre&gt;
  &lt;pre id=&quot;u3Rz&quot; data-lang=&quot;bash&quot;&gt;[Unit]
Description=layerd
After=network-online.target

[Service]
User=root
ExecStart=/root/go/bin/layerd start --api.enable --api.swagger --price-daemon-enabled=true --panic-on-daemon-failure-enabled=false --home /root/.layer --key-name &amp;lt;name_wallet&amp;gt; --keyring-backend test
Restart=on-failure
RestartSec=3
LimitNOFILE=65535
Environment=&amp;quot;WITHDRAW_FREQUENCY=21600&amp;quot;
Environment=&amp;quot;REPORTERS_VALIDATOR_ADDRESS=&amp;lt;tellorvaloper1k8v...&amp;gt;&amp;quot;
Environment=&amp;quot;ETH_RPC_URL=&amp;lt;wss://a.good.sepolia.rpc.url&amp;gt;&amp;quot;
Environment=&amp;quot;TOKEN_BRIDGE_CONTRACT=0x5acb5977f35b1A91C4fE0F4386eB669E046776F2&amp;quot;

[Install]
WantedBy=multi-user.target&lt;/pre&gt;
  &lt;pre id=&quot;hawF&quot; data-lang=&quot;bash&quot;&gt;systemctl daemon-reload
systemctl restart layerd &amp;amp;&amp;amp; journalctl -u layerd -f -o cat&lt;/pre&gt;
  &lt;p id=&quot;Vcev&quot;&gt;&lt;strong&gt;4. Проверьте успешные транзакции оракла&lt;/strong&gt;&lt;/p&gt;
  &lt;pre id=&quot;1LKd&quot; data-lang=&quot;bash&quot;&gt;layerd query oracle get-reportsby-reporter &amp;lt;tellor1k8v5l...&amp;gt;&lt;/pre&gt;
  &lt;p id=&quot;atCp&quot;&gt;&lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(34,  84%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;h2 id=&quot;1eUH&quot;&gt;Полезные команды&lt;/h2&gt;
  &lt;/section&gt;
  &lt;p id=&quot;Fuvu&quot;&gt;&lt;strong&gt;Информация&lt;/strong&gt;&lt;/p&gt;
  &lt;pre data-lang=&quot;bash&quot; id=&quot;bf0v&quot;&gt;# проверить логи
sudo journalctl -u layerd -f -o cat
# проверить статус
curl localhost:$PORT/status | jq
# проверить баланс
layerd q bank balances &amp;lt;address&amp;gt;
# проверить pubkey валидатора
layerd tendermint show-validator
# проверить валидатора
layerd query staking validator &amp;lt;valoper_address&amp;gt;
layerd query staking validators --limit 1000000 -o json | jq &amp;#x27;.validators[] | select(.description.moniker==&amp;quot;&amp;lt;name_moniker&amp;gt;&amp;quot;)&amp;#x27; | jq
# проверка информации по TX_HASH
layerd query tx &amp;lt;TX_HASH&amp;gt;
# параметры сети
layerd q staking params
layerd q slashing params
# проверить сколько блоков пропущено валидатором и с какого блока актив
layerd q slashing signing-info $(layerd tendermint show-validator)
# проверить slashing
layerd q slashing signing-info $(layerd tendermint show-validator)
# узнать транзакцию создания валидатора (заменить свой valoper_address)
layerd query txs --events=&amp;#x27;create_validator.validator=&amp;lt;your_valoper_address&amp;gt;&amp;#x27; -o=json | jq .txs[0].txhash -r
# просмотр активного сета
layerd q staking validators -o json --limit=1000 \
| jq &amp;#x27;.validators[] | select(.status==&amp;quot;BOND_STATUS_BONDED&amp;quot;)&amp;#x27; \
| jq -r &amp;#x27;.tokens + &amp;quot; - &amp;quot; + .description.moniker&amp;#x27; \
| sort -gr | nl
# просмотр неактивного сета
layerd q staking validators -o json --limit=1000 \
| jq &amp;#x27;.validators[] | select(.status==&amp;quot;BOND_STATUS_UNBONDED&amp;quot;)&amp;#x27; \
| jq -r &amp;#x27;.tokens + &amp;quot; - &amp;quot; + .description.moniker&amp;#x27; \
| sort -gr | nl&lt;/pre&gt;
  &lt;p id=&quot;nXYz&quot;&gt;&lt;strong&gt;Транзакции&lt;/strong&gt;&lt;/p&gt;
  &lt;pre data-lang=&quot;bash&quot; id=&quot;v7Of&quot;&gt;# собрать комиссионные + реварды
layerd tx distribution withdraw-rewards &amp;lt;valoper_address&amp;gt; --from &amp;lt;name_wallet&amp;gt; --fees=5loya --commission -y

# заделегировать себе в стейк еще (так отправляется 1 монетa)
layerd tx staking delegate &amp;lt;valoper_address&amp;gt; 1000000loya --from &amp;lt;name_wallet&amp;gt; --fees=5loya -y

# ределегирование на другого валидатора
layerd tx staking redelegate &amp;lt;src-validator-addr&amp;gt; &amp;lt;dst-validator-addr&amp;gt; 1000000loya --from &amp;lt;name_wallet&amp;gt; --fees=5loya -y

# unbond 
layerd tx staking unbond &amp;lt;addr_valoper&amp;gt; 1000000loya --from &amp;lt;name_wallet&amp;gt; --fees=5loya -y

# отправить монеты на другой адрес
layerd tx bank send &amp;lt;name_wallet&amp;gt; &amp;lt;address&amp;gt; 1000000loya --fees=5loya -y

# выбраться из тюрьмы
layerd tx slashing unjail --from &amp;lt;name_wallet&amp;gt; --fees=5loya -y&lt;/pre&gt;
  &lt;p id=&quot;zl2g&quot;&gt;&lt;strong&gt;Работа с кошельками&lt;/strong&gt;&lt;/p&gt;
  &lt;pre data-lang=&quot;bash&quot; id=&quot;00pR&quot;&gt;# вывести список кошельков
layerd keys list

# показать ключ аккаунта
layerd keys show &amp;lt;name_wallet&amp;gt; --bech acc

# показать ключ валидатора
layerd keys show &amp;lt;name_wallet&amp;gt; --bech val

# показать ключ консенсуса
layerd keys show &amp;lt;name_wallet&amp;gt; --bech cons

# показать все поддерживаемые адреса
layerd debug addr &amp;lt;wallet_addr&amp;gt;

# показать приватный ключ
layerd keys export &amp;lt;name_wallet&amp;gt; --unarmored-hex --unsafe
layerd keys unsafe-export-eth-key &amp;lt;name_wallet&amp;gt;

# запрос учетной записи
layerd q auth account $(layerd keys show &amp;lt;name_wallet&amp;gt; -a) -o text

# удалить кошелек
layerd keys delete &amp;lt;name_wallet&amp;gt;&lt;/pre&gt;
  &lt;p id=&quot;Qfld&quot;&gt;&lt;strong&gt;Удалить ноду&lt;/strong&gt;&lt;/p&gt;
  &lt;pre data-lang=&quot;bash&quot; id=&quot;yXeN&quot;&gt;systemctl stop layerd &amp;amp;&amp;amp; \
systemctl disable layerd &amp;amp;&amp;amp; \
rm /etc/systemd/system/layerd.service &amp;amp;&amp;amp; \
systemctl daemon-reload &amp;amp;&amp;amp; \
cd $HOME &amp;amp;&amp;amp; \
rm -rf .layer layer &amp;amp;&amp;amp; \
rm -rf $(which layerd)&lt;/pre&gt;
  &lt;p id=&quot;fYh0&quot;&gt;&lt;strong&gt;ГОВЕРНАНС&lt;/strong&gt;&lt;/p&gt;
  &lt;pre data-lang=&quot;bash&quot; id=&quot;6tWD&quot;&gt;# список proposals
layerd q gov proposals

# посмотреть результат голосования
layerd q gov proposals --voter &amp;lt;ADDRESS&amp;gt;

# проголосовать за предложение 
layerd tx gov vote 1 yes --from &amp;lt;name_wallet&amp;gt; --fees=5loya

# внести депозит в предложение
layerd tx gov deposit 1 1000000loya --from &amp;lt;name_wallet&amp;gt; --fees=5loya

# создать предложение
layerd tx gov submit-proposal --title=&amp;quot;Randomly reward&amp;quot; --description=&amp;quot;Reward 10 testnet participants who completed more than 3 tasks&amp;quot; --type=&amp;quot;Text&amp;quot; --deposit=&amp;quot;11000000loya&amp;quot; --from=&amp;lt;name_wallet&amp;gt; --fees=5loya&lt;/pre&gt;
  &lt;p id=&quot;chat-messages-932182862663389245&quot;&gt;&lt;strong&gt;Peers and RPC&lt;/strong&gt;&lt;/p&gt;
  &lt;pre data-lang=&quot;bash&quot; id=&quot;6KNv&quot;&gt;FOLDER=.layer

# узнать свой peer
PORTR=$(grep -A 3 &amp;quot;\[p2p\]&amp;quot; ~/$FOLDER/config/config.toml | egrep -o &amp;quot;:[0-9]+&amp;quot;) &amp;amp;&amp;amp; \
echo $(layerd tendermint show-node-id)@$(wget -qO- eth0.me)$PORTR

# узнать порт RPC
echo -e &amp;quot;\033[0;32m$(grep -A 3 &amp;quot;\[rpc\]&amp;quot; ~/$FOLDER/config/config.toml | egrep -o &amp;quot;:[0-9]+&amp;quot;)\033[0m&amp;quot;

# проверка количества пиров
PORT=
curl -s http://localhost:$PORT/net_info | jq -r &amp;#x27;.result.peers[] | &amp;quot;\(.node_info.id)@\(.remote_ip):\(.node_info.listen_addr | split(&amp;quot;:&amp;quot;)[2])&amp;quot;&amp;#x27; | wc -l

# cписок моникеров подключенных пиров
curl -s http://localhost:$PORT/net_info | jq &amp;#x27;.result.peers[].node_info.moniker&amp;#x27;

# Проверка prevotes/precommits. Пригодится при обновах
curl -s localhost:$PORT/consensus_state | jq &amp;#x27;.result.round_state.height_vote_set[0].prevotes_bit_array&amp;#x27; &amp;amp;&amp;amp; \
curl -s localhost:$PORT/consensus_state | jq &amp;#x27;.result.round_state.height_vote_set[0].precommits_bit_array&amp;#x27;

# check prevote of your validator
curl -s localhost:$PORT/consensus_state -s | grep $(curl -s localhost:26657/status | jq -r .result.validator_info.address[:12])&lt;/pre&gt;
  &lt;figure id=&quot;eUNe&quot; class=&quot;m_original&quot; data-caption-align=&quot;center&quot;&gt;
    &lt;img src=&quot;https://img3.teletype.in/files/e9/28/e92895ca-f71d-497c-9fd2-2e7eeedd5303.png&quot; width=&quot;278&quot; /&gt;
    &lt;figcaption&gt;&lt;strong&gt;Поддержим природу вместе: 0xa7476EC14cD663C742d527113638C77a1631Cc89 cosmos1m2mm7kzvw6m3464h94ryqg8xvr6tyeyyecppnq&lt;/strong&gt;&lt;/figcaption&gt;
  &lt;/figure&gt;

</content></entry><entry><id>lesnik13utsa:qlThL06IAmG</id><link rel="alternate" type="text/html" href="https://teletype.in/@lesnik13utsa/qlThL06IAmG?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=lesnik13utsa"></link><title>UOMI</title><published>2025-01-29T13:03:36.142Z</published><updated>2025-10-03T16:57:14.473Z</updated><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img1.teletype.in/files/46/cc/46cccb0a-6db4-4788-81c9-b898cce38ac2.png"></media:thumbnail><category term="gpu" label="GPU"></category><summary type="html">&lt;img src=&quot;https://img1.teletype.in/files/0d/86/0d866268-f0e5-40fe-af00-54df3abe2bf5.png&quot;&gt;UOMI</summary><content type="html">
  &lt;figure id=&quot;9R50&quot; class=&quot;m_custom&quot;&gt;
    &lt;img src=&quot;https://img1.teletype.in/files/0d/86/0d866268-f0e5-40fe-af00-54df3abe2bf5.png&quot; width=&quot;1091&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;KboJ&quot; data-align=&quot;center&quot;&gt;🪓 &lt;a href=&quot;https://t.me/utsa_channel&quot; target=&quot;_blank&quot;&gt;Telegram канал UTSA&lt;/a&gt; 🪓 &lt;a href=&quot;https://t.me/utsa_chat&quot; target=&quot;_blank&quot;&gt;Telegram чат UTSA&lt;/a&gt;&lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(236, 74%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;p id=&quot;l8Xa&quot; data-align=&quot;center&quot;&gt;&lt;strong&gt;&lt;a href=&quot;https://uomi.ai/&quot; target=&quot;_blank&quot;&gt;Web&lt;/a&gt; &lt;a href=&quot;https://discord.gg/HF2RJyw7yj&quot; target=&quot;_blank&quot;&gt;Discord&lt;/a&gt; &lt;a href=&quot;https://docs.uomi.ai/build/run-a-node/become-a-validator/spin-up-a-validator&quot; target=&quot;_blank&quot;&gt;Docs&lt;/a&gt; &lt;a href=&quot;https://subexp.uomi.ai/#/explorer&quot; target=&quot;_blank&quot;&gt;Staking&lt;/a&gt; &lt;a href=&quot;https://github.com/Uomi-network/uomi-node&quot; target=&quot;_blank&quot;&gt;Github&lt;/a&gt; &lt;a href=&quot;https://telemetry.polkadot.io/#/0x936d2e75a0cdca17eb9d05480579e2aa3e27793e89380b6aa2281548f823d6b0&quot; target=&quot;_blank&quot;&gt;Telemetry&lt;/a&gt; &lt;a href=&quot;https://explorer.uomi.ai/&quot; target=&quot;_blank&quot;&gt;Explorer-EVM&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
  &lt;/section&gt;
  &lt;p id=&quot;MWkx&quot;&gt;&lt;strong&gt;UOMI&lt;/strong&gt; - это блокчейн-платформа, разработанная для экосистем Polkadot и Ethereum, поддерживающая смарт-контракты Wasm и EVM. Окунитесь в новую эру децентрализованных экономических агентов, управляемых искусственным интеллектом&lt;/p&gt;
  &lt;p id=&quot;xa7b&quot;&gt;В данном руководстве будет описан процесс запуска валидатора&lt;/p&gt;
  &lt;p id=&quot;gLPY&quot;&gt;&lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(236, 74%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;p id=&quot;v1Cy&quot;&gt;✅&lt;strong&gt;Тестовая сеть UOMI Finney Incentivized Testnet запущена &lt;/strong&gt;&lt;/p&gt;
    &lt;p id=&quot;FFM4&quot;&gt;50 000 000 токенов $UOMI выделены для вознаграждения операторов нод, начиная с этой тестовой сети!&lt;/p&gt;
    &lt;p id=&quot;TEWs&quot;&gt;Валидаторы являются ядром экосистемы UOMI, обеспечивая производство блоков, вычисления ИИ и кросс-чейн взаимодействие. Запуская ноду валидатора Вы активно вносите вклад в рост сети, а токены $UOMI являются поощрениями за Ваше участие&lt;/p&gt;
    &lt;p id=&quot;RQ2V&quot;&gt;Выберите тип узла, который подходит для Вашей настройки:&lt;/p&gt;
    &lt;ul id=&quot;qzjR&quot;&gt;
      &lt;li id=&quot;icwg&quot;&gt;Ноды RPC: light, full или archive, оптимизированные для доступа к данным и взаимодействия &lt;strong&gt;(данные виды нод под вопросом на счет наград)&lt;/strong&gt;&lt;/li&gt;
      &lt;li id=&quot;52D9&quot;&gt;Ноды валидатора: требуют 48 ГБ оперативной памяти графического процессора и настройку full ноды для проверки транзакций и защиты сети&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/section&gt;
  &lt;hr /&gt;
  &lt;section style=&quot;background-color:hsl(hsl(55,  86%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;p id=&quot;6mBj&quot;&gt;&lt;strong&gt;ВАЖНО:&lt;/strong&gt;&lt;/p&gt;
    &lt;ul id=&quot;vol1&quot;&gt;
      &lt;li id=&quot;r1jO&quot;&gt;&lt;strong&gt;для валидатора нужен сервер с видеокартой (картами), которая имеет 48 GB видеопамяти!!!&lt;/strong&gt;&lt;/li&gt;
      &lt;li id=&quot;xdfI&quot;&gt;&lt;strong&gt;данный гайд подходит для ubuntu 24.04&lt;/strong&gt;&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/section&gt;
  &lt;p id=&quot;8ls0&quot;&gt;&lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(34,  84%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;h2 id=&quot;6FkE&quot;&gt;Подготовка сервера&lt;/h2&gt;
  &lt;/section&gt;
  &lt;pre data-lang=&quot;bash&quot; id=&quot;C5Pc&quot;&gt;# обновляем репозитории
apt update &amp;amp;&amp;amp; apt upgrade -y

# устанавливаем необходимые утилиты
apt install curl build-essential git wget jq make gcc tmux htop nvme-cli pkg-config libssl-dev libleveldb-dev tar clang bsdmainutils ncdu unzip libleveldb-dev libclang-dev -y&lt;/pre&gt;
  &lt;p id=&quot;o4jj&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;qNaM&quot;&gt;&lt;strong&gt;Драйвера на видеокарту&lt;/strong&gt;&lt;/p&gt;
  &lt;section&gt;
    &lt;pre data-lang=&quot;bash&quot; id=&quot;QXiX&quot;&gt;sudo apt-get install linux-headers-$(uname -r)

distribution=$(. /etc/os-release;echo $ID$VERSION_ID | sed -e &amp;#x27;s/\.//g&amp;#x27;)

wget https://developer.download.nvidia.com/compute/cuda/repos/$distribution/x86_64/cuda-keyring_1.1-1_all.deb

sudo dpkg -i cuda-keyring_1.1-1_all.deb

sudo apt-get update

sudo apt-get -y install cuda-drivers

---

curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg \
  &amp;amp;&amp;amp; curl -s -L https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list | \
    sed &amp;#x27;s#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g&amp;#x27; | \
    sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list

sed -i -e &amp;#x27;/experimental/ s/^#//g&amp;#x27; /etc/apt/sources.list.d/nvidia-container-toolkit.list

sudo apt-get update

sudo apt-get install -y nvidia-container-toolkit

---

sudo nvidia-ctk runtime configure --runtime=docker

sudo systemctl restart docker

nvidia-smi
#nvcc --version&lt;/pre&gt;
  &lt;/section&gt;
  &lt;figure id=&quot;PYVH&quot; class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://img3.teletype.in/files/e6/ac/e6ace539-c37e-412c-8ed5-43a62f7f5501.png&quot; width=&quot;925&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;AQN5&quot;&gt;&lt;strong&gt;Используемые порты&lt;/strong&gt;&lt;/p&gt;
  &lt;pre data-lang=&quot;bash&quot; id=&quot;WsiD&quot;&gt;AI работает на порту 8888

# валидатор
ufw allow 30333 comment p2p
ufw allow 9944 comment rpc
ufw allow 9615 comment prometheus&lt;/pre&gt;
  &lt;p id=&quot;C3Y1&quot;&gt;&lt;strong&gt;Устанавливаем python 3.10&lt;/strong&gt;&lt;/p&gt;
  &lt;pre id=&quot;8HhW&quot; data-lang=&quot;bash&quot;&gt;apt install software-properties-common -y
add-apt-repository ppa:deadsnakes/ppa
# нажимаем ентер
apt install python3.10

python3.10 --version
#&lt;/pre&gt;
  &lt;p id=&quot;7EIj&quot;&gt;&lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(34,  84%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;h2 id=&quot;HPE8&quot;&gt;Установка AI&lt;/h2&gt;
  &lt;/section&gt;
  &lt;p id=&quot;q7rE&quot;&gt;&lt;strong&gt;Клонируем репозиторий для AI&lt;/strong&gt;&lt;/p&gt;
  &lt;pre id=&quot;vHwX&quot; data-lang=&quot;bash&quot;&gt;git clone https://github.com/Uomi-network/uomi-node-ai&lt;/pre&gt;
  &lt;p id=&quot;qvlb&quot;&gt;&lt;strong&gt;Устанавливаем миниконду&lt;/strong&gt;&lt;/p&gt;
  &lt;pre id=&quot;tILN&quot; data-lang=&quot;bash&quot;&gt;mkdir -p /root/miniconda3/
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh -O /root/miniconda3/miniconda.sh
chmod +x /root/miniconda3/miniconda.sh
bash /root/miniconda3/miniconda.sh -b -u -p /root/miniconda3&lt;/pre&gt;
  &lt;pre id=&quot;CUjT&quot; data-lang=&quot;bash&quot;&gt;tmux new-session -s miniconda3&lt;/pre&gt;
  &lt;pre id=&quot;qqzE&quot; data-lang=&quot;bash&quot;&gt;# Чтобы инициализировать Miniconda, запускаем сценарий активации
source /root/miniconda3/etc/profile.d/conda.sh

# создать новую среду conda
conda create -n uomi-ai python=3.10 -y

# активируем
conda activate uomi-ai&lt;/pre&gt;
  &lt;p id=&quot;PcRu&quot;&gt;&lt;strong&gt;Устанавливаем необходимое ПО&lt;/strong&gt;&lt;/p&gt;
  &lt;pre id=&quot;qslc&quot; data-lang=&quot;bash&quot;&gt;conda install pytorch==2.2.0 torchvision==0.17.0 torchaudio==2.2.0 pytorch-cuda=12.1 -c pytorch -c nvidia
conda install -c nvidia/label/cuda-12.1.0 cuda-nvcc=12.1 cuda-toolkit=12.1
conda install numpy=1.24
pip install flask
pip install psutil
pip install websocket-client requests
pip install transformers
pip install &amp;#x27;accelerate&amp;gt;=0.26.0&amp;#x27;
pip install autoawq
pip install &amp;#x27;triton==3.2.0&amp;#x27;
pip install diffusers&lt;/pre&gt;
  &lt;p id=&quot;fBKX&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;LLOe&quot;&gt;&lt;strong&gt;Создаем сервисный файл&lt;/strong&gt;&lt;/p&gt;
  &lt;pre id=&quot;Vd6q&quot; data-lang=&quot;bash&quot;&gt;nano /etc/systemd/system/uomi-ai.service&lt;/pre&gt;
  &lt;pre id=&quot;PJ9w&quot; data-lang=&quot;bash&quot;&gt;[Unit]
Description=UOMI AI API Server
After=network.target
​
[Service]
User=root
WorkingDirectory=/root/uomi-node-ai
ExecStart=/bin/bash -c &amp;quot;source /root/miniconda3/etc/profile.d/conda.sh &amp;amp;&amp;amp; conda activate uomi-ai &amp;amp;&amp;amp; python3 uomi-ai.py&amp;quot;
Restart=always
RestartSec=10
TimeoutSec=30
StartLimitIntervalSec=500
StartLimitBurst=5
​
[Install]
WantedBy=multi-user.target&lt;/pre&gt;
  &lt;pre id=&quot;FBD6&quot; data-lang=&quot;bash&quot;&gt;systemctl daemon-reload
systemctl enable uomi-ai.service
systemctl restart uomi-ai.service &amp;amp;&amp;amp; journalctl -u uomi-ai.service -f&lt;/pre&gt;
  &lt;p id=&quot;X23Y&quot;&gt;&lt;/p&gt;
  &lt;hr /&gt;
  &lt;section style=&quot;background-color:hsl(hsl(34,  84%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;h2 id=&quot;xxZW&quot;&gt;Настраиваем ноду валидатора&lt;/h2&gt;
  &lt;/section&gt;
  &lt;p id=&quot;uHND&quot;&gt;&lt;strong&gt;Создаем каталог для базы данных валидатора&lt;/strong&gt;&lt;/p&gt;
  &lt;pre id=&quot;Aqhg&quot; data-lang=&quot;bash&quot;&gt;mkdir -p $HOME/uomi&lt;/pre&gt;
  &lt;p id=&quot;3LlI&quot;&gt;&lt;strong&gt;Скачиваем genesis&lt;/strong&gt;&lt;/p&gt;
  &lt;pre data-lang=&quot;bash&quot; id=&quot;LVXt&quot;&gt;wget -O /usr/local/bin/genesis.json &amp;quot;https://github.com/Uomi-network/uomi-node/releases/download/v0.3.0/genesis.json&amp;quot;
chmod +x /usr/local/bin/genesis.json
sha256sum /usr/local/bin/genesis.json
#af55c2c53693a174fc4198bb2e97e1f7aadeabca419040fb75b2d332c1ce6dc3&lt;/pre&gt;
  &lt;p id=&quot;13Bm&quot;&gt;&lt;strong&gt;Скачиваем бинарный файл&lt;/strong&gt;&lt;/p&gt;
  &lt;pre id=&quot;GoPv&quot; data-lang=&quot;bash&quot;&gt;wget -O /usr/local/bin/uomi &amp;quot;https://github.com/Uomi-network/uomi-node/releases/download/v0.3.6/uomi_ubuntu_24_v0.3.6&amp;quot;
chmod +x /usr/local/bin/uomi
uomi --version
#uomi uomi 0.3.6-d4be41f647b&lt;/pre&gt;
  &lt;p id=&quot;8tM0&quot;&gt;&lt;strong&gt;Создаем кошелек и сохраняем вывод&lt;/strong&gt;&lt;/p&gt;
  &lt;pre id=&quot;D55b&quot; data-lang=&quot;bash&quot;&gt;uomi key generate --scheme Sr25519&lt;/pre&gt;
  &lt;pre id=&quot;0bQV&quot; data-lang=&quot;bash&quot;&gt;# пример вывода
#Secret phrase:     tackle rebuild neither turn degree real capital armed giraffe novel resist human
#Network ID:        substrate
#Secret seed:       0x5c9499827e606bcf284e8a650a96ce13ebf0484bd64a280507ff96d99da6e174
#Public key (hex):  0x14ceec080a6aa464b4235dd951a85669d25e4fa659578f01a7a7dc5c95454931
#Account ID:        0x14ceec080a6aa464b4235dd951a85669d25e4fa659578f01a7a7dc5c95454931
#Public key (SS58): 5CXzHQ3DmYKemRAyY6NPyKsDWiChbeeKtxW3q5RWpmdUQvdR
#SS58 Address:      5CXzHQ3DmYKemRAyY6NPyKsDWiChbeeKtxW3q5RWpmdUQvdR&lt;/pre&gt;
  &lt;section style=&quot;background-color:hsl(hsl(236, 74%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;p id=&quot;LX0U&quot;&gt;Обязательно сохраните вывод кошелька. Данные нам понадобятся позже&lt;/p&gt;
  &lt;/section&gt;
  &lt;p id=&quot;1Uhe&quot;&gt;&lt;strong&gt;Генерируем ключ Ed25519 для GRANDPA, используя свою сид фразу полученную выше&lt;/strong&gt;&lt;/p&gt;
  &lt;pre id=&quot;r3Qi&quot; data-lang=&quot;bash&quot;&gt;uomi key inspect --scheme Ed25519 &amp;quot;&amp;lt;YOU_SEED&amp;gt;&amp;quot;&lt;/pre&gt;
  &lt;section style=&quot;background-color:hsl(hsl(236, 74%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;p id=&quot;DlLh&quot;&gt;Обязательно сохраните вывод после данной команды. Данные нам понадобятся позже&lt;/p&gt;
  &lt;/section&gt;
  &lt;p id=&quot;NQfF&quot;&gt;&lt;strong&gt;Создаем сервисный файл&lt;/strong&gt;&lt;/p&gt;
  &lt;pre id=&quot;mTUJ&quot; data-lang=&quot;bash&quot;&gt;nano /etc/systemd/system/uomi.service&lt;/pre&gt;
  &lt;pre id=&quot;dPLW&quot; data-lang=&quot;bash&quot;&gt;[Unit]
Description=Uomi Node
After=network.target
StartLimitIntervalSec=0

[Service]
Type=simple
User=root
Group=root
Restart=always
RestartSec=10
LimitNOFILE=65535
ExecStart=/usr/local/bin/uomi \
    --validator \
    --name &amp;quot;&amp;lt;MONIKER&amp;gt;&amp;quot; \
    --chain &amp;quot;/usr/local/bin/genesis.json&amp;quot; \
    --base-path &amp;quot;/root/uomi&amp;quot; \
    --state-pruning 1000 \
    --blocks-pruning 1000 \
    --enable-evm-rpc \
    --rpc-cors all \
    --prometheus-external \
    --telemetry-url &amp;quot;wss://telemetry.polkadot.io/submit/ 0&amp;quot;

# Hardening
ProtectSystem=strict
PrivateTmp=true
PrivateDevices=true
NoNewPrivileges=true
ReadWritePaths=/root/uomi

[Install]
WantedBy=multi-user.target&lt;/pre&gt;
  &lt;pre id=&quot;NMQz&quot; data-lang=&quot;bash&quot;&gt;systemctl daemon-reload
systemctl enable uomi.service
systemctl restart uomi.service &amp;amp;&amp;amp; journalctl -u uomi.service -f&lt;/pre&gt;
  &lt;hr /&gt;
  &lt;section style=&quot;background-color:hsl(hsl(236, 74%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;p id=&quot;RC5t&quot;&gt;&lt;strong&gt;ВАЖНО&lt;/strong&gt; - если нода не может подцепиться к пирам, то пиры в сервисный файл или в GENESIS&lt;br /&gt;Пиры берем здесь - &lt;a href=&quot;https://app.uomi.ai/peers&quot; target=&quot;_blank&quot;&gt;https://app.uomi.ai/peers&lt;/a&gt;&lt;/p&gt;
    &lt;pre id=&quot;40b4&quot; data-lang=&quot;bash&quot;&gt;# для сервисного файла
--reserved-nodes &amp;quot;/ip4/5.9.87.231/tcp/30333/p2p/12D3KooWCAChuDHHpNER855r6NpAGDeLrSZ4U3sP6FocSWWJZDf5&amp;quot;&lt;/pre&gt;
    &lt;p id=&quot;7JN1&quot;&gt;Второй вариант добавить пиры в genesis&lt;/p&gt;
    &lt;pre id=&quot;Sxzu&quot; data-lang=&quot;bash&quot;&gt;# для genesis
nano /usr/local/bin/genesis.json&lt;/pre&gt;
    &lt;figure id=&quot;0K5f&quot; class=&quot;m_original&quot;&gt;
      &lt;img src=&quot;https://img2.teletype.in/files/94/6c/946c072c-2b76-41c4-9be1-18fc904caf06.png&quot; width=&quot;1575&quot; /&gt;
    &lt;/figure&gt;
  &lt;/section&gt;
  &lt;p id=&quot;N3IX&quot;&gt;&lt;strong&gt;Добавление ключей ШАГ 1&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;ta6S&quot;&gt;Как только Ваша нода будет запущена, вставьте свои ключи&lt;/p&gt;
  &lt;p id=&quot;jAtH&quot;&gt;ВНИМАНИЕ - замените &lt;strong&gt;SECRET_PHRASE&lt;/strong&gt; и &lt;strong&gt;PUBLIC KEY (hex)&lt;/strong&gt; Вашими данными, полученными с помощью первой команды &amp;quot;&lt;strong&gt;key generate --scheme Sr25519&lt;/strong&gt;&amp;quot; &lt;/p&gt;
  &lt;pre id=&quot;6EQl&quot; data-lang=&quot;bash&quot;&gt;for key_type in babe imon uomi ipfs; do
    curl -H &amp;quot;Content-Type: application/json&amp;quot; \
        -d &amp;#x27;{&amp;quot;id&amp;quot;:1, &amp;quot;jsonrpc&amp;quot;:&amp;quot;2.0&amp;quot;, &amp;quot;method&amp;quot;:&amp;quot;author_insertKey&amp;quot;, &amp;quot;params&amp;quot;:[&amp;quot;&amp;#x27;$key_type&amp;#x27;&amp;quot;, &amp;quot;SECRET_PHRASE&amp;quot;, &amp;quot;PUBLIC_KEY&amp;quot;]}&amp;#x27; \
        http://localhost:9944
done&lt;/pre&gt;
  &lt;p id=&quot;dg50&quot;&gt;&lt;strong&gt;Добавление ключей ШАГ 2&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;MoMp&quot;&gt;ВНИМАНИЕ - замените &lt;strong&gt;SECRET_PHRASE&lt;/strong&gt; и &lt;strong&gt;PUBLIC KEY (hex)&lt;/strong&gt; Вашими данными, полученными с помощью второй команды &amp;quot;&lt;strong&gt;key inspect --scheme Ed25519&lt;/strong&gt;&amp;quot; &lt;/p&gt;
  &lt;pre id=&quot;Iami&quot; data-lang=&quot;bash&quot;&gt;curl -H &amp;quot;Content-Type: application/json&amp;quot; \
    -d &amp;#x27;{&amp;quot;id&amp;quot;:1, &amp;quot;jsonrpc&amp;quot;:&amp;quot;2.0&amp;quot;, &amp;quot;method&amp;quot;:&amp;quot;author_insertKey&amp;quot;, &amp;quot;params&amp;quot;:[&amp;quot;gran&amp;quot;, &amp;quot;SECRET_PHRASE&amp;quot;, &amp;quot;PUBLIC_KEY&amp;quot;]}&amp;#x27; \
    http://localhost:9944&lt;/pre&gt;
  &lt;p id=&quot;F4VB&quot;&gt;&lt;strong&gt;Наконец после того как нода будет полностью синхронизирована выполните следующую команду для создания сеансовых ключей при создании валидатора в polkadot js на сайте &lt;a href=&quot;https://subexp.uomi.ai/#/staking/actions&quot; target=&quot;_blank&quot;&gt;https://subexp.uomi.ai/#/staking/actions&lt;/a&gt;&lt;br /&gt;Необходимо выбрать раздел validator - кошелек - комиссию и вставить полученный ключ&lt;/strong&gt;&lt;/p&gt;
  &lt;pre id=&quot;Ahog&quot; data-lang=&quot;bash&quot;&gt;curl -H &amp;quot;Content-Type: application/json&amp;quot; -d &amp;#x27;{&amp;quot;id&amp;quot;:1, &amp;quot;jsonrpc&amp;quot;:&amp;quot;2.0&amp;quot;, &amp;quot;method&amp;quot;: &amp;quot;author_rotateKeys&amp;quot;, &amp;quot;params&amp;quot;:[]}&amp;#x27; http://localhost:9944&lt;/pre&gt;
  &lt;p id=&quot;u9uX&quot;&gt;&lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(34,  84%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;h2 id=&quot;SkX9&quot;&gt;Snapshot&lt;/h2&gt;
  &lt;/section&gt;
  &lt;section style=&quot;background-color:hsl(hsl(236, 74%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;p id=&quot;4Jcn&quot; data-align=&quot;center&quot;&gt;every 48 hours&lt;strong&gt; | &lt;/strong&gt;pruning: 1000&lt;/p&gt;
    &lt;p id=&quot;mU8g&quot; data-align=&quot;center&quot;&gt;🌐 &lt;a href=&quot;https://share.utsa.tech/uomi/&quot; target=&quot;_blank&quot;&gt;&lt;strong&gt;https://share.utsa.tech/uomi/&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;
  &lt;/section&gt;
  &lt;section style=&quot;background-color:hsl(hsl(236, 74%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;pre data-lang=&quot;bash&quot; id=&quot;sSY0&quot;&gt;# останавливаем ноду
systemctl stop uomi

# удаляем базу данных. При необходимости измените путь на свой
rm -r $HOME/uomi/chains/uomi/db/

# скачиваем snapshot. При необходимости измените путь на свой
curl -o - -L https://share.utsa.tech/uomi/uomi_testnet.tar.lz4 | lz4 -c -d - | tar -x -C $HOME/uomi/chains/uomi/

# перезагружаем ноду
systemctl restart uomi &amp;amp;&amp;amp; journalctl -u uomi -f -o cat&lt;/pre&gt;
  &lt;/section&gt;
  &lt;p id=&quot;HDUm&quot;&gt;&lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(34,  84%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;h2 id=&quot;M2q1&quot;&gt;Полезные команды&lt;/h2&gt;
  &lt;/section&gt;
  &lt;pre data-lang=&quot;bash&quot; id=&quot;ha5u&quot;&gt;# проверить логи
journalctl -u uomi.service -f
journalctl -u uomi-ai.service -f
&lt;/pre&gt;
  &lt;p id=&quot;ArwN&quot;&gt;&lt;strong&gt;Удалить ноду&lt;/strong&gt;&lt;/p&gt;
  &lt;pre id=&quot;XsVG&quot; data-lang=&quot;bash&quot;&gt;# delete AI
systemctl stop uomi-ai
systemctl disable uomi-ai
rm /etc/systemd/system/uomi-ai.service

systemctl daemon-reload
cd
rm -r uomi-node-ai

# delete node
systemctl stop uomi
systemctl disable uomi
rm /etc/systemd/system/uomi.service

systemctl daemon-reload
cd
rm -r uomi&lt;/pre&gt;
  &lt;p id=&quot;TRZA&quot;&gt;&lt;/p&gt;
  &lt;pre id=&quot;B7Yg&quot; data-lang=&quot;bash&quot;&gt;# Проверка конечной точки RPC
curl -H &amp;quot;Content-Type: application/json&amp;quot; \
    -d &amp;#x27;{&amp;quot;id&amp;quot;:1, &amp;quot;jsonrpc&amp;quot;:&amp;quot;2.0&amp;quot;, &amp;quot;method&amp;quot;: &amp;quot;system_health&amp;quot;, &amp;quot;params&amp;quot;:[]}&amp;#x27; \
    http://localhost:9944&lt;/pre&gt;
  &lt;pre id=&quot;tNJ8&quot; data-lang=&quot;bash&quot;&gt;# узнать свой peer
curl -H &amp;quot;Content-Type: application/json&amp;quot; -d &amp;#x27;{&amp;quot;id&amp;quot;:1, &amp;quot;jsonrpc&amp;quot;:&amp;quot;2.0&amp;quot;, &amp;quot;method&amp;quot;: &amp;quot;system_localPeerId&amp;quot;}&amp;#x27; http://localhost:9944
#{&amp;quot;jsonrpc&amp;quot;:&amp;quot;2.0&amp;quot;,&amp;quot;result&amp;quot;:&amp;quot;12D3KooWBTu7oEJzsyxEtuc1ktnuisyntF8sjFB6Q61yxEtuc1k&amp;quot;,&amp;quot;id&amp;quot;:1}

# подставляем свои данные
ip4/&amp;lt;YOUR_IP&amp;gt;/tcp/30333/p2p/&amp;lt;RESULT_OF_CURL&amp;gt;
#/ip4/213.12.15.9/tcp/30333/p2p/12D3KooWBTu7oEJzsyxEtuc1ktnuisyntF8sjFB6Q61yxEtuc1k&lt;/pre&gt;
  &lt;figure id=&quot;YlFI&quot; class=&quot;m_original&quot; data-caption-align=&quot;center&quot;&gt;
    &lt;img src=&quot;https://img3.teletype.in/files/e9/28/e92895ca-f71d-497c-9fd2-2e7eeedd5303.png&quot; width=&quot;278&quot; /&gt;
    &lt;figcaption&gt;&lt;strong&gt;Поддержим природу вместе: 0xa7476EC14cD663C742d527113638C77a1631Cc89 cosmos1m2mm7kzvw6m3464h94ryqg8xvr6tyeyyecppnq&lt;/strong&gt;&lt;/figcaption&gt;
  &lt;/figure&gt;

</content></entry><entry><id>lesnik13utsa:yhwoF4hhHxP</id><link rel="alternate" type="text/html" href="https://teletype.in/@lesnik13utsa/yhwoF4hhHxP?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=lesnik13utsa"></link><title>Atomone</title><published>2025-01-13T15:47:50.970Z</published><updated>2026-03-11T09:23:25.710Z</updated><category term="mainnet" label="MAINNET"></category><summary type="html">&lt;img src=&quot;https://img3.teletype.in/files/ac/6e/ac6e1e0d-defd-49a8-a013-982f0a502db0.png&quot;&gt;UTSA</summary><content type="html">
  &lt;figure id=&quot;I1Jz&quot; class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://img3.teletype.in/files/ac/6e/ac6e1e0d-defd-49a8-a013-982f0a502db0.png&quot; width=&quot;820&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;head&quot; data-align=&quot;center&quot;&gt;🪓 &lt;a href=&quot;https://t.me/utsa_channel&quot; target=&quot;_blank&quot;&gt;Telegram канал UTSA&lt;/a&gt; 🪓 &lt;a href=&quot;https://t.me/utsa_chat&quot; target=&quot;_blank&quot;&gt;Telegram чат UTSA&lt;/a&gt;&lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(236, 74%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;p id=&quot;D2wo&quot; data-align=&quot;center&quot;&gt;&lt;strong&gt;Web &lt;a href=&quot;https://discord.gg/fPxZwk3GS4&quot; target=&quot;_blank&quot;&gt;Discord&lt;/a&gt; &lt;a href=&quot;https://github.com/atomone-hub&quot; target=&quot;_blank&quot;&gt;Github&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
  &lt;/section&gt;
  &lt;p id=&quot;sHgA&quot;&gt;&lt;u&gt;&lt;strong&gt;Testnet details&lt;/strong&gt;&lt;/u&gt;&lt;/p&gt;
  &lt;ul id=&quot;2h1F&quot;&gt;
    &lt;li id=&quot;ED8t&quot;&gt;Network Chain ID: &lt;code&gt;atomone-1&lt;/code&gt;&lt;/li&gt;
    &lt;li id=&quot;8tyv&quot;&gt;Denom stake: &lt;code&gt;uatone&lt;/code&gt;&lt;/li&gt;
    &lt;li id=&quot;SZWc&quot;&gt;Binary: atomoned&lt;/li&gt;
    &lt;li id=&quot;OnH1&quot;&gt;Working directory: &lt;code&gt;.atomone&lt;/code&gt;&lt;/li&gt;
    &lt;li id=&quot;AdcU&quot;&gt;RPC: &lt;a href=&quot;https://m-atomone.rpc.utsa.tech/&quot; target=&quot;_blank&quot;&gt;https://m-atomone.rpc.utsa.tech/&lt;/a&gt;&lt;/li&gt;
    &lt;li id=&quot;LaYP&quot;&gt;API: &lt;a href=&quot;https://m-atomone.api.utsa.tech/&quot; target=&quot;_blank&quot;&gt;https://m-atomone.api.utsa.tech/&lt;/a&gt;&lt;/li&gt;
    &lt;li id=&quot;jHeg&quot;&gt;Explorer: &lt;a href=&quot;https://exp.utsa.tech/atomone/staking&quot; target=&quot;_blank&quot;&gt;https://exp.utsa.tech/atomone/staking&lt;/a&gt;&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p id=&quot;motH&quot;&gt;&lt;strong&gt;AtomOne&lt;/strong&gt; - это форк Gaia, который дополняет более широкую экосистему Cosmos альтернативным хабом, ориентированным на безопасность. AtomOne подтверждает основополагающее видение Cosmos Hub как минимального хаба IBC/ICS, защищенного токеном стейкинга, нацеленным на две трети стейкинга. Участники AtomOne поддерживают изначальные ценности Cosmos Hub - безопасность, устойчивость, децентрализацию и соглашаются, что минимализм хаба, закрепленный письменной конституцией, — единственный способ обеспечить финансовую безопасность и масштабирование для миллиардов людей&lt;/p&gt;
  &lt;p id=&quot;bitcoins-liquidity&quot;&gt;&lt;/p&gt;
  &lt;hr /&gt;
  &lt;section style=&quot;background-color:hsl(hsl(236, 74%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;pre data-lang=&quot;bash&quot; id=&quot;UiYx&quot;&gt;# проверяем статус prevotes/precommits
FOLDER=.atomone

# узнать порт RPC
echo -e &amp;quot;\033[0;32m$(grep -A 3 &amp;quot;\[rpc\]&amp;quot; ~/$FOLDER/config/config.toml | egrep -o &amp;quot;:[0-9]+&amp;quot;)\033[0m&amp;quot;

PORT=&amp;lt;ввести свой порт&amp;gt;

# Проверка prevotes/precommits. Пригодится при обновах
curl -s localhost:$PORT/consensus_state | jq &amp;#x27;.result.round_state.height_vote_set[0].prevotes_bit_array&amp;#x27; &amp;amp;&amp;amp; \
curl -s localhost:$PORT/consensus_state | jq &amp;#x27;.result.round_state.height_vote_set[0].precommits_bit_array&amp;#x27;&lt;/pre&gt;
  &lt;/section&gt;
  &lt;section style=&quot;background-color:hsl(hsl(236, 74%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;p id=&quot;CJUj&quot;&gt;&lt;strong&gt;&lt;s&gt;UPD 🕊 v1.1.2 (Высота обновления: )&lt;/s&gt;&lt;/strong&gt;&lt;/p&gt;
    &lt;pre data-lang=&quot;bash&quot; id=&quot;NavW&quot;&gt;cd $HOME/atomone
git pull
git checkout v1.1.2
make build
$HOME/atomone/build/atomoned version --long | grep -e version -e commit
# version: v1.1.2
# commit: b07127b42c91c8709a8b7335ae8a1176e0fd1ece

# # ПОСЛЕ ОСТАНОВКИ СЕТИ НА НУЖНОМ БЛОКЕ!!!
systemctl stop atomoned
mv $HOME/atomone/build/atomoned $(which atomoned)
atomoned version --long | grep -e version -e commit
#

systemctl restart atomoned &amp;amp;&amp;amp; journalctl -u atomoned -f -o cat&lt;/pre&gt;
  &lt;/section&gt;
  &lt;section style=&quot;background-color:hsl(hsl(236, 74%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;p id=&quot;CJUj&quot;&gt;&lt;strong&gt;&lt;s&gt;UPD 🕊 v2.1.0 (Высота обновления: 3318000)&lt;/s&gt;&lt;/strong&gt;&lt;/p&gt;
    &lt;pre data-lang=&quot;bash&quot; id=&quot;56Xk&quot;&gt;cd $HOME/atomone
git pull
git checkout v2.1.0
make build
$HOME/atomone/build/atomoned version --long | grep -e version -e commit
# version: v2.1.0
# commit: c29e6ecf39ce733fe14e7d703aa28e5aeef5e8f0

# # ПОСЛЕ ОСТАНОВКИ СЕТИ НА НУЖНОМ БЛОКЕ!!!
systemctl stop atomoned
mv $HOME/atomone/build/atomoned $(which atomoned)
atomoned version --long | grep -e version -e commit
#

systemctl restart atomoned &amp;amp;&amp;amp; journalctl -u atomoned -f -o cat&lt;/pre&gt;
  &lt;/section&gt;
  &lt;section style=&quot;background-color:hsl(hsl(236, 74%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;p id=&quot;1yyb&quot;&gt;&lt;strong&gt;UPD 🕊 v3.3.0 (Высота обновления: 5902000)&lt;/strong&gt;&lt;/p&gt;
    &lt;pre data-lang=&quot;bash&quot; id=&quot;69t1&quot;&gt;cd $HOME/atomone
git pull
git checkout v3.3.0
make build
$HOME/atomone/build/atomoned version --long | grep -e version -e commit
# version: v3.3.0
# commit: 4631da0210859bfa0da25e3fbcc8fa33f0c6ffdc

# AFTER THE NETWORK IS STOPPED ON THE REQUIRED BLOCK!!!
systemctl stop atomoned
mv $HOME/atomone/build/atomoned $(which atomoned)
atomoned version --long | grep -e version -e commit
#

systemctl restart atomoned &amp;amp;&amp;amp; journalctl -u atomoned -f -o cat&lt;/pre&gt;
  &lt;/section&gt;
  &lt;p id=&quot;vyaU&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;b72l&quot;&gt;&lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(34,  84%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;h2 id=&quot;6FkE&quot;&gt;Подготовка сервера&lt;/h2&gt;
  &lt;/section&gt;
  &lt;pre data-lang=&quot;bash&quot; id=&quot;Sctg&quot;&gt;# обновляем репозитории
apt update &amp;amp;&amp;amp; sudo apt upgrade -y

# устанавливаем необходимые утилиты
apt install curl build-essential git wget jq make gcc tmux htop nvme-cli pkg-config libssl-dev libleveldb-dev tar clang bsdmainutils ncdu unzip libleveldb-dev -y

# проверяем работу жестких дисков
curl -sL yabs.sh | bash -s — -ig

# проверяем работу интернета
curl -sL yabs.sh | bash -s — -fg&lt;/pre&gt;
  &lt;p id=&quot;M4EP&quot;&gt;&lt;strong&gt;File2Ban&lt;/strong&gt; - подробнее &lt;a href=&quot;https://www.linuxshop.ru/articles/a26710798-nastroyka_fail2ban&quot; target=&quot;_blank&quot;&gt;здесь&lt;/a&gt;&lt;/p&gt;
  &lt;pre data-lang=&quot;bash&quot; id=&quot;bmb2&quot;&gt;# устанавливаем и копируем конфиг, который будет иметь больший приоритет
apt install fail2ban -y &amp;amp;&amp;amp; \
cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local &amp;amp;&amp;amp; \
nano /etc/fail2ban/jail.local
# раскомментировать и добавить свой IP: ignoreip = 127.0.0.1/8 ::1 &amp;lt;ip&amp;gt;
systemctl restart fail2ban

# проверяем status 
systemctl status fail2ban
# проверяем, какие jails активны (по умолчанию только sshd)
fail2ban-client status
# проверяем статистику по sshd
fail2ban-client status sshd
# смотрим логи
tail /var/log/fail2ban.log
# останавливаем работу и удаляем с автозагрузки
#systemctl stop fail2ban &amp;amp;&amp;amp; systemctl disable fail2ban&lt;/pre&gt;
  &lt;p id=&quot;eKUj&quot;&gt;&lt;strong&gt;Устанавливаем Go&lt;/strong&gt;&lt;/p&gt;
  &lt;pre data-lang=&quot;bash&quot; id=&quot;tOgD&quot;&gt;ver=&amp;quot;1.21.13&amp;quot; &amp;amp;&amp;amp; \
wget &amp;quot;https://golang.org/dl/go$ver.linux-amd64.tar.gz&amp;quot; &amp;amp;&amp;amp; \
sudo rm -rf /usr/local/go &amp;amp;&amp;amp; \
sudo tar -C /usr/local -xzf &amp;quot;go$ver.linux-amd64.tar.gz&amp;quot; &amp;amp;&amp;amp; \
rm &amp;quot;go$ver.linux-amd64.tar.gz&amp;quot; &amp;amp;&amp;amp; \
echo &amp;quot;export PATH=$PATH:/usr/local/go/bin:$HOME/go/bin&amp;quot; &amp;gt;&amp;gt; $HOME/.bash_profile &amp;amp;&amp;amp; \
source $HOME/.bash_profile &amp;amp;&amp;amp; \
go version&lt;/pre&gt;
  &lt;p id=&quot;Xwgl&quot;&gt;&lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(34,  84%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;h2 id=&quot;1b58&quot;&gt;Новая установка ноды&lt;/h2&gt;
  &lt;/section&gt;
  &lt;section&gt;
    &lt;p id=&quot;z8pZ&quot;&gt;&lt;u&gt;&lt;em&gt;&lt;strong&gt;ВАЖНО &lt;/strong&gt;— в командах ниже все, что в &lt;strong&gt;&amp;lt;&amp;gt;&lt;/strong&gt; меняем на свое значение и убираем сами&lt;strong&gt; &amp;lt;&amp;gt;&lt;/strong&gt;&lt;/em&gt;&lt;/u&gt;&lt;/p&gt;
  &lt;/section&gt;
  &lt;p id=&quot;sjXD&quot;&gt;&lt;strong&gt;Устанавливаем бинарники&lt;/strong&gt;&lt;/p&gt;
  &lt;pre data-lang=&quot;bash&quot; id=&quot;fj2z&quot;&gt;git clone https://github.com/atomone-hub/atomone &amp;amp;&amp;amp; cd atomone
git checkout v3.3.0
make install

atomoned version --long | grep -e version -e commit
# version: v3.3.0
# commit: 4631da0210859bfa0da25e3fbcc8fa33f0c6ffdc&lt;/pre&gt;
  &lt;p id=&quot;vp48&quot;&gt;&lt;strong&gt;Инициализируем ноду, чтобы создать необходимые файлы конфигурации&lt;/strong&gt;&lt;/p&gt;
  &lt;pre data-lang=&quot;bash&quot; id=&quot;shGi&quot;&gt;atomoned init UTSA_guide --chain-id atomone-1&lt;/pre&gt;
  &lt;p id=&quot;Qrh4&quot;&gt;&lt;strong&gt;Скачиваем Genesis&lt;/strong&gt;&lt;/p&gt;
  &lt;pre data-lang=&quot;bash&quot; id=&quot;5Yaa&quot;&gt;wget -O $HOME/.atomone/config/genesis.json &amp;quot;https://share.utsa.tech/atomone/genesis.json&amp;quot;

# Проверим генезис
sha256sum ~/.atomone/config/genesis.json
# 8ea3f710675dc472beee4e26a76f466f5648b33af5942ae8d6d2f3b5a6d961a6&lt;/pre&gt;
  &lt;p id=&quot;4cmW&quot;&gt;&lt;strong&gt;Скачиваем Addr book&lt;/strong&gt;&lt;/p&gt;
  &lt;pre data-lang=&quot;bash&quot; id=&quot;Bfwr&quot;&gt;wget -O $HOME/.atomone/config/addrbook.json &amp;quot;https://share.utsa.tech/atomone/addrbook.json&amp;quot;&lt;/pre&gt;
  &lt;p id=&quot;iL4t&quot;&gt;&lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(34,  84%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;h2 id=&quot;kBZ8&quot;&gt;Настраиваем конфигурацию ноды&lt;/h2&gt;
  &lt;/section&gt;
  &lt;pre data-lang=&quot;bash&quot; id=&quot;fqxF&quot;&gt;# правим конфиг, благодаря чему мы можем больше не использовать флаг chain-id для каждой команды CLI в client.toml
atomoned config chain-id atomone-1

# настраиваем минимальную цену за газ в app.toml
#minimum-gas-prices = &amp;quot;0.01uatone,0.09uphoton&amp;quot;

# добавляем seeds/bpeers/peers в config.toml
external_address=$(wget -qO- eth0.me)
sed -i.bak -e &amp;quot;s/^external_address *=.*/external_address = \&amp;quot;$external_address:26656\&amp;quot;/&amp;quot; $HOME/.atomone/config/config.toml

peers=&amp;quot;&amp;quot;
sed -i.bak -e &amp;quot;s/^persistent_peers *=.*/persistent_peers = \&amp;quot;$peers\&amp;quot;/&amp;quot; $HOME/.atomone/config/config.toml
seeds=&amp;quot;&amp;quot;
sed -i.bak -e &amp;quot;s/^seeds =.*/seeds = \&amp;quot;$seeds\&amp;quot;/&amp;quot; $HOME/.atomone/config/config.toml

# настраиваем фильтрацию &amp;quot;плохих&amp;quot; peers
sed -i -e &amp;quot;s/^filter_peers *=.*/filter_peers = \&amp;quot;true\&amp;quot;/&amp;quot; $HOME/.atomone/config/config.toml&lt;/pre&gt;
  &lt;p id=&quot;QI2Z&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;O78h&quot;&gt;&lt;strong&gt;(ОПЦИОНАЛЬНО) Настраиваем прунинг в&lt;code&gt;app.toml&lt;/code&gt;&lt;/strong&gt;&lt;/p&gt;
  &lt;pre data-lang=&quot;bash&quot; id=&quot;14yu&quot;&gt;pruning=&amp;quot;custom&amp;quot;
pruning_keep_recent=&amp;quot;1000&amp;quot;
pruning_interval=&amp;quot;100&amp;quot;
sed -i -e &amp;quot;s/^pruning *=.*/pruning = \&amp;quot;$pruning\&amp;quot;/&amp;quot; $HOME/.atomone/config/app.toml
sed -i -e &amp;quot;s/^pruning-keep-recent *=.*/pruning-keep-recent = \&amp;quot;$pruning_keep_recent\&amp;quot;/&amp;quot; $HOME/.atomone/config/app.toml
sed -i -e &amp;quot;s/^pruning-interval *=.*/pruning-interval = \&amp;quot;$pruning_interval\&amp;quot;/&amp;quot; $HOME/.atomone/config/app.toml&lt;/pre&gt;
  &lt;p id=&quot;dGeO&quot;&gt;&lt;strong&gt;(ОПЦИОНАЛЬНО) Выкл индексацию в&lt;code&gt;config.toml&lt;/code&gt;&lt;/strong&gt;&lt;/p&gt;
  &lt;pre data-lang=&quot;bash&quot; id=&quot;55Au&quot;&gt;indexer=&amp;quot;null&amp;quot;
sed -i -e &amp;quot;s/^indexer *=.*/indexer = \&amp;quot;$indexer\&amp;quot;/&amp;quot; $HOME/.atomone/config/config.toml&lt;/pre&gt;
  &lt;p id=&quot;UDzq&quot;&gt;&lt;strong&gt;(ОПЦИОНАЛЬНО) Вкл/выкл снэпшоты в&lt;code&gt;app.toml&lt;/code&gt;&lt;/strong&gt;&lt;/p&gt;
  &lt;pre data-lang=&quot;bash&quot; id=&quot;JzPe&quot;&gt;snapshot_interval=1000
sed -i.bak -e &amp;quot;s/^snapshot-interval *=.*/snapshot-interval = \&amp;quot;$snapshot_interval\&amp;quot;/&amp;quot; ~/.atomone/config/app.toml&lt;/pre&gt;
  &lt;p id=&quot;bdFP&quot;&gt;&lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(34,  84%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;h2 id=&quot;5cMj&quot;&gt;State sync&lt;/h2&gt;
  &lt;/section&gt;
  &lt;section style=&quot;background-color:hsl(hsl(236, 74%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;pre data-lang=&quot;bash&quot; id=&quot;CipN&quot;&gt;# add peer
peers=&amp;quot;7e804bdafb01244cbe82c96e768d88238603e1da@144.76.29.90:61156&amp;quot;
sed -i.bak -e &amp;quot;s/^persistent_peers *=.*/persistent_peers = \&amp;quot;$peers\&amp;quot;/&amp;quot; $HOME/.atomone/config/config.toml&lt;/pre&gt;
    &lt;pre data-lang=&quot;bash&quot; id=&quot;fARJ&quot;&gt;SNAP_RPC=https://m-atomone.rpc.utsa.tech:443

LATEST_HEIGHT=$(curl -s $SNAP_RPC/block | jq -r .result.block.header.height); \
BLOCK_HEIGHT=$((LATEST_HEIGHT - 100)); \
TRUST_HASH=$(curl -s &amp;quot;$SNAP_RPC/block?height=$BLOCK_HEIGHT&amp;quot; | jq -r .result.block_id.hash)

echo $LATEST_HEIGHT $BLOCK_HEIGHT $TRUST_HASH

sed -i.bak -E &amp;quot;s|^(enable[[:space:]]+=[[:space:]]+).*$|\1true| ; \
s|^(rpc_servers[[:space:]]+=[[:space:]]+).*$|\1\&amp;quot;$SNAP_RPC,$SNAP_RPC\&amp;quot;| ; \
s|^(trust_height[[:space:]]+=[[:space:]]+).*$|\1$BLOCK_HEIGHT| ; \
s|^(trust_hash[[:space:]]+=[[:space:]]+).*$|\1\&amp;quot;$TRUST_HASH\&amp;quot;| ; \
s|^(seeds[[:space:]]+=[[:space:]]+).*$|\1\&amp;quot;\&amp;quot;|&amp;quot; $HOME/.atomone/config/config.toml&lt;/pre&gt;
    &lt;pre data-lang=&quot;bash&quot; id=&quot;suj0&quot;&gt;systemctl restart atomoned &amp;amp;&amp;amp; journalctl -u atomoned -f -o cat&lt;/pre&gt;
  &lt;/section&gt;
  &lt;p id=&quot;4qU1&quot;&gt;&lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(34,  84%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;h2 id=&quot;N1Bw&quot;&gt;&lt;strong&gt;Snapshot&lt;/strong&gt;&lt;/h2&gt;
  &lt;/section&gt;
  &lt;section style=&quot;background-color:hsl(hsl(236, 74%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;p id=&quot;yPUl&quot; data-align=&quot;center&quot;&gt;time: &lt;strong&gt;every 24 hours&lt;/strong&gt; &lt;strong&gt;| &lt;/strong&gt;indexer:&lt;strong&gt; kv | &lt;/strong&gt;pruning:&lt;strong&gt; 1000/100&lt;/strong&gt;&lt;/p&gt;
    &lt;p id=&quot;SP72&quot; data-align=&quot;center&quot;&gt;🌐 &lt;a href=&quot;https://share.utsa.tech/atomone/&quot; target=&quot;_blank&quot;&gt;&lt;strong&gt;https://share.utsa.tech/atomone/&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;
    &lt;pre data-lang=&quot;bash&quot; id=&quot;booK&quot;&gt;cd $HOME
systemctl stop atomoned

cp $HOME/.atomone/data/priv_validator_state.json $HOME/.atomone/priv_validator_state.json.backup

# удаляем старую базу данных
rm -rf $HOME/.atomone/data/{application.db,evidence.db,snapshots,tx_index.db,blockstore.db,state.db,cs.wal}

# скачиваем snapshot
curl -o - -L https://share.utsa.tech/atomone/atomone.tar.lz4 | lz4 -c -d - | tar -x -C $HOME/.atomone/

mv $HOME/.atomone/priv_validator_state.json.backup $HOME/.atomone/data/priv_validator_state.json

systemctl restart atomoned &amp;amp;&amp;amp; journalctl -u atomoned -f -o cat&lt;/pre&gt;
  &lt;/section&gt;
  &lt;p id=&quot;76hd&quot;&gt;&lt;strong&gt;Создаем сервисный файл&lt;/strong&gt;&lt;/p&gt;
  &lt;pre data-lang=&quot;bash&quot; id=&quot;N5A7&quot;&gt;tee /etc/systemd/system/atomoned.service &amp;gt; /dev/null &amp;lt;&amp;lt;EOF
[Unit]
Description=atomoned
After=network-online.target

[Service]
User=$USER
ExecStart=$(which atomoned) start
Restart=on-failure
RestartSec=3
LimitNOFILE=65535

[Install]
WantedBy=multi-user.target
EOF&lt;/pre&gt;
  &lt;pre data-lang=&quot;bash&quot; id=&quot;FwON&quot;&gt;systemctl daemon-reload
systemctl enable atomoned
systemctl restart atomoned &amp;amp;&amp;amp; journalctl -u atomoned -f -o cat&lt;/pre&gt;
  &lt;p id=&quot;P3nc&quot;&gt;&lt;strong&gt;Создаем или восстанавливаем кошелек и сохраняем вывод&lt;/strong&gt;&lt;/p&gt;
  &lt;pre data-lang=&quot;bash&quot; id=&quot;Okji&quot;&gt;# создать кошелек
atomoned keys add &amp;lt;name_wallet&amp;gt; --keyring-backend os

# восстановить кошелек (после команды вставить seed)
atomoned keys add &amp;lt;name_wallet&amp;gt; --recover --keyring-backend os

# подключить кошелек ledger
atomoned keys add &amp;lt;name_wallet&amp;gt; --ledger &lt;/pre&gt;
  &lt;section style=&quot;background-color:hsl(hsl(236, 74%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;p id=&quot;YLko&quot;&gt;&lt;strong&gt;Не забываем сохранить seed !!!&lt;/strong&gt;&lt;/p&gt;
  &lt;/section&gt;
  &lt;p id=&quot;lNw0&quot;&gt;&lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(34,  84%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;h2 id=&quot;sBaD&quot;&gt;&lt;strong&gt;Создаем валидатора&lt;/strong&gt;&lt;/h2&gt;
  &lt;/section&gt;
  &lt;pre id=&quot;0ztD&quot; data-lang=&quot;bash&quot;&gt;atomoned tx staking create-validator \
--chain-id atomone-1 \
--commission-rate 0.1 \
--commission-max-rate 0.256 \
--commission-max-change-rate 0.1 \
--min-self-delegation &amp;quot;1&amp;quot; \
--amount=1000000uatone \
--pubkey $(atomoned tendermint show-validator) \
--moniker &amp;quot;&amp;lt;moniker&amp;gt;&amp;quot; \
--details=&amp;quot;&amp;quot; \
--security-contact=&amp;quot;&amp;quot; \
--website=&amp;quot;&amp;quot; \
--identity=&amp;quot;&amp;quot; \
--from &amp;lt;wallet&amp;gt; \
--fees 50000uphoton&lt;/pre&gt;
  &lt;section style=&quot;background-color:hsl(hsl(236, 74%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;p id=&quot;kj2D&quot;&gt;&lt;strong&gt;Не забываем сохранить priv_validator_key.json !!!&lt;/strong&gt;&lt;/p&gt;
    &lt;p id=&quot;VBzA&quot;&gt;Подробнее о создании/редактировании валидатора можно почитать &lt;a href=&quot;/@lesnik13utsa/RPLJpWXIoDQ&quot;&gt;здесь&lt;/a&gt;&lt;/p&gt;
  &lt;/section&gt;
  &lt;p id=&quot;crTl&quot;&gt;&lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(34,  84%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;h2 id=&quot;1eUH&quot;&gt;Полезные команды&lt;/h2&gt;
  &lt;/section&gt;
  &lt;p id=&quot;Fuvu&quot;&gt;&lt;strong&gt;Информация&lt;/strong&gt;&lt;/p&gt;
  &lt;pre data-lang=&quot;bash&quot; id=&quot;uOsZ&quot;&gt;# проверить логи
sudo journalctl -u atomoned -f -o cat
# проверить статус
curl localhost:$PORT/status | jq
# проверить баланс
atomoned q bank balances &amp;lt;address&amp;gt;
# проверить pubkey валидатора
atomoned tendermint show-validator
# проверить валидатора
atomoned query staking validator &amp;lt;valoper_address&amp;gt;
atomoned query staking validators --limit 1000000 -o json | jq &amp;#x27;.validators[] | select(.description.moniker==&amp;quot;&amp;lt;name_moniker&amp;gt;&amp;quot;)&amp;#x27; | jq
# проверка информации по TX_HASH
atomoned query tx &amp;lt;TX_HASH&amp;gt;
# параметры сети
atomoned q staking params
atomoned q slashing params
# проверить сколько блоков пропущено валидатором и с какого блока актив
atomoned q slashing signing-info $(atomoned tendermint show-validator)
# проверить slashing
atomoned q slashing signing-info $(atomoned tendermint show-validator)
# узнать транзакцию создания валидатора (заменить свой valoper_address)
atomoned query txs --events=&amp;#x27;create_validator.validator=&amp;lt;your_valoper_address&amp;gt;&amp;#x27; -o=json | jq .txs[0].txhash -r
# просмотр активного сета
atomoned q staking validators -o json --limit=1000 \
| jq &amp;#x27;.validators[] | select(.status==&amp;quot;BOND_STATUS_BONDED&amp;quot;)&amp;#x27; \
| jq -r &amp;#x27;.tokens + &amp;quot; - &amp;quot; + .description.moniker&amp;#x27; \
| sort -gr | nl
# просмотр неактивного сета
atomoned q staking validators -o json --limit=1000 \
| jq &amp;#x27;.validators[] | select(.status==&amp;quot;BOND_STATUS_UNBONDED&amp;quot;)&amp;#x27; \
| jq -r &amp;#x27;.tokens + &amp;quot; - &amp;quot; + .description.moniker&amp;#x27; \
| sort -gr | nl&lt;/pre&gt;
  &lt;p id=&quot;nXYz&quot;&gt;&lt;strong&gt;Транзакции&lt;/strong&gt;&lt;/p&gt;
  &lt;pre data-lang=&quot;bash&quot; id=&quot;r27G&quot;&gt;# собрать комиссионные + реварды
atomoned tx distribution withdraw-rewards &amp;lt;valoper_address&amp;gt; --from &amp;lt;name_wallet&amp;gt; --fees 50000uphoton --commission -y

# заделегировать себе в стейк еще (так отправляется 1 монетa)
atomoned tx staking delegate &amp;lt;valoper_address&amp;gt; 1000000uatone --from &amp;lt;name_wallet&amp;gt; --fees 50000uphoton -y

# ределегирование на другого валидатора
atomoned tx staking redelegate &amp;lt;src-validator-addr&amp;gt; &amp;lt;dst-validator-addr&amp;gt; 1000000uatone --from &amp;lt;name_wallet&amp;gt; --fees 50000uphoton -y

# unbond 
atomoned tx staking unbond &amp;lt;addr_valoper&amp;gt; 1000000uatone --from &amp;lt;name_wallet&amp;gt; --fees 50000uphoton -y

# отправить монеты на другой адрес
atomoned tx bank send &amp;lt;name_wallet&amp;gt; &amp;lt;address&amp;gt; 1000000uatone --fees 50000uphoton -y

# выбраться из тюрьмы
atomoned tx slashing unjail --from &amp;lt;name_wallet&amp;gt; --fees 50000uphoton -y&lt;/pre&gt;
  &lt;p id=&quot;zl2g&quot;&gt;&lt;strong&gt;Работа с кошельками&lt;/strong&gt;&lt;/p&gt;
  &lt;pre data-lang=&quot;bash&quot; id=&quot;wwkO&quot;&gt;# вывести список кошельков
atomoned keys list

# показать ключ аккаунта
atomoned keys show &amp;lt;name_wallet&amp;gt; --bech acc

# показать ключ валидатора
atomoned keys show &amp;lt;name_wallet&amp;gt; --bech val

# показать ключ консенсуса
atomoned keys show &amp;lt;name_wallet&amp;gt; --bech cons

# запрос учетной записи
atomoned q auth account $(atomoned keys show &amp;lt;name_wallet&amp;gt; -a) -o text

# удалить кошелек
atomoned keys delete &amp;lt;name_wallet&amp;gt;&lt;/pre&gt;
  &lt;p id=&quot;Qfld&quot;&gt;&lt;strong&gt;Удалить ноду&lt;/strong&gt;&lt;/p&gt;
  &lt;pre data-lang=&quot;bash&quot; id=&quot;EI3J&quot;&gt;systemctl stop atomoned &amp;amp;&amp;amp; \
systemctl disable atomoned &amp;amp;&amp;amp; \
rm /etc/systemd/system/atomoned.service &amp;amp;&amp;amp; \
systemctl daemon-reload &amp;amp;&amp;amp; \
cd $HOME &amp;amp;&amp;amp; \
rm -rf .atomone atomone &amp;amp;&amp;amp; \
rm -rf $(which atomoned)&lt;/pre&gt;
  &lt;p id=&quot;fYh0&quot;&gt;&lt;strong&gt;ГОВЕРНАНС&lt;/strong&gt;&lt;/p&gt;
  &lt;pre data-lang=&quot;bash&quot; id=&quot;SX5l&quot;&gt;# список proposals
atomoned q gov proposals

# посмотреть результат голосования
atomoned q gov proposals --voter &amp;lt;ADDRESS&amp;gt;

# проголосовать за предложение 
atomoned tx gov vote 1 yes --from &amp;lt;name_wallet&amp;gt; --fees 50000uphoton

# внести депозит в предложение
atomoned tx gov deposit 1 1000000uatone --from &amp;lt;name_wallet&amp;gt; --fees 50000uphoton

# создать предложение
atomoned tx gov submit-proposal --title=&amp;quot;Randomly reward&amp;quot; --description=&amp;quot;Reward 10 testnet participants who completed more than 3 tasks&amp;quot; --type=&amp;quot;Text&amp;quot; --deposit=&amp;quot;11000000uatone&amp;quot; --from=&amp;lt;name_wallet&amp;gt; --fees 50000uphoton&lt;/pre&gt;
  &lt;p id=&quot;chat-messages-932182862663389245&quot;&gt;&lt;strong&gt;Peers and RPC&lt;/strong&gt;&lt;/p&gt;
  &lt;pre data-lang=&quot;bash&quot; id=&quot;ARsF&quot;&gt;FOLDER=.atomone

# узнать свой peer
PORTR=$(grep -A 3 &amp;quot;\[p2p\]&amp;quot; ~/$FOLDER/config/config.toml | egrep -o &amp;quot;:[0-9]+&amp;quot;) &amp;amp;&amp;amp; \
echo $(atomoned tendermint show-node-id)@$(wget -qO- eth0.me)$PORTR

# узнать порт RPC
echo -e &amp;quot;\033[0;32m$(grep -A 3 &amp;quot;\[rpc\]&amp;quot; ~/$FOLDER/config/config.toml | egrep -o &amp;quot;:[0-9]+&amp;quot;)\033[0m&amp;quot;

# проверка количества пиров
PORT=
curl -s http://localhost:$PORT/net_info | jq -r &amp;#x27;.result.peers[] | &amp;quot;\(.node_info.id)@\(.remote_ip):\(.node_info.listen_addr | split(&amp;quot;:&amp;quot;)[2])&amp;quot;&amp;#x27; | wc -l

# cписок моникеров подключенных пиров
curl -s http://localhost:$PORT/net_info | jq &amp;#x27;.result.peers[].node_info.moniker&amp;#x27;

# Проверка prevotes/precommits. Пригодится при обновах
curl -s localhost:$PORT/consensus_state | jq &amp;#x27;.result.round_state.height_vote_set[0].prevotes_bit_array&amp;#x27; &amp;amp;&amp;amp; \
curl -s localhost:$PORT/consensus_state | jq &amp;#x27;.result.round_state.height_vote_set[0].precommits_bit_array&amp;#x27;

# check prevote of your validator
curl -s localhost:$PORT/consensus_state -s | grep $(curl -s localhost:26657/status | jq -r .result.validator_info.address[:12])&lt;/pre&gt;
  &lt;figure id=&quot;a5BW&quot; class=&quot;m_original&quot; data-caption-align=&quot;center&quot;&gt;
    &lt;img src=&quot;https://img3.teletype.in/files/e9/28/e92895ca-f71d-497c-9fd2-2e7eeedd5303.png&quot; width=&quot;278&quot; /&gt;
    &lt;figcaption&gt;&lt;strong&gt;Поддержим природу вместе: 0xa7476EC14cD663C742d527113638C77a1631Cc89 cosmos1m2mm7kzvw6m3464h94ryqg8xvr6tyeyyecppnq&lt;/strong&gt;&lt;/figcaption&gt;
  &lt;/figure&gt;

</content></entry><entry><id>lesnik13utsa:Vj7SznlmE6n</id><link rel="alternate" type="text/html" href="https://teletype.in/@lesnik13utsa/Vj7SznlmE6n?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=lesnik13utsa"></link><title>Native - мигрируют на sui</title><published>2025-01-10T21:16:31.398Z</published><updated>2025-03-09T04:50:26.918Z</updated><category term="archive" label="ARCHIVE"></category><summary type="html">&lt;img src=&quot;https://img3.teletype.in/files/ac/6e/ac6e1e0d-defd-49a8-a013-982f0a502db0.png&quot;&gt;🪓 Telegram канал UTSA 🪓 Telegram чат UTSA</summary><content type="html">
  &lt;figure id=&quot;RLQC&quot; class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://img3.teletype.in/files/ac/6e/ac6e1e0d-defd-49a8-a013-982f0a502db0.png&quot; width=&quot;820&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;head&quot; data-align=&quot;center&quot;&gt;🪓 &lt;a href=&quot;https://t.me/utsa_channel&quot; target=&quot;_blank&quot;&gt;Telegram канал UTSA&lt;/a&gt; 🪓 &lt;a href=&quot;https://t.me/utsa_chat&quot; target=&quot;_blank&quot;&gt;Telegram чат UTSA&lt;/a&gt;&lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(236, 74%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;p id=&quot;D2wo&quot; data-align=&quot;center&quot;&gt;&lt;strong&gt;&lt;a href=&quot;https://www.gonative.cc/&quot; target=&quot;_blank&quot;&gt;Web&lt;/a&gt; &lt;a href=&quot;https://discord.gg/ZAkES4s5DH&quot; target=&quot;_blank&quot;&gt;Discord&lt;/a&gt; &lt;a href=&quot;https://github.com/gonative-cc/gonative/releases&quot; target=&quot;_blank&quot;&gt;Github&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
  &lt;/section&gt;
  &lt;p id=&quot;sHgA&quot;&gt;&lt;u&gt;&lt;strong&gt;Testnet details&lt;/strong&gt;&lt;/u&gt;&lt;/p&gt;
  &lt;ul id=&quot;2h1F&quot;&gt;
    &lt;li id=&quot;ED8t&quot;&gt;Network Chain ID: &lt;code&gt;native-t1&lt;/code&gt;&lt;/li&gt;
    &lt;li id=&quot;8tyv&quot;&gt;Denom stake: &lt;code&gt;untiv&lt;/code&gt;&lt;/li&gt;
    &lt;li id=&quot;SZWc&quot;&gt;Binary: &lt;code&gt;gonatived&lt;/code&gt;&lt;/li&gt;
    &lt;li id=&quot;OnH1&quot;&gt;Working directory: &lt;code&gt;.gonative&lt;/code&gt;&lt;/li&gt;
    &lt;li id=&quot;AdcU&quot;&gt;RPC: &lt;a href=&quot;https://t-native.rpc.utsa.tech/&quot; target=&quot;_blank&quot;&gt;https://t-native.rpc.utsa.tech/&lt;/a&gt;&lt;/li&gt;
    &lt;li id=&quot;LaYP&quot;&gt;API: &lt;a href=&quot;https://t-native.api.utsa.tech/&quot; target=&quot;_blank&quot;&gt;https://t-native.api.utsa.tech/&lt;/a&gt;&lt;/li&gt;
    &lt;li id=&quot;jHeg&quot;&gt;Explorer: &lt;a href=&quot;https://testnet.native.explorers.guru/&quot; target=&quot;_blank&quot;&gt;https://testnet.native.explorers.guru/&lt;/a&gt;&lt;/li&gt;
    &lt;li id=&quot;motH&quot;&gt;Docs: &lt;a href=&quot;https://github.com/gonative-cc/network-docs/blob/master/validator.md&quot; target=&quot;_blank&quot;&gt;https://github.com/gonative-cc/network-docs/blob/master/validator.md&lt;/a&gt;&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p id=&quot;O9Cb&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;bitcoins-liquidity&quot;&gt;Native трансформирует роль Bitcoin в DeFi, внедряя программируемость, совместимость и доступность&lt;/p&gt;
  &lt;ul id=&quot;yAIu&quot;&gt;
    &lt;li id=&quot;thlP&quot;&gt;Native, Avail и Nuffle объединяют усилия, чтобы привести BLISS в действие - &lt;a href=&quot;https://www.binance.com/en/square/post/14680468817418&quot; target=&quot;_blank&quot;&gt;https://www.binance.com/en/square/post/14680468817418&lt;/a&gt;&lt;/li&gt;
    &lt;li id=&quot;MyxG&quot;&gt;Roadmap: 2025 - &lt;a href=&quot;https://x.com/nativenetwork/status/1877357364820517202?s=46&quot; target=&quot;_blank&quot;&gt;https://x.com/nativenetwork/status/1877357364820517202?s=46&lt;/a&gt;&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p id=&quot;zkFD&quot;&gt;&lt;strong&gt;В настоящее время запущен testnet 1 с заполненными лимитами валидаторов&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;QcxT&quot;&gt;Если Вы заинтересованы принять участие в testnet 2, то создайте тикеты в дискорде&lt;/p&gt;
  &lt;hr /&gt;
  &lt;section style=&quot;background-color:hsl(hsl(236, 74%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;pre data-lang=&quot;bash&quot; id=&quot;JQpv&quot;&gt;# проверяем статус prevotes/precommits
FOLDER=.gonative

# узнать порт RPC
echo -e &amp;quot;\033[0;32m$(grep -A 3 &amp;quot;\[rpc\]&amp;quot; ~/$FOLDER/config/config.toml | egrep -o &amp;quot;:[0-9]+&amp;quot;)\033[0m&amp;quot;

PORT=&amp;lt;ввести свой порт&amp;gt;

# Проверка prevotes/precommits. Пригодится при обновах
curl -s localhost:$PORT/consensus_state | jq &amp;#x27;.result.round_state.height_vote_set[0].prevotes_bit_array&amp;#x27; &amp;amp;&amp;amp; \
curl -s localhost:$PORT/consensus_state | jq &amp;#x27;.result.round_state.height_vote_set[0].precommits_bit_array&amp;#x27;&lt;/pre&gt;
  &lt;/section&gt;
  &lt;section style=&quot;background-color:hsl(hsl(236, 74%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;p id=&quot;CJUj&quot;&gt;&lt;strong&gt;UPD 🕊 (Высота обновления: )&lt;/strong&gt;&lt;/p&gt;
    &lt;pre data-lang=&quot;bash&quot; id=&quot;lXND&quot;&gt;cd $HOME/
# ПОСЛЕ ОСТАНОВКИ СЕТИ НА НУЖНОМ БЛОКЕ!!!&lt;/pre&gt;
  &lt;/section&gt;
  &lt;p id=&quot;OoM1&quot;&gt;&lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(34,  84%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;h2 id=&quot;6FkE&quot;&gt;Подготовка сервера&lt;/h2&gt;
  &lt;/section&gt;
  &lt;pre data-lang=&quot;bash&quot; id=&quot;4yo5&quot;&gt;# обновляем репозитории
apt update &amp;amp;&amp;amp; sudo apt upgrade -y

# устанавливаем необходимые утилиты
apt install curl build-essential git wget jq make gcc tmux htop nvme-cli pkg-config libssl-dev libleveldb-dev tar clang bsdmainutils ncdu unzip libleveldb-dev -y

# проверяем работу жестких дисков
curl -sL yabs.sh | bash -s — -ig

# проверяем работу интернета
curl -sL yabs.sh | bash -s — -fg&lt;/pre&gt;
  &lt;p id=&quot;M4EP&quot;&gt;&lt;strong&gt;File2Ban&lt;/strong&gt; - подробнее &lt;a href=&quot;https://www.linuxshop.ru/articles/a26710798-nastroyka_fail2ban&quot; target=&quot;_blank&quot;&gt;здесь&lt;/a&gt;&lt;/p&gt;
  &lt;pre data-lang=&quot;bash&quot; id=&quot;pgl9&quot;&gt;# устанавливаем и копируем конфиг, который будет иметь больший приоритет
apt install fail2ban -y &amp;amp;&amp;amp; \
cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local &amp;amp;&amp;amp; \
nano /etc/fail2ban/jail.local
# раскомментировать и добавить свой IP: ignoreip = 127.0.0.1/8 ::1 &amp;lt;ip&amp;gt;
systemctl restart fail2ban

# проверяем status 
systemctl status fail2ban
# проверяем, какие jails активны (по умолчанию только sshd)
fail2ban-client status
# проверяем статистику по sshd
fail2ban-client status sshd
# смотрим логи
tail /var/log/fail2ban.log
# останавливаем работу и удаляем с автозагрузки
#systemctl stop fail2ban &amp;amp;&amp;amp; systemctl disable fail2ban&lt;/pre&gt;
  &lt;p id=&quot;eKUj&quot;&gt;&lt;strong&gt;Устанавливаем Go&lt;/strong&gt;&lt;/p&gt;
  &lt;pre data-lang=&quot;bash&quot; id=&quot;5Nm6&quot;&gt;ver=&amp;quot;1.23.3&amp;quot; &amp;amp;&amp;amp; \
wget &amp;quot;https://golang.org/dl/go$ver.linux-amd64.tar.gz&amp;quot; &amp;amp;&amp;amp; \
sudo rm -rf /usr/local/go &amp;amp;&amp;amp; \
sudo tar -C /usr/local -xzf &amp;quot;go$ver.linux-amd64.tar.gz&amp;quot; &amp;amp;&amp;amp; \
rm &amp;quot;go$ver.linux-amd64.tar.gz&amp;quot; &amp;amp;&amp;amp; \
echo &amp;quot;export PATH=$PATH:/usr/local/go/bin:$HOME/go/bin&amp;quot; &amp;gt;&amp;gt; $HOME/.bash_profile &amp;amp;&amp;amp; \
source $HOME/.bash_profile &amp;amp;&amp;amp; \
go version&lt;/pre&gt;
  &lt;p id=&quot;ZGlw&quot;&gt;&lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(34,  84%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;h2 id=&quot;1b58&quot;&gt;Новая установка ноды&lt;/h2&gt;
  &lt;/section&gt;
  &lt;section&gt;
    &lt;p id=&quot;z8pZ&quot;&gt;&lt;u&gt;&lt;em&gt;&lt;strong&gt;ВАЖНО &lt;/strong&gt;— в командах ниже все, что в &lt;strong&gt;&amp;lt;&amp;gt;&lt;/strong&gt; меняем на свое значение и убираем сами&lt;strong&gt; &amp;lt;&amp;gt;&lt;/strong&gt;&lt;/em&gt;&lt;/u&gt;&lt;/p&gt;
  &lt;/section&gt;
  &lt;p id=&quot;sjXD&quot;&gt;&lt;strong&gt;Устанавливаем бинарники&lt;/strong&gt;&lt;/p&gt;
  &lt;pre data-lang=&quot;bash&quot; id=&quot;58hz&quot;&gt;git clone https://github.com/gonative-cc/gonative &amp;amp;&amp;amp; cd gonative
git checkout v0.1.1
make build
mv $HOME/gonative/out/gonative $HOME/go/bin/gonatived

gonatived version --long | grep -e version -e commit
# version: 0.1.1
# commit: 5bcbb57e4e4689cf515e1c9e6326ae9078f3bdfa
# comet_server_version: v1.0.0-beta.1
# cosmos_sdk_version: v0.52.0-rc.1.0.20250106202622-c6327ea6e403
# runtime_version: v2.0.0-20241219154748-69025c556666
# stf_version: v1.0.0-beta.1&lt;/pre&gt;
  &lt;p id=&quot;vp48&quot;&gt;&lt;strong&gt;Инициализируем ноду, чтобы создать необходимые файлы конфигурации&lt;/strong&gt;&lt;/p&gt;
  &lt;pre data-lang=&quot;bash&quot; id=&quot;8MFS&quot;&gt;gonatived init UTSA_guide --chain-id native-t1&lt;/pre&gt;
  &lt;p id=&quot;Qrh4&quot;&gt;&lt;strong&gt;Скачиваем Genesis&lt;/strong&gt;&lt;/p&gt;
  &lt;pre data-lang=&quot;bash&quot; id=&quot;Le9H&quot;&gt;#wget -O $HOME/.gonative/config/genesis.json &amp;quot;https://share102.utsa.tech/native/genesis.json&amp;quot;
wget https://github.com/gonative-cc/network-docs/raw/refs/heads/master/genesis/genesis-testnet-1.json.gz
gzip -d genesis-testnet-1.json.gz
mv genesis-testnet-1.json  $HOME/.gonative/config/genesis.json

# Проверим генезис
sha256sum ~/.gonative/config/genesis.json
# 6c7c7ee70b89850dfe9b9c64b24debe67e36ddf5457c8555d4b979146b99e1b0&lt;/pre&gt;
  &lt;p id=&quot;4cmW&quot;&gt;&lt;strong&gt;Скачиваем Addr book&lt;/strong&gt;&lt;/p&gt;
  &lt;pre data-lang=&quot;bash&quot; id=&quot;q0B6&quot;&gt;wget -O $HOME/.gonative/config/addrbook.json &amp;quot;https://share102.utsa.tech/native/addrbook.json&amp;quot;&lt;/pre&gt;
  &lt;p id=&quot;rrUd&quot;&gt;&lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(34,  84%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;h2 id=&quot;kBZ8&quot;&gt;Настраиваем конфигурацию ноды&lt;/h2&gt;
  &lt;/section&gt;
  &lt;pre data-lang=&quot;bash&quot; id=&quot;dL5f&quot;&gt;# правим конфиг, благодаря чему мы можем больше не использовать флаг chain-id для каждой команды CLI в client.toml
gonatived config set client chain-id native-t1

# при необходимости настраиваем keyring-backend в client.toml 
gonatived config set client keyring-backend os

# настраиваем минимальную цену за газ в app.toml
sed -i.bak -e &amp;quot;s/^minimum-gas-prices *=.*/minimum-gas-prices = \&amp;quot;0.1untiv\&amp;quot;/;&amp;quot; ~/.gonative/config/app.toml

# добавляем seeds/bpeers/peers в config.toml
external_address=$(wget -qO- eth0.me)
sed -i.bak -e &amp;quot;s/^external_address *=.*/external_address = \&amp;quot;$external_address:26656\&amp;quot;/&amp;quot; $HOME/.gonative/config/config.toml

peers=&amp;quot;2e2f0def6453e67a5d5872da7f73002caf55a010@195.3.221.110:52656,612e6279e528c3fadfe0bb9916fd5532bc9be2cd@164.132.247.253:56406,f2e45e48f55f649dee0e8dc4adfa445308ae8018@167.235.247.51:26656,a7577f50cdefd9a7a5e4a673278d9004df9b4bb4@103.219.169.97:56406,236946946eacbf6ab8a6f15c99dac1c80db6f8a5@65.108.203.61:52656,13b49060d7ae1375a04a8eaec8602920f47b5a55@37.142.120.99:27656,48bd9b42755de1a3039089c4cb66b9dd01561001@57.129.53.32:40656,0c2926cdac1e31e39ea137ec3438be6485fd58d7@116.202.85.179:10007,b80d0042f7096759ae6aada870b52edf0dcd74af@65.109.58.158:26056,f0e48f295e0d7c7d03943c82ac01bfc54969320b@78.46.185.199:26656,8eb8024d28b070d21844a90c7c2d34ef4b731365@193.34.213.77:15007,b5f52d67223c875947161ea9b3a95dbec30041cb@116.202.42.156:32107,5be5b41a6aef28a7779002f2af0989c7a7da5cfe@165.154.245.110:26656,b07e0482f43a2add3531e9aa7946609386b2e7e7@65.109.113.219:30656,6edabc54e76245af9f8f739303c788bfb23bd09a@95.216.12.106:24096,ade4d8bc8cbe014af6ebdf3cb7b1e9ad36f412c0@176.9.82.221:30656,d0e0d80be68cec942ad46b36419f0ba76d35d134@94.130.138.41:26444,be5b6092815df2e0b2c190b3deef8831159bb9a2@64.225.109.119:26656,49784fe6a1b812fd45f4ac7e5cf953c2a3630cef@136.243.17.170:38656,40cbf43553e7ee3507814e3110a749a7e638aa83@194.163.169.182:24656,1e9a3f3615ec98ea66c41b7e37a724889067bc05@193.24.209.155:12056,7567880ef17ce8488c55c3256c76809b37659cce@161.35.157.54:26656,d856c6c6f195b791c54c18407a8ad4391bd30b99@142.132.156.99:24096,2dacf537748388df80a927f6af6c4b976b7274cb@148.251.44.42:26656,2c1e6b6b54daa7646339fa9abede159519ca7cae@37.252.186.248:26656,fbc51b668eb84ae14d430a3db11a5d90fc30f318@65.108.13.154:52656,48d0fdcc642690ede0ad774f3ba4dce6e549b4db@142.132.215.124:26656,24d51644ea1a6b91bf745f6767a9079d4b35e3d2@37.27.202.188:26656&amp;quot;
sed -i.bak -e &amp;quot;s/^persistent_peers *=.*/persistent_peers = \&amp;quot;$peers\&amp;quot;/&amp;quot; $HOME/.gonative/config/config.toml
seeds=&amp;quot;ade4d8bc8cbe014af6ebdf3cb7b1e9ad36f412c0@testnet-seeds.polkachu.com:30656&amp;quot;
sed -i.bak -e &amp;quot;s/^seeds =.*/seeds = \&amp;quot;$seeds\&amp;quot;/&amp;quot; $HOME/.gonative/config/config.toml
&lt;/pre&gt;
  &lt;section style=&quot;background-color:hsl(hsl(236, 74%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;p id=&quot;y087&quot;&gt;&lt;strong&gt;Рекомендуемый бэкенд баз данных&lt;/strong&gt;&lt;/p&gt;
    &lt;pre id=&quot;vcgh&quot; data-lang=&quot;bash&quot;&gt;sed -i -e &amp;quot;s/^app-db-backend *=.*/app-db-backend = \&amp;quot;goleveldb\&amp;quot;/;&amp;quot; $HOME/.gonative/config/app.toml
sed -i -e &amp;quot;s/^db_backend *=.*/db_backend = \&amp;quot;pebbledb\&amp;quot;/&amp;quot; $HOME/.gonative/config/config.toml&lt;/pre&gt;
    &lt;pre id=&quot;9UVd&quot;&gt;# app.toml / base configuration options
app-db-backend = &amp;quot;goleveldb&amp;quot;

# config.toml / base configuration options
db_backend = &amp;quot;pebbledb&amp;quot;&lt;/pre&gt;
  &lt;/section&gt;
  &lt;p id=&quot;CQ2e&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;QI2Z&quot;&gt;&lt;strong&gt;(ОПЦИОНАЛЬНО) Настраиваем прунинг в&lt;code&gt;app.toml&lt;/code&gt;&lt;/strong&gt;&lt;/p&gt;
  &lt;pre data-lang=&quot;bash&quot; id=&quot;Hdwl&quot;&gt;pruning=&amp;quot;nothing&amp;quot;
pruning_keep_recent=&amp;quot;0&amp;quot;
pruning_interval=&amp;quot;0&amp;quot;
sed -i -e &amp;quot;s/^pruning *=.*/pruning = \&amp;quot;$pruning\&amp;quot;/&amp;quot; $HOME/.gonative/config/app.toml
sed -i -e &amp;quot;s/^pruning-keep-recent *=.*/pruning-keep-recent = \&amp;quot;$pruning_keep_recent\&amp;quot;/&amp;quot; $HOME/.gonative/config/app.toml
sed -i -e &amp;quot;s/^pruning-interval *=.*/pruning-interval = \&amp;quot;$pruning_interval\&amp;quot;/&amp;quot; $HOME/.gonative/config/app.toml&lt;/pre&gt;
  &lt;p id=&quot;dGeO&quot;&gt;&lt;strong&gt;(ОПЦИОНАЛЬНО) Выкл индексацию в&lt;code&gt;config.toml&lt;/code&gt;&lt;/strong&gt;&lt;/p&gt;
  &lt;pre data-lang=&quot;bash&quot; id=&quot;fwvo&quot;&gt;indexer=&amp;quot;null&amp;quot;
sed -i -e &amp;quot;s/^indexer *=.*/indexer = \&amp;quot;$indexer\&amp;quot;/&amp;quot; $HOME/.gonative/config/config.toml&lt;/pre&gt;
  &lt;p id=&quot;UDzq&quot;&gt;&lt;strong&gt;(ОПЦИОНАЛЬНО) Вкл/выкл снэпшоты в&lt;code&gt;app.toml&lt;/code&gt;&lt;/strong&gt;&lt;/p&gt;
  &lt;pre data-lang=&quot;bash&quot; id=&quot;WgiS&quot;&gt;snapshot_interval=1000
sed -i.bak -e &amp;quot;s/^snapshot-interval *=.*/snapshot-interval = \&amp;quot;$snapshot_interval\&amp;quot;/&amp;quot; ~/.gonative/config/app.toml&lt;/pre&gt;
  &lt;p id=&quot;gUf3&quot;&gt;&lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(34,  84%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;h2 id=&quot;5cMj&quot;&gt;State sync&lt;/h2&gt;
  &lt;/section&gt;
  &lt;pre id=&quot;bmV7&quot; data-lang=&quot;bash&quot;&gt;# add peer
peers=&amp;quot;f82c497af58874eac7c862c362df9659d95f5332@5.9.87.231:60756&amp;quot;
sed -i.bak -e &amp;quot;s/^persistent_peers *=.*/persistent_peers = \&amp;quot;$peers\&amp;quot;/&amp;quot; $HOME/.gonative/config/config.toml&lt;/pre&gt;
  &lt;pre id=&quot;ycho&quot; data-lang=&quot;bash&quot;&gt;SNAP_RPC=https://t-native.rpc.utsa.tech:443

LATEST_HEIGHT=$(curl -s $SNAP_RPC/block | jq -r .result.block.header.height); \
BLOCK_HEIGHT=$((LATEST_HEIGHT - 100)); \
TRUST_HASH=$(curl -s &amp;quot;$SNAP_RPC/block?height=$BLOCK_HEIGHT&amp;quot; | jq -r .result.block_id.hash)

echo $LATEST_HEIGHT $BLOCK_HEIGHT $TRUST_HASH

sed -i.bak -E &amp;quot;s|^(enable[[:space:]]+=[[:space:]]+).*$|\1true| ; \
s|^(rpc_servers[[:space:]]+=[[:space:]]+).*$|\1\&amp;quot;$SNAP_RPC,$SNAP_RPC\&amp;quot;| ; \
s|^(trust_height[[:space:]]+=[[:space:]]+).*$|\1$BLOCK_HEIGHT| ; \
s|^(trust_hash[[:space:]]+=[[:space:]]+).*$|\1\&amp;quot;$TRUST_HASH\&amp;quot;| ; \
s|^(seeds[[:space:]]+=[[:space:]]+).*$|\1\&amp;quot;\&amp;quot;|&amp;quot; $HOME/.gonative/config/config.toml&lt;/pre&gt;
  &lt;pre id=&quot;gUOM&quot; data-lang=&quot;bash&quot;&gt;systemctl restart gonatived &amp;amp;&amp;amp; journalctl -u gonatived -f -o cat&lt;/pre&gt;
  &lt;p id=&quot;zZH6&quot;&gt;&lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(34,  84%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;h2 id=&quot;N1Bw&quot;&gt;&lt;strong&gt;Snapshot&lt;/strong&gt;&lt;/h2&gt;
  &lt;/section&gt;
  &lt;section style=&quot;background-color:hsl(hsl(236, 74%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;p id=&quot;yPUl&quot; data-align=&quot;center&quot;&gt;time: &lt;strong&gt;every 24 hours&lt;/strong&gt; &lt;strong&gt;| &lt;/strong&gt;indexer:&lt;strong&gt; kv | &lt;/strong&gt;app.toml:&lt;strong&gt; goleveldb | &lt;/strong&gt;config.toml:&lt;strong&gt; pebbledb&lt;/strong&gt;&lt;/p&gt;
    &lt;p id=&quot;SP72&quot; data-align=&quot;center&quot;&gt;🌐 &lt;a href=&quot;https://share102.utsa.tech/native/&quot; target=&quot;_blank&quot;&gt;&lt;strong&gt;https://share102.utsa.tech/native/&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;
    &lt;pre data-lang=&quot;bash&quot; id=&quot;Mrvp&quot;&gt;cd $HOME
systemctl stop gonatived

cp $HOME/.gonative/data/priv_validator_state.json $HOME/.gonative/priv_validator_state.json.backup

# удаляем старую базу данных
rm -rf $HOME/.gonative/data/{application.db,evidence.db,snapshots,tx_index.db,blockstore.db,state.db,cs.wal}

# скачиваем snapshot
curl -o - -L https://share102.utsa.tech/native/native_testnet.tar.lz4 | lz4 -c -d - | tar -x -C $HOME/.gonative/

mv $HOME/.gonative/priv_validator_state.json.backup $HOME/.gonative/data/priv_validator_state.json

systemctl restart gonatived &amp;amp;&amp;amp; journalctl -u gonatived -f -o cat&lt;/pre&gt;
  &lt;/section&gt;
  &lt;p id=&quot;76hd&quot;&gt;&lt;strong&gt;Создаем сервисный файл&lt;/strong&gt;&lt;/p&gt;
  &lt;pre data-lang=&quot;bash&quot; id=&quot;hcw2&quot;&gt;tee /etc/systemd/system/gonatived.service &amp;gt; /dev/null &amp;lt;&amp;lt;EOF
[Unit]
Description=gonatived
After=network-online.target

[Service]
User=$USER
ExecStart=$(which gonatived) start
Restart=on-failure
RestartSec=3
LimitNOFILE=65535

[Install]
WantedBy=multi-user.target
EOF&lt;/pre&gt;
  &lt;pre data-lang=&quot;bash&quot; id=&quot;ORUF&quot;&gt;systemctl daemon-reload
systemctl enable gonatived
systemctl restart gonatived &amp;amp;&amp;amp; journalctl -u gonatived -f -o cat&lt;/pre&gt;
  &lt;p id=&quot;P3nc&quot;&gt;&lt;strong&gt;Создаем или восстанавливаем кошелек и сохраняем вывод&lt;/strong&gt;&lt;/p&gt;
  &lt;pre data-lang=&quot;bash&quot; id=&quot;5PTg&quot;&gt;# создать кошелек
gonatived keys add &amp;lt;name_wallet&amp;gt; --keyring-backend os

# восстановить кошелек (после команды вставить seed)
gonatived keys add &amp;lt;name_wallet&amp;gt; --recover --keyring-backend os

# подключить кошелек ledger
gonatived keys add &amp;lt;name_wallet&amp;gt; --ledger &lt;/pre&gt;
  &lt;section style=&quot;background-color:hsl(hsl(236, 74%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;p id=&quot;YLko&quot;&gt;&lt;strong&gt;Не забываем сохранить seed !!!&lt;/strong&gt;&lt;/p&gt;
  &lt;/section&gt;
  &lt;p id=&quot;xk3L&quot;&gt;&lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(34,  84%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;h2 id=&quot;sBaD&quot;&gt;&lt;strong&gt;Создаем валидатора&lt;/strong&gt;&lt;/h2&gt;
  &lt;/section&gt;
  &lt;p id=&quot;0ztD&quot;&gt;1. Получаем свой pubkey&lt;/p&gt;
  &lt;pre id=&quot;pVbb&quot; data-lang=&quot;bash&quot;&gt;gonatived comet show-validator
# {&amp;quot;@type&amp;quot;:&amp;quot;/cosmos.crypto.ed25519.PubKey&amp;quot;,&amp;quot;key&amp;quot;:&amp;quot;ZXONS7NNjLWH4HePBOoHKDAYeLXQO5iUwpCRQSi1poI=&amp;quot;}&lt;/pre&gt;
  &lt;p id=&quot;ywEz&quot;&gt;2. Создаем validator.json&lt;/p&gt;
  &lt;pre id=&quot;qeIO&quot; data-lang=&quot;bash&quot;&gt;nano $HOME/.gonative/validator.json&lt;/pre&gt;
  &lt;p id=&quot;qdbf&quot;&gt;3. Вставляем наш конфиг&lt;/p&gt;
  &lt;pre id=&quot;MyRa&quot; data-lang=&quot;bash&quot;&gt;{
  &amp;quot;pubkey&amp;quot;: {&amp;quot;#pubkey&amp;quot;},
  &amp;quot;amount&amp;quot;: &amp;quot;1000000untiv&amp;quot;,
  &amp;quot;moniker&amp;quot;: &amp;quot;STAVR_guide&amp;quot;,
  &amp;quot;identity&amp;quot;: &amp;quot;&amp;quot;,
  &amp;quot;website&amp;quot;: &amp;quot;&amp;quot;,
  &amp;quot;security&amp;quot;: &amp;quot;&amp;quot;,
  &amp;quot;details&amp;quot;: &amp;quot;&amp;quot;,
  &amp;quot;commission-rate&amp;quot;: &amp;quot;0.05&amp;quot;,
  &amp;quot;commission-max-rate&amp;quot;: &amp;quot;0.2&amp;quot;,
  &amp;quot;commission-max-change-rate&amp;quot;: &amp;quot;0.2&amp;quot;,
  &amp;quot;min-self-delegation&amp;quot;: &amp;quot;1&amp;quot;
}&lt;/pre&gt;
  &lt;p id=&quot;KCoo&quot;&gt;4. Отправляем транзакцию&lt;/p&gt;
  &lt;pre id=&quot;PwMd&quot; data-lang=&quot;bash&quot;&gt;gonatived tx staking create-validator $HOME/.gonative/validator.json \
    --from=&amp;lt;key-name&amp;gt; \
    --chain-id=native-t1 \
    --fees 35000untiv --gas 350000&lt;/pre&gt;
  &lt;p id=&quot;iqJU&quot;&gt;&lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(236, 74%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;p id=&quot;kj2D&quot;&gt;&lt;strong&gt;Не забываем сохранить priv_validator_key.json !!!&lt;/strong&gt;&lt;/p&gt;
    &lt;p id=&quot;VBzA&quot;&gt;Подробнее о создании/редактировании валидатора можно почитать &lt;a href=&quot;/@lesnik13utsa/RPLJpWXIoDQ&quot;&gt;здесь&lt;/a&gt;&lt;/p&gt;
  &lt;/section&gt;
  &lt;p id=&quot;gsY7&quot;&gt;&lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(34,  84%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;h2 id=&quot;1eUH&quot;&gt;Полезные команды&lt;/h2&gt;
  &lt;/section&gt;
  &lt;p id=&quot;Fuvu&quot;&gt;&lt;strong&gt;Информация&lt;/strong&gt;&lt;/p&gt;
  &lt;pre data-lang=&quot;bash&quot; id=&quot;O1c7&quot;&gt;# проверить логи
sudo journalctl -u gonatived -f -o cat
# проверить статус
curl localhost:$PORT/status | jq
# проверить баланс
gonatived q bank balances &amp;lt;address&amp;gt;
# проверить pubkey валидатора
gonatived tendermint show-validator
# проверить валидатора
gonatived query staking validator &amp;lt;valoper_address&amp;gt;
gonatived query staking validators --limit 1000000 -o json | jq &amp;#x27;.validators[] | select(.description.moniker==&amp;quot;&amp;lt;name_moniker&amp;gt;&amp;quot;)&amp;#x27; | jq
# проверка информации по TX_HASH
gonatived query tx &amp;lt;TX_HASH&amp;gt;
# параметры сети
gonatived q staking params
gonatived q slashing params
# проверить сколько блоков пропущено валидатором и с какого блока актив
gonatived q slashing signing-info $(gonatived tendermint show-validator)
# проверить slashing
gonatived q slashing signing-info $(gonatived tendermint show-validator)
# узнать транзакцию создания валидатора (заменить свой valoper_address)
gonatived query txs --events=&amp;#x27;create_validator.validator=&amp;lt;your_valoper_address&amp;gt;&amp;#x27; -o=json | jq .txs[0].txhash -r
# просмотр активного сета
gonatived q staking validators -o json --limit=1000 \
| jq &amp;#x27;.validators[] | select(.status==&amp;quot;BOND_STATUS_BONDED&amp;quot;)&amp;#x27; \
| jq -r &amp;#x27;.tokens + &amp;quot; - &amp;quot; + .description.moniker&amp;#x27; \
| sort -gr | nl
# просмотр неактивного сета
gonatived q staking validators -o json --limit=1000 \
| jq &amp;#x27;.validators[] | select(.status==&amp;quot;BOND_STATUS_UNBONDED&amp;quot;)&amp;#x27; \
| jq -r &amp;#x27;.tokens + &amp;quot; - &amp;quot; + .description.moniker&amp;#x27; \
| sort -gr | nl&lt;/pre&gt;
  &lt;p id=&quot;nXYz&quot;&gt;&lt;strong&gt;Транзакции&lt;/strong&gt;&lt;/p&gt;
  &lt;pre data-lang=&quot;bash&quot; id=&quot;Qvx0&quot;&gt;# собрать комиссионные + реварды
gonatived tx distribution withdraw-rewards &amp;lt;valoper_address&amp;gt; --from &amp;lt;name_wallet&amp;gt; --fees 5000untiv --commission -y

# заделегировать себе в стейк еще (так отправляется 1 монетa)
gonatived tx staking delegate &amp;lt;valoper_address&amp;gt; 1000000untiv --from &amp;lt;name_wallet&amp;gt; --fees 5000untiv -y

# ределегирование на другого валидатора
gonatived tx staking redelegate &amp;lt;src-validator-addr&amp;gt; &amp;lt;dst-validator-addr&amp;gt; 1000000untiv --from &amp;lt;name_wallet&amp;gt; --fees 5000untiv -y

# unbond 
gonatived tx staking unbond &amp;lt;addr_valoper&amp;gt; 1000000untiv --from &amp;lt;name_wallet&amp;gt; --fees 5000untiv -y

# отправить монеты на другой адрес
gonatived tx bank send &amp;lt;name_wallet&amp;gt; &amp;lt;address&amp;gt; 1000000untiv --fees 5000untiv -y

# выбраться из тюрьмы
gonatived tx slashing unjail --from &amp;lt;name_wallet&amp;gt; --fees 5000untiv -y&lt;/pre&gt;
  &lt;p id=&quot;zl2g&quot;&gt;&lt;strong&gt;Работа с кошельками&lt;/strong&gt;&lt;/p&gt;
  &lt;pre data-lang=&quot;bash&quot; id=&quot;VPqQ&quot;&gt;# вывести список кошельков
gonatived keys list

# показать ключ аккаунта
gonatived keys show &amp;lt;name_wallet&amp;gt; --bech acc

# показать ключ валидатора
gonatived keys show &amp;lt;name_wallet&amp;gt; --bech val

# показать ключ консенсуса
gonatived keys show &amp;lt;name_wallet&amp;gt; --bech cons

# запрос учетной записи
gonatived q auth account $(gonatived keys show &amp;lt;name_wallet&amp;gt; -a) -o text

# удалить кошелек
gonatived keys delete &amp;lt;name_wallet&amp;gt;&lt;/pre&gt;
  &lt;p id=&quot;Qfld&quot;&gt;&lt;strong&gt;Удалить ноду&lt;/strong&gt;&lt;/p&gt;
  &lt;pre data-lang=&quot;bash&quot; id=&quot;pR9s&quot;&gt;systemctl stop gonatived &amp;amp;&amp;amp; \
systemctl disable gonatived &amp;amp;&amp;amp; \
rm /etc/systemd/system/gonatived.service &amp;amp;&amp;amp; \
systemctl daemon-reload &amp;amp;&amp;amp; \
cd $HOME &amp;amp;&amp;amp; \
rm -rf .gonative gonative &amp;amp;&amp;amp; \
rm -rf $(which gonatived)&lt;/pre&gt;
  &lt;p id=&quot;fYh0&quot;&gt;&lt;strong&gt;ГОВЕРНАНС&lt;/strong&gt;&lt;/p&gt;
  &lt;pre data-lang=&quot;bash&quot; id=&quot;zrzg&quot;&gt;# список proposals
gonatived q gov proposals

# посмотреть результат голосования
gonatived q gov proposals --voter &amp;lt;ADDRESS&amp;gt;

# проголосовать за предложение 
gonatived tx gov vote 1 yes --from &amp;lt;name_wallet&amp;gt; --fees 5000untiv

# внести депозит в предложение
gonatived tx gov deposit 1 1000000untiv --from &amp;lt;name_wallet&amp;gt; --fees 5000untiv

# создать предложение
gonatived tx gov submit-proposal --title=&amp;quot;Randomly reward&amp;quot; --description=&amp;quot;Reward 10 testnet participants who completed more than 3 tasks&amp;quot; --type=&amp;quot;Text&amp;quot; --deposit=&amp;quot;11000000grain&amp;quot; --from=&amp;lt;name_wallet&amp;gt; --fees 5000untiv&lt;/pre&gt;
  &lt;p id=&quot;chat-messages-932182862663389245&quot;&gt;&lt;strong&gt;Peers and RPC&lt;/strong&gt;&lt;/p&gt;
  &lt;pre data-lang=&quot;bash&quot; id=&quot;p6Zv&quot;&gt;FOLDER=.gonative

# узнать свой peer
PORTR=$(grep -A 3 &amp;quot;\[p2p\]&amp;quot; ~/$FOLDER/config/config.toml | egrep -o &amp;quot;:[0-9]+&amp;quot;) &amp;amp;&amp;amp; \
echo $(gonatived tendermint show-node-id)@$(wget -qO- eth0.me)$PORTR

# узнать порт RPC
echo -e &amp;quot;\033[0;32m$(grep -A 3 &amp;quot;\[rpc\]&amp;quot; ~/$FOLDER/config/config.toml | egrep -o &amp;quot;:[0-9]+&amp;quot;)\033[0m&amp;quot;

# проверка количества пиров
PORT=
curl -s http://localhost:$PORT/net_info | jq -r &amp;#x27;.result.peers[] | &amp;quot;\(.node_info.id)@\(.remote_ip):\(.node_info.listen_addr | split(&amp;quot;:&amp;quot;)[2])&amp;quot;&amp;#x27; | wc -l

# cписок моникеров подключенных пиров
curl -s http://localhost:$PORT/net_info | jq &amp;#x27;.result.peers[].node_info.moniker&amp;#x27;

# Проверка prevotes/precommits. Пригодится при обновах
curl -s localhost:$PORT/consensus_state | jq &amp;#x27;.result.round_state.height_vote_set[0].prevotes_bit_array&amp;#x27; &amp;amp;&amp;amp; \
curl -s localhost:$PORT/consensus_state | jq &amp;#x27;.result.round_state.height_vote_set[0].precommits_bit_array&amp;#x27;

# check prevote of your validator
curl -s localhost:$PORT/consensus_state -s | grep $(curl -s localhost:26657/status | jq -r .result.validator_info.address[:12])&lt;/pre&gt;
  &lt;figure id=&quot;hEqT&quot; class=&quot;m_original&quot; data-caption-align=&quot;center&quot;&gt;
    &lt;img src=&quot;https://img3.teletype.in/files/e9/28/e92895ca-f71d-497c-9fd2-2e7eeedd5303.png&quot; width=&quot;278&quot; /&gt;
    &lt;figcaption&gt;&lt;strong&gt;Поддержим природу вместе: 0xa7476EC14cD663C742d527113638C77a1631Cc89 cosmos1m2mm7kzvw6m3464h94ryqg8xvr6tyeyyecppnq&lt;/strong&gt;&lt;/figcaption&gt;
  &lt;/figure&gt;

</content></entry><entry><id>lesnik13utsa:fSCdiJ2oINK</id><link rel="alternate" type="text/html" href="https://teletype.in/@lesnik13utsa/fSCdiJ2oINK?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=lesnik13utsa"></link><title>Konstellation</title><published>2024-12-06T23:12:17.893Z</published><updated>2024-12-06T23:12:17.893Z</updated><category term="mainnet" label="MAINNET"></category><summary type="html">&lt;img src=&quot;https://img3.teletype.in/files/ac/6e/ac6e1e0d-defd-49a8-a013-982f0a502db0.png&quot;&gt;UTSA</summary><content type="html">
  &lt;figure id=&quot;MS0U&quot; class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://img3.teletype.in/files/ac/6e/ac6e1e0d-defd-49a8-a013-982f0a502db0.png&quot; width=&quot;820&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;head&quot; data-align=&quot;center&quot;&gt;🪓 &lt;a href=&quot;https://t.me/utsa_channel&quot; target=&quot;_blank&quot;&gt;Telegram канал UTSA&lt;/a&gt; 🪓 &lt;a href=&quot;https://t.me/utsa_chat&quot; target=&quot;_blank&quot;&gt;Telegram чат UTSA&lt;/a&gt;&lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(236, 74%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;p id=&quot;D2wo&quot; data-align=&quot;center&quot;&gt;&lt;strong&gt;&lt;a href=&quot;https://konstellation.tech/&quot; target=&quot;_blank&quot;&gt;Web&lt;/a&gt; &lt;a href=&quot;https://discord.gg/6tyNVUTuq5&quot; target=&quot;_blank&quot;&gt;Discord&lt;/a&gt; &lt;a href=&quot;https://github.com/konstellation/konstellation&quot; target=&quot;_blank&quot;&gt;Github&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
  &lt;/section&gt;
  &lt;p id=&quot;sHgA&quot;&gt;&lt;u&gt;&lt;strong&gt;Testnet details&lt;/strong&gt;&lt;/u&gt;&lt;/p&gt;
  &lt;ul id=&quot;2h1F&quot;&gt;
    &lt;li id=&quot;ED8t&quot;&gt;Network Chain ID: &lt;code&gt;darchub&lt;/code&gt;&lt;/li&gt;
    &lt;li id=&quot;8tyv&quot;&gt;Denom stake: &lt;code&gt;udarc&lt;/code&gt;&lt;/li&gt;
    &lt;li id=&quot;SZWc&quot;&gt;Binary: knstld&lt;/li&gt;
    &lt;li id=&quot;OnH1&quot;&gt;Working directory: &lt;code&gt;.knstld&lt;/code&gt;&lt;/li&gt;
    &lt;li id=&quot;AdcU&quot;&gt;RPC: &lt;a href=&quot;https://m-konstellation.rpc.utsa.tech/&quot; target=&quot;_blank&quot;&gt;https://m-konstellation.rpc.utsa.tech/&lt;/a&gt;&lt;/li&gt;
    &lt;li id=&quot;LaYP&quot;&gt;API: &lt;a href=&quot;https://m-konstellation.api.utsa.tech/&quot; target=&quot;_blank&quot;&gt;https://m-konstellation.api.utsa.tech/&lt;/a&gt;&lt;/li&gt;
    &lt;li id=&quot;jHeg&quot;&gt;Explorer: &lt;a href=&quot;https://exp.utsa.tech/konstellation/staking&quot; target=&quot;_blank&quot;&gt;https://exp.utsa.tech/konstellation/staking&lt;/a&gt;&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p id=&quot;bAc8&quot;&gt;&lt;/p&gt;
  &lt;hr /&gt;
  &lt;section style=&quot;background-color:hsl(hsl(236, 74%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;pre data-lang=&quot;bash&quot; id=&quot;Rn4x&quot;&gt;# проверяем статус prevotes/precommits
FOLDER=.knstld

# узнать порт RPC
echo -e &amp;quot;\033[0;32m$(grep -A 3 &amp;quot;\[rpc\]&amp;quot; ~/$FOLDER/config/config.toml | egrep -o &amp;quot;:[0-9]+&amp;quot;)\033[0m&amp;quot;

PORT=&amp;lt;ввести свой порт&amp;gt;

# Проверка prevotes/precommits. Пригодится при обновах
curl -s localhost:$PORT/consensus_state | jq &amp;#x27;.result.round_state.height_vote_set[0].prevotes_bit_array&amp;#x27; &amp;amp;&amp;amp; \
curl -s localhost:$PORT/consensus_state | jq &amp;#x27;.result.round_state.height_vote_set[0].precommits_bit_array&amp;#x27;&lt;/pre&gt;
  &lt;/section&gt;
  &lt;section style=&quot;background-color:hsl(hsl(236, 74%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;p id=&quot;CJUj&quot;&gt;&lt;strong&gt;UPD 🕊 (Высота обновления: )&lt;/strong&gt;&lt;/p&gt;
    &lt;pre data-lang=&quot;bash&quot; id=&quot;lngR&quot;&gt;
# ПОСЛЕ ОСТАНОВКИ СЕТИ НА НУЖНОМ БЛОКЕ!!!&lt;/pre&gt;
  &lt;/section&gt;
  &lt;p id=&quot;Mmis&quot;&gt;&lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(34,  84%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;h2 id=&quot;6FkE&quot;&gt;Подготовка сервера&lt;/h2&gt;
  &lt;/section&gt;
  &lt;pre data-lang=&quot;bash&quot; id=&quot;sQKa&quot;&gt;# обновляем репозитории
apt update &amp;amp;&amp;amp; sudo apt upgrade -y

# устанавливаем необходимые утилиты
apt install curl build-essential git wget jq make gcc tmux htop nvme-cli pkg-config libssl-dev libleveldb-dev tar clang bsdmainutils ncdu unzip libleveldb-dev -y

# проверяем работу жестких дисков
curl -sL yabs.sh | bash -s — -ig

# проверяем работу интернета
curl -sL yabs.sh | bash -s — -fg&lt;/pre&gt;
  &lt;p id=&quot;M4EP&quot;&gt;&lt;strong&gt;File2Ban&lt;/strong&gt; - подробнее &lt;a href=&quot;https://www.linuxshop.ru/articles/a26710798-nastroyka_fail2ban&quot; target=&quot;_blank&quot;&gt;здесь&lt;/a&gt;&lt;/p&gt;
  &lt;pre data-lang=&quot;bash&quot; id=&quot;aMau&quot;&gt;# устанавливаем и копируем конфиг, который будет иметь больший приоритет
apt install fail2ban -y &amp;amp;&amp;amp; \
cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local &amp;amp;&amp;amp; \
nano /etc/fail2ban/jail.local
# раскомментировать и добавить свой IP: ignoreip = 127.0.0.1/8 ::1 &amp;lt;ip&amp;gt;
systemctl restart fail2ban

# проверяем status 
systemctl status fail2ban
# проверяем, какие jails активны (по умолчанию только sshd)
fail2ban-client status
# проверяем статистику по sshd
fail2ban-client status sshd
# смотрим логи
tail /var/log/fail2ban.log
# останавливаем работу и удаляем с автозагрузки
#systemctl stop fail2ban &amp;amp;&amp;amp; systemctl disable fail2ban&lt;/pre&gt;
  &lt;p id=&quot;eKUj&quot;&gt;&lt;strong&gt;Устанавливаем Go&lt;/strong&gt;&lt;/p&gt;
  &lt;pre data-lang=&quot;bash&quot; id=&quot;CTWw&quot;&gt;ver=&amp;quot;1.22.3&amp;quot; &amp;amp;&amp;amp; \
wget &amp;quot;https://golang.org/dl/go$ver.linux-amd64.tar.gz&amp;quot; &amp;amp;&amp;amp; \
sudo rm -rf /usr/local/go &amp;amp;&amp;amp; \
sudo tar -C /usr/local -xzf &amp;quot;go$ver.linux-amd64.tar.gz&amp;quot; &amp;amp;&amp;amp; \
rm &amp;quot;go$ver.linux-amd64.tar.gz&amp;quot; &amp;amp;&amp;amp; \
echo &amp;quot;export PATH=$PATH:/usr/local/go/bin:$HOME/go/bin&amp;quot; &amp;gt;&amp;gt; $HOME/.bash_profile &amp;amp;&amp;amp; \
source $HOME/.bash_profile &amp;amp;&amp;amp; \
go version&lt;/pre&gt;
  &lt;p id=&quot;EOYx&quot;&gt;&lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(34,  84%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;h2 id=&quot;1b58&quot;&gt;Новая установка ноды&lt;/h2&gt;
  &lt;/section&gt;
  &lt;section&gt;
    &lt;p id=&quot;z8pZ&quot;&gt;&lt;u&gt;&lt;em&gt;&lt;strong&gt;ВАЖНО &lt;/strong&gt;— в командах ниже все, что в &lt;strong&gt;&amp;lt;&amp;gt;&lt;/strong&gt; меняем на свое значение и убираем сами&lt;strong&gt; &amp;lt;&amp;gt;&lt;/strong&gt;&lt;/em&gt;&lt;/u&gt;&lt;/p&gt;
  &lt;/section&gt;
  &lt;p id=&quot;sjXD&quot;&gt;&lt;strong&gt;Устанавливаем бинарники&lt;/strong&gt;&lt;/p&gt;
  &lt;pre id=&quot;4rov&quot; data-lang=&quot;bash&quot;&gt;git clone https://github.com/konstellation/konstellation &amp;amp;&amp;amp; cd konstellation
git checkout v0.6.2
make build
mv $HOME/konstellation/build/knstld $HOME/go/bin/knstld&lt;/pre&gt;
  &lt;pre data-lang=&quot;bash&quot; id=&quot;5NJc&quot;&gt;knstld version --long | grep -e version -e commit
# version: 0.6.2
# commit: 371486832893d7dc99a68ee333ca4d2e2c375f9e&lt;/pre&gt;
  &lt;p id=&quot;vp48&quot;&gt;&lt;strong&gt;Инициализируем ноду, чтобы создать необходимые файлы конфигурации&lt;/strong&gt;&lt;/p&gt;
  &lt;pre data-lang=&quot;bash&quot; id=&quot;gydf&quot;&gt;knstld init UTSA_guide --chain-id darchub&lt;/pre&gt;
  &lt;p id=&quot;Qrh4&quot;&gt;&lt;strong&gt;Скачиваем Genesis&lt;/strong&gt;&lt;/p&gt;
  &lt;pre data-lang=&quot;bash&quot; id=&quot;DdAQ&quot;&gt;wget -O $HOME/.knstld/config/genesis.json &amp;quot;https://share106-7.utsa.tech/konstellation/genesis.json&amp;quot;

# Проверим генезис
sha256sum ~/.knstld/config/genesis.json
# f0e98b0749801ba0b2ea5f1eeff72df847ec78bde9b8ff9ca114bedc8afd8763&lt;/pre&gt;
  &lt;p id=&quot;Tbxh&quot;&gt;&lt;strong&gt;Проверяем, что состояние валидатора на начальном этапе&lt;/strong&gt;&lt;/p&gt;
  &lt;pre data-lang=&quot;bash&quot; id=&quot;P4wu&quot;&gt;cd &amp;amp;&amp;amp; cat .knstld/data/priv_validator_state.json
{
  &amp;quot;height&amp;quot;: &amp;quot;0&amp;quot;,
  &amp;quot;round&amp;quot;: 0,
  &amp;quot;step&amp;quot;: 0
}

# если нет, то выполняем команду
knstld unsafe-reset-all --home $HOME/.knstld&lt;/pre&gt;
  &lt;p id=&quot;4cmW&quot;&gt;&lt;strong&gt;Скачиваем Addr book&lt;/strong&gt;&lt;/p&gt;
  &lt;pre data-lang=&quot;bash&quot; id=&quot;qKeK&quot;&gt;wget -O $HOME/.knstld/config/addrbook.json &amp;quot;https://share106-7.utsa.tech/konstellation/addrbook.json&amp;quot;&lt;/pre&gt;
  &lt;p id=&quot;mLrA&quot;&gt;&lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(34,  84%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;h2 id=&quot;kBZ8&quot;&gt;Настраиваем конфигурацию ноды&lt;/h2&gt;
  &lt;/section&gt;
  &lt;pre data-lang=&quot;bash&quot; id=&quot;Xwmm&quot;&gt;# правим конфиг, благодаря чему мы можем больше не использовать флаг chain-id для каждой команды CLI в client.toml
knstld config chain-id darchub

# при необходимости настраиваем keyring-backend в client.toml 
knstld config keyring-backend os

# настраиваем минимальную цену за газ в app.toml
sed -i.bak -e &amp;quot;s/^minimum-gas-prices *=.*/minimum-gas-prices = \&amp;quot;0.001udarc\&amp;quot;/;&amp;quot; ~/.knstld/config/app.toml

# добавляем seeds/bpeers/peers в config.toml
external_address=$(wget -qO- eth0.me)
sed -i.bak -e &amp;quot;s/^external_address *=.*/external_address = \&amp;quot;$external_address:26656\&amp;quot;/&amp;quot; $HOME/.knstld/config/config.toml

peers=&amp;quot;3bf94a04c111992065810fe9e85d9adb5132b824@65.108.199.222:26626,e5e1f21957a07f623fb310737205b5b6cb1fce42@8.52.201.252:60756&amp;quot;
sed -i.bak -e &amp;quot;s/^persistent_peers *=.*/persistent_peers = \&amp;quot;$peers\&amp;quot;/&amp;quot; $HOME/.knstld/config/config.toml
seeds=&amp;quot;&amp;quot;
sed -i.bak -e &amp;quot;s/^seeds =.*/seeds = \&amp;quot;$seeds\&amp;quot;/&amp;quot; $HOME/.knstld/config/config.toml

# увеличиваем количество входящих и исходящих пиров для подключения, за исключением постоянных пиров в config.toml
sed -i &amp;#x27;s/max_num_inbound_peers =.*/max_num_inbound_peers = 40/g&amp;#x27; $HOME/.knstld/config/config.toml
sed -i &amp;#x27;s/max_num_outbound_peers =.*/max_num_outbound_peers = 10/g&amp;#x27; $HOME/.knstld/config/config.toml

# настраиваем фильтрацию &amp;quot;плохих&amp;quot; peers
sed -i -e &amp;quot;s/^filter_peers *=.*/filter_peers = \&amp;quot;true\&amp;quot;/&amp;quot; $HOME/.knstld/config/config.toml&lt;/pre&gt;
  &lt;p id=&quot;QI2Z&quot;&gt;&lt;strong&gt;(ОПЦИОНАЛЬНО) Настраиваем прунинг одной командой в&lt;code&gt;app.toml&lt;/code&gt;&lt;/strong&gt;&lt;/p&gt;
  &lt;pre data-lang=&quot;bash&quot; id=&quot;3mtZ&quot;&gt;pruning=&amp;quot;nothing&amp;quot;
pruning_keep_recent=&amp;quot;0&amp;quot;
pruning_interval=&amp;quot;0&amp;quot;
sed -i -e &amp;quot;s/^pruning *=.*/pruning = \&amp;quot;$pruning\&amp;quot;/&amp;quot; $HOME/.knstld/config/app.toml
sed -i -e &amp;quot;s/^pruning-keep-recent *=.*/pruning-keep-recent = \&amp;quot;$pruning_keep_recent\&amp;quot;/&amp;quot; $HOME/.knstld/config/app.toml
sed -i -e &amp;quot;s/^pruning-interval *=.*/pruning-interval = \&amp;quot;$pruning_interval\&amp;quot;/&amp;quot; $HOME/.knstld/config/app.toml&lt;/pre&gt;
  &lt;p id=&quot;dGeO&quot;&gt;&lt;strong&gt;(ОПЦИОНАЛЬНО) Выкл индексацию в&lt;code&gt;config.toml&lt;/code&gt;&lt;/strong&gt;&lt;/p&gt;
  &lt;pre data-lang=&quot;bash&quot; id=&quot;bXI0&quot;&gt;indexer=&amp;quot;null&amp;quot;
sed -i -e &amp;quot;s/^indexer *=.*/indexer = \&amp;quot;$indexer\&amp;quot;/&amp;quot; $HOME/.knstld/config/config.toml&lt;/pre&gt;
  &lt;p id=&quot;UDzq&quot;&gt;&lt;strong&gt;(ОПЦИОНАЛЬНО) Вкл/выкл снэпшоты в&lt;code&gt;app.toml&lt;/code&gt;&lt;/strong&gt;&lt;/p&gt;
  &lt;pre data-lang=&quot;bash&quot; id=&quot;KPhI&quot;&gt;snapshot_interval=1000
sed -i.bak -e &amp;quot;s/^snapshot-interval *=.*/snapshot-interval = \&amp;quot;$snapshot_interval\&amp;quot;/&amp;quot; ~/.knstld/config/app.toml&lt;/pre&gt;
  &lt;section style=&quot;background-color:hsl(hsl(236, 74%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;p id=&quot;dNci&quot;&gt;&lt;strong&gt;(ОПЦИОНАЛЬНО) Смена портов &lt;/strong&gt;#для 2 ноды&lt;/p&gt;
    &lt;pre data-lang=&quot;bash&quot; id=&quot;dFln&quot;&gt;# config.toml
sed -i.bak -e &amp;quot;s%^proxy_app = \&amp;quot;tcp://127.0.0.1:26658\&amp;quot;%proxy_app = \&amp;quot;tcp://127.0.0.1:36658\&amp;quot;%; s%^laddr = \&amp;quot;tcp://127.0.0.1:26657\&amp;quot;%laddr = \&amp;quot;tcp://127.0.0.1:36657\&amp;quot;%; s%^pprof_laddr = \&amp;quot;localhost:6060\&amp;quot;%pprof_laddr = \&amp;quot;localhost:6061\&amp;quot;%; s%^laddr = \&amp;quot;tcp://0.0.0.0:26656\&amp;quot;%laddr = \&amp;quot;tcp://0.0.0.0:36656\&amp;quot;%; s%^prometheus_listen_addr = \&amp;quot;:26660\&amp;quot;%prometheus_listen_addr = \&amp;quot;:36660\&amp;quot;%&amp;quot; $HOME/.knstld/config/config.toml

# app.toml
sed -i.bak -e &amp;quot;s%^address = \&amp;quot;0.0.0.0:9090\&amp;quot;%address = \&amp;quot;0.0.0.0:9190\&amp;quot;%; s%^address = \&amp;quot;0.0.0.0:9091\&amp;quot;%address = \&amp;quot;0.0.0.0:9191\&amp;quot;%&amp;quot; $HOME/.knstld/config/app.toml

# client.toml
sed -i.bak -e &amp;quot;s%^node = \&amp;quot;tcp://localhost:26657\&amp;quot;%node = \&amp;quot;tcp://localhost:36657\&amp;quot;%&amp;quot; $HOME/.knstld/config/client.toml

external_address=$(wget -qO- eth0.me)
sed -i.bak -e &amp;quot;s/^external_address *=.*/external_address = \&amp;quot;$external_address:36656\&amp;quot;/&amp;quot; $HOME/.knstld/config/config.toml&lt;/pre&gt;
    &lt;p id=&quot;yDul&quot;&gt;Подробнее о смене портов &lt;a href=&quot;/@lesnik13utsa/yYp5bzk4sho&quot;&gt;здесь&lt;/a&gt;&lt;/p&gt;
  &lt;/section&gt;
  &lt;p id=&quot;QHnR&quot;&gt;&lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(34,  84%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;h2 id=&quot;N1Bw&quot;&gt;&lt;strong&gt;Snapshot&lt;/strong&gt;&lt;/h2&gt;
  &lt;/section&gt;
  &lt;section style=&quot;background-color:hsl(hsl(236, 74%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;p id=&quot;yPUl&quot; data-align=&quot;center&quot;&gt;time: &lt;strong&gt;every 7 days&lt;/strong&gt; &lt;strong&gt;| &lt;/strong&gt;indexer:&lt;strong&gt; kv&lt;/strong&gt;&lt;/p&gt;
    &lt;p id=&quot;SP72&quot; data-align=&quot;center&quot;&gt;🌐 &lt;a href=&quot;https://share106-7.utsa.tech/konstellation/&quot; target=&quot;_blank&quot;&gt;&lt;strong&gt;https://share106-7.utsa.tech/konstellation/&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;
    &lt;pre data-lang=&quot;bash&quot; id=&quot;bJcp&quot;&gt;cd $HOME
systemctl stop knstld

cp $HOME/.knstld/data/priv_validator_state.json $HOME/.knstld/priv_validator_state.json.backup

# удаляем старую базу данных
rm -rf $HOME/.knstld/data 

# скачиваем snapshot
curl -o - -L https://share106-7.utsa.tech/konstellation/konstellation_mainnet.tar.lz4 | lz4 -c -d - | tar -x -C $HOME/.knstld/

mv $HOME/.knstld/priv_validator_state.json.backup $HOME/.knstld/data/priv_validator_state.json

systemctl restart knstld &amp;amp;&amp;amp; journalctl -u knstld -f -o cat&lt;/pre&gt;
  &lt;/section&gt;
  &lt;p id=&quot;76hd&quot;&gt;&lt;strong&gt;Создаем сервисный файл&lt;/strong&gt;&lt;/p&gt;
  &lt;pre data-lang=&quot;bash&quot; id=&quot;baVL&quot;&gt;tee /etc/systemd/system/knstld.service &amp;gt; /dev/null &amp;lt;&amp;lt;EOF
[Unit]
Description=knstld
After=network-online.target

[Service]
User=$USER
ExecStart=$(which knstld) start
Restart=on-failure
RestartSec=3
LimitNOFILE=65535

[Install]
WantedBy=multi-user.target
EOF&lt;/pre&gt;
  &lt;pre data-lang=&quot;bash&quot; id=&quot;dpCI&quot;&gt;systemctl daemon-reload
systemctl enable knstld
systemctl restart knstld &amp;amp;&amp;amp; journalctl -u knstld -f -o cat&lt;/pre&gt;
  &lt;section style=&quot;background-color:hsl(hsl(236, 74%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;p id=&quot;7iVh&quot;&gt;&lt;strong&gt;Если после старта нода долго не может подцепиться к пирам, то ищем новые пиры или просим addrbook.json в дискорд&lt;/strong&gt;&lt;/p&gt;
    &lt;pre data-lang=&quot;bash&quot; id=&quot;MJtd&quot;&gt;# стопаем ноду и сбрасываем данные
systemctl stop knstld
knstld tendermint unsafe-reset-all --home ~/.knstld/ --keep-addr-book

# перезагружаем ноду
systemctl restart knstld &amp;amp;&amp;amp; journalctl -u knstld -f -o cat&lt;/pre&gt;
  &lt;/section&gt;
  &lt;p id=&quot;P3nc&quot;&gt;&lt;strong&gt;Создаем или восстанавливаем кошелек и сохраняем вывод&lt;/strong&gt;&lt;/p&gt;
  &lt;pre data-lang=&quot;bash&quot; id=&quot;GMmm&quot;&gt;# создать кошелек
knstld keys add &amp;lt;name_wallet&amp;gt; --keyring-backend os

# восстановить кошелек (после команды вставить seed)
knstld keys add &amp;lt;name_wallet&amp;gt; --recover --keyring-backend os

# подключить кошелек ledger
knstld keys add &amp;lt;name_wallet&amp;gt; --ledger &lt;/pre&gt;
  &lt;section style=&quot;background-color:hsl(hsl(236, 74%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;p id=&quot;YLko&quot;&gt;&lt;strong&gt;Не забываем сохранить seed !!!&lt;/strong&gt;&lt;/p&gt;
  &lt;/section&gt;
  &lt;p id=&quot;gL3M&quot;&gt;&lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(34,  84%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;h2 id=&quot;sBaD&quot;&gt;&lt;strong&gt;Создаем валидатора&lt;/strong&gt;&lt;/h2&gt;
  &lt;/section&gt;
  &lt;pre data-lang=&quot;bash&quot; id=&quot;JXea&quot;&gt;knstld tx staking create-validator \
  --amount=1000000udarc \
  --pubkey=$(knstld tendermint show-validator) \
  --moniker=&amp;quot;&amp;lt;moniker&amp;gt;&amp;quot; \
  --identity=&amp;quot;&amp;lt;identity&amp;gt;&amp;quot; \
  --website=&amp;quot;&amp;lt;website&amp;gt;&amp;quot; \
  --details=&amp;quot;&amp;lt;details&amp;gt;&amp;quot; \
  --security-contact=&amp;quot;&amp;lt;contact&amp;gt;&amp;quot; \
  --chain-id=&amp;quot;darchub&amp;quot; \
  --commission-rate=&amp;quot;0.10&amp;quot; \
  --commission-max-rate=&amp;quot;0.20&amp;quot; \
  --commission-max-change-rate=&amp;quot;0.01&amp;quot; \
  --min-self-delegation=&amp;quot;1&amp;quot; \
  --fees=&amp;quot;500udarc&amp;quot; \
  --from=&amp;lt;wallet_name&amp;gt;&lt;/pre&gt;
  &lt;section style=&quot;background-color:hsl(hsl(236, 74%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;p id=&quot;kj2D&quot;&gt;&lt;strong&gt;Не забываем сохранить priv_validator_key.json !!!&lt;/strong&gt;&lt;/p&gt;
    &lt;p id=&quot;VBzA&quot;&gt;Подробнее о создании/редактировании валидатора можно почитать &lt;a href=&quot;/@lesnik13utsa/RPLJpWXIoDQ&quot;&gt;здесь&lt;/a&gt;&lt;/p&gt;
  &lt;/section&gt;
  &lt;p id=&quot;DEPU&quot;&gt;&lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(34,  84%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;h2 id=&quot;1eUH&quot;&gt;Полезные команды&lt;/h2&gt;
  &lt;/section&gt;
  &lt;p id=&quot;Fuvu&quot;&gt;&lt;strong&gt;Информация&lt;/strong&gt;&lt;/p&gt;
  &lt;pre data-lang=&quot;bash&quot; id=&quot;W5vn&quot;&gt;# проверить блоки
knstld status 2&amp;gt;&amp;amp;1 | jq .&amp;quot;SyncInfo&amp;quot;.&amp;quot;latest_block_height&amp;quot;

# проверить логи
sudo journalctl -u knstld -f -o cat

# проверить статус
curl localhost:26657/status

# проверить баланс
knstld q bank balances &amp;lt;address&amp;gt;

# проверить pubkey валидатора
knstld tendermint show-validator

# проверить валидатора
knstld query staking validator &amp;lt;valoper_address&amp;gt;
knstld query staking validators --limit 1000000 -o json | jq &amp;#x27;.validators[] | select(.description.moniker==&amp;quot;&amp;lt;name_moniker&amp;gt;&amp;quot;)&amp;#x27; | jq

# проверка информации по TX_HASH
knstld query tx &amp;lt;TX_HASH&amp;gt;

# параметры сети
knstld q staking params
knstld q slashing params

# проверить сколько блоков пропущено валидатором и с какого блока актив
knstld q slashing signing-info $(knstld tendermint show-validator)

# проверить slashing
knstld q slashing signing-info $(knstld tendermint show-validator)

# узнать транзакцию создания валидатора (заменить свой valoper_address)
knstld query txs --events=&amp;#x27;create_validator.validator=&amp;lt;your_valoper_address&amp;gt;&amp;#x27; -o=json | jq .txs[0].txhash -r

# просмотр активного сета
knstld q staking validators -o json --limit=1000 \
| jq &amp;#x27;.validators[] | select(.status==&amp;quot;BOND_STATUS_BONDED&amp;quot;)&amp;#x27; \
| jq -r &amp;#x27;.tokens + &amp;quot; - &amp;quot; + .description.moniker&amp;#x27; \
| sort -gr | nl

# просмотр неактивного сета
knstld q staking validators -o json --limit=1000 \
| jq &amp;#x27;.validators[] | select(.status==&amp;quot;BOND_STATUS_UNBONDED&amp;quot;)&amp;#x27; \
| jq -r &amp;#x27;.tokens + &amp;quot; - &amp;quot; + .description.moniker&amp;#x27; \
| sort -gr | nl&lt;/pre&gt;
  &lt;p id=&quot;nXYz&quot;&gt;&lt;strong&gt;Транзакции&lt;/strong&gt;&lt;/p&gt;
  &lt;pre data-lang=&quot;bash&quot; id=&quot;fvs6&quot;&gt;# собрать комиссионные + реварды
knstld tx distribution withdraw-rewards &amp;lt;valoper_address&amp;gt; --from &amp;lt;name_wallet&amp;gt; --fees 5000udarc --commission -y

# заделегировать себе в стейк еще (так отправляется 1 монетa)
knstld tx staking delegate &amp;lt;valoper_address&amp;gt; 1000000udarc --from &amp;lt;name_wallet&amp;gt; --fees 5000udarc -y

# ределегирование на другого валидатора
knstld tx staking redelegate &amp;lt;src-validator-addr&amp;gt; &amp;lt;dst-validator-addr&amp;gt; 1000000udarc --from &amp;lt;name_wallet&amp;gt; --fees 5000udarc -y

# unbond 
knstld tx staking unbond &amp;lt;addr_valoper&amp;gt; 1000000udarc --from &amp;lt;name_wallet&amp;gt; --fees 5000udarc -y

# отправить монеты на другой адрес
knstld tx bank send &amp;lt;name_wallet&amp;gt; &amp;lt;address&amp;gt; 1000000udarc --fees 5000udarc -y

# выбраться из тюрьмы
knstld tx slashing unjail --from &amp;lt;name_wallet&amp;gt; --fees 5000udarc -y&lt;/pre&gt;
  &lt;p id=&quot;zl2g&quot;&gt;&lt;strong&gt;Работа с кошельками&lt;/strong&gt;&lt;/p&gt;
  &lt;pre data-lang=&quot;bash&quot; id=&quot;AUE1&quot;&gt;# вывести список кошельков
knstld keys list

# показать ключ аккаунта
knstld keys show &amp;lt;name_wallet&amp;gt; --bech acc

# показать ключ валидатора
knstld keys show &amp;lt;name_wallet&amp;gt; --bech val

# показать ключ консенсуса
knstld keys show &amp;lt;name_wallet&amp;gt; --bech cons

# запрос учетной записи
knstld q auth account $(knstld keys show &amp;lt;name_wallet&amp;gt; -a) -o text

# удалить кошелек
knstld keys delete &amp;lt;name_wallet&amp;gt;&lt;/pre&gt;
  &lt;p id=&quot;Qfld&quot;&gt;&lt;strong&gt;Удалить ноду&lt;/strong&gt;&lt;/p&gt;
  &lt;pre data-lang=&quot;bash&quot; id=&quot;wjjr&quot;&gt;systemctl stop knstld &amp;amp;&amp;amp; \
systemctl disable knstld &amp;amp;&amp;amp; \
rm /etc/systemd/system/knstld.service &amp;amp;&amp;amp; \
systemctl daemon-reload &amp;amp;&amp;amp; \
cd $HOME &amp;amp;&amp;amp; \
rm -rf .knstld konstellation &amp;amp;&amp;amp; \
rm -rf $(which knstld)&lt;/pre&gt;
  &lt;p id=&quot;fYh0&quot;&gt;&lt;strong&gt;ГОВЕРНАНС&lt;/strong&gt;&lt;/p&gt;
  &lt;pre data-lang=&quot;bash&quot; id=&quot;OSZu&quot;&gt;# список proposals
knstld q gov proposals

# посмотреть результат голосования
knstld q gov proposals --voter &amp;lt;ADDRESS&amp;gt;

# проголосовать за предложение 
knstld tx gov vote 1 yes --from &amp;lt;name_wallet&amp;gt; --fees 5000udarc

# внести депозит в предложение
knstld tx gov deposit 1 1000000udarc --from &amp;lt;name_wallet&amp;gt; --fees 5000udarc

# создать предложение
knstld tx gov submit-proposal --title=&amp;quot;Randomly reward&amp;quot; --description=&amp;quot;Reward 10 testnet participants who completed more than 3 tasks&amp;quot; --type=&amp;quot;Text&amp;quot; --deposit=&amp;quot;11000000grain&amp;quot; --from=&amp;lt;name_wallet&amp;gt; --fees 5000udarc&lt;/pre&gt;
  &lt;p id=&quot;chat-messages-932182862663389245&quot;&gt;&lt;strong&gt;Peers and RPC&lt;/strong&gt;&lt;/p&gt;
  &lt;pre data-lang=&quot;bash&quot; id=&quot;Bros&quot;&gt;FOLDER=.knstld

# узнать свой peer
PORTR=$(grep -A 3 &amp;quot;\[p2p\]&amp;quot; ~/$FOLDER/config/config.toml | egrep -o &amp;quot;:[0-9]+&amp;quot;) &amp;amp;&amp;amp; \
echo $(knstld tendermint show-node-id)@$(wget -qO- eth0.me)$PORTR

# узнать порт RPC
echo -e &amp;quot;\033[0;32m$(grep -A 3 &amp;quot;\[rpc\]&amp;quot; ~/$FOLDER/config/config.toml | egrep -o &amp;quot;:[0-9]+&amp;quot;)\033[0m&amp;quot;

# проверка количества пиров
PORT=
curl -s http://localhost:$PORT/net_info | jq -r &amp;#x27;.result.peers[] | &amp;quot;\(.node_info.id)@\(.remote_ip):\(.node_info.listen_addr | split(&amp;quot;:&amp;quot;)[2])&amp;quot;&amp;#x27; | wc -l

# cписок моникеров подключенных пиров
curl -s http://localhost:$PORT/net_info | jq &amp;#x27;.result.peers[].node_info.moniker&amp;#x27;

# Проверка prevotes/precommits. Пригодится при обновах
curl -s localhost:$PORT/consensus_state | jq &amp;#x27;.result.round_state.height_vote_set[0].prevotes_bit_array&amp;#x27; &amp;amp;&amp;amp; \
curl -s localhost:$PORT/consensus_state | jq &amp;#x27;.result.round_state.height_vote_set[0].precommits_bit_array&amp;#x27;

# check prevote of your validator
curl -s localhost:$PORT/consensus_state -s | grep $(curl -s localhost:26657/status | jq -r .result.validator_info.address[:12])&lt;/pre&gt;
  &lt;figure id=&quot;LkHi&quot; class=&quot;m_original&quot; data-caption-align=&quot;center&quot;&gt;
    &lt;img src=&quot;https://img3.teletype.in/files/e9/28/e92895ca-f71d-497c-9fd2-2e7eeedd5303.png&quot; width=&quot;278&quot; /&gt;
    &lt;figcaption&gt;&lt;strong&gt;Поддержим природу вместе: 0xa7476EC14cD663C742d527113638C77a1631Cc89 cosmos1m2mm7kzvw6m3464h94ryqg8xvr6tyeyyecppnq&lt;/strong&gt;&lt;/figcaption&gt;
  &lt;/figure&gt;

</content></entry><entry><id>lesnik13utsa:Ol_ULENy7v0</id><link rel="alternate" type="text/html" href="https://teletype.in/@lesnik13utsa/Ol_ULENy7v0?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=lesnik13utsa"></link><title>Prysm</title><published>2024-10-14T09:20:18.885Z</published><updated>2025-02-24T15:49:21.786Z</updated><category term="cosmos" label="COSMOS"></category><summary type="html">&lt;img src=&quot;https://img3.teletype.in/files/ac/6e/ac6e1e0d-defd-49a8-a013-982f0a502db0.png&quot;&gt;UTSA</summary><content type="html">
  &lt;figure id=&quot;IsFB&quot; class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://img3.teletype.in/files/ac/6e/ac6e1e0d-defd-49a8-a013-982f0a502db0.png&quot; width=&quot;820&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;head&quot; data-align=&quot;center&quot;&gt;🪓 &lt;a href=&quot;https://t.me/utsa_channel&quot; target=&quot;_blank&quot;&gt;Telegram канал UTSA&lt;/a&gt; 🪓 &lt;a href=&quot;https://t.me/utsa_chat&quot; target=&quot;_blank&quot;&gt;Telegram чат UTSA&lt;/a&gt;&lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(236, 74%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;p id=&quot;D2wo&quot; data-align=&quot;center&quot;&gt;&lt;strong&gt;Web &lt;a href=&quot;https://discord.gg/prysmnetwork&quot; target=&quot;_blank&quot;&gt;Discord&lt;/a&gt; &lt;a href=&quot;https://github.com/kleomedes/prysm&quot; target=&quot;_blank&quot;&gt;Github&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
  &lt;/section&gt;
  &lt;p id=&quot;sHgA&quot;&gt;&lt;u&gt;&lt;strong&gt;Testnet details&lt;/strong&gt;&lt;/u&gt;&lt;/p&gt;
  &lt;ul id=&quot;2h1F&quot;&gt;
    &lt;li id=&quot;ED8t&quot;&gt;Network Chain ID: &lt;code&gt;prysm-devnet-1&lt;/code&gt;&lt;/li&gt;
    &lt;li id=&quot;8tyv&quot;&gt;Denom stake: &lt;code&gt;uprysm&lt;/code&gt;&lt;/li&gt;
    &lt;li id=&quot;SZWc&quot;&gt;Binary: &lt;code&gt;prysmd&lt;/code&gt;&lt;/li&gt;
    &lt;li id=&quot;OnH1&quot;&gt;Working directory: &lt;code&gt;.prysm&lt;/code&gt;&lt;/li&gt;
    &lt;li id=&quot;AdcU&quot;&gt;RPC: &lt;a href=&quot;https://t-prysm.rpc.utsa.tech/&quot; target=&quot;_blank&quot;&gt;https://t-prysm.rpc.utsa.tech/&lt;/a&gt;&lt;/li&gt;
    &lt;li id=&quot;LaYP&quot;&gt;API: &lt;a href=&quot;https://t-prysm.api.utsa.tech/&quot; target=&quot;_blank&quot;&gt;https://t-prysm.api.utsa.tech/&lt;/a&gt;&lt;/li&gt;
    &lt;li id=&quot;jHeg&quot;&gt;Explorer: &lt;a href=&quot;https://exp.utsa.tech/prysm-test/staking&quot; target=&quot;_blank&quot;&gt;https://exp.utsa.tech/prysm-test/staking&lt;/a&gt;&lt;/li&gt;
    &lt;li id=&quot;kirb&quot;&gt;Docs: &lt;/li&gt;
    &lt;li id=&quot;bAc8&quot;&gt;Faucet: &lt;a href=&quot;https://prysm-devnet-faucet.kleomedes.network/&quot; target=&quot;_blank&quot;&gt;https://prysm-devnet-faucet.kleomedes.network/&lt;/a&gt;&lt;/li&gt;
  &lt;/ul&gt;
  &lt;hr /&gt;
  &lt;section style=&quot;background-color:hsl(hsl(236, 74%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;pre data-lang=&quot;bash&quot; id=&quot;SMcw&quot;&gt;# проверяем статус prevotes/precommits
FOLDER=.prysm

# узнать порт RPC
echo -e &amp;quot;\033[0;32m$(grep -A 3 &amp;quot;\[rpc\]&amp;quot; ~/$FOLDER/config/config.toml | egrep -o &amp;quot;:[0-9]+&amp;quot;)\033[0m&amp;quot;

PORT=&amp;lt;ввести свой порт&amp;gt;

# Проверка prevotes/precommits. Пригодится при обновах
curl -s localhost:$PORT/consensus_state | jq &amp;#x27;.result.round_state.height_vote_set[0].prevotes_bit_array&amp;#x27; &amp;amp;&amp;amp; \
curl -s localhost:$PORT/consensus_state | jq &amp;#x27;.result.round_state.height_vote_set[0].precommits_bit_array&amp;#x27;&lt;/pre&gt;
  &lt;/section&gt;
  &lt;section style=&quot;background-color:hsl(hsl(236, 74%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;p id=&quot;CJUj&quot;&gt;&lt;strong&gt;UPD 🕊  (Высота обновления: )&lt;/strong&gt;&lt;/p&gt;
    &lt;pre data-lang=&quot;bash&quot; id=&quot;oF0K&quot;&gt;
# ПОСЛЕ ОСТАНОВКИ СЕТИ НА НУЖНОМ БЛОКЕ!!!
&lt;/pre&gt;
  &lt;/section&gt;
  &lt;p id=&quot;Q4zr&quot;&gt;&lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(34,  84%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;h2 id=&quot;6FkE&quot;&gt;Подготовка сервера&lt;/h2&gt;
  &lt;/section&gt;
  &lt;pre data-lang=&quot;bash&quot; id=&quot;Qh7e&quot;&gt;# обновляем репозитории
apt update &amp;amp;&amp;amp; sudo apt upgrade -y

# устанавливаем необходимые утилиты
apt install curl build-essential git wget jq make gcc tmux htop nvme-cli pkg-config libssl-dev libleveldb-dev tar clang bsdmainutils ncdu unzip libleveldb-dev -y

# проверяем работу жестких дисков
curl -sL yabs.sh | bash -s — -ig

# проверяем работу интернета
curl -sL yabs.sh | bash -s — -fg&lt;/pre&gt;
  &lt;p id=&quot;M4EP&quot;&gt;&lt;strong&gt;File2Ban&lt;/strong&gt; - подробнее &lt;a href=&quot;https://www.linuxshop.ru/articles/a26710798-nastroyka_fail2ban&quot; target=&quot;_blank&quot;&gt;здесь&lt;/a&gt;&lt;/p&gt;
  &lt;pre data-lang=&quot;bash&quot; id=&quot;AQFq&quot;&gt;# устанавливаем и копируем конфиг, который будет иметь больший приоритет
apt install fail2ban -y &amp;amp;&amp;amp; \
cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local &amp;amp;&amp;amp; \
nano /etc/fail2ban/jail.local
# раскомментировать и добавить свой IP: ignoreip = 127.0.0.1/8 ::1 &amp;lt;ip&amp;gt;
systemctl restart fail2ban

# проверяем status 
systemctl status fail2ban
# проверяем, какие jails активны (по умолчанию только sshd)
fail2ban-client status
# проверяем статистику по sshd
fail2ban-client status sshd
# смотрим логи
tail /var/log/fail2ban.log
# останавливаем работу и удаляем с автозагрузки
#systemctl stop fail2ban &amp;amp;&amp;amp; systemctl disable fail2ban&lt;/pre&gt;
  &lt;p id=&quot;eKUj&quot;&gt;&lt;strong&gt;Устанавливаем Go ОДНОЙ КОМАНДОЙ&lt;/strong&gt;&lt;/p&gt;
  &lt;pre data-lang=&quot;bash&quot; id=&quot;eJEE&quot;&gt;ver=&amp;quot;1.21.3&amp;quot; &amp;amp;&amp;amp; \
wget &amp;quot;https://golang.org/dl/go$ver.linux-amd64.tar.gz&amp;quot; &amp;amp;&amp;amp; \
sudo rm -rf /usr/local/go &amp;amp;&amp;amp; \
sudo tar -C /usr/local -xzf &amp;quot;go$ver.linux-amd64.tar.gz&amp;quot; &amp;amp;&amp;amp; \
rm &amp;quot;go$ver.linux-amd64.tar.gz&amp;quot; &amp;amp;&amp;amp; \
echo &amp;quot;export PATH=$PATH:/usr/local/go/bin:$HOME/go/bin&amp;quot; &amp;gt;&amp;gt; $HOME/.bash_profile &amp;amp;&amp;amp; \
source $HOME/.bash_profile &amp;amp;&amp;amp; \
go version&lt;/pre&gt;
  &lt;p id=&quot;I6hI&quot;&gt;&lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(34,  84%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;h2 id=&quot;1b58&quot;&gt;Новая установка ноды&lt;/h2&gt;
  &lt;/section&gt;
  &lt;section&gt;
    &lt;p id=&quot;z8pZ&quot;&gt;&lt;u&gt;&lt;em&gt;&lt;strong&gt;ВАЖНО &lt;/strong&gt;— в командах ниже все, что в &lt;strong&gt;&amp;lt;&amp;gt;&lt;/strong&gt; меняем на свое значение и убираем сами&lt;strong&gt; &amp;lt;&amp;gt;&lt;/strong&gt;&lt;/em&gt;&lt;/u&gt;&lt;/p&gt;
  &lt;/section&gt;
  &lt;p id=&quot;sjXD&quot;&gt;&lt;strong&gt;Устанавливаем бинарники&lt;/strong&gt;&lt;/p&gt;
  &lt;pre id=&quot;1zL4&quot; data-lang=&quot;bash&quot;&gt;git clone https://github.com/kleomedes/prysm &amp;amp;&amp;amp; cd prysm
git checkout v0.1.0-devnet
make install&lt;/pre&gt;
  &lt;pre data-lang=&quot;bash&quot; id=&quot;G8CV&quot;&gt;prysmd version --long | grep -e version -e commit
# version: 0.1.0-devnet
# commit: f48a40b9541508c19b037e1a659c7ab048a1946d&lt;/pre&gt;
  &lt;p id=&quot;vp48&quot;&gt;&lt;strong&gt;Инициализируем ноду, чтобы создать необходимые файлы конфигурации&lt;/strong&gt;&lt;/p&gt;
  &lt;pre data-lang=&quot;bash&quot; id=&quot;WouO&quot;&gt;prysmd init UTSA_guide --chain-id prysm-devnet-1&lt;/pre&gt;
  &lt;p id=&quot;Qrh4&quot;&gt;&lt;strong&gt;Скачиваем Genesis&lt;/strong&gt;&lt;/p&gt;
  &lt;pre data-lang=&quot;bash&quot; id=&quot;wPTh&quot;&gt;wget -O $HOME/.prysm/config/genesis.json &amp;quot;https://snapshots.polkachu.com/testnet-genesis/prysm/genesis.json&amp;quot;

# Проверим генезис
sha256sum ~/.prysm/config/genesis.json
# afe3fae047851409fa4e8bbb321a723fb4b2dc783bb5079c716bdf7df336e0c4&lt;/pre&gt;
  &lt;p id=&quot;Tbxh&quot;&gt;&lt;strong&gt;Проверяем, что состояние валидатора на начальном этапе&lt;/strong&gt;&lt;/p&gt;
  &lt;pre data-lang=&quot;bash&quot; id=&quot;oycT&quot;&gt;cd &amp;amp;&amp;amp; cat .prysm/data/priv_validator_state.json
{
  &amp;quot;height&amp;quot;: &amp;quot;0&amp;quot;,
  &amp;quot;round&amp;quot;: 0,
  &amp;quot;step&amp;quot;: 0
}

# если нет, то выполняем команду
prysmd unsafe-reset-all --home $HOME/.prysm&lt;/pre&gt;
  &lt;p id=&quot;4cmW&quot;&gt;&lt;strong&gt;Скачиваем Addr book&lt;/strong&gt;&lt;/p&gt;
  &lt;pre data-lang=&quot;bash&quot; id=&quot;IiIk&quot;&gt;wget -O $HOME/.prysm/config/addrbook.json &amp;quot;https://share101.utsa.tech/prysm/addrbook.json&amp;quot;&lt;/pre&gt;
  &lt;p id=&quot;ud3E&quot;&gt;&lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(34,  84%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;h2 id=&quot;kBZ8&quot;&gt;Настраиваем конфигурацию ноды&lt;/h2&gt;
  &lt;/section&gt;
  &lt;pre data-lang=&quot;bash&quot; id=&quot;ZcCQ&quot;&gt;# правим конфиг, благодаря чему мы можем больше не использовать флаг chain-id для каждой команды CLI в client.toml
prysmd config set client chain-id prysm-devnet-1

# при необходимости настраиваем keyring-backend в client.toml 
prysmd config set client keyring-backend os

# настраиваем минимальную цену за газ в app.toml
sed -i.bak -e &amp;quot;s/^minimum-gas-prices *=.*/minimum-gas-prices = \&amp;quot;0.025uprysm\&amp;quot;/;&amp;quot; ~/.prysm/config/app.toml

# добавляем seeds/bpeers/peers в config.toml
external_address=$(wget -qO- eth0.me)
sed -i.bak -e &amp;quot;s/^external_address *=.*/external_address = \&amp;quot;$external_address:26656\&amp;quot;/&amp;quot; $HOME/.prysm/config/config.toml

peers=&amp;quot;&amp;quot;
sed -i.bak -e &amp;quot;s/^persistent_peers *=.*/persistent_peers = \&amp;quot;$peers\&amp;quot;/&amp;quot; $HOME/.prysm/config/config.toml
seeds=&amp;quot;ade4d8bc8cbe014af6ebdf3cb7b1e9ad36f412c0@testnet-seeds.polkachu.com:29856&amp;quot;
sed -i.bak -e &amp;quot;s/^seeds =.*/seeds = \&amp;quot;$seeds\&amp;quot;/&amp;quot; $HOME/.prysm/config/config.toml

# увеличиваем количество входящих и исходящих пиров для подключения, за исключением постоянных пиров в config.toml
sed -i &amp;#x27;s/max_num_inbound_peers =.*/max_num_inbound_peers = 40/g&amp;#x27; $HOME/.prysm/config/config.toml
sed -i &amp;#x27;s/max_num_outbound_peers =.*/max_num_outbound_peers = 10/g&amp;#x27; $HOME/.prysm/config/config.toml

# настраиваем фильтрацию &amp;quot;плохих&amp;quot; peers
sed -i -e &amp;quot;s/^filter_peers *=.*/filter_peers = \&amp;quot;true\&amp;quot;/&amp;quot; $HOME/.prysm/config/config.toml&lt;/pre&gt;
  &lt;p id=&quot;QI2Z&quot;&gt;&lt;strong&gt;(ОПЦИОНАЛЬНО) Настраиваем прунинг одной командой в&lt;code&gt;app.toml&lt;/code&gt;&lt;/strong&gt;&lt;/p&gt;
  &lt;pre data-lang=&quot;bash&quot; id=&quot;7pAi&quot;&gt;pruning=&amp;quot;custom&amp;quot;
pruning_keep_recent=&amp;quot;1000&amp;quot;
pruning_interval=&amp;quot;10&amp;quot;
sed -i -e &amp;quot;s/^pruning *=.*/pruning = \&amp;quot;$pruning\&amp;quot;/&amp;quot; $HOME/.prysm/config/app.toml
sed -i -e &amp;quot;s/^pruning-keep-recent *=.*/pruning-keep-recent = \&amp;quot;$pruning_keep_recent\&amp;quot;/&amp;quot; $HOME/.prysm/config/app.toml
sed -i -e &amp;quot;s/^pruning-interval *=.*/pruning-interval = \&amp;quot;$pruning_interval\&amp;quot;/&amp;quot; $HOME/.prysm/config/app.toml&lt;/pre&gt;
  &lt;p id=&quot;dGeO&quot;&gt;&lt;strong&gt;(ОПЦИОНАЛЬНО) Выкл индексацию в&lt;code&gt;config.toml&lt;/code&gt;&lt;/strong&gt;&lt;/p&gt;
  &lt;pre data-lang=&quot;bash&quot; id=&quot;Fn2D&quot;&gt;indexer=&amp;quot;null&amp;quot;
sed -i -e &amp;quot;s/^indexer *=.*/indexer = \&amp;quot;$indexer\&amp;quot;/&amp;quot; $HOME/.prysm/config/config.toml&lt;/pre&gt;
  &lt;p id=&quot;UDzq&quot;&gt;&lt;strong&gt;(ОПЦИОНАЛЬНО) Вкл/выкл снэпшоты в&lt;code&gt;app.toml&lt;/code&gt;&lt;/strong&gt;&lt;/p&gt;
  &lt;pre data-lang=&quot;bash&quot; id=&quot;6gex&quot;&gt;snapshot_interval=1000
sed -i.bak -e &amp;quot;s/^snapshot-interval *=.*/snapshot-interval = \&amp;quot;$snapshot_interval\&amp;quot;/&amp;quot; ~/.prysm/config/app.toml&lt;/pre&gt;
  &lt;section style=&quot;background-color:hsl(hsl(236, 74%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;p id=&quot;dNci&quot;&gt;&lt;strong&gt;(ОПЦИОНАЛЬНО) Смена портов &lt;/strong&gt;#для 2 ноды&lt;/p&gt;
    &lt;pre data-lang=&quot;bash&quot; id=&quot;HCe9&quot;&gt;# config.toml
sed -i.bak -e &amp;quot;s%^proxy_app = \&amp;quot;tcp://127.0.0.1:26658\&amp;quot;%proxy_app = \&amp;quot;tcp://127.0.0.1:36658\&amp;quot;%; s%^laddr = \&amp;quot;tcp://127.0.0.1:26657\&amp;quot;%laddr = \&amp;quot;tcp://127.0.0.1:36657\&amp;quot;%; s%^pprof_laddr = \&amp;quot;localhost:6060\&amp;quot;%pprof_laddr = \&amp;quot;localhost:6061\&amp;quot;%; s%^laddr = \&amp;quot;tcp://0.0.0.0:26656\&amp;quot;%laddr = \&amp;quot;tcp://0.0.0.0:36656\&amp;quot;%; s%^prometheus_listen_addr = \&amp;quot;:26660\&amp;quot;%prometheus_listen_addr = \&amp;quot;:36660\&amp;quot;%&amp;quot; $HOME/.prysm/config/config.toml

# app.toml
sed -i.bak -e &amp;quot;s%^address = \&amp;quot;0.0.0.0:9090\&amp;quot;%address = \&amp;quot;0.0.0.0:9190\&amp;quot;%; s%^address = \&amp;quot;0.0.0.0:9091\&amp;quot;%address = \&amp;quot;0.0.0.0:9191\&amp;quot;%&amp;quot; $HOME/.prysm/config/app.toml

# client.toml
sed -i.bak -e &amp;quot;s%^node = \&amp;quot;tcp://localhost:26657\&amp;quot;%node = \&amp;quot;tcp://localhost:36657\&amp;quot;%&amp;quot; $HOME/.prysm/config/client.toml

external_address=$(wget -qO- eth0.me)
sed -i.bak -e &amp;quot;s/^external_address *=.*/external_address = \&amp;quot;$external_address:36656\&amp;quot;/&amp;quot; $HOME/.prysm/config/config.toml&lt;/pre&gt;
    &lt;p id=&quot;yDul&quot;&gt;Подробнее о смене портов &lt;a href=&quot;/@lesnik13utsa/yYp5bzk4sho&quot;&gt;здесь&lt;/a&gt;&lt;/p&gt;
  &lt;/section&gt;
  &lt;section style=&quot;background-color:hsl(hsl(236, 74%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;p id=&quot;Kq3m&quot;&gt;&lt;strong&gt;(ОПЦИОНАЛЬНО) State Sync&lt;/strong&gt;&lt;/p&gt;
    &lt;pre data-lang=&quot;bash&quot; id=&quot;dhWh&quot;&gt;# при необходимости скачиваем wasm
curl -L https://share101.utsa.tech/prysm/wasm-prysm.tar.lz4 | lz4 -dc - | tar -xf - -C $HOME/.prysm --strip-components 2&lt;/pre&gt;
    &lt;pre data-lang=&quot;bash&quot; id=&quot;xxQF&quot;&gt;# добавляем пир
peers=&amp;quot;88ad3a3b9b981f0bbb52d5c996d0f7e1aa9426fa@65.108.206.118:61256&amp;quot;
sed -i.bak -e &amp;quot;s/^persistent_peers *=.*/persistent_peers = \&amp;quot;$peers\&amp;quot;/&amp;quot; $HOME/.prysm/config/config.toml&lt;/pre&gt;
    &lt;pre data-lang=&quot;bash&quot; id=&quot;hoBK&quot;&gt;SNAP_RPC=https://t-prysm.rpc.utsa.tech:443

LATEST_HEIGHT=$(curl -s $SNAP_RPC/block | jq -r .result.block.header.height); \
BLOCK_HEIGHT=$((LATEST_HEIGHT - 1000)); \
TRUST_HASH=$(curl -s &amp;quot;$SNAP_RPC/block?height=$BLOCK_HEIGHT&amp;quot; | jq -r .result.block_id.hash)

echo $LATEST_HEIGHT $BLOCK_HEIGHT $TRUST_HASH

sed -i.bak -E &amp;quot;s|^(enable[[:space:]]+=[[:space:]]+).*$|\1true| ; \
s|^(rpc_servers[[:space:]]+=[[:space:]]+).*$|\1\&amp;quot;$SNAP_RPC,$SNAP_RPC\&amp;quot;| ; \
s|^(trust_height[[:space:]]+=[[:space:]]+).*$|\1$BLOCK_HEIGHT| ; \
s|^(trust_hash[[:space:]]+=[[:space:]]+).*$|\1\&amp;quot;$TRUST_HASH\&amp;quot;| ; \
s|^(seeds[[:space:]]+=[[:space:]]+).*$|\1\&amp;quot;\&amp;quot;|&amp;quot; $HOME/.prysm/config/config.toml&lt;/pre&gt;
  &lt;/section&gt;
  &lt;p id=&quot;76hd&quot;&gt;&lt;strong&gt;Создаем сервисный файл&lt;/strong&gt;&lt;/p&gt;
  &lt;pre data-lang=&quot;bash&quot; id=&quot;Prfb&quot;&gt;tee /etc/systemd/system/prysmd.service &amp;gt; /dev/null &amp;lt;&amp;lt;EOF
[Unit]
Description=prysmd
After=network-online.target

[Service]
User=$USER
ExecStart=$(which prysmd) start
Restart=on-failure
RestartSec=3
LimitNOFILE=65535

[Install]
WantedBy=multi-user.target
EOF&lt;/pre&gt;
  &lt;pre data-lang=&quot;bash&quot; id=&quot;xJJd&quot;&gt;systemctl daemon-reload
systemctl enable prysmd
systemctl restart prysmd &amp;amp;&amp;amp; journalctl -u prysmd -f -o cat&lt;/pre&gt;
  &lt;section style=&quot;background-color:hsl(hsl(236, 74%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;p id=&quot;7iVh&quot;&gt;&lt;strong&gt;Если после старта нода долго не может подцепиться к пирам, то ищем новые пиры или просим addrbook.json в дискорд&lt;/strong&gt;&lt;/p&gt;
    &lt;pre data-lang=&quot;bash&quot; id=&quot;Zrux&quot;&gt;# стопаем ноду и сбрасываем данные
systemctl stop prysmd
prysmd tendermint unsafe-reset-all --home ~/.prysm/ --keep-addr-book

# перезагружаем ноду
systemctl restart prysmd &amp;amp;&amp;amp; journalctl -u prysmd -f -o cat&lt;/pre&gt;
  &lt;/section&gt;
  &lt;p id=&quot;P3nc&quot;&gt;&lt;strong&gt;Создаем или восстанавливаем кошелек и сохраняем вывод&lt;/strong&gt;&lt;/p&gt;
  &lt;pre data-lang=&quot;bash&quot; id=&quot;Unlu&quot;&gt;# создать кошелек
prysmd keys add &amp;lt;name_wallet&amp;gt; --keyring-backend os

# восстановить кошелек (после команды вставить seed)
prysmd keys add &amp;lt;name_wallet&amp;gt; --recover --keyring-backend os

# подключить кошелек ledger
prysmd keys add &amp;lt;name_wallet&amp;gt; --ledger &lt;/pre&gt;
  &lt;section style=&quot;background-color:hsl(hsl(236, 74%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;p id=&quot;YLko&quot;&gt;&lt;strong&gt;Не забываем сохранить seed !!!&lt;/strong&gt;&lt;/p&gt;
  &lt;/section&gt;
  &lt;p id=&quot;Fq5F&quot;&gt;&lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(34,  84%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;h2 id=&quot;sBaD&quot;&gt;&lt;strong&gt;Создаем валидатора&lt;/strong&gt;&lt;/h2&gt;
  &lt;/section&gt;
  &lt;p id=&quot;TPh0&quot;&gt;&lt;strong&gt;1. Получаем свой pubkey&lt;/strong&gt;&lt;/p&gt;
  &lt;pre data-lang=&quot;bash&quot; id=&quot;toTP&quot;&gt;prysmd comet show-validator
# {&amp;quot;@type&amp;quot;:&amp;quot;/cosmos.crypto.ed25519.PubKey&amp;quot;,&amp;quot;key&amp;quot;:&amp;quot;ZXONS7NNjLWH4HePBOoHKDAYeLXQO5iUwpCRQSi1poI=&amp;quot;}&lt;/pre&gt;
  &lt;p id=&quot;BbIv&quot;&gt;&lt;strong&gt;2. Создаем validator.json&lt;/strong&gt;&lt;/p&gt;
  &lt;pre data-lang=&quot;bash&quot; id=&quot;RkCj&quot;&gt;nano $HOME/.prysm/validator.json&lt;/pre&gt;
  &lt;p id=&quot;Iync&quot;&gt;&lt;strong&gt;3. Вставляем наш конфиг&lt;/strong&gt;&lt;/p&gt;
  &lt;pre data-lang=&quot;bash&quot; id=&quot;ErXT&quot;&gt;{
  &amp;quot;pubkey&amp;quot;: {#pubkey},
  &amp;quot;amount&amp;quot;: &amp;quot;1000000uprysm&amp;quot;,
  &amp;quot;moniker&amp;quot;: &amp;quot;moniker&amp;quot;,
  &amp;quot;identity&amp;quot;: &amp;quot;&amp;quot;,
  &amp;quot;website&amp;quot;: &amp;quot;&amp;quot;,
  &amp;quot;security&amp;quot;: &amp;quot;&amp;quot;,
  &amp;quot;details&amp;quot;: &amp;quot;&amp;quot;,
  &amp;quot;commission-rate&amp;quot;: &amp;quot;0.05&amp;quot;,
  &amp;quot;commission-max-rate&amp;quot;: &amp;quot;0.25&amp;quot;,
  &amp;quot;commission-max-change-rate&amp;quot;: &amp;quot;0.05&amp;quot;,
  &amp;quot;min-self-delegation&amp;quot;: &amp;quot;1&amp;quot;
}&lt;/pre&gt;
  &lt;p id=&quot;Q2un&quot;&gt;&lt;strong&gt;4. Отправляем транзакцию&lt;/strong&gt;&lt;/p&gt;
  &lt;pre data-lang=&quot;bash&quot; id=&quot;5mxj&quot;&gt;prysmd tx staking create-validator $HOME/.prysm/validator.json \
    --from=&amp;lt;key-name&amp;gt; \
    --chain-id=prysm-devnet-1 \
    --fees 500uprysm&lt;/pre&gt;
  &lt;p id=&quot;BuYM&quot;&gt;&lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(236, 74%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;p id=&quot;kj2D&quot;&gt;&lt;strong&gt;Не забываем сохранить priv_validator_key.json !!!&lt;/strong&gt;&lt;/p&gt;
    &lt;p id=&quot;VBzA&quot;&gt;Подробнее о создании/редактировании валидатора можно почитать &lt;a href=&quot;/@lesnik13utsa/RPLJpWXIoDQ&quot;&gt;здесь&lt;/a&gt;&lt;/p&gt;
  &lt;/section&gt;
  &lt;p id=&quot;Bd0f&quot;&gt;&lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(34,  84%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;h2 id=&quot;1eUH&quot;&gt;Полезные команды&lt;/h2&gt;
  &lt;/section&gt;
  &lt;p id=&quot;Fuvu&quot;&gt;&lt;strong&gt;Информация&lt;/strong&gt;&lt;/p&gt;
  &lt;pre data-lang=&quot;bash&quot; id=&quot;0kwQ&quot;&gt;# проверить блоки
prysmd status 2&amp;gt;&amp;amp;1 | jq .&amp;quot;SyncInfo&amp;quot;.&amp;quot;latest_block_height&amp;quot;

# проверить логи
sudo journalctl -u prysmd -f -o cat

# проверить статус
curl localhost:26657/status

# проверить баланс
prysmd q bank balances &amp;lt;address&amp;gt;

# проверить pubkey валидатора
prysmd tendermint show-validator

# проверить валидатора
prysmd query staking validator &amp;lt;valoper_address&amp;gt;
prysmd query staking validators --limit 1000000 -o json | jq &amp;#x27;.validators[] | select(.description.moniker==&amp;quot;&amp;lt;name_moniker&amp;gt;&amp;quot;)&amp;#x27; | jq

# проверка информации по TX_HASH
prysmd query tx &amp;lt;TX_HASH&amp;gt;

# параметры сети
prysmd q staking params
prysmd q slashing params

# проверить сколько блоков пропущено валидатором и с какого блока актив
prysmd q slashing signing-info $(prysmd tendermint show-validator)

# проверить slashing
prysmd q slashing signing-info $(prysmd tendermint show-validator)

# узнать транзакцию создания валидатора (заменить свой valoper_address)
prysmd query txs --events=&amp;#x27;create_validator.validator=&amp;lt;your_valoper_address&amp;gt;&amp;#x27; -o=json | jq .txs[0].txhash -r

# просмотр активного сета
prysmd q staking validators -o json --limit=1000 \
| jq &amp;#x27;.validators[] | select(.status==&amp;quot;BOND_STATUS_BONDED&amp;quot;)&amp;#x27; \
| jq -r &amp;#x27;.tokens + &amp;quot; - &amp;quot; + .description.moniker&amp;#x27; \
| sort -gr | nl

# просмотр неактивного сета
prysmd q staking validators -o json --limit=1000 \
| jq &amp;#x27;.validators[] | select(.status==&amp;quot;BOND_STATUS_UNBONDED&amp;quot;)&amp;#x27; \
| jq -r &amp;#x27;.tokens + &amp;quot; - &amp;quot; + .description.moniker&amp;#x27; \
| sort -gr | nl&lt;/pre&gt;
  &lt;p id=&quot;nXYz&quot;&gt;&lt;strong&gt;Транзакции&lt;/strong&gt;&lt;/p&gt;
  &lt;pre data-lang=&quot;bash&quot; id=&quot;5tlE&quot;&gt;# собрать комиссионные + реварды
prysmd tx distribution withdraw-rewards &amp;lt;valoper_address&amp;gt; --from &amp;lt;name_wallet&amp;gt; --fees 5000uprysm --commission -y

# заделегировать себе в стейк еще (так отправляется 1 монетa)
prysmd tx staking delegate &amp;lt;valoper_address&amp;gt; 1000000uprysm --from &amp;lt;name_wallet&amp;gt; --fees 5000uprysm -y

# ределегирование на другого валидатора
prysmd tx staking redelegate &amp;lt;src-validator-addr&amp;gt; &amp;lt;dst-validator-addr&amp;gt; 1000000uprysm --from &amp;lt;name_wallet&amp;gt; --fees 5000uprysm -y

# unbond 
prysmd tx staking unbond &amp;lt;addr_valoper&amp;gt; 1000000uprysm --from &amp;lt;name_wallet&amp;gt; --fees 5000uprysm -y

# отправить монеты на другой адрес
prysmd tx bank send &amp;lt;name_wallet&amp;gt; &amp;lt;address&amp;gt; 1000000uprysm --fees 5000uprysm -y

# выбраться из тюрьмы
prysmd tx slashing unjail --from &amp;lt;name_wallet&amp;gt; --fees 5000uprysm -y&lt;/pre&gt;
  &lt;p id=&quot;zl2g&quot;&gt;&lt;strong&gt;Работа с кошельками&lt;/strong&gt;&lt;/p&gt;
  &lt;pre data-lang=&quot;bash&quot; id=&quot;WxXj&quot;&gt;# вывести список кошельков
prysmd keys list

# показать ключ аккаунта
prysmd keys show &amp;lt;name_wallet&amp;gt; --bech acc

# показать ключ валидатора
prysmd keys show &amp;lt;name_wallet&amp;gt; --bech val

# показать ключ консенсуса
prysmd keys show &amp;lt;name_wallet&amp;gt; --bech cons

# запрос учетной записи
prysmd q auth account $(prysmd keys show &amp;lt;name_wallet&amp;gt; -a) -o text

# удалить кошелек
prysmd keys delete &amp;lt;name_wallet&amp;gt;&lt;/pre&gt;
  &lt;p id=&quot;Qfld&quot;&gt;&lt;strong&gt;Удалить ноду&lt;/strong&gt;&lt;/p&gt;
  &lt;pre data-lang=&quot;bash&quot; id=&quot;1m3f&quot;&gt;systemctl stop prysmd &amp;amp;&amp;amp; \
systemctl disable prysmd &amp;amp;&amp;amp; \
rm /etc/systemd/system/prysmd.service &amp;amp;&amp;amp; \
systemctl daemon-reload &amp;amp;&amp;amp; \
cd $HOME &amp;amp;&amp;amp; \
rm -rf .prysm prysm &amp;amp;&amp;amp; \
rm -rf $(which prysmd)&lt;/pre&gt;
  &lt;p id=&quot;fYh0&quot;&gt;&lt;strong&gt;ГОВЕРНАНС&lt;/strong&gt;&lt;/p&gt;
  &lt;pre data-lang=&quot;bash&quot; id=&quot;6bQe&quot;&gt;# список proposals
prysmd q gov proposals

# посмотреть результат голосования
prysmd q gov proposals --voter &amp;lt;ADDRESS&amp;gt;

# проголосовать за предложение 
prysmd tx gov vote 1 yes --from &amp;lt;name_wallet&amp;gt; --fees 5000uprysm

# внести депозит в предложение
prysmd tx gov deposit 1 1000000uprysm --from &amp;lt;name_wallet&amp;gt; --fees 5000uprysm

# создать предложение
prysmd tx gov submit-proposal --title=&amp;quot;Randomly reward&amp;quot; --description=&amp;quot;Reward 10 testnet participants who completed more than 3 tasks&amp;quot; --type=&amp;quot;Text&amp;quot; --deposit=&amp;quot;11000000grain&amp;quot; --from=&amp;lt;name_wallet&amp;gt; --fees 5000uprysm&lt;/pre&gt;
  &lt;p id=&quot;chat-messages-932182862663389245&quot;&gt;&lt;strong&gt;Peers and RPC&lt;/strong&gt;&lt;/p&gt;
  &lt;pre data-lang=&quot;bash&quot; id=&quot;8ebC&quot;&gt;FOLDER=.prysm

# узнать свой peer
PORTR=$(grep -A 3 &amp;quot;\[p2p\]&amp;quot; ~/$FOLDER/config/config.toml | egrep -o &amp;quot;:[0-9]+&amp;quot;) &amp;amp;&amp;amp; \
echo $(prysmd tendermint show-node-id)@$(wget -qO- eth0.me)$PORTR

# узнать порт RPC
echo -e &amp;quot;\033[0;32m$(grep -A 3 &amp;quot;\[rpc\]&amp;quot; ~/$FOLDER/config/config.toml | egrep -o &amp;quot;:[0-9]+&amp;quot;)\033[0m&amp;quot;

# проверка количества пиров
PORT=
curl -s http://localhost:$PORT/net_info | jq -r &amp;#x27;.result.peers[] | &amp;quot;\(.node_info.id)@\(.remote_ip):\(.node_info.listen_addr | split(&amp;quot;:&amp;quot;)[2])&amp;quot;&amp;#x27; | wc -l

# cписок моникеров подключенных пиров
curl -s http://localhost:$PORT/net_info | jq &amp;#x27;.result.peers[].node_info.moniker&amp;#x27;

# Проверка prevotes/precommits. Пригодится при обновах
curl -s localhost:$PORT/consensus_state | jq &amp;#x27;.result.round_state.height_vote_set[0].prevotes_bit_array&amp;#x27; &amp;amp;&amp;amp; \
curl -s localhost:$PORT/consensus_state | jq &amp;#x27;.result.round_state.height_vote_set[0].precommits_bit_array&amp;#x27;

# check prevote of your validator
curl -s localhost:$PORT/consensus_state -s | grep $(curl -s localhost:26657/status | jq -r .result.validator_info.address[:12])&lt;/pre&gt;
  &lt;figure id=&quot;6uUF&quot; class=&quot;m_original&quot; data-caption-align=&quot;center&quot;&gt;
    &lt;img src=&quot;https://img3.teletype.in/files/e9/28/e92895ca-f71d-497c-9fd2-2e7eeedd5303.png&quot; width=&quot;278&quot; /&gt;
    &lt;figcaption&gt;&lt;strong&gt;Поддержим природу вместе: 0xa7476EC14cD663C742d527113638C77a1631Cc89 cosmos1m2mm7kzvw6m3464h94ryqg8xvr6tyeyyecppnq&lt;/strong&gt;&lt;/figcaption&gt;
  &lt;/figure&gt;

</content></entry></feed>