Blockchain-ohjelmointi: Kuinka monta ohjelmointikieltä tarvitset Blockchainille?

Kun ihmiskunta siirtyy kohti kaiken digitalisointia, peruskoodauksesta tulee välttämätöntä myös tavalliselle ihmiselle, joka ei ole innokas tekniikkaan. Tämä vaatimus on vieläkin ilmeisempi, kun kyse on lohkoketjupallosta. Jos todella pyrimme todelliseen hajauttamiseen, jokaisen tulisi ymmärtää, miten asiat toimivat ainakin alkutasolla. Olitpa kokenut ohjelmistosuunnittelija tai keskimääräinen Joe, ensimmäinen asia, jonka sinun pitäisi tehdä ennen kuin opit kuinka blockchain toimii, on valita ohjelmointikieli.

Uutta, jyrisevää tekniikkaa, joka kehittyy nopeasti, tehtävänä on valita a ohjelmointikieli voi olla pelottava. Niitä on paljon ja erilaiset startupit ja avoimen lähdekoodin yhteisöt valitsivat eri kielet rakentaakseen tuotteitaan, koska niiden painopiste ja haluttujen ominaisuuksien joukot vaihtelevat. Ei ole standardia ja tällä hetkellä; Valintasi sopisi melkein henkilökohtaisiin kriteereihisi ja siihen, minkä tyyppisiä sovelluksia haluat rakentaa.

Tässä artikkelissa tarkastelemme suosituimpia ohjelmointikieliä, joita käytetään lohkoketjun kehittämisessä auttamaan sinua valitsemaan sopivimman vaihtoehdon. Älkäämme lykkää sitä enää ja mene syvälle kanin reikään!

Suosituimmat ohjelmointikielet lohkoketjussa

Ensinnäkin meidän on ymmärrettävä, mitä ohjelmointikieliä käytetään eniten, kun on kyse koodin kirjoittamisesta lohkoketjuun. Luultavasti näet joitain tuttuja nimiä tässä luettelossa.

C++

Aloittaaksemme blockchain-ohjelmoinnin kielet meidän on katsottava heidän isoisänsä – C ++. Bjarne Stroustrup julkaisi tämän kielen vuonna 1985 alkuperäisen C: n joustavuuden lisäämiseksi. Yli kolme vuosikymmentä myöhemmin sitä käytettiin Bitcoinin rakentamiseen.

Toisin kuin alkuperäinen C, joka on prosessisuuntautunut, C ++ on olio. Tämä lähestymistapa tekee C ++: sta aikatehokkaamman koodin kirjoittamisessa. Tiedot ja toiminnot tallennetaan ns. Objekteihin, joita voidaan käyttää myöhemmin uudelleen muissa ohjelmissa.

Kypsyydestään johtuen ei ole yllätys, että blockchain-kehityksen kannalta ominaisuus C ++ on varsin vankka. Tällä kielellä on muistinhallinta, joka varmistaa nopeuden tehokkaalla suorittimen hallinnalla, ketjutuksella, joka mahdollistaa rinnakkaisten / ei-rinnakkaisten tehtävien suorittamisen samanaikaisesti, siirtää semantiikkaa tietojen kätevään kopiointiin, kokoamisajan polymorfismi parempaan suorituskykyyn jakamalla vastuut ja koodieristys tietorakenteiden erottamiseksi . Lisäksi sen käyttäjäkunta koostuu yli neljästä miljoonasta kehittäjästä.

C ++: n yksi merkittävä haitta blockchain-kehittäjille on, että se ei ole älykäs sopimusvalmis. Se ei tarkoita, että älykäs sopimus ei voi koodata C ++: lle, vaan se, että joitain muutoksia on toteutettava. Tämä on syy, miksi blockchain-kohtaiset kielet alkoivat näkyä.

Plussat: itsenäinen ja monitasoinen, nopea, samanlainen kuin C

Miinukset: melko vaikea hallita, monimutkainen ja joskus vaikea debugata, ei roskakoria

Sopii parhaiten: kokeneille käyttäjille, Bitcoinin periaatteiden ymmärtäminen

C #

C # on nuorempi kuin C ++, mutta se on myös melko vanha. Se luotiin 90-luvun lopulla Microsoftissa, ja se sai nopeasti vetovoimaa kehittäjäyhteisössä. Se on OOP-kieli (tavoite-suuntautunut ohjelmointi), joka tarjoaa upeita ominaisuuksia yritysluokan sovelluksiin, pilvi- ja alustojen väliseen kehitykseen. Tämä kieli on suurelta osin Microsoftin tukema kätevä työkalu sekä ammattilaisille että rentoille koodereille.

