オンチェーン決済メッセージ
HOBCMSG1を使用すると、ウォレットは1つのOP_RETURN出力を使用して、プライベートなUTF-8メッセージを支払いに添付できます。暗号文は公開されており、受信者の支払い鍵のみが復号できます。
概要
ウェブウォレットの送金機能は、オプションでプライベートメッセージ(最大300文字)をサポートしています。同じ送金フォーマットが公開されているため、Windows、Linux、Android、およびサードパーティ製アプリは、後々互換性のある送受信機能を実装できます。
プライバシーモデル
支払金額、アドレス、および時間は公開されます。オンチェーン上のメッセージバイトは暗号化されています。受取人の支払い秘密鍵を持っている人は誰でも復号できます。カストディアルWebウォレットの宛先は、ログインしている受取人のためにサイトによって復号されます(カストディアルと同様の信頼性)。
ワイヤーフォーマット
単一のOP_RETURNデータペイロード:
HOBCMSG1 | ver:1 | flags:0 | utf8_plaintext
プレフィックスASCII HOBCMSG1、次にver(1バイト、現在1)、flags(1バイト、bit0 = 暗号化)、一時的な圧縮公開鍵(33バイト)、AES-GCM nonce(12バイト)、暗号文、そして16バイトの認証タグ。
暗号化
送信者は、一時的なsecp256k1キーペアを生成し、受信者の圧縮された支払い公開鍵とECDHで暗号化し、HKDF-SHA256(情報HOBCMSG1-v1)で32バイトの鍵に変換した後、AES-256-GCMで暗号化します。受信者の公開鍵は、宛先アドレスhobc1…のP2WPKHウィットネスプログラムとハッシュ160で一致する必要があります。
制限
HobbyHashウォレットは、支払いメモに300文字のUTF-8プレーンテキスト制限を使用します。ノードリレーポリシーでは、より大きなOP_RETURNデータキャリアが使用可能です。アプリのペイロードは手数料を考慮してください。
受信者の公開鍵
宛先アドレスに既知の公開鍵(過去の送金履歴、またはウォッチオンリー/ホットウォレットアドレス)が既に存在する場合、ウォレットは自動的に解決できます。そうでない場合は、送信者はアドレスに一致する圧縮された公開鍵を提供する必要があります。一致する公開鍵がない場合、プライベートメッセージを添付することはできません(プレーンな送信は引き続き可能です)。
RPCの例
支払いとデータ出力(16進数は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ウォレットはこの形式を再利用します。