用途:该技能定义 go-crypto-wallet 项目中 Bitcoin Cash(BCH)API 实现必须遵循的架构规则,核心是用结构体嵌入与方法重写模式,隔离 BCH 与 BTC 的差异。当代码涉及 BCH 相关功能开发或修改时应遵循。
主要能力与规则:BitcoinCash 结构体嵌入 apibtcimpl.Bitcoin(定义于 internal/infrastructure/api/btc/bch/bitcoin_cash.go),默认继承全部 BTC 方法。BCH 逻辑需要不同于 BTC 时,在 internal/infrastructure/api/btc/bch/ 下新建文件,以同名方法在 BitcoinCash 上实现,从而“重写”被嵌入的 BTC 方法。禁止修改 internal/infrastructure/api/btc/btc/,禁止在 BTC 代码中加入 BCH 条件分支或将 BCH 类型与逻辑放入 BTC 包。
示例:地址信息重写(GetAddressInfo)在 bch/address.go 中定义 BCH 专用响应类型并重写方法;账户重写(GetAccount)在 bch/account.go 中调用已重写的 GetAddressInfo 并做 BCH 专用标签提取;链参数重写在 bitcoin_cash.go 中定义 BCH 专用 MainnetMagic、TestnetMagic、Regtestmagic 并重写 initChainParams。
功能差异:BTC 支持 SegWit 与 Taproot,地址格式含 Legacy、SegWit、Taproot;BCH 不支持 SegWit 与 Taproot,地址格式为 Legacy 与 CashAddr,网络魔数使用 BCH 专用值。
使用方式与限制:新建文件须位于 internal/infrastructure/api/btc/bch/;重写方法签名须与被重写的 BTC 方法一致;BCH 专用类型定义在 BCH 包内;错误信息应包含 bch 便于追踪。嵌入方法仍可通过 b.Bitcoin.MethodName() 直接调用。相关文件包括 internal/infrastructure/api/btc/bch/bitcoin_cash.go、internal/infrastructure/api/btc/btc/bitcoin.go、internal/application/ports/btc/interface.go。具体安装或运行命令资料未提供。