- The Future of Blockchain Series
- Ja, blockchain har et problem med skalerbarhed. Her er hvad det er, og her er hvad folk gør for at løse det.
- Increasing Block Size or Decreasing Block Generation Time Won’t Solve the Problem: A Look at Non-SegWit TPS
- The Emergence of SegWit
- Eksisterende og fremtidige tilgange til at løse skalerbarhed
- Batchbetalinger i én transaktion
The Future of Blockchain Series
Ja, blockchain har et problem med skalerbarhed. Her er hvad det er, og her er hvad folk gør for at løse det.
Kampen om en skalerbar løsning er blockchain’s måneløb. Bitcoin behandler 4,6 transaktioner i sekundet. Visa foretager i gennemsnit omkring 1.700 transaktioner pr. sekund (baseret på en beregning, der er afledt af den officielle påstand om over 150 millioner transaktioner pr. dag). Potentialet for vedtagelse er der, men er i øjeblikket flaskehalset af skalerbarhed.
En undersøgelse offentliggjort af Tata Communications i 2018 viste, at 44 % af organisationerne i deres undersøgelse er i gang med at indføre blockchain, men hentyder også til de universelle problemer, der opstår ved implementering af nye teknologier. Fra et arkitektonisk niveau fremstår det uløste problem med skalerbarhed som en flaskehals for blockchain-adoption og praktiske anvendelser.
Som Deloitte Insights udtrykker det, “er blockchain-baserede systemer forholdsvis langsomme. Blockchain’s langsomme transaktionshastighed er et stort problem for virksomheder, der er afhængige af højtydende legacy transaktionsbehandlingssystemer med høj ydeevne.” Verden fik en smagsprøve på skaleringsproblemerne i 2017 og 2018: alvorlige overførselsforsinkelser og høje gebyrer på Bitcoin-netværket og den berygtede Cryptokitties-app, der overbelastede Ethereum-blokkædenetværket (et netværk, som tusindvis af decentrale applikationer er afhængige af).
For at skalere en blockchain er det ikke nok at øge blokstørrelsen eller reducere bloktiden ved at reducere hashkompleksiteten. Med begge metoder når evnen til at skalere et loft, før den kan nå de transaktioner, der er nødvendige for at konkurrere med virksomheder som Visa, som “håndterer i gennemsnit 150 millioner transaktioner hver dag” eller omkring 1.736 transaktioner pr. sekund (TPS).
Til sammenligning er Bitcoin-transaktionshastighederne enormt meget lavere. I øjeblikket er blokstørrelsen sat 1 MB (1.048.576 bytes – selv om gennem SegWit, kan denne størrelse skalere til op til en teoretisk 4 MB) og den gennemsnitlige transaktionsstørrelse er 380.04 bytes (under forudsætning af, at hver transaktion er fra en tegnebog til x andre tegnebøger – så en batch-transaktion ville tælle som én transaktion. Jeg vil tale mere om batch-transaktioner senere, og hvorfor jeg mærkede det på denne måde) og synes at være stigende. derfor er den gennemsnitlige mængde transaktioner, der kan passe ind i en af Bitcoins blokke, i øjeblikket, beregnet som:
Men det betyder ikke, at blokke ikke kan gå over 1 MB. I begyndelsen af 2018 var vi vidne til en af de største (sandsynligvis stadig den største) blokstørrelser, der blev genereret, og som kom til at veje omkring 2,1 MB. SegWits soft fork har bidraget til at forbedre blokstørrelsen uden ændringer i kernekoden, men det forbedrer stadig ikke TPS på en skalerbar måde.
Når vi undersøgte de foregående fire scenarier under en proof-of-work-konsensus, så vi, at en simpel forøgelse af blokstørrelsen eller en reduktion af minedriftskompleksiteten kun kunne føre os så langt. Selv en kombination af dette ville være begrænset på grund af transaktionsforplantningstiden. Hvis man forsøger at udvinde nye blokke hurtigere, end gamle blokke kan spredes, vil det føre til nogle ret store sikkerhedsproblemer. SegWit har hjulpet med at afhjælpe nogle af TPS-problemerne i mellemtiden, men der er stadig behov for en mere skalerbar løsning for at opnå Visa-lignende TPS.
Det ser ud til at flytte enhver brik på plads for at øge TPS flytter en anden brik ud af plads et andet sted i blockchain-puslespillet; uanset, der er projekter og startups arbejder for at opnå de TPS svar, der er nødvendige for at skubbe blockchain adoption i et skalerbart stadium.
Eksisterende og fremtidige tilgange til at løse skalerbarhed
Når man leder efter det potentielle svar på skalerbarhedsproblemet, opstår der flere andre spørgsmål. For eksempel, hvis svaret kun gælder for en bestemt blockchain, så er det afhængig af den antagelse, at den pågældende blockchain vil være den, der har brug for denne skalerbarhed i fremtiden; ellers er indsatsen unødvendig eller malplaceret. En anden overvejelse er at forstå, hvad der kan være en afvejning. Lige nu kommer alle tilgængelige løsninger med begrænsninger.
Batchbetalinger i én transaktion
Pros: Reducerer størrelsen af en transaktion record ved at sætte flere transaktioner i én, hvilket giver mulighed for flere transaktioner samlet set pr blok, hvilket kan øge TPS til en vis grad.
Cons: Kan ikke batch flere tegnebogens transaktioner sammen; risici privatlivets fred
Batch betalinger har været en funktion af Bitcoin (og derfor, Bitcoin gafler herunder Digibyte, Dogecoin, Bitcoin Cash, etc.) gennem RPC sendmany. Exchanges gør allerede dette, og du kan se det, når du forsøger at slå dit transaktions-id op på en blockchain explorer. Hvad du kan ende med at se, er en tegnebog, der sender ud til flere forskellige tegnebøger. I så fald er det en batch-transaktion.
Fordelen ved dette er, at det at lægge det i én transaktion betyder, at 1) du kun skal betale ét transaktionsgebyr, og 2) at du ikke behøver at skrive en fuld transaktion, der som jeg beskrev tidligere er ca. 380 bytes, for hver transaktion. Faktisk er det sådan, at ud af de 380 bytes, som transaktionen kan være, kan kun 34 bytes heraf være transaktionsoplysninger.