The write-up
Silent payments let you pay someone without either of you reusing an address. Until now, though, a silent payment had to come from a single signer holding every coin’s key. This project removes that limit.
Two airgapped DIY signers built on two different crypto libraries, KISS-signer on libwally and Krux on embit, each pay with their own coin into one silent payment. Each signer holds only its own key. It adds a BIP-375 share for its coin with a DLEQ proof, and checks the other signer’s proof before it signs. If the two crypto libraries disagree on any maths, the signer refuses. Everything travels by QR code, so the signers never touch a network.
The two kiss-bdk wallets, a command line bitcoin wallet built on BDK, pass the transaction to each other over the Marmot protocol: end to end encrypted MLS group messages carried by nostr relays, with no server of our own. The demo runs live on Mutinynet, and the recipient finds the payment with an ordinary silent payment scan.
It’s a multi-party, multivendor building block: the step any future multisig silent payment will need, shown working across two independent implementations.
Two airgapped DIY signers built on two different crypto libraries, KISS-signer on libwally and Krux on embit, each pay with their own coin into one silent payment. Each signer holds only its own key. It adds a BIP-375 share for its coin with a DLEQ proof, and checks the other signer’s proof before it signs. If the two crypto libraries disagree on any maths, the signer refuses. Everything travels by QR code, so the signers never touch a network.
The two kiss-bdk wallets, a command line bitcoin wallet built on BDK, pass the transaction to each other over the Marmot protocol: end to end encrypted MLS group messages carried by nostr relays, with no server of our own. The demo runs live on Mutinynet, and the recipient finds the payment with an ordinary silent payment scan.
It’s a multi-party, multivendor building block: the step any future multisig silent payment will need, shown working across two independent implementations.