Mensajes de pago en la cadena de bloques
HOBCMSG1 permite que las carteras adjunten un mensaje privado UTF-8 a un pago mediante una única salida OP_RETURN. El texto cifrado es público; solo la clave de pago del destinatario puede descifrarlo.
Descripción general
El envío a través de la billetera web admite un mensaje privado opcional (máximo 300 caracteres). Se publica el mismo formato de transmisión para que Windows, Linux, Android y las aplicaciones de terceros puedan implementar funciones de envío y recepción compatibles posteriormente.
Modelo de privacidad
El importe, la dirección y la hora del pago permanecen públicos. Los bytes del mensaje en la cadena de bloques son texto cifrado. Cualquier persona con la clave privada de pago del destinatario puede descifrarlo. Los destinos de monederos web de custodia son descifrados por el sitio para el destinatario que ha iniciado sesión (con el mismo nivel de confianza que la custodia).
Formato de cable
Carga útil de datos OP_RETURN única:
HOBCMSG1 | ver:1 | flags:0 | utf8_plaintext
Prefijo ASCII HOBCMSG1, luego ver (1 byte, actualmente 1), flags (1 byte; bit0 = cifrado), clave pública comprimida efímera (33 bytes), nonce AES-GCM (12 bytes), texto cifrado, luego etiqueta de autenticación de 16 bytes.
Criptografía
El remitente genera un par de claves efímeras secp256k1, ECDH con la clave pública de pago comprimida del destinatario, HKDF-SHA256 (información HOBCMSG1-v1) a una clave de 32 bytes, luego AES-256-GCM. La clave pública del destinatario DEBE coincidir con el programa de testigo P2WPKH de la dirección de destino hobc1… mediante hash160.
Límites
Las carteras HobbyHash utilizan un límite de 300 caracteres en texto plano UTF-8 para las notas de pago. La política de retransmisión del nodo permite portadores de datos OP_RETURN más grandes; tenga en cuenta las tarifas de las cargas útiles de la aplicación.
Clave pública del destinatario
Si la dirección de destino ya tiene una clave pública conocida (gasto previo o dirección de monedero activo/de solo lectura), los monederos pueden resolverla automáticamente. De lo contrario, el remitente debe proporcionar la clave pública comprimida que coincida con la dirección. Sin una clave pública coincidente, no se puede adjuntar un mensaje privado (el envío simple sigue funcionando).
Ejemplo de RPC
Cree una salida de pago más datos (hex es la carga útil HOBCMSG1), luego financie/firme/transmita, o utilice el send RPC experimental cuando esté disponible:
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
Para desarrolladores de aplicaciones
Implementa la función de cifrado/descifrado para este documento. Detecta HOBCMSG1 en los exploradores y muestra una insignia de mensaje cifrado; no muestres el texto cifrado como texto de chat. Las carteras HobbyHash para escritorio y dispositivos móviles reutilizarán este formato.