From 9e16e4825ab735a48566e05509c91a6c3b177d18 Mon Sep 17 00:00:00 2001 From: diman Date: Wed, 6 Apr 2022 16:19:43 +0300 Subject: [PATCH] - add balance management scripts - add URL to all scripts --- scripts/README.md | 63 ++++++++++++++++++++++++++++++--- scripts/balance-sol.sh | 13 +++++++ scripts/balance-token-usdc.sh | 5 +++ scripts/balance-token.sh | 15 ++++++++ scripts/claim.sh | 6 +++- scripts/rebalance-sol.sh | 37 +++++++++++++++++++ scripts/rebalance-token-usdc.sh | 7 ++++ scripts/rebalance-token.sh | 38 ++++++++++++++++++++ scripts/stake.sh | 6 +++- 9 files changed, 183 insertions(+), 7 deletions(-) create mode 100755 scripts/balance-sol.sh create mode 100755 scripts/balance-token-usdc.sh create mode 100755 scripts/balance-token.sh create mode 100755 scripts/rebalance-sol.sh create mode 100755 scripts/rebalance-token-usdc.sh create mode 100755 scripts/rebalance-token.sh diff --git a/scripts/README.md b/scripts/README.md index 40bd454..3fbd285 100644 --- a/scripts/README.md +++ b/scripts/README.md @@ -1,28 +1,81 @@ +All this scripts support `$URL` variable for set another rpc end-point (default is api.mainnet-beta.solana.com). + +Examples: +``` +URL=https://localhost:8899/ ./rebalance-sol.sh 0.1 +URL=https://free.rpcpool.com/ ./rebalance-sol.sh 0.1 +URL=https://solana-api.projectserum.com/ ./rebalance-sol.sh 0.1 + +``` + +# Raydium scripts + +For possible values for POOL use `../raydium ido --help` + ## stake.sh ``` ./stake.sh ``` -For possible values for POOL use `../raydium ido --help` ---- ## claim.sh ``` ./claim.sh ``` -For possible values for POOL use `../raydium ido --help` Claim is smart. It try to do all possible actions and doesn't do not needed actions. Though if you want the transactions looks like as the official site make it you could use optional flags for this. `../raydium ido claim --help` helps you. ---- +# Keypairs scripts ## keygen.sh -Restore your 100500 wallets from Phantom: ``` ./keygen.sh ``` +Restore your 100500 wallets from Phantom. + The results will be saved as `keys/[prefix]_[index]-[address].json` You need to use `solana` v9. This doesn't work with 10th version. + +# Balance management scripts + +## rebalance-sol.sh + +``` +./rebalance-sol.sh +``` + +`AIM` - the target value in SOLs in `keys/*.json` keypairs + +`VAULT` - path to vault keypair + +## rebalance-token.sh + +``` +./rebalance-token.sh +``` + +`TOKEN` - token mint address + +`AIM` - the target value in Tokens in `keys/*.json` wallets + +`VAULT` - path to vault keypair + +## rebalance-token-usdc.sh + +Just a helper for USDC rebalancing. + +``` +./rebalance-token-usdc.sh +``` + +`AIM` - the target value in Tokens in `keys/*.json` wallets + +`VAULT` - path to vault keypair + +## balance-*.sh + +They are like rebalance-* but only to show your accounts balances. `AIM` and `VAULT` aren't needed. + diff --git a/scripts/balance-sol.sh b/scripts/balance-sol.sh new file mode 100755 index 0000000..b15232b --- /dev/null +++ b/scripts/balance-sol.sh @@ -0,0 +1,13 @@ +#!/bin/bash + +if [[ -z ${URL} ]]; then + URL=mainnet-beta +fi + +fmt="%-45s%s\n" +for keypair in keys/*.json +do + address=$(solana address -k $keypair) + balance=$(solana -u $URL balance -k $keypair | grep -o '[0-9.]*') + printf "$fmt" $address $balance +done diff --git a/scripts/balance-token-usdc.sh b/scripts/balance-token-usdc.sh new file mode 100755 index 0000000..70e0f07 --- /dev/null +++ b/scripts/balance-token-usdc.sh @@ -0,0 +1,5 @@ +#!/bin/bash + +TOKEN=EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v + +./balance-token.sh $TOKEN diff --git a/scripts/balance-token.sh b/scripts/balance-token.sh new file mode 100755 index 0000000..41c9711 --- /dev/null +++ b/scripts/balance-token.sh @@ -0,0 +1,15 @@ +#!/bin/bash + +TOKEN=$1 + +if [[ -z ${URL} ]]; then + URL=mainnet-beta +fi + +fmt="%-45s%s\n" +for keypair in keys/*.json +do + address=$(solana address -k $keypair) + balance=$(spl-token -u $URL balance $TOKEN --owner $keypair) + printf "$fmt" $address $balance +done diff --git a/scripts/claim.sh b/scripts/claim.sh index 09830da..91caf58 100755 --- a/scripts/claim.sh +++ b/scripts/claim.sh @@ -4,7 +4,11 @@ raydium_cli=../raydium POOL=$1 +if [[ -z ${URL} ]]; then + URL=mainnet-beta +fi + for keypair in keys/*.json do - $raydium_cli ido $POOL claim -k $keypair + $raydium_cli ido $POOL claim -k $keypair -u $URL done diff --git a/scripts/rebalance-sol.sh b/scripts/rebalance-sol.sh new file mode 100755 index 0000000..61c12ca --- /dev/null +++ b/scripts/rebalance-sol.sh @@ -0,0 +1,37 @@ +#!/bin/bash + +AIM=$1 +VAULT=$2 + +if [[ -z ${URL} ]]; then + URL=mainnet-beta +fi + +for keypair in keys/*.json +do + address=$(solana address -k $keypair) + balance=$(solana -u $URL balance -k $keypair | grep -o '[0-9.]*') + if (( $(echo "$balance < $AIM" | bc -l) )); then + amount=$(echo "$AIM - $balance" | bc -l) + from=$VAULT + to=$keypair + job=Funding + elif (( $(echo "$balance > $AIM" | bc -l) )); then + amount=$(echo "$balance - $AIM" | bc -l) + from=$keypair + to=$VAULT + job=Refunding + else + amount=0 + job="Nothing to do" + fi + if [[ "$amount" == .* ]]; then + amount="0$amount" + fi + if [[ "$amount" == 0 ]]; then + echo $address: $balance SOL. $job + continue + fi + echo $address: $balance SOL. $job $amount SOL... + solana -u $URL transfer -k $from $to $amount --fee-payer $VAULT --allow-unfunded-recipient +done diff --git a/scripts/rebalance-token-usdc.sh b/scripts/rebalance-token-usdc.sh new file mode 100755 index 0000000..ddfb86a --- /dev/null +++ b/scripts/rebalance-token-usdc.sh @@ -0,0 +1,7 @@ +#!/bin/bash + +TOKEN=EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v +AIM=$1 +VAULT=$2 + +./rebalance-token.sh $TOKEN $AIM $VAULT diff --git a/scripts/rebalance-token.sh b/scripts/rebalance-token.sh new file mode 100755 index 0000000..e33bbf4 --- /dev/null +++ b/scripts/rebalance-token.sh @@ -0,0 +1,38 @@ +#!/bin/bash + +TOKEN=$1 +AIM=$2 +VAULT=$3 + +if [[ -z ${URL} ]]; then + URL=mainnet-beta +fi + +for keypair in keys/*.json +do + address=$(solana address -k $keypair) + balance=$(spl-token -u $URL balance $TOKEN --owner $keypair) + if (( $(echo "$balance < $AIM" | bc -l) )); then + amount=$(echo "$AIM - $balance" | bc -l) + from=$VAULT + to=$keypair + job=Funding + elif (( $(echo "$balance > $AIM" | bc -l) )); then + amount=$(echo "$balance - $AIM" | bc -l) + from=$keypair + to=$VAULT + job=Refunding + else + amount=0 + job="Nothing to do" + fi + if [[ "$amount" == .* ]]; then + amount="0$amount" + fi + if [[ "$amount" == 0 ]]; then + echo $address: $balance Tokens. $job + continue + fi + echo $address: $balance Tokens. $job $amount Tokens... + spl-token -u $URL transfer $TOKEN $amount $to --owner $from --fee-payer $VAULT --allow-unfunded-recipient --fund-recipient +done diff --git a/scripts/stake.sh b/scripts/stake.sh index cd9fa4c..4c1b158 100755 --- a/scripts/stake.sh +++ b/scripts/stake.sh @@ -4,7 +4,11 @@ raydium_cli=../raydium POOL=$1 +if [[ -z ${URL} ]]; then + URL=mainnet-beta +fi + for keypair in keys/*.json do - $raydium_cli ido $POOL stake MAX -k $keypair + $raydium_cli ido $POOL stake MAX -k $keypair -u $URL done