Announcing the new MultiChain wallet PlatoBlockchain Data Intelligence. Vertical Search. Ai.

Bemutatjuk az új MultiChain pénztárcát

Fontos lépés a teljesítmény és a méretezhetőség terén

Két hónapos intenzív fejlesztés és tesztelés után büszkék vagyunk rá, hogy kiadjuk a MultiChain legújabb alfáját, egy teljesen átírt csomóponton belüli pénztárcával. Ez az új pénztárca átalakítja a tranzakciók létrehozásának, fogadásának és tárolásának teljesítményét és méretezhetőségét a MultiChain rendszerben.

Mielőtt belemennénk a részletekbe, hadd adjak néhány kontextust. Amikor elkezdtük a MultiChain fejlesztését, úgy döntöttünk, hogy használjuk Bitcoin Core, a nyilvános bitcoin hálózat szabványos csomópontja, kiindulópontként. Programozási szempontból ez azt jelenti, hogy a MultiChain a bitcoin szoftver „villája”. Elsődleges érvelésünk az volt, hogy bizonyos szempontból a bitcoin volt (és továbbra is az) a legmagasabb értékű és a legtöbb csatában tesztelt kriptovaluta ökoszisztéma.

Pozitívum, hogy ez a döntés segített nekünk gyorsan piacra lépni, ahhoz képest, hogy a blokklánc csomópontját a semmiből kódoltuk. A nyilvános és a privát blokkláncok közötti sok különbség ellenére számos technikai közös alapon osztoznak, beleértve a peer-to-peer protokollt, a tranzakció- és blokkstruktúrát, a digitális aláírás létrehozását és ellenőrzését, a konszenzusos szabályokat, a kulcskezelést és a kulcskezelés szükségességét. egy csomópont API. A Bitcoin Core-ból való forking lehetővé tette számunkra, hogy kihasználjuk annak érettségét, és arra összpontosíthassunk, hogy a MultiChain mit ad hozzá a blokkláncokhoz – konfigurálhatóság, engedélyezés és natív eszközök támogatása. Ennek eredményeként az első alfát 2015 júniusában tudtuk kiadni, mindössze 6 hónappal a fejlesztés megkezdése után.

Ezen előnyök mellett azonban el kellett fogadnunk azt a tényt is, hogy a Bitcoin Core egyes aspektusai rosszul vannak megtervezve. Bár kis léptékben remekül működnek, teljesítményük drámaian romlik a használat növekedésével. Mivel a nyilvános bitcoin hálózat továbbra is csak néhány tranzakcióra korlátozódik másodpercenként, ez a legtöbb Bitcoin Core felhasználó számára sokáig nem lesz probléma. De a másodpercenkénti több száz vagy több ezer tranzakciót megcélzó privát blokkláncokkal tudtuk, hogy előbb-utóbb ezeket a szűk keresztmetszeteket meg kell szüntetni.

A Bitcoin Core pénztárcája

A Bitcoin Core-on belüli „pénztárca” mindig is a legfontosabb fájdalompont volt. Feladata az, hogy tárolja azokat a tranzakciókat, amelyek különösen fontosak a csomópont számára, mivel azok egy blokklánc-címet tartalmaznak, amelyet a csomópont birtokol, vagy egy „csak nézhető” cím, akinek tevékenységét nyomon követi. Például minden tranzakciót, amely egy csomópontba vagy onnan pénzt küld, az adott csomópont pénztárcájában kell tárolni. És minden alkalommal, amikor egy csomópont tranzakciót hoz létre, meg kell keresnie a korábbi pénztárca-tranzakciók egy vagy több „el nem költött kimenetét”, amelyeket az új tranzakció el fog költeni.

Tehát mi a baj a Bitcoin Core-tól örökölt pénztárcával? Valójában három dolog:

  • Minden pénztárca tranzakció a memóriában tárolódik. Ez lassú indítási időt és gyorsan növekvő memóriahasználatot okoz.
  • Sok művelet nem hatékony „teljes vizsgálatot” hajt végre a pénztárcában lévő minden tranzakciónál, legyen az régi vagy új.
  • A pénztárcában lévő minden tranzakció teljes egészében tárolódik, beleértve minden tetszőleges „metaadatot”, amelynek a csomópont szempontjából nincs jelentése, és már a lemez blokkláncában van tárolva. Ez nagyon pazarló.

