Livrare versus plată pe un blockchain PlatoBlockchain Data Intelligence. Căutare verticală. Ai.

Livrare versus plată pe un blockchain

Cum pot rezolva blockchains cea mai veche problemă din carte

Comerțul între oameni este la fel de vechi ca omenirea însăși. A început în momentul în care omul cavernelor Ogg i-a spus omului cavernelor Ugg: „Eu îți dau piatră, tu îmi dai fructe de pădure”. Dar tranzacționarea poartă cu sine o problemă fundamentală: necesită încredere. Ce îl oprește pe Ogg să folosească piatra pentru a-l lovește pe Ugg, apoi să apuce ambele pietre și fructe de pădure înainte de a fugi? Cum traducem un acord de schimb verbal într-un mecanism de aplicare care să asigure ambele părți să își țină cuvântul?

Ca să luăm un exemplu modern, acum câțiva ani am vândut o mașină pe piața second-hand. Am găsit un cumpărător pe internet, ne-am întâlnit personal, a făcut testarea mașinii și ne-am convenit asupra unui preț. Așa că a mers la banca lui pentru a obține un cec de casierie, care este efectiv numerar într-o formă mai compactă. Am mers împreună la un oficiu poștal, unde pot semna și trimite un formular oficial guvernamental care transferă dreptul de proprietate legal al mașinii.

Așa că iată-ne, stând la fereastra oficiului poștal, și ajungem într-un impas incomodă. Cecul este încă în buzunar, iar eu țin formularul semnat. Ne-am cunoscut acum câteva ore și nu avem de ce să avem încredere unul în celălalt. Mai întâi predau formularul, apoi sper să-mi dea cecul, în loc să fug? Sau îmi înmânează cecul, apoi speră să dau în formular? Oricum, cineva se expune riscului de trădare.

Și apoi mi-am dat seama că ar trebui să încetez să-mi mai fac griji și să predau formularul. De ce? Pentru că unul din două lucruri s-ar putea întâmpla în continuare. Fie cumpărătorul îmi dă cecul, caz în care toată lumea este mulțumită și schimbul este complet. Dar dacă el fuge în schimb? În acest caz, funcționarul oficiului poștal va vedea și va rupe formularul pe care tocmai i l-am dat. Bingo, avem noi înșine un schimb sigur.

Ai văzut ce s-a întâmplat acolo? Dilema noastră a fost rezolvată prin folosirea unui intermediar, în speță funcționarul oficiului poștal. Funcționarul se asigură că fie are loc o tranzacție corectă, fie că nu există nicio tranzacție. Și nu orice intermediar poate oferi acest serviciu. Trebuie să fie cineva de încredere de ambele părți. În cazul unui angajat al unui oficiu poștal deținut de guvern, acest lucru rezultă din încrederea noastră în guvernul însuși. Dacă angajații oficiilor poștale ar putea fi mituiți, fie eu, fie cumpărătorul am putea crea o situație în care ajungem atât cu numerar, cât și cu mașina. Într-adevăr, în multe țări, corupția ca aceasta poate fi o scurgere imensă a prosperității.

Oamenii cavernelor și mașinile sunt un lucru, dar să ne concentrăm asupra lumii financiare, în care tranzacționarea joacă un rol important. rol central. Desigur, băncile nu-și plătesc angajații să fugă cu acțiunile altcuiva. Dar schimbul sigur de active financiare rămâne o problemă importantă, deoarece există modalități mai puțin caricaturale prin care participanții la o tranzacție nu își pot respecta promisiunea. De exemplu, o parte ar putea deveni insolvabilă sau o schimbare bruscă a condițiilor de piață ar putea să o împiedice să asigure un activ. Ei pot suferi de erori de scris sau de efectele secundare ale unui fraudă contabilă la o altă contrapartidă.

Ca urmare a acestor „riscurile de decontare”, majoritatea tranzacțiilor financiare sunt decontate folosind livrare contra plată (DvP). Acesta este doar un termen de lux pentru procesul oficiului poștal descris mai sus. DvP se asigură că, dacă una dintre părți la o tranzacție nu livrează ceea ce a fost promis, cealaltă parte poate păstra activul oferit în schimb.

Și cum este implementată livrarea versus plată în lumea finanțelor? Ai ghicit, prin intermediari de încredere. Acestea ar putea fi alte bănci, case de compensare sau depozitarii centrali de valori mobiliare. Deoarece majoritatea tranzacțiilor de astăzi au loc digital, aceasta nu este o chestiune de gestionare a transferului de certificate fizice sau numerar. Mai degrabă, DvP se realizează prin actualizarea simultană a unui număr de înregistrări din baza lor de date de către intermediar și/sau transmiterea instrucțiunilor către alte instituții.

Livrare versus plata prin blockchain

A vorbi despre baze de date ne aduce clar la subiectul blockchain-urilor. Un blockchain permite partajarea și sincronizarea unui registru sau a unei baze de date între un număr de părți. Cu toate acestea, spre deosebire de bazele de date obișnuite, bazele de date blockchain pot fi modificate în siguranță și direct de mai mulți utilizatori, chiar dacă aceștia sunt în competiție acerbă între ei. Dacă lucrați în IT corporativ, poate doriți să vă gândiți la implicațiile acelei propoziții.

Pentru a înțelege cum funcționează livrarea versus plata pe un blockchain, trebuie să începem prin a înțelege modelul tranzacțional al bitcoin. Trebuie remarcat aici că alte modele blockchain folosesc un model diferit pentru tranzacții și vom vorbi mai multe despre aceste diferențe mai târziu.

O tranzacție bitcoin are un set de intrări și ieșiri. Fiecare intrare este conectată la o ieșire a unei tranzacții anterioare, cu tot bitcoinul de la ieșirea anterioară curgând înăuntru. Bitcoinul din intrările unei tranzacții este apoi redistribuit în ieșirile sale în funcție de cantitățile scrise în interior. În plus, fiecare tranzacție de ieșire conține identificatorul public al noului său proprietar, pentru care proprietarul deține o cheie privată corespunzătoare. O tranzacție cu bitcoin este valabilă numai dacă:

  • Cantitatea totală de bitcoin din intrările tranzacției este mai mare sau egală cu cantitatea scrisă în ieșirile sale. Orice diferență este colectată sub formă de comision de către „minerul” care confirmă tranzacția într-un bloc, creând un mecanism de piață prin care tranzacțiile pot licita pentru confirmare.
  • Tranzacția este aprobată de proprietarii fiecărei rezultate anterioare pe care tranzacția respectivă o „cheltuiește”. Această aprobare este exprimată printr-o semnătură criptografică a conținutului noii tranzacții. Semnătura pentru o ieșire anterioară poate fi creată numai folosind cheia privată care se potrivește cu identificatorul public.

Ambele reguli sunt cruciale într-un registru financiar care este împărțit între părțile care nu au încredere. Fără primul, oricine ar putea crea bitcoini din aer. Și fără al doilea, toată lumea ar putea cheltui bitcoinii celorlalți. Dar avem nevoie și de o a treia regulă, care este aplicată la nivel global și nu în cadrul tranzacțiilor individuale:

  • Fiecare ieșire de tranzacție poate fi utilizată doar de o tranzacție ulterioară. Acest lucru previne un atac cunoscut sub numele dublu-cheltuieli în care aceleași bitcoini sunt trimise la mai mult de un destinatar.

Pentru a aplica această regulă, blockchain-ul conține un jurnal cronologic al tranzacțiilor valide care nu intră în conflict între ele, iar acest jurnal este verificat independent de fiecare nod din rețea.

