94 lines
2.7 KiB
Bash
94 lines
2.7 KiB
Bash
|
|
#!/bin/bash
|
|||
|
|
|
|||
|
|
# FISCO BCOS ParallelTransfer合约账户初始化脚本 - 最终修复版
|
|||
|
|
|
|||
|
|
CONTRACT_ADDRESS="0x06ac2fe406f1ae06494946ee281d58f1c79c39e4"
|
|||
|
|
ACCOUNT_COUNT=100
|
|||
|
|
INITIAL_BALANCE=1000000000
|
|||
|
|
|
|||
|
|
echo "=========================================="
|
|||
|
|
echo " ParallelTransfer 账户初始化工具"
|
|||
|
|
echo "=========================================="
|
|||
|
|
echo ""
|
|||
|
|
echo "合约地址: $CONTRACT_ADDRESS"
|
|||
|
|
echo "账户数量: $ACCOUNT_COUNT"
|
|||
|
|
echo "初始余额: $INITIAL_BALANCE"
|
|||
|
|
echo ""
|
|||
|
|
|
|||
|
|
read -p "确认开始初始化?(y/n) " -n 1 -r
|
|||
|
|
echo
|
|||
|
|
if [[ ! $REPLY =~ ^[Yy]$ ]]; then
|
|||
|
|
echo "已取消"
|
|||
|
|
exit 0
|
|||
|
|
fi
|
|||
|
|
|
|||
|
|
echo ""
|
|||
|
|
echo "开始初始化..."
|
|||
|
|
START_TIME=$(date +%s)
|
|||
|
|
|
|||
|
|
SUCCESS=0
|
|||
|
|
FAILED=0
|
|||
|
|
|
|||
|
|
for i in $(seq 0 $(($ACCOUNT_COUNT - 1))); do
|
|||
|
|
account=$(printf "user_%06d" $i)
|
|||
|
|
|
|||
|
|
# 显示当前正在处理的账户
|
|||
|
|
echo -n "[$i/$ACCOUNT_COUNT] $account ... "
|
|||
|
|
|
|||
|
|
# 调用合约(需要在console目录下执行)
|
|||
|
|
SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
|||
|
|
cd "$SCRIPT_DIR"
|
|||
|
|
result=$(bash console.sh call ParallelTransfer $CONTRACT_ADDRESS set "$account" $INITIAL_BALANCE 2>&1)
|
|||
|
|
|
|||
|
|
# 检查结果并实时显示
|
|||
|
|
if echo "$result" | grep -q "transaction status: 0x0"; then
|
|||
|
|
((SUCCESS++))
|
|||
|
|
echo "✓ [成功:$SUCCESS 失败:$FAILED]"
|
|||
|
|
else
|
|||
|
|
((FAILED++))
|
|||
|
|
echo "✗ [成功:$SUCCESS 失败:$FAILED]"
|
|||
|
|
# 只显示前3个失败的详细信息
|
|||
|
|
if [ $FAILED -le 3 ]; then
|
|||
|
|
echo " 错误详情:"
|
|||
|
|
echo "$result" | head -5
|
|||
|
|
fi
|
|||
|
|
fi
|
|||
|
|
|
|||
|
|
# 每50个显示一次统计
|
|||
|
|
if [ $(($i % 50)) -eq 0 ] && [ $i -gt 0 ]; then
|
|||
|
|
ELAPSED=$(($(date +%s) - START_TIME))
|
|||
|
|
AVG_SPEED=$(awk "BEGIN {printf \"%.2f\", $SUCCESS/$ELAPSED}")
|
|||
|
|
REMAIN=$(awk "BEGIN {printf \"%.0f\", ($ACCOUNT_COUNT - $i) / $AVG_SPEED}")
|
|||
|
|
echo " ═══ [$(date +%H:%M:%S)] 已完成 $i 个 | 平均速度: ${AVG_SPEED} 笔/秒 | 预计剩余: ${REMAIN} 秒 ═══"
|
|||
|
|
fi
|
|||
|
|
done
|
|||
|
|
|
|||
|
|
TOTAL_TIME=$(($(date +%s) - START_TIME))
|
|||
|
|
|
|||
|
|
echo ""
|
|||
|
|
echo "=========================================="
|
|||
|
|
echo "初始化完成!"
|
|||
|
|
echo "=========================================="
|
|||
|
|
echo " 总账户数: $ACCOUNT_COUNT"
|
|||
|
|
echo " 成功: $SUCCESS"
|
|||
|
|
echo " 失败: $FAILED"
|
|||
|
|
if [ $ACCOUNT_COUNT -gt 0 ]; then
|
|||
|
|
echo " 成功率: $(awk "BEGIN {printf \"%.2f\", $SUCCESS*100/$ACCOUNT_COUNT}")%"
|
|||
|
|
fi
|
|||
|
|
echo " 总耗时: ${TOTAL_TIME}秒"
|
|||
|
|
if [ $SUCCESS -gt 0 ] && [ $TOTAL_TIME -gt 0 ]; then
|
|||
|
|
echo " 平均速度: $(awk "BEGIN {printf \"%.2f\", $SUCCESS/$TOTAL_TIME}") 笔/秒"
|
|||
|
|
fi
|
|||
|
|
echo ""
|
|||
|
|
|
|||
|
|
# 验证账户
|
|||
|
|
if [ $SUCCESS -gt 0 ]; then
|
|||
|
|
echo "验证账户余额..."
|
|||
|
|
cd "$SCRIPT_DIR"
|
|||
|
|
bash console.sh call ParallelTransfer $CONTRACT_ADDRESS balanceOf "user_000000" | grep -A5 "Return"
|
|||
|
|
echo ""
|
|||
|
|
fi
|
|||
|
|
|
|||
|
|
echo "✅ 完成!"
|
|||
|
|
|