Lohkoketjujen tulevaisuus-sarja

Kyllä, lohkoketjuilla on skaalautuvuusongelma. Tässä kerrotaan, mikä se on, ja tässä kerrotaan, mitä ihmiset tekevät ratkaistakseen sen.

Kamppailu skaalautuvasta ratkaisusta on lohkoketjujen kuukilpailu. Bitcoin käsittelee 4,6 transaktiota sekunnissa. Visa tekee keskimäärin noin 1 700 transaktiota sekunnissa (perustuu laskelmaan, joka on johdettu virallisesta väitteestä, jonka mukaan transaktioita on yli 150 miljoonaa päivässä). Käyttöönottopotentiaali on olemassa, mutta sen pullonkaulana on tällä hetkellä skaalautuvuus.

Tata Communicationsin vuonna 2018 julkaisemassa tutkimuksessa kävi ilmi, että 44 prosenttia sen tutkimukseen osallistuneista organisaatioista ottaa lohkoketjun käyttöön, mutta siinä viitataan myös yleismaailmallisiin ongelmiin, joita syntyy uusien teknologioiden käyttöönotossa. Arkkitehtuurin tasolla lohkoketjujen käyttöönoton ja käytännön sovellusten pullonkaulaksi nousee skaalautuvuuden ratkaisematon ongelma.

Kuten Deloitte Insights toteaa, ”lohkoketjupohjaiset järjestelmät ovat verrattain hitaita. Lohkoketjun hidas transaktionopeus on suuri huolenaihe yrityksille, jotka ovat riippuvaisia suorituskykyisistä perinteisistä transaktioiden käsittelyjärjestelmistä.” Maailma sai esimakua skaalautuvuusongelmista vuosina 2017 ja 2018: vakavat siirtoviiveet ja korkeat maksut Bitcoin-verkossa sekä pahamaineinen Cryptokitties-sovellus, joka ruuhkautti Ethereumin lohkoketjuverkon (verkko, johon tuhannet hajautetut sovellukset tukeutuvat).

Lohkoketjun skaalauttamiseksi lohkokoon kasvattaminen tai lohkoaikojen lyhentäminen pienentämällä hash-käsittelyn monimutkaisuutta ei riitä. Kummallakin menetelmällä skaalautumiskyky saavuttaa ylärajan, ennen kuin se pääsee transaktioihin, joita tarvitaan kilpailemaan Visan kaltaisten yritysten kanssa, jotka ”käsittelevät keskimäärin 150 miljoonaa transaktiota päivässä” tai noin 1736 transaktiota sekunnissa (TPS).

