Thread

Zero-JS Hypermedia Browser

Relays: 5
Replies: 1
Generated: 00:09:36
- BIP47 doesn't rely on any trusted server. In the example, Alice is paying Bob: 1- Alice gets Bob’s payment code. Besides some metadata, this code contains Bob’s xpub at derivation path 47; 2- Alice prepares a notification transaction. She selects one of her UTXOs and creates a shared secret S = k.B, with k being the private key of one of her UTXOs and B being the first public key of Bob’s xpub. She encrypts her own payment code applying XOR between her code and HMAC-SHA512(o, Sx), with o being the previous outpoint of the UTXO and Sx being the X coordinate of S; 3- She sends the transaction to Bob’s notification address, which is the first address of Bob’s xpub, including her encrypted payment code in the op_return; 4- Bob reads the op_return, finds S = b.K, with b being the private key of B and K being the public key of k. Bob gets K and o from the notification transaction. With that info, he is able to retrieve Alice’s payment code; 5- Alice can now derive new addresses and send payments to Bob by multiplying the private key a from her payment code and Bob’s public keys B0, B1, B2 etc from his payment code. Bob will do the opposite: b0.A, b1.A, b2.A etc; More on this here and no bip47 does not use any servers https://medium.com/@ottosch/how-bip47-works-ee641cc14bf3
2025-10-27 23:50:06 from 1 relay(s) ↑ Parent 1 replies ↓
Login to reply

Replies (1)

> Bob reads the op_return How does he do that without contacting a server? The OP said he uses bip47 on a mobile phone, so it is very unlikely that a copy of the blockchain is on the device. Therefore, unless you are in the very special circumstance of actively syncing blocks on your mobile device, your bip47 wallet contacts a server.
2025-10-28 04:31:07 from 1 relay(s) ↑ Parent 2 replies ↓ Reply