-
Notifications
You must be signed in to change notification settings - Fork 0
/
requestCommissionRateChange.sh
executable file
·110 lines (95 loc) · 3.27 KB
/
requestCommissionRateChange.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
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
#!/usr/bin/env bash
# -----------------------------------------------------------------------------
# This script can be used to request a commission rate change.
#
# Usage: ./requestCommissionRateChange.sh node_address(ip:port) pool_private_key new_commission_rate network_name
# -----------------------------------------------------------------------------
POOL_REGISTRY_AMITY_ADDRESS="0xa01b68fa4f947ea4829bebdac148d1f7f8a0be9a8fd5ce33e1696932bef05356"
POOL_REGISTRY_MAINNET_ADDRESS="0xa008e42a76e2e779175c589efdb2a0e742b40d8d421df2b93a8a0b13090c7cc8"
TOOLS_JAR=Tools.jar
return=0
function require_success()
{
if [ $1 -ne 0 ]
then
echo "Failed"
exit 1
fi
}
function capture_event()
{
payload={\"jsonrpc\":\"2.0\",\"method\":\"eth_getTransactionReceipt\",\"params\":[\"$1\"],\"id\":1}
response=`curl -s -X POST -H "Content-Type: application/json" --data "$payload" "$node_address"`
# ADSCommissionRateChangeRequested topic
if [[ "$response" =~ (\"0x414453436f6d6d697373696f6e526174654368616e6765526571756573746564\".+\"id) ]];
then
result=${BASH_REMATCH[0]:70}
echo "Request Id = $(( 16#${result:2:64}))"
else
echo "Error! Could not find event log for ADSCommissionRateChangeRequested."
exit 1
fi
}
function wait_for_receipt()
{
receipt="$1"
result="1"
while [ "1" == "$result" ]
do
echo " waiting..."
sleep 1
`./rpc.sh --check-receipt-status "$receipt" "$node_address"`
result=$?
if [ "2" == "$result" ]
then
echo "Error! Transaction failed."
exit 1
fi
done
}
function get_nonce(){
address="$1"
payload={\"jsonrpc\":\"2.0\",\"method\":\"eth_getTransactionCount\",\"params\":[\"$address\",\"latest\"],\"id\":1}
response=`curl -s -X POST -H "Content-Type: application/json" --data "$payload" "$node_address"`
nonce_hex="$(echo "$response" | egrep -oh 'result":"0x'"[[:xdigit:]]+" | egrep -oh "0x[[:xdigit:]]+")"
return=$(( 16#${nonce_hex:2} ))
}
if [ $# -ne 4 ]
then
echo "Invalid number of parameters."
echo "Usage: ./requestCommissionRateChange.sh node_address(ip:port) pool_private_key new_commission_rate network_name(amity/mainnet)"
exit 1
fi
node_address="$1"
private_key="$2"
new_commission_rate="$3"
network=$( echo "$4" | tr '[A-Z]' '[a-z]' )
pool_registry_address=
if [[ "$network" = "amity" ]]
then
pool_registry_address=${POOL_REGISTRY_AMITY_ADDRESS}
elif [[ "$network" = "mainnet" ]]
then
pool_registry_address=${POOL_REGISTRY_MAINNET_ADDRESS}
else
echo "Invalid network name. Only amity and mainnet networks are supported."
exit 1
fi
if [ ${#private_key} == 130 ]
then
private_key=${private_key::-64}
fi
pool_address="$(java -cp $TOOLS_JAR cli.KeyExtractor "$private_key")"
get_nonce "$pool_address"
nonce="$return"
echo "Using nonce $nonce"
echo "Requesting commission rate to be updated..."
# requestCommissionRateChange(int newCommissionRate)
callPayload="$(java -cp $TOOLS_JAR cli.ComposeCallPayload "requestCommissionRateChange" "$new_commission_rate")"
receipt=`./rpc.sh --call "$private_key" "$nonce" "$pool_registry_address" "$callPayload" "0" "$node_address"`
require_success $?
echo "Transaction hash: \"$receipt\". Waiting for transaction to complete..."
wait_for_receipt "$receipt"
echo "Transaction completed"
capture_event "$receipt"
echo "Requesting commission rate change completed."