Ennek az a következménye, hogy körülbelül 20,000 200,000 tárolt tranzakcióval a Bitcoin Core pénztárcája jelentősen lelassul. Körülbelül 8 80 után gyakorlatilag leáll. Még rosszabb, mivel a MultiChain blokklánc tranzakciónként akár XNUMX MB metaadatot is lehetővé tesz (a bitcoin XNUMX bájtjához képest), a tárca memóriaigénye még kis számú tranzakció esetén is gyorsan megnőhet.

Fontos tisztázni, hogy ezek a hiányosságok csak a Bitcoin Core-ra vonatkoznak pénztárca, nem pedig az általános tranzakciófeldolgozási kapacitása. Más szóval, kényelmesen képes feldolgozni és tárolni több millió (vagy akár milliárd) tranzakciót, amelyek nem kapcsolódnak a saját címeihez, mivel ezeket nem a memóriában, hanem a lemezen tárolják. Például sok népszerű bitcoin tőzsde és pénztárca a Bitcoin Core-ot használja, de saját tranzakcióit külsőleg tárolja, nem pedig a csomóponton belül.

A MultiChain új pénztárcája

Ugyanezt az igényt támaszthattuk volna a MultiChain felhasználókkal szemben is, hogy saját tranzakcióikat a csomóponton kívül tárolják. Ez azonban nem tűnt a megfelelő megoldásnak, mert nagymértékben megnehezítené a beállítást és a karbantartást a lánc minden résztvevője számára. Így ehelyett megharaptuk a golyót, és az alapoktól újraírtuk a pénztárcát.

Miben más az új pénztárca? Ha van tapasztalata az adatbázisokkal kapcsolatban, a válaszok nyilvánvalóak lehetnek:

  • Ahelyett, hogy a pénztárca-tranzakciókat a memóriában tárolnák, azokat megfelelő formátumban a lemezen tárolják, és szükség esetén lekérik az érdeklődésre számot tartó tranzakciókat.
  • A teljes pénztárca-ellenőrzés végrehajtása helyett a tranzakciókat különféle módon „indexeljük”, hogy lehetővé tegyék a bizonyos feltételeknek megfelelő tranzakciók gyors megtalálását.
  • A 256 bájtnál nagyobb tranzakciós metaadatok nem tárolódnak a tárcában. Ehelyett a pénztárca tartalmaz egy mutatót, amely a metaadat pozíciójára mutat magában a blokkláncban.

Más szavakkal, a csomóponton belüli pénztárcát átépítettük, hogy megfelelően adatbázis-vezérelje (a LevelDB), ahelyett, hogy egy naiv, nem hatékonyan kereshető memóriastruktúrára hagyatkozna. Nem meglepő módon a különbség (a 3.4 GHz-es Intel Core i7-en mérve) meglehetősen drámai:

MultiChain Wallet tranzakciós átviteli sebesség

Memóriahasználat

A grafikonok azt mutatják, hogy amint a régi pénztárca 250,000 3 tranzakciót tartalmaz, a küldési sebessége 600 tx/sec-re csökken, és 100 MB-tal növeli a csomópont memóriahasználatát. Ezzel szemben az új pénztárca több mint 90 tx/sec-et bír el, és csak 6 MB-ot ad hozzá. A régi pénztárca tesztelését ezen a ponton leállítottuk, de az új tárca még 8-100 millió tárolt tranzakció mellett is 250 tx/sec feletti sebességet küld, és XNUMX MB körüli RAM-ot tesz ki (az adatbázis gyorsítótárazása miatt).

