Commit d63cc036 authored by QM's avatar QM

add testcase

parent 71eeae1c
...@@ -31,6 +31,9 @@ NODE4="${1}_chain30_1" ...@@ -31,6 +31,9 @@ NODE4="${1}_chain30_1"
NODE5="${1}_chain29_1" NODE5="${1}_chain29_1"
CLI5="docker exec ${NODE5} /root/chain33-cli" CLI5="docker exec ${NODE5} /root/chain33-cli"
# shellcheck disable=SC2034
NODE6="${1}_chain28_1"
containers=("${NODE1}" "${NODE2}" "${NODE3}" "${NODE4}") containers=("${NODE1}" "${NODE2}" "${NODE3}" "${NODE4}")
export COMPOSE_PROJECT_NAME="$1" export COMPOSE_PROJECT_NAME="$1"
## global config ### ## global config ###
......
...@@ -259,6 +259,7 @@ ForkLoopCheckCommitTxDone=0 ...@@ -259,6 +259,7 @@ ForkLoopCheckCommitTxDone=0
#仅平行链适用,自共识分阶段开启,缺省是0,若对应主链高度7200000之前开启过自共识,需要重新配置此分叉,并为之前自共识设置selfConsensEnablePreContract配置项 #仅平行链适用,自共识分阶段开启,缺省是0,若对应主链高度7200000之前开启过自共识,需要重新配置此分叉,并为之前自共识设置selfConsensEnablePreContract配置项
ForkParaSelfConsStages=0 ForkParaSelfConsStages=0
ForkParaAssetTransferRbk=0 ForkParaAssetTransferRbk=0
ForkParaSupervisionRbk=0
[fork.sub.evm] [fork.sub.evm]
Enable=0 Enable=0
......
...@@ -30,6 +30,11 @@ services: ...@@ -30,6 +30,11 @@ services:
environment: environment:
PARAFILE: "/root/chain33.para29.toml" PARAFILE: "/root/chain33.para29.toml"
chain28:
entrypoint: /root/entrypoint.sh
environment:
PARAFILE: "/root/chain33.para28.toml"
nginx: nginx:
image: nginx:latest image: nginx:latest
depends_on: depends_on:
......
...@@ -7,6 +7,7 @@ PARA_CLI2="docker exec ${NODE2} /root/chain33-cli --paraName user.p.para. --rpc_ ...@@ -7,6 +7,7 @@ PARA_CLI2="docker exec ${NODE2} /root/chain33-cli --paraName user.p.para. --rpc_
PARA_CLI1="docker exec ${NODE1} /root/chain33-cli --paraName user.p.para. --rpc_laddr http://localhost:8901" PARA_CLI1="docker exec ${NODE1} /root/chain33-cli --paraName user.p.para. --rpc_laddr http://localhost:8901"
PARA_CLI4="docker exec ${NODE4} /root/chain33-cli --paraName user.p.para. --rpc_laddr http://localhost:8901" PARA_CLI4="docker exec ${NODE4} /root/chain33-cli --paraName user.p.para. --rpc_laddr http://localhost:8901"
PARA_CLI5="docker exec ${NODE5} /root/chain33-cli --paraName user.p.game. --rpc_laddr http://localhost:8901" PARA_CLI5="docker exec ${NODE5} /root/chain33-cli --paraName user.p.game. --rpc_laddr http://localhost:8901"
PARA_CLI6="docker exec ${NODE6} /root/chain33-cli --paraName user.p.game. --rpc_laddr http://localhost:8901"
MAIN_CLI="docker exec ${NODE3} /root/chain33-cli" MAIN_CLI="docker exec ${NODE3} /root/chain33-cli"
PARANAME="para" PARANAME="para"
...@@ -19,6 +20,7 @@ BLSPUB_KS="a3d97d4186c80268fe6d3689dd574599e25df2dffdcff03f7d8ef64a3bd483241b7d0 ...@@ -19,6 +20,7 @@ BLSPUB_KS="a3d97d4186c80268fe6d3689dd574599e25df2dffdcff03f7d8ef64a3bd483241b7d0
BLSPUB_JR="81307df1fdde8f0e846ed1542c859c1e9daba2553e62e48db0877329c5c63fb86e70b9e2e83263da0eb7fcad275857f8" BLSPUB_JR="81307df1fdde8f0e846ed1542c859c1e9daba2553e62e48db0877329c5c63fb86e70b9e2e83263da0eb7fcad275857f8"
BLSPUB_NL="ad1d9ff67d790581fa3659c1817985eeec7c65206e8a873147cd5b6bfe1356d5cd4ed1089462bd11e51705e100c95a6b" BLSPUB_NL="ad1d9ff67d790581fa3659c1817985eeec7c65206e8a873147cd5b6bfe1356d5cd4ed1089462bd11e51705e100c95a6b"
BLSPUB_MC="980287e26d4d44f8c57944ffc096f7d98a460c97dadbffaed14ff0de901fa7f8afc59fcb1805a0b031e5eae5601df1c2" BLSPUB_MC="980287e26d4d44f8c57944ffc096f7d98a460c97dadbffaed14ff0de901fa7f8afc59fcb1805a0b031e5eae5601df1c2"
BLSPUB_5H="80e713aae96a44607ba6e0f1acfe88641ac72b789e81696cb646b1e1ae5335bd92011593eee303f9e909fd752c762db3"
xsedfix="" xsedfix=""
if [ "$(uname)" == "Darwin" ]; then if [ "$(uname)" == "Darwin" ]; then
...@@ -41,6 +43,9 @@ function para_init() { ...@@ -41,6 +43,9 @@ function para_init() {
para_set_toml chain33.para29.toml "$PARANAME_GAME" "$1" para_set_toml chain33.para29.toml "$PARANAME_GAME" "$1"
sed -i $xsedfix 's/^authAccount=.*/authAccount="1KSBd17H7ZK8iT37aJztFB22XGwsPTdwE4"/g' chain33.para29.toml sed -i $xsedfix 's/^authAccount=.*/authAccount="1KSBd17H7ZK8iT37aJztFB22XGwsPTdwE4"/g' chain33.para29.toml
para_set_toml chain33.para28.toml "$PARANAME" "$1"
sed -i $xsedfix 's/^authAccount=.*/authAccount="15HmJz2abkExxgcmSRt2Q5D4hZg6zJUD1h"/g' chain33.para28.toml
} }
function para_set_toml() { function para_set_toml() {
...@@ -99,6 +104,7 @@ function para_set_wallet() { ...@@ -99,6 +104,7 @@ function para_set_wallet() {
para_import_wallet "${PARA_CLI2}" "0x19c069234f9d3e61135fefbeb7791b149cdf6af536f26bebb310d4cd22c3fee4" "paraAuthAccount" para_import_wallet "${PARA_CLI2}" "0x19c069234f9d3e61135fefbeb7791b149cdf6af536f26bebb310d4cd22c3fee4" "paraAuthAccount"
para_import_wallet "${PARA_CLI1}" "0x7a80a1f75d7360c6123c32a78ecf978c1ac55636f87892df38d8b85a9aeff115" "paraAuthAccount" para_import_wallet "${PARA_CLI1}" "0x7a80a1f75d7360c6123c32a78ecf978c1ac55636f87892df38d8b85a9aeff115" "paraAuthAccount"
para_import_wallet "${PARA_CLI4}" "0xcacb1f5d51700aea07fca2246ab43b0917d70405c65edea9b5063d72eb5c6b71" "paraAuthAccount" para_import_wallet "${PARA_CLI4}" "0xcacb1f5d51700aea07fca2246ab43b0917d70405c65edea9b5063d72eb5c6b71" "paraAuthAccount"
para_import_wallet "${PARA_CLI6}" "0x3a35610ba6e1e72d7878f4c819e6a6768668cb5481f423ef04b6a11e0e16e44f" "paraAuthAccount"
#14KEKbYtKKQm4wMthSK9J4La4nAiidGozt #14KEKbYtKKQm4wMthSK9J4La4nAiidGozt
para_import_key "${PARA_CLI}" "0xCC38546E9E659D15E6B4893F0AB32A06D103931A8230B0BDE71459D2B27D6944" "genesis" para_import_key "${PARA_CLI}" "0xCC38546E9E659D15E6B4893F0AB32A06D103931A8230B0BDE71459D2B27D6944" "genesis"
...@@ -126,7 +132,6 @@ function para_set_wallet() { ...@@ -126,7 +132,6 @@ function para_set_wallet() {
para_import_wallet "${PARA_CLI5}" "0x6da92a632ab7deb67d38c0f6560bcfed28167998f6496db64c258d5e8393a81b" "paraAuthAccount" para_import_wallet "${PARA_CLI5}" "0x6da92a632ab7deb67d38c0f6560bcfed28167998f6496db64c258d5e8393a81b" "paraAuthAccount"
#1BM2xhBk95qoae8zKNDWwAVGgBERhb7DQu #1BM2xhBk95qoae8zKNDWwAVGgBERhb7DQu
para_import_key "${PARA_CLI5}" "0x128de4afa7c061c00d854a1bca51b58e80a2c292583739e5aebf4c0f778959e1" "cross_transfer" para_import_key "${PARA_CLI5}" "0x128de4afa7c061c00d854a1bca51b58e80a2c292583739e5aebf4c0f778959e1" "cross_transfer"
} }
function para_import_wallet() { function para_import_wallet() {
...@@ -178,6 +183,7 @@ function para_transfer() { ...@@ -178,6 +183,7 @@ function para_transfer() {
main_transfer2account "1NLHPEcbTWWxxU3dGUZBhayjrCHD3psX7k" main_transfer2account "1NLHPEcbTWWxxU3dGUZBhayjrCHD3psX7k"
main_transfer2account "1MCftFynyvG2F4ED5mdHYgziDxx6vDrScs" main_transfer2account "1MCftFynyvG2F4ED5mdHYgziDxx6vDrScs"
main_transfer2account "1BM2xhBk95qoae8zKNDWwAVGgBERhb7DQu" main_transfer2account "1BM2xhBk95qoae8zKNDWwAVGgBERhb7DQu"
main_transfer2account "15HmJz2abkExxgcmSRt2Q5D4hZg6zJUD1h"
# super node test # super node test
main_transfer2account "1E5saiXVb9mW8wcWUUZjsHJPZs5GmdzuSY" main_transfer2account "1E5saiXVb9mW8wcWUUZjsHJPZs5GmdzuSY"
main_transfer2account "1Ka7EPFRqs3v9yreXG6qA4RQbNmbPJCZPj" main_transfer2account "1Ka7EPFRqs3v9yreXG6qA4RQbNmbPJCZPj"
...@@ -212,7 +218,6 @@ function para_transfer() { ...@@ -212,7 +218,6 @@ function para_transfer() {
txhash=$(para_configkey "${PARA_CLI}" "token-blacklist" "BTY") txhash=$(para_configkey "${PARA_CLI}" "token-blacklist" "BTY")
echo "txhash=$txhash" echo "txhash=$txhash"
query_tx "${PARA_CLI}" "${txhash}" query_tx "${PARA_CLI}" "${txhash}"
} }
function main_transfer2account() { function main_transfer2account() {
...@@ -630,24 +635,42 @@ function check_cross_transfer_game_balance() { ...@@ -630,24 +635,42 @@ function check_cross_transfer_game_balance() {
break break
fi fi
done done
}
function check_number() {
if [[ $# -lt 2 ]]; then
echo -e "${RED}wrong check number parameters${NOC}"
exit 1
fi
if [ "$(echo "$1 < $2" | bc)" -eq 1 ] || [ "$(echo "$1 > $2" | bc)" -eq 1 ]; then
echo -e "${RED}error number, expect ${1}, get ${2}${NOC}"
exit 1
fi
}
function check_balance_1ka() {
balancePre=$1
coins=$2
balanceNow=$(${CLI} account balance -a 1Ka7EPFRqs3v9yreXG6qA4RQbNmbPJCZPj -e paracross | jq -r ".frozen")
local diff=0
diff=$(echo "$balanceNow - $balancePre" | bc)
check_number "${diff}" "$coins"
} }
function para_create_nodegroup_test() { function para_create_nodegroup_test() {
echo "=========== # para chain create node group test =============" echo "=========== # para chain create node group test ============="
balancePre=$(${CLI} account balance -a 1Ka7EPFRqs3v9yreXG6qA4RQbNmbPJCZPj -e paracross | jq -r ".frozen")
##apply ##apply
txhash=$(${PARA_CLI} send para nodegroup apply -a "1KSBd17H7ZK8iT37aJztFB22XGwsPTdwE4,1JRNjdEqp4LJ5fqycUBm9ayCKSeeskgMKR,1NLHPEcbTWWxxU3dGUZBhayjrCHD3psX7k,1MCftFynyvG2F4ED5mdHYgziDxx6vDrScs" -c 5 -k 0xd165c84ed37c2a427fea487470ee671b7a0495d68d82607cafbc6348bf23bec5) txhash=$(${PARA_CLI} send para nodegroup apply -a "1KSBd17H7ZK8iT37aJztFB22XGwsPTdwE4,1JRNjdEqp4LJ5fqycUBm9ayCKSeeskgMKR,1NLHPEcbTWWxxU3dGUZBhayjrCHD3psX7k,1MCftFynyvG2F4ED5mdHYgziDxx6vDrScs" -c 5 -k 0xd165c84ed37c2a427fea487470ee671b7a0495d68d82607cafbc6348bf23bec5)
echo "tx=$txhash" echo "tx=$txhash"
query_tx "${PARA_CLI}" "${txhash}" query_tx "${PARA_CLI}" "${txhash}"
id=$txhash id=$txhash
balance=$(${CLI} account balance -a 1Ka7EPFRqs3v9yreXG6qA4RQbNmbPJCZPj -e paracross | jq -r ".frozen") check_balance_1ka "$balancePre" 20
if [ "$balance" != "20.0000" ]; then
echo "apply coinfrozen error balance=$balance"
exit 1
fi
echo "=========== # para chain quit node group =============" echo "=========== # para chain quit node group ============="
balancePre=$(${CLI} account balance -a 1Ka7EPFRqs3v9yreXG6qA4RQbNmbPJCZPj -e paracross | jq -r ".frozen")
##quit ##quit
txhash=$(${PARA_CLI} send para nodegroup quit -i "$id" -k 0xd165c84ed37c2a427fea487470ee671b7a0495d68d82607cafbc6348bf23bec5) txhash=$(${PARA_CLI} send para nodegroup quit -i "$id" -k 0xd165c84ed37c2a427fea487470ee671b7a0495d68d82607cafbc6348bf23bec5)
echo "tx=$txhash" echo "tx=$txhash"
...@@ -658,18 +681,15 @@ function para_create_nodegroup_test() { ...@@ -658,18 +681,15 @@ function para_create_nodegroup_test() {
echo "quit status error " echo "quit status error "
exit 1 exit 1
fi fi
balance=$(${CLI} account balance -a 1Ka7EPFRqs3v9yreXG6qA4RQbNmbPJCZPj -e paracross | jq -r ".balance")
if [ "$balance" != "100.0000" ]; then
echo "quit coinfrozen error balance=$balance"
exit 1
fi
check_balance_1ka "$balancePre" -20
} }
function para_create_nodegroup() { function para_create_nodegroup() {
para_create_nodegroup_test para_create_nodegroup_test
echo "=========== # para chain create node group again =============" echo "=========== # para chain create node group again ============="
balancePre=$(${CLI} account balance -a 1Ka7EPFRqs3v9yreXG6qA4RQbNmbPJCZPj -e paracross | jq -r ".frozen")
##apply ##apply
local blspubs=$BLSPUB_E5,$BLSPUB_KS,$BLSPUB_JR,$BLSPUB_NL,$BLSPUB_MC local blspubs=$BLSPUB_E5,$BLSPUB_KS,$BLSPUB_JR,$BLSPUB_NL,$BLSPUB_MC
txhash=$(${PARA_CLI} send para nodegroup apply -a "1E5saiXVb9mW8wcWUUZjsHJPZs5GmdzuSY,1KSBd17H7ZK8iT37aJztFB22XGwsPTdwE4,1JRNjdEqp4LJ5fqycUBm9ayCKSeeskgMKR,1NLHPEcbTWWxxU3dGUZBhayjrCHD3psX7k,1MCftFynyvG2F4ED5mdHYgziDxx6vDrScs" -p "$blspubs" -c 6 -k 0xd165c84ed37c2a427fea487470ee671b7a0495d68d82607cafbc6348bf23bec5) txhash=$(${PARA_CLI} send para nodegroup apply -a "1E5saiXVb9mW8wcWUUZjsHJPZs5GmdzuSY,1KSBd17H7ZK8iT37aJztFB22XGwsPTdwE4,1JRNjdEqp4LJ5fqycUBm9ayCKSeeskgMKR,1NLHPEcbTWWxxU3dGUZBhayjrCHD3psX7k,1MCftFynyvG2F4ED5mdHYgziDxx6vDrScs" -p "$blspubs" -c 6 -k 0xd165c84ed37c2a427fea487470ee671b7a0495d68d82607cafbc6348bf23bec5)
...@@ -677,11 +697,7 @@ function para_create_nodegroup() { ...@@ -677,11 +697,7 @@ function para_create_nodegroup() {
query_tx "${PARA_CLI}" "${txhash}" query_tx "${PARA_CLI}" "${txhash}"
id=$txhash id=$txhash
balance=$(${CLI} account balance -a 1Ka7EPFRqs3v9yreXG6qA4RQbNmbPJCZPj -e paracross | jq -r ".frozen") check_balance_1ka "$balancePre" 30
if [ "$balance" != "30.0000" ]; then
echo "apply coinfrozen error balance=$balance"
exit 1
fi
echo "=========== # para chain approve node group =============" echo "=========== # para chain approve node group ============="
##approve ##approve
...@@ -707,6 +723,7 @@ function para_create_nodegroup() { ...@@ -707,6 +723,7 @@ function para_create_nodegroup() {
echo "status quit not approve status=$status" echo "status quit not approve status=$status"
exit 1 exit 1
fi fi
balance=$(${CLI} account balance -a 1Ka7EPFRqs3v9yreXG6qA4RQbNmbPJCZPj -e paracross | jq -r ".frozen") balance=$(${CLI} account balance -a 1Ka7EPFRqs3v9yreXG6qA4RQbNmbPJCZPj -e paracross | jq -r ".frozen")
if [ "$balance" != "30.0000" ]; then if [ "$balance" != "30.0000" ]; then
echo "quit fail coinfrozen error balance=$balance" echo "quit fail coinfrozen error balance=$balance"
...@@ -742,8 +759,61 @@ function para_create_nodegroup() { ...@@ -742,8 +759,61 @@ function para_create_nodegroup() {
fi fi
} }
function para_create_supervision_nodegroup() {
echo "=========== # para chain create supervision node group ============="
balancePre=$(${CLI} account balance -a 1Ka7EPFRqs3v9yreXG6qA4RQbNmbPJCZPj -e paracross | jq -r ".frozen")
##apply
txhash=$(${PARA_CLI} send para supervision_node apply -a "15HmJz2abkExxgcmSRt2Q5D4hZg6zJUD1h" -c 6 -p "$BLSPUB_5H" -k 0xd165c84ed37c2a427fea487470ee671b7a0495d68d82607cafbc6348bf23bec5)
echo "tx=$txhash"
query_tx "${PARA_CLI}" "${txhash}"
id=$txhash
check_balance_1ka "$balancePre" 6
echo "=========== # para chain quit supervision node group ============="
balancePre=$(${CLI} account balance -a 1Ka7EPFRqs3v9yreXG6qA4RQbNmbPJCZPj -e paracross | jq -r ".frozen")
##quit
txhash=$(${PARA_CLI} send para supervision_node quit -i "$id" -k 0xd165c84ed37c2a427fea487470ee671b7a0495d68d82607cafbc6348bf23bec5)
echo "tx=$txhash"
query_tx "${PARA_CLI}" "${txhash}"
newid=$(${PARA_CLI} para supervision_node list -s 3 | jq -r ".ids[0].id")
if [ -z "$newid" ]; then
${PARA_CLI} para supervision_node list -s 3
echo "quit status error "
exit 1
fi
check_balance_1ka "$balancePre" -6
echo "=========== # para chain create supervision node group again ============="
balancePre=$(${CLI} account balance -a 1Ka7EPFRqs3v9yreXG6qA4RQbNmbPJCZPj -e paracross | jq -r ".frozen")
##apply
txhash=$(${PARA_CLI} send para supervision_node apply -a "15HmJz2abkExxgcmSRt2Q5D4hZg6zJUD1h" -c 6 -p "$BLSPUB_5H" -k 0xd165c84ed37c2a427fea487470ee671b7a0495d68d82607cafbc6348bf23bec5)
echo "tx=$txhash"
query_tx "${PARA_CLI}" "${txhash}"
id=$txhash
check_balance_1ka "$balancePre" 6
echo "=========== # para chain approve supervision node group ============="
##approve
txhash=$(${PARA_CLI} send para supervision_node approve -i "$id" -c 6 -k 0xc34b5d9d44ac7b754806f761d3d4d2c4fe5214f6b074c19f069c4f5c2a29c8cc)
echo "tx=$txhash"
query_tx "${PARA_CLI}" "${txhash}"
status=$(${PARA_CLI} para supervision_node status | jq -r ".status")
if [ "$status" != 2 ]; then
echo "status not approve status=$status"
exit 1
fi
${PARA_CLI} para supervision_node addrs
echo "=========== # para chain approve supervision node group end ============="
}
function para_nodegroup_behalf_quit_test() { function para_nodegroup_behalf_quit_test() {
echo "=========== # para chain behalf node quit =============" echo "=========== # para chain behalf node quit ============="
balancePre=$(${CLI} account balance -a 1Ka7EPFRqs3v9yreXG6qA4RQbNmbPJCZPj -e paracross | jq -r ".frozen")
status=$(${PARA_CLI} para node addr_status -a 1E5saiXVb9mW8wcWUUZjsHJPZs5GmdzuSY | jq -r ".status") status=$(${PARA_CLI} para node addr_status -a 1E5saiXVb9mW8wcWUUZjsHJPZs5GmdzuSY | jq -r ".status")
if [ "${status}" != "10" ]; then if [ "${status}" != "10" ]; then
echo "wrong 1E5 status" echo "wrong 1E5 status"
...@@ -777,12 +847,7 @@ function para_nodegroup_behalf_quit_test() { ...@@ -777,12 +847,7 @@ function para_nodegroup_behalf_quit_test() {
exit 1 exit 1
fi fi
balance=$(${CLI} account balance -a 1Ka7EPFRqs3v9yreXG6qA4RQbNmbPJCZPj -e paracross | jq -r ".frozen") check_balance_1ka "$balancePre" -6
if [ "$balance" != "24.0000" ]; then
echo "unfrozen coinfrozen error balance=$balance"
exit 1
fi
} }
function para_nodemanage_cancel_test() { function para_nodemanage_cancel_test() {
...@@ -814,11 +879,9 @@ function para_nodemanage_cancel_test() { ...@@ -814,11 +879,9 @@ function para_nodemanage_cancel_test() {
echo "unfrozen coinfrozen error balance=$balance" echo "unfrozen coinfrozen error balance=$balance"
exit 1 exit 1
fi fi
} }
function para_nodemanage_test() { function para_nodemanage_test() {
echo "================# para node manage test =================" echo "================# para node manage test ================="
balance=$(${CLI} account balance -a 1E5saiXVb9mW8wcWUUZjsHJPZs5GmdzuSY -e paracross | jq -r ".balance") balance=$(${CLI} account balance -a 1E5saiXVb9mW8wcWUUZjsHJPZs5GmdzuSY -e paracross | jq -r ".balance")
if [ "$balance" != "$PARA_COIN_FROZEN" ]; then if [ "$balance" != "$PARA_COIN_FROZEN" ]; then
...@@ -871,6 +934,7 @@ function para_nodemanage_test() { ...@@ -871,6 +934,7 @@ function para_nodemanage_test() {
echo "unfrozen coinfrozen error balance=$balance" echo "unfrozen coinfrozen error balance=$balance"
exit 1 exit 1
fi fi
echo "=========== # para chain node quit reject =============" echo "=========== # para chain node quit reject ============="
txhash=$(${PARA_CLI} send para node quit -a 1KSBd17H7ZK8iT37aJztFB22XGwsPTdwE4 -k 0x9c451df9e5cb05b88b28729aeaaeb3169a2414097401fcb4c79c1971df734588) txhash=$(${PARA_CLI} send para node quit -a 1KSBd17H7ZK8iT37aJztFB22XGwsPTdwE4 -k 0x9c451df9e5cb05b88b28729aeaaeb3169a2414097401fcb4c79c1971df734588)
echo "${txhash}" echo "${txhash}"
...@@ -903,22 +967,19 @@ function para_nodemanage_test() { ...@@ -903,22 +967,19 @@ function para_nodemanage_test() {
${PARA_CLI} para nodegroup addrs ${PARA_CLI} para nodegroup addrs
exit 1 exit 1
fi fi
} }
function para_nodemanage_node_behalf_join() { function para_nodemanage_node_behalf_join() {
echo "=========== # para chain behalf node vote test =============" echo "=========== # para chain behalf node vote test ============="
echo "=========== # para chain new node join 1 =============" echo "=========== # para chain new node join 1 ============="
balancePre=$(${CLI} account balance -a 1Ka7EPFRqs3v9yreXG6qA4RQbNmbPJCZPj -e paracross | jq -r ".frozen")
hash=$(${PARA_CLI} send para node join -c 8 -a 1NNaYHkscJaLJ2wUrFNeh6cQXBS4TrFYeB -k 0xd165c84ed37c2a427fea487470ee671b7a0495d68d82607cafbc6348bf23bec5) hash=$(${PARA_CLI} send para node join -c 8 -a 1NNaYHkscJaLJ2wUrFNeh6cQXBS4TrFYeB -k 0xd165c84ed37c2a427fea487470ee671b7a0495d68d82607cafbc6348bf23bec5)
echo "${hash}" echo "${hash}"
query_tx "${PARA_CLI}" "${hash}" query_tx "${PARA_CLI}" "${hash}"
node1_id=$hash node1_id=$hash
balance=$(${CLI} account balance -a 1Ka7EPFRqs3v9yreXG6qA4RQbNmbPJCZPj -e paracross | jq -r ".frozen") # 37
if [ "$balance" != "37.0000" ]; then check_balance_1ka "$balancePre" 8
echo "1Ka frozen coinfrozen error balance=$balance"
exit 1
fi
balance=$(${CLI} account balance -a 1NNaYHkscJaLJ2wUrFNeh6cQXBS4TrFYeB -e paracross | jq -r ".frozen") balance=$(${CLI} account balance -a 1NNaYHkscJaLJ2wUrFNeh6cQXBS4TrFYeB -e paracross | jq -r ".frozen")
if [ "$balance" == "$PARA_COIN_FROZEN" ]; then if [ "$balance" == "$PARA_COIN_FROZEN" ]; then
...@@ -927,16 +988,14 @@ function para_nodemanage_node_behalf_join() { ...@@ -927,16 +988,14 @@ function para_nodemanage_node_behalf_join() {
fi fi
echo "=========== # para chain new node join 2=============" echo "=========== # para chain new node join 2============="
balancePre=$(${CLI} account balance -a 1Ka7EPFRqs3v9yreXG6qA4RQbNmbPJCZPj -e paracross | jq -r ".frozen")
hash=$(${PARA_CLI} send para node join -c 9 -a 1NNaYHkscJaLJ2wUrFNeh6cQXBS4TrFYeB -k 0xd165c84ed37c2a427fea487470ee671b7a0495d68d82607cafbc6348bf23bec5) hash=$(${PARA_CLI} send para node join -c 9 -a 1NNaYHkscJaLJ2wUrFNeh6cQXBS4TrFYeB -k 0xd165c84ed37c2a427fea487470ee671b7a0495d68d82607cafbc6348bf23bec5)
echo "${hash}" echo "${hash}"
query_tx "${PARA_CLI}" "${hash}" query_tx "${PARA_CLI}" "${hash}"
id=$hash id=$hash
balance=$(${CLI} account balance -a 1Ka7EPFRqs3v9yreXG6qA4RQbNmbPJCZPj -e paracross | jq -r ".frozen") # 46
if [ "$balance" != "46.0000" ]; then check_balance_1ka "$balancePre" 9
echo "frozen coinfrozen error balance=$balance"
exit 1
fi
${PARA_CLI} send para node vote -i "$id" -v 1 -k 0x6da92a632ab7deb67d38c0f6560bcfed28167998f6496db64c258d5e8393a81b ${PARA_CLI} send para node vote -i "$id" -v 1 -k 0x6da92a632ab7deb67d38c0f6560bcfed28167998f6496db64c258d5e8393a81b
${PARA_CLI} send para node vote -i "$id" -v 1 -k 0x19c069234f9d3e61135fefbeb7791b149cdf6af536f26bebb310d4cd22c3fee4 ${PARA_CLI} send para node vote -i "$id" -v 1 -k 0x19c069234f9d3e61135fefbeb7791b149cdf6af536f26bebb310d4cd22c3fee4
...@@ -979,15 +1038,14 @@ function para_nodemanage_node_behalf_join() { ...@@ -979,15 +1038,14 @@ function para_nodemanage_node_behalf_join() {
fi fi
echo "=========== # para chain node 1 cancel =============" echo "=========== # para chain node 1 cancel ============="
balancePre=$(${CLI} account balance -a 1Ka7EPFRqs3v9yreXG6qA4RQbNmbPJCZPj -e paracross | jq -r ".frozen")
hash=$(${PARA_CLI} send para node cancel -i "$node1_id" -k 0xd165c84ed37c2a427fea487470ee671b7a0495d68d82607cafbc6348bf23bec5) hash=$(${PARA_CLI} send para node cancel -i "$node1_id" -k 0xd165c84ed37c2a427fea487470ee671b7a0495d68d82607cafbc6348bf23bec5)
echo "${hash}" echo "${hash}"
query_tx "${PARA_CLI}" "${hash}" query_tx "${PARA_CLI}" "${hash}"
balance=$(${CLI} account balance -a 1Ka7EPFRqs3v9yreXG6qA4RQbNmbPJCZPj -e paracross | jq -r ".frozen") # 38
if [ "$balance" != "38.0000" ]; then check_balance_1ka "$balancePre" -8
echo "unfrozen coinfrozen error balance=$balance"
exit 1
fi
status=$(${PARA_CLI} para node id_status -i "$node1_id" | jq -r ".status") status=$(${PARA_CLI} para node id_status -i "$node1_id" | jq -r ".status")
if [ "${status}" != "4" ]; then if [ "${status}" != "4" ]; then
echo "wrong cancel status" echo "wrong cancel status"
...@@ -996,6 +1054,7 @@ function para_nodemanage_node_behalf_join() { ...@@ -996,6 +1054,7 @@ function para_nodemanage_node_behalf_join() {
fi fi
echo "=========== # para chain node 2 quit =============" echo "=========== # para chain node 2 quit ============="
balancePre=$(${CLI} account balance -a 1Ka7EPFRqs3v9yreXG6qA4RQbNmbPJCZPj -e paracross | jq -r ".frozen")
hash=$(${PARA_CLI} send para node quit -a 1NNaYHkscJaLJ2wUrFNeh6cQXBS4TrFYeB -k 0x794443611e7369a57b078881445b93b754cbc9b9b8f526535ab9c6d21d29203d) hash=$(${PARA_CLI} send para node quit -a 1NNaYHkscJaLJ2wUrFNeh6cQXBS4TrFYeB -k 0x794443611e7369a57b078881445b93b754cbc9b9b8f526535ab9c6d21d29203d)
echo "${hash}" echo "${hash}"
query_tx "${PARA_CLI}" "${hash}" query_tx "${PARA_CLI}" "${hash}"
...@@ -1009,11 +1068,8 @@ function para_nodemanage_node_behalf_join() { ...@@ -1009,11 +1068,8 @@ function para_nodemanage_node_behalf_join() {
echo "${hash}" echo "${hash}"
query_tx "${PARA_CLI}" "${hash}" query_tx "${PARA_CLI}" "${hash}"
balance=$(${CLI} account balance -a 1Ka7EPFRqs3v9yreXG6qA4RQbNmbPJCZPj -e paracross | jq -r ".frozen") # 29
if [ "$balance" != "29.0000" ]; then check_balance_1ka "$balancePre" -9
echo "unfrozen coinfrozen error balance=$balance"
exit 1
fi
status=$(${PARA_CLI} para node addr_status -a 1NNaYHkscJaLJ2wUrFNeh6cQXBS4TrFYeB | jq -r ".status") status=$(${PARA_CLI} para node addr_status -a 1NNaYHkscJaLJ2wUrFNeh6cQXBS4TrFYeB | jq -r ".status")
if [ "${status}" != "11" ]; then if [ "${status}" != "11" ]; then
...@@ -1033,7 +1089,6 @@ function para_nodemanage_node_behalf_join() { ...@@ -1033,7 +1089,6 @@ function para_nodemanage_node_behalf_join() {
${PARA_CLI} para nodegroup addrs ${PARA_CLI} para nodegroup addrs
exit 1 exit 1
fi fi
} }
function check_privacy_utxo() { function check_privacy_utxo() {
...@@ -1055,6 +1110,7 @@ function check_privacy_utxo() { ...@@ -1055,6 +1110,7 @@ function check_privacy_utxo() {
fi fi
done done
} }
function privacy_transfer_test() { function privacy_transfer_test() {
echo "========= # para privacy test =============" echo "========= # para privacy test ============="
echo "#enable privacy" echo "#enable privacy"
...@@ -1090,6 +1146,7 @@ function privacy_transfer_test() { ...@@ -1090,6 +1146,7 @@ function privacy_transfer_test() {
function para_test() { function para_test() {
echo "=========== # para chain test =============" echo "=========== # para chain test ============="
para_create_nodegroup para_create_nodegroup
para_create_supervision_nodegroup
para_nodegroup_behalf_quit_test para_nodegroup_behalf_quit_test
para_create_nodegroup_gamechain para_create_nodegroup_gamechain
token_create "${PARA_CLI}" token_create "${PARA_CLI}"
......
...@@ -35,6 +35,7 @@ func ParcCmd() *cobra.Command { ...@@ -35,6 +35,7 @@ func ParcCmd() *cobra.Command {
CreateRawCrossAssetTransferCmd(), CreateRawCrossAssetTransferCmd(),
superNodeCmd(), superNodeCmd(),
nodeGroupCmd(), nodeGroupCmd(),
supervisionNodeCmd(),
paraConfigCmd(), paraConfigCmd(),
GetParaInfoCmd(), GetParaInfoCmd(),
GetParaListCmd(), GetParaListCmd(),
...@@ -62,10 +63,10 @@ func CreateRawAssetTransferCmd() *cobra.Command { ...@@ -62,10 +63,10 @@ func CreateRawAssetTransferCmd() *cobra.Command {
func addCreateAssetTransferFlags(cmd *cobra.Command) { func addCreateAssetTransferFlags(cmd *cobra.Command) {
cmd.Flags().StringP("to", "t", "", "receiver account address") cmd.Flags().StringP("to", "t", "", "receiver account address")
cmd.MarkFlagRequired("to") _ = cmd.MarkFlagRequired("to")
cmd.Flags().Float64P("amount", "a", 0, "transaction amount") cmd.Flags().Float64P("amount", "a", 0, "transaction amount")
cmd.MarkFlagRequired("amount") _ = cmd.MarkFlagRequired("amount")
cmd.Flags().StringP("note", "n", "", "transaction note info") cmd.Flags().StringP("note", "n", "", "transaction note info")
...@@ -75,7 +76,7 @@ func addCreateAssetTransferFlags(cmd *cobra.Command) { ...@@ -75,7 +76,7 @@ func addCreateAssetTransferFlags(cmd *cobra.Command) {
func createAssetTransfer(cmd *cobra.Command, args []string) { func createAssetTransfer(cmd *cobra.Command, args []string) {
txHex, err := createAssetTx(cmd, false) txHex, err := createAssetTx(cmd, false)
if err != nil { if err != nil {
fmt.Fprintln(os.Stderr, err) _, _ = fmt.Fprintln(os.Stderr, err)
return return
} }
fmt.Println(txHex) fmt.Println(txHex)
...@@ -94,12 +95,12 @@ func CreateRawAssetWithdrawCmd() *cobra.Command { ...@@ -94,12 +95,12 @@ func CreateRawAssetWithdrawCmd() *cobra.Command {
func addCreateAssetWithdrawFlags(cmd *cobra.Command) { func addCreateAssetWithdrawFlags(cmd *cobra.Command) {
cmd.Flags().Float64P("amount", "a", 0, "withdraw amount") cmd.Flags().Float64P("amount", "a", 0, "withdraw amount")
cmd.MarkFlagRequired("amount") _ = cmd.MarkFlagRequired("amount")
cmd.Flags().StringP("note", "n", "", "transaction note info") cmd.Flags().StringP("note", "n", "", "transaction note info")
cmd.Flags().StringP("to", "t", "", "receiver account address") cmd.Flags().StringP("to", "t", "", "receiver account address")
cmd.MarkFlagRequired("to") _ = cmd.MarkFlagRequired("to")
cmd.Flags().StringP("symbol", "s", "", "default for bty, symbol for token") cmd.Flags().StringP("symbol", "s", "", "default for bty, symbol for token")
} }
...@@ -107,7 +108,7 @@ func addCreateAssetWithdrawFlags(cmd *cobra.Command) { ...@@ -107,7 +108,7 @@ func addCreateAssetWithdrawFlags(cmd *cobra.Command) {
func createAssetWithdraw(cmd *cobra.Command, args []string) { func createAssetWithdraw(cmd *cobra.Command, args []string) {
txHex, err := createAssetTx(cmd, true) txHex, err := createAssetTx(cmd, true)
if err != nil { if err != nil {
fmt.Fprintln(os.Stderr, err) _, _ = fmt.Fprintln(os.Stderr, err)
return return
} }
fmt.Println(txHex) fmt.Println(txHex)
...@@ -130,7 +131,7 @@ func createAssetTx(cmd *cobra.Command, isWithdraw bool) (string, error) { ...@@ -130,7 +131,7 @@ func createAssetTx(cmd *cobra.Command, isWithdraw bool) (string, error) {
paraName, _ := cmd.Flags().GetString("paraName") paraName, _ := cmd.Flags().GetString("paraName")
if !strings.HasPrefix(paraName, "user.p") { if !strings.HasPrefix(paraName, "user.p") {
fmt.Fprintln(os.Stderr, "title is not right, title format like `user.p.guodun.`") _, _ = fmt.Fprintln(os.Stderr, "title is not right, title format like `user.p.guodun.`")
return "", types.ErrInvalidParam return "", types.ErrInvalidParam
} }
execName := paraName + pt.ParaX execName := paraName + pt.ParaX
...@@ -167,15 +168,15 @@ func CreateRawTransferCmd() *cobra.Command { ...@@ -167,15 +168,15 @@ func CreateRawTransferCmd() *cobra.Command {
func addCreateTransferFlags(cmd *cobra.Command) { func addCreateTransferFlags(cmd *cobra.Command) {
cmd.Flags().StringP("to", "t", "", "receiver account address") cmd.Flags().StringP("to", "t", "", "receiver account address")
cmd.MarkFlagRequired("to") _ = cmd.MarkFlagRequired("to")
cmd.Flags().Float64P("amount", "a", 0, "transaction amount") cmd.Flags().Float64P("amount", "a", 0, "transaction amount")
cmd.MarkFlagRequired("amount") _ = cmd.MarkFlagRequired("amount")
cmd.Flags().StringP("note", "n", "", "transaction note info") cmd.Flags().StringP("note", "n", "", "transaction note info")
cmd.Flags().StringP("symbol", "s", "", "default for bty, symbol for token") cmd.Flags().StringP("symbol", "s", "", "default for bty, symbol for token")
cmd.MarkFlagRequired("symbol") _ = cmd.MarkFlagRequired("symbol")
} }
func createTransfer(cmd *cobra.Command, args []string) { func createTransfer(cmd *cobra.Command, args []string) {
...@@ -195,15 +196,15 @@ func CreateRawTransferToExecCmd() *cobra.Command { ...@@ -195,15 +196,15 @@ func CreateRawTransferToExecCmd() *cobra.Command {
func addCreateTransferToExecFlags(cmd *cobra.Command) { func addCreateTransferToExecFlags(cmd *cobra.Command) {
cmd.Flags().Float64P("amount", "a", 0, "transaction amount") cmd.Flags().Float64P("amount", "a", 0, "transaction amount")
cmd.MarkFlagRequired("amount") _ = cmd.MarkFlagRequired("amount")
cmd.Flags().StringP("note", "n", "", "transaction note info") cmd.Flags().StringP("note", "n", "", "transaction note info")
cmd.Flags().StringP("symbol", "s", "coins.bty", "default for bty, symbol for token") cmd.Flags().StringP("symbol", "s", "coins.bty", "default for bty, symbol for token")
cmd.MarkFlagRequired("symbol") _ = cmd.MarkFlagRequired("symbol")
cmd.Flags().StringP("exec", "e", "", "asset deposit exec") cmd.Flags().StringP("exec", "e", "", "asset deposit exec")
cmd.MarkFlagRequired("exec") _ = cmd.MarkFlagRequired("exec")
} }
func createTransferToExec(cmd *cobra.Command, args []string) { func createTransferToExec(cmd *cobra.Command, args []string) {
...@@ -223,15 +224,15 @@ func CreateRawWithdrawCmd() *cobra.Command { ...@@ -223,15 +224,15 @@ func CreateRawWithdrawCmd() *cobra.Command {
func addCreateWithdrawFlags(cmd *cobra.Command) { func addCreateWithdrawFlags(cmd *cobra.Command) {
cmd.Flags().Float64P("amount", "a", 0, "withdraw amount") cmd.Flags().Float64P("amount", "a", 0, "withdraw amount")
cmd.MarkFlagRequired("amount") _ = cmd.MarkFlagRequired("amount")
cmd.Flags().StringP("note", "n", "", "transaction note info") cmd.Flags().StringP("note", "n", "", "transaction note info")
cmd.Flags().StringP("symbol", "s", "", "default for bty, symbol for token") cmd.Flags().StringP("symbol", "s", "", "default for bty, symbol for token")
cmd.MarkFlagRequired("symbol") _ = cmd.MarkFlagRequired("symbol")
cmd.Flags().StringP("exec", "e", "", "asset deposit exec") cmd.Flags().StringP("exec", "e", "", "asset deposit exec")
cmd.MarkFlagRequired("exec") _ = cmd.MarkFlagRequired("exec")
} }
func createWithdraw(cmd *cobra.Command, args []string) { func createWithdraw(cmd *cobra.Command, args []string) {
...@@ -251,16 +252,16 @@ func CreateRawCrossAssetTransferCmd() *cobra.Command { ...@@ -251,16 +252,16 @@ func CreateRawCrossAssetTransferCmd() *cobra.Command {
func addCreateCrossAssetTransferFlags(cmd *cobra.Command) { func addCreateCrossAssetTransferFlags(cmd *cobra.Command) {
cmd.Flags().StringP("exec", "e", "", "exec of asset resident") cmd.Flags().StringP("exec", "e", "", "exec of asset resident")
cmd.MarkFlagRequired("exec") _ = cmd.MarkFlagRequired("exec")
cmd.Flags().StringP("symbol", "s", "", "asset symbol like bty") cmd.Flags().StringP("symbol", "s", "", "asset symbol like bty")
cmd.MarkFlagRequired("symbol") _ = cmd.MarkFlagRequired("symbol")
cmd.Flags().StringP("to", "t", "", "transfer to account") cmd.Flags().StringP("to", "t", "", "transfer to account")
cmd.MarkFlagRequired("to") _ = cmd.MarkFlagRequired("to")
cmd.Flags().Float64P("amount", "a", 0, "transaction amount") cmd.Flags().Float64P("amount", "a", 0, "transaction amount")
cmd.MarkFlagRequired("amount") _ = cmd.MarkFlagRequired("amount")
cmd.Flags().StringP("note", "n", "", "transaction note info") cmd.Flags().StringP("note", "n", "", "transaction note info")
...@@ -274,14 +275,14 @@ func createCrossAssetTransfer(cmd *cobra.Command, args []string) { ...@@ -274,14 +275,14 @@ func createCrossAssetTransfer(cmd *cobra.Command, args []string) {
amount, _ := cmd.Flags().GetFloat64("amount") amount, _ := cmd.Flags().GetFloat64("amount")
if amount < 0 { if amount < 0 {
fmt.Fprintln(os.Stderr, "amount < 0") _, _ = fmt.Fprintln(os.Stderr, "amount < 0")
return return
} }
amountInt64 := int64(math.Trunc((amount+0.0000001)*1e4)) * 1e4 amountInt64 := int64(math.Trunc((amount+0.0000001)*1e4)) * 1e4
paraName, _ := cmd.Flags().GetString("paraName") paraName, _ := cmd.Flags().GetString("paraName")
if !strings.HasPrefix(paraName, "user.p") { if !strings.HasPrefix(paraName, "user.p") {
fmt.Fprintln(os.Stderr, "paraName is not right, paraName format like `user.p.guodun.`") _, _ = fmt.Fprintln(os.Stderr, "paraName is not right, paraName format like `user.p.guodun.`")
return return
} }
execName := paraName + pt.ParaX execName := paraName + pt.ParaX
...@@ -343,10 +344,10 @@ func nodeJoinCmd() *cobra.Command { ...@@ -343,10 +344,10 @@ func nodeJoinCmd() *cobra.Command {
func addNodeJoinFlags(cmd *cobra.Command) { func addNodeJoinFlags(cmd *cobra.Command) {
cmd.Flags().StringP("addr", "a", "", "target join addr") cmd.Flags().StringP("addr", "a", "", "target join addr")
cmd.MarkFlagRequired("addr") _ = cmd.MarkFlagRequired("addr")
cmd.Flags().Float64P("coins", "c", 0, "frozen coins amount, should not less nodegroup's setting") cmd.Flags().Float64P("coins", "c", 0, "frozen coins amount, should not less nodegroup's setting")
cmd.MarkFlagRequired("coins") _ = cmd.MarkFlagRequired("coins")
} }
...@@ -355,7 +356,7 @@ func createNodeJoinTx(cmd *cobra.Command, args []string) { ...@@ -355,7 +356,7 @@ func createNodeJoinTx(cmd *cobra.Command, args []string) {
coins, _ := cmd.Flags().GetFloat64("coins") coins, _ := cmd.Flags().GetFloat64("coins")
paraName, _ := cmd.Flags().GetString("paraName") paraName, _ := cmd.Flags().GetString("paraName")
if !strings.HasPrefix(paraName, "user.p") { if !strings.HasPrefix(paraName, "user.p") {
fmt.Fprintln(os.Stderr, "paraName is not right, paraName format like `user.p.guodun.`") _, _ = fmt.Fprintln(os.Stderr, "paraName is not right, paraName format like `user.p.guodun.`")
return return
} }
payload := &pt.ParaNodeAddrConfig{Title: paraName, Op: 1, Addr: opAddr, CoinsFrozen: int64(math.Trunc((coins+0.0000001)*1e4)) * 1e4} payload := &pt.ParaNodeAddrConfig{Title: paraName, Op: 1, Addr: opAddr, CoinsFrozen: int64(math.Trunc((coins+0.0000001)*1e4)) * 1e4}
...@@ -382,10 +383,10 @@ func nodeVoteCmd() *cobra.Command { ...@@ -382,10 +383,10 @@ func nodeVoteCmd() *cobra.Command {
func addNodeVoteFlags(cmd *cobra.Command) { func addNodeVoteFlags(cmd *cobra.Command) {
cmd.Flags().StringP("id", "i", "", "operating target apply id") cmd.Flags().StringP("id", "i", "", "operating target apply id")
cmd.MarkFlagRequired("id") _ = cmd.MarkFlagRequired("id")
cmd.Flags().Uint32P("value", "v", 1, "vote value: 1:yes,2:no") cmd.Flags().Uint32P("value", "v", 1, "vote value: 1:yes,2:no")
cmd.MarkFlagRequired("value") _ = cmd.MarkFlagRequired("value")
} }
func createNodeVoteTx(cmd *cobra.Command, args []string) { func createNodeVoteTx(cmd *cobra.Command, args []string) {
...@@ -393,7 +394,7 @@ func createNodeVoteTx(cmd *cobra.Command, args []string) { ...@@ -393,7 +394,7 @@ func createNodeVoteTx(cmd *cobra.Command, args []string) {
id, _ := cmd.Flags().GetString("id") id, _ := cmd.Flags().GetString("id")
val, _ := cmd.Flags().GetUint32("value") val, _ := cmd.Flags().GetUint32("value")
if !strings.HasPrefix(paraName, "user.p") { if !strings.HasPrefix(paraName, "user.p") {
fmt.Fprintln(os.Stderr, "paraName is not right, paraName format like `user.p.guodun.`") _, _ = fmt.Fprintln(os.Stderr, "paraName is not right, paraName format like `user.p.guodun.`")
return return
} }
payload := &pt.ParaNodeAddrConfig{Title: paraName, Op: 2, Id: id, Value: val} payload := &pt.ParaNodeAddrConfig{Title: paraName, Op: 2, Id: id, Value: val}
...@@ -421,7 +422,7 @@ func nodeQuitCmd() *cobra.Command { ...@@ -421,7 +422,7 @@ func nodeQuitCmd() *cobra.Command {
func addNodeQuitFlags(cmd *cobra.Command) { func addNodeQuitFlags(cmd *cobra.Command) {
cmd.Flags().StringP("addr", "a", "", "target quit addr") cmd.Flags().StringP("addr", "a", "", "target quit addr")
cmd.MarkFlagRequired("addr") _ = cmd.MarkFlagRequired("addr")
} }
...@@ -429,7 +430,7 @@ func createNodeQuitTx(cmd *cobra.Command, args []string) { ...@@ -429,7 +430,7 @@ func createNodeQuitTx(cmd *cobra.Command, args []string) {
paraName, _ := cmd.Flags().GetString("paraName") paraName, _ := cmd.Flags().GetString("paraName")
opAddr, _ := cmd.Flags().GetString("addr") opAddr, _ := cmd.Flags().GetString("addr")
if !strings.HasPrefix(paraName, "user.p") { if !strings.HasPrefix(paraName, "user.p") {
fmt.Fprintln(os.Stderr, "paraName is not right, paraName format like `user.p.guodun.`") _, _ = fmt.Fprintln(os.Stderr, "paraName is not right, paraName format like `user.p.guodun.`")
return return
} }
payload := &pt.ParaNodeAddrConfig{Title: paraName, Op: 3, Addr: opAddr} payload := &pt.ParaNodeAddrConfig{Title: paraName, Op: 3, Addr: opAddr}
...@@ -457,7 +458,7 @@ func nodeCancelCmd() *cobra.Command { ...@@ -457,7 +458,7 @@ func nodeCancelCmd() *cobra.Command {
func addNodeCancelFlags(cmd *cobra.Command) { func addNodeCancelFlags(cmd *cobra.Command) {
cmd.Flags().StringP("id", "i", "", "operating target apply id") cmd.Flags().StringP("id", "i", "", "operating target apply id")
cmd.MarkFlagRequired("id") _ = cmd.MarkFlagRequired("id")
} }
...@@ -465,7 +466,7 @@ func createNodeCancelTx(cmd *cobra.Command, args []string) { ...@@ -465,7 +466,7 @@ func createNodeCancelTx(cmd *cobra.Command, args []string) {
paraName, _ := cmd.Flags().GetString("paraName") paraName, _ := cmd.Flags().GetString("paraName")
id, _ := cmd.Flags().GetString("id") id, _ := cmd.Flags().GetString("id")
if !strings.HasPrefix(paraName, "user.p") { if !strings.HasPrefix(paraName, "user.p") {
fmt.Fprintln(os.Stderr, "paraName is not right, paraName format like `user.p.guodun.`") _, _ = fmt.Fprintln(os.Stderr, "paraName is not right, paraName format like `user.p.guodun.`")
return return
} }
payload := &pt.ParaNodeAddrConfig{Title: paraName, Op: 4, Id: id} payload := &pt.ParaNodeAddrConfig{Title: paraName, Op: 4, Id: id}
...@@ -493,9 +494,9 @@ func nodeModifyCmd() *cobra.Command { ...@@ -493,9 +494,9 @@ func nodeModifyCmd() *cobra.Command {
func addNodeModifyFlags(cmd *cobra.Command) { func addNodeModifyFlags(cmd *cobra.Command) {
cmd.Flags().StringP("addr", "a", "", "operating target apply id") cmd.Flags().StringP("addr", "a", "", "operating target apply id")
cmd.MarkFlagRequired("addr") _ = cmd.MarkFlagRequired("addr")
cmd.Flags().StringP("pubkey", "p", "", "operating target apply id") cmd.Flags().StringP("pubkey", "p", "", "operating target apply id")
cmd.MarkFlagRequired("pubkey") _ = cmd.MarkFlagRequired("pubkey")
} }
...@@ -504,7 +505,7 @@ func createNodeModifyTx(cmd *cobra.Command, args []string) { ...@@ -504,7 +505,7 @@ func createNodeModifyTx(cmd *cobra.Command, args []string) {
addr, _ := cmd.Flags().GetString("addr") addr, _ := cmd.Flags().GetString("addr")
pubkey, _ := cmd.Flags().GetString("pubkey") pubkey, _ := cmd.Flags().GetString("pubkey")
if !strings.HasPrefix(paraName, "user.p") { if !strings.HasPrefix(paraName, "user.p") {
fmt.Fprintln(os.Stderr, "paraName is not right, paraName format like `user.p.guodun.`") _, _ = fmt.Fprintln(os.Stderr, "paraName is not right, paraName format like `user.p.guodun.`")
return return
} }
payload := &pt.ParaNodeAddrConfig{Title: paraName, Op: pt.ParaOpModify, Addr: addr, BlsPubKey: pubkey} payload := &pt.ParaNodeAddrConfig{Title: paraName, Op: pt.ParaOpModify, Addr: addr, BlsPubKey: pubkey}
...@@ -532,12 +533,12 @@ func nodeBindCmd() *cobra.Command { ...@@ -532,12 +533,12 @@ func nodeBindCmd() *cobra.Command {
func addNodeBindFlags(cmd *cobra.Command) { func addNodeBindFlags(cmd *cobra.Command) {
cmd.Flags().Uint32P("action", "a", 1, "action bind:1 or unbind:2") cmd.Flags().Uint32P("action", "a", 1, "action bind:1 or unbind:2")
cmd.MarkFlagRequired("action") _ = cmd.MarkFlagRequired("action")
cmd.Flags().Uint64P("coins", "c", 0, "bind coins, unbind not needed") cmd.Flags().Uint64P("coins", "c", 0, "bind coins, unbind not needed")
cmd.Flags().StringP("node", "n", "", "target node to bind/unbind miner") cmd.Flags().StringP("node", "n", "", "target node to bind/unbind miner")
cmd.MarkFlagRequired("node") _ = cmd.MarkFlagRequired("node")
} }
...@@ -548,12 +549,12 @@ func createNodeBindTx(cmd *cobra.Command, args []string) { ...@@ -548,12 +549,12 @@ func createNodeBindTx(cmd *cobra.Command, args []string) {
coins, _ := cmd.Flags().GetUint64("coins") coins, _ := cmd.Flags().GetUint64("coins")
if !strings.HasPrefix(paraName, "user.p") { if !strings.HasPrefix(paraName, "user.p") {
fmt.Fprintln(os.Stderr, "paraName is not right, paraName format like `user.p.guodun.`") _, _ = fmt.Fprintln(os.Stderr, "paraName is not right, paraName format like `user.p.guodun.`")
return return
} }
if action == 1 && coins == 0 { if action == 1 && coins == 0 {
fmt.Fprintln(os.Stderr, "coins should bigger than 0") _, _ = fmt.Fprintln(os.Stderr, "coins should bigger than 0")
} }
payload := &pt.ParaBindMinerCmd{BindAction: int32(action), BindCoins: int64(coins), TargetNode: node} payload := &pt.ParaBindMinerCmd{BindAction: int32(action), BindCoins: int64(coins), TargetNode: node}
...@@ -581,7 +582,7 @@ func getNodeBindListCmd() *cobra.Command { ...@@ -581,7 +582,7 @@ func getNodeBindListCmd() *cobra.Command {
func addNodeBindCmdFlags(cmd *cobra.Command) { func addNodeBindCmdFlags(cmd *cobra.Command) {
cmd.Flags().StringP("node", "n", "", "super node addr to bind miner") cmd.Flags().StringP("node", "n", "", "super node addr to bind miner")
cmd.MarkFlagRequired("node") _ = cmd.MarkFlagRequired("node")
} }
...@@ -613,7 +614,7 @@ func getNodeInfoCmd() *cobra.Command { ...@@ -613,7 +614,7 @@ func getNodeInfoCmd() *cobra.Command {
func addNodeBodyCmdFlags(cmd *cobra.Command) { func addNodeBodyCmdFlags(cmd *cobra.Command) {
cmd.Flags().StringP("addr", "a", "", "addr apply for super user") cmd.Flags().StringP("addr", "a", "", "addr apply for super user")
cmd.MarkFlagRequired("addr") _ = cmd.MarkFlagRequired("addr")
} }
...@@ -649,7 +650,7 @@ func getNodeIDInfoCmd() *cobra.Command { ...@@ -649,7 +650,7 @@ func getNodeIDInfoCmd() *cobra.Command {
func addNodeIDBodyCmdFlags(cmd *cobra.Command) { func addNodeIDBodyCmdFlags(cmd *cobra.Command) {
cmd.Flags().StringP("id", "i", "", "id apply for super user") cmd.Flags().StringP("id", "i", "", "id apply for super user")
cmd.MarkFlagRequired("id") _ = cmd.MarkFlagRequired("id")
} }
...@@ -685,7 +686,7 @@ func getNodeListCmd() *cobra.Command { ...@@ -685,7 +686,7 @@ func getNodeListCmd() *cobra.Command {
func addNodeListCmdFlags(cmd *cobra.Command) { func addNodeListCmdFlags(cmd *cobra.Command) {
cmd.Flags().Int32P("status", "s", 0, "status:0:all,1:joining,2:quiting,3:closed,4:canceled") cmd.Flags().Int32P("status", "s", 0, "status:0:all,1:joining,2:quiting,3:closed,4:canceled")
cmd.MarkFlagRequired("status") _ = cmd.MarkFlagRequired("status")
} }
...@@ -710,10 +711,10 @@ func nodeList(cmd *cobra.Command, args []string) { ...@@ -710,10 +711,10 @@ func nodeList(cmd *cobra.Command, args []string) {
func addSelfConsStageCmdFlags(cmd *cobra.Command) { func addSelfConsStageCmdFlags(cmd *cobra.Command) {
cmd.Flags().Int64P("height", "g", 0, "height apply for self consensus enable or not ") cmd.Flags().Int64P("height", "g", 0, "height apply for self consensus enable or not ")
cmd.MarkFlagRequired("height") _ = cmd.MarkFlagRequired("height")
cmd.Flags().Uint32P("enable", "e", 0, "if self consensus enable at height,1:enable,2:disable") cmd.Flags().Uint32P("enable", "e", 0, "if self consensus enable at height,1:enable,2:disable")
cmd.MarkFlagRequired("enable") _ = cmd.MarkFlagRequired("enable")
} }
...@@ -750,10 +751,10 @@ func selfConsStageCmd() *cobra.Command { ...@@ -750,10 +751,10 @@ func selfConsStageCmd() *cobra.Command {
func addVoteFlags(cmd *cobra.Command) { func addVoteFlags(cmd *cobra.Command) {
cmd.Flags().StringP("id", "i", "", "operating target apply id") cmd.Flags().StringP("id", "i", "", "operating target apply id")
cmd.MarkFlagRequired("id") _ = cmd.MarkFlagRequired("id")
cmd.Flags().Uint32P("value", "v", 1, "vote value: 1:yes,2:no") cmd.Flags().Uint32P("value", "v", 1, "vote value: 1:yes,2:no")
cmd.MarkFlagRequired("value") _ = cmd.MarkFlagRequired("value")
} }
func createVoteTx(cmd *cobra.Command, args []string) { func createVoteTx(cmd *cobra.Command, args []string) {
...@@ -816,7 +817,7 @@ func configCancelCmd() *cobra.Command { ...@@ -816,7 +817,7 @@ func configCancelCmd() *cobra.Command {
Run: stageCancelTx, Run: stageCancelTx,
} }
cmd.Flags().StringP("id", "i", "", "operating target apply id") cmd.Flags().StringP("id", "i", "", "operating target apply id")
cmd.MarkFlagRequired("id") _ = cmd.MarkFlagRequired("id")
return cmd return cmd
} }
...@@ -874,12 +875,12 @@ func nodeGroupApplyCmd() *cobra.Command { ...@@ -874,12 +875,12 @@ func nodeGroupApplyCmd() *cobra.Command {
func addNodeGroupApplyCmdFlags(cmd *cobra.Command) { func addNodeGroupApplyCmdFlags(cmd *cobra.Command) {
cmd.Flags().StringP("addrs", "a", "", "addrs apply for super node,split by ',' ") cmd.Flags().StringP("addrs", "a", "", "addrs apply for super node,split by ',' ")
cmd.MarkFlagRequired("addrs") _ = cmd.MarkFlagRequired("addrs")
cmd.Flags().StringP("blspubs", "p", "", "bls sign pub key for addr's private key,split by ',' (optional)") cmd.Flags().StringP("blspubs", "p", "", "bls sign pub key for addr's private key,split by ',' (optional)")
cmd.Flags().Float64P("coins", "c", 0, "coins amount to frozen, not less config") cmd.Flags().Float64P("coins", "c", 0, "coins amount to frozen, not less config")
cmd.MarkFlagRequired("coins") _ = cmd.MarkFlagRequired("coins")
} }
...@@ -890,7 +891,7 @@ func nodeGroupApply(cmd *cobra.Command, args []string) { ...@@ -890,7 +891,7 @@ func nodeGroupApply(cmd *cobra.Command, args []string) {
coins, _ := cmd.Flags().GetFloat64("coins") coins, _ := cmd.Flags().GetFloat64("coins")
if !strings.HasPrefix(paraName, "user.p") { if !strings.HasPrefix(paraName, "user.p") {
fmt.Fprintln(os.Stderr, "paraName is not right, paraName format like `user.p.guodun.`") _, _ = fmt.Fprintln(os.Stderr, "paraName is not right, paraName format like `user.p.guodun.`")
return return
} }
...@@ -908,10 +909,10 @@ func nodeGroupApply(cmd *cobra.Command, args []string) { ...@@ -908,10 +909,10 @@ func nodeGroupApply(cmd *cobra.Command, args []string) {
func addNodeGroupApproveCmdFlags(cmd *cobra.Command) { func addNodeGroupApproveCmdFlags(cmd *cobra.Command) {
cmd.Flags().StringP("id", "i", "", "apply id for nodegroup ") cmd.Flags().StringP("id", "i", "", "apply id for nodegroup ")
cmd.MarkFlagRequired("id") _ = cmd.MarkFlagRequired("id")
cmd.Flags().Float64P("coins", "c", 0, "coins amount to frozen, not less config") cmd.Flags().Float64P("coins", "c", 0, "coins amount to frozen, not less config")
cmd.MarkFlagRequired("coins") _ = cmd.MarkFlagRequired("coins")
} }
...@@ -921,7 +922,7 @@ func nodeGroupApprove(cmd *cobra.Command, args []string) { ...@@ -921,7 +922,7 @@ func nodeGroupApprove(cmd *cobra.Command, args []string) {
coins, _ := cmd.Flags().GetFloat64("coins") coins, _ := cmd.Flags().GetFloat64("coins")
if !strings.HasPrefix(paraName, "user.p") { if !strings.HasPrefix(paraName, "user.p") {
fmt.Fprintln(os.Stderr, "paraName is not right, paraName format like `user.p.guodun.`") _, _ = fmt.Fprintln(os.Stderr, "paraName is not right, paraName format like `user.p.guodun.`")
return return
} }
...@@ -949,7 +950,7 @@ func nodeGroupApproveCmd() *cobra.Command { ...@@ -949,7 +950,7 @@ func nodeGroupApproveCmd() *cobra.Command {
func addNodeGroupQuitCmdFlags(cmd *cobra.Command) { func addNodeGroupQuitCmdFlags(cmd *cobra.Command) {
cmd.Flags().StringP("id", "i", "", "apply quit id for nodegroup ") cmd.Flags().StringP("id", "i", "", "apply quit id for nodegroup ")
cmd.MarkFlagRequired("id") _ = cmd.MarkFlagRequired("id")
} }
...@@ -957,7 +958,7 @@ func nodeGroupQuit(cmd *cobra.Command, args []string) { ...@@ -957,7 +958,7 @@ func nodeGroupQuit(cmd *cobra.Command, args []string) {
paraName, _ := cmd.Flags().GetString("paraName") paraName, _ := cmd.Flags().GetString("paraName")
id, _ := cmd.Flags().GetString("id") id, _ := cmd.Flags().GetString("id")
if !strings.HasPrefix(paraName, "user.p") { if !strings.HasPrefix(paraName, "user.p") {
fmt.Fprintln(os.Stderr, "paraName is not right, paraName format like `user.p.guodun.`") _, _ = fmt.Fprintln(os.Stderr, "paraName is not right, paraName format like `user.p.guodun.`")
return return
} }
payload := &pt.ParaNodeGroupConfig{Title: paraName, Op: 3, Id: id} payload := &pt.ParaNodeGroupConfig{Title: paraName, Op: 3, Id: id}
...@@ -984,7 +985,7 @@ func nodeGroupQuitCmd() *cobra.Command { ...@@ -984,7 +985,7 @@ func nodeGroupQuitCmd() *cobra.Command {
func addNodeGroupModifyCmdFlags(cmd *cobra.Command) { func addNodeGroupModifyCmdFlags(cmd *cobra.Command) {
cmd.Flags().Float64P("coins", "c", 0, "modify coins amount to frozen, not less config") cmd.Flags().Float64P("coins", "c", 0, "modify coins amount to frozen, not less config")
cmd.MarkFlagRequired("coins") _ = cmd.MarkFlagRequired("coins")
} }
...@@ -992,7 +993,7 @@ func nodeGroupModify(cmd *cobra.Command, args []string) { ...@@ -992,7 +993,7 @@ func nodeGroupModify(cmd *cobra.Command, args []string) {
paraName, _ := cmd.Flags().GetString("paraName") paraName, _ := cmd.Flags().GetString("paraName")
coins, _ := cmd.Flags().GetFloat64("coins") coins, _ := cmd.Flags().GetFloat64("coins")
if !strings.HasPrefix(paraName, "user.p") { if !strings.HasPrefix(paraName, "user.p") {
fmt.Fprintln(os.Stderr, "paraName is not right, paraName format like `user.p.guodun.`") _, _ = fmt.Fprintln(os.Stderr, "paraName is not right, paraName format like `user.p.guodun.`")
return return
} }
payload := &pt.ParaNodeGroupConfig{Title: paraName, Op: 4, CoinsFrozen: int64(math.Trunc((coins+0.0000001)*1e4)) * 1e4} payload := &pt.ParaNodeGroupConfig{Title: paraName, Op: 4, CoinsFrozen: int64(math.Trunc((coins+0.0000001)*1e4)) * 1e4}
...@@ -1127,10 +1128,10 @@ func GetHeightCmd() *cobra.Command { ...@@ -1127,10 +1128,10 @@ func GetHeightCmd() *cobra.Command {
func addBlockBodyCmdFlags(cmd *cobra.Command) { func addBlockBodyCmdFlags(cmd *cobra.Command) {
cmd.Flags().Int64P("start", "s", 0, "block start height") cmd.Flags().Int64P("start", "s", 0, "block start height")
cmd.MarkFlagRequired("start") _ = cmd.MarkFlagRequired("start")
cmd.Flags().Int64P("end", "e", 0, "block end height") cmd.Flags().Int64P("end", "e", 0, "block end height")
cmd.MarkFlagRequired("end") _ = cmd.MarkFlagRequired("end")
} }
func blockInfo(cmd *cobra.Command, args []string) { func blockInfo(cmd *cobra.Command, args []string) {
...@@ -1165,7 +1166,7 @@ func GetBlockInfoCmd() *cobra.Command { ...@@ -1165,7 +1166,7 @@ func GetBlockInfoCmd() *cobra.Command {
func addLocalBlockBodyCmdFlags(cmd *cobra.Command) { func addLocalBlockBodyCmdFlags(cmd *cobra.Command) {
cmd.Flags().Int64P("start", "t", 0, "block height,-1:latest height") cmd.Flags().Int64P("start", "t", 0, "block height,-1:latest height")
cmd.MarkFlagRequired("start") _ = cmd.MarkFlagRequired("start")
} }
...@@ -1195,7 +1196,7 @@ func GetLocalBlockInfoCmd() *cobra.Command { ...@@ -1195,7 +1196,7 @@ func GetLocalBlockInfoCmd() *cobra.Command {
func addParaBodyCmdFlags(cmd *cobra.Command) { func addParaBodyCmdFlags(cmd *cobra.Command) {
cmd.Flags().Int64P("height", "g", 0, "height to para chain") cmd.Flags().Int64P("height", "g", 0, "height to para chain")
cmd.MarkFlagRequired("height") _ = cmd.MarkFlagRequired("height")
} }
...@@ -1266,7 +1267,7 @@ func getNodeGroupAddrsCmd() *cobra.Command { ...@@ -1266,7 +1267,7 @@ func getNodeGroupAddrsCmd() *cobra.Command {
func addParaAssetTranCmdFlags(cmd *cobra.Command) { func addParaAssetTranCmdFlags(cmd *cobra.Command) {
cmd.Flags().StringP("hash", "s", "", "asset transfer tx hash") cmd.Flags().StringP("hash", "s", "", "asset transfer tx hash")
cmd.MarkFlagRequired("hash") _ = cmd.MarkFlagRequired("hash")
} }
...@@ -1353,7 +1354,7 @@ func nodeGroupListCmd() *cobra.Command { ...@@ -1353,7 +1354,7 @@ func nodeGroupListCmd() *cobra.Command {
func getNodeGroupListCmdFlags(cmd *cobra.Command) { func getNodeGroupListCmdFlags(cmd *cobra.Command) {
cmd.Flags().Int32P("status", "s", 0, "status:1:apply,2:approve,3:quit") cmd.Flags().Int32P("status", "s", 0, "status:1:apply,2:approve,3:quit")
cmd.MarkFlagRequired("status") _ = cmd.MarkFlagRequired("status")
} }
func nodeGroupList(cmd *cobra.Command, args []string) { func nodeGroupList(cmd *cobra.Command, args []string) {
...@@ -1421,7 +1422,7 @@ func GetSelfConsOneStageCmd() *cobra.Command { ...@@ -1421,7 +1422,7 @@ func GetSelfConsOneStageCmd() *cobra.Command {
Run: stageOneInfo, Run: stageOneInfo,
} }
cmd.Flags().Int64P("height", "g", 0, "height to para chain") cmd.Flags().Int64P("height", "g", 0, "height to para chain")
cmd.MarkFlagRequired("height") _ = cmd.MarkFlagRequired("height")
return cmd return cmd
} }
...@@ -1455,7 +1456,7 @@ func showSelfStages(cmd *cobra.Command, args []string) { ...@@ -1455,7 +1456,7 @@ func showSelfStages(cmd *cobra.Command, args []string) {
index, _ := cmd.Flags().GetInt32("index") index, _ := cmd.Flags().GetInt32("index")
if id == "" && status == 0 { if id == "" && status == 0 {
fmt.Fprintln(os.Stderr, "should fill id or status in") _, _ = fmt.Fprintln(os.Stderr, "should fill id or status in")
return return
} }
...@@ -1479,7 +1480,7 @@ func showSelfStages(cmd *cobra.Command, args []string) { ...@@ -1479,7 +1480,7 @@ func showSelfStages(cmd *cobra.Command, args []string) {
func addConsensDoneCmdFlags(cmd *cobra.Command) { func addConsensDoneCmdFlags(cmd *cobra.Command) {
cmd.Flags().Int64P("height", "g", 0, "height to para chain") cmd.Flags().Int64P("height", "g", 0, "height to para chain")
cmd.MarkFlagRequired("height") _ = cmd.MarkFlagRequired("height")
} }
...@@ -1512,3 +1513,215 @@ func GetConsensDoneInfoCmd() *cobra.Command { ...@@ -1512,3 +1513,215 @@ func GetConsensDoneInfoCmd() *cobra.Command {
addConsensDoneCmdFlags(cmd) addConsensDoneCmdFlags(cmd)
return cmd return cmd
} }
func supervisionNodeCmd() *cobra.Command {
cmd := &cobra.Command{
Use: "supervision_node",
Short: "supervision node manage cmd",
}
cmd.AddCommand(supervisionNodeApplyCmd())
cmd.AddCommand(supervisionNodeApproveCmd())
cmd.AddCommand(supervisionNodeQuitCmd())
cmd.AddCommand(getSupervisionNodeGroupAddrsCmd())
cmd.AddCommand(supervisionNodeGroupStatusCmd())
cmd.AddCommand(supervisionNodeGroupListCmd())
return cmd
}
func supervisionNodeApplyCmd() *cobra.Command {
cmd := &cobra.Command{
Use: "apply",
Short: "apply for para chain's supervision node",
Run: supervisionNodeApply,
}
addSupervisionNodeApplyCmdFlags(cmd)
return cmd
}
func addSupervisionNodeApplyCmdFlags(cmd *cobra.Command) {
cmd.Flags().StringP("addr", "a", "", "addr apply for supervision node")
_ = cmd.MarkFlagRequired("addr")
cmd.Flags().StringP("blspub", "p", "", "bls sign pub key for addr's private key")
cmd.Flags().Float64P("coins", "c", 0, "coins amount to frozen, not less config")
_ = cmd.MarkFlagRequired("coins")
}
func supervisionNodeApply(cmd *cobra.Command, args []string) {
paraName, _ := cmd.Flags().GetString("paraName")
addr, _ := cmd.Flags().GetString("addr")
blspub, _ := cmd.Flags().GetString("blspub")
coins, _ := cmd.Flags().GetFloat64("coins")
if !strings.HasPrefix(paraName, "user.p") {
_, _ = fmt.Fprintln(os.Stderr, "paraName is not right, paraName format like `user.p.guodun.`")
return
}
payload := &pt.ParaNodeAddrConfig{Title: paraName, Op: 1, Addr: addr, BlsPubKey: blspub, CoinsFrozen: int64(math.Trunc((coins+0.0000001)*1e4)) * 1e4}
params := &rpctypes.CreateTxIn{
Execer: getRealExecName(paraName, pt.ParaX),
ActionName: "SupervisionNodeGroupConfig",
Payload: types.MustPBToJSON(payload),
}
rpcLaddr, _ := cmd.Flags().GetString("rpc_laddr")
ctx := jsonclient.NewRPCCtx(rpcLaddr, "Chain33.CreateTransaction", params, nil)
ctx.RunWithoutMarshal()
}
func supervisionNodeApproveCmd() *cobra.Command {
cmd := &cobra.Command{
Use: "approve",
Short: "approve for para chain's supervision node application",
Run: supervisionNodeApprove,
}
addSupervisionNodeApproveCmdFlags(cmd)
return cmd
}
func addSupervisionNodeApproveCmdFlags(cmd *cobra.Command) {
cmd.Flags().StringP("id", "i", "", "apply id for supervision node ")
_ = cmd.MarkFlagRequired("id")
cmd.Flags().Float64P("coins", "c", 0, "coins amount to frozen, not less config")
_ = cmd.MarkFlagRequired("coins")
}
func supervisionNodeApprove(cmd *cobra.Command, args []string) {
paraName, _ := cmd.Flags().GetString("paraName")
id, _ := cmd.Flags().GetString("id")
coins, _ := cmd.Flags().GetFloat64("coins")
if !strings.HasPrefix(paraName, "user.p") {
_, _ = fmt.Fprintln(os.Stderr, "paraName is not right, paraName format like `user.p.guodun.`")
return
}
payload := &pt.ParaNodeAddrConfig{Title: paraName, Op: 2, Id: id, CoinsFrozen: int64(math.Trunc((coins+0.0000001)*1e4)) * 1e4}
params := &rpctypes.CreateTxIn{
Execer: getRealExecName(paraName, pt.ParaX),
ActionName: "SupervisionNodeGroupConfig",
Payload: types.MustPBToJSON(payload),
}
rpcLaddr, _ := cmd.Flags().GetString("rpc_laddr")
ctx := jsonclient.NewRPCCtx(rpcLaddr, "Chain33.CreateTransaction", params, nil)
ctx.RunWithoutMarshal()
}
func supervisionNodeQuitCmd() *cobra.Command {
cmd := &cobra.Command{
Use: "quit",
Short: "quit for para chain's supervision node application",
Run: supervisionNodeQuit,
}
addSupervisionNodeQuitCmdFlags(cmd)
return cmd
}
func addSupervisionNodeQuitCmdFlags(cmd *cobra.Command) {
cmd.Flags().StringP("id", "i", "", "apply quit id for supervision node")
_ = cmd.MarkFlagRequired("id")
}
func supervisionNodeQuit(cmd *cobra.Command, args []string) {
paraName, _ := cmd.Flags().GetString("paraName")
id, _ := cmd.Flags().GetString("id")
if !strings.HasPrefix(paraName, "user.p") {
_, _ = fmt.Fprintln(os.Stderr, "paraName is not right, paraName format like `user.p.guodun.`")
return
}
payload := &pt.ParaNodeAddrConfig{Title: paraName, Op: 3, Id: id}
params := &rpctypes.CreateTxIn{
Execer: getRealExecName(paraName, pt.ParaX),
ActionName: "SupervisionNodeGroupConfig",
Payload: types.MustPBToJSON(payload),
}
rpcLaddr, _ := cmd.Flags().GetString("rpc_laddr")
ctx := jsonclient.NewRPCCtx(rpcLaddr, "Chain33.CreateTransaction", params, nil)
ctx.RunWithoutMarshal()
}
func getSupervisionNodeGroupAddrsCmd() *cobra.Command {
cmd := &cobra.Command{
Use: "addrs",
Short: "Query supervision node group's current addrs by title",
Run: supervisionNodeGroup,
}
return cmd
}
func supervisionNodeGroup(cmd *cobra.Command, args []string) {
rpcLaddr, _ := cmd.Flags().GetString("rpc_laddr")
paraName, _ := cmd.Flags().GetString("paraName")
var params rpctypes.Query4Jrpc
params.Execer = pt.ParaX
params.FuncName = "GetSupervisionNodeGroupAddrs"
req := pt.ReqParacrossNodeInfo{Title: paraName}
params.Payload = types.MustPBToJSON(&req)
var res types.ReplyConfig
ctx := jsonclient.NewRPCCtx(rpcLaddr, "Chain33.Query", params, &res)
ctx.Run()
}
func supervisionNodeGroupStatusCmd() *cobra.Command {
cmd := &cobra.Command{
Use: "status",
Short: "query supervision node group apply status by title",
Run: supervisionNodeGroupStatus,
}
return cmd
}
func supervisionNodeGroupStatus(cmd *cobra.Command, args []string) {
rpcLaddr, _ := cmd.Flags().GetString("rpc_laddr")
paraName, _ := cmd.Flags().GetString("paraName")
var params rpctypes.Query4Jrpc
params.Execer = pt.ParaX
params.FuncName = "GetSupervisionNodeGroupStatus"
req := pt.ReqParacrossNodeInfo{Title: paraName}
params.Payload = types.MustPBToJSON(&req)
var res pt.ParaNodeGroupStatus
ctx := jsonclient.NewRPCCtx(rpcLaddr, "Chain33.Query", params, &res)
ctx.Run()
}
func supervisionNodeGroupListCmd() *cobra.Command {
cmd := &cobra.Command{
Use: "list",
Short: "query supervision node group apply list by status",
Run: supervisionNodeGroupList,
}
getSupervisionNodeGroupListCmdFlags(cmd)
return cmd
}
func getSupervisionNodeGroupListCmdFlags(cmd *cobra.Command) {
cmd.Flags().Int32P("status", "s", 0, "status:1:apply, 2:approve, 3:quit")
_ = cmd.MarkFlagRequired("status")
}
func supervisionNodeGroupList(cmd *cobra.Command, args []string) {
rpcLaddr, _ := cmd.Flags().GetString("rpc_laddr")
status, _ := cmd.Flags().GetInt32("status")
var params rpctypes.Query4Jrpc
params.Execer = pt.ParaX
params.FuncName = "ListSupervisionNodeGroupStatus"
req := pt.ReqParacrossNodeInfo{
Status: status,
}
params.Payload = types.MustPBToJSON(&req)
var res pt.RespParacrossNodeGroups
ctx := jsonclient.NewRPCCtx(rpcLaddr, "Chain33.Query", params, &res)
ctx.Run()
}
...@@ -120,8 +120,7 @@ func (e *Paracross) ExecDelLocal_NodeGroupConfig(payload *pt.ParaNodeGroupConfig ...@@ -120,8 +120,7 @@ func (e *Paracross) ExecDelLocal_NodeGroupConfig(payload *pt.ParaNodeGroupConfig
set.KV = append(set.KV, &types.KeyValue{ set.KV = append(set.KV, &types.KeyValue{
Key: calcLocalNodeGroupStatusTitle(g.Current.Status, g.Current.Title, g.Current.Id), Value: nil}) Key: calcLocalNodeGroupStatusTitle(g.Current.Status, g.Current.Title, g.Current.Id), Value: nil})
} } else if log.Ty == pt.TyLogParaNodeConfig {
if log.Ty == pt.TyLogParaNodeConfig {
var g pt.ReceiptParaNodeConfig var g pt.ReceiptParaNodeConfig
err := types.Decode(log.Log, &g) err := types.Decode(log.Log, &g)
if err != nil { if err != nil {
...@@ -139,6 +138,28 @@ func (e *Paracross) ExecDelLocal_NodeGroupConfig(payload *pt.ParaNodeGroupConfig ...@@ -139,6 +138,28 @@ func (e *Paracross) ExecDelLocal_NodeGroupConfig(payload *pt.ParaNodeGroupConfig
return &set, nil return &set, nil
} }
// ExecDelLocal_NodeGroupConfig node group config tx delete process
func (e *Paracross) ExecDelLocal_SupervisionNodeGroupConfig(payload *pt.ParaNodeAddrConfig, tx *types.Transaction, receiptData *types.ReceiptData, index int) (*types.LocalDBSet, error) {
var set types.LocalDBSet
for _, log := range receiptData.Logs {
if log.Ty == pt.TyLogParaSupervisionNodeGroupConfig {
var g pt.ReceiptParaNodeGroupConfig
err := types.Decode(log.Log, &g)
if err != nil {
return nil, err
}
if g.Prev != nil {
set.KV = append(set.KV, &types.KeyValue{
Key: calcLocalSupervisionNodeGroupStatusTitle(g.Prev.Status, g.Current.Title, g.Current.Id), Value: types.Encode(g.Prev)})
}
set.KV = append(set.KV, &types.KeyValue{
Key: calcLocalSupervisionNodeGroupStatusTitle(g.Current.Status, g.Current.Title, g.Current.Id), Value: nil})
}
}
return &set, nil
}
//ExecDelLocal_AssetTransfer asset transfer del local db process //ExecDelLocal_AssetTransfer asset transfer del local db process
func (e *Paracross) ExecDelLocal_AssetTransfer(payload *types.AssetsTransfer, tx *types.Transaction, receiptData *types.ReceiptData, index int) (*types.LocalDBSet, error) { func (e *Paracross) ExecDelLocal_AssetTransfer(payload *types.AssetsTransfer, tx *types.Transaction, receiptData *types.ReceiptData, index int) (*types.LocalDBSet, error) {
var set types.LocalDBSet var set types.LocalDBSet
......
...@@ -6,7 +6,6 @@ package executor ...@@ -6,7 +6,6 @@ package executor
import ( import (
"bytes" "bytes"
"encoding/hex" "encoding/hex"
"github.com/33cn/chain33/common" "github.com/33cn/chain33/common"
...@@ -122,8 +121,7 @@ func (e *Paracross) ExecLocal_NodeGroupConfig(payload *pt.ParaNodeGroupConfig, t ...@@ -122,8 +121,7 @@ func (e *Paracross) ExecLocal_NodeGroupConfig(payload *pt.ParaNodeGroupConfig, t
set.KV = append(set.KV, &types.KeyValue{ set.KV = append(set.KV, &types.KeyValue{
Key: calcLocalNodeGroupStatusTitle(g.Current.Status, g.Current.Title, g.Current.Id), Value: types.Encode(g.Current)}) Key: calcLocalNodeGroupStatusTitle(g.Current.Status, g.Current.Title, g.Current.Id), Value: types.Encode(g.Current)})
} } else if log.Ty == pt.TyLogParaNodeConfig {
if log.Ty == pt.TyLogParaNodeConfig {
var g pt.ReceiptParaNodeConfig var g pt.ReceiptParaNodeConfig
err := types.Decode(log.Log, &g) err := types.Decode(log.Log, &g)
if err != nil { if err != nil {
...@@ -142,6 +140,27 @@ func (e *Paracross) ExecLocal_NodeGroupConfig(payload *pt.ParaNodeGroupConfig, t ...@@ -142,6 +140,27 @@ func (e *Paracross) ExecLocal_NodeGroupConfig(payload *pt.ParaNodeGroupConfig, t
return &set, nil return &set, nil
} }
func (e *Paracross) ExecLocal_SupervisionNodeGroupConfig(payload *pt.ParaNodeAddrConfig, tx *types.Transaction, receiptData *types.ReceiptData, index int) (*types.LocalDBSet, error) {
var set types.LocalDBSet
for _, log := range receiptData.Logs {
if log.Ty == pt.TyLogParaSupervisionNodeGroupConfig {
var g pt.ReceiptParaNodeGroupConfig
err := types.Decode(log.Log, &g)
if err != nil {
return nil, err
}
if g.Prev != nil {
set.KV = append(set.KV, &types.KeyValue{
Key: calcLocalSupervisionNodeGroupStatusTitle(g.Prev.Status, g.Current.Title, g.Current.Id), Value: nil})
}
set.KV = append(set.KV, &types.KeyValue{
Key: calcLocalSupervisionNodeGroupStatusTitle(g.Current.Status, g.Current.Title, g.Current.Id), Value: types.Encode(g.Current)})
}
}
return &set, nil
}
//ExecLocal_AssetTransfer asset transfer local proc //ExecLocal_AssetTransfer asset transfer local proc
func (e *Paracross) ExecLocal_AssetTransfer(payload *types.AssetsTransfer, tx *types.Transaction, receiptData *types.ReceiptData, index int) (*types.LocalDBSet, error) { func (e *Paracross) ExecLocal_AssetTransfer(payload *types.AssetsTransfer, tx *types.Transaction, receiptData *types.ReceiptData, index int) (*types.LocalDBSet, error) {
var set types.LocalDBSet var set types.LocalDBSet
......
...@@ -46,6 +46,8 @@ var ( ...@@ -46,6 +46,8 @@ var (
paraSupervisionNodeGroupIDPrefix string paraSupervisionNodeGroupIDPrefix string
paraSupervisionSelfConsensStages string paraSupervisionSelfConsensStages string
paraSupervisionSelfConsensStageIDPrefix string paraSupervisionSelfConsensStageIDPrefix string
localSupervisionNodeGroupStatusTitle string
) )
func setPrefix() { func setPrefix() {
...@@ -81,6 +83,8 @@ func setPrefix() { ...@@ -81,6 +83,8 @@ func setPrefix() {
paraSupervisionNodeGroupIDPrefix = "mavl-paracross-supervision-title-nodegroupid-" paraSupervisionNodeGroupIDPrefix = "mavl-paracross-supervision-title-nodegroupid-"
paraSupervisionSelfConsensStages = "mavl-paracross-supervision-selfconsens-stages-" paraSupervisionSelfConsensStages = "mavl-paracross-supervision-selfconsens-stages-"
paraSupervisionSelfConsensStageIDPrefix = "mavl-paracross-supervision-selfconsens-id-" paraSupervisionSelfConsensStageIDPrefix = "mavl-paracross-supervision-selfconsens-id-"
localSupervisionNodeGroupStatusTitle = "LODB-paracross-supervision-nodegroupStatusTitle-"
} }
func calcTitleKey(t string) []byte { func calcTitleKey(t string) []byte {
...@@ -201,6 +205,18 @@ func calcLocalNodeGroupAllPrefix() []byte { ...@@ -201,6 +205,18 @@ func calcLocalNodeGroupAllPrefix() []byte {
return []byte(fmt.Sprintf(localNodeGroupStatusTitle)) return []byte(fmt.Sprintf(localNodeGroupStatusTitle))
} }
func calcLocalSupervisionNodeGroupStatusTitle(status int32, title, id string) []byte {
return []byte(fmt.Sprintf(localSupervisionNodeGroupStatusTitle+"%02d-%s-%s", status, title, id))
}
func calcLocalSupervisionNodeGroupStatusPrefix(status int32) []byte {
return []byte(fmt.Sprintf(localSupervisionNodeGroupStatusTitle+"%02d-", status))
}
func calcLocalSupervisionNodeGroupAllPrefix() []byte {
return []byte(fmt.Sprintf(localSupervisionNodeGroupStatusTitle))
}
//bind miner //bind miner
func calcParaBindMinerAddr(node, bind string) []byte { func calcParaBindMinerAddr(node, bind string) []byte {
return []byte(fmt.Sprintf(paraBindMinderAddr+"%s-%s", node, bind)) return []byte(fmt.Sprintf(paraBindMinderAddr+"%s-%s", node, bind))
......
...@@ -355,6 +355,11 @@ func (c *Paracross) allow(tx *types.Transaction, index int) error { ...@@ -355,6 +355,11 @@ func (c *Paracross) allow(tx *types.Transaction, index int) error {
return nil return nil
} }
} }
if cfg.IsDappFork(c.GetHeight(), pt.ParaX, pt.ForkParaSupervisionRbk) {
if payload.Ty == pt.ParacrossActionSupervisionNodeGroupConfig {
return nil
}
}
} }
return types.ErrNotAllow return types.ErrNotAllow
} }
......
...@@ -239,11 +239,21 @@ func (p *Paracross) Query_GetNodeGroupStatus(in *pt.ReqParacrossNodeInfo) (types ...@@ -239,11 +239,21 @@ func (p *Paracross) Query_GetNodeGroupStatus(in *pt.ReqParacrossNodeInfo) (types
return stat, nil return stat, nil
} }
//Query_GetSupervisionNodeGroupStatus get specific node addr info
func (p *Paracross) Query_GetSupervisionNodeGroupStatus(in *pt.ReqParacrossNodeInfo) (types.Message, error) {
if in == nil || in.Title == "" {
return nil, types.ErrInvalidParam
}
stat, err := getSupervisionNodeGroupStatus(p.GetStateDB(), in.Title)
return stat, err
}
//Query_ListNodeGroupStatus list node info by status //Query_ListNodeGroupStatus list node info by status
func (p *Paracross) Query_ListNodeGroupStatus(in *pt.ReqParacrossNodeInfo) (types.Message, error) { func (p *Paracross) Query_ListNodeGroupStatus(in *pt.ReqParacrossNodeInfo) (types.Message, error) {
if in == nil { if in == nil {
return nil, types.ErrInvalidParam return nil, types.ErrInvalidParam
} }
resp, err := listLocalNodeGroupStatus(p.GetLocalDB(), in.Status) resp, err := listLocalNodeGroupStatus(p.GetLocalDB(), in.Status)
if err != nil { if err != nil {
return resp, err return resp, err
...@@ -263,6 +273,22 @@ func (p *Paracross) Query_ListNodeGroupStatus(in *pt.ReqParacrossNodeInfo) (type ...@@ -263,6 +273,22 @@ func (p *Paracross) Query_ListNodeGroupStatus(in *pt.ReqParacrossNodeInfo) (type
return resp, nil return resp, nil
} }
//Query_ListSupervisionNodeGroupStatus list node info by status
func (p *Paracross) Query_ListSupervisionNodeGroupStatus(in *pt.ReqParacrossNodeInfo) (types.Message, error) {
if in == nil {
return nil, types.ErrInvalidParam
}
var prefix []byte
if in.Status == 0 {
prefix = calcLocalSupervisionNodeGroupAllPrefix()
} else {
prefix = calcLocalSupervisionNodeGroupStatusPrefix(in.Status)
}
resp, err := listNodeGroupStatus(p.GetLocalDB(), prefix)
return resp, err
}
//Query_ListTitles query paracross titles list //Query_ListTitles query paracross titles list
func (p *Paracross) Query_ListTitles(in *types.ReqNil) (types.Message, error) { func (p *Paracross) Query_ListTitles(in *types.ReqNil) (types.Message, error) {
return p.paracrossListTitles() return p.paracrossListTitles()
......
...@@ -485,7 +485,7 @@ func (a *action) SupervisionNodeGroupConfig(config *pt.ParaNodeAddrConfig) (*typ ...@@ -485,7 +485,7 @@ func (a *action) SupervisionNodeGroupConfig(config *pt.ParaNodeAddrConfig) (*typ
if !validTitle(cfg, config.Title) { if !validTitle(cfg, config.Title) {
return nil, pt.ErrInvalidTitle return nil, pt.ErrInvalidTitle
} }
if !types.IsParaExecName(string(a.tx.Execer)) && cfg.IsDappFork(a.exec.GetMainHeight(), pt.ParaX, pt.ForkParaAssetTransferRbk) { if !types.IsParaExecName(string(a.tx.Execer)) && cfg.IsDappFork(a.exec.GetMainHeight(), pt.ParaX, pt.ForkParaSupervisionRbk) {
return nil, errors.Wrapf(types.ErrInvalidParam, "exec=%s,should prefix with user.p.", string(a.tx.Execer)) return nil, errors.Wrapf(types.ErrInvalidParam, "exec=%s,should prefix with user.p.", string(a.tx.Execer))
} }
if (config.Op == pt.ParacrossSupervisionNodeApprove || config.Op == pt.ParacrossSupervisionNodeQuit) && config.Id == "" { if (config.Op == pt.ParacrossSupervisionNodeApprove || config.Op == pt.ParacrossSupervisionNodeQuit) && config.Id == "" {
......
...@@ -49,13 +49,13 @@ const ( ...@@ -49,13 +49,13 @@ const (
TyLogParaCrossAssetTransfer = 670 TyLogParaCrossAssetTransfer = 670
TyLogParaBindMinerAddr = 671 TyLogParaBindMinerAddr = 671
TyLogParaBindMinerNode = 672 TyLogParaBindMinerNode = 672
// Supervision Node
TyLogParaSupervisionNodeGroupConfig = 680 TyLogParaSupervisionNodeGroupConfig = 680
TyLogParaSupervisionNodeGroupAddrsUpdate TyLogParaSupervisionNodeGroupAddrsUpdate = 681
TyLogParaSupervisionNodeConfig TyLogParaSupervisionNodeConfig = 682
TyLogParaSupervisionNodeStatusUpdate TyLogParaSupervisionNodeStatusUpdate = 683
TyLogParaStageSupervisionGroupUpdate TyLogParaStageSupervisionGroupUpdate = 684
TyLogParaSupervisionNodeGroupStatusUpdate TyLogParaSupervisionNodeGroupStatusUpdate = 685
) )
// action type // action type
......
...@@ -28,6 +28,8 @@ var ( ...@@ -28,6 +28,8 @@ var (
ForkParaSelfConsStages = "ForkParaSelfConsStages" ForkParaSelfConsStages = "ForkParaSelfConsStages"
// ForkParaAssetTransferRbk 平行链资产转移平行链失败主链回滚 // ForkParaAssetTransferRbk 平行链资产转移平行链失败主链回滚
ForkParaAssetTransferRbk = "ForkParaAssetTransferRbk" ForkParaAssetTransferRbk = "ForkParaAssetTransferRbk"
// ForkParaSupervisionRbk 平行链新增监督节点
ForkParaSupervisionRbk = "ForkParaSupervisionRbk"
// ParaConsSubConf sub // ParaConsSubConf sub
ParaConsSubConf = "consensus.sub.para" ParaConsSubConf = "consensus.sub.para"
...@@ -56,6 +58,7 @@ func InitFork(cfg *types.Chain33Config) { ...@@ -56,6 +58,7 @@ func InitFork(cfg *types.Chain33Config) {
cfg.RegisterDappFork(ParaX, ForkCommitTx, 1850000) cfg.RegisterDappFork(ParaX, ForkCommitTx, 1850000)
cfg.RegisterDappFork(ParaX, ForkLoopCheckCommitTxDone, 3230000) cfg.RegisterDappFork(ParaX, ForkLoopCheckCommitTxDone, 3230000)
cfg.RegisterDappFork(ParaX, ForkParaAssetTransferRbk, 4500000) cfg.RegisterDappFork(ParaX, ForkParaAssetTransferRbk, 4500000)
cfg.RegisterDappFork(ParaX, ForkParaSupervisionRbk, 6000000)
//只在平行链启用 //只在平行链启用
cfg.RegisterDappFork(ParaX, ForkParaSelfConsStages, types.MaxHeight) cfg.RegisterDappFork(ParaX, ForkParaSelfConsStages, types.MaxHeight)
...@@ -92,25 +95,31 @@ func (p *ParacrossType) GetName() string { ...@@ -92,25 +95,31 @@ func (p *ParacrossType) GetName() string {
// GetLogMap get receipt log map // GetLogMap get receipt log map
func (p *ParacrossType) GetLogMap() map[int64]*types.LogInfo { func (p *ParacrossType) GetLogMap() map[int64]*types.LogInfo {
return map[int64]*types.LogInfo{ return map[int64]*types.LogInfo{
TyLogParacrossCommit: {Ty: reflect.TypeOf(ReceiptParacrossCommit{}), Name: "LogParacrossCommit"}, TyLogParacrossCommit: {Ty: reflect.TypeOf(ReceiptParacrossCommit{}), Name: "LogParacrossCommit"},
TyLogParacrossCommitDone: {Ty: reflect.TypeOf(ReceiptParacrossDone{}), Name: "LogParacrossCommitDone"}, TyLogParacrossCommitDone: {Ty: reflect.TypeOf(ReceiptParacrossDone{}), Name: "LogParacrossCommitDone"},
TyLogParacrossCommitRecord: {Ty: reflect.TypeOf(ReceiptParacrossRecord{}), Name: "LogParacrossCommitRecord"}, TyLogParacrossCommitRecord: {Ty: reflect.TypeOf(ReceiptParacrossRecord{}), Name: "LogParacrossCommitRecord"},
TyLogParaAssetWithdraw: {Ty: reflect.TypeOf(types.ReceiptAccountTransfer{}), Name: "LogParaAssetWithdraw"}, TyLogParaAssetWithdraw: {Ty: reflect.TypeOf(types.ReceiptAccountTransfer{}), Name: "LogParaAssetWithdraw"},
TyLogParaAssetTransfer: {Ty: reflect.TypeOf(types.ReceiptAccountTransfer{}), Name: "LogParaAssetTransfer"}, TyLogParaAssetTransfer: {Ty: reflect.TypeOf(types.ReceiptAccountTransfer{}), Name: "LogParaAssetTransfer"},
TyLogParaAssetDeposit: {Ty: reflect.TypeOf(types.ReceiptAccountTransfer{}), Name: "LogParaAssetDeposit"}, TyLogParaAssetDeposit: {Ty: reflect.TypeOf(types.ReceiptAccountTransfer{}), Name: "LogParaAssetDeposit"},
TyLogParaCrossAssetTransfer: {Ty: reflect.TypeOf(types.ReceiptAccountTransfer{}), Name: "LogParaCrossAssetTransfer"}, TyLogParaCrossAssetTransfer: {Ty: reflect.TypeOf(types.ReceiptAccountTransfer{}), Name: "LogParaCrossAssetTransfer"},
TyLogParacrossMiner: {Ty: reflect.TypeOf(ReceiptParacrossMiner{}), Name: "LogParacrossMiner"}, TyLogParacrossMiner: {Ty: reflect.TypeOf(ReceiptParacrossMiner{}), Name: "LogParacrossMiner"},
TyLogParaNodeConfig: {Ty: reflect.TypeOf(ReceiptParaNodeConfig{}), Name: "LogParaNodeConfig"}, TyLogParaNodeConfig: {Ty: reflect.TypeOf(ReceiptParaNodeConfig{}), Name: "LogParaNodeConfig"},
TyLogParaNodeStatusUpdate: {Ty: reflect.TypeOf(ReceiptParaNodeAddrStatUpdate{}), Name: "LogParaNodeAddrStatUpdate"}, TyLogParaNodeStatusUpdate: {Ty: reflect.TypeOf(ReceiptParaNodeAddrStatUpdate{}), Name: "LogParaNodeAddrStatUpdate"},
TyLogParaNodeGroupAddrsUpdate: {Ty: reflect.TypeOf(types.ReceiptConfig{}), Name: "LogParaNodeGroupAddrsUpdate"}, TyLogParaNodeGroupAddrsUpdate: {Ty: reflect.TypeOf(types.ReceiptConfig{}), Name: "LogParaNodeGroupAddrsUpdate"},
TyLogParaNodeVoteDone: {Ty: reflect.TypeOf(ReceiptParaNodeVoteDone{}), Name: "LogParaNodeVoteDone"}, TyLogParaNodeVoteDone: {Ty: reflect.TypeOf(ReceiptParaNodeVoteDone{}), Name: "LogParaNodeVoteDone"},
TyLogParaNodeGroupConfig: {Ty: reflect.TypeOf(ReceiptParaNodeGroupConfig{}), Name: "LogParaNodeGroupConfig"}, TyLogParaNodeGroupConfig: {Ty: reflect.TypeOf(ReceiptParaNodeGroupConfig{}), Name: "LogParaNodeGroupConfig"},
TyLogParaNodeGroupStatusUpdate: {Ty: reflect.TypeOf(ReceiptParaNodeGroupConfig{}), Name: "LogParaNodeGroupStatusUpdate"}, TyLogParaNodeGroupStatusUpdate: {Ty: reflect.TypeOf(ReceiptParaNodeGroupConfig{}), Name: "LogParaNodeGroupStatusUpdate"},
TyLogParaSelfConsStageConfig: {Ty: reflect.TypeOf(ReceiptSelfConsStageConfig{}), Name: "LogParaSelfConsStageConfig"}, TyLogParaSelfConsStageConfig: {Ty: reflect.TypeOf(ReceiptSelfConsStageConfig{}), Name: "LogParaSelfConsStageConfig"},
TyLogParaStageVoteDone: {Ty: reflect.TypeOf(ReceiptSelfConsStageVoteDone{}), Name: "LogParaSelfConfStageVoteDoen"}, TyLogParaStageVoteDone: {Ty: reflect.TypeOf(ReceiptSelfConsStageVoteDone{}), Name: "LogParaSelfConfStageVoteDoen"},
TyLogParaStageGroupUpdate: {Ty: reflect.TypeOf(ReceiptSelfConsStagesUpdate{}), Name: "LogParaSelfConfStagesUpdate"}, TyLogParaStageGroupUpdate: {Ty: reflect.TypeOf(ReceiptSelfConsStagesUpdate{}), Name: "LogParaSelfConfStagesUpdate"},
TyLogParaBindMinerAddr: {Ty: reflect.TypeOf(ReceiptParaBindMinerInfo{}), Name: "TyLogParaBindMinerAddrUpdate"}, TyLogParaBindMinerAddr: {Ty: reflect.TypeOf(ReceiptParaBindMinerInfo{}), Name: "TyLogParaBindMinerAddrUpdate"},
TyLogParaBindMinerNode: {Ty: reflect.TypeOf(ReceiptParaNodeBindListUpdate{}), Name: "TyLogParaBindNodeListUpdate"}, TyLogParaBindMinerNode: {Ty: reflect.TypeOf(ReceiptParaNodeBindListUpdate{}), Name: "TyLogParaBindNodeListUpdate"},
TyLogParaSupervisionNodeGroupConfig: {Ty: reflect.TypeOf(ReceiptParaNodeGroupConfig{}), Name: "LogParaSupervisionNodeGroupConfig"},
TyLogParaSupervisionNodeGroupAddrsUpdate: {Ty: reflect.TypeOf(types.ReceiptConfig{}), Name: "LogParaSupervisionNodeGroupAddrsUpdate"},
TyLogParaSupervisionNodeConfig: {Ty: reflect.TypeOf(ReceiptParaNodeConfig{}), Name: "LogParaSupervisionNodeConfig"},
TyLogParaSupervisionNodeStatusUpdate: {Ty: reflect.TypeOf(ReceiptParaNodeAddrStatUpdate{}), Name: "LogParaSupervisionNodeStatusUpdate"},
TyLogParaStageSupervisionGroupUpdate: {Ty: reflect.TypeOf(ReceiptSelfConsStagesUpdate{}), Name: "LogParaStageSupervisionGroupUpdate"},
TyLogParaSupervisionNodeGroupStatusUpdate: {Ty: reflect.TypeOf(ReceiptParaNodeGroupConfig{}), Name: "LogParaSupervisionNodeGroupStatusUpdate"},
} }
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment