Predstavljamo novo denarnico MultiChain PlatoBlockchain Data Intelligence. Navpično iskanje. Ai.

Najava nove denarnice MultiChain

Pomemben korak naprej za zmogljivost in razširljivost

Po dveh mesecih intenzivnega razvoja in testiranja s ponosom izdamo najnovejšo alfa MultiChain s popolnoma prenovljeno denarnico v vozlišču. Ta nova denarnica spreminja zmogljivost in razširljivost ustvarjanja, prejemanja in shranjevanja transakcij v MultiChain.

Preden se lotimo podrobnosti, naj podam nekaj konteksta. Ko smo začeli razvijati MultiChain, smo se odločili za uporabo Bitcoin Core, standardno vozlišče za javno omrežje bitcoin, kot izhodišče. V programskem smislu to pomeni, da je MultiChain "razcep" programske opreme bitcoin. Naše glavno razmišljanje je bilo, da je bil bitcoin (in je še naprej) najbolj cenjen in v bitkah najbolj preizkušen ekosistem kriptovalut, na nek način.

Pozitivna stran je, da nam je ta odločitev pomagala hitro priti na trg v primerjavi s kodiranjem vozlišča blockchain iz nič. Kljub številnim razlikam med javnimi in zasebnimi verigami blokov si delijo veliko tehničnih skupnih točk, vključno s protokolom enakovrednim, strukturo transakcij in blokov, ustvarjanjem in preverjanjem digitalnega podpisa, pravili soglasja, upravljanjem ključev in potrebo po API vozlišča. Forking iz Bitcoin Core nam je omogočil, da smo izkoristili njegovo zrelost in se osredotočili na to, kar MultiChain dodaja verigam blokov – nastavljivost, dovoljenja in izvorna podpora za sredstva. Kot rezultat, smo lahko izdali prvo alfa junija 2015, le 6 mesecev po začetku razvoja.

Vendar pa smo poleg teh prednosti morali sprejeti tudi dejstvo, da so nekateri vidiki Bitcoin Core slabo zasnovani. Medtem ko v majhnih količinah delujejo povsem dobro, se njihova zmogljivost dramatično poslabša z naraščajočo uporabo. Ker je javno omrežje bitcoin še vedno omejeno na nekaj transakcij na sekundo, to za večino uporabnikov Bitcoin Core še dolgo ne bo težava. Ker pa zasebne verige blokov ciljajo na stotine ali tisoče transakcij na sekundo, smo vedeli, da bo prej ali slej treba ta ozka grla odstraniti.

Denarnica Bitcoin Core

»Denarnica« znotraj Bitcoin Core je bila vedno najbolj ključna od teh bolečin. Njegova naloga je shranjevanje transakcij, ki so še posebej pomembne za vozlišče, ker vključujejo naslov blockchain, ki je v njegovi lasti, ali "samo za gledanje” naslov, katerega dejavnost spremlja. Na primer, vsaka transakcija, ki pošilja sredstva v ali iz vozlišča, mora biti shranjena v denarnici tega vozlišča. In vsakič, ko vozlišče ustvari transakcijo, mora poiskati enega ali več "neporabljenih rezultatov" prejšnjih transakcij denarnice, ki jih bo porabila nova transakcija.

Kaj je torej narobe z denarnico, ki smo jo podedovali od Bitcoin Core? Pravzaprav tri stvari:

  • Vse transakcije denarnice so shranjene v pomnilniku. To povzroči počasen zagon in hitro povečanje porabe pomnilnika.
  • Številne operacije izvajajo neučinkovito "popolno skeniranje" vsake transakcije v denarnici, ne glede na to, ali je stara ali nova.
  • Vsaka transakcija v denarnici je shranjena v celoti, vključno z vsemi poljubnimi »metapodatki«, ki z vidika vozlišča nimajo pomena in so že shranjeni v verigi blokov na disku. To je zelo potratno.

Posledica tega je, da se z okoli 20,000 shranjenimi transakcijami denarnica Bitcoin Core močno upočasni. Po približno 200,000 se praktično ustavi. Še huje, ker veriga blokov MultiChain omogoča do 8 MB metapodatkov na transakcijo (v primerjavi z 80 bajti bitcoina), lahko pomnilniške zahteve denarnice hitro narastejo celo z majhnim številom transakcij.

Pomembno je pojasniti, da te pomanjkljivosti veljajo samo za Bitcoin Core denarnica, namesto njegove splošne zmogljivosti za obdelavo transakcij. Z drugimi besedami, lahko udobno obdeluje in shranjuje milijone (ali celo milijarde) transakcij, ki se ne nanašajo na njegove lastne naslove, saj so ti na disku in ne v pomnilniku. Številne priljubljene menjalnice in denarnice z bitcoini na primer uporabljajo Bitcoin Core, kakršen je, vendar svoje lastne transakcije shranjujejo zunaj in ne znotraj vozlišča.

Nova denarnica podjetja MultiChain

Lahko bi postavili enako zahtevo uporabnikom MultiChain, da shranijo svoje lastne transakcije zunaj vozlišča. Vendar se to ni zdelo kot prava rešitev, ker bi zelo zapletlo nastavitev in vzdrževanje za vsakega od udeležencev verige. Namesto tega smo zagrizli v glavo in preoblikovali denarnico od začetka.

Kako se nova denarnica razlikuje? Če imate izkušnje z bazami podatkov, so odgovori morda očitni:

  • Transakcije denarnice se ne hranijo v pomnilniku, temveč so shranjene na disku v ustreznem formatu, pri čemer se transakcije, ki vas zanimajo, po potrebi pridobijo.
  • Namesto izvajanja popolnih pregledov denarnice so transakcije "indeksirane" na različne načine, da se omogoči hitro iskanje tistih, ki izpolnjujejo določena merila.
  • Noben del metapodatkov transakcije, ki je večji od 256 bajtov, ni shranjen v denarnici. Namesto tega denarnica vsebuje kazalec na položaj teh metapodatkov v sami verigi blokov.

Z drugimi besedami, denarnico v vozlišču smo preuredili tako, da je pravilno zasnovana na bazi podatkov (z uporabo LevelDB), namesto da bi se zanašali na naivno strukturo v pomnilniku, ki je ni mogoče učinkovito iskati. Ni presenetljivo, da je razlika (izmerjena na 3.4 GHz Intel Core i7) precej dramatična:

Prepustnost transakcij denarnice MultiChain

Poraba pomnilnika

Grafi kažejo, da ko stara denarnica vsebuje 250,000 transakcij, njena hitrost pošiljanja pade na 3 tx/s in doda 600 MB k uporabi pomnilnika vozlišča. Nasprotno pa nova denarnica vzdržuje več kot 100 tx/s in doda le 90 MB. Na tej točki smo prenehali s preizkušanjem stare denarnice, vendar tudi s 6-8 milijoni shranjenih transakcij nova denarnica še naprej pošilja več kot 100 tx/s in dosega približno 250 MB uporabljenega RAM-a (zaradi predpomnjenja baze podatkov).

Ti testi so bili izvedeni v realnih pogojih, z več naslovi in ​​sredstvi (in s tem številnimi neporabljenimi izhodi transakcij) v denarnici vozlišča. V idealiziranem scenariju (en naslov, eno sredstvo, nekaj UTXO) je bila trajna hitrost pošiljanja nad 400 tx/s. Kakor koli že, kot del tega preoblikovanja smo prav tako pravilno abstrahirali vse funkcije denarnice za čistim notranjim vmesnikom. To bo olajšalo podporo drugim motorjem baze podatkov v prihodnosti za še večjo robustnost in hitrost.

Če ponovimo, se vse te številke nanašajo na hitrost, s katero lahko vozlišče ustvari, pošlje in shrani transakcije v svoji lokalni denarnici, ne pa na njegovo prepustnost v smislu obdelave transakcij, ki so jih ustvarili drugi. Za splošno prepustnost omrežja lahko MultiChain trenutno obdela od 200 do 800 tx/s, odvisno od strojne opreme, na kateri deluje. (Bodite skeptični do katere koli programske opreme za verigo blokov, ki obljublja številke, kot je 100,000 tx/s na običajni strojni opremi, saj je ozko grlo preverjanje digitalnega podpisa, ki zahteva realni čas za izvedbo. Če vozlišča ne preverjajo podpisov posameznih transakcij, verige blokov nikakor ni mogoče uporabiti prek zaupanja meje, zaradi česar ni nič boljši od običajne porazdeljene baze podatkov.)

Za konec bi rad omenil naslednjo večjo funkcijo, ki prihaja v MultiChain, ki zahteva preoblikovanje denarnice. Ta funkcija, imenovana tokovi, zagotavlja visokonivojsko abstrakcijo in API za splošno shranjevanje podatkov v verigi blokov. Tok si lahko predstavljate kot bazo podatkov časovnih serij ali ključnih vrednosti z dodanimi prednostmi, povezanimi z verigo blokov, decentralizacijo, digitalnimi podpisi, časovnim žigom in nespremenljivostjo. Poznamo veliko primerov uporabe verige blokov, ki bi lahko uporabljali to funkcionalnost, in že trdo delamo na njeni izgradnji. Pazi na ta prostor.

Prosimo, pošljite kakršne koli pripombe na LinkedIn.

Tehnični dodatek

Od različice MultiChain alpha 22 lahko preverite, katera različica denarnice se trenutno izvaja, tako da pregledate walletdbversion polje polja getinfo or getwalletinfo API klici. Vrednost 1 pomeni izvirno denarnico Bitcoin Core in 2 pomeni novo denarnico MultiChain.

Če zaženete novo različico MultiChaina v obstoječi verigi, se ne bo takoj preklopila na novo denarnico. Denarnico lahko nadgradite tako, da ustavite vozlišče in ga nato znova zaženete multichaind s parametri -walletdbversion=2 –rescan. Podobno lahko znižate z uporabo –walletdbversion=1 –rescan.

Ko zaženete vozlišče v novi verigi, bo privzeto samodejno uporabilo novo denarnico. To lahko spremenite tako, da zaženete multichaind prvič s parametrom –walletdbversion=1.

Z novo denarnico vse MultiChain API-ji deluje popolnoma enako kot prej, z izjemo starih API-jev za poizvedovanje transakcij getreceivedbyaddress, listreceivedbyaddress in listtransactions (uporaba listwallettransactions or listaddresstransactions namesto tega). Poleg tega nova denarnica ne podpira klicev API-ja in parametrov v zvezi s slabo implementiranim in kmalu opuščenim mehanizmom »računov« Bitcoin Core, ki ga MultiChain nikoli ni pravilno podpiral. Ti klici so varno onemogočeni s sporočilom o napaki.

Vir: https://www.multichain.com/blog/2016/07/announcing-the-new-multichain-wallet/

Časovni žig:

Več od Večnamenska veriga