Modelul tranzacțional bitcoin poate fi ușor extins pentru a reprezenta orice activ financiar. În loc de o ieșire de tranzacție care conține bitcoini, poate conține un identificator de activ și o cantitate. Toate regulile care acoperă tranzacțiile cu bitcoin încă se aplică, împiedicând participanții să (a) să creeze active din aer, (b) să cheltuiască activele altor persoane și (c) să cheltuiască același activ de două ori. Pentru activele care nu sunt criptomonede, avem tendința de a insista ca cantitățile de intrare și de ieșire să se echilibreze exact, mai degrabă decât să le permitem minerilor să colecteze diferența.

Deci, cum creăm o livrare sigură versus tranzacție de plată folosind acest model? Să presupunem că Alice și Bob au convenit să schimbe 10 lire sterline ale lui Alice cu 15 dolari ai lui Bob. Din motive de comoditate, vom presupune că Alice are deja exact 10 lire sterline într-o singură ieșire de tranzacție, iar Bob are, de asemenea, 15 dolari. (Dacă nu este cazul, își pot schimba cu ușurință fondurile pentru a face acest lucru.)

Pentru început, oricare dintre părți construiește o tranzacție cu două intrări și două ieșiri. Cele două intrări cheltuiesc ieșirile anterioare conținând £ 10 a lui Alice și, respectiv, $ 15 a lui Bob. În ceea ce privește ieșirile, prima conține identificatorul lui Alice și 15 USD, iar a doua merge la Bob care conține 10 GBP. Deoarece cantitățile de intrare și de ieșire în ambele valute se echilibrează, tranzacția noastră îndeplinește prima condiție de mai sus. Pentru a îndeplini cel de-al doilea, atât Alice, cât și Bob trebuie să semneze acum tranzacția, deoarece cheltuiește ieșirile anterioare aparținând fiecăruia dintre ei.

Tranzacția poate fi finalizată acum prin includerea acesteia în blockchain, dar trebuie totuși să luăm în considerare problema dublelor cheltuieli. Dacă Alice ar fi creat o tranzacție conflictuală schimbând aceleași 10 lire sterline cu o altă contraparte care i-a oferit o ofertă mai bună? Aici intră în joc a treia regulă, în care blockchain-ul asigură că fiecare ieșire poate fi cheltuită o singură dată. Dacă tranzacția concurentă este transmisă după ce schimbul lui Alice cu Bob este pe blockchain, atunci pur și simplu nu va fi confirmat. Și dacă tranzacția concurentă a fost confirmată mai întâi, schimbul lui Alice cu Bob va eșua. În orice caz, blockchain-ul asigură livrarea versus plata pentru schimbul lui Alice și Bob, precum și orice altul. Dacă Bob nu primește 10 lire sterline ale lui Alice, atunci Alice nu primește 15 dolari ai lui.

Puterea tranzacțiilor parțiale

Prin urmare, blockchains-urile ne oferă o modalitate prin care două părți să se reunească, să construiască și să semneze o tranzacție de schimb și să se asigure că aceasta reușește sau eșuează în ansamblu. Acest lucru permite livrarea versus plata pe un registru partajat, fără a fi nevoie de un intermediar de încredere pentru a gestiona procesul. Minerii care confirmă tranzacțiile în blocuri au încă ceva putere, dar este mult mai puțin decât un intermediar tradițional. Cel mai rău pot face este să refuze să confirme o anumită tranzacție in intregimea sa, iar acest lucru nu încalcă DvP. În plus, dacă mineritul este împărțit între părțile care creează efectiv tranzacțiile, acest risc dispare complet, deoarece fiecare va avea șansa de a-și confirma propriile.

Până acum, bine. Dar blockchain-urile în stil bitcoin au mai multe trucuri în mânecă. Amintiți-vă că o tranzacție trebuie să fie semnată de proprietarul fiecărei ieșiri anterioare pe care o cheltuiește tranzacția respectivă. În mod implicit, această semnătură blochează lista completă de intrări și ieșiri din cadrul tranzacției. Criptografia asigură că cea mai mică modificare a unei intrări sau ieșiri ar face semnătura invalidă. Pentru a urma exemplul de mai sus, dacă Bob a fost înlocuit cu Carol după ce Alice a semnat tranzacția, atunci tranzacția ar eșua complet.

