Highly important - validator MUST be running with these keys before any requests will be done to RPC
--account-index program-id \
--account-index-include-key AddressLookupTab1e1111111111111111111111111 \
su - relayer
mkdir $HOME/.keys
openssl genrsa --out $HOME/.keys/private.pem
openssl rsa --in $HOME/.keys/private.pem --pubout --out $HOME/.keys/public.pem
solana-keygen new --no-bip39-passphrase --outfile $HOME/.keys/relayer-keypair.json
Ask to add this key to trusted in Jito discord https://discord.com/channels/938287290806042626/1035260107602272317 (https://discord.gg/jito)
curl https://sh.rustup.rs -sSf | sh
source "$HOME/.cargo/env"
cd $HOME
git clone https://github.com/jito-foundation/jito-relayer.git
cd $HOME/jito-relayer
git submodule update -i -r
# You may need git checkout to set necessary version
cargo b --release
$HOME/jito-relayer/target/release/jito-transaction-relayer --version
sudo tee /etc/systemd/system/relayer.service > /dev/null <<EOF
[Unit]
Description=Solana transaction relayer
Requires=network-online.target chrony.service
After=network-online.target chrony.service
[Service]
Environment="RUST_LOG=info"
Environment="SOLANA_METRICS_CONFIG=host=http://metrics.jito.wtf:8086,db=relayer,u=relayer-operators,p=jito-relayer-write"
Environment="BLOCK_ENGINE_URL=https://ny.mainnet.block-engine.jito.wtf"
Environment="PUBLIC_IP=$(wget -q -O - ipinfo.io/ip)"
Environment="GRPC_BIND_IP=127.0.0.1"
Environment="RELAYER_PATH=$($HOME/jito-relayer/target/release/jito-transaction-relayer)"
ConditionPathExists=$HOME/.keys/relayer-keypair.json
ConditionPathExists=$HOME/.keys/private.pem
ConditionPathExists=$HOME/.keys/public.pem
Type=exec
User=$USER
Restart=on-failure
# I had some issues with variable so temporary put full PATH for binary
ExecStart=/home/relayer/jito-relayer/target/release/jito-transaction-relayer \
--keypair-path=$HOME/.keys/relayer-keypair.json \
--signing-key-pem-path=$HOME/.keys/private.pem \
--verifying-key-pem-path=$HOME/.keys/public.pem \
--block-engine-url \${BLOCK_ENGINE_URL} \
--public-ip \${PUBLIC_IP} \
--grpc-bind-ip \${GRPC_BIND_IP} # seems 127.0.0.1 should be enough for private mode
[Install]
WantedBy=multi-user.target
EOF
sudo ufw allow 11228,11229/udp
# Update RELAYER_URL
Environment="RELAYER_URL=http://127.0.0.1:11226"
# Add most important keys
--account-index program-id \
--account-index-include-key AddressLookupTab1e1111111111111111111111111
# Add --full-rpc-api if you don't have it
Also you can use
# https://jito-labs.gitbook.io/mev/searcher-resources/block-engine/mainnet-addresses
Environment="RELAYER_URL=http://ny.mainnet.relayer.jito.wtf:8100"
and later change it with
solana-validator -l /path/to/solana/ledger/ set-relayer-config --relayer-url http://127.0.0.1:11226