Uuden MultiChain-lompakko PlatoBlockchain Data Intelligence julkistaminen. Pystysuuntainen haku. Ai.

Uuden MultiChain-lompakon ilmoittaminen

Tärkeä askel eteenpäin suorituskyvyn ja skaalautuvuuden suhteen

Kahden kuukauden intensiivisen kehitystyön ja testauksen jälkeen olemme ylpeitä siitä, että julkaisimme viimeisimmän MultiChain-alfa-version täysin kirjoitetulla solmujen sisäisellä lompakolla. Tämä uusi lompakko muuttaa suorituskykyä ja skaalautuvuutta luomalla, vastaanottamalla ja tallentamalla tapahtumia MultiChainissa.

Ennen kuin tutustumme yksityiskohtiin, anna minun antaa joitain asiayhteyksiä. Kun aloitimme MultiChainin kehittämisen, päätimme käyttää Bitcoin Core, julkisen bitcoin-verkon standardisolmu lähtökohtana. Ohjelmoinnissa tämä tarkoittaa, että MultiChain on "haarukka" bitcoin-ohjelmistossa. Ensisijainen päättelymme oli, että bitcoin oli (ja on edelleen) arvostetuin ja taisteluissa parhaiten testattu salausvaluuttaekosysteemi, melko jollain tavalla.

Plussapuolena tämä päätös auttoi meitä pääsemään markkinoille nopeasti verrattuna salpaketjusolmun koodaamiseen tyhjästä. Huolimatta monista eroista julkisten ja yksityisten lohkoketjujen välillä, niillä on suuri määrä teknistä yhteistä perustaa, mukaan lukien vertaisverkkoprotokolla, tapahtuma- ja lohkorakenne, digitaalisen allekirjoituksen luominen ja todentaminen, konsensussäännöt, avainten hallinta ja tarve solmun API. Haastaminen Bitcoin Coresta antoi meille mahdollisuuden hyödyntää sen maturiteettiä ja keskittyä siihen, mitä MultiChain lisää lohkoketjuihin - konfiguroitavuus, luvat ja alkuperäisen omaisuuden tuki. Seurauksena on, että pystyimme julkaisemaan ensimmäisen alfan kesäkuussa 2015, vain 6 kuukautta kehityksen aloittamisen jälkeen.

Näiden etujen ohella meidän oli kuitenkin hyväksyttävä myös se tosiseikka, että jotkut Bitcoin Core -alueet ovat huonosti arkkitehtonisia. Vaikka ne toimivat hienosti pienissä mittakaavoissa, niiden suorituskyky heikkenee dramaattisesti käytön kasvaessa. Koska julkinen bitcoin-verkko on edelleen rajoitettu muutamaan tapahtumaan sekunnissa, tämä ei ole ongelma useimmille Bitcoin Core -käyttäjille pitkään. Mutta yksityisillä lohkoketjuilla, joiden tavoitteena oli satoja tai tuhansia tapahtumia sekunnissa, tiesimme, että ennemmin tai myöhemmin nämä pullonkaulat on poistettava.

Bitcoin Coren lompakko

Bitcoin-ytimen sisällä oleva ”lompakko” oli aina tärkein näistä kipupisteistä. Sen tehtävänä on tallentaa tapahtumia, joilla on erityistä merkitystä solmulle, koska niihin liittyy sen omistama blockchain-osoite tai ”katsella vain”Osoite, jonka toimintaa se seuraa. Esimerkiksi jokainen tapahtuma, joka lähettää varoja solmuun tai sieltä, on tallennettava kyseisen solmun lompakkoon. Ja joka kerta, kun solmu luo tapahtuman, sen on etsittävä yhtä tai useampaa “käyttämätöntä lähtöä” aikaisemmista lompakkotapahtumista, jotka uusi tapahtuma kuluttaa.

Joten mitä vikaa on Bitcoin Corelta perimällä lompakolla? Oikeastaan ​​kolme asiaa:

  • Kaikki lompakkotapahtumat pidetään muistissa. Tämä aiheuttaa hitaita käynnistysaikoja ja nopeasti kasvavaa muistin käyttöä.
  • Monet toiminnot suorittavat tehottoman "täydellisen skannauksen" jokaisesta lompakkon tapahtumasta, olipa se vanha tai uusi.
  • Jokainen lompakon tapahtuma tallennetaan kokonaisuudessaan, mukaan lukien mielivaltaiset ”metatiedot”, joilla ei ole merkitystä solmun näkökulmasta ja jotka on jo tallennettu levyketjuun. Tämä on erittäin tuhlaavaa.

