链上支付消息
HOBCMSG1 允许钱包使用一个 OP_RETURN 输出将私有的 UTF-8 消息附加到付款中。密文是公开的;只有收款人的付款密钥才能解密。
概述
网页钱包发送功能支持可选的私信(最多 300 个字符)。相同的汇款格式已公开,以便 Windows、Linux、Android 和第三方应用程序日后可以实现兼容的收发功能。
隐私模型
支付金额、地址和时间均公开。链上的消息字节是密文。任何拥有收款人私钥的人都可以解密。托管式网络钱包的目标地址由网站为已登录的收款人解密(与托管相同的信任级别)。
线格式
单个 OP_RETURN 数据有效载荷:
HOBCMSG1 | ver:1 | flags:0 | utf8_plaintext
前缀 ASCII HOBCMSG1,然后是 ver(1 字节,当前为 1),flags(1 字节;bit0 = 加密),临时压缩公钥(33 字节),AES-GCM nonce(12 字节),密文,然后是 16 字节的认证标签。
密码学
发送方生成一个临时的secp256k1密钥对,使用接收方的压缩支付公钥,通过HKDF-SHA256(信息HOBCMSG1-v1)生成一个32字节的密钥,然后使用AES-256-GCM进行加密。接收方的公钥必须与目标地址hobc1…的P2WPKH见证程序的哈希值160匹配。
限制
HobbyHash 钱包使用 300 个字符的 UTF-8 明文作为支付备注。节点中继策略允许更大的 OP_RETURN 数据载体;请确保应用程序有效负载能够感知手续费。
接收方公钥
如果目标地址已有已知的公钥(例如之前的花费记录或仅监视/热钱包地址),钱包可以自动解析。否则,发送方必须提供与该地址匹配的压缩公钥。如果没有匹配的公钥,则无法附加私信(但明文发送仍然有效)。
RPC 示例
构建支付加数据输出(十六进制为 HOBCMSG1 有效载荷),然后进行资金/签名/广播——或者在可用时使用实验性的 send RPC:
hobbyhash-cli -rpcwallet=WALLET send '{"hobc1q…": 1.5, "data": "484f42434d534731…"}'
# Or raw construction:
hobbyhash-cli createrawtransaction '[]' '[{"hobc1q…":1.5},{"data":"484f42434d534731…"}]'
hobbyhash-cli -rpcwallet=WALLET fundrawtransaction HEX
hobbyhash-cli -rpcwallet=WALLET signrawtransactionwithwallet FUNDED_HEX
hobbyhash-cli sendrawtransaction SIGNED_HEX
面向应用开发者
实现针对此文档的编码/解密功能。在浏览器端检测 HOBCMSG1 并显示加密消息徽章——不要将密文显示为聊天文本。桌面和移动端 HobbyHash 钱包将沿用此格式。