August 16

Установка ноды Solana Jito + ProjectX Relayer

Я решил создать руководство по установке ноды Solana на Jito клиенте с реле от ProjectX. По состоянию на 16 августа 2024 года, проект показал хорошую доходность, выполнив 17 эпох. Самая низкая доходность составила 5.19 SOL, а самая высокая — 10.77 SOL. Выплаты распределяются в соотношении 75% на 25%. Платежи поступают своевременно, в начале следующей эпохи, что мне особенно нравится, в отличие от некоторых других проектов, в которых я участвовал ранее.

Приступим к установки.

1) Необходимо зарегестрироваться в личном кабинете. (В ссылке добавлена моя рефка, если не хотите использовать ее, можете регистрироваться без нее). Во вкладке Profile указываем свой телеграм и адрес кошелька на который планируете получать награды. Далее во вкладке Validators прописываем

Name - имя ноды

Identity - паблик кей валидатора

Payout - адрес кошелька куда будут приходить награды.

Не забываем нажать кнопку сохранить.

2) Приступаем к установки Jito клиента. Если клиент Jito стоит, то можно пропустить этот пункт. Вам нужно будет только заменить relayer-url на локальный командой ~/.local/share/solana/install/active_release/bin/solana-validator --ledger /root/ledger/ set-relayer-config --relayer-url http://127.0.0.1:11226 и приступать к установки самого реле (Пункт 5)

Выполняем ряд команд:

sudo apt-get update
sudo apt-get upgrade
sh -c "$(curl -sSfL https://release.jito.wtf/v1.18.22-jito/install)"
export PATH="$HOME/.local/share/solana/install/active_release/bin:$PATH"
solana config set --url https://api.mainnet-beta.solana.com
solana config set --keypair $HOME/mainnet-validator-keypair.json
bash <(curl -s https://raw.githubusercontent.com/DOUBLE-TOP/guides/main/solana/tune.sh)
Проверяем командой баланс, должен отобразиться если все хорошо

solana balance

После создаем сервисник одной командой

cat > /etc/systemd/system/solana.service<<EOF
[Unit]
Description=Solana MB node
After=network.target syslog.target
StartLimitIntervalSec=0
[Service]
User=$USER
Type=simple
Restart=always
RestartSec=1
LimitNOFILE=1024000
Environment="SOLANA_METRICS_CONFIG=host=https://metrics.solana.com:8086,db=mainnet-beta,u=mainnet-beta_write,p=password"
ExecStart=$HOME/.local/share/solana/install/active_release/bin/solana-validator \\
--entrypoint entrypoint.mainnet-beta.solana.com:8001 \\
--entrypoint entrypoint2.mainnet-beta.solana.com:8001 \\
--entrypoint entrypoint3.mainnet-beta.solana.com:8001 \\
--entrypoint entrypoint4.mainnet-beta.solana.com:8001 \\
--entrypoint entrypoint5.mainnet-beta.solana.com:8001 \\
--known-validator 7Np41oeYqPefeNQEHSv1UDhYrehxin3NStELsSKCT4K2 \\
--known-validator GdnSyH3YtwcxFvQrVVJMm1JhTS4QVX7MFsX56uJLUfiZ \\
--known-validator DE1bawNcRJB9rVm3buyMVfr8mBEoyyu73NBovf2oXJsJ \\
--known-validator CakcnaRDHka2gXyfbEd2d3xsvkJkqsLw2akB3zsN1D2S \\
--expected-genesis-hash 5eykt4UsFv8P8NJdTREpY1vzqKqZKvdpKuc147dw2N9d \\
--only-known-rpc \\
--wal-recovery-mode skip_any_corrupted_record \\
--identity $HOME/mainnet-validator-keypair.json \\
--vote-account $HOME/vote-account-keypair.json \\
--ledger $HOME/ledger \\
--limit-ledger-size 50000000 \\
--dynamic-port-range 8000-8020 \\
--log $HOME/solana.log \\
--full-snapshot-interval-slots 25000 \\
--incremental-snapshot-interval-slots 500 \\
--accounts-hash-interval-slots 500 \\
--maximum-full-snapshots-to-retain 1 \\
--maximum-incremental-snapshots-to-retain 2 \\
--maximum-local-snapshot-age 2500 \\
--full-rpc-api \\
--private-rpc \\
--use-snapshot-archives-at-startup when-newest \\
--no-snapshot-fetch \\
--tip-payment-program-pubkey T1pyyaTNZsKv2WcRAB8oVnk93mLJw2XzjtVYqCsaHqt \\
--tip-distribution-program-pubkey 4R3gSG8BpU4t19KYj8CfnbtRpnT8gtk4dvTHxVRwc2r7 \\
--merkle-root-upload-authority GZctHpWXmsZC1YHACTGGcHhYxjdRqQvTpYkb9LMvxDib \\
--commission-bps 1000 \\
--relayer-url http://127.0.0.1:11226 \\
--block-engine-url https://frankfurt.mainnet.block-engine.jito.wtf \\
--shred-receiver-address 145.40.93.84:1002 \\
--rpc-port 8899
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
[Install]
WantedBy=multi-user.target
EOF

Далее выполняем:

sudo systemctl daemon-reload
sudo systemctl enable solana

3) Скачиваем спэп через Snapshot Finder

sudo apt-get update \
&& sudo apt-get install python3-venv git -y \
&& git clone https://github.com/c29r3/solana-snapshot-finder.git \
&& cd solana-snapshot-finder \
&& python3 -m venv venv \
&& source ./venv/bin/activate \
&& pip3 install -r requirements.txt && cd $HOME

source $HOME/solana-snapshot-finder/venv/bin/activate
python3 $HOME/solana-snapshot-finder/snapshot-finder.py --snapshot_path $HOME/ledger

ждем окончания загрузки снэпа и его распаковки примерно 10+- минут и стартуем ноду

sudo systemctl solana forge

4) Настраиваем ротацию логов для forge

cat > logrotate.sol <<EOF
$HOME/solana.log {
rotate 3
daily
missingok
compress
compresscmd /usr/bin/bzip2
compressext .bz2
postrotate
systemctl kill -s USR1 solana.service
endscript
}
EOF

sudo cp logrotate.sol /etc/logrotate.d/sol

Проверяем все ли нормально командой

solana-validator monitor

должно быть так как на скрине

Это означает, что леджер начал загружаться и ждем теперь когда нода начнет догонять высоту. Проверить это можно командой:

solana catchup --our-localhost --follow --log

Будет так как на скрине.

Ждем когда нода догонит и после этого приступаем к установки реле.

5) Установка ProjectX Relayer. Выполняем рад команд:

sudo apt update && sudo apt upgrade -y
sudo apt install libssl-dev libudev-dev pkg-config zlib1g-dev llvm clang cmake make libprotobuf-dev protobuf-compiler -y
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y
source $HOME/.cargo/env

cd $HOME
git clone https://github.com/projectxsol/lite-relayer.git
cd lite-relayer
git fetch
git submodule update --init --recursive
cargo build --release --bin transaction-relayer

Генерируем ключи для реле, их в джито регистрировать не нужно. Не забываем записать их.

mkdir -p $HOME/.relayer-config
solana-keygen new -o $HOME/.relayer-config/relayer.json
openssl genrsa -out $HOME/.relayer-config/auth 1024
openssl rsa -in $HOME/.relayer-config/auth -pubout -out $HOME/.relayer-config/auth.pub

Далее создаем сервисник для реле. Там где $X_BLOCK_ENGINE нужно заменить на нужный.

New york - http://ny.block-engine.com:11227
Falkenstein - http://de.block-engine.com:11227
Tokyo - http://jp.block-engine.com:11227

tee $HOME/relayer.service > /dev/null <<EOF
[Unit]
Description=X Transaction Relayer
Requires=network-online.target
After=network-online.target
[Service]
User=$USER
Type=simple
ExecStart=$HOME/lite-relayer/target/release/transaction-relayer \
--keypair-path $HOME/.relayer-config/relayer.json \
--signing-key-pem-path $HOME/.relayer-config/auth \
--verifying-key-pem-path $HOME/.relayer-config/auth.pub \
--webserver-bind-addr 127.0.0.1:5050 \
--grpc-bind-ip 127.0.0.1 \
--x-block-engine-url $X_BLOCK_ENGINE
RestartSec=10
Restart=on-failure
[Install]
WantedBy=multi-user.target
EOF

sudo mv $HOME/relayer.service /etc/systemd/system/

sudo systemctl daemon-reload
sudo systemctl enable relayer.service
sudo systemctl restart relayer

проверяем логи реле, должно быть без ошибок.

sudo journalctl -u relayer.service -f

Через 5 минут проверяем конект на сайте. И ждем награды.

По всем вопросам, можете не стесняться и мне писать https://t.me/toha_crypto буду рад помочь, помогу поставить или объясню.