C # on paitsi joustava ja helppo ymmärtää, jos tunnet C ++: n tai Java: n, mutta siinä on myös ominaisuuksia. Joidenkin C ++ -toimintojen lisäksi C # tarjoaa.NET-kehyksen & sen luokkakirjasto, yleisen kielen ajonaika ja kehityskehykset (kuten WPF, XAML ja ASP.NET).

C #: ta suosivat suuret pelaajat blockchainissa muutamista syistä:

  • Sen syntaksia on helppo ymmärtää suurelle joukolle kehittäjiä, jotka tuntevat jo C ++: n (4,4 miljoonaa kehitystä).

  • Se on avoimen lähdekoodin.

  • Sen avulla voidaan kirjoittaa kannettava koodi mobiililaitteille.

  • Se on edullinen BizSpark-ohjelman ansiosta.

Tunnetuimpia startup-yrityksiä, jotka perustavat koodinsa C #: lle, ovat NEO ja Stratis. Lisäksi C #: lla on oma Bitcoin-kehys (NBitcoin). Microsoft ei ole jäljessä ja esittelee vNext-lohkoketjun Azure-alustalleen.

Plussat: olio-suuntautunut, voimakkaasti kirjoitettu, dynaaminen koodituki

Miinukset: heikko Linux-tuki

Sopii parhaiten: infrastruktuurin estoketjujen rakentamiseen, Windows-käyttäjille

JavaScript

Tämä on ehkä ylivoimaisesti tunnetuin ohjelmointikieli maailmassa. Päivittäin selaamasi verkkosivut käyttävät javascriptiä tyylikkään ulkonäön ja edistyneiden toimintojen saavuttamiseksi. Vuonna 2007 Jeff Atwood loi lain:

“Kaikki sovellukset, jotka voidaan kirjoittaa JavaScriptillä, kirjoitetaan lopulta JavaScript-tiedostoilla.”

JavaScript on OOP-kieli, joka on helppo oppia samalla kun se on melko monipuolinen. JS: n avulla kehittäjät pystyvät koodaamaan asiakkaita & palvelimet, IoT-laitteet ja koneoppiminen. Yksi JavaScriptin tärkeimmistä eduista lohkoketjussa on tapahtumien suorittaminen asynkronisesti, mikä tarkoittaa, että se antaa solmujen kommunikoida vapaasti ja tehokkaasti. JS: n toinen vahvuus on, että se ei vaadi kokoamista. Samaan aikaan yksinkertaisuus maksaa. Kaikista ominaisuuksista huolimatta JS on kaukana C ++: sta, mutta se on hieno kieli aloittelijoille.

JavaScript ei ollut kovin suosittu blockchain-kehittäjien keskuudessa vasta ICO: n puhkeamisen yhteydessä vuonna 2017. Tällä hetkellä CoinMarketCapissa on useita korkealle sijoittuneita startup-yrityksiä, jotka perustuvat tähän kieleen, kuten Lisk, Ark ja Nimiq. Yksi Ethereumin merkittävimmistä kilpailijoista, Tron, tukee myös JavaScriptiä.

Plussat: Objektikeskeinen, prototyyppipohjainen, tukee toiminnallista ohjelmointia

Miinukset: Dynaaminen, heikosti kirjoitettu

Sopii parhaiten: Syötä lohkoketjutila, rakentaa dApps

Python

Python luotiin minimalistisella tavalla. Siksi tämä kieli on erittäin helppo oppia ja on hyvä lähtökohta aloittelijoille. Se perustettiin vuonna 1991, ja se on palvellut lukuisia tarkoituksia, kuten sovelluskehitystä, verkkopalvelimien kehitystä, esineiden internetia ja muita. Sitä ei ehkä ole vielä tunnustettu JS: ksi, mutta se saa varmasti enemmän buzzia tekniikan maailmassa.

Python on OOP-kieli. On ilo koodata ja se on universaali. Yksinkertaisen lohkoketjun koodaamiseen tarvitset enintään 50 riviä. Kun koodi on kirjoitettu, se voidaan ajaa useilla laitteilla, joihin on asennettu eri käyttöjärjestelmä. On myös valtava kirjastokehys, kuten Tensorflow ja Django, vaikka niiden dokumentaatio voi olla joissakin tapauksissa puutteellinen. Tämän lisäksi tällä hetkellä on olemassa erityisiä kirjastoja, jotka on omistettu blockchain-kehitykselle. Kuten JavaScript, Python ei vaadi kääntämistä, mutta se voidaan kääntää kuten C # ja C ++. Yhdistä se sen mukana toimitettuun testausympäristöön ja saat sveitsiläisen armeijan veitsen blockchain-matkallesi.

