On-chain betalingsberichten
HOBCMSG1 maakt het mogelijk voor wallets om een privé UTF-8-bericht aan een betaling te koppelen met behulp van één OP_RETURN-uitgang. De versleutelde tekst is openbaar; alleen de betaalsleutel van de ontvanger kan deze decoderen.
Overzicht
Web Wallet biedt de mogelijkheid om optioneel een privébericht te verzenden (maximaal 300 tekens). Hetzelfde betaalformaat wordt gepubliceerd, zodat Windows, Linux, Android en apps van derden later compatibele verzend- en ontvangstfunctionaliteit kunnen implementeren.
Privacymodel
Het betalingsbedrag, de adressen en het tijdstip blijven openbaar. De berichtbytes op de blockchain zijn versleuteld. Iedereen met de privésleutel van de ontvanger kan de berichten decoderen. Bestemmingen van webwallets die onder beheer vallen, worden door de website zelf gedecodeerd voor de ingelogde ontvanger (zelfde vertrouwensrelatie als bij beheer).
Draadformaat
Enkele OP_RETURN-datapayload:
HOBCMSG1 | ver:1 | flags:0 | utf8_plaintext
Voorvoegsel ASCII HOBCMSG1, vervolgens ver (1 byte, momenteel 1), flags (1 byte; bit0 = versleuteld), tijdelijke gecomprimeerde publieke sleutel (33 bytes), AES-GCM nonce (12 bytes), ciphertext, en vervolgens een authenticatietag van 16 bytes.
Cryptografie
De afzender genereert een tijdelijk secp256k1-sleutelpaar, ECDH met de gecomprimeerde betaalsleutel van de ontvanger, HKDF-SHA256 (info HOBCMSG1-v1) naar een sleutel van 32 bytes, en vervolgens AES-256-GCM. De betaalsleutel van de ontvanger MOET hash160-matchen met het P2WPKH-witnessprogramma van het bestemmingsadres hobc1….
Grenzen
HobbyHash-wallets hanteren een limiet van 300 tekens in UTF-8-plattekst voor betalingsmemo's. Het node-relaybeleid staat grotere OP_RETURN-gegevensdragers toe; zorg ervoor dat app-payloads rekening houden met transactiekosten.
Openbare sleutel van de ontvanger
Als het bestemmingsadres al een bekende publieke sleutel heeft (bijvoorbeeld door een eerdere uitgave of een watch-only/hot-wallet-adres), kunnen wallets deze automatisch achterhalen. Anders moet de afzender de gecomprimeerde publieke sleutel opgeven die overeenkomt met het adres. Zonder een overeenkomende publieke sleutel kan er geen privébericht worden bijgevoegd (een gewoon bericht verzenden werkt wel).
RPC voorbeeld
Bouw een betalings- en data-output (hex is de HOBCMSG1-payload), financier/onderteken/verzend vervolgens — of gebruik de experimentele send RPC wanneer deze beschikbaar is:
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
Voor app-ontwikkelaars
Implementeer coderen/ontsleutelen voor dit document. Detecteer HOBCMSG1 in bestandsverkenners en toon een badge voor versleutelde berichten — toon geen versleutelde tekst als chatbericht. Desktop- en mobiele wallets met HobbyHash zullen dit formaat hergebruiken.