Files
fiscoBcosJDK/tps/init_accounts.sh
2026-02-11 17:40:18 +08:00

94 lines
2.7 KiB
Bash
Executable File
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/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 "✅ 完成!"