94 lines
2.7 KiB
Bash
Executable File
94 lines
2.7 KiB
Bash
Executable File
#!/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 "✅ 完成!"
|
||
|