Alan supertähdet ovat tunnustaneet Pythonin. IBM Hyperledger otti sen käyttöön Sawtoothissa ja Ethereum on luonut oman iteraation tällä kielellä: Pyethereum.

Plussat: Erittäin helppo oppia, valmiit kirjastot ja kehykset, tehokas

Miinukset: Käytetään enimmäkseen palvelinkielenä, ei niin älykkäässä kontekstissa

Sopii parhaiten: dApps: n rakentaminen aloittelijoille

Mennä

Golang (tai Go) on avoimen lähdekoodin kieli, joka on peräisin kielestä C.Se on hyvin nuori kieli, jonka Google-kehittäjät lanseeraivat vuonna 2007. Mene syntaksin käyttöönotto on enemmän Python-tyyppistä – tehokkuuden tarjoaminen ja sen avulla tehtyjen projektien tekeminen tulevaisuuteen on yksinkertaista.

Go: n vahvat puolet blockchain-ohjelmoinnissa ovat modulaarisen ohjelmoinnin saatavuus, joka tekee kehitysprosessista joustavan, kätevät testaustyökalut ja valtavan määrän kirjaston toimintoja. Se olisi houkuttelevin pilvipalvelujen kehittäjille, koska hajautetut laskelmat ovat tämän kielen suhteen hyvin yksinkertaisia. Vaikka tämä kieli vaatii kääntämistä, se on hyvä tekijä turvallisuuden kannalta, koska kaikki virheet näytetään koodin kirjoittavalle henkilölle ennen sen julkaisua. Lisäksi rinnakkainen ohjelmointi yhdessä Goroutinesin kanssa lisää koodin ja sovellusten suorituskykyä. Tämä on ratkaisevan tärkeää skaalautuvuuden kannalta, joka on tuskallinen kohta blockchain-tilassa tänään. Lopuksi Go toimii käyttöjärjestelmän kanssa, ei sen päällä. Tämä eliminoi ylimääräisen vaiheen EVM: ien luomisessa, mikä lisää nopeutta.

Go on blockchain-alalla tunnettu kieli. Harkitse IBM Hyperledgeriä, jota käytetään Golangilla älykkäiden sopimusten koodaamiseen Kangassa. Docker ei ole blockchain-käynnistys, mutta se toimii hajautettujen järjestelmien kanssa ja on rakennettu Go: n kanssa.

Plussat: Muistin turvallisuus, roskien keräys, voimakkaasti kirjoitettu

Miinukset: Ei niin helppo oppia, suhteellisen pieni yhteisö, pieni määrä paketteja

Sopii parhaiten: pilvi dApps: n rakentamiseen

Vakavuus

Vakavuus on nuori, kuten Golang. Sen julkaisi vuonna 2014 Christian Reitwiessner ja hänen tiiminsä. Se on kieli, joka on luotu kirjoittamaan älykkäitä sopimuksia Ethereumiin, minkä vuoksi se on suosituin Ethereumin ekosysteemissä. On syytä huomata, että ekosysteemi on kasvanut satoja kertoja viimeisten kahden vuoden aikana markkinoiden tulvien eri startupien vuoksi. Tämän seurauksena Solidityllä on laaja käyttäjäkanta. Sen standardista (ERC20) on tullut alan katkottua osa.

Vakavuus on OOP ja kontaktiin suuntautunut kieli. Se on myös Turingin täydellinen, mikä tarkoittaa, että se voi tulkita erilaisia ​​tietojen manipulointisääntöjä. Vakauden syntaksi muistuttaa JavaScriptiä, mutta C: n kanssa on joitain yhtäläisyyksiä++ & Python samoin. Varhaisesta vaiheestaan ​​huolimatta Solidity on toimiva kieli, se tarjoaa perinnön, erilaisia ​​kirjastoja jne. Nuoruuden haittana on dokumentaatioon liittyvät kysymykset, jotka voivat jättää joitain kehittäjiä vaikeuksiin.

Tällä hetkellä vakavuuden tärkeimmät käyttötapaukset ovat EVM ja älykkäät sopimukset. Se ei ole paljon, mutta ne ovat erittäin tärkeitä ja lohkoketjukohtaisia ​​niin paljon kuin se voisi olla. Jos haluat rakentaa dApp: n, Solidity on sinun valinta.

