BIP-352: privébetalingen met Silent Payments
Een nieuwe technologie voor wallets verbetert de privacy van bitcoinbetalingen: Silent Payments. Daarmee kan je op basis van één public key van een ontvanger een onbeperkt aantal kersverse ontvangstadressen genereren voor de ontvanger, die voor buitenstaanders niet herleidbaar zijn naar de public key.
Een bekend privacyprobleem bij bitcointransacties is dat alle transacties publiekelijk inzichtelijk zijn op de blockchain. Zodra een bitcoinadres van iemand bekend is, is het eenvoudig om via een blockchain explorer te zien welke transacties naar dat adres gaan en te traceren waarnaar de binnengekomen fondsen daarna verstuurd worden. Dat geldt voor transacties uit het verleden, maar ook voor transacties in de toekomst.
Een veelgebruikte oplossing om dit privacyverlies te beperken is om voor iedere bitcointransactie een nieuw en uniek bitcoinadres te gebruiken. Op die manier zijn er op de blockchain in principe geen verbanden met andere transacties. De meeste wallets genereren daarom iedere keer een nieuw bitcoinadres, zodra je op 'ontvangen' drukt.
Ideaal is het niet. Ontvangers moeten ervoor namelijk handmatig nieuwe bitcoinadressen genereren en aanleveren aan iedereen die een transactie wil doen, om hun privacy te beschermen. Op die manier is het niet mogelijk om één publiek bitcoinadres te gebruiken - bijvoorbeeld om donaties op te ontvangen - zonder aanzienlijk privacyverlies.
Silent Payments
Met Silent Payments kan dat wel. Dat maakt het mogelijk voor een ontvanger om één (silent) public key te publiceren, die door verzenders gebruikt kan worden om unieke en ongebruikte bitcoin ontvangstadressen te genereren waartoe alleen de ontvanger toegang heeft.
Het werkt eigenlijk vrij simpel. Een ontvanger maakt eerst ergens op een publieke plek een (silent) public key bekend voor de Silent Payments. Met een wallet die Silent Payments ondersteunt genereren verzenders vervolgens een nieuw bitcoinadres door via een wiskundige formule de public key van de ontvanger te vermenigvuldigen met een private key van de verzender, en daar wordt nogmaals de public key bij op te tellen. Dat levert een uniek en ongebruikt bitcoinadres op, waar de Silent Payment-transactie naartoe gaat.
De ontvanger kan vervolgens Silent Payment-transactie herkennen door alle transacties op de blockchain te scannen en per stuk een vergelijkbare formule te doorlopen, totdat er een match is gevonden met een bitcoinadres waartoe de wallet van de ontvanger toegang heeft.
Het voordeel is dat verzenders op deze manier zelf nieuwe ontvangstadressen voor een ontvanger kunnen genereren, zonder medewerking van de ontvanger. Bovendien zijn de transacties via Silent Payments in principe alleen bekend bij de verzender en de ontvanger, omdat er geen transacties worden gedaan naar publiek bekende adressen. Wie een (silent) public key via een blockchain explorer onderzoekt, vindt dan ook niets terug over de Silent Payments-transactiegeschiedenis.
Een nadeel is dat het voor de ontvanger enige rekenkracht kost om in ieder block alle transacties te controleren. Voor gebruikers met een bitcoin full nodes levert dat bovenop de gewoonlijke validatie geen noemenswaardige lastenverzwaring op, maar voor gebruikers met light clients vooralsnog wel. Silent Payments is echter nog volop in ontwikkeling en er zijn diverse ideeën om het protocol te optimaliseren.
BIP-353
Eerder deze maand werd aan Silent Payments voor het eerst een Bitcoin Improvement Proposal nummer toegekend: BIP-352. De ontwikkeling is zoals gewoonlijk te volgen via GitHub.
Enkele wallets bieden al ondersteuning voor Silent Payments. Op de website Silentpayments.xyz is te zien welke wallets dat zijn. Op het moment van schrijven zijn dat Cake Wallet, BlueWallet en Silentium. Naar verwachting zullen binnenkort meer wallets volgen.
Lees ook eens over andere technologische ontwikkelingen, zoals Taproot Assets of OP_CAT.