De blokĉeno ĝis DAG: forigi perantojn

En ĉi tiu artikolo, mi rakontos al vi pri DAG (Directed Acyclic Graph) kaj ĝia apliko en distribuitaj ĉeflibroj, kaj ni komparos ĝin kun blokĉeno.

De blokĉeno ĝis DAG: forigi perantojn

DAG estas nenio nova en la mondo de kriptaj moneroj. Vi eble aŭdis pri ĝi kiel solvo al problemoj pri skaleblo de blokĉeno. Sed hodiaŭ ni ne parolos pri skaleblo, sed pri tio, kio diferencas kriptajn monerojn de ĉio alia: malcentralizo, manko de perantoj kaj cenzura rezisto.

De blokĉeno ĝis DAG: forigi perantojn

Mi ankaŭ montros al vi, ke DAG efektive estas pli rezistema al cenzuro kaj ne ekzistas perantoj por aliri la ĉeflibron.

De blokĉeno ĝis DAG: forigi perantojn

En la blokĉenoj, kiujn ni konas, uzantoj ne havas rektan aliron al la ĉeflibro mem. Kiam vi volas aldoni transakcion al la ĉeflibro, vi devas "demandi" al la blokproduktanto (a.k.a. "ministo") fari ĝin. Estas la ministoj kiuj decidas kiun transakcion aldoni al la sekva bloko kaj kiu ne. Estas la ministoj, kiuj havas ekskluzivan aliron al blokoj kaj la rajton decidi, kies transakcio estos akceptita por inkluziviĝo en la ĉeflibro.

Ministoj estas perantoj starantaj inter vi kaj la distribuita ĉeflibro.

De blokĉeno ĝis DAG: forigi perantojn

En praktiko, kutime malgranda nombro da ministnaĝejoj kolektive kontrolas pli ol duonon de la komputika potenco de la reto. Por Bitcoin ĉi tiuj estas kvar naĝejoj, por Ethereum - du. Se ili koluzias, ili povas bloki ajnajn transakciojn, kiujn ili volas.

De blokĉeno ĝis DAG: forigi perantojn

Dum la lastaj jaroj, multaj varioj de blokĉenoj estis proponitaj, diferencantaj en la principoj de elekto de blokproduktantoj. Sed la blokproduktantoj mem ne iras ien, ili ankoraŭ "staras ĉe la baro": ĉiu transakcio devas trairi la blokproduktanton, kaj se li ne akceptas ĝin, tiam la transakcio, fakte, ne ekzistas.

De blokĉeno ĝis DAG: forigi perantojn

Ĉi tio estas neevitebla problemo kun blokĉeno. Kaj se ni volas solvi ĝin, ni devas radikale ŝanĝi la dezajnon kaj tute forigi blokojn kaj blokproduktantojn. Kaj anstataŭ konstrui ĉenon de blokoj, ni konektos la transakciojn mem, inkluzive de la hashoj de pluraj antaŭaj en ĉiu transakcio. Kiel rezulto, ni ricevas strukturon konatan en matematiko kiel direktita acikla grafeo - DAG.

Nun ĉiuj havas rektan aliron al la registro, sen perantoj. Kiam vi volas aldoni transakcion al la ĉeflibro, vi simple aldonu ĝin. Vi elektas plurajn gepatrajn transakciojn, aldonas viajn datumojn, subskribas kaj sendas vian transakcion al samuloj en la reto. Preta. Neniu malhelpas vin fari ĉi tion, do via transakcio jam estas en la ĉeflibro.

Ĉi tiu estas la plej malcentralizita, plej cenzura maniero aldoni transakciojn al la ĉeflibro sen perantoj. Ĉar ĉiuj simple aldonas siajn transakciojn al la registro sen peti permeson de iu ajn.

De blokĉeno ĝis DAG: forigi perantojn

DAGoj povas esti konsideritaj la tria etapo en la evoluo de registroj. Unue estis centralizitaj registroj, kie unu partio kontrolis aliron al ili. Tiam venis blokoĉenoj, kiuj jam havis plurajn regilojn, kiuj registris transakciojn en la ĉeflibro. Kaj finfine, tute ne estas regiloj en la DAG; uzantoj aldonas siajn transakciojn rekte.

De blokĉeno ĝis DAG: forigi perantojn

