Blockchain-programmering: Hvor mange programmeringsspråk trenger du for Blockchain?

Når menneskeheten beveger seg mot digitalisering av alt, blir grunnleggende koding et must selv for den gjennomsnittlige personen som ikke er opptatt av teknologi. Dette kravet er enda tydeligere når det gjelder blockchain-sfæren. Hvis vi virkelig søker ekte desentralisering, bør hver og en av oss forstå hvordan ting fungerer i det minste på elementært nivå. Enten du er en erfaren programvareingeniør, eller en gjennomsnittlig Joe, er det første du bør gjøre før du lærer hvordan blockchain fungerer, er å velge et programmeringsspråk.

For en ny, rumlende teknologi som utvikler seg i et fartsfylt tempo, er oppgaven med å velge en programmeringsspråk kan være skremmende. Det er mange av dem tilgjengelige, og forskjellige oppstartsselskaper og open source-fellesskap valgte forskjellige språk for å bygge sine produkter, ettersom fokus og sett med ønskede funksjoner varierer. Det er ingen standard og på dette tidspunktet; ditt valg vil stort sett komme til dine personlige kriterier og typen applikasjoner du ønsker å bygge.

I denne artikkelen vil vi gjennomgå de mest populære programmeringsspråkene som brukes i blockchain-utvikling for å hjelpe deg med å velge det mest passende alternativet. La oss ikke sette den av lenger og gå dypt ned i kaninhullet!

De mest populære programmeringsspråkene i blockchain

Først og fremst må vi forstå hvilke av programmeringsspråkene som brukes mest når det gjelder å skrive kode i blockchain. Du vil sannsynligvis se noen kjente navn på denne listen.

C++

For å begynne å gjennomgå språkene for blockchain-programmering, må vi ta en titt på bestefaren deres – C ++. Dette språket ble utgitt i 1985 av Bjarne Stroustrup for å gjøre originalen C mer fleksibel. Mer enn tre tiår senere ble den brukt til å bygge Bitcoin.

I motsetning til original C, som er prosessorientert, er C ++ objektorientert. Denne tilnærmingen gjør C ++ mer tidseffektiv når det gjelder å skrive kode. Dataene sammen med funksjonene lagres i såkalte objekter som kan brukes på nytt senere i andre programmer.

På grunn av modenhet er det ikke overraskende at featurewise C ++ er ganske robust når det gjelder utviklingen av blockchain. Dette språket har minnekontroll som sikrer hastighet ved effektiv CPU-styring, tråder som gjør det mulig å kjøre parallelle / ikke-parallelle oppgaver samtidig, flytte semantikk for å kopiere data på en enkel måte, kompilere polymorfisme for bedre ytelse gjennom å dele ansvar, og kodeisolering for å skille datastrukturer . I tillegg består brukerbasen av mer enn fire millioner utviklere.

Den største ulempen med C ++ for blockchain-utviklere er at den ikke er smart kontraktklar. Det betyr ikke at man ikke kan kode en smart kontrakt på C ++, det betyr at noen modifikasjoner må implementeres. Dette er grunnen til at blockchain-spesifikke språk begynte å dukke opp.

Fordeler: uavhengig og multiplatform, høy hastighet, lik C

Ulemper: ganske vanskelig å mestre, komplisert og noen ganger vanskelig å feilsøke, ingen søppeloppsamling

Best egnet for: avanserte brukere, forstå prinsipper for Bitcoin

C #

C # er yngre enn C ++, men den er også ganske gammel. Opprettet på slutten av 90-tallet i Microsoft, fikk det raskt grep i utviklermiljøet. Det er et OOP-språk (objektorientert programmeringsspråk) som gir flotte funksjoner for applikasjoner i bedriftsklasse, sky og plattformutvikling. Stort støttet av Microsoft, er dette språket et praktisk verktøy både for profesjonelle og uformelle kodere.

Ikke bare er C # fleksibel og lett å forstå hvis du er kjent med C ++ eller Java, men den er også full av funksjoner. I tillegg til noe av C ++ – funksjonaliteten, tilbyr C #.NET framework & klassebiblioteket, den vanlige språketid og utviklingsrammer (som WPF, XAML og ASP.NET).

C # favoriseres av store spillere i blockchain av noen grunner:

  • Syntaksen er lett å forstå for den store delen av utviklere som allerede er kjent med C ++ (4,4 millioner devs).

  • Det er åpen kildekode.

  • Det gjør det mulig å skrive bærbar kode for mobile enheter.

  • Det er rimelig på grunn av BizSpark-programmet.

