Vai al contenuto
buybitcoinsmart

Glossario / Privacy e sicurezza

Payjoin

Noto anche come P2EP, Pay-to-endpoint.

Che cos'è un payjoin?
Un payjoin è un pagamento in cui la persona che riceve i bitcoin aggiunge discretamente un proprio input alla tua transazione, così l'importo on-chain non corrisponde più all'importo che hai effettivamente pagato.

Specificato nel BIP-78.

Entrambe le parti contribuiscono con input, il che rompe la regola che gli analisti usano per raggruppare gli indirizzi in wallet. Nicolas Dorier lo ha specificato come BIP78 a maggio 2019, ed è implementato, non teorico: BTCPay Server ha introdotto il supporto nel 2020. Per chi paga, la transazione costa un po' di più in commissioni e appare del tutto ordinaria.

Come funziona

Il protocollo payjoin è una breve conversazione che avviene tra il momento in cui premi invio e il momento in cui la transazione viene diffusa.

Il tuo wallet costruisce il pagamento come PSBT non firmato, esattamente come farebbe per una spesa normale, e lo invia a un endpoint che il destinatario ha annunciato nella richiesta di pagamento. Il destinatario aggiunge un proprio output non speso come secondo input, aumenta il proprio output dello stesso importo così da ricevere comunque il pagamento corretto, e restituisce il PSBT modificato. Il tuo wallet verifica che la destinazione e l'importo siano invariati, firma e diffonde.

Quello che finisce on-chain ha due input di proprietà di due persone diverse. Un analista che applica la regola di raggruppamento standard unirà due estranei in un solo wallet, una conclusione falsa registrata in modo permanente nel suo insieme di dati. Anche l'importo del pagamento sparisce: nessun output è uguale a ciò che hai pagato, perché l'output del destinatario è il pagamento più il proprio input conferito. Un osservatore non può più leggere la fattura dalla transazione.

Il BIP78 limita il costo per te. Il parametro maxadditionalfeecontribution indica quanti satoshi sei disposto a pagare per l'input aggiuntivo che inserisce il destinatario, così un destinatario non può gonfiare di nascosto la tua commissione. Se qualcosa va storto, l'endpoint non è raggiungibile, la risposta è malformata, gli importi non tornano, il tuo wallet ripiega diffondendo la transazione originale. Un payjoin fallito resta un pagamento completato, ed è per questo che può essere attivato per impostazione predefinita senza rompere nulla.

I destinatari ottengono un secondo vantaggio che non ha nulla a che vedere con la privacy. Ogni payjoin consente loro di inserire uno dei propri bitcoin in una transazione che qualcun altro paga in gran parte, il che è una manutenzione gratuita contro un wallet pieno di output di piccolo taglio.

Dove lo vedi

Il payjoin vive dal lato del commerciante, quindi la maggior parte delle persone lo incontra senza accorgersene.

BTCPay Server è stata la prima implementazione in produzione e offre il payjoin sulle fatture, ed è per questo che le pagine di donazione e i checkout self-hosted sono dove compare più spesso. Wasabi e Sparrow possono inviare a un endpoint payjoin dal desktop.

Il punto debole del progetto originale era che il destinatario doveva gestire un server pubblico ed essere online al momento del pagamento, il che lo limitava ai commercianti. BIP77, "Async Payjoin" di Dan Gould e Yuval Kogman, creato ad agosto 2023 e ancora una bozza, sostituisce l'endpoint diretto con una directory di archiviazione e inoltro raggiunta tramite Oblivious HTTP, così due wallet su smartphone possono completare un payjoin senza che nessuno dei due sia online nello stesso momento. Bull Bitcoin e Cake Wallet hanno rilasciato quella versione nelle app mobili, ed è la prima volta che il payjoin è disponibile per i comuni pagamenti tra persone.

La tesi più forte a favore del suo uso è una che non vedrai mai personalmente. Ogni payjoin nell'insieme di dati rende la regola della proprietà comune degli input meno affidabile per tutti, comprese le persone che non ne hanno mai fatto uno. Le tecniche di privacy che aiutano solo chi le usa sono rare; questa degrada la sorveglianza per l'intera rete con ogni transazione.

Da non confondere con

Domande frequenti

Un payjoin costa di più a chi invia?

Un po'. L'input aggiuntivo del destinatario rende la transazione più grande, e il BIP78 consente al tuo wallet di limitare quel costo con il parametro maxadditionalfeecontribution, quindi l'aumento è di solito di qualche centinaio di satoshi, non qualcosa di percettibile.

Cosa succede se l'endpoint payjoin del destinatario non è disponibile?

Il tuo wallet diffonde invece la transazione originale. Il ripiego è integrato nel protocollo, quindi un payjoin fallito resta un pagamento completato e il destinatario riceve esattamente ciò che hai inviato.

Termini correlati

Altro in Privacy e sicurezza

Leggi questa pagina in inglese