Nun kiam ni havas ĉi tiun liberecon, ĝi ne devus konduki al kaoso. Ni devas havi interkonsenton pri la stato de la registro. Kaj ĉi tiu interkonsento, aŭ konsento, kutime signifas interkonsenton pri du aferoj:

  1. Kio okazis?
  2. En kiu ordo tio okazis?

Ni povas facile respondi la unuan demandon: post kiam ĝuste kreita transakcio estis aldonita al la ĉeflibro, ĝi okazis. Kaj punkto. Informoj pri tio povas atingi ĉiujn partoprenantojn en malsamaj tempoj, sed eventuale ĉiuj nodoj ricevos ĉi tiun transakcion kaj scios, ke ĝi okazis.

Se ĝi estus blokĉeno, ministoj decidus kio okazas. Kion ajn la ministo decidas inkludi en bloko, tio okazas. Ĉio, kion li ne inkluzivas en la bloko, ne okazas.

En blokĉenoj, ministoj ankaŭ solvas duan problemon de konsento: ordo. Ili rajtas ordigi la transakciojn ene de la bloko laŭplaĉe.

Kiel determini la ordon de transakcioj en DAG?

De blokĉeno ĝis DAG: forigi perantojn

Nur ĉar nia grafeo estas direktita, ni jam havas iom da ordo. Ĉiu transakcio rilatas al unu aŭ pluraj antaŭaj, gepatroj. Gepatroj, siavice, referencas al siaj gepatroj, ktp. Gepatroj evidente aperas antaŭ infanaj transakcioj. Se iu el la transakcioj povas esti atingita per gepatra-infana ligotransiroj, ni scias precize la ordon inter la transakcioj en tiu ĉeno de transakcioj.

De blokĉeno ĝis DAG: forigi perantojn

Sed la ordo inter transakcioj ne ĉiam povas esti determinita de la formo de la grafeo sole. Ekzemple, kiam du transakcioj kuŝas sur paralelaj branĉoj de la grafeo.

De blokĉeno ĝis DAG: forigi perantojn

Por solvi ambiguecon en tiaj kazoj, ni fidas je tiel nomataj ordonprovizantoj. Ni ankaŭ nomas ilin "atestantoj". Ĉi tiuj estas ordinaraj uzantoj, kies tasko estas senĉese sendi transakciojn al la reto en orda maniero, t.e. tiel ke ĉiu el iliaj antaŭaj transakcioj povas esti atingita per transiroj laŭ la gepatro-infanaj ligiloj. Ordprovizantoj estas fidindaj uzantoj, kaj la tuta reto dependas de ili por ne malobservi ĉi tiun regulon. Por racie fidu ilin, ni postulas, ke ĉiu ordonprovizanto estu konata (ne-anonima) persono aŭ organizo kaj havu ion por perdi se ĝi malobeas la regulojn, kiel reputacion aŭ komercon bazitan sur fido.

De blokĉeno ĝis DAG: forigi perantojn

Mendaj provizantoj estas elektitaj de uzantoj, kaj ĉiu uzanto inkluzivas liston de siaj fidindaj provizantoj en ĉiu transakcio, kiun ĝi sendas al la reto. Ĉi tiu listo konsistas el 12 provizantoj. Ĉi tio estas sufiĉe malgranda nombro por persono por kontroli la identecon kaj reputacion de ĉiu el ili, kaj sufiĉa por certigi, ke la reto daŭre funkcias en la okazo de neeviteblaj problemoj kun malplimulto de ordprovizantoj.

Ĉi tiu listo de provizantoj varias de uzanto al uzanto, sed la listoj de najbaraj transakcioj povas malsami je ĝis unu provizanto.

De blokĉeno ĝis DAG: forigi perantojn

Nun kiam ni havas ordprovizantoj, ni povas izoli iliajn transakciojn en DAG kaj ordigi ĉiujn aliajn transakciojn ĉirkaŭ la ordo kreita de ili. Eblas krei tian algoritmon (vidu. Obyte Blanka Libro por teknikaj detaloj).

Sed la ordo de la tuta reto ne povas esti determinita tuj; ni bezonas tempon por la ordonprovizantoj sendi sufiĉan nombron da siaj transakcioj por kontroli la finan ordon de pasintaj transakcioj.

Kaj, ĉar la ordo estas determinita nur de la pozicioj de la transakcioj de la provizantoj en la DAG, ĉiuj nodoj en la reto baldaŭ aŭ malfrue ricevos ĉiujn transakciojn kaj venos al la sama konkludo pri la ordo de la transakcioj.

