mensagens de pagamento on-chain
O HOBCMSG1 permite que carteiras anexem uma mensagem privada em UTF-8 a um pagamento usando uma única saída OP_RETURN. O texto cifrado é público; somente a chave de pagamento do destinatário pode descriptografá-lo.
Visão geral
O envio de mensagens pela Carteira Web suporta o envio opcional de mensagens privadas (máximo de 300 caracteres). O mesmo formato de transferência é publicado para que aplicativos de terceiros, Windows, Linux, Android e outros sistemas operacionais possam implementar funcionalidades compatíveis de envio e recebimento posteriormente.
Modelo de privacidade
O valor, os endereços e a hora do pagamento permanecem públicos. Os bytes da mensagem na blockchain são texto cifrado. Qualquer pessoa com a chave privada de pagamento do destinatário pode descriptografá-los. Os destinos de carteiras web com custódia são descriptografados pelo site para o destinatário conectado (mesma confiança da custódia).
Formato de fio
Carga útil de dados OP_RETURN única:
HOBCMSG1 | ver:1 | flags:0 | utf8_plaintext
Prefixo ASCII HOBCMSG1, seguido por ver (1 byte, atualmente 1), flags (1 byte; bit0 = criptografado), chave pública compactada efêmera (33 bytes), nonce AES-GCM (12 bytes), texto cifrado e, por fim, tag de autenticação de 16 bytes.
Criptografia
O remetente gera um par de chaves efêmeras secp256k1, ECDH com a chave pública de pagamento comprimida do destinatário, HKDF-SHA256 (info HOBCMSG1-v1) para uma chave de 32 bytes e, em seguida, AES-256-GCM. A chave pública do destinatário DEVE corresponder ao hash160 do programa testemunha P2WPKH do endereço de destino hobc1….
Limites
As carteiras HobbyHash usam um limite de 300 caracteres em texto simples UTF-8 para mensagens de pagamento. A política de retransmissão do nó permite portadores de dados OP_RETURN maiores; mantenha os payloads do aplicativo cientes das taxas.
Chave pública do destinatário
Se o endereço de destino já possuir uma chave pública conhecida (gasto anterior ou endereço de carteira somente leitura/ativa), as carteiras podem resolvê-la automaticamente. Caso contrário, o remetente deve fornecer a chave pública compactada que corresponde ao endereço. Sem uma chave pública correspondente, não é possível anexar uma mensagem privada (o envio em texto simples ainda funciona).
Exemplo RPC
Crie um pagamento com saída de dados (em hexadecimal, o payload HOBCMSG1) e, em seguida, financie/assine/transmita — ou use o send RPC experimental quando disponível:
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 desenvolvedores de aplicativos
Implemente a codificação/descriptografia para este documento. Detecte HOBCMSG1 em exploradores de código e exiba um indicador de mensagem criptografada — não exiba o texto cifrado como texto de bate-papo. As carteiras HobbyHash para desktop e dispositivos móveis reutilizarão este formato.