From 578a865c4d4650f71bbbf680f7b59640c1907422 Mon Sep 17 00:00:00 2001 From: hailin Date: Mon, 15 Dec 2025 10:22:34 -0800 Subject: [PATCH] =?UTF-8?q?feat(scripts):=20=E8=8E=B7=E5=8F=96=20mpc-syste?= =?UTF-8?q?m=20=E5=AE=9E=E9=99=85=E5=88=9B=E5=BB=BA=E7=9A=84=20username?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 添加 get_actual_username 函数从数据库查询实际 username - mpc-system 自动生成 wallet-xxx 格式,脚本输出实际值 - show_result 使用 ACTUAL_USERNAME 显示正确配置 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 --- backend/scripts/init-hot-wallet.sh | 39 +++++++++++++++++++++++++++--- 1 file changed, 36 insertions(+), 3 deletions(-) diff --git a/backend/scripts/init-hot-wallet.sh b/backend/scripts/init-hot-wallet.sh index 7021fec4..25344c52 100644 --- a/backend/scripts/init-hot-wallet.sh +++ b/backend/scripts/init-hot-wallet.sh @@ -351,6 +351,35 @@ get_public_key() { echo " 公钥: ${PUBLIC_KEY:0:16}...${PUBLIC_KEY: -16}" } +# 获取 mpc-system 实际创建的 username +# mpc-system 会自动生成 wallet-{session_id前8位} 格式的 username +get_actual_username() { + log_info "获取 mpc-system 创建的实际 username..." + + # 等待账户创建完成 (session-coordinator 异步创建) + sleep 3 + + # 通过数据库查询实际的 username + local db_query_result=$(docker exec mpc-postgres psql -U postgres -d mpc_system -t -A -c \ + "SELECT username FROM accounts WHERE keygen_session_id = '$SESSION_ID' LIMIT 1;" 2>/dev/null) + + if [ -z "$db_query_result" ]; then + log_warn "未找到账户,等待 5 秒后重试..." + sleep 5 + db_query_result=$(docker exec mpc-postgres psql -U postgres -d mpc_system -t -A -c \ + "SELECT username FROM accounts WHERE keygen_session_id = '$SESSION_ID' LIMIT 1;" 2>/dev/null) + fi + + if [ -n "$db_query_result" ]; then + ACTUAL_USERNAME="$db_query_result" + log_success "获取到实际 username: $ACTUAL_USERNAME" + else + # 如果无法查询数据库,使用预期的格式 + ACTUAL_USERNAME="wallet-${SESSION_ID:0:8}" + log_warn "无法查询数据库,使用预期格式: $ACTUAL_USERNAME" + fi +} + # 派生 EVM 地址 derive_address() { log_info "派生 EVM 地址..." @@ -409,13 +438,16 @@ except Exception as e: # 显示结果 show_result() { + # 使用 mpc-system 实际创建的 username + local final_username="${ACTUAL_USERNAME:-$USERNAME}" + echo "" echo -e "${GREEN}==============================================" echo "热钱包初始化完成!" echo "==============================================${NC}" echo "" echo "配置信息:" - echo " 用户名: $USERNAME" + echo " 用户名: $final_username" echo " 门限: $THRESHOLD_T-of-$THRESHOLD_N" echo " 会话ID: $SESSION_ID" echo " 公钥: ${PUBLIC_KEY:0:32}..." @@ -426,7 +458,7 @@ show_result() { echo -e "${YELLOW}请将以下配置添加到环境变量:${NC}" echo "" echo " # 在 backend/services/.env 中添加:" - echo " HOT_WALLET_USERNAME=$USERNAME" + echo " HOT_WALLET_USERNAME=$final_username" if [ -n "$ADDRESS" ]; then echo " HOT_WALLET_ADDRESS=$ADDRESS" else @@ -440,7 +472,7 @@ show_result() { echo "" echo "cat >> backend/services/.env << 'EOF'" echo "# Hot Wallet Configuration (initialized $(date +%Y-%m-%d))" - echo "HOT_WALLET_USERNAME=$USERNAME" + echo "HOT_WALLET_USERNAME=$final_username" echo "HOT_WALLET_ADDRESS=$ADDRESS" echo "EOF" echo "" @@ -476,6 +508,7 @@ main() { create_keygen_session wait_for_keygen get_public_key + get_actual_username derive_address show_result