De blokĉeno ĝis DAG: forigi perantojn

Do, ni havas interkonsenton pri tio, kion ni konsideras okazi: iu ajn transakcio, kiu finiĝas en la DAG, okazis. Ni ankaŭ havas interkonsenton pri la ordo de eventoj: ĉi tio estas aŭ evidenta el la rilatoj de transakcioj, aŭ estas konkludita el la ordo de transakcioj senditaj de ordonprovizantoj. Do ni havas konsenton.

De blokĉeno ĝis DAG: forigi perantojn

Ni havas ĉi tiun version de konsento en Obyte. Kvankam aliro al la Obyte-ĉeflibro estas tute malcentralizita, la konsento pri la ordo de transakcioj ankoraŭ estas centralizita ĉar 10 el 12 provizantoj estas kontrolitaj de la kreinto (Anton Churyumov), kaj nur du el ili estas sendependaj. Ni serĉas kandidatojn volantajn fariĝi unu el la sendependaj ordonprovizantoj por helpi nin malcentralizi la mendon de la ĉeflibro.

Lastatempe, tria sendependa kandidato aperis volanta instali kaj konservi ordoprovizanto-nodon - la Universitato de Nikozio.

De blokĉeno ĝis DAG: forigi perantojn

Nun kiel ni kontrolas duoblajn elspezojn?

Laŭ la reguloj, se du transakcioj estas trovitaj elspezantaj la saman moneron, la transakcio kiu venas unue en la fina ordo de ĉiuj transakcioj gajnas. La dua estas nuligita de la konsenta algoritmo.

De blokĉeno ĝis DAG: forigi perantojn
Se eblas establi ordon inter du transakcioj elspezantaj la saman moneron (per gepatro-infanaj rilatoj), tiam ĉiuj nodoj tuj malakceptas tian provon duobligi elspezi.

De blokĉeno ĝis DAG: forigi perantojn

Se la ordo ne videblas de la gepatraj rilatoj inter du tiaj transakcioj, ili ambaŭ estas akceptitaj en la ĉeflibron, kaj ni devos atendi konsenton kaj starigon de la ordo inter ili uzante la ordonprovizantoj. Tiam la pli frua transakcio venkos, kaj la dua malvalidiĝos.

De blokĉeno ĝis DAG: forigi perantojn

Kvankam la dua transakcio fariĝas malvalida, ĝi ankoraŭ restas en la registro ĉar ĝi jam havas postajn transakciojn referencantajn ĝin, kiuj nenion malobservis kaj ne sciis, ke ĉi tiu transakcio malvalidiĝos en la estonteco. Alie, ni devus forigi la gepatron de bonaj postaj transakcioj, kio malobservus la ĉefan principon de la reto - ajna ĝusta transakcio estas akceptita en la ĉeflibron.

De blokĉeno ĝis DAG: forigi perantojn

Ĉi tio estas tre grava regulo, kiu permesas al la tuta sistemo esti imuna kontraŭ provoj de cenzuro. 

Ni imagu, ke ĉiuj mendprovizantoj koluzias en provo "cenzuri" unu specifan transakcion. Ili povas ignori ĝin kaj neniam elekti ĝin kiel "gepatron" por siaj transakcioj, sed tio ne sufiĉas, la transakcio ankoraŭ povas esti inkluzivita nerekte kiel la gepatro de iu alia transakcio eldonita de iu ajn uzanto en la reto, kiu ne koluzias. Kun la tempo, tia transakcio ricevos pli kaj pli da infanoj, nepoj kaj pranepoj de ordinaraj uzantoj, kreskantaj kiel neĝbulo, kaj ĉiuj interkonsentitaj ordonprovizantoj ankaŭ devos ignori ĉi tiujn transakciojn. Fine, ili devos cenzuri la tutan reton, kio egalas al sabotado.

De blokĉeno ĝis DAG: forigi perantojn

Tiamaniere, la DAG restas cenzura imuna eĉ se estas koluzio inter ordoprovizantoj, superante tiel la cenzur-rezistan blokĉenon, en kiu ni ne povas fari ion ajn se la ministoj decidas ne inkluzivi iun ajn el la transakcioj. Kaj ĉi tio sekvas el la ĉefa posedaĵo de DAG: partopreno en la registro estas tute sendependa kaj sen perantoj, kaj transakcioj estas neinversigeblaj.

fonto: www.habr.com

Aldoni komenton