Установка ноды Solana Jito + Forge Relayer
Гайд НЕ АКТУАЛЬНЫЙ Я УШЕЛ В НОВЫЙ ПУЛ
https://teletype.in/@solanamb/projectx
Регистрируемся в ЛИЧНОМ КАБИНЕТЕ
в ссылке зашита моя рефка, я получу за нее 5%.
Добавляем свой Identity, кошелёк для выплат.
1) Подкладываем ключи на сервер.
mainnet-validator-keypair.json
vote-account-keypair.json
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
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
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
Сгенерировать ключи (сохраните мнемоники и адрес кошелька 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
Ключ нужно будет прописать в кабинете и поставить галочку или снять ее если Вы хотите работать без сэндвичей. (смотри скрин)
Теперь нужно создать сервис-файл
(! Предварительно поставьте адреса блок-энжинов из списка !)
Список релееров блок-энжинов для сервис-файла
Данный сервис-файл подразумевает, что у Вас висит gossip на порту 8000. Если Вы его меняли специально, поставьте порт gossip+9 (8000 + 9 = 8009) в строке tpu-quic-port
(скопируйте команду себе в текстовый редактор, поставьте свои значения и целиком запустите её в терминале)
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
--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