1. Ce modele sunt folosite în prezent în lanț?

Lanțuri cunoscute precum Ethereum, EOS și Solana folosesc toate modelul de cont.Se poate spune chiar că peste 90% dintre proiecte folosesc modelul de cont, în timp ce doar unele proiecte consacrate folosesc modelul UTXO, precum BTC și DOGE. . , LTC, desigur, unele proiecte relativ noi folosesc și acest model, cum ar fi FUEL care utilizează schema OP în Layer2.

2. Ce este un model de cont?

Pentru a înțelege pur și simplu, este sistemul de cont bancar, cum ar fi transferurile între bănci, Alipay, transferurile WeChat etc., toate aparțin modelului de cont. Hai sa-ti dau un exemplu:

Dacă A are 100 și B are 100

În acest moment, A transferă 50 de yuani către B

Forma de exprimare în sistem este

A -50,B +50

Deci echilibrul lor

A 50, B 150

Acesta este un transfer.

Să presupunem din nou că A mai are 100 și dorește să transfere 1 yuan la 100 de oameni noi care și-au deschis conturi.

În acest moment, A trebuie să transfere 1 yuan la 100 de persoane în același timp.

Tranzacția 1

A -1, persoana 1 +1

Deci echilibrul lor

A 99, persoana 1 1

a 2-a lovitură

A -1, persoana a 2-a +1

Deci echilibrul lor

A 98, Persoana 2 1

numarul 3

A -1, persoana a 3-a +1

Deci echilibrul lor

A 97, Persoana 3 1

și așa mai departe

......

Persoana a 100-a

A -1, a 100-a persoană +1

Deci echilibrul lor

A 0, a 100-a persoană 1

Teoretic, sunt necesare 100 de transferuri, iar următorul transfer trebuie mai întâi să îl completeze pe cel anterior. În caz contrar, soldul contului nu poate fi garantat a fi consistent și va exista confuzie, dacă există transferuri multiple, dacă soldul este suficient pentru a fi transferat. , etc.

Teoretic, pe măsură ce numărul tranzacțiilor crește, timpul necesar pentru execuție crește.

3. Ce este modelul UTXO?

După cum am menționat mai devreme, mulți jucători consacrați folosesc UTXO, iar Bitcoin, strămoșul acestui cerc, folosește și modelul UTXO Apropo, DCEP, moneda digitală legală emisă de țara noastră, se bazează și pe modelul UTXO. acest model Trebuie să aibă unicitatea lui.

Numele complet al UTXO este Ieșirea tranzacției necheltuite, ceea ce înseamnă „ieșire de tranzacție necheltuită”.

A are un portofel (un portofel real) cu o valoare nominală de 1 yuan, o valoare nominală de 10 yuani și o valoare nominală de 100 de yuani.

A vrea să-i dea lui B, C și D câte 1 yuan.

A Există trei moduri

Tip 1: Oferiți lui B o valoare nominală de 1 yuan

A doua opțiune: Oferiți lui C o valoare nominală de 10 yuani și primiți 9 yuani înapoi.

A treia metodă: Dă-i lui D o valoare nominală de 100 de yuani și primește 99 de yuani înapoi.

Toate cele trei moduri pot finaliza această tranzacție.

Revenind la lanț, imaginați-vă că fiecare valoare nominală a banilor de aici este de fapt un UTXO în lanț. UTXO-ul în timpul utilizării nu este transferat, ci este distrus și reconstruit în mod constant, de exemplu:

A folosește a doua metodă pentru a transfera bani către C. UTXO cu o valoare nominală de 10 yuani va fi distrus. Sistemul va retipări un UTXO cu o valoare nominală de 9 yuani dat lui C și cei 9 yuani vor fi returnați A.

A treia metodă este aceeași Când 100 de yuani sunt distruși, un UTXO cu o valoare nominală de 1 yuan și o valoare nominală de 99 de yuani este dat lui D și cei 99 de yuani sunt returnați.

Aceasta este diferența dintre UTXO și metodele de transfer al modelului de cont. Ceea ce este și mai minunat este că modelul UTXO poate fi transferat în paralel de mai sus trei metode Poate fi completat simultan într-o singură tranzacție, deoarece nu este implicată nicio problemă de consistență a contului și fiecare UTXO este calculat independent.

Când comparăm modelele de cont de mai sus, fiecare tranzacție trebuie să se bazeze pe finalizarea tranzacției anterioare. Decalajul de performanță poate fi imaginat. În acest fel, putem înțelege de ce moneda digitală a băncii centrale folosește modelul UTXO. În caz contrar, cum ar putea Shenzhen să trimită 10 milioane de renminbi digitale la 50.000 de portofele?