Seurauksena on, että Bitcoin Coren lompakko hidastuu huomattavasti, kun noin 20,000 200,000 tapahtumaa on tallennettu. Noin 8 80 jälkeen se jauhoaa käytännössä pysähtymään. Vielä pahempaa, koska MultiChain-lohkoketju sallii jopa XNUMX Mt metatietoja tapahtumaa kohden (verrattuna bitcoinin XNUMX tavuun), lompakon muistivaatimukset voivat kasvaa nopeasti jopa pienellä määrällä tapahtumia.

On tärkeää selventää, että nämä puutteet koskevat vain Bitcoin Core -yrityksiä lompakkoeikä sen yleisen tapahtumien käsittelykapasiteetin. Toisin sanoen, se voi mukavasti käsitellä ja tallentaa miljoonia (tai jopa miljardeja) tapahtumia, jotka eivät liity sen omiin osoitteisiin, koska ne pidetään levyllä eikä muistissa. Esimerkiksi monet suositut bitcoin-pörssit ja lompakot käyttävät Bitcoin Corea sellaisenaan, mutta tallentavat omat transaktiot ulkoisesti eikä solmun sisällä.

MultiChainin uusi lompakko

Voisimme tehdä saman vaatimuksen MultiChain-käyttäjiltä heidän omien tapahtumiensa tallentamiseksi solmun ulkopuolelle. Tämä ei kuitenkaan tuntunut oikealta ratkaisulta, koska se vaikeuttaisi huomattavasti ketjun kaikkien osallistujien asennusta ja ylläpitoa. Joten sen sijaan me harsimme luodin ja kirjoitimme lompakon uudelleen maasta ylöspäin.

Kuinka uusi lompakko eroaa? Jos sinulla on kokemusta tietokannoista, vastaukset voivat olla ilmeisiä:

  • Sen sijaan, että lompakkotapahtumat pidettäisiin muistissa, ne tallennetaan levylle sopivassa muodossa, ja kiinnostavat tapahtumat saadaan tarvittaessa.
  • Sen sijaan, että suoritettaisiin täydet lompakotarkistukset, tapahtumat ”indeksoidaan” monin tavoin, jotta tietyt kriteerit täyttävät voidaan löytää nopeasti.
  • Mitään transaktion metatietoja, jotka ovat suurempia kuin 256 tavua, ei tallenneta lompakkoon. Sen sijaan lompakko sisältää osoittimen kyseisen metatiedon sijaintiin itse lohkoketjussa.

Toisin sanoen olemme rakentaneet solmujen sisäisen lompakon kunnolla tietokantaohjattuun (käyttämällä TasoDB) sen sijaan, että luottaisi naiiviin muistirakenteeseen, jota ei voida etsiä tehokkaasti. Ei ole yllättävää, että ero (mitattuna 3.4 GHz: n Intel Core i7: llä) on melko dramaattinen:

MultiChain-lompakon tapahtumakapasiteetti

Muistin käyttö

Kaaviot osoittavat, että kun vanha lompakko sisältää 250,000 3 tapahtumaa, sen lähetysnopeus laskee 600 tx / s ja lisää 100 Mt solmun muistin käyttöön. Sen sijaan uusi lompakko kestää yli 90 tx / s ja lisää vain 6 Mt. Lopetimme vanhan lompakon testaamisen tässä vaiheessa, mutta jopa 8-100 miljoonalla tallennetulla tapahtumalla uusi lompakko lähettää edelleen yli 250 tx / s, ja se ylittää noin XNUMX Mt käytetyn RAM-muistin (johtuen tietokannan välimuistista).