Vertauksena Bitcoinin transaktionopeudet ovat valtavasti alhaisemmat. Tällä hetkellä lohkokooksi on asetettu 1MB (1 048 576 tavua – tosin SegWitin avulla tämä koko voi skaalautua jopa teoreettiseen 4MB:iin) ja keskimääräinen transaktiokoko on 380,04 tavua (olettaen, että kukin transaktio on yhdestä lompakosta x:lle muulle lompakolle – joten erätransaktio lasketaan yhdeksi transaktioksi. kymmenen minuutin välein louhitaan uusi lohko. Kymmenessä minuutissa (600 sekuntia) Bitcoin voi aiempien oletusten perusteella suorittaa keskimäärin noin 2 759,12 transaktiota. Toisin sanoen Bitcoin-lohkoketju voi tällä hetkellä taata vain 4,6 transaktiota sekunnissa.

Increasing Block Size or Decreasing Block Generation Time Won’t Solve the Problem: A Look at Non-SegWit TPS

Skaalautuvuusongelma tulee paketoituna lohkoketjujen arvolupauksiin; siksi skaalautuvuutta ei voi yksinkertaisesti lisätä muuttamalla lohkoketjun parametreja.

Bitcoin-yhteisö voi säätää kahta muuttujaa yrittäessään kasvattaa lohkoketjujen TPS:ää. Toinen muuttuja on lohkokoko (B), joka on tällä hetkellä kovakoodattu 1MB:iin. Ihannetapauksessa B:tä pitäisi kasvattaa TPS:n lisäämiseksi. Toinen muuttuja on lohkojen generointiaika (TB), jota säädetään muuttamalla hashing-palapelin monimutkaisuutta. Ihannetapauksessa TB:tä olisi pienennettävä TPS:n lisäämiseksi.

Taulukko 1: Seuraavassa osassa tarkastellaan eri skenaarioita TPS:n lisäämiseksi. Vain S1- ja S2-skenaarioissa Bitcoin-lohkoketju voi saavuttaa Visan kaltaisen TPS:n, mutta molemmat skenaariot ovat mahdottomia transaktioiden etenemisaikojen vuoksi, joita käsitellään myös tässä osiossa.

Skenaariot 1 & 2

Voidakseen kasvaa 4,4:stä Visan 1736:een, Bitcoinin täytyisi skaalata TPS:nsä 377,5-kertaiseksi. Toisin sanoen B:tä olisi kasvatettava 1MB:stä 377,5MB:hen (taulukko 1, S1) tai TB:tä olisi lyhennettävä kymmenestä minuutista 1,6 sekuntiin (taulukko 1, S2). Kolmas skenaario olisi säätää molempia. Mikään näistä kolmesta skenaariosta ei ole saavutettavissa lohkoketjussa kolmannen, kontrolloimattoman tekijän vuoksi: välitysaika (TR), joka tarvitaan uuden lohkon lähettämiseen jokaiselle Bitcoin-verkon solmulle.

Tällä hetkellä Bitcoin-verkossa on arviolta 10 198 solmua. Yhden megatavun (1 048 576 tavua) lähettäminen vertaisverkon kautta vie jonkin verran aikaa. Karlsruhen teknologiainstituutti mittaa Bitcoinin lohkojen etenemisaikaa, ja 17. tammikuuta 2019 raportoitu keskimääräinen lohkojen etenemisaika oli 13 989,42 millisekuntia eli noin 14 sekuntia etenemiseen 99 prosenttiin verkosta. TB ei voi laskea alle 99 prosenttiin TR:stä (TR99)=14, koska jos näin tapahtuisi, uusi lohko luotaisiin ennen kuin suurin osa verkon lohkoista saisi vanhan lohkon. Mitä lähemmäs TB tulee TR99:ää, sitä enemmän ongelmia syntyy haarautumisista, orvoista lohkoista ja ketjun uudelleenjärjestelyistä sekä (ääritapauksissa) tietoturva-aukoista, kuten double-spend-hyökkäyksistä.

Skenaario 3

Senä tapauksessa, että TB = TR99 = 14, lohkokoolla 1MB Bitcoin-lohkoketju kykenisi kasvattamaan nopeuttaan vain 188 TPS:iin (taulukko 1, S3). Vaikka tämä mittakaava edustaa 188-kertaista TPS:n kasvua, se ei ole lähelläkään Visan päivittäin suorittamaa 1 736 TPS:ää; lisäksi se kerrostuu edellä mainittujen riskien päälle. Toista muuttujaa, B:tä, voidaan säätää uudelleen, mutta ei vaikuttamatta TR:ään, mikä vaikuttaisi TR99:ään ja siten TB:n alarajaan.

Skenaario 4

Esimerkiksi kaksinkertaistamalla B:n koon (1MB:stä 2MB:iin) myös aika, joka kuluu jokaiselta verkon solmulta uuden lohkon lataamiseen, TR, kasvaisi – suunnilleen kaksinkertaiseksi; näin ollen 2MB:llä TR99 = 28s, joten TB:n alaraja olisi myös 28s. Lisäämällä B:tä millä tahansa kertoimella ja lisäämällä sen jälkeen TR:ää samalla kertoimella, netto-TPS pysyisi samana – tässä tapauksessa noin 188 TPS (taulukko 1, S4). Yksi ratkaisu B:n vaikutuksen vähentämiseksi TR:stä on lisätä kaistanleveyttä Bitcoin-verkon kaikkien solmujen välillä. Valitettavasti, koska kyseessä on P2P-verkko, tämä vastuu lankeaa verkon jokaisen vertaisverkon syliin.

SegWitin syntyminen

Vuonna 2017 Segregated Witness (SegWit) astui voimaan kaikissa Bitcoin-solmuissa. Huomautus – En mene SegWitin kaikkiin yksityiskohtiin, mutta jos haluat oppia sen historiasta ja sen roolista Bitcoin Cashin hard forkin synnyssä, tutustu tähän artikkeliin:

Se tekee sen, miltä nimi kuulostaa – erottelee jokaisen transaktion todistajaosan varsinaisista transaktiotiedoista. Se tapahtui pehmeänä haarautumisena, joten se otettiin käyttöön ilman merkittäviä vaikutuksia olemassa olevaan lohkoketjuverkkoon ja -koodiin. Koska todistajan transaktiota painotettaisiin, uusia SegWitiä käyttäviä Bitcoin-lohkoja voitaisiin teoriassa kasvattaa jopa 4 megatavuun muuttamatta Bitcoin-lohkon kokoa.

Sanon teoriassa, koska SegWit-lohkon lopulliseen kokoon vaikuttavat myös muut tekijät. Itse asiassa, jos tarkistat Bitcoin-lohkoketjun etsintäohjelman, huomaat, että (ainakin tämän artikkelin julkaisuhetkellä) keskimääräinen lohkokoko on edelleen alle 1MB.

Lähde: https://www.blockchain.com/charts

Mutta tämä ei tarkoita sitä, etteivätkö lohkot voisi ylittää 1MB:tä. Vuoden 2018 alussa nähtiin yksi suurimmista (luultavasti edelleen suurimmista) luotujen lohkojen koosta, joka painoi noin 2,1 Mt. SegWitin soft fork on auttanut parantamaan lohkokokoa ilman muutoksia ydinkoodiin, mutta se ei edelleenkään paranna TPS:ää skaalautuvalla tavalla.

Tarkastellessamme neljää edellistä skenaariota proof-of-work -konsensuksen alla näimme, että pelkkä lohkokoon kasvattaminen tai louhinnan monimutkaisuuden vähentäminen voi viedä meidät vain niin pitkälle. Jopa näiden yhdistelmä olisi rajallinen transaktioiden etenemisajan vuoksi. Yritys louhia uusia lohkoja nopeammin kuin vanhat lohkot voivat levitä, johtaa melko suuriin turvallisuusongelmiin. SegWit on auttanut lievittämään joitakin TPS-ongelmia tällä välin, mutta skaalautuvampaa ratkaisua tarvitaan edelleen Visan kaltaisen TPS:n saavuttamiseksi.

Näyttää siltä, että minkä tahansa palan siirtäminen paikalleen TPS:n lisäämiseksi siirtää toisen palan pois paikaltaan jostain muualta lohkoketjupalapelissä; siitä huolimatta on olemassa hankkeita ja startup-yrityksiä, jotka työskentelevät saavuttaakseen TPS-ratkaisut, joita tarvitaan lohkoketjujen käyttöönoton viemiseksi skaalautuvaan vaiheeseen.

Existing and Future Approaches to Solve Scalability

Kun etsitään potentiaalista vastausta skaalautuvuusongelmaan, esiin nousee useita muita kysymyksiä. Esimerkiksi jos vastaus on sovellettavissa vain yhteen tiettyyn lohkoketjuun, se perustuu oletukseen, että kyseinen lohkoketju on se, joka tarvitsee kyseistä skaalautuvuutta tulevaisuudessa; muussa tapauksessa vaivannäkö on turhaa tai turhaa. Toinen näkökohta on ymmärtää, mitä kompromissi voi olla. Juuri nyt kaikkiin saatavilla oleviin ratkaisuihin liittyy rajoituksia.

Maksujen yhdistäminen yhdeksi transaktioksi

Pros: Pienentää transaktiotietueen kokoa kokoamalla useita transaktioita yhteen, mikä mahdollistaa yhteensä enemmän transaktioita per lohko, mikä voi lisätä TPS:ää jossain määrin.

Miinukset: Ei voi yhdistää useiden lompakoiden transaktioita yhteen; riskeeraa yksityisyyden

Erämaksut ovat olleet Bitcoinin (ja sen vuoksi myös Bitcoinin haarojen, kuten Digibyten, Dogecoinin, Bitcoin Cashin ym.) ominaispiirre RPC:n lähetyssanomien kautta. Pörssit tekevät tätä jo nyt, ja voit nähdä sen, kun yrität etsiä transaktiotunnustasi lohkoketju-selaimella. Saatat päätyä näkemään, että yksi lompakko lähettää useille eri lompakoille. Siinä tapauksessa kyseessä on erätransaktio.

Tämän etuna on se, että laittamalla se yhteen transaktioon 1) sinun tarvitsee maksaa vain yksi transaktiomaksu ja 2) sinun ei tarvitse kirjoittaa täyttä transaktiota, joka on, kuten aiemmin kuvailin, noin 380 tavua, jokaista transaktiota varten. Itse asiassa siitä 380 tavusta, jonka transaktio voi olla, vain 34 tavua saattaa olla transaktiotietoja.

Vastaa

Sähköpostiosoitettasi ei julkaista.