Skip to content

Instantly share code, notes, and snippets.

@buffalu

buffalu/rpc.md Secret

Last active January 31, 2024 09:05
Show Gist options
  • Save buffalu/db6458d4f6a0b70ac303027b61a636af to your computer and use it in GitHub Desktop.
Save buffalu/db6458d4f6a0b70ac303027b61a636af to your computer and use it in GitHub Desktop.

RPC

Starting RPC node

sys-tuner

$ sudo ./solana-sys-tuner --user $(whoami)

swap

It might help to create swapfile. This needs to be run every boot

sudo fallocate -l 128G /swap
sudo chmod 600 /swap
sudo mkswap /swap
sudo swapon /swap

# double check swap
sudo swapon --show

rpc start commands

./solana-validator \
		--account-index-exclude-key kinXdEcpDQeHPEuQnqmUgtYykqKGVFq6CeVX5iAHJq6 \
		--account-index-exclude-key TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA \
		--no-voting \
		--identity ~/.config/solana/id.json \
			--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 \
		--trusted-validator ChorusmmK7i1AxXeiTtQgQZhQNiXYU84ULeaYF1EH15n \
	    --trusted-validator Certusm1sa411sMpV9FPqU5dXAYhmmhygvxJ23S6hJ24 \
	    --trusted-validator CakcnaRDHka2gXyfbEd2d3xsvkJkqsLw2akB3zsN1D2S \
	    --trusted-validator DE1bawNcRJB9rVm3buyMVfr8mBEoyyu73NBovf2oXJsJ \
	    --trusted-validator GdnSyH3YtwcxFvQrVVJMm1JhTS4QVX7MFsX56uJLUfiZ \
      --trusted-validator FUyx2W6wDt7u363QgQRWQYuytE5uJWZLGJpuVh3RDiCa \
			--trusted-validator 6cgsK8ph5tNUCiKG5WXLMZFX1CoL4jzuVouTPBwPC8fk \
		--limit-ledger-size \
	  --enable-cpi-and-log-storage \
	  --enable-rpc-transaction-history \
		--expected-genesis-hash 5eykt4UsFv8P8NJdTREpY1vzqKqZKvdpKuc147dw2N9d \
		--bind-address 0.0.0.0 \
		--rpc-port 8899 \
    --rpc-pubsub-enable-block-subscription \
		--accounts /tmp/ramdisk/accounts \
		--ledger /tmp/ramdisk \
		# --skip-poh-verify \
		# --log - \
		# --minimal-snapshot-download-speed 10000 \
		# --accounts /solana/ledger/accounts \
		# --ledger /solana/ledger \

Easy validation commands

HOST=127.0.0.1
RPC_URL=http://$HOST:8899
WS_URL=wss://$HOST:8900

GetSlot

returns current slot number of RPC server. Check against https://solanabeach.io/ as gut-check to see if it's relatively correct.

curl $RPC_URL -X POST -H "Content-Type: application/json" -d '
  {"jsonrpc":"2.0","id":1, "method":"getSlot", "params": [
      {
        "commitment": "processed"
      }
    ]}
'

curl $RPC_URL -X POST -H "Content-Type: application/json" -d '
  {"jsonrpc":"2.0","id":1, "method":"getSlot"}
'

Compare processed + confirmed time

while true; do 
processed_slot=$(curl -s $RPC_URL -X POST -H "Content-Type: application/json" -d '
  {"jsonrpc":"2.0","id":1, "method":"getSlot", "params": [
      {
        "commitment": "processed"
      }
    ]}
' | jq '.result')
confirmed_slot=$(curl -s $RPC_URL -X POST -H "Content-Type: application/json" -d '
  {"jsonrpc":"2.0","id":1, "method":"getSlot", "params": [
      {
        "commitment": "confirmed"
      }
    ]}
' | jq '.result')

echo "processed: $processed_slot"
echo "confirmed: $confirmed_slot"
echo ""

sleep 0.2; 
done;

GetLeaderSchedule

curl $RPC_URL -X POST -H "Content-Type: application/json" -d '
  {"jsonrpc":"2.0","id":1, "method":"getLeaderSchedule"}
'

Websocket Subscriptions

Requires wscat (npm install -g wscat)

wscat --connect $WS_URL

Slot Updates

{"jsonrpc":"2.0", "id":1, "method":"slotSubscribe"}

Slot Updates (Unstable)

{"jsonrpc":"2.0", "id":1, "method":"slotsUpdatesSubscribe"}

Block Updates

{"jsonrpc": "2.0", "id": "1", "method": "blockSubscribe", "params": ["all", {"commitment": "confirmed"}]}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment