Consegna contro pagamento su blockchain PlatoBlockchain Data Intelligence. Ricerca verticale. Ai.

Consegna contro pagamento su una blockchain

Come le blockchain possono risolvere il problema più vecchio del libro

Il commercio tra le persone è antico quanto l'umanità stessa. Cominciò nel momento in cui l'uomo delle caverne Ogg disse all'uomo delle caverne Ugg: "Io ti do roccia, tu mi dai bacche". Ma il trading porta con sé un problema fondamentale: richiede fiducia. Cosa impedisce a Ogg di usare la roccia per colpire Ugg, quindi afferrare entrambe le rocce ed bacche prima di scappare? Come si traduce un accordo di scambio verbale in un meccanismo di applicazione che assicuri che entrambe le parti mantengano la parola data?

Per fare un esempio moderno, alcuni anni fa ho venduto un'auto sul mercato dell'usato. Ho trovato un acquirente su Internet, ci siamo incontrati di persona, ha fatto testare l'auto e abbiamo concordato un prezzo. Così è andato alla sua banca per ottenere un assegno circolare, che è effettivamente denaro contante in una forma più compatta. Siamo andati insieme a un ufficio postale, dove posso firmare e presentare un modulo ufficiale del governo che trasferisce la proprietà legale dell'auto.

Quindi eccoci lì, in piedi alla finestra dell'ufficio postale, e raggiungiamo un imbarazzante vicolo cieco. Ha ancora in tasca l'assegno e ho in mano il modulo firmato. Ci siamo conosciuti poche ore fa e non abbiamo motivo di fidarci l'uno dell'altro. Consegno prima il modulo e poi spero che mi dia l'assegno, piuttosto che scappare? O mi passa l'assegno e poi spero di dare il modulo? In ogni caso, qualcuno si sta esponendo al rischio di tradimento.

E poi mi sono reso conto che avrei dovuto smetterla di preoccuparmi e semplicemente consegnare il modulo. Perché? Perché una delle due cose potrebbe accadere dopo. O l'acquirente mi consegna l'assegno, nel qual caso sono tutti contenti e lo scambio è completo. Ma cosa succede se invece scappa? In tal caso, l'impiegato dell'ufficio postale vedrà e strapperà il modulo che gli ho appena dato. Bingo, abbiamo noi stessi uno scambio sicuro.

Hai visto cosa è successo lì? Il nostro dilemma è stato risolto tramite il ricorso a un intermediario, in questo caso l'addetto alle poste. L'impiegato si accerta che abbia luogo una transazione equa o nessuna transazione. E non solo un intermediario qualsiasi può fornire questo servizio. Deve essere qualcuno di cui entrambe le parti si fidano. Nel caso di un dipendente di un ufficio postale di proprietà del governo, ciò deriva dalla nostra fiducia nel governo stesso. Se gli impiegati dell'ufficio postale potessero essere corrotti, io o l'acquirente potremmo organizzare una situazione in cui ci ritroviamo con contanti e macchina. In effetti, in molti paesi, una corruzione come questa può essere un'enorme perdita di prosperità.

I cavernicoli e le auto sono una cosa, ma spostiamo la nostra attenzione sul mondo finanziario, in cui il trading gioca a ruolo centrale. Ovviamente, le banche non pagano i propri dipendenti per scappare con le azioni di qualcun altro. Ma lo scambio sicuro di attività finanziarie rimane un problema importante, perché ci sono modi meno fumettosi in cui i partecipanti a una transazione possono non mantenere la loro promessa. Ad esempio, una parte potrebbe diventare insolvente o un improvviso cambiamento delle condizioni di mercato potrebbe impedire loro di garantire un'attività. Possono subire errori di trascrizione o gli effetti a catena di un file frode contabile presso un'altra controparte.

Come risultato di questi "rischi di regolamento", La maggior parte delle transazioni finanziarie vengono regolate utilizzando consegna contro pagamento (DvP). Questo è solo un termine di fantasia per il processo di ufficio postale descritto sopra. DvP garantisce che, se una parte di una transazione non consegna ciò che è stato promesso, l'altra parte può mantenere la risorsa che ha offerto in cambio.

E come viene implementata la consegna contro il pagamento nel mondo della finanza? Hai indovinato, tramite intermediari fidati. Queste potrebbero essere altre banche, stanze di compensazione o depositari centrali di titoli. Poiché la maggior parte delle operazioni odierne avvengono digitalmente, non si tratta di gestire il trasferimento di certificati fisici o contanti. Piuttosto, il DvP è ottenuto dall'intermediario aggiornando simultaneamente un numero di record nel proprio database e / o trasmettendo istruzioni ad altre istituzioni.

Consegna contro pagamento tramite blockchain

Parlare di database ci porta chiaramente all'argomento delle blockchain. Una blockchain consente di condividere e sincronizzare un libro mastro o un database tra più parti. Tuttavia, a differenza dei normali database, i database blockchain possono essere modificati in modo sicuro e diretto da più utenti anche se sono in forte concorrenza tra loro. Se lavori nell'IT aziendale, potresti riflettere sulle implicazioni di quella frase.

Per capire come funziona la consegna rispetto al pagamento su una blockchain, dobbiamo iniziare comprendendo il modello transazionale di bitcoin. Va notato qui che altri progetti di blockchain utilizzano un modello diverso per le transazioni e parleremo più avanti di queste differenze in seguito.

Una transazione bitcoin ha una serie di input e output. Ogni input è collegato a un output di una transazione precedente, con tutti i bitcoin dell'output precedente che fluiscono. I bitcoin negli input di una transazione vengono quindi ridistribuiti tra i suoi output in base alle quantità scritte all'interno. Inoltre, ogni output di transazione contiene l'identificatore pubblico del suo nuovo proprietario, per il quale il proprietario possiede una chiave privata corrispondente. Una transazione bitcoin è valida solo se:

  • La quantità totale di bitcoin negli input della transazione è maggiore o uguale alla quantità scritta nei suoi output. L'eventuale differenza viene raccolta come commissione dal “minatore” che conferma la transazione in un blocco, creando un meccanismo di mercato attraverso il quale le transazioni possono fare un'offerta per la conferma.
  • La transazione è approvata dai proprietari di ogni output precedente che tale transazione "spende". Questa approvazione viene espressa tramite una firma crittografica del contenuto della nuova transazione. La firma per un output precedente può essere creata solo utilizzando la chiave privata che corrisponde al suo identificatore pubblico.

Entrambe queste regole sono fondamentali in un libro mastro finanziario condiviso tra parti non fiduciarie. Senza il primo, chiunque potrebbe creare bitcoin dal nulla. E senza il secondo, tutti potrebbero spendere i bitcoin di tutti gli altri. Ma abbiamo anche bisogno di una terza regola, che viene applicata a livello globale piuttosto che all'interno delle singole transazioni:

  • Ogni output di transazione può essere utilizzato solo da una transazione successiva. Ciò impedisce un attacco noto come doppio spesa in cui gli stessi bitcoin vengono inviati a più destinatari.

Per applicare questa regola, la blockchain contiene un registro cronologico di transazioni valide che non sono in conflitto tra loro e questo registro viene verificato in modo indipendente da ogni nodo della rete.

Il modello transazionale bitcoin può essere facilmente esteso per rappresentare qualsiasi asset finanziario. Invece di un output di transazione contenente bitcoin, può contenere un identificatore di asset e una quantità. Tutte le regole che riguardano le transazioni bitcoin si applicano ancora, impedendo ai partecipanti di (a) creare risorse dal nulla, (b) spendere le risorse di altre persone e (c) spendere la stessa risorsa due volte. Per le risorse non di criptovaluta, tendiamo a insistere sul fatto che le quantità di input e output si bilanciano esattamente, piuttosto che consentire ai miner di raccogliere la differenza.

Quindi, come creiamo una consegna sicura rispetto a una transazione di pagamento utilizzando questo modello? Supponiamo che Alice e Bob abbiano accettato di scambiare le £ 10 di Alice con i $ 15 di Bob. Per comodità supporremo che Alice abbia già esattamente £ 10 sedute ordinatamente in un singolo output di transazione, e allo stesso modo Bob ha $ 15. (Se questo non è il caso, possono facilmente spostare i loro fondi per farlo.)

Per cominciare, una delle parti crea una transazione con due input e due output. I due input spendono gli output precedenti contenenti rispettivamente £ 10 di Alice e $ 15 di Bob. Per quanto riguarda gli output, il primo contiene l'identificatore di Alice e $ 15, e il secondo va a Bob contenente £ 10. Poiché le quantità di input e output in entrambe le valute si bilanciano, la nostra transazione soddisfa la prima condizione di cui sopra. Per soddisfare il secondo, sia Alice che Bob devono ora firmare la transazione, poiché spende gli output precedenti appartenenti a ciascuno di essi.

La transazione può ora essere finalizzata includendola sulla blockchain, ma dobbiamo ancora considerare il problema della doppia spesa. E se Alice avesse creato una transazione in conflitto scambiando gli stessi £ 10 con una controparte diversa che le avesse offerto un affare migliore? Qui entra in gioco la terza regola, in cui la blockchain garantisce che ogni output possa essere speso solo una volta. Se la transazione concorrente viene trasmessa dopo che lo scambio di Alice con Bob è sulla blockchain, semplicemente non verrà confermata. E se la transazione concorrente è stata confermata per prima, lo scambio di Alice con Bob invece fallirà. In ogni caso, la blockchain garantisce la consegna contro il pagamento per lo scambio di Alice e Bob, così come per qualsiasi altro. Se Bob non ottiene le 10 sterline di Alice, allora Alice non riceve i suoi 15 dollari.

Il potere delle transazioni parziali

Quindi le blockchain ci danno un modo per due parti di unirsi, costruire e firmare una transazione di scambio e assicurarsi che abbia successo o fallisca nel suo insieme. Ciò consente la consegna rispetto al pagamento su un libro mastro condiviso, senza la necessità di un intermediario di fiducia per gestire il processo. I minatori che confermano le transazioni in blocchi hanno ancora un po 'di potere, ma è molto meno di un intermediario tradizionale. Il peggio che possono fare è rifiutarsi di confermare una determinata transazione nella sua interezzae questo non viola DvP. Inoltre, se il mining è condiviso tra le parti che creano effettivamente le transazioni, questo rischio svanisce completamente, poiché ognuno avrà la possibilità di confermare il proprio.

Fin qui tutto bene. Ma le blockchain in stile bitcoin hanno più assi nella manica. Ricorda che una transazione deve essere firmata dal proprietario di ogni output precedente che la transazione spende. Per impostazione predefinita, questa firma blocca l'elenco completo di input e output all'interno della transazione. La crittografia garantisce che la minima modifica a un input o output renderebbe la firma non valida. Per seguire l'esempio sopra, se Bob fosse sostituito da Carol dopo che Alice ha firmato la transazione, la transazione fallirebbe completamente.

Ma cosa succede se ad Alice non importa con chi esegue lo scambio? Per la maggior parte degli scopi, perché dovrebbe preoccuparsene? A meno che Alice non sia determinata a lavorare specificamente con Bob, ci sono solo due parti della transazione che la riguardano veramente. Innanzitutto, il fatto che la sua produzione di £ 10 verrà spesa, anziché una quantità o un asset diverso. In secondo luogo, che riceve $ 15 in una nuova uscita in cambio. Finché tutti i soldi nel sistema sono puliti, ad Alice non importa da dove vengono quei $ 15, o cos'altro potrebbe accadere per facilitare il suo scambio.

Forse una singola festa arriverà con $ 15 ed eseguirà uno scambio diretto con i £ 10 di Alice. Ma forse Bob e Carol vogliono scambiare solo $ 7.50 ciascuno. In questo caso, aggiungerebbero due input alla transazione, insieme a due output che raccolgono £ 5 ciascuno. O forse Carol vuole davvero scambiare $ 15 con 950 rubli, mentre Sasha a Mosca ha 950 rubli e sta cercando £ 10. In questo caso può avvenire uno scambio a 3 vie, in cui ogni parte si preoccupa solo del proprio pezzo del puzzle. La transazione che Alice ha avviato può essere completata in un numero infinito di modi diversi. Ma dal punto di vista di Alice, tutti questi raggiungono lo stesso scopo di darle $ 15 in cambio di £ 10, e tutti la rendono ugualmente felice.

Scenari di scambio

In che modo una blockchain lo facilita? Tramite transazioni parziali e firme parziali. Alice avvia una transazione con un singolo input (il suo £ 10) e un singolo output ($ 15 per lei). Blocca queste parti della transazione con una firma digitale che afferma che è possibile aggiungere un numero qualsiasi di altri input o output. Passa questa transazione parziale a Bob e dice "guarda cosa puoi fare". Forse lo passa anche a Carol e ad un numero qualsiasi di altre potenziali controparti o costruttori di sindacati. Ognuno di questi può aggiungere le proprie coppie di input e output, sia per bilanciare lo scambio, sia per creare una transazione parziale più ampia che può essere restituita. Qualunque cosa faccia qualcuno, la transazione può essere eseguita (cioè regolata tramite conferma sulla blockchain) solo una volta che le risorse di input e output sono bilanciate.

Una transazione blockchain è solo un pezzo di dati digitali, quindi queste transazioni parziali possono essere inviate tramite e-mail o qualsiasi altro mezzo di comunicazione. Possono anche essere pubblicati pubblicamente, perché i partecipanti alla potenziale transazione lo sanno la blockchain si prenderà cura di loro. La firma di Alice assicura che spenderà solo £ 10 se qualcuno le darà $ 15 in cambio.

Infine, se Alice sceglie di disabilitare l'offerta, tutto ciò che deve fare è spendere gli stessi £ 10 in un'altra transazione, più semplicemente rimandandoli a se stessa. Poiché la blockchain non consentirà di spendere due volte lo stesso output, ciò rende inutile la sua transazione parziale esistente. Tutti gli altri partecipanti alla blockchain lo vedranno e smetteranno di perdere tempo cercando di completare lo scambio.

Dal DvP agli smart contract

Come ho discusso in precedenza, una blockchain in stile bitcoin può essere vista come un modo per gestire la sincronizzazione e la sicurezza in un database relazionale condiviso. Entrambe le transazioni di bitcoin e database vengono trattate in modo atomico, il che significa che hanno successo o falliscono nel loro insieme. La chiave dell'analogia è l'equivalenza tra l'output di una transazione in una blockchain e una riga nel database. Una transazione blockchain che spende alcuni output e ne crea altri è uguale a una transazione di database che elimina alcune righe e ne crea invece altre. (Un'operazione di database che modifica una riga esistente equivale a eliminare quella riga e crearne una nuova aggiornata al suo posto. Questa equivalenza è alla base del popolare MVCC metodo di controllo della concorrenza nei database, di cui i blockchain in stile bitcoin possono essere visti come una forma distribuita.)

Quindi immaginiamo che i nostri dati finanziari siano conservati in un database, in cui ogni riga contiene tre informazioni: l'identificativo del proprietario, un identificatore di asset e una quantità di asset. Una blockchain consente a questo libro mastro di essere condiviso in modo sicuro tra i suoi partecipanti, anche se non si fidano affatto l'uno dell'altro. Nella lingua dei database, garantisce che:

  • Le quantità di asset nelle righe eliminate da una transazione corrispondono a quelle nelle righe che crea.
  • Per ogni riga eliminata (o modificata) da una transazione, la transazione deve essere firmata dal proprietario di quella riga.
  • Se una riga del database è stata eliminata da una transazione, ciò impedisce a un'altra transazione di eliminarla nuovamente.

Diamo un'occhiata alla prima di queste regole, vale a dire che le transazioni devono preservare le quantità di asset. Possiamo estenderlo alla nozione generale di "vincolo di transazione". Un vincolo di transazione assume la forma di una scatola nera che vede due serie di righe per ciascuna transazione: (a) le righe eliminate dalla transazione, (b) le righe che crea. Il compito della scatola nera è quello di guardare questi due set e rispondere "sì" o "no" sulla validità della transazione. Nel nostro caso specifico, risponderà sì solo se le quantità totali di asset in entrambi gli insiemi corrispondono esattamente.

Una volta che abbiamo la capacità di applicare i vincoli di transazione, possono essere estesi per contenere qualsiasi insieme di regole. Alcuni esempi potrebbero essere "un'unità di questa risorsa può essere creata solo se queste tre altre risorse sono simultaneamente bloccate in deposito a garanzia" o "questa risorsa può essere trasferita solo se c'è una riga corrispondente che segnala pioggia insufficiente". Dal punto di vista dell'architettura distribuita di una blockchain, la logica all'interno della scatola non fa differenza, fintanto che può darci una valutazione definita e coerente di ogni transazione che vede.

Di conseguenza, i vincoli di transazione possono servire come metodo generale per limitare le trasformazioni dei dati che i partecipanti alla blockchain possono eseguire. Questo approccio ai "contratti intelligenti" fornisce un'alternativa al procedura di archiviazione utilizzato in Ethereum e il suo tool proprietario Eris derivato. In un articolo futuro approfondiremo i vantaggi e gli svantaggi di questi due paradigmi, in termini di semplicità, scalabilità e concorrenza.

Puoi seguimi su Twitter qui. Guarda anche: Fine del dibattito tra bitcoin e blockchain.

Addendum tecnico

Per creare transazioni DvP parziali, utilizza un file tipo di firma of SINGLE|ANYONECANPAY. Se stai usando più giri, le preparelockunspent, createrawexchange ed appendrawexchange Chiamate API prenditi cura dei dettagli per te. Vedi il Iniziamo pagina per un semplice esempio di come possono essere utilizzati.

Si prega di inviare eventuali commenti LinkedIn.

Fonte: https://www.multichain.com/blog/2015/09/delivery-versus-payment-blockchain/

Timestamp:

Di più da più giri