feat(scripts): 获取 mpc-system 实际创建的 username

- 添加 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 <noreply@anthropic.com>
This commit is contained in:
hailin 2025-12-15 10:22:34 -08:00
parent cdf858520d
commit 578a865c4d
1 changed files with 36 additions and 3 deletions

View File

@ -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