Nämä testit suoritettiin realistisissa olosuhteissa, joissa solmujen lompakossa oli useita osoitteita ja varoja (ja siten monia käyttämättä jääneitä tapahtumalähtöjä). Idealisoidussa skenaariossa (yksi osoite, yksi sisältö, muutama UTXO) jatkuva lähetysnopeus oli yli 400 tx / s. Joko niin, olemme osana tätä uudelleenkirjoitusta abstraktisti myös kaikki lompakon toiminnot puhtaan sisäisen rajapinnan takana. Tämän ansiosta muiden tietokantamoottorien tukeminen on tulevaisuudessa helppoa, mikä lisää entisestään luotettavuutta ja nopeutta.

Toistaakseni kaikki nämä numerot viittaavat nopeuteen, jolla solmu voi luoda, lähettää ja tallentaa tapahtumia paikallisessa lompakossa, eikä sen suorituskykyyn suhteessa muiden luomiin tapahtumiin. Yleistä verkon suorituskykyä varten MultiChain voi prosessoida tällä hetkellä 200–800 tx / s, riippuen laitteistosta, jolla se toimii. (Ole skeptinen kaikissa lohkoketjuohjelmissa, jotka lupaavat numeroita, kuten 100,000 XNUMX tx / s tavallisessa laitteistossa, koska pullonkaula on digitaalisen allekirjoituksen todentaminen, jonka suorittaminen vie reaaliaikaa. Jos solmut eivät tarkista yksittäisiä tapahtuma-allekirjoituksia, lohkoketjua ei voida mahdollisesti käyttää luottamuksellisesti. rajoja, joten se ei ole parempi kuin tavallinen hajautettu tietokanta.)

Lopuksi haluaisin mainita seuraavan MultiChainille tulevan pääominaisuuden, joka vaati tämän lompakon uudelleenkirjoittamisen. Tämä ominaisuus, jota kutsutaan streamiksi, tarjoaa korkean tason abstraktion ja sovellusliittymän yleiskäyttöön tarkoitettujen tietojen tallennukseen lohkoketjussa. Voit ajatella streamia aikasarjana tai avain-arvotietokannana, johon on lisätty ryhmäketjuun liittyviä etuja, kuten hajauttaminen, digitaaliset allekirjoitukset, aikaleima ja muuttumattomuus. Tiedämme monia lohkoketjujen käyttötapauksia, joissa voitaisiin käyttää tätä toimintoa, ja työskentelemme jo kovasti sen rakentamisessa. Katso tätä tilaa.

Ole hyvä ja lähetä kommentit LinkedIn.

Tekninen lisäys

Alkaen MultiChain alpha 22: sta, voit tarkistaa, mikä lompakon versio on käynnissä tutkimalla walletdbversion kenttä getinfo or getwalletinfo API-puhelut. Arvo on 1 tarkoittaa alkuperäistä Bitcoin Core-lompakkoa, ja 2 tarkoittaa uutta MultiChain-lompakkoa.

Jos ajat MultiChainin uutta versiota olemassa olevassa ketjussa, se ei siirry heti uuteen lompakkoon. Voit päivittää lompakon pysäyttämällä solmun ja suorittamalla sitten uudelleen multichaind parametrien kanssa -walletdbversion=2 –rescan. Voit alentaa tasoa samalla tavalla käyttämällä –walletdbversion=1 –rescan.

Oletusarvon mukaan, kun käynnistät solmun uudella ketjulla, se käyttää uutta lompakkoa automaattisesti. Voit muuttaa tämän suorittamalla multichaind ensimmäistä kertaa parametrilla –walletdbversion=1.

Uuden lompakon avulla kaikki MultiChain-sovellusliittymät toimivat täsmälleen samalla tavalla kuin ennenkin, lukuun ottamatta vanhoja tapahtumien kyselyn sovellusliittymiä getreceivedbyaddress, listreceivedbyaddress ja listtransactions (käyttää listwallettransactions or listaddresstransactions sen sijaan). Lisäksi uusi lompakko ei tue API-kutsuja ja parametreja, jotka liittyvät Bitcoin Coren huonosti toteutettuun ja pian poistettavaan “tiliin” -mekanismiin, jota MultiChain ei koskaan tukenut kunnolla. Nämä puhelut poistetaan käytöstä turvallisesti virheilmoituksen avulla.

Lähde: https://www.multichain.com/blog/2016/07/announcing-the-new-multichain-wallet/

Aikaleima:

Lisää aiheesta moniketjuisille