Să revenim la exemplul de mai sus

A are 100 și vrea să transfere 1 yuan la 100 de oameni noi care deschid conturi.

Un UTXO cu o valoare nominală de 100 poate fi împărțit în 100 UTXO cu o valoare nominală de 1 yuan și apoi distribuit direct la 100 de persoane într-o tranzacție, instantaneu.

Pe scurt, gândiți-vă la valoarea nominală a UTXO ca la numerar mai flexibil, distrus și reconstruit în mod constant pe lanț.

Dacă doriți să știți câți bani sunt în această adresă de portofel, trebuie să numărați câte solduri UTXO există și să le însumați.

4. Avantajele și dezavantajele modelului de cont și UTXO

Avantajele modelului de cont:

Contractul este stocat în Cont sub formă de cod, iar Contul are propriul său stat. Acest model are o programabilitate mai bună, este mai ușor de înțeles de către dezvoltatori și are o gamă mai largă de scenarii.

Tranzacțiile în vrac sunt mai puțin costisitoare. Imaginați-vă că grupul de minerit plătește minerilor o taxă de gestionare în UTXO, deoarece fiecare intrare și ieșire necesită un script Witness sau un script de blocare separat, tranzacția în sine va fi foarte mare, iar verificarea semnăturii și stocarea tranzacției vor consuma resurse valoroase pe lanț. . Modelul de cont poate reduce foarte mult costurile prin contracte.

Dezavantajele modelului de cont:

Nu există nicio dependență între tranzacțiile modelului de cont și problema reluării trebuie rezolvată. Cum rezolvă Ethereum această problemă. Știm că Ethereum utilizează o metodă unică de valori Nonce. Fiecare tranzacție Tx are un câmp Nonce pentru fiecare utilizator, evitând astfel atacurile de reluare.

Pentru implementarea Lightning Network/Thunder Network, Plasma, etc., este necesar un mecanism Proof proof mai complex pentru dovada utilizatorului și este necesar un protocol mai complex pentru migrarea statelor de la sub-lanțuri la lanțul principal.

Avantajele UTXO:

Calculul este în afara lanțului, iar tranzacția în sine este atât rezultatul, cât și dovada. Nodul trebuie doar să efectueze verificare și nu trebuie să efectueze calcule suplimentare asupra tranzacției și nu există stocare suplimentară de stare. Calculul UTXO de ieșire al tranzacției în sine este finalizat în portofel, astfel încât sarcina de calcul a tranzacției este suportată complet de portofel, ceea ce reduce sarcina lanțului într-o anumită măsură.

Cu excepția tranzacțiilor Coinbase, intrarea tranzacției este întotdeauna legată în spatele unui UTXO. Tranzacțiile nu pot fi reluate, iar succesiunea și dependențele tranzacțiilor pot fi ușor verificate și dacă tranzacțiile au fost consumate poate fi, de asemenea, dovedit cu ușurință.

Modelul UTXO este apatrid și mai ușor de procesat concomitent.

Confidențialitate mai bună pentru tranzacțiile de tip P2SH. Intrările în tranzacție nu sunt legate între ele, iar tehnologii precum CoinJoin pot fi folosite pentru a crește un anumit grad de confidențialitate.

Dezavantaje UTXO:

Este incapabil să implementeze o logică mai complexă și are o programabilitate slabă. Pentru logica complexă sau contracte care necesită păstrarea statului, implementarea este dificilă, iar utilizarea spațiului de stat este relativ scăzută.

Când există mai multe intrări, vor crește și scripturile de martori. Semnătura în sine consumă mai mult CPU și spațiu de stocare.

5. Care sunt diferențele scurte dintre modelul de cont și UTXO?

Balanța contului

Model de cont: Puteți vedea câți bani sunt în cont simplu și clar.

Modelul UTXO: Numărați câte UTXO sunt sub adresă, iar rezultatul rezumarii lor este soldul.

Când numărul de tranzacții crește exponențial

Model de cont: Va deveni din ce în ce mai dificil.

Modelul UTXO: acceptă în mod natural concurența ridicată.

Din perspectiva unui contract inteligent/dezvoltator

Modelul de cont se conformează obiceiurilor logice ale dezvoltatorilor și este relativ ușor de scris logic.

Programarea scripturilor UTXO este mai complicată