Huomautus: Tämä sivu on vakavasti vanhentunut ja suurelta osin ylläpitämätön; aiempien muokkausongelmien vuoksi sitä ei ole juurikaan vertaisarvioitu.

Bitcoinin täysi solmu voitaisiin muuttaa skaalautuvaksi paljon nykyistä korkeampiin transaktiomääriin olettaen, että kyseinen solmu toimii pikemminkin korkealuokkaisilla palvelimilla kuin työpöydällä. Bitcoin suunniteltiin tukemaan kevyitä asiakkaita, jotka käsittelevät vain pieniä osia lohkoketjusta (ks. yksinkertaistettu maksujen verifiointi jäljempänä lisätietoja tästä).

Huomaa, että tämä sivu on olemassa antaakseen laskelmia Bitcoinin täyden solmun skaalautuvuudesta ja transaktioista lohkoketjussa ottamatta huomioon verkon turvallisuutta ja hajautusta. Sen tarkoituksena ei ole keskustella vaihtoehtoisten protokollien skaalautuvuudesta tai yrittää tiivistää filosofisia keskusteluja. Luo vaihtoehtoisia sivuja, jos haluat tehdä sellaista.

Huomautus lukijoille

Kun tekniikkaihmiset kuulevat siitä, miten Bitcoin toimii, he usein pysähtyvät sanan ”flooding” kohdalla ja sanovat: ”Voi hyvä luoja, eihän tuo voi skaalautua!”. Tämän artikkelin tarkoituksena on ottaa äärimmäinen esimerkki, Visan transaktioiden huippunopeus, ja osoittaa, että bitcoin voisi teknisesti saavuttaa tuollaisen nopeuden ilman minkäänlaisia kyseenalaisia perusteluja, muutoksia ydinsuunnittelussa tai olemattomia päällekkäisyyksiä. Sinänsä se on vain äärimmäinen esimerkki – se ei ole suunnitelma siitä, miten bitcoin kasvaa vastaamaan laajempia tarpeita (hajautettuna järjestelmänä bitcoinia käyttävä yleisö päättää, miten bitcoin kasvaa) – se on vain argumentti, joka osoittaa, että bitcoinin ydinsuunnittelu voi skaalautua paljon paremmin kuin älykäs ihminen voisi aluksi arvata.

Dan kritisoi oikeutetusti tässä esitettyä analyysia- huomauttaa, että toimiminen tässä mittakaavassa vähentäisi merkittävästi bitcoinin hajautettua luonnetta: Jos sinulla täytyy olla monta teratavua levytilaa pyörittääksesi ”täyttä validointia tekevää” solmua, niin yhä harvemmat ihmiset tekevät sitä, ja kaikkien, jotka eivät tee sitä, täytyy luottaa siihen, että ne, jotka tekevät, ovat rehellisiä. Dan näyttää (diojensa perusteella) menneen liian pitkälle tässä väitteessä: hän näyttää vihjailevan, että tämä tarkoittaa, että bitcoineja valvovat nykyisin yleiset keskuspankit. Hänen analyysinsä epäonnistuu kahdesta syystä (ja toinen on sen vika, että tämä sivu on hieman harhaanjohtava):

Ensiksi, jopa tässä esitetyllä tähtitieteellisellä mittakaavalla tarvittava kapasiteetti on hyvinkin (varakkaiden) yksityishenkilöiden ulottuvilla, ja varmasti olisi joskus tulevaisuudessa, kun tuollaista kapasiteettia tarvitaan. Järjestelmää, joka asettaa yksityishenkilöt tai ainakin pienet yksityisryhmät tasa-arvoiseen asemaan keskuspankkien kanssa, tuskin voisi kutsua keskitetyksi, vaikka se olisikin vähemmän hajautettu kuin nykyinen bitcoinimme. Järjestelmä ei myöskään voisi päästä tällaiseen mittakaavaan ilman, että bitcoin-käyttäjät sopisivat kollektiivisesti maksimilohkokoon kasvattamisesta, joten se ei ole lopputulos, joka voi tapahtua ilman bitcoin-käyttäjien suostumusta.

Toiseksi, ja mikä tärkeintä, tässä kuvattu oletettu skaalautuminen käsittelee sitä, että Bitcoin korvaa visan. Tämä on huono vertailu, koska Bitcoin ei yksinään ole täydellinen korvaaja visalle syistä, jotka eivät liity mitoitukseen lainkaan: Bitcoin ei tarjoa esimerkiksi välitöntä transaktiota, luottoa tai erilaisia petostentorjuntamekanismeja (joita jotkut ihmiset haluavat, vaikka kaikki eivät sitä halua). Bitcoin korvaa täydellisemmin shekit, tilisiirrot, maksumääräykset, kultakolikot, CD:t, säästötilit jne. ja jos se otetaan laajalti käyttöön, se luultavasti korvaa luottokorttien käyttötarkoituksia, joita nämä muut asiat palvelisivat paremmin, jos ne toimisivat paremmin verkossa.

