From e169099524a7ad0e848a5ef51752fb4b18b41ec1 Mon Sep 17 00:00:00 2001 From: wangjia <809946525@qq.com> Date: Thu, 9 Jul 2026 13:33:24 +0800 Subject: [PATCH] =?UTF-8?q?feat(pay):=20selfcheck.sh=20=E4=BB=8E=20Bitward?= =?UTF-8?q?en=20=E5=8F=96=20xpub=20=E8=B7=91=E6=B4=BE=E7=94=9F=E8=87=AA?= =?UTF-8?q?=E6=A3=80=20+=20=E6=89=93=E5=8D=B0=20xpub=20=E4=BE=BF=E4=BA=8E?= =?UTF-8?q?=E6=A0=B8=E5=AF=B9(#34/34A)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit rbw 取钱包 A 的 account xpub(公钥,不写死/不落盘)→ go run paywatch selfcheck 打印 前 N 个派生地址,供与 TronLink 插件/Ian Coleman 逐个核对;并打印 xpub 本身 + 长度/前缀, 便于判断存的是 Account(m/44'/195'/0')还是 BIP32(m/44'/195'/0'/0)那个(存错会全错)。 无 $() 命令替换。私钥/助记词永不进此脚本。 Co-Authored-By: Claude Opus 4.8 --- pay/scripts/selfcheck.sh | 53 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100755 pay/scripts/selfcheck.sh diff --git a/pay/scripts/selfcheck.sh b/pay/scripts/selfcheck.sh new file mode 100755 index 0000000..67a714e --- /dev/null +++ b/pay/scripts/selfcheck.sh @@ -0,0 +1,53 @@ +#!/usr/bin/env bash +# selfcheck.sh — 从 Bitwarden 取钱包 A 的 account xpub(公钥),跑 paywatch selfcheck, +# 打印前 N 个派生收款地址,供与你钱包(TronLink 插件)/ Ian Coleman 的 m/44'/195'/0'/0/i +# 逐个核对。全部一致 = 派生对齐、收款地址是你控制的。 +# +# 用法: +# bash pay/scripts/selfcheck.sh [BW条目名] [地址个数] +# 例: bash pay/scripts/selfcheck.sh pangolin-pay-xpub 5 +# +# xpub 是公钥、不敏感,但仍统一走 Bitwarden,不写死在脚本/仓库里。 +# 私钥/助记词永远不进这里,也不该在任何联网机上出现。 +set -euo pipefail + +# ① Bitwarden 条目名:改成你存 xpub 的那个条目(或用第 1 个参数覆盖)。 +ITEM="${1:-${PAY_XPUB_ITEM:-pangolin-pay-xpub}}" +# ② 打印几个地址(默认 5)。 +COUNT="${2:-5}" +# ③ 若 xpub 存在自定义字段(不是默认密码字段),设 PAY_XPUB_FIELD=字段名。 +FIELD="${PAY_XPUB_FIELD:-}" + +# 切到 pay 模块目录(脚本在 pay/scripts/ 下),不依赖当前工作目录。 +here="${BASH_SOURCE[0]%/*}" +[ "$here" = "${BASH_SOURCE[0]}" ] && here="." +cd "$here/.." + +# 确保 Bitwarden 已解锁(rbw)。 +if ! rbw unlocked >/dev/null 2>&1; then + rbw unlock +fi + +# 取 xpub → 直接喂给 selfcheck(不落盘、不进 shell history)。 +if [ -n "$FIELD" ]; then + rbw get --field "$FIELD" "$ITEM" +else + rbw get "$ITEM" +fi | { + IFS= read -r xpub || true + if [ -z "${xpub:-}" ]; then + echo "selfcheck: 未从 Bitwarden 条目 '$ITEM' 取到 xpub(核对条目名/字段)" >&2 + exit 1 + fi + echo "== paywatch selfcheck · 条目=$ITEM · 前 $COUNT 个地址 ==" + echo + echo "取到的 account xpub(应等于 Ian Coleman 的『Account Extended Public Key』,即 m/44'/195'/0' 那个):" + echo " $xpub" + echo " 长度 ${#xpub} 字符 · 前缀 ${xpub:0:4}" + echo + echo "⚠️ 核对:上面这串必须 == Ian Coleman 的『Account Extended Public Key』。" + echo " 若你误存了下面那个『BIP32 Extended Public Key』(m/44'/195'/0'/0 那个),地址就会全错。" + echo + echo "派生地址(和 TronLink 插件 / Ian Coleman 的 m/44'/195'/0'/0/0.. 逐个核对):" + PAY_ACCOUNT_XPUB="$xpub" go run ./cmd/paywatch selfcheck "$COUNT" +}