Blant de mest fremtredende oppstartsbedriftene som baserer koden sin på C #, er NEO og Stratis. I tillegg har C # et dedikert Bitcoin-rammeverk (NBitcoin). Microsoft kommer ikke etter og introduserer vNext blockchain for sin Azure-plattform.

Fordeler: objektorientert, sterkt skrevet, dynamisk kodestøtte

Ulemper: svak Linux-støtte

Passer best for: å bygge infrastrukturblokker, Windows-brukere

JavaScript

Dette er kanskje det klart mest anerkjente programmeringsspråket i verden. Nettsidene du blar gjennom hver dag, bruker javascript for fancy utseende og avansert funksjonalitet. I 2007 laget Jeff Atwood en lov:

“Enhver applikasjon som kan skrives i JavaScript, vil etter hvert bli skrevet i JavaScript.”

JavaScript er et OOP-språk som er lett å lære mens det er ganske allsidig. Ved hjelp av JS kan utviklere kode for klienter & servere, IoT-enheter og maskinlæring. En av JavaScript’s største fordeler når det gjelder blockchain er funksjonen til å kjøre hendelser asynkront, noe som betyr at det lar noder kommunisere fritt og effektivt. En annen styrke ved JS er at den ikke krever kompilering. Samtidig koster enkelhet. Til tross for alle funksjonene er JS langt fra C ++, men det er et flott språk for nybegynnere.

JavaScript var ikke veldig populært blant blockchain-utviklere før ICO-utbruddet i 2017. For øyeblikket er det flere oppstart med høye rangeringer på CoinMarketCap som er basert på dette språket, som Lisk, Ark og Nimiq. En av Ethereums mest bemerkelsesverdige konkurrenter, Tron, støtter også JavaScript.

Fordeler: Objektorientert, prototypebasert, støtter funksjonell programmering

Ulemper: Dynamisk, svakt skrevet

Passer best for: Å gå inn i blockchain-plass, bygge dApps

Python

Python ble opprettet på en minimalistisk måte. Derfor er dette språket ekstremt enkelt å lære og er et flott inngangspunkt for nybegynnere. Den ble opprettet i 1991 og har tjent en mengde formål som applikasjonsutvikling, utvikling av nettverksservere, IoT og andre. Det er kanskje ikke så anerkjent som JS ennå, men det gir absolutt mer sus i teknologiverden.

Python er et OOP-språk. Det er en glede å kode, og det er universelt. For å kode en enkel blockchain trenger du ikke mer enn 50 linjer. Når koden er skrevet, kan den kjøres på flere enheter med et annet operativsystem installert. Det er også et enormt bibliotek med rammer, som Tensorflow og Django, selv om dokumentasjonen deres i noen tilfeller kan være ufullstendig. For å legge til dette er det for øyeblikket spesifikke biblioteker, dedikert til utvikling av blockchain. I likhet med JavaScript krever Python ikke kompilering, selv om det kan kompileres som C # og C ++. Kombiner det med et dedikert testmiljø som følger med det, og du vil få en sveitsisk hærkniv for din blockchain-reise.

Python har blitt anerkjent av bransjens superstjerner. IBM Hyperledger implementerte det i Sawtooth og Ethereum har skapt sin egen iterasjon av dette språket: Pyethereum.

Fordeler: Veldig lett å lære, forhåndsdefinerte biblioteker og rammer, effektive

Ulemper: Mest brukt som et serverspråk, ikke så smart sammenheng

Passer best for: Bygg dApps for nybegynnere

Golang (eller Go) er et åpent kildespråk hentet fra C. Det er et veldig ungt språk som ble lansert i 2007 av devs fra Google. Go implementering av syntaksen er mer Python-aktig – det er enkelt å gi effektivitet og gjøre prosjekter laget med den fremtidssikre.

Go’s sterke sider for blockchain-programmering inkluderer tilgjengeligheten av modulær programmering som gjør utviklingsprosessen fleksibel, praktiske testverktøy og et stort bibliotek med funksjoner. Det ville være mest tiltalende for cloud computing-utviklere, da distribuerte beregninger er veldig enkle når det gjelder dette språket. Selv om dette språket krever kompilering, er det en god faktor for sikkerhet, ettersom alle feilene blir vist til personen som skriver koden før den lanseres. I tillegg øker parallell programmering sammen med Goroutines effektiviteten til koden og applikasjonenes gjennomstrømning. Dette er avgjørende for skalerbarhet, som er et smertepunkt i blockchain-rommet i dag. Til slutt kjører Go med operativsystemet, ikke på toppen av det. Dette eliminerer et ekstra trinn når du lager EVM-er, og øker dermed hastigheten.

