forked from solana-labs/solana-program-library
-
Notifications
You must be signed in to change notification settings - Fork 4
/
Copy pathsetup-stake-pool.sh
executable file
·77 lines (61 loc) · 2.57 KB
/
setup-stake-pool.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
#!/usr/bin/env bash
# Script to setup a stake pool from scratch. Please modify the parameters to
# create a stake pool to your liking!
cd "$(dirname "$0")" || exit
command_args=()
sol_amount=$1
###################################################
### MODIFY PARAMETERS BELOW THIS LINE FOR YOUR POOL
###################################################
# Epoch fee, assessed as a percentage of rewards earned by the pool every epoch,
# represented as `numerator / denominator`
command_args+=( --epoch-fee-numerator 1 )
command_args+=( --epoch-fee-denominator 100 )
# Withdrawal fee for SOL and stake accounts, represented as `numerator / denominator`
command_args+=( --withdrawal-fee-numerator 2 )
command_args+=( --withdrawal-fee-denominator 100 )
# Deposit fee for SOL and stake accounts, represented as `numerator / denominator`
command_args+=( --deposit-fee-numerator 3 )
command_args+=( --deposit-fee-denominator 100 )
command_args+=( --referral-fee 0 ) # Percentage of deposit fee that goes towards the referrer (a number between 0 and 100, inclusive)
command_args+=( --max-validators 2350 ) # Maximum number of validators in the stake pool, 2350 is the current maximum possible
# (Optional) Deposit authority, required to sign all deposits into the pool.
# Setting this variable makes the pool "private" or "restricted".
# Uncomment and set to a valid keypair if you want the pool to be restricted.
#command_args+=( --deposit-authority keys/authority.json )
###################################################
### MODIFY PARAMETERS ABOVE THIS LINE FOR YOUR POOL
###################################################
keys_dir=keys
spl_stake_pool=spl-stake-pool
# Uncomment to use a local build
#spl_stake_pool=../../../target/debug/spl-stake-pool
mkdir -p $keys_dir
create_keypair () {
if test ! -f "$1"
then
solana-keygen new --no-passphrase -s -o "$1"
fi
}
echo "Creating pool"
stake_pool_keyfile=$keys_dir/stake-pool.json
validator_list_keyfile=$keys_dir/validator-list.json
mint_keyfile=$keys_dir/mint.json
reserve_keyfile=$keys_dir/reserve.json
create_keypair $stake_pool_keyfile
create_keypair $validator_list_keyfile
create_keypair $mint_keyfile
create_keypair $reserve_keyfile
set -ex
$spl_stake_pool \
create-pool \
"${command_args[@]}" \
--pool-keypair "$stake_pool_keyfile" \
--validator-list-keypair "$validator_list_keyfile" \
--mint-keypair "$mint_keyfile" \
--reserve-keypair "$reserve_keyfile"
set +ex
echo "Depositing SOL into stake pool"
stake_pool_pubkey=$(solana-keygen pubkey "$stake_pool_keyfile")
set -ex
$spl_stake_pool deposit-sol "$stake_pool_pubkey" "$sol_amount"