Bitcoin-käyttäjät kaunistelevat tätä tosiasiaa toisinaan liian nopeasti, koska ihmiset ovat liian nopeita kutsumaan sitä epäkohdaksi, mutta tämä on epäreilua. Mikään järjestelmä ei ole ihanteellinen kaikkeen käyttöön ja Bitcoinilla on laajempi kirjo ominaisuuksia kuin useimmilla rahavälineillä. Jos Bitcoin-yhteisö ei ole halukas huomauttamaan, että jotkin asiat olisi parempi tehdä muilla järjestelmillä, on helppo esittää olkinukkeargumentteja: Jos myönnämme, että bitcoinia voisi käyttää lattiavahana ja aavikon täytteenä, joku huomauttaa aina, että se ei ole paras lattiavaha tai paras aavikon täytteenä.

On triviaalia rakentaa maksujenkäsittely- ja luottojärjestelmiä _bitcoinin päälle_, sekä klassisia (kuten Visa itse!) että ”hajautettuja” kuten Lightning. Nämä järjestelmät voisivat käsitellä suurempia transaktiovolyymeja pienemmillä kustannuksilla, ja suorittaa maksuja usein niiden taustalla olevaan bitcoiniin. Näissä järjestelmissä voitaisiin käyttää muita tekniikoita, joilla on erilaiset kompromissit kuin bitcoinilla, mutta ne olisivat silti bitcoinin tukemia ja niiden nimellisarvoisia, joten ne nauttisivat edelleen keskitetyn valvonnan puutteesta. Näemme tämän alkuja jo nyt bitcoin-vaihto- ja lompakkopalveluissa, jotka mahdollistavat välittömät maksut jäsenten välillä.

Nämä palvelut hyötyisivät vakaasta, inflaationkestävästä bitcoin-valuutasta, käyttäjät hyötyisivät välittömistä transaktioista, luotoista ja petostentorjunnasta, ja yleisesti ottaen bitcoin hyötyisi paremmasta skaalautuvuudesta, joka syntyisi transaktioiden volyymin siirtämisestä pois ilman, että bitcoinin hajautettu luonne kärsisi. Maailmassa, jossa bitcoin oli laajalti käytetty maksujenkäsittelyjärjestelmillä olisi luultavasti alhaisemmat hinnat, koska niiden pitäisi kilpailla raa’an bitcoin-tapahtumien kanssa, niillä olisi myös varaa alhaisempaan hintaan, koska usein tapahtuva bitcoin-selvitys (ja nollaluottamus bitcoin escrow -tapahtumat) vähentäisivät niiden riskiä. Tämä on kaksin verroin totta, koska bitcoin voisi mahdollisesti skaalautua korvaamaan ne kokonaan, vaikka se ei olisikaan paras idea johtuen siitä aiheutuvasta hajautuneisuuden vähenemisestä.

Skaalautuvuustavoitteet

VISA käsittelee keskimäärin noin 2000 transaktiota sekunnissa (tps), joten sanotaan, että päivittäinen huippunopeus on 4000 tps. Sen huippukapasiteetti on noin 56 000 transaktiota sekunnissa, mutta todellisuudessa se ei koskaan käytä enempää kuin noin kolmanneksen tästä edes ruuhka-aikoina.

PayPal sen sijaan käsitteli vuoden 2014 lopulla noin 10 miljoonaa transaktiota päivässä keskimäärin 115 tps:n nopeudella.

Voidaan ottaa lähtökohdaksi 4000 tps. Ilmeisesti jos haluamme Bitcoinin skaalautuvan kaikkiin taloudellisiin transaktioihin maailmanlaajuisesti, käteinen mukaan lukien, se olisi paljon korkeampi, ehkä enemmänkin muutaman sadantuhannen tps:n luokkaa. Ja tarve kestää DoS-hyökkäyksiä (joita VISA:n ei tarvitse kestää) merkitsee, että haluamme skaalautua paljon tavanomaisia huippunopeuksia suuremmiksi. Silti kohteen valitseminen antaa meille mahdollisuuden tehdä joitakin peruslaskelmia, vaikka se onkin hieman mielivaltainen.

Tänään Bitcoin-verkko on rajoitettu 7 tps:n pysyvään nopeuteen, koska Bitcoin-protokolla rajoittaa lohkojen koon 1MB:iin.

CPU

Protokollassa on kaksi osaa. Solmut lähettävät ”inv”-viestejä muille solmuille, jotka kertovat niille, että heillä on uusi transaktio. Jos vastaanottavalla solmulla ei ole kyseistä transaktiota, se pyytää sitä getdata-sanomalla.