Dar dacă lui Alice nu-i pasă cu cine face schimbul? Pentru majoritatea scopurilor, de ce ar trebui să-i pese? Cu excepția cazului în care Alice este hotărâtă să lucreze în mod special cu Bob, există doar două părți ale tranzacției care o privesc cu adevărat. În primul rând, faptul că producția ei de 10 GBP va fi cheltuită, mai degrabă decât o altă cantitate sau activ. În al doilea rând, că primește 15 USD într-o nouă producție în schimb. Atâta timp cât toți banii din sistem sunt curați, Alice nu o deranjează de unde provin acei 15 USD sau ce altceva s-ar putea întâmpla pentru a-și facilita schimbul.

Poate că o singură petrecere va veni împreună cu 15 dolari și va efectua un schimb direct pentru 10 lire sterline ale lui Alice. Dar poate că Bob și Carol vor să schimbe doar 7.50 dolari fiecare. În acest caz, ar adăuga două intrări la tranzacție, împreună cu două ieșiri care colectează 5 GBP fiecare. Sau poate că Carol chiar vrea să schimbe 15 USD cu 950 de ruble, în timp ce Sasha din Moscova are 950 de ruble și caută 10 GBP. În acest caz, poate avea loc un schimb în trei direcții, în care fiecare parte încă îi pasă doar de propria bucată a puzzle-ului. Tranzacția pe care Alice a început-o poate fi finalizată într-un număr infinit de moduri diferite. Dar din perspectiva lui Alice, toate acestea ating același scop de a-i oferi 3 dolari în schimbul a 15 lire sterline și toate o fac la fel de fericită.

Schimb-scenarii

Cum facilitează un blockchain acest lucru? Prin tranzacții parțiale și semnături parțiale. Alice începe o tranzacție cu o singură intrare (10 GBP) și o singură ieșire (15 USD pentru ea). Ea blochează aceste părți ale tranzacției cu o semnătură digitală care afirmă că poate fi adăugat orice număr de alte intrări sau ieșiri. Ea îi înmânează lui Bob această tranzacție parțială și îi spune „vedeți ce puteți face”. Poate i-o înmânează și lui Carol și oricăror alte potențiale contrapărți sau formatori de sindicate. Fiecare dintre acestea poate adăuga propriile perechi de intrări și ieșiri, fie pentru a echilibra schimbul, fie pentru a crea o tranzacție parțială mai mare care poate fi transmisă din nou. Indiferent ce face cineva, tranzacția poate fi executată (adică decontată prin confirmare pe blockchain) numai odată ce activele de intrare și de ieșire sunt echilibrate.

O tranzacție blockchain este doar o bucată de date digitale, astfel încât aceste tranzacții parțiale pot fi trimise prin e-mail sau prin orice alt mijloc de comunicare. Ele pot fi chiar postate public, deoarece participanții la potențiala tranzacție știu asta blockchain-ul se va ocupa de ei. Semnătura Alicei asigură că va cheltui doar 10 lire sterline dacă cineva îi dă 15 dolari în schimb.

În cele din urmă, dacă Alice alege să dezactiveze oferta, tot ce trebuie să facă este să cheltuiască aceleași 10 GBP într-o altă tranzacție, cel mai simplu trimițându-i-o înapoi. Deoarece blockchain-ul nu va permite ca aceeași ieșire să fie cheltuită de două ori, acest lucru face ca tranzacția ei parțială existentă să fie lipsită de valoare. Toți ceilalți participanți de pe blockchain vor vedea acest lucru și nu vor mai pierde timpul încercând să finalizeze schimbul.

De la DvP la contracte inteligente

