Files
fiscoBcosJDK/tps/init_accounts.sh

94 lines
2.7 KiB
Bash
Raw Normal View History

2026-02-11 17:40:18 +08:00
#!/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 "✅ 完成!"