Suuri kustannus on kryptaus ja lohkoketjun etsintä, joka liittyy transaktion todentamiseen. Transaktion todentaminen tarkoittaa jonkin verran hashingia ja ECDSA-allekirjoituksen todentamista. RIPEMD-160 toimii 106 megatavua/sekunnissa (sanotaan yksinkertaisuuden vuoksi 100) ja SHA256 on suunnilleen sama. Joten 1 megatavun hashingin pitäisi kestää noin 10 millisekuntia ja 1 kilotavun hashingin 0,01 millisekuntia – tarpeeksi nopeasti, jotta voimme jättää sen huomioimatta.

Bitcoin pystyy tällä hetkellä (parilla yksinkertaisella optimoinnilla, jotka ovat prototyyppejä, mutta joita ei ole vielä sulautettu yhteen) suorittamaan noin 8000 allekirjoituksen verifiointia sekunnissa neliytimisellä Intel Core i7-2670QM -prosessorilla, jonka taajuus on 2,2 GHz. Syötteiden keskimääräinen määrä tapahtumaa kohti on noin 2, joten meidän on puolitettava nopeus. Tämä tarkoittaa, että 4000 tps on helposti saavutettavissa suorittimellisesti yhdellä melko valtavirran suorittimella.

Kuten näemme, tämä tarkoittaa, että niin kauan kuin Bitcoin-solmujen sallitaan käyttää maksimissaan vähintään 4 ydintä koneissa, joissa ne toimivat, suorittimen kapasiteetti allekirjoitusten tarkistamiseen ei lopu kesken, ellei Bitcoin käsittele 100 kertaa niin paljon liikennettä kuin PayPal. Loppuvuodesta 2015 verkko käsittelee 1,5 transaktiota sekunnissa, joten vaikka suosion valtava kasvu oletettaisiinkin, emme saavuta tätä tasoa vielä pitkään aikaan.

Bitcoin tekee tietysti muitakin asioita kuin allekirjoitusten tarkistamista, kaikkein ilmeisimmin tietokannan hallintaa. Käytämme LevelDB:tä, joka tekee suurimman osan raskaasta työstä erillisessä säikeessä ja pystyy hyvin korkeisiin luku- ja kirjoituskuormiin. Kaiken kaikkiaan Bitcoinin suorittimen käyttöä hallitsee ECDSA.

Verkko

Edetään, että keskimääräinen nopeus on 2000tps, eli vain VISA. Transaktioiden koko vaihtelee noin 0,2 kilotavusta yli 1 kilotavuun, mutta nykyään se on keskimäärin puoli kilotavua.

Tämä tarkoittaa, että sinun täytyy pysyä perässä noin 8 megabittiä sekunnissa transaktiodataa (2000tps * 512 tavua) / 1024 tavua kilotavussa / 1024 kilotavua megatavussa / 1024 kilotavua megatavussa = 0,97 megatavua sekunnissa * 8 * 7,8 = 7,8 megabittiä sekunnissa. Tämän korjaaminen siten, että lohkoista tehtäisiin vain luettelo hasheista, ratkaisisi ongelman ja tekisi lohkojen lähettämiseen tarvittavasta kaistanleveydestä mitättömän pienen. Vaikka tätä optimointia ei ole vielä täysin toteutettu, emme ota tässä huomioon lohkojen lähetyskaistanleveyttä.

Tallennus

Suurilla transaktiomäärillä kukin lohko voi olla yli puolen gigatavun kokoinen.

Useimpien täysin validoivien solmujen ei tarvitse tallentaa koko ketjua. Satoshin paperissa hän kuvaa ”karsintaa”, tapaa poistaa tarpeettomat tiedot transaktioista, jotka on kulutettu kokonaan. Tämä vähentää täysin validoivan solmun tarvitsemaa tietomäärää vain senhetkisen käyttämättömän ulostulon koon suuruiseksi sekä jonkin verran lisätietoa, jota tarvitaan re-orgien käsittelyyn. Lokakuussa 2012 (lohko 203258) on ollut 7 979 231 transaktiota, mutta käyttämättömän ulostulokokonaisuuden koko on alle 100MiB, joka on tarpeeksi pieni mahtuakseen helposti RAM-muistiin jopa melko vanhoissa tietokoneissa.

Vain pienen määrän arkistointisolmuja on tallennettava koko ketju, joka ulottuu taaksepäin genesis-lohkoon. Näitä solmuja voidaan käyttää uusien täysin validoivien solmujen käynnistämiseen tyhjästä, mutta muuten ne ovat tarpeettomia.

Pääasiallinen rajoittava tekijä Bitcoinin suorituskyvyssä ovat levyhakuja, kun käyttämätön transaktiotulosjoukko ei enää mahdu muistiin. Kun kiintolevyt on vähitellen korvattu SSD-levyillä, on hyvin mahdollista, että UTXO-joukon hakemisesta ei koskaan tule vakavaa pullonkaulaa.