Plussat: Staattisesti kirjoitettu, helppo oppia, trendikäs

Miinukset: Not universal, haavoittuva

Sopii parhaiten: Älykkäiden sopimusten kehittäminen

Lohkoketjun koodauksen perusteet

Nyt kun olemme tarkastelleet lohkoketjun suosituimpia ohjelmointikieliä, on aika päästä käsistä todellisen koodauksen avulla. Katsotaanpa, kuinka perustoiminnot suoritetaan eri ohjelmointikielien kautta.

Ennen kuin aloitamme, on hyvä tarkentaa tietämystämme siitä, mikä blockchain on. Lohkoketju on hajautettu pääkirja, jossa tapahtumia syötetään lohkoketjuun. Lohko on tapahtumarekisterien paikkamerkki. Jokaisella uudella lohkolla on osoitin edelliseen hash-funktion muodossa. Kun lohko on täynnä, hash muodostetaan käyttämällä kaikkia sen tapahtumia ja liitetään siihen. On myös aikaleimapalvelin, joka estää kaksinkertaisen kulutuksen, ja yksimielisyysmekanismi, jonka avulla solmut voivat sopia kirjanpidon oikeasta versiosta.

Aika panna teoria käytäntöön. Tämän tarkoituksena ei ole rakentaa täydellistä sovellusta, vaan näyttää, miltä prosessi näyttää.

  1. C++

    Jokaisella siellä olevalla lohkoketjulla on kovakoodattu alkulohko, jota kutsutaan geneesilohkoksi. Luodaan yksi.

    C ++ -geneesilohkoKuva: Utoday

    Nyt voimme luoda toisen lohkon. Tätä varten kirjoitamme getLatestBlock ().

    C ++ lisää lohkotKuva: Utoday

C ++ -konsensusKuva: Utoday

Konsensusmekanismi on yksinkertainen ”for” -silmukkafunktio, joka kulkee kaikkien lohkojen yli, alkaen 1: stä, koska 0-geneesilohkoa ei tarvitse tarkistaa.

  1. C #

    C #: n lohkoketjun tietorakenne on melko yksinkertainen. Siinä on Block & Blockchain-luokat. Täällä he ovat.

    C # -lohkoKuva: UtodayC # -lohkoketjuKuva: Utoday

    Jos visualisoimme rakenteen, se näyttää tältä:

C # blockchain -rakenneKuva käyttäjältä https://www.c-sharpcorner.com/

Näin lisätään uudet lohkot:

C # lisää lohkojaKuva: Utoday

Jotta blockchain pääsisi yksimielisyyteen, esim. vahvistaaksesi sen, tarvitsemme vain 2 koodiriviä yhdessä IsValid-menetelmän kanssa, joka tarkistaa kunkin lohkon tiedot ja vertaa hajautuksia.

C # yksimielisyysKuva: Utoday

  1. JavaScript

    Nyt saavutamme helpommin käytettävissä olevien kielten alueet. Tämän pitäisi olla hauskempaa, jos sinulla ei ole koodausta. Lohkoketjun luomiseksi tarvitsemme ajonaikaisen ympäristön, kuten Node.js. Jokaisella lisälohkolla on seuraavat tiedot: hakemisto, luomisen aika, sekalaiset (kuten lähettäjä & vastaanottajan osoitteet ja siirretty summa), edellisen lohkon hash, oma hash. Kun se on valmis, on aika siirtyä geneesi-lohkon kovaan koodaukseen:

    JavaScript-geneesi estääKuva: Utoday

    Kun olemme saaneet geneesilohkon, lisätään nyt lohkot uusilla tiedoilla nextBlock-toiminnon kautta. Tämä toiminto käy automaattisesti läpi kaikki 5 tietotyyppiä ja sisällyttää ne jokaiseen uuteen lohkoon.

    JavaScript-luomislohkoKuva: Utoday

JavaScript lisää lohkotKuva: Utoday

  1. Python

    Tällä kertaa aloitamme ymmärtämällä, miten tapahtuma Pythonissa näyttää. Se on yksinkertainen aikaleimattu viesti, johon on liitetty joitain tietoja.

    Python-tapahtumaKuva: Utoday

    Nämä liiketoimet pääsevät lohkoihin. Esittelyssä tämä luokka.

Python-lohkoKuva: Utoday

Käytämme SHA-256: ta, jota käytetään Bitcoinissa hajautusten luomiseen estoketjumme eheyden vahvistamiseksi.

