#!/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 PAY_ACCOUNT_XPUB="$xpub" go run ./cmd/paywatch selfcheck "$COUNT" }