Optimoinnit

Ylläoleva kuvaus koskee nykyistä ohjelmistoa, kun oletetaan, että siihen on tehty vain vähäisiä optimointeja (sellaisia, jotka yksi mies voi tehdä ja on tehnyt muutamassa viikossa).

Potentiaalia on kuitenkin vielä suurempiinkin optimointeihin tulevaisuudessa, mutta niiden hintana on jonkin verran lisää monimutkaisuutta.

CPU

Algoritmeja on olemassa, joilla voidaan nopeuttaa erävarmennusta elliptisten käyrien allekirjoitusten yli. On mahdollista tarkistaa niiden allekirjoitukset samanaikaisesti 2x nopeuttaen nopeutta. Tämä on hieman monimutkaisempi toteutus.

Yksinkertaistettu maksujen verifiointi

On mahdollista rakentaa Bitcoin-toteutus, joka ei verifioi kaikkea, vaan luottaa joko yhteyden muodostamiseen luotettuun solmuun tai luottaa korkeaan vaikeuteen todisteen oikeellisuuden välittäjänä. bitcoinj on tämän tilan toteutus.

Yksinkertaistettu maksun todentaminen (SPV, Simplified Payment Verification) -tilassa, joka on saanut nimensä sitä kuvaavan Satoshin paperin osan mukaan, asiakkaat ottavat yhteyden mielivaltaiseen täyteen solmuun ja lataavat vain lohkootsikot. He varmistavat, että ketjun otsikot liittyvät toisiinsa oikein ja että vaikeusaste on riittävän korkea. Sitten ne pyytävät tiettyjä malleja vastaavia transaktioita etäsolmusta (eli maksuja osoitteisiisi), joka toimittaa kopiot näistä transaktioista sekä Merkle-haaran, joka yhdistää ne lohkoon, jossa ne esiintyivät. Tässä hyödynnetään Merkle-puurakennetta, joka mahdollistaa sisällyttämisen todistamisen tarvitsematta lohkon koko sisältöä.

Lisäoptimoinniksi riittävän syvälle haudatut lohkon otsikot voidaan heittää pois jonkin ajan kuluttua (esim. sinun tarvitsee oikeastaan tallentaa vain niinkin matalia kuin vuoden 2016 otsikoita).

Vaikeustaso, joka vaaditaan, jotta saataisiin varmuus siitä, että etäsolmu ei syötä sinulle kuvitteellisia transaktioita, riippuu uhkamallistasi. Jos muodostat yhteyden solmuun, jonka tiedetään olevan luotettava, vaikeudella ei ole merkitystä. Jos haluat valita satunnaisen solmun, hyökkääjälle väärennetyn transaktion sisältävän lohkosarjan louhimisesta aiheutuvien kustannusten pitäisi olla suuremmat kuin sinun huijaamisellasi saatava arvo. Muuttamalla sitä, kuinka syvälle lohkon on oltava haudattu, voit tehdä kompromissin vahvistusajan ja hyökkäyksen kustannusten välillä.

Tämän lähestymistavan toteuttavilla ohjelmilla voi olla kiinteä tallennus-/verkko-yleiskustannus nollatapauksessa, jossa ei ole käyttöä, ja resurssien käyttö on verrannollinen vastaanotettuihin/lähetettyihin transaktioihin.

See also: Thin Client Security.

Related work

On olemassa muutamia ehdotuksia Bitcoinin skaalautuvuuden optimoimiseksi. Osa näistä vaatii alt-chainin / hard forkin.

  • Ultimate blockchain compression – ajatus siitä, että lohkoketjua voidaan pakata, jotta saavutetaan ”trust-free lite nodes”
  • Finite Blockchain -paperi, jossa kuvataan lohkoketjun jakamista kolmeen tietorakenteeseen, joista kukin soveltuu paremmin tarkoitukseensa. Nämä kolme tietorakennetta ovat äärellinen lohkoketju (pitää N lohkoa menneisyyteen), ”tilipuu”, joka pitää tilin saldon jokaisesta osoitteesta, jonka saldo on nollasta poikkeava, ja ”todisteluketju”, joka on lohkoketjun (jatkuvasti kasvava) kevennetty versio.
  • Lightning Network, vaihtoehtoinen protokolla transaktioiden selvittämistä varten, jossa solmut perustavat toistensa välille mikromaksukanavia, jotka tasaantuvat lohkoketjussa toisinaan. Tavalliset käyttäjät ovat vuorovaikutuksessa ensisijaisesti tai vain maksukanavien kanssa ja käyttävät lohkoketjua vain suuriin siirtoihin ja kylmäsäilytykseen.

admin

Vastaa

Sähköpostiosoitettasi ei julkaista.

lg