Blockchain programiranje: Koliko programskih jezikov potrebujete za Blockchain?

Ko se človeštvo premika k digitalizaciji vsega, postane osnovno kodiranje nujno tudi za povprečnega človeka, ki ni navdušen nad tehnologijo. Ta zahteva je še bolj očitna, ko gre za blockchain sfero. Če resnično iščemo resnično decentralizacijo, bi moral vsak od nas razumeti, kako stvari delujejo vsaj na osnovni ravni. Ne glede na to, ali ste izkušen inženir programske opreme ali povprečen Joe, morate najprej izbrati programski jezik, preden se naučite, kako deluje blockchain.

Za novo, ropotajočo tehnologijo, ki se hitro razvija, je naloga izbiranja programski jezik je lahko zastrašujoče. Na voljo jih je veliko, različna zagonska podjetja in odprtokodne skupnosti pa so za izdelavo svojih izdelkov izbrale različne jezike, saj se njihov fokus in nabor želenih funkcij razlikuje. V tem trenutku ni standarda; vaša izbira bi v veliki meri prišla do vaših osebnih meril in vrste aplikacij, po katerih hrepenite graditi.

V tem članku bomo pregledali najbolj priljubljene programske jezike, ki se uporabljajo pri razvoju verige blokov, da vam bomo pomagali pri izbiri najprimernejše možnosti. Ne odlašavajmo več in pojdimo globoko v zajčjo luknjo!

Najbolj priljubljeni programski jeziki v verigi blokov

Najprej in predvsem moramo razumeti, kateri od programskih jezikov se najpogosteje uporablja pri pisanju kode v verigo blokov. Na tem seznamu boste verjetno videli nekaj znanih imen.

C++

Za začetek pregleda jezikov za blockchain programiranje si moramo ogledati njihovega dedka – C ++. Ta jezik je leta 1985 izdal Bjarne Stroustrup, da bi bil original C bolj prilagodljiv. Več kot tri desetletja pozneje je bil uporabljen za gradnjo Bitcoinov.

Za razliko od prvotnega C, ki je procesno usmerjen, je C ++ objektno usmerjen. Zaradi tega pristopa je C ++ časovno učinkovitejši pri pisanju kode. Podatki so skupaj s funkcijami shranjeni v tako imenovanih predmetih, ki jih je mogoče kasneje znova uporabiti v drugih programih.

Zaradi svoje zrelosti ni presenetljivo, da je C ++ v smislu razvoja verige blokov dokaj robusten. Ta jezik ima nadzor pomnilnika, ki zagotavlja hitrost z učinkovitim upravljanjem procesorja, navojem, ki omogoča hkratno izvajanje vzporednih / ne-vzporednih nalog, prikladno premikanje semantike za kopiranje podatkov, polimorfizem časa prevajanja za boljše delovanje z delitvijo odgovornosti in izolacijo kode za ločevanje podatkovnih struktur . Poleg tega njegovo uporabniško bazo sestavlja več kot štiri milijone razvijalcev.

Ena glavnih pomanjkljivosti C ++ za razvijalce verig blokov je, da ni pripravljen za pametno pogodbo. To ne pomeni, da na C ++ ni mogoče kodirati pametne pogodbe, to pomeni, da je treba izvesti nekatere spremembe. To je razlog, zakaj so se začeli pojavljati jeziki, značilni za blockchain.

Prednosti: neodvisna in večplatformna, hitra, podobna C

Proti: precej težko obvladljivo, zapleteno in včasih težko odpraviti napake, brez odvoza smeti

Najbolj primeren za: napredne uporabnike, ki razumejo načela Bitcoina

C #

C # je mlajši od C ++, vendar je tudi precej star. Ustvarjen je bil konec 90-ih v Microsoftu in je hitro pridobil oprijem v skupnosti razvijalcev. To je jezik OOP (ciljno usmerjeno programiranje), ki ponuja odlične funkcije za poslovne programe, oblak in razvoj med platformami. Ta jezik je v veliki meri podprt s strani Microsofta in je priročno orodje tako za profesionalce kot za kodiranje programov.

