On-chain payment messages
HOBCMSG1 lets wallets attach a UTF-8 message to a payment using one OP_RETURN output. Web Wallet messages are public — anyone can read them on the explorer.
Overview
Web Wallet send supports an optional message (max 300 characters). The same wire format is published so Windows, Linux, Android, and third-party apps can implement compatible send/receive.
Public by design
Payment amount, addresses, time, and the message text are all public on-chain. Do not put secrets, passwords, seed phrases, or private personal data in a payment message.
Wire format (public)
Single OP_RETURN data payload used by HobbyHash Web Wallet:
HOBCMSG1 | ver:1 | flags:0 | utf8_plaintext
Prefix ASCII HOBCMSG1, then ver (1 byte, currently 1), flags (1 byte; bit0 = 0 for public plaintext), then UTF-8 message bytes.
Encrypted mode (optional / legacy)
Apps may set flags bit0 = 1 and use secp256k1 ECDH + HKDF-SHA256 + AES-256-GCM to the recipient payment pubkey. HobbyHash Web Wallet currently sends public messages only (flags = 0).
Limits
HobbyHash wallets use a 300-character UTF-8 limit for payment memos. The node relay policy allows larger OP_RETURN data carriers; keep app payloads fee-aware.
Recipient public key
Not required for public messages. Encrypted mode (flags bit0 = 1) requires a compressed payment pubkey that hash160-matches the destination hobc1… address.
RPC example
Build a payment plus data output (hex is the HOBCMSG1 payload), then fund/sign/broadcast — or use the experimental send RPC when available:
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
For app developers
Implement encode/decode against this document. Detect HOBCMSG1 in explorers: show the UTF-8 text when flags bit0 = 0, or an encrypted-message badge when bit0 = 1. Desktop and mobile HobbyHash wallets can reuse this format.