Blockchain 1.0 och Blockchain 2.0 – vad är skillnaden?

Blockchain 1.0 och Blockchain 2.0 – vad är skillnaden?

När man pratar om Blockchain 1.0 och 2.0 skiljer de sig åt utifrån att de fungerar statiskt kontra dynamiskt. Tar man exempel som internet så är det från början uppbyggt på ett väldigt statiskt sätt. När första hemsidan poppade upp fanns endast text, kanske någon bild och länkar. Det var i stort sett allt. Idag har vi ett antal fler funktioner än så. 

Det fanns med andra ord inte särskilt många (eller inga alls) dynamiska funktioner på webbsidor som det finns en hel del av idag. Det var av den anledningen JavaScript (JS) kom till vilket innebar att man tack vara JS kunde börja utföra script på sajter.

Därför kan vi idag publicera animationer, olika interaktiva funktioner, mm. Kontentan är att internet var väldigt statiskt före JS kom in i bilden och gjorde det dynamiskt.

Så vad har statiskt och dynamiskt med blockchain att göra?

Innan Ethereum kom i bilden när det kommer till blockchainteknik och krypto så var blockchain väldigt statiskt. Förvisso var blockchain Ethereum revolutionärt eftersom möjligheten hade skapats för att kunna genomföra transaktioner, skicka värde från en person till en annan utan en mellanhand (exempelvis en bank), vilket tidigare inte var möjligt.

Däremot kan man inte utföra särskilt mycket scripting, eller programmering på blockchain.

När Ethereum introducerades blev blockkedjan mer dynamisk och interaktiv, vilket är orsaken till uppdelningen från Blockchain 1.0 till 2.0

Vad mer kan man göra på blockchain 2.0?

På blockchain 2.0 kan man numer programmera, vi kan köra applikationer/program.

Dessa program och applikationer som kan köras på blockchain 2.0 körs inte på en enskild dator, enskild server utan de körs på blockkedjan på ett decentraliserat sätt. Något som är oerhört revolutionerande, speciellt för olika industriella branschområden.

Numer har vi en programmerbar blockkedja

Det innebär att vi kan köra kod på blockkedjan som smarta kontrakt (smart contracts), decentraliserade applikationer/program något som Ethereum la grunden till.

Web 3.0 och framtidens internet

I och med blockchain 2.0 kommer webben graderas upp till 3.0 och mycket kommer förändras radikalt tack vare blockchaintekniken.

Exempelvis kommer vi ha decentraliserade webbsidor. Internet i sig själv kommer bli mer decentraliserat och den klientserverstruktur som vi lever med idag kommer alltmer försvinna.

Om vi börjar med bitcoin och blockchain 1.0

Bitcoin hade från början ett scriptspråk som hette just ”script” och det används även idag, eftersom bitcoin fortfarande finns…

Med programmeringsspråket ”script” kan man göra enkla funktioner, enklare programmering, etc.

Programmeringsspråket ”script” är väldigt begränsat, det är helt enkelt inte ”turing complete”.

För att någorlunda förstå teknaliteterna av blockchain 2.0 och programmeringsspråk så behöver man förstå vad ”turing complete” betyder.

Turing Complete

”Turing complete” kan lösa alla typer av problem vilket betyder att det kan lösa alla olika typer av matematiska och beräkningsproblem. I teorin.

I praktiken kan det ta många år, decennier, men i teorin finns alltid ett svar. Detta kan anses som definitionen av ”turing complete”. (jag hittar tyvärr ingen bra svensk översättning på det uttrycket)

För ett programmerings program kan anses ”turing complete” krävs det något som kallas ”loops” (lopar/slingor). Loop är den funktion som programmeringsspråket ”turing complete” har.

Med ”turing complete” kan man be en dator (med sitt programmeringsspråk) att utföra en viss funktion flertalet gånger.

Exempelvis, Om det finns ”loops” som programmeringsspråk kan den be datorn utföra funktioner i rätt steg. Först instruktion 1, sedan instruktion 2, därefter instruktion 3 osv. miljontals gånger och datorn kommer utföra den ”loop’en” så många gånger man programmerar den att göra det.

Kan tyckas knepigt men är en väldigt användbar funktion i programmeringssammanhang.

När det kommer till bitcoin, så finns inte den funktionen gällande ”loops”. Så i bitcoins programmeringsspråk så kan man inte programmera in att utföra instruktioner flertalet gånger.

