Wiadomości płatnicze w łańcuchu
HOBCMSG1 pozwala portfelom dołączyć prywatną wiadomość UTF-8 do płatności za pomocą jednego wyjścia OP_RETURN. Szyfrogram jest publiczny; odszyfrować może tylko klucz płatności odbiorcy.
Przegląd
Portfel internetowy obsługuje opcjonalną prywatną wiadomość (maks. 300 znaków). Ten sam format przelewu jest dostępny, dzięki czemu aplikacje na systemy Windows, Linux, Android i inne mogą później wdrożyć kompatybilną funkcję wysyłania/odbierania.
Model prywatności
Kwota płatności, adresy i czas pozostają publiczne. Bajty wiadomości w łańcuchu są szyfrowane. Każdy, kto posiada klucz prywatny odbiorcy płatności, może je odszyfrować. Docelowe miejsca docelowe portfela internetowego z depozytem są odszyfrowywane przez witrynę dla zalogowanego odbiorcy (to samo zaufanie, co w przypadku depozytu).
Format drutu
Pojedynczy ładunek danych OP_RETURN:
HOBCMSG1 | ver:1 | flags:0 | utf8_plaintext
Dodaj prefiks ASCII HOBCMSG1, następnie ver (1 bajt, obecnie 1), flags (1 bajt; bit0 = zaszyfrowany), tymczasowy skompresowany klucz publiczny (33 bajty), jednorazowy identyfikator AES-GCM (12 bajtów), tekst zaszyfrowany, następnie 16-bajtowy znacznik uwierzytelniania.
Kryptografia
Nadawca generuje efemeryczną parę kluczy secp256k1, ECDH, ze skompresowanym kluczem publicznym płatności odbiorcy, HKDF-SHA256 (info HOBCMSG1-v1), do klucza 32-bajtowego, a następnie szyfruje AES-256-GCM. Klucz publiczny odbiorcy MUSI być zgodny z hash160-kodowanym programem świadka P2WPKH adresu docelowego hobc1….
Ograniczenia
Portfele HobbyHash używają limitu 300 znaków w tekście jawnym UTF-8 dla not płatniczych. Polityka przekazywania węzła dopuszcza większe nośniki danych OP_RETURN; należy zachować świadomość opłat za ładunki aplikacji.
Klucz publiczny odbiorcy
Jeśli adres docelowy ma już znany klucz publiczny (wcześniejsze wydatki lub adres tylko do obserwowania/gorącego portfela), portfele mogą go automatycznie rozwiązać. W przeciwnym razie nadawca musi dostarczyć skompresowany klucz publiczny, który pasuje do adresu. Bez pasującego klucza publicznego nie można dołączyć prywatnej wiadomości (zwykłe wysyłanie nadal działa).
Przykład RPC
Utwórz płatność wraz z danymi wyjściowymi (kod szesnastkowy to ładunek HOBCMSG1), a następnie sfinansuj/podpisz/nadaj — lub użyj eksperymentalnego send RPC, jeśli jest dostępny:
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
Dla programistów aplikacji
Wprowadź kodowanie/deszyfrowanie dla tego dokumentu. Wykryj HOBCMSG1 w eksploratorach i pokaż odznakę zaszyfrowanej wiadomości — nie wyświetlaj tekstu zaszyfrowanego jako tekstu czatu. Portfele HobbyHash na komputerach stacjonarnych i urządzeniach mobilnych będą ponownie wykorzystywać ten format.