Ezeket a teszteket reális körülmények között hajtották végre, több címmel és eszközzel (és ezért sok el nem költött tranzakció kimenettel) a csomópont pénztárcájában. Egy idealizált forgatókönyvben (egy cím, egy eszköz, néhány UTXO) a tartós küldési sebesség meghaladta a 400 tx/s-ot. Akárhogy is, ennek az átírásnak a részeként a pénztárca összes funkcióját megfelelően absztraháltuk egy tiszta belső interfész mögé. Ez megkönnyíti a jövőben más adatbázismotorok támogatását a még nagyobb robusztusság és sebesség érdekében.

Megismételve, ezek a számok mind arra a sebességre vonatkoznak, amellyel egy csomópont tranzakciókat hozhat létre, küldhet és tárolhat a helyi pénztárcájában, nem pedig a mások által létrehozott tranzakciók feldolgozási sebességére. Az általános hálózati átviteli sebességhez a MultiChain jelenleg 200-800 tx/s-ot képes feldolgozni, attól függően, hogy milyen hardveren fut. (Légy szkeptikus minden olyan blokklánc-szoftverrel kapcsolatban, amely olyan számokat ígér, mint a 100,000 XNUMX tx/sec normál hardveren, mert a szűk keresztmetszet a digitális aláírás ellenőrzése, amelynek végrehajtása valós időt vesz igénybe. Ha a csomópontok nem ellenőrzik az egyes tranzakciós aláírásokat, akkor a blokklánc nem használható a bizalmon keresztül. határokat, így semmivel sem jobb, mint egy szokásos elosztott adatbázis.)

Befejezésül szeretném megemlíteni a MultiChain következő főbb funkcióját, amely ezt a pénztárca átírást igényelte. Ez a folyamoknak nevezett szolgáltatás magas szintű absztrakciót és API-t biztosít az általános célú adattároláshoz egy blokkláncon. Az adatfolyamot idősoros vagy kulcsérték-adatbázisnak tekintheti, a blokklánchoz kapcsolódó további előnyökkel, mint a decentralizáció, a digitális aláírások, az időbélyegzés és a megváltoztathatatlanság. Számos blokklánc-használati esetet ismerünk, amelyek használhatják ezt a funkciót, és már most keményen dolgozunk a felépítésén. Figyeld ezt a helyet.

Kérjük, tegye meg észrevételeit a LinkedIn.

Műszaki kiegészítés

A MultiChain alpha 22-től kezdve ellenőrizheti, hogy a pénztárca melyik verziója fut jelenleg, ha megvizsgálja a walletdbversion mező getinfo or getwalletinfo API-hívások. Egy érték 1 az eredeti Bitcoin Core pénztárcát jelenti, és 2 az új MultiChain pénztárcát jelenti.

Ha a MultiChain új verzióját egy meglévő láncon futtatja, az nem fog azonnal átváltani az új pénztárcára. A pénztárcát úgy frissítheti, hogy leállítja a csomópontot, majd újra futtatja multichaind a paraméterekkel -walletdbversion=2 –rescan. Hasonlóképpen visszaminősíthetsz a használatával –walletdbversion=1 –rescan.

Alapértelmezés szerint, amikor új láncon indít egy csomópontot, az automatikusan az új pénztárcát fogja használni. Ezt futtatással módosíthatja multichaind először a paraméterrel –walletdbversion=1.

Az új pénztárcával minden MultiChain API-k pontosan ugyanúgy működnek, mint korábban, a régi tranzakciólekérdező API-k kivételével getreceivedbyaddress, listreceivedbyaddress és a listtransactions (használat listwallettransactions or listaddresstransactions helyette). Ezenkívül az új pénztárca nem támogatja az API-hívásokat és a Bitcoin Core rosszul implementált és hamarosan elavult „fiókok” mechanizmusához kapcsolódó API-hívásokat és paramétereket, amelyeket a MultiChain soha nem támogatott megfelelően. Ezeket a hívásokat hibaüzenettel biztonságosan letiltjuk.

Forrás: https://www.multichain.com/blog/2016/07/announcing-the-new-multichain-wallet/

Időbélyeg:

Még több többláncos