Commit 419e010a authored by QM's avatar QM

add make docker-compose dapp=autonomy

parent c52d3858
......@@ -126,8 +126,8 @@ function base_init() {
sed -i $sedfix 's/^genesis="12qyocayNF7.*/genesis="1G5Cjy8LuQex2fuYv3gzb7B8MxAnxLEqt3"/g' chain33.toml
#autonomy
sed -i $sedfix 's/^useBalance=.*/useBalance=true/g' chain33.toml
sed -i $sedfix 's/^total="16htvcBNS.*/total="1Q9sQwothzM1gKSzkVZ8Dt1tqKX1uzSagx"/g' chain33.toml
# sed -i $sedfix 's/^useBalance=.*/useBalance=true/g' chain33.toml
# sed -i $sedfix 's/^total="16htvcBNS.*/total="1Q9sQwothzM1gKSzkVZ8Dt1tqKX1uzSagx"/g' chain33.toml
if [ "$DAPP" == "x2ethereum" ]; then
sed -i $sedfix 's/^enableReduceLocaldb=.*/enableReduceLocaldb=false/g' chain33.toml
......
......@@ -4,6 +4,10 @@ strpwd=$(pwd)
strcmd=${strpwd##*dapp/}
strapp=${strcmd%/cmd*}
OUT_DIR="${1}/$strapp"
mkdir -p "${OUT_DIR}"
cp ./build/* "${OUT_DIR}"
OUT_TESTDIR="${1}/dapptest/$strapp"
mkdir -p "${OUT_TESTDIR}"
cp ./test/* "${OUT_TESTDIR}"
#!/usr/bin/env bash
# shellcheck disable=SC2128
# shellcheck source=/dev/null
set -x
set +e
source "./publicTest.sh"
# shellcheck disable=SC2034
{
propKey="0xfd0c4a8a1efcd221ee0f36b7d4f57d8ff843cb8bc193b39c7863332d355acafa"
propAddr="15VUiygdxMSZ3rykwe742yomp2cPJ9Tfve"
#votePrKey="1c3e6cac2f887e1ab9180e2d5772dc4ba01accb8d4df434faba097003eb35482"
#voteAddr="1Q9sQwothzM1gKSzkVZ8Dt1tqKX1uzSagx"
votePrKey="CC38546E9E659D15E6B4893F0AB32A06D103931A8230B0BDE71459D2B27D6944" #14KEKbYtKKQm4wMthSK9J4La4nAiidGozt
voteAddr2="1EbDHAXpoiewjPLX9uqoz38HsKqMXayZrF"
votePrKey2="B0BB75BC49A787A71F4834DA18614763B53A18291ECE6B5EDEC3AD19D150C3E7" #1EbDHAXpoiewjPLX9uqoz38HsKqMXayZrF
voteAddr3="1KcCVZLSQYRUwE5EXTsAoQs9LuJW6xwfQa"
votePrKey3="2AFF1981291355322C7A6308D46A9C9BA311AA21D94F36B43FC6A6021A1334CF"
boardsAddr="1N578zmVzVR7RxLfnp7XAeDmAy499Jw3q2
, 1DZ1kL9x3rRwz7EZjcLt1kMYu6Zdp3MjGR
, 1HUYR1Mzb91m3dmsEE1vPrv7BsAHmEtVzM
, 1JHmVgchSLjszN9LAYa3gds811c4BH2J51
, 14TDcn95hxHbpySPtxGDK3aY6qDNuk5idg
, 1EpbYadEAcwbrxuh6Ph2qyJZhMY9F9CCCv
, 1NqfXb3YotDTPuShgSAhrBH28ETzCrsZx2
, 138xSezQUi9kynnAZR23kWBwHvDSRX8JDK
, 18bncBidkwRaUYPaqa9Rc58tWeRT2C5tfL
, 16z3gEvRGof8cnQRvicV8BdY54fUfnBo8A
, 1DpzRWk9SYnEvuGrFsJPFvMVRSYRHaCbtU
, 1JSQbsb1hfB6CLzwzVZZEtai4da8m59obK
, 12bRYKMsLSbN5upxoSenypWrygVuQh8rM5
, 1Ew4Cpcfh1u1EeRkYPwVc4PRaSnz4D2eph
, 156yPWN3eeZ4yPiwHRifu41FmrTVPavXQ5
, 192YKhdAkFm18KLcGumM8JeDgWrnpSdo93
, 12kXgBxsKzUmhfX5Mnv9EKRNGjQXhZzDFd
, 1HmyNGYj2xyMmQDTpcuheLKXKBe5rj3QpQ
, 1HGPrjc6H7yBzFV5yCbibvnSUGUgdDNQi3
, 19WGov4b7wLf4f8JHMRDnJsGVNMDzap38w
, 1HmRa1jAnzJ5SpJRrUWqUki6hx1u33Nbq4
, 168Sn1DXnLrZHTcAM9stD6t2P49fNuJfJ9
, 13KTf57aCkVVJYNJBXBBveiA5V811SrLcT
, 1JQwQWsShTHC4zxHzbUfYQK4kRBriUQdEe
, 1NHuKqoKe3hyv52PF8XBAyaTmJWAqA2Jbb"
# shellcheck disable=SC2206
arrayAddr=(${boardsAddr//,/ })
lenAddr=${#arrayAddr[@]}
for ((i = 0; i < lenAddr - 1; i++)); do
boards=$(echo "${boards}${arrayAddr[i]}-")
done
# shellcheck disable=SC2116
boards=$(echo "${boards}${arrayAddr[lenAddr-1]}")
boardsPrKey="fa54751118c8159ade22c253f85945a4dd2030b1cf2502eaf785d0a4f5ad7e35
,da9371ea52f1fc9d72e75dbc9836774895cd0966fd53c83f5e2c92d878903693
,ad9731261c40c68fee96f7b846408fa33d1f3dc2a27bdb3694ec8f3aa153a98b
,e902d23ad26052cec64e9ed9055853327787b3bf26eb4646a6d6c1bb516f9fcd
,b3af59368bcc6779aecb4e7fbf0cc4040f8f8329eb7632d580be4b6d3be15357
,fd9284c11707b571e347b8f44c54aae89c0810d410a7c1f9613326358c564a5e
,b013948c123986aadc2525bfe9935dd07972e14b250b938153e763f917ada8d3
,5641e3aba9ce0660665cd1a816d1b50267b5bc5f337f73e6ceed0cc5ececa7d2
,5a7631b7101252d685bf2b4ba2f11a72fb867faeaa545064ce8d0901ffc3cb17
,c9d0d2639c0c0f2b275e5bf8a2797122af110316a4e8e1fe03c39693f5028c93
,00b4e3ac1365b89d68c8d5b07b3505cd614408b0d9c8c88df564d4e072deb401
,aa139d3f16c1785b2a9171d7863bc4ee9d45115cc0fa71a14c43536c933d1659
,33f111573a4613477f8291928a9bae012a74fc9858acb22c9c65ecf7844b63f2
,44e43dd0f769bb99638b9cc3c7468225ff703f69c17e9c4751d04e45fdc6c4a0
,9a75d6c779846fe2ad4a36021fe9d08652ca69ce09ab39ad874d921a5ec41716
,f5ca6b2ad545bd4b854871b18c8d37d2fe8c3625e91be86a204c4086f28e8d0f
,89504608a03590e5a4d8c1c82b75e908b28f9963587c85b96b628d238d3a4d1a
,fa653545ae52403665fb803ef410c4d3d7f74628b6d3f92218968ad496e4f81b
,227df96a414e26e85c7d87a12296344e6a731ce73e424ba9845cb305ec963843
,64259075bf2e5a74334442f5048ceaf8427f6097e2dac99c0e463785c7768550
,3b812d92b5c365d698255f55c3f0dca027c2f89f2409c51a6297bcf3343c11e6
,cd284cd17456b73619fa609bb9e3105e8eff5d059c5e0b6eb1effbebd4d64144
,e892212221b3b58211b90194365f4662764b6d5474ef2961ef77c909e31eeed3
,9d19a2e9a440187010634f4f08ce36e2bc7b521581436a99f05568be94dc66ea
,45d4ce009e25e6d5e00d8d3a50565944b2e3604aa473680a656b242d9acbff35"
# shellcheck disable=SC2206
arrayKey=(${boardsPrKey//,/ })
changeKey="0x7503333e74190abdfa10b9e5e3a225136ea7ed1f5beeeb710b1f3933a083b2c5"
changeAddr="15MP8oQXW9UuzbfMsUyVy4ThStm9ZH7hgG"
changeKey2="0x38d12b36d8d84a80131db15f2a067e2706f8367c933c075b3b3cefa3a864ad15"
changeAddr2="1Kubv93zSatYRq6eHdBa4BkMBwtB2UpQum"
minerAddr="12qyocayNF7Lv6C9qW4avxs2E7U41fKSfv"
Chain33Cli="../../chain33-cli"
proposalRuleID=""
proposalBoardID=""
proposalProjectID=""
start=0
end=0
last_header=0
boardApproveRatio=50
pubOpposeRatio=33
proposalAmount=2000000000
largeProjectAmount=100000000000000
publicPeriod=172800
pubAttendRatio=60
pubApproveRatio=65
}
function update_last_header() {
last_header=$(${Chain33Cli} block last_header | jq -r ".height")
local h=100
if [ "$#" -eq 1 ]; then
h=$1
fi
start=$((last_header + h))
end=$((start + 20 + 720))
}
function sign_and_send() {
local raw="$1"
local key="$2"
data=$(${Chain33Cli} wallet sign -d "${raw}" -k "${key}")
hash=$(${Chain33Cli} wallet send -d "${data}")
check_tx "${Chain33Cli}" "${hash}"
echo "${hash}"
}
function proposalRuleTx() {
raw=$(${Chain33Cli} autonomy proposalRule -e "${end}" -s "${start}" -l 1000000 -p 20 -r ${boardApproveRatio} -a ${pubAttendRatio} -v ${pubApproveRatio} -o ${pubOpposeRatio} -u ${publicPeriod})
sign_and_send "${raw}" "${propKey}"
proposalRuleID="${hash}"
}
# $1 status
function showRule_status() {
local status=$1
result=$(${Chain33Cli} autonomy showRule -p "${proposalRuleID}" -y 0 | jq -r ".propRules[0].status")
is_equal "${result}" "${status}"
result=$(${Chain33Cli} autonomy showRule -p "${proposalRuleID}" -y 1 -s "${status}")
is_not_equal "${result}" "ErrNotFound"
}
function check_activeRule() {
result=$(${Chain33Cli} autonomy showActiveRule | jq -r ".boardApproveRatio")
is_equal "${result}" "${boardApproveRatio}"
result=$(${Chain33Cli} autonomy showActiveRule | jq -r ".pubOpposeRatio")
is_equal "${result}" "${pubOpposeRatio}"
result=$(${Chain33Cli} autonomy showActiveRule | jq -r ".publicPeriod")
is_equal "${result}" "${publicPeriod}"
result=$(${Chain33Cli} autonomy showActiveRule | jq -r ".pubAttendRatio")
is_equal "${result}" "${pubAttendRatio}"
result=$(${Chain33Cli} autonomy showActiveRule | jq -r ".pubApproveRatio")
is_equal "${result}" "${pubApproveRatio}"
}
function testProposalRule() {
# proposal
echo -e "${GRE}=========== $FUNCNAME begin ===========${NOC}"
update_last_header 10
proposalRuleTx
#vote
block_wait "${Chain33Cli}" 10
raw=$(${Chain33Cli} autonomy voteRule -r 1 -p "${proposalRuleID}")
sign_and_send "${raw}" "${votePrKey}"
raw=$(${Chain33Cli} autonomy voteRule -r 1 -p "${proposalRuleID}")
sign_and_send "${raw}" "${votePrKey2}"
raw=$(${Chain33Cli} autonomy voteRule -r 1 -p "${proposalRuleID}")
sign_and_send "${raw}" "${votePrKey3}"
showRule_status 4
check_activeRule
#test revoke
update_last_header
proposalRuleTx
raw=$(${Chain33Cli} autonomy revokeRule -p "${proposalRuleID}")
sign_and_send "${raw}" "${propKey}"
showRule_status 2
echo -e "${GRE}=========== $FUNCNAME end ===========${NOC}"
}
function proposalBoardTx() {
raw=$(${Chain33Cli} autonomy proposalBoard -e "${end}" -s "${start}" -u 3 -b "${boards}")
sign_and_send "${raw}" "${propKey}"
proposalBoardID="${hash}"
}
# $1 status
function showBoard_status() {
local status=$1
result=$(${Chain33Cli} autonomy showBoard -p "${proposalBoardID}" -y 0 | jq -r ".propBoards[0].status")
is_equal "${result}" "${status}"
result=$(${Chain33Cli} autonomy showBoard -p "${proposalBoardID}" -y 1 -s "${status}")
is_not_equal "${result}" "ErrNotFound"
}
function check_activeBoard() {
${Chain33Cli} autonomy showActiveBoard
for ((i = 0; i < lenAddr; i++)); do
ret=$(${Chain33Cli} autonomy showActiveBoard | jq -r ".boards[$i]")
if [ "${arrayAddr[i]}" != "${ret}" ]; then
exit 1
fi
done
}
function testProposalBoard() {
#proposal
echo -e "${GRE}=========== $FUNCNAME begin ===========${NOC}"
update_last_header 10
proposalBoardTx
#vote
block_wait "${Chain33Cli}" 10
raw=$(${Chain33Cli} autonomy voteBoard -r 1 -p "${proposalBoardID}")
sign_and_send "${raw}" "${votePrKey}"
raw=$(${Chain33Cli} autonomy voteBoard -r 1 -p "${proposalBoardID}")
sign_and_send "${raw}" "${votePrKey2}"
#query
showBoard_status 4
check_activeBoard
#test revoke
update_last_header
proposalBoardTx
raw=$(${Chain33Cli} autonomy revokeBoard -p "${proposalBoardID}")
sign_and_send "${raw}" "${propKey}"
showBoard_status 2
echo -e "${GRE}=========== $FUNCNAME end ===========${NOC}"
}
function proposalProjectTx() {
raw=$(${Chain33Cli} autonomy proposalProject -e "${end}" -s "${start}" -a 1 -o "${propAddr}")
sign_and_send "${raw}" "${propKey}"
proposalProjectID="${hash}"
}
function showProject_status() {
local status=$1
result=$(${Chain33Cli} autonomy showProject -p "${proposalProjectID}" -y 0 | jq -r ".propProjects[0].status")
is_equal "${result}" "${status}"
result=$(${Chain33Cli} autonomy showProject -p "${proposalProjectID}" -y 1 -s "${status}")
is_not_equal "${result}" "ErrNotFound"
}
function testProposalProject() {
# proposal
echo -e "${GRE}=========== $FUNCNAME begin ===========${NOC}"
update_last_header 10
proposalProjectTx
#vote
block_wait "${Chain33Cli}" 10
for ((i = 0; i < 13; i++)); do
raw=$(${Chain33Cli} autonomy voteProject -r 1 -p "${proposalProjectID}")
sign_and_send "${raw}" "${arrayKey[$i]}"
done
#query
showProject_status 5
#test revoke
update_last_header
proposalProjectTx
raw=$(${Chain33Cli} autonomy revokeProject -p "${proposalProjectID}")
sign_and_send "${raw}" "${propKey}"
showProject_status 2
echo -e "${GRE}=========== $FUNCNAME end ===========${NOC}"
}
function proposalChangeTx() {
local addr=$1
local key=$2
raw=$(${Chain33Cli} autonomy proposalChange -e "${end}" -s "${start}" -c "${addr}")
sign_and_send "${raw}" "${key}"
proposalChangeID="${hash}"
}
function showChange_status() {
local status=$1
result=$(${Chain33Cli} autonomy showChange -p "${proposalChangeID}" -y 0 | jq -r ".propChanges[0].status")
is_equal "${result}" "${status}"
result=$(${Chain33Cli} autonomy showChange -p "${proposalChangeID}" -y 1 -s "${status}")
is_not_equal "${result}" "ErrNotFound"
}
function testProposalChange() {
# proposal
echo -e "${GRE}=========== $FUNCNAME begin ===========${NOC}"
#init
autonomyAddr=$(${Chain33Cli} exec addr -e autonomy)
hash=$(${Chain33Cli} send coins transfer -a 20 -n test -t "${autonomyAddr}" -k "${arrayKey[20]}")
check_tx "${Chain33Cli}" "${hash}"
hash=$(${Chain33Cli} send coins transfer -a 20 -n test -t "${autonomyAddr}" -k "${arrayKey[21]}")
check_tx "${Chain33Cli}" "${hash}"
update_last_header 10
proposalChangeTx "${changeAddr}" "${arrayKey[20]}"
ret=$(${Chain33Cli} autonomy showActiveBoard | jq -r ".boards[20]")
if [ "${arrayAddr[20]}" != "${ret}" ]; then
exit 1
fi
#vote
block_wait "${Chain33Cli}" 10
for ((i = 0; i < 13; i++)); do
raw=$(${Chain33Cli} autonomy voteChange -r 1 -p "${proposalChangeID}")
sign_and_send "${raw}" "${arrayKey[$i]}"
done
ret=$(${Chain33Cli} autonomy showActiveBoard | jq -r ".boards[20]")
if [ "${changeAddr}" != "${ret}" ]; then
exit 1
fi
#query
showChange_status 4
#test revoke
update_last_header
proposalChangeTx "${changeAddr2}" "${arrayKey[21]}"
raw=$(${Chain33Cli} autonomy revokeChange -p "${proposalChangeID}")
sign_and_send "${raw}" "${arrayKey[21]}"
showChange_status 2
echo -e "${GRE}=========== $FUNCNAME end ===========${NOC}"
}
function testProposalTerminate() {
#test terminate
echo -e "${GRE}=========== $FUNCNAME begin ===========${NOC}"
update_last_header 10
proposalRuleTx
update_last_header 10
proposalBoardTx
update_last_header 10
proposalProjectTx
update_last_header 10
proposalChangeTx "${changeAddr2}" "${arrayKey[21]}"
block_wait "${Chain33Cli}" 850
raw=$(${Chain33Cli} autonomy terminateRule -p "${proposalRuleID}")
sign_and_send "${raw}" "${propKey}"
showRule_status 4
raw=$(${Chain33Cli} autonomy terminateBoard -p "${proposalBoardID}")
sign_and_send "${raw}" "${propKey}"
showBoard_status 4
raw=$(${Chain33Cli} autonomy terminateProject -p "${proposalProjectID}")
sign_and_send "${raw}" "${propKey}"
showProject_status 5
raw=$(${Chain33Cli} autonomy terminateChange -p "${proposalChangeID}")
sign_and_send "${raw}" "${arrayKey[21]}"
showChange_status 4
echo -e "${GRE}=========== $FUNCNAME end ===========${NOC}"
}
function mainTest() {
# shellcheck disable=SC2154
docker_chain33_ip=$(get_docker_addr "${dockerNamePrefix}_chain33_1")
Chain33Cli="./chain33-cli --rpc_laddr http://${docker_chain33_ip}:8801"
StartChain33
testProposalRule
testProposalBoard
testProposalProject
testProposalChange
testProposalTerminate
}
#Chain33Cli="../../../../../build/chain33-cli --rpc_laddr http://172.20.0.2:8801"
#testProposalProject
#testProposalChange
#testProposalTerminate
#testProposalChange
#!/usr/bin/env bash
# shellcheck disable=SC2128
# shellcheck source=/dev/null
# shellcheck disable=SC2155
set -x
set -e
#color
RED='\033[1;31m'
GRE='\033[1;32m'
NOC='\033[0m'
# 出错退出前拷贝日志文件
function exit_cp_file() {
exit 1
}
# $1 dockerName
function get_docker_addr() {
local dockerAddr=$(docker inspect "${1}" | jq ".[].NetworkSettings.Networks" | grep "IPAddress" | awk '{ print $2}' | sed 's/\"//g' | sed 's/,//g')
echo "${dockerAddr}"
}
#function block_wait() {
# set +x
# set +x
# local block=$1
# for((i=1;i<=block;i++));do
# hash=$(${Chain33Cli} send coins transfer -a 0.001 -n test -t "${propAddr}" -k CC38546E9E659D15E6B4893F0AB32A06D103931A8230B0BDE71459D2B27D6944)
# check_tx "${Chain33Cli}" "${hash}"
# echo "这是第 $i 次调用";
# done;
# set -x
# set -x
#}
# 杀死进程ebrelayer 进程 $1进程名称
function kill_ebrelayer() {
# shellcheck disable=SC2009
ps -ef | grep "${1}"
# shellcheck disable=SC2009
pid=$(ps -ef | grep "${1}" | grep -v 'grep' | awk '{print $2}' | xargs)
if [ "${pid}" == "" ]; then
echo "not find ${1} pid"
return
fi
kill -9 "${pid}"
sleep 1
# shellcheck disable=SC2009
pid=$(ps -ef | grep "${1}" | grep -v 'grep' | awk '{print $2}' | xargs)
if [ "${pid}" != "" ]; then
echo "kill ${1} failed"
kill -9 "${pid}"
fi
sleep 1
}
# 判断结果是否正确
function cli_ret() {
set +x
if [[ $# -lt 2 ]]; then
echo -e "${RED}wrong parameter${NOC}"
exit_cp_file
fi
ok=$(echo "${1}" | jq -r .isOK)
if [[ ${ok} != "true" ]]; then
echo -e "${RED}failed to ${2}${NOC}"
exit_cp_file
fi
local jqMsg=".msg"
if [[ $# -ge 3 ]]; then
jqMsg="${3}"
fi
msg=$(echo "${1}" | jq -r "${jqMsg}")
if [[ $# -eq 4 ]]; then
if [ "$(echo "$msg < $4" | bc)" -eq 1 ] || [ "$(echo "$msg > $4" | bc)" -eq 1 ]; then
echo -e "${RED}The balance is not correct${NOC}"
exit_cp_file
fi
fi
set -x
echo "${msg}"
}
# 判断 chain33 金额是否正确
function balance_ret() {
set +x
if [[ $# -lt 2 ]]; then
echo -e "${RED}wrong parameter${NOC}"
exit_cp_file
fi
local balance=$(echo "${1}" | jq -r ".balance")
if [ "$(echo "$balance < $2" | bc)" -eq 1 ] || [ "$(echo "$balance > $2" | bc)" -eq 1 ]; then
echo -e "${RED}The balance is not correct${NOC}"
exit_cp_file
fi
set -x
echo "${balance}"
}
# 查询关键字所在行然后删除 ${1}文件名称 ${2}关键字
function delete_line() {
line=$(cat -n "${1}" | grep "${2}" | awk '{print $1}' | xargs | awk '{print $1}')
if [ "${line}" ]; then
sed -i "${line}"'d' "${1}" # 删除行
fi
}
# 查询关键字所在行然后删除 ${1}文件名称 ${2}关键字
function delete_line_show() {
local line=$(cat -n "${1}" | grep "${2}" | awk '{print $1}' | xargs | awk '{print $1}')
if [ "${line}" ]; then
sed -i "${line}"'d' "${1}" # 删除行
line=$((line - 1))
fi
echo "${line}"
}
# chain33 区块等待 $1:cli 路径 $2:等待高度
function block_wait() {
set +x
local CLI=${1}
if [[ $# -lt 1 ]]; then
echo -e "${RED}wrong block_wait parameter${NOC}"
exit_cp_file
fi
local cur_height=$(${CLI} block last_header | jq ".height")
local expect=$((cur_height + ${2}))
local count=0
while true; do
new_height=$(${CLI} block last_header | jq ".height")
if [[ ${new_height} -ge ${expect} ]]; then
break
fi
count=$((count + 1))
sleep 1
done
count=$((count + 1))
set -x
echo -e "${GRE}chain33 wait new block $count s, cur height=$expect,old=$cur_height${NOC}"
}
# 检查交易是否执行成功 $1:cli 路径 $2:交易hash
function check_tx() {
set +x
local CLI=${1}
if [[ $# -lt 2 ]]; then
echo -e "${RED}wrong check_tx parameters${NOC}"
exit_cp_file
fi
if [[ ${2} == "" ]]; then
echo -e "${RED}wrong check_tx txHash is empty${NOC}"
exit_cp_file
fi
local count=0
while true; do
ty=$(${CLI} tx query -s "${2}" | jq .receipt.ty)
if [[ ${ty} != "" ]]; then
break
fi
count=$((count + 1))
sleep 1
if [[ ${count} -ge 100 ]]; then
echo "chain33 query tx for too long"
break
fi
done
set -x
ty=$(${CLI} tx query -s "${2}" | jq .receipt.ty)
if [[ ${ty} != 2 ]]; then
echo -e "${RED}check tx error, hash is ${2}${NOC}"
exit_cp_file
fi
}
function check_number() {
if [[ $# -lt 2 ]]; then
echo -e "${RED}wrong check number parameters${NOC}"
exit_cp_file
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_cp_file
fi
}
# 检查地址是否匹配 $1返回结果 $2匹配地址
function check_addr() {
if [[ $# -lt 2 ]]; then
echo -e "${RED}wrong check number parameters${NOC}"
exit_cp_file
fi
addr=$(echo "${1}" | jq -r ".acc.addr")
if [[ ${addr} != "${2}" ]]; then
echo -e "${RED}error addr, expect ${1}, get ${2}${NOC}"
exit_cp_file
fi
}
# 判断结果 $1 和 $2 是否相等
function is_equal() {
set +x
if [[ $# -lt 2 ]]; then
echo -e "${RED}wrong parameter${NOC}"
exit_cp_file
fi
if [[ $1 != "$2" ]]; then
echo -e "${RED}$1 != ${2}${NOC}"
exit_cp_file
fi
set -x
}
# 判断结果 $1 和 $2 是否不相等
function is_not_equal() {
set +x
if [[ $# -lt 2 ]]; then
echo -e "${RED}wrong parameter${NOC}"
exit_cp_file
fi
if [[ $1 == "$2" ]]; then
echo -e "${RED}$1 == ${2}${NOC}"
exit_cp_file
fi
set -x
}
# import_key and transfer $1 key, $2 label, $3 addr, $4 transfer amount
function import_addr() {
local key="$1"
local label="$2"
local addr="$3"
# shellcheck disable=SC2154
result=$(${Chain33Cli} account import_key -k "${key}" -l "${label}")
check_addr "${result}" "${addr}"
if [ "$#" -eq 4 ]; then
# shellcheck disable=SC2154
hash=$(${Chain33Cli} send coins transfer -a "$4" -n test -t "${addr}" -k "${minerAddr}")
check_tx "${Chain33Cli}" "${hash}"
fi
}
function InitChain33Account() {
# shellcheck disable=SC2154
import_addr "${propKey}" "prop" "${propAddr}" 1000
# shellcheck disable=SC2154
import_addr "${votePrKey2}" "vote2" "${voteAddr2}" 100
# shellcheck disable=SC2154
import_addr "${votePrKey3}" "vote3" "${voteAddr3}" 100
# import_addr "${votePrKey}" "vote" "${voteAddr}" 3200
# shellcheck disable=SC2154
import_addr "${changeKey}" "changeTest" "${changeAddr}" 10
autonomyAddr=$(${Chain33Cli} exec addr -e autonomy)
# ticketAddr=$(${Chain33Cli} exec addr -e ticket)
hash=$(${Chain33Cli} send coins transfer -a 900 -n test -t "${autonomyAddr}" -k "${propKey}")
check_tx "${Chain33Cli}" "${hash}"
# hash=$(${Chain33Cli} send coins transfer -a 3100 -n test -t "${ticketAddr}" -k "${votePrKey}")
# check_tx "${Chain33Cli}" "${hash}"
# shellcheck disable=SC2154
# hash=$(${Chain33Cli} send coins transfer -a 10 -n test -t "${voteAddr2}" -k "${minerAddr}")
# check_tx "${Chain33Cli}" "${hash}"
local count=0
# shellcheck disable=SC2154
# shellcheck disable=SC2068
for key in ${arrayKey[@]}
do
import_addr "${key}" "board${count}" "${arrayAddr[count]}" 100
count=$((count + 1))
done
}
# chian33 初始化准备
function InitChain33() {
echo -e "${GRE}=========== $FUNCNAME begin ===========${NOC}"
# init
# ${Chain33Cli} seed save -p 1314fuzamei -s "tortoise main civil member grace happy century convince father cage beach hip maid merry rib"
# ${Chain33Cli} wallet unlock -p 1314fuzamei -t 0
# ${Chain33Cli} account import_key -k CC38546E9E659D15E6B4893F0AB32A06D103931A8230B0BDE71459D2B27D6944 -l returnAddr
InitChain33Account
echo -e "${GRE}=========== $FUNCNAME end ===========${NOC}"
}
function StartChain33() {
# kill_ebrelayer chain33
# sleep 2
#
# # delete chain33 datadir
# rm ../../datadir ../../logs -rf
#
# nohup ../../chain33 -f ./ci/autonomy/test.toml >chain33log.log 2>&1 &
#
# sleep 1
InitChain33
}
\ No newline at end of file
#!/usr/bin/env bash
# shellcheck disable=SC2128
# shellcheck source=/dev/null
source "./autonomyTest.sh"
function autonomy() {
if [ "${2}" == "test" ]; then
echo "========================== autonomy test =========================="
set +e
set -x
mainTest
echo "========================== autonomy test end =========================="
fi
}
......@@ -8,13 +8,20 @@ HTTP=""
EXECTOR=""
EXECTOR_ADDR=""
TICKET_EXECTOR=""
TICKET_ADDR=""
propKey="0xfd0c4a8a1efcd221ee0f36b7d4f57d8ff843cb8bc193b39c7863332d355acafa"
propAddr="15VUiygdxMSZ3rykwe742yomp2cPJ9Tfve"
votePrKey="1c3e6cac2f887e1ab9180e2d5772dc4ba01accb8d4df434faba097003eb35482"
voteAddr="1Q9sQwothzM1gKSzkVZ8Dt1tqKX1uzSagx"
#votePrKey="1c3e6cac2f887e1ab9180e2d5772dc4ba01accb8d4df434faba097003eb35482"
#voteAddr="1Q9sQwothzM1gKSzkVZ8Dt1tqKX1uzSagx"
voteAddr="14KEKbYtKKQm4wMthSK9J4La4nAiidGozt"
votePrKey="CC38546E9E659D15E6B4893F0AB32A06D103931A8230B0BDE71459D2B27D6944" #14KEKbYtKKQm4wMthSK9J4La4nAiidGozt
voteAddr2="1EbDHAXpoiewjPLX9uqoz38HsKqMXayZrF"
votePrKey2="B0BB75BC49A787A71F4834DA18614763B53A18291ECE6B5EDEC3AD19D150C3E7" #1EbDHAXpoiewjPLX9uqoz38HsKqMXayZrF
voteAddr3="1KcCVZLSQYRUwE5EXTsAoQs9LuJW6xwfQa"
votePrKey3="2AFF1981291355322C7A6308D46A9C9BA311AA21D94F36B43FC6A6021A1334CF"
proposalRuleID=""
proposalBoardID=""
......@@ -100,11 +107,7 @@ boards='
"'${boardsAddr[19]}'",
"'${boardsAddr[20]}'"
'
chain33_para_init() {
ip=$1
chain33_ImportPrivkey "${votePrKey}" "${voteAddr}" "autonomytest" "${ip}"
chain33_SendToAddress "12qyocayNF7Lv6C9qW4avxs2E7U41fKSfv" "$voteAddr" 630000000000 "${ip}"
}
chain33_applyCoinsNOLimit() {
echo "chain33_getMainChainCoins"
if [ "$#" -lt 3 ]; then
......@@ -117,6 +120,7 @@ chain33_applyCoinsNOLimit() {
local poolAddr="1PcGKYYoLn1PLLJJodc1UpgWGeFAQasAkx"
chain33_SendToAddress "${poolAddr}" "${targetAddr}" "$count" "${ip}"
chain33_QueryBalance "${targetAddr}" "${ip}"
}
handleBoards() {
......@@ -220,6 +224,7 @@ testProposalBoard() {
#vote
chain33_BlockWait 100 "$HTTP"
voteBoardTx "${proposalBoardID}" "${votePrKey}"
voteBoardTx "${proposalBoardID}" "${votePrKey2}"
#query
queryProposal "${proposalBoardID}" "GetProposalBoard"
listProposal 4 "ListProposalBoard"
......@@ -276,6 +281,8 @@ testProposalRule() {
#vote
chain33_BlockWait 100 "$HTTP"
voteRuleTx "${proposalRuleID}" ${votePrKey}
voteRuleTx "${proposalRuleID}" "${votePrKey2}"
voteRuleTx "${proposalRuleID}" "${votePrKey3}"
#query
queryProposal "${proposalRuleID}" "GetProposalRule"
listProposal 4 "ListProposalRule"
......@@ -457,45 +464,43 @@ init() {
if [ "$ispara" == true ]; then
EXECTOR_ADDR=$(curl -ksd '{"method":"Chain33.ConvertExectoAddr","params":[{"execname":"user.p.para.autonomy"}]}' "${HTTP}" | jq -r ".result")
EXECTOR="user.p.para.autonomy"
TICKET_ADDR=$(curl -ksd '{"method":"Chain33.ConvertExectoAddr","params":[{"execname":"user.p.para.ticket"}]}' "${HTTP}" | jq -r ".result")
TICKET_EXECTOR="user.p.para.ticket"
else
EXECTOR_ADDR=$(curl -ksd '{"method":"Chain33.ConvertExectoAddr","params":[{"execname":"autonomy"}]}' "${HTTP}" | jq -r ".result")
EXECTOR="autonomy"
TICKET_ADDR=$(curl -ksd '{"method":"Chain33.ConvertExectoAddr","params":[{"execname":"ticket"}]}' "${HTTP}" | jq -r ".result")
TICKET_EXECTOR="ticket"
fi
echo "EXECTOR_ADDR=$EXECTOR_ADDR"
local main_ip=${HTTP//8901/8801}
chain33_ImportPrivkey "${propKey}" "${propAddr}" "prop" "${main_ip}"
chain33_ImportPrivkey "${votePrKey2}" "${voteAddr2}" "voteAddr2" "${main_ip}"
chain33_ImportPrivkey "${votePrKey3}" "${voteAddr3}" "voteAddr3" "${main_ip}"
if [ "$ispara" == false ]; then
chain33_applyCoinsNOLimit "$propAddr" 100000000000 "${main_ip}"
chain33_QueryBalance "${propAddr}" "$main_ip"
chain33_applyCoinsNOLimit "${voteAddr}" 10000000000 "${main_ip}"
chain33_applyCoinsNOLimit "${voteAddr2}" 10000000000 "${main_ip}"
chain33_applyCoinsNOLimit "${voteAddr3}" 10000000000 "${main_ip}"
else
chain33_applyCoins "$propAddr" 1000000000 "${main_ip}"
chain33_QueryBalance "${propAddr}" "$main_ip"
chain33_applyCoinsNOLimit "$propAddr" 1000000000 "${main_ip}"
#主链投票账户转帐
handleBoards "$main_ip"
local para_ip="${HTTP}"
chain33_ImportPrivkey "${propKey}" "${propAddr}" "prop" "$para_ip"
chain33_ImportPrivkey "${votePrKey2}" "${voteAddr2}" "voteAddr2" "${para_ip}"
chain33_ImportPrivkey "${votePrKey3}" "${voteAddr3}" "voteAddr3" "${para_ip}"
#平行链中账户转帐
chain33_applyCoinsNOLimit "$propAddr" 100000000000 "$para_ip"
chain33_QueryBalance "$propAddr" "$para_ip"
chain33_para_init "$para_ip"
chain33_applyCoinsNOLimit "${voteAddr}" 10000000000 "${para_ip}"
chain33_applyCoinsNOLimit "${voteAddr2}" 10000000000 "${para_ip}"
chain33_applyCoinsNOLimit "${voteAddr3}" 10000000000 "${para_ip}"
fi
# 往合约中转
chain33_SendToAddress "$propAddr" "$EXECTOR_ADDR" 90000000000 "$HTTP"
chain33_QueryExecBalance "$propAddr" "$EXECTOR" "$HTTP"
# 往ticket合约中转帐
chain33_SendToAddress "$voteAddr" "$TICKET_ADDR" 300100000000 "$HTTP"
chain33_QueryExecBalance "$voteAddr" "$TICKET_EXECTOR" "$HTTP"
# 往投票账户中转帐
handleBoards "$HTTP"
}
......
......@@ -88,7 +88,7 @@ func addProposalBoardFlags(cmd *cobra.Command) {
cmd.Flags().Int32P("month", "m", 0, "month")
cmd.Flags().Int32P("day", "d", 0, "day")
cmd.Flags().BoolP("update", "u", false, "replace or update boards, default is replace(false); update(true)")
cmd.Flags().Int32P("update", "u", 1, "addr delete or replace boards, 1:add, 2:delete, 3:replace all, default is 1")
cmd.Flags().Int64P("startBlock", "s", 0, "start block height")
cmd.MarkFlagRequired("startBlock")
cmd.Flags().Int64P("endBlock", "e", 0, "end block height")
......@@ -106,7 +106,7 @@ func proposalBoard(cmd *cobra.Command, args []string) {
month, _ := cmd.Flags().GetInt32("month")
day, _ := cmd.Flags().GetInt32("day")
update, _ := cmd.Flags().GetBool("update")
update, _ := cmd.Flags().GetInt32("update")
startBlock, _ := cmd.Flags().GetInt64("startBlock")
endBlock, _ := cmd.Flags().GetInt64("endBlock")
boardstr, _ := cmd.Flags().GetString("boards")
......@@ -117,7 +117,7 @@ func proposalBoard(cmd *cobra.Command, args []string) {
Year: year,
Month: month,
Day: day,
Update: update,
BoardUpdate: auty.BoardUpdate(update),
Boards: boards,
StartBlockHeight: startBlock,
EndBlockHeight: endBlock,
......
......@@ -54,7 +54,7 @@ func addProposalProjectFlags(cmd *cobra.Command) {
cmd.Flags().Int64P("endBlock", "e", 0, "end block height")
cmd.MarkFlagRequired("endBlock")
cmd.Flags().Int32P("projectNeedBlockNum", "n", 0, "project complete need time(unit is block number)")
cmd.MarkFlagRequired("projectNeedBlockNum")
//cmd.MarkFlagRequired("projectNeedBlockNum")
}
func proposalProject(cmd *cobra.Command, args []string) {
......
......@@ -15,6 +15,7 @@ import (
type subConfig struct {
Total string `json:"total"`
UseBalance bool `json:"useBalance"`
Execer string `json:"execer"`
}
var (
......
......@@ -499,6 +499,7 @@ func (a *action) getTotalVotes(height int64) (int32, error) {
addr = subcfg.Total
}
voteAccount, err := a.getStartHeightVoteAccount(addr, "", height)
if err != nil {
return 0, err
}
......@@ -539,7 +540,11 @@ func (a *action) batchGetAddressVotes(addrs []string, height int64) (int32, erro
}
func (a *action) getAddressVotes(addr string, height int64) (int32, error) {
voteAccount, err := a.getStartHeightVoteAccount(addr, ticketName, height)
execer := ticketName
if subcfg.Execer != "" {
execer = subcfg.Execer
}
voteAccount, err := a.getStartHeightVoteAccount(addr, execer, height)
if err != nil {
return 0, err
}
......
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