Go er et kjent språk i blockchain-sfæren. Vurder IBM Hyperledger som brukes Golang til å kode smarte kontrakter på sin Fabric. Docker er ikke en blockchain-oppstart, men den fungerer med de distribuerte systemene og er bygget med Go.

Fordeler: Minne sikkerhet, søppel innsamling, sterkt skrevet

Ulemper: Ikke så lett å lære, relativt lite samfunn, et lite antall pakker

Passer best for: Bygg sky-apper

Tørrhet

Soliditet er ung, som Golang. Den ble utgitt i 2014 av Christian Reitwiessner og hans team. Det er et språk som ble opprettet for å skrive smarte kontrakter på Ethereum, og det er derfor det er mest populært i Ethereum-økosystemet. Det er verdt å merke seg at økosystemet har vokst hundrevis av ganger de siste to årene på grunn av de forskjellige startups som flommer over markedet. Som et resultat har Solidity en stor brukerbase. Standarden (ERC20) har blitt stift for bransjen.

Soliditet er OOP og et kontaktorientert språk. Det er også Turing komplett, noe som betyr at den kan tolke forskjellige regler for datamanipulering. Syntaksen for soliditet ligner på JavaScript, men det er noen likheter med C++ & Python også. Til tross for den tidlige fasen er soliditet et funksjonelt språk, det gir arv, forskjellige biblioteker osv. På baksiden av ungdommen er det problemer med dokumentasjon som kan sette noen devs i en knipe..

For tiden er de viktigste brukssakene for soliditet EVM og smarte kontrakter. Det er ikke mye, men de er ekstremt viktige og blockchain-spesifikke så mye som det kan være. Hvis du vil bygge en dApp, er Soliditet ditt valg.

Fordeler: Statisk skrevet, lett å lære, trendy

Ulemper: Ikke universell, sårbar

Passer best for: Utvikling av smarte kontrakter

Grunnleggende om koding på blockchain

Nå som vi har gjennomgått de mest populære programmeringsspråkene i blockchain, er det på tide å skitne hendene med faktisk koding. La oss se hvordan de grunnleggende operasjonene utføres i termer via forskjellige programmeringsspråk.

Før vi begynner, er det en god ting å avgrense vår kunnskap om hva en blockchain er. En blokkjede er en distribuert hovedbok med transaksjoner som er lagt inn i en kjede av blokker. En blokk er en plassholder for transaksjonsregistreringer. Hver nye blokk har en peker til den forrige i form av en hash-funksjon. Etter at blokken er full, genereres en hash ved hjelp av alle transaksjonene og festes til den. Det er også en tidsstempel-server som forhindrer dobbeltbruk og en konsensusmekanisme som gjør det mulig for noder å bli enige om riktig versjon av hovedboken.

På tide å gjennomføre teori. Hensikten med dette er ikke å bygge en komplett app, men å vise hvordan prosessen ser ut.

  1. C++

    Hver blokkjede der ute har en hardkodet innledende blokk, kalt en genese-blokk. La oss lage en.

    C ++ genese blokkBilde av Utoday

    Nå kan vi opprette en ny blokk. For å gjøre det skriver vi getLatestBlock ().

    C ++ legg til blokkerBilde av Utoday

C ++ konsensusBilde av Utoday

Konsensusmekanismen er en enkel ‘for’ loop-funksjon som går over alle blokkene, fra 1, fordi det ikke er behov for å revidere 0 genese-blokken.

  1. C #

    Datastrukturen for en blockchain på C # er ganske grei. Den har Block & Blockchain klasser. Her er de.

    C # -blokkBilde av UtodayC # blockchainBilde av Utoday

    Hvis vi visualiserer strukturen, ser den slik ut:

C # blockchain strukturBilde fra https://www.c-sharpcorner.com/

Slik legger vi til nye blokker:

C # legg til blokkerBilde av Utoday

For å få blockchain til å nå konsensus, f.eks. validere det, vi trenger bare to linjer med kode sammen med en IsValid-metode som vil sjekke data i hver av blokkene og sammenligne hashes.

C # konsensusBilde av Utoday

  1. JavaScript

    Nå når vi territorier med mer tilgjengelige språk, dette bør være morsommere hvis du ikke har noen kodingserfaring. For å lage en blockchain trenger vi et kjøretidsmiljø, for eksempel Node.js. Hver av de ekstra blokkene vil ha følgende data: indeks, tidspunkt for opprettelse, diverse (som avsender & mottakeradresser og overført beløp), forrige blokks hash, egen hash. Når det er gjort, er det på tide å gå over til hardkoding av genese-blokken:

    JavaScript-generasjonsblokkBilde av Utoday

    Etter hvert som vi har fått geneseblokken, skal vi nå legge til blokker med nye data via en nextBlock-funksjon. Denne funksjonen vil automatisk gå gjennom alle 5 typer data og inkludere dem i hver nye blokk.

    JavaScript-opprettingsblokkBilde av Utoday

JavaScript legger til blokkerBilde av Utoday

  1. Python

    Denne gangen begynner vi med å forstå hvordan en transaksjon i Python ser ut. Det er et enkelt tidsstemplet innlegg med noen data vedlagt.

    Python-transaksjonBilde av Utoday

    Disse transaksjonene kommer inn i blokkene. La oss introdusere denne klassen.

Python-blokkBilde av Utoday

Vi vil bruke SHA-256 som brukes i Bitcoin for å lage hashes for validering av blockchain-integriteten.

Python-hasjBilde av Utoday

Nå kan vi legge til blokkene, men la oss først introdusere Proof-of-Work-algoritmen som sørger for at dataene i blockchain ikke ble ødelagt.

Python PoWBilde av Utoday

Etter det er det klart at vi starter blockchain.

  1. Vi begynner med å definere egenskapene til blokkene våre. BPM er vilkårlige data, som nettverkstransaksjoner, adresser osv.

    Golang-blokkBilde av Utoday

    For å lage blokker, må vi hasjdata i dem og kjede etter tilsvarende resultater. Koden for hashing av data i en blokk i Go ser slik ut:

    Endelig kan vi begynne å lage nye blokker ved å bruke generereBlock-funksjonen. På tide å skrive konsensus, som er representert av isBlockValid-funksjonen.

    Når alle ting er satt, er vi klare til å starte blokkproduksjonen. Vær oppmerksom på at blockchain på dette tidspunktet trenger en server å kjøre på, så det er noen ekstra koder som gjenspeiler dette.

    Golang hasjBilde av Utoday

  2. Tørrhet

    Å bygge smarte kontrakter skiller seg fra det vi nettopp har gjennomgått, men det er fortsatt enkelt. Først må vi lage en kontrakt og gi den navnet. Denne kontrakten er for en persons vilje. I tilfelle de dør, skal midlene automatisk distribueres til bestemte adresser.

    FasthetskontraktBilde av Utoday

    Her spesifiserer vi eierens Ethereum-adresse (eier), beløpet som er igjen for distribusjon (enhet) og den betingede variabelen for eierens tilstand (bool). Det neste trinnet er å legge til modifikatorer som utvider den betingede logikken for å gi en funksjon med eierens tilstand.

    Når dette er gjort, kan vi skissere adressene som vil motta arven. Så fortsetter vi å spesifisere fordelingen av midler i tilfelle isDeceased = true. Vær oppmerksom på at vi på dette stadiet kan skjule funksjonen for offentligheten ved å sette ‘privat ved siden av’ utbetalingsfunksjonen. Voila, koden kan nå distribueres.

    Modifikatorer for fasthetBilde av Utoday

Sammendrag

For å oppsummere er det ingen ultimate blockchain-fokuserte programmeringsspråk. Blockchain i seg selv er i sin spede begynnelse, og det er uutforskede horisonter og ubestemt grunnlag. Som på mange andre områder er den beste mulige måten å komme seg trygt på å bli en full-stack-utvikler, noe som kan være en tøff oppgave, med tanke på hvor mye kunnskap du trenger å ha. Heldigvis har mange av programmeringsspråkene likheter i syntaks og struktur for å lette overgangen.

Hvis du må velge ett språk, må du vurdere sammenhengen. Hvis du vil fokusere på å bygge infrastrukturprosjekter, vil C ++ og C # passe mer for deg. I tilfelle du er mer fascinert av utviklingen av appene på toppen av eksisterende blokkjeder, er JavaScript, Python og Go gode alternativer å vurdere. Hvis du bare vil lansere ditt eget ERC20-token, vil utvidelse utvilsomt dekke dine behov.

Du bør også huske at blokkjeder er språk-agnostiske. Med nye språk som Enkelhet som spiller inn og de eksisterende som SQL blir integrert, blir grensene mellom dem mer og mer uskarpe. Husk at et språk bare er et verktøy, og du kan bruke det til alle formål. Vårt beste råd vil være at hvis du allerede er kjent med noen språk, fortsetter å mestre dem – vil du definitivt kunne lage blokkeringer med dem. Hvis du akkurat har begynt, kan du prøve å se etter det enkleste inngangspunktet – se mer mot JavaScript og soliditet.