Python-hajautusKuva: Utoday

Nyt voimme lisätä lohkot, mutta esitellään ensin Proof-of-Work -algoritmi, joka varmistaa, että lohkoketjussa olevat tiedot eivät vioittuneet.

Python PoWKuva: Utoday

Kun se on tehty, olemme valmiita aloittamaan lohkoketjun.

  1. Mennä

    Aloitamme määrittelemällä lohkojemme ominaisuudet. BPM on mielivaltaista dataa, kuten verkkotapahtumat, osoitteet jne.

    Golang-lohkoKuva: Utoday

    Lohkojen luomiseksi meidän on hajautettava niihin tietoja ja ketjutettava vastaavilla tuloksilla. Go-lohkon tietojen hajauttamisen koodi näyttää tältä:

    Lopuksi voimme aloittaa uusien lohkojen luomisen käyttämällä generaattorin estotoimintoa. Aika kirjoittaa konsensus, jota edustaa isBlockValid-funktio.

    Kun kaikki asiat on asetettu, olemme valmiita käynnistämään lohkotuotantoprosessin. Huomaa, että tässä vaiheessa lohkoketju vaatii palvelimen toimiakseen, joten on joitain ylimääräisiä koodibittejä, jotka heijastavat tätä.

    Golang-hajautusKuva: Utoday

  2. Vakavuus

    Älykkäiden sopimusten rakentaminen eroaa juuri tarkistamastamme, mutta se on silti yksinkertaista. Ensinnäkin meidän on luotava sopimus ja nimettävä se. Tämä sopimus on henkilön tahtoa. Jos ne kuolevat, varat on jaettava automaattisesti tiettyihin osoitteisiin.

    VakavaraisuussopimusKuva: Utoday

    Tässä määritetään omistajan Ethereum-osoite (omistaja), jakelulle jäljellä oleva määrä (yksikkö) ja ehdollinen muuttuja omistajan tilalle (Bool). Seuraava vaihe on lisätä muokkaajia, jotka laajentavat ehdollista logiikkaa tarjoamaan toiminnon omistajan tilalla.

    Kun tämä on tehty, voimme hahmotella osoitteet, jotka saavat perinnön. Sitten jatkamme varojen jakamisen määrittämistä, jos isDeceased = true. Huomaa, että tässä vaiheessa voimme piilottaa toiminnon yleisöltä asettamalla ‘yksityinen’ maksutoiminnon viereen. Voila, koodi voidaan nyt ottaa käyttöön.

    Vakavuuden muokkaajatKuva: Utoday

Yhteenveto

Yhteenvetona voidaan todeta, että lopullista lohkoketjuun keskittyvää ohjelmointikieltä ei ole. Itse lohkoketju on lapsenkengissään, ja siellä on tutkimattomia horisontteja ja vaiheita. Kuten monilla muillakin aloilla, paras mahdollinen tapa liikkua itsevarmasti on tulla täyden pinon kehittäjäksi, mikä voi olla vaikea tehtävä, kun otetaan huomioon, kuinka paljon tietoa sinulla on oltava. Onneksi monilla ohjelmointikielillä on yhtäläisyyksiä syntaksissa ja rakenteessa siirtymisen helpottamiseksi.

Jos sinun on valittava yksi kieli, sinun on otettava huomioon asiayhteys. Jos haluat keskittyä infrastruktuurihankkeiden rakentamiseen, C ++ ja C # sopivat sinulle paremmin. Jos olet kiinnostunut sovellusten kehittämisestä nykyisten lohkoketjujen lisäksi, JavaScript, Python ja Go ovat hyviä vaihtoehtoja harkita. Jos haluat vain käynnistää oman ERC20-tunnuksen, Solidity kattaa epäilemättä tarpeesi.

Sinun tulisi myös pitää mielessä, että estoketjut ovat kieli-agnostisia. Kun uudet kielet, kuten Yksinkertaisuus, ovat tulossa peliin ja nykyiset kielet, kuten SQL, on integroitu, niiden väliset rajat hämärtyvät. Muista, että kieli on vain työkalu, ja voit käyttää sitä vapaasti mihin tahansa tarkoitukseen. Paras neuvomme olisi, että jos olet jo perehtynyt joihinkin kieliin, jatka niiden hallintaa – pystyt ehdottomasti luomaan niiden kanssa lohkoketjuja. Jos olet vasta aloittamassa, yritä etsiä helpoin lähtökohta – katso enemmän kohti JavaScriptiä ja vakautta.