Așa cum am argumentat anterior, un blockchain în stil bitcoin poate fi văzut ca o modalitate de a gestiona sincronizarea și securitatea într-o bază de date relațională partajată. Atât tranzacțiile cu bitcoin, cât și cu bazele de date sunt tratate atomic, ceea ce înseamnă că reușesc sau eșuează în ansamblu. Cheia analogiei este echivalența dintre o tranzacție dintr-un blockchain și un rând din baza de date. O tranzacție blockchain care cheltuiește unele rezultate și creează altele este aceeași cu o tranzacție de bază de date care șterge unele rânduri și creează altele în schimb. (O operație de bază de date care modifică un rând existent echivalează cu ștergerea acelui rând și cu crearea unuia nou actualizat în locul său. Această echivalență stă la baza popularității MVCC metoda de control al concurenței în baze de date, dintre care blockchain-urile în stil bitcoin pot fi văzute ca o formă distribuită.)

Deci, să ne imaginăm că datele noastre financiare sunt păstrate într-o bază de date, în care fiecare rând conține trei informații: identificatorul proprietarului său, un identificator al activului și o cantitate de activ. Un blockchain permite ca acest registru să fie partajat în siguranță între participanții săi, chiar dacă aceștia nu au deloc încredere unul în celălalt. În limbajul bazelor de date, se asigură că:

  • Cantitățile de active din rândurile șterse de o tranzacție se potrivesc cu cele din rândurile pe care le creează.
  • Pentru fiecare rând șters (sau modificat) de o tranzacție, tranzacția trebuie să fie semnată de proprietarul acelui rând.
  • Dacă un rând al bazei de date a fost șters de o tranzacție, aceasta împiedică o altă tranzacție să-l ștergă din nou.

Să ne uităm la prima dintre aceste reguli, și anume că tranzacțiile trebuie să păstreze cantitățile de active. Putem extinde acest lucru la noțiunea generală de „constrângere de tranzacție”. O constrângere de tranzacție ia forma unei casete negre care vede două seturi de rânduri pentru fiecare tranzacție: (a) rândurile șterse de tranzacție, (b) rândurile pe care le creează. Sarcina cutiei negre este să se uite la aceste două seturi și să răspundă „da” sau „nu” dacă tranzacția este validă. În cazul nostru specific, va răspunde da numai dacă cantitățile totale de active din ambele seturi se potrivesc exact.

Odată ce avem capacitatea de a aplica constrângeri de tranzacție, acestea pot fi extinse pentru a conține orice set de reguli. Unele exemple ar putea fi „o unitate a acestui activ poate fi creată numai dacă aceste trei alte active sunt blocate simultan în escrow” sau „acest activ poate fi transferat numai dacă există un rând corespunzător care raportează ploi insuficiente”. Din perspectiva arhitecturii distribuite a unui blockchain, logica din interiorul cutiei nu face nicio diferență, atâta timp cât ne poate oferi o evaluare certă și consecventă a fiecărei tranzacții pe care o vede.

Drept urmare, constrângerile tranzacțiilor pot servi ca metodă generală de restricționare a transformărilor de date pe care participanții la blockchain le pot efectua. Această abordare a „contractelor inteligente” oferă o alternativă la proceduri stocate utilizate în Ethereum şi sa Eris derivat. Într-o bucată viitoare ne vom aprofunda în avantajele și dezavantajele acestor două paradigme, în ceea ce privește simplitatea, scalabilitatea și concurența.

Poti urmăriți-mă pe Twitter aici. Vezi si: Încheierea dezbaterii bitcoin vs blockchain.

Addendum tehnic

Pentru a construi tranzacții DvP parțiale, utilizați a tipul semnăturii of SINGLE|ANYONECANPAY. Dacă folosiți multicatenari, preparelockunspent, createrawexchange și appendrawexchange Apeluri API ai grija de detalii pentru tine. Vezi Noțiuni de bază pagina pentru un exemplu simplu despre cum pot fi utilizate.

Vă rugăm să postați comentarii pe LinkedIn.

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

Timestamp-ul:

Mai mult de la multicatenari