Det handlar egentligen inte om att bitcoin utvecklare inte visste hur man gjorde utan de ansåg att det skulle öka risken av spam. Därför används inte det programmeringsspråket i bitcoin nätverket.

Om du har scripts som innehåller ”loopar” så kan det ”spamma’” nätverket. Utvecklarna av bitcoin ville inte utsätta sig och andra för risken.

Vitalik Buterin

Det är ett namn att lägga på minnet, då han är grundaren av Ethereum. Vitalik var tidigare en framstående utvecklare av bitcoin nätverket. Han föreslog för nätverket att addera ”loops” till bitcoin, ett ”turing complete” programmeringsspråk, men fick inget stöd i det förslaget. Istället kom Ethereum till.

Solidity

Ethereum introducerade med ett ”turing complete” programmeringsspråk som heter Solidity. Vill man börja göra smarta kontrakt på Ethereum så använder du programmeringsspråket Solidity.

Eftersom Solidity är ”turing complete” så innebär det att det i teorin kan lösa vilket dataproblem som helst, vilket innebär att man kan programmera i stort sett vad som helst. Exempelvis ett socialt nätverk, tågapplikation, vad du än kan tänka dig som du har sett datorer kan göra, går att göra med Solidity.

Givetvis är det en stor skillnad mellan vad som är teoretiskt möjligt i förhållande till vad som är praktiskt möjligt.

Vad innebär det att exekvera kod på blockkedjan?

När man exekverar kod på en dator betyder det i huvudsak att datorn har en CPU (Central Prosessing Unit) och man ger CPU’n instruktioner, ett program till exempel, vilket leder till att CPU’n exekverar programmet instruktion för instruktion.

När man pratar om Ethereum så finns det inte en enda CPU, istället läggs det på nätverket (blockchain) – ett nätverk av datorer som även kallas noder. Det i sin tur innebär att det finns datorer utspridda (nodes) som exekverar koden/programmet på blockkedjan.

Varje ”node” måste behålla alla transaktioner, alla smarta kontrakt etc.

”State” vad är det?

När man pratar om mjukvara, program så är varje program i någon form av status (state). En ”state” är den nuvarande positionen programmet befinner sig i.

Om man utgår från exempelvis en försäljningsautomat så har den olika ”states” (status). Nummer ett så ”väntar” automaten på att du ska välja ett nummer för den vara du vill köpa. Så du väljer ett nummer/vara. nästa ”state” är att automaten väntar på pengar för att kunna utföra ditt val. När du lagt i pengar så går automaten till nästa ”state” vilket innebär att den skickar fram den produkt du valt. När detta är gjort återgår automaten till ”state” nr 1 (nästa köpare).

Så det man slutligen menar när man exekverar kod på blockkedjan innebär att alla noder (datorer i nätverket) exekverar koden, alla noder kör de smarta kontrakten och de måste komma fram till samma slutsats, de måste nå samma ”state” av applikationen/programmet.

Så vad är då ett smart kontrakt?

Jag har tagit upp det tidigare, men återkommer till det igen då det är en sådan stor del av hela blockkedjeindustrin.

Om man utgår från lägsta nivå av förklaring så innebär det egentligen programmering av en uppsättning instruktioner. Som enligt exemplet med försäljningsautomaten.

När man kodar smarta kontrakt så programmerar man dem i Solidity och sedan när man sammanställer dem så blir din kod blir maskinkod, en kod som EVM (Ethereum Virtual Machine) exekverar och kör instruktionerna en efter en.

Det är slutligen så man kör mjukvara på ett decentraliserat sätt. Alla i nätverket kör mjukvaran, därefter jämför och kollar sina balanser noderna emellan. Ungefär som i bitcoin när alla i nätverket jämför det aktuella ”state” av en transaktion.

 

Hoppas du fick lite insikt i skillnaden mellan Blockchain 1.0 och 2.0. Jag är medveten om att det är en aningens tekniska inslag, men känner att om man inte får med sig förklaringar kring dessa, är det svårt att se helheten, därav lite teknisk beskrivning. Förhoppningsvis beskrivet på ett överkomligt sätt.

 

Foto: unsplash-logoNeONBRAND

Kommentera

E-postadressen publiceras inte. Obligatoriska fält är märkta *