鏈上支付訊息
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 位元組),暫時壓縮公鑰(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 錢包將沿用此格式。