C # ni samo prilagodljiv in enostaven za razumevanje, če poznate C ++ ali Javo, temveč je opremljen tudi s funkcijami. Poleg nekaterih funkcij C ++ C # ponuja tudi ogrodje .NET & knjižnica razredov, izvajalno okolje skupnega jezika in razvojni okviri (kot so WPF, XAML in ASP.NET).

C # je naklonjen velikim igralcem v blockchainu iz nekaj razlogov:

  • Njegovo sintakso je enostavno razumeti za velike dele razvijalcev, ki že poznajo C ++ (4,4 milijona razvijalcev).

  • Je odprtokodna.

  • Omogoča pisanje prenosne kode za mobilne naprave.

  • Zaradi programa BizSpark je cenovno ugoden.

Med najvidnejšimi zagonskimi podjetji, ki svojo kodo temeljijo na C #, sta NEO in Stratis. Poleg tega ima C # namenski Bitcoin okvir (NBitcoin). Microsoft ne zaostaja in za svojo platformo Azure uvaja verigo blokov vNext.

Prednosti: objektno usmerjena, močno tipkana, podpora za dinamično kodo

Proti: šibka podpora za Linux

Najbolj primeren za: gradnjo infrastrukturnih verig, uporabnike sistema Windows

JavaScript

To je morda daleč najbolj priznan programski jezik na svetu. Spletne strani, po katerih se dnevno premikate, uporabljajo javascript za čudovit videz in napredno funkcionalnost. Leta 2007 je Jeff Atwood skoval zakon:

“Vsaka aplikacija, ki jo je mogoče napisati v JavaScript, bo sčasoma napisana v JavaScript.”

JavaScript je jezik OOP, ki se ga je enostavno naučiti, hkrati pa je vsestranski. Z uporabo JS lahko razvijalci kodirajo za stranke & strežniki, naprave IoT in strojno učenje. Ena glavnih prednosti JavaScripta v smislu verige blokov je značilnost izvajanja dogodkov asinhrono, kar pomeni, da vozliščem omogoča prosto in učinkovito komunikacijo. Druga prednost JS je, da ne zahteva prevajanja. Hkrati pa preprostost stane. Kljub vsem svojim lastnostim je JS daleč od C ++, vendar je odličen jezik za začetnike.

JavaScript med razvijalci verig blokov ni bil zelo priljubljen do izbruha ICO leta 2017. Trenutno na CoinMarketCap obstaja več zagonskih podjetij z visokim uvrstitvijo, ki temeljijo na tem jeziku, na primer Lisk, Ark in Nimiq. Eden najpomembnejših konkurentov Ethereuma, Tron, podpira tudi JavaScript.

Prednosti: Objektno usmerjeno, na prototipu podprto funkcionalno programiranje

Proti: dinamičen, šibko vtipkan

Najbolj primerno za: vstop v prostor verige blokov, sestavljanje dApps

Python

Python je bil ustvarjen v minimalistični maniri. Zato se je tega jezika zelo enostavno naučiti in je odlična vstopna točka za začetnike. Ustanovljen je bil leta 1991 in je služil številnim namenom, kot so razvoj aplikacij, razvoj omrežnih strežnikov, IoT in drugi. Morda še ni tako priznan kot JS, vsekakor pa se v svetu tehnologije še bolj oglaša.

Python je jezik OOP. Kodiranje je veselje in je univerzalno. Za kodiranje preproste verige blokov ne potrebujete več kot 50 vrstic. Ko je koda napisana, jo lahko zaženete v več napravah z nameščenim različnim OS. Obstaja tudi ogromna knjižnica okvirov, kot sta Tensorflow in Django, čeprav je njihova dokumentacija v nekaterih primerih morda nepopolna. Poleg tega trenutno obstajajo posebne knjižnice, namenjene razvoju verige blokov. Tako kot JavaScript tudi Python ne zahteva prevajanja, čeprav ga je mogoče prevajati kot C # in C ++. Združite ga z namenskim testnim okoljem, ki je priloženo, in dobili boste švicarski vojaški nož za svoje blockchain potovanje.

Python so prepoznale superzvezde v panogi. IBM Hyperledger ga je implementiral v Sawtooth, Ethereum pa je ustvaril svojo lastno ponovitev tega jezika: Pyethereum.

Pros: Zelo enostaven za učenje, vnaprej izdelane knjižnice in okviri, učinkovit

Proti: Večinoma se uporablja kot strežniški jezik, ne tako pameten kontekst

Najbolj primerno za: Izdelava dApps za začetnike

Pojdi

Golang (ali Go) je odprtokodni jezik, ki izhaja iz C. To je zelo mlad jezik, ki so ga leta 2007 uvedli Googlovi razvijalci. Go implementacija sintakse je bolj podobna Pythonu – preprosto je zagotoviti učinkovitost in narediti projekte, izdelane z njo, za prihodnost.

Go-jeve močne strani programiranja blockchain vključujejo razpoložljivost modularnega programiranja, ki omogoča razvojni postopek prilagodljiv, priročna orodja za testiranje in ogromno knjižnico funkcij. Za razvijalce računalništva v oblaku bi bilo najbolj privlačno, saj so porazdeljeni izračuni v tem jeziku zelo preprosti. Čeprav ta jezik zahteva prevajanje, je to dober dejavnik za varnost, saj bodo vse napake prikazane osebi, ki piše kodo, še preden se zažene. Poleg tega vzporedno programiranje skupaj z Goroutines povečuje učinkovitost prenosa kode in aplikacij. To je ključnega pomena za razširljivost, ki je danes boleča točka v blockchain prostoru. Nazadnje, Go deluje z operacijskim sistemom, ne na vrhu. To odpravlja dodaten korak pri ustvarjanju EVM-jev in s tem povečuje hitrost.

Go je dobro znan jezik na področju verige blokov. Razmislite o IBM Hyperledger, ki se uporablja Golang za kodiranje pametnih pogodb na svoji tkanini. Docker ni zagon blockchain-a, vendar deluje s porazdeljenimi sistemi in je zgrajen z Go.

Prednosti: Varnost pomnilnika, zbiranje smeti, močno vneseno

Proti: Ni tako enostavno učiti se, razmeroma majhna skupnost, majhno število paketov

Najbolj primerno za: Izdelava oblaka dApps

Trdnost

Solidnost je mlada, kot Golang. Leta 2014 ga je izdal Christian Reitwiessner in njegova ekipa. To je jezik, ki je bil ustvarjen za pisanje pametnih pogodb o Ethereumu, zato je najbolj priljubljen v ekosistemu Ethereum. Omeniti velja, da je ekosistem v zadnjih dveh letih zrasel na stotine krat zaradi različnih startupov, ki so preplavili trg. Posledično ima Solidity veliko uporabniško bazo. Njegov standard (ERC20) je postal osnovni izdelek za industrijo.

Solidity je OOP in kontaktno usmerjen jezik. Prav tako je Turing popoln, kar pomeni, da zna razlagati različna pravila za obdelavo podatkov. Sintaksa Solidity je podobna sintaksi JavaScript, vendar je nekaj podobnosti s C++ & Python prav tako. Kljub zgodnji fazi je Solidity funkcionalen jezik, ponuja dedovanje, različne knjižnice itd. Na spodnji strani mladosti so težave z dokumentacijo, ki lahko nekatere razvijalce pustijo v stiski..

Trenutno so glavni primeri uporabe Solidity EVM in pametne pogodbe. Ni veliko, toda te so izredno pomembne in specifične za blockchain, kolikor bi lahko bile. Če želite zgraditi dApp, je Solidity vaša izbira.

Prednosti: Statično natipkan, enostaven za učenje, v trendu

Proti: Ni univerzalno, ranljivo

Najbolj primerno za: Razvoj pametnih pogodb

Osnove kodiranja na verigi blokov

Zdaj, ko smo pregledali najbolj priljubljene programske jezike v verigi blokov, je čas, da se umaknemo dejanskemu kodiranju. Poglejmo, kako se osnovne operacije izvajajo v smislu prek različnih programskih jezikov.

Preden začnemo, je dobro, da izpopolnimo svoje znanje o tem, kaj je veriga blokov. Blockchain je porazdeljena knjiga z vnosom transakcij v verigi blokov. Blok je ograda za zapise transakcij. Vsak nov blok ima kazalec na prejšnjega v obliki zgoščevalne funkcije. Ko je blok poln, se z uporabo vseh njegovih transakcij ustvari zgoščena oznaka, ki je pritrjena nanjo. Obstaja tudi strežnik za časovni žig, ki preprečuje dvojno porabo, in mehanizem soglasja, ki vozliščem omogoča, da se dogovorijo o pravilni različici knjige.

Čas je, da teorijo uporabimo v praksi. Namen tega ni izdelati popolne aplikacije, temveč pokazati, kako je postopek videti.

  1. C++

    Vsak blockchain tam zunaj ima trdo kodiran začetni blok, imenovan genesis block. Ustvarimo enega.

    Blok geneze C ++Slika Utoday

    Zdaj lahko ustvarimo še en blok. Da bi to storili, vtipkamo getLatestBlock ().

    C ++ dodajanje blokovSlika Utoday

Konsenz C ++Slika Utoday

Mehanizem soglasja je preprosta funkcija zanke, ki deluje preko vseh blokov, začenši z 1, ker ni potrebe po reviziji bloka 0 geneze.

  1. C #

    Struktura podatkov za verigo blokov na C # je precej enostavna. Ima Block & Blockchain razredi. Tukaj so.

    Blok C #Slika UtodayBlok veriga C #Slika Utoday

    Če vizualiziramo strukturo, je videti tako:

Struktura blokovne verige C #Slika od https://www.c-sharpcorner.com/

Tukaj dodamo nove bloke:

C # dodaj blokeSlika Utoday

Da bi naš blockchain dosegel konsenz, npr. potrdimo, potrebujemo le dve vrstici kode skupaj z metodo IsValid, ki bo preverila podatke v vsakem od blokov in primerjala razpršitve.

Konsenz C #Slika Utoday

  1. JavaScript

    Zdaj dosegamo ozemlja dostopnejših jezikov, to bi moralo biti bolj zabavno, če nimate izkušenj s kodiranjem. Za ustvarjanje verige blokov potrebujemo izvajalno okolje, kot je Node.js. Vsak od dodatnih blokov bo imel naslednje podatke: indeks, čas ustvarjanja, razno (na primer pošiljatelj & naslovi prejemnika in preneseni znesek), zgoščevanje prejšnjega bloka, lastno razpršitev. Ko končate, je čas, da preidete na trdo kodiranje geneze:

    JavaScript geneza blokSlika Utoday

    Ko smo dobili blok geneze, bomo zdaj dodali bloke z novimi podatki prek funkcije nextBlock. Ta funkcija bo samodejno prebrala vseh 5 vrst podatkov in jih vključila v vsak nov blok.

    JavaScript ustvari blokSlika Utoday

JavaScript doda blokeSlika Utoday

  1. Python

    Tokrat bomo začeli z razumevanjem, kako izgleda transakcija v Pythonu. To je preprosta objava z oznako s priloženimi podatki.

    Python transakcijaSlika Utoday

    Te transakcije bodo prišle v bloke. Uvedimo ta razred.

Python blokSlika Utoday

Uporabili bomo SHA-256, ki se uporablja v Bitcoinu, za ustvarjanje zgoščenih podatkov za preverjanje celovitosti našega verige blokov.

Python hashSlika Utoday

Zdaj lahko dodajamo bloke, najprej pa uvedimo algoritem Proof-of-Work, ki zagotavlja, da podatki v verigi blokov niso bili poškodovani.

Python PoWSlika Utoday

Po tem smo jasno začeli z verigo blokov.

  1. Pojdi

    Začeli bomo z opredelitvijo lastnosti naših blokov. BPM so poljubni podatki, kot so omrežne transakcije, naslovi itd.

    Blok GolangSlika Utoday

    Za ustvarjanje blokov moramo v njih razpršiti podatke in jih povezati z ustreznimi rezultati. Koda za razprševanje podatkov znotraj bloka v Go je videti takole:

    Končno lahko začnemo ustvarjati nove bloke s funkcijo generirati blok. Čas za pisanje konsenza, ki ga predstavlja funkcija isBlockValid.

    Ko smo vse postavili, smo pripravljeni zagnati postopek izdelave blokov. Upoštevajte, da bo na tej točki blockchain potreboval strežnik, na katerem bo deloval, zato obstaja nekaj dodatnih bitov kode, ki odražajo to.

    Golang hashSlika Utoday

  2. Trdnost

    Sestavljanje pametnih pogodb se razlikuje od tega, kar smo pravkar pregledali, vendar je vseeno preprosto. Najprej moramo ustvariti pogodbo in jo poimenovati. Ta pogodba je namenjena človekovi volji. V primeru, da umrejo, se sredstva samodejno razporedijo na določene naslove.

    Solidarna pogodbaSlika Utoday

    Tu določimo lastnikov naslov Ethereum (lastnik), znesek, ki ostane za distribucijo (enota), in pogojno spremenljivko za državo lastnika (bool). Naslednji korak je dodati modifikatorje, ki razširjajo pogojno logiko, da zagotovijo funkcijo s stanjem lastnika.

    Ko to storimo, lahko začrtamo naslove, ki bodo prejeli dediščino. Nato še naprej določamo razporeditev sredstev v primeru, da je isDeceased = true. Upoštevajte, da lahko na tej stopnji funkcijo skrijemo pred javnostjo, tako da poleg funkcije »izplačila« postavimo »zasebno«. Voila, kodo je zdaj mogoče namestiti.

    Modifikatorji trdnostiSlika Utoday

Povzetek

Če povzamemo, ne obstaja končni programski jezik, osredotočen na verigo blokov. Sama veriga blokov je v povojih, obstajajo neraziskana obzorja in neizhodišča. Kot na mnogih drugih področjih je najboljši možen način samozavestnega premikanja, če postanete razvijalec celotnega sklada, kar je morda težka naloga, glede na to, koliko znanja boste morali imeti. Na srečo so številni programski jeziki podobni skladnji in strukturi, da olajšajo prehod.

Če morate izbrati en jezik, morate upoštevati kontekst. Če se želite osredotočiti na gradbene infrastrukturne projekte, vam bosta C ++ in C # bolj ustrezala. Če ste bolj navdušeni nad razvojem aplikacij poleg obstoječih verig blokov, so dobre možnosti za razmislek JavaScript, Python in Go. Če želite samo zagnati svoj žeton ERC20, bo Solidity nedvomno pokrival vaše potrebe.

Upoštevati morate tudi, da verige blokov niso jezikovno agnostične. Z novimi jeziki, kot je preprostost, in vključevanjem obstoječih, kot je SQL, bodo meje med njimi vedno bolj zamegljene. Ne pozabite, da je jezik le orodje in ga lahko uporabljate za kakršen koli namen. Naš najboljši nasvet bi bil, da če nekatere jezike že poznate, jih obdržite še naprej – z njimi boste zagotovo lahko ustvarili verige blokov. Če šele začenjate, poskusite poiskati najlažjo vstopno točko – bolj bodite pozorni na JavaScript in Solidnost.