Last active
February 4, 2026 14:27
-
-
Save mgild/3a78caed02b27c272bcc6377ae50134b to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| #!/bin/bash | |
| # Transfer SWITCH tokens from operator to signer wallet | |
| # | |
| # Usage: ./setup-oracle-env.sh [--simulate] <operator> <signer> | |
| set -e | |
| SIMULATE=false | |
| if [[ "$1" == "--simulate" ]]; then | |
| SIMULATE=true | |
| shift | |
| fi | |
| OPERATOR="$1" | |
| SIGNER="$2" | |
| if [ -z "$OPERATOR" ] || [ -z "$SIGNER" ]; then | |
| echo "Usage: ./setup-oracle-env.sh [--simulate] <operator> <signer>" | |
| echo " --simulate Dry run (shows config and commands only)" | |
| echo " <operator> Operator account address" | |
| echo " <signer> Path to signer keypair" | |
| exit 1 | |
| fi | |
| RPC="${RPC:-https://api.mainnet-beta.solana.com}" | |
| SWITCH_MINT="SW1TCHLmRGTfW5xZknqQdpdarB8PD95sJYWpNp9TbFx" | |
| # === Derive signer pubkey === | |
| SIGNER_PUBKEY=$(solana-keygen pubkey "$SIGNER") | |
| # === Get operator's SWITCH ATA === | |
| OPERATOR_SWITCH_ATA=$(spl-token address --verbose --token "$SWITCH_MINT" --owner "$OPERATOR" 2>/dev/null | grep "Associated token address" | awk '{print $4}') | |
| if [ -z "$OPERATOR_SWITCH_ATA" ]; then | |
| echo "Error: Could not derive operator SWITCH ATA" | |
| exit 1 | |
| fi | |
| # === Fetch balance (raw) === | |
| UI_AMOUNT=$(spl-token balance --address "$OPERATOR_SWITCH_ATA" --url "$RPC") | |
| # SWITCH has 9 decimals | |
| AMOUNT=$(echo "$UI_AMOUNT * 1000000000" | bc | cut -d'.' -f1) | |
| # === Derive wallet ATA from signer pubkey === | |
| WALLET_SWITCH_ATA=$(spl-token address --verbose --token "$SWITCH_MINT" --owner "$SIGNER_PUBKEY" 2>/dev/null | grep "Associated token address" | awk '{print $4}') | |
| # === Print config === | |
| echo "=== Oracle Token Transfer ===" | |
| echo "MODE: $(if $SIMULATE; then echo 'SIMULATE'; else echo 'LIVE'; fi)" | |
| echo "OPERATOR: $OPERATOR" | |
| echo "SIGNER_PUBKEY: $SIGNER_PUBKEY" | |
| echo "RPC: $RPC" | |
| echo "OPERATOR_SWITCH_ATA: $OPERATOR_SWITCH_ATA" | |
| echo "WALLET_SWITCH_ATA: $WALLET_SWITCH_ATA" | |
| echo "AMOUNT: $UI_AMOUNT ($AMOUNT raw)" | |
| echo "" | |
| if $SIMULATE; then | |
| echo "=== Commands (not executed) ===" | |
| echo "" | |
| echo "# Step 1: Delegate token account" | |
| echo "jito-restaking-cli restaking operator operator-delegate-token-account \\" | |
| echo " $OPERATOR \\" | |
| echo " $SIGNER_PUBKEY \\" | |
| echo " $SWITCH_MINT \\" | |
| echo " --rpc-url $RPC \\" | |
| echo " --signer $SIGNER" | |
| echo "" | |
| echo "# Step 2: Transfer tokens" | |
| echo "jito-restaking-cli vault vault delegated-token-transfer \\" | |
| echo " $OPERATOR_SWITCH_ATA \\" | |
| echo " $WALLET_SWITCH_ATA \\" | |
| echo " $AMOUNT \\" | |
| echo " --rpc-url $RPC \\" | |
| echo " --signer $SIGNER" | |
| exit 0 | |
| fi | |
| # === Step 1: Delegate token account === | |
| echo "=== Step 1: Delegate token account ===" | |
| set -x | |
| jito-restaking-cli restaking operator operator-delegate-token-account \ | |
| "$OPERATOR" \ | |
| "$SIGNER_PUBKEY" \ | |
| "$SWITCH_MINT" \ | |
| --rpc-url "$RPC" \ | |
| --signer "$SIGNER" | |
| set +x | |
| echo "" | |
| # === Step 2: Transfer tokens === | |
| echo "=== Step 2: Transfer tokens ===" | |
| set -x | |
| jito-restaking-cli vault vault delegated-token-transfer \ | |
| "$OPERATOR_SWITCH_ATA" \ | |
| "$WALLET_SWITCH_ATA" \ | |
| "$AMOUNT" \ | |
| --rpc-url "$RPC" \ | |
| --signer "$SIGNER" | |
| set +x | |
| echo "" | |
| echo "=== Done ===" |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment