May 15, 2024

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

Гайд НЕ АКТУАЛЬНЫЙ Я УШЕЛ В НОВЫЙ ПУЛ

https://teletype.in/@solanamb/projectx

Регистрируемся в ЛИЧНОМ КАБИНЕТЕ

в ссылке зашита моя рефка, я получу за нее 5%.

Добавляем свой Identity, кошелёк для выплат.

1) Подкладываем ключи на сервер.

mainnet-validator-keypair.json vote-account-keypair.json

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

sudo apt-get update
sudo apt-get upgrade

sh -c "$(curl -sSfL https://release.jito.wtf/v1.17.34-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

3) Запускаем систюнер

bash <(curl -s https://raw.githubusercontent.com/DOUBLE-TOP/guides/main/solana/tune.sh)

4) Проверяем, должен отобразиться ваш баланс

solana balance

5) Создаем сервис для запуска ноды

cat > /etc/systemd/system/forge.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 10000 \\ --relayer-url http://frankfurt.mainnet.relayer.jito.wtf:8100 \\ --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 forge

6) Скачиваем спэп через 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 restart forge

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

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

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

sudo logrotate -f /etc/logrotate.d/sol

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

solana-validator monitor

должно быть так

Ждем когда нода начнет догонять.

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

Посмотреть логи можно командой:

tail -f solana.log

8) Устанавливаем Relayer

curl https://sh.rustup.rs -sSf | sh
source $HOME/.cargo/env
rustup component add rustfmt
rustup update
sudo apt-get update
sudo apt-get install libssl-dev libudev-dev pkg-config zlib1g-dev llvm clang cmake make libprotobuf-dev protobuf-compiler

Склонировать репозиторий

git clone https://github.com/solana-forge/forge-relayer.git
cd forge-relayer
git submodule update -i -r
cargo build -r --bin transaction-relayer
git fetch
git checkout dd132e98a513c1fce568e0322a6d62021fb87d1f
git submodule update -i -r
cargo build -r --bin transaction-relayer
~/forge-relayer/target/release/transaction-relayer -V

версия должна быть 0.1.14

Сгенерировать ключи (сохраните мнемоники и адрес кошелька relayer.json - это будет ваш адрес релеера).

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

Ключ нужно будет прописать в кабинете и поставить галочку или снять ее если Вы хотите работать без сэндвичей. (смотри скрин)

Теперь нужно создать сервис-файл

(! Предварительно поставьте адреса блок-энжинов из списка !)

Список релееров блок-энжинов для сервис-файла

http://tokyo.solanaforge.xyz

http://la.solanaforge.xyz

http://miami.solanaforge.xyz

http://ams.solanaforge.xyz

http://de.solanaforge.xyz

http://ru.solanaforge.xyz

Данный сервис-файл подразумевает, что у Вас висит gossip на порту 8000. Если Вы его меняли специально, поставьте порт gossip+9 (8000 + 9 = 8009) в строке tpu-quic-port

(скопируйте команду себе в текстовый редактор, поставьте свои значения и целиком запустите её в терминале)

смотрим на каком порту gossip

solana gossip | grep <identity>

ss -tunlp

tee $HOME/relayer.service > /dev/null <<EOF [Unit] Description=Forge Relayer After=network.target [Service] User=$USER Type=simple ExecStart=$HOME/forge-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 \ --tpu-port 11803 \ --tpu-quic-port 11809 \ --forge-block-engine-url http://de.solanaforge.xyz:11227 \ --grpc-bind-ip 127.0.0.1 \ --forge-block-engine-auth-service-url http://de.solanaforge.xyz:11227 RestartSec=10 Restart=on-failure LimitNOFILE=1000000 [Install] WantedBy=multi-user.target EOF

Далее переносим сервис-файл в systemd директорию

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

Теперь меняем основной сервис валидатора forge.service

Нужно добавить 2 строки :

--account-index program-id \
--account-index-include-key AddressLookupTab1e1111111111111111111111111

И изменить строку релеера на локалхост

--relayer-url http://127.0.0.1:11226 \

У меня выглядит это вот так: cat > /etc/systemd/system/forge.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 5000 \\ --accounts-hash-interval-slots 5000 \\ --maximum-full-snapshots-to-retain 1 \\ --maximum-incremental-snapshots-to-retain 2 \\ --maximum-local-snapshot-age 6500 \\ --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 10000 \\ --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 \\ --account-index program-id \\ --account-index-include-key AddressLookupTab1e1111111111111111111111111 \\ --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 relayer.service

solana-validator wait-for-restart-window && sudo systemctl restart forge && solana-validator monitor

После синка стартуем релеер

sudo systemctl start relayer.service

Логи реле

journalctl -fu relayer.service

посмотреть тпу

solana-validator contact-info

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