Cos’è, come funziona e come effettuare una transazione Payjoin.
Payjoin, o Pay-to-EndPoint (P2EP), è un protocollo per transazioni Bitcoin che migliora la privacy degli utenti e riduce le commissioni. A differenza delle normali transazioni, dove solo il mittente fornisce gli input, in una transazione Payjoin anche il destinatario contribuisce con i propri input, confondendo così gli osservatori esterni e rendendo più difficile il tracciamento delle transazioni da parte di aziende di blockchain surveillance, con vantaggi in termini di privacy e scalabilità.
Come funziona il Payjoin
In una transazione standard il mittente invia fondi al destinatario utilizzando gli input presenti nel proprio wallet. In una transazione Payjoin sia il mittente che il destinatario contribuiscono con i loro input. Il risultato è che una parte esterna non può distinguere con facilità chi ha inviato e chi ha ricevuto i fondi, aumentando la privacy di entrambe le parti.
Dal punto di vista tecnico il Payjoin sfrutta una caratteristica del protocollo Bitcoin che permette l’uso di più input da fonti diverse, rompendo così l’euristica secondo la quale tutti gli input di una transazione appartengono alla stessa entità (common-input-ownership heuristic).
Vantaggi del Payjoin
- Privacy: rende difficile capire chi è il mittente, il destinatario e la quantità di fondi inviata in una transazione, risultando indistinguibile da una normale transazione Bitcoin;
- Risparmio sulle commissioni: il Payjoin permette il “batching” delle transazioni, riducendo l’uso dello spazio nei blocchi e diminuendo le commissioni fino al 16% rispetto a una transazione standard;
- Lightning Network: il Payjoin rende l’apertura dei canali LN più semplice perché gli utenti devono effettuare solo una transazione invece di due (se si dispone di un nodo LN occorre prima inviare una transazione al wallet onchain vuoto del nodo e successivamente effettuare un’altra transazione onchain per aprire il canale), più veloce perché devono aspettare la conferma di una sola transazione, e più economica perché devono pagare una sola commissione.
Come fare una transazione Payjoin
Per effettuare una transazione Payjoin sia il mittente che il destinatario devono utilizzare un wallet che supporti il protocollo Payjoin. A questo link trovate la lista dei wallet che supportano il Payjoin.
Per effettuare una transazione Payjoin il mittente e il destinatario devono utilizzare due hot wallet. In questo caso utilizziamo il wallet presente all’interno di BTCPay Server, che supporta transazioni Payjoin sia in ricezione che in invio.
- Creazione wallet: per creare un wallet compatibile con Payjoin su BTCPay Server, create prima di tutto uno Store. Successivamente cliccate su Bitcoin > Create a new wallet > Hot wallet. Abilitate l’opzione Enable Payjoin e cliccate su Create. Salvate la seed phrase che vi viene mostrata a schermo e cliccate su Done. Per effettuare la transazione sarà necessario creare due store e due wallet, uno per ricevere e uno per inviare.
NB: Per il successo della transazione è necessario che il wallet del destinatario contenga almeno un UTXO da aggiungere come input nella transazione di Payjoin.
- Creazione richiesta di pagamento: create una richiesta di pagamento onchain attraverso la voce Point of Sale o Invoices. Una volta creata, visualizzate l’invoice e copiate il link di pagamento BIP21 presente sul tasto Pay in wallet.
- Invio della transazione: andate sul wallet da cui volete inviare la transazione, cliccate su Send e incollate il link che avete copiato in precedenza.
- Firma e trasmissione della transazione: cliccate su Sign transaction per firmare la transazione e su Broadcast (Payjoin) per trasmettere la transazione alla rete Bitcoin.