Blockchain programozás: Hány programozási nyelvre van szüksége a Blockchain számára?

Ahogy az emberiség minden digitalizálása felé halad, az alapvető kódolás még az átlagember számára is elengedhetetlenné válik, aki nem rajong a technikáért. Ez a követelmény még nyilvánvalóbb, ha a blockchain szféráról van szó. Ha valóban az igazi decentralizációra törekszünk, akkor mindegyikünknek meg kell értenie, hogy a dolgok működnek legalább elemi szinten. Akár tapasztalt szoftvermérnök, akár átlagos Joe vagy, az első dolog, amit meg kell tenned, mielőtt megtanulnád a blockchain működését, hogy programozási nyelvet választasz.

Egy rohanó ütemben fejlődő új, dübörgő technológia esetében az a programozási nyelv ijesztő lehet. Rengeteg közülük elérhető, és a különféle startupok és a nyílt forráskódú közösségek különböző nyelveket választottak termékeik építéséhez, mivel fókuszuk és a kívánt funkciók halmaza eltérő. Nincs szabvány és ebben az időpontban; a választás nagyjából megfelelne a személyes kritériumoknak és annak, hogy milyen típusú alkalmazásokra vágyik.

Ebben a cikkben áttekintjük a blockchain fejlesztés során használt legnépszerűbb programozási nyelveket, amelyek segítenek a legmegfelelőbb opció kiválasztásában. Ne halogassuk tovább és menjünk mélyen a nyúl lyukába!

A legnépszerűbb programozási nyelvek a blokkláncban

Először is meg kell értenünk, hogy mely programozási nyelveket használják a legjobban, amikor a blokkláncba kell írni kódot. Valószínűleg láthat néhány ismerős nevet ezen a listán.

C++

A blockchain programozás nyelvének áttekintéséhez el kell néznünk nagyapjukat – C ++. Ezt a nyelvet 1985-ben Bjarne Stroustrup adta ki, hogy az eredeti C-t rugalmasabbá tegye. Több mint három évtizeddel később a Bitcoin felépítésére használták fel.

Az eredeti C-vel ellentétben, amely folyamatorientált, a C ++ objektum-orientált. Ezzel a megközelítéssel a C ++ időhatékonyabbá válik a kódírás során. Az adatokat a függvényekkel együtt úgynevezett objektumokban tárolják, amelyeket később más programokban is felhasználhatnak.

Érettsége miatt nem meglepő, hogy a blockchain fejlesztését tekintve a featurewise C ++ meglehetősen robusztus. Ez a nyelv rendelkezik memória-vezérléssel, amely biztosítja a sebességet a hatékony CPU-kezeléssel, a szálak segítségével, amelyek párhuzamos / nem párhuzamos feladatokat futtatnak egyszerre, szemantikát mozgatnak az adatok kényelmes másolásához, fordítási idejű polimorfizmust a jobb teljesítmény érdekében a felelősségek megosztása révén, és kódszigetelést az adatstruktúrák szétválasztásához . Ezen felül felhasználói bázisa több mint négymillió fejlesztőből áll.

A C ++ egyik fő hátránya a blockchain fejlesztők számára az, hogy nem kész az intelligens szerződés. Ez nem azt jelenti, hogy nem lehet intelligens szerződést kódolni a C ++ rendszeren, hanem azt, hogy néhány módosítást végre kell hajtani. Ez az oka annak, hogy a blokklánc-specifikus nyelvek elkezdtek felbukkanni.

Előnyök: független és többplatformos, nagy sebességű, hasonló a C-hez

Hátrányok: meglehetősen nehéz elsajátítani, összetett és néha nehéz hibakeresni, nincs szemétszállítás

A legalkalmasabb: haladó felhasználók számára, a Bitcoin alapelveinek megértése

C #

A C # fiatalabb, mint a C ++, de elég régi is. A ’90 -es évek végén, a Microsofton belül létrehozva gyorsan tapadást keltett a fejlesztői közösségben. Ez egy OOP (célorientált programozási) nyelv, amely nagyszerű szolgáltatásokat nyújt a vállalati szintű alkalmazások, a felhő és a platformok közötti fejlesztéshez. Nagyrészt a Microsoft támogatásával ez a nyelv kényelmes eszköz mind a szakemberek, mind az alkalmi kódolók számára.

A C # nemcsak rugalmas és könnyen érthető, ha ismeri a C ++ vagy a Java programot, hanem számos funkcióval is rendelkezik. Néhány C ++ funkcionalitás mellett a C # kínál.NET keretrendszert & osztálykönyvtára, a közös nyelv futásideje és fejlesztési keretrendszerei (például WPF, XAML és ASP.NET).

A C # -ot a blockchain nagy szereplői kedvelik, néhány okból:

  • Szintaxisa könnyen felfogható a fejlesztők nagy része számára, akik már ismerik a C ++ -ot (4,4 millió fejlesztés).

  • Ez nyílt forráskódú.

  • Lehetővé teszi hordozható kód írását mobil eszközökhöz.

  • Megfizethető a BizSpark program miatt.

A kódot C # -ra alapozó legkiemelkedőbb startupok közé tartozik a NEO és a Stratis. Ezenkívül a C # rendelkezik külön Bitcoin keretrendszerrel (NBitcoin). A Microsoft nem marad le, és bemutatja az Azure platform vNext blokkláncát.

Előnyök: objektumorientált, erősen beírt, dinamikus kód támogatás

Hátrányok: gyenge Linux támogatás

A legalkalmasabb: infrastruktúra blokkláncok építésére, Windows felhasználókra

JavaScript

Ez talán messze a legelismertebb programozási nyelv a világon. A mindennap görgetett weboldalak a javascriptet használják a divatos megjelenés és a fejlett funkcionalitás érdekében. 2007-ben Jeff Atwood törvényt alkotott:

“Minden olyan alkalmazás, amely JavaScript-szel írható, végül JavaScript-szel íródik.”

A JavaScript egy OOP nyelv, amelyet könnyű megtanulni, ugyanakkor sokoldalú is. A JS használatával a fejlesztők képesek kódolni az ügyfeleket & szerverek, IoT-eszközök és gépi tanulás. A JavaScript egyik fő előnye a blokklánc szempontjából az események aszinkron futtatása, vagyis lehetővé teszi a csomópontok szabad és hatékony kommunikációját. A JS másik erőssége, hogy nem igényel összeállítást. Ugyanakkor az egyszerűség költséggel jár. Minden jellemzője ellenére a JS távol áll a C ++ -tól, de remek nyelv a kezdők számára.

A JavaScript nem volt túl népszerű a blokklánc-fejlesztők körében az ICO 2017-es kitöréséig. Jelenleg a CoinMarketCap-on több magas rangú startup is található, amelyek ezen a nyelven alapulnak, mint például a Lisk, az Ark és a Nimiq. Az Ethereum egyik legjelentősebb versenytársa, a Tron is támogatja a JavaScript-et.

Előnyök: Objektum-orientált, prototípus-alapú, támogatja a funkcionális programozást

Hátrányok: Dinamikus, gyengén tipizált

Legmegfelelőbb: Belépés a blockchain térbe, dApps építése

Piton

A Python minimalista módon jött létre. Ezért ez a nyelv rendkívül könnyen megtanulható, és remek belépési pont a kezdők számára. 1991-ben hozták létre, és rengeteg célt szolgált, mint alkalmazásfejlesztés, hálózati szerverek fejlesztése, IoT és mások. Lehet, hogy még nem ismerik el annyira, mint a JS, de a technikai világban minden bizonnyal nagyobb lendületet kelt.

A Python egy OOP nyelv. Öröm kódolni és univerzális. Egy egyszerű blokklánc kódolásához legfeljebb 50 sorra lesz szükség. A kód megírása után több eszközön is futtatható, különböző operációs rendszerrel. Hatalmas keretrendszer-könyvtár is található, mint például a Tensorflow és a Django, bár dokumentációjuk egyes esetekben hiányos lehet. Ehhez hozzá kell adni, hogy jelenleg vannak speciális könyvtárak, amelyek a blokklánc fejlesztésével foglalkoznak. A JavaScripthez hasonlóan a Python sem igényel fordítást, bár összeállítható, mint a C # és a C ++. Kombinálja a hozzá tartozó dedikált tesztelési környezettel, és kap egy svájci kést a blockchain utazáshoz.

A Pythont az ipar szupersztárjai elismerték. Az IBM Hyperledger implementálta a Sawtooth-ban, és az Ethereum létrehozta ennek a nyelvnek a saját iterációját: Pyethereum.

Előnyök: Nagyon könnyen megtanulható, előre elkészített könyvtárak és keretrendszerek, hatékonyak

Hátrányok: Leginkább szervernyelvként használják, nem olyan okos kontextusban

Legmegfelelőbb: dApps építése a kezdők számára

Megy

A Golang (vagy Go) egy nyílt forráskódú nyelv, amely a C-ből származik. Ez egy nagyon fiatal nyelv, amelyet 2007-ben indítottak a Google fejlesztői. A szintaxis megvalósítása Python-szerűbb – egyszerűvé válik a hatékonyság biztosítása és az ezzel készült projektek jövőbiztosítása érdekében.

A Go erős oldala a blokklánc-programozásban magában foglalja a moduláris programozás elérhetőségét, amely rugalmassá teszi a fejlesztési folyamatot, kényelmes tesztelőeszközöket és a funkciók hatalmas könyvtárát. A felhőalapú számítástechnikai fejlesztők számára lenne a legvonzóbb, mivel az elosztott számítások e nyelv szempontjából nagyon egyszerűek. Bár ez a nyelv összeállítást igényel, jó tényező a biztonság szempontjából, mivel az összes hibát a kódot író személynek meg kell mutatni a bevezetés előtt. Ezenkívül a párhuzamos programozás a Goroutines-szal együtt növeli a kód és az alkalmazások átviteli sebességét. Ez döntő fontosságú a méretezhetőség szempontjából, amely ma a blokklánc tér fájdalmas pontja. Végül a Go az operációs rendszerrel fut, nem pedig a tetején. Ez kiküszöböli az extra lépéseket az EVM-ek létrehozásakor, ezáltal növelve a sebességet.

A Go a blockchain szférában jól ismert nyelv. Vegyük fontolóra az IBM Hyperledger szoftvert, amely a Golangot használja az intelligens szerződések kódolásához a szövetén. A Docker nem egy blokklánc indítás, de az elosztott rendszerekkel működik, és a Go-val épül fel.

Előnyök: Memória biztonság, szemétszállítás, erősen beírva

Hátrányok: Nem olyan könnyen megtanulható, viszonylag kicsi a közösség, kevés csomag van

Legmegfelelőbb: felhő dApps építéséhez

Szilárdság

A szilárdság fiatal, mint Golang. 2014-ben adta ki Christian Reitwiessner és csapata. Ez egy olyan nyelv, amelyet intelligens szerződések írására hoztak létre az Ethereumon, ezért a legnépszerűbb az Ethereum ökoszisztémában. Érdemes megjegyezni, hogy az ökoszisztéma az elmúlt két évben több százszorosára nőtt a piacot elárasztó különféle startupok miatt. Ennek eredményeként a Solidity nagy felhasználói bázissal rendelkezik. Szabványa (ERC20) az ipar alaptermékévé vált.

A szilárdság OOP és kontaktorientált nyelv. Ez is Turing teljes, vagyis értelmezni tudja a különféle adatkezelési szabályokat. A szilárdság szintaxisa hasonlít a JavaScriptéhez, de van néhány hasonlóság a C-vel++ & Python is. A Solidity korai szakasza ellenére funkcionális nyelv, öröklődést biztosít, különféle könyvtárakat stb..

Jelenleg a Solidity fő felhasználási esetei az EVM és az intelligens szerződések. Ez nem sok, de ezek rendkívül fontosak és blokklánc-specifikusak, amennyire csak lehet. Ha fel akar építeni egy dApp-ot, akkor a Solidity az ön választása.

Előnyök: Statikusan gépelt, könnyen megtanulható, trendi

Hátrányok: Nem univerzális, sebezhető

Legmegfelelőbb: Intelligens szerződések fejlesztése

A blockchain kódolásának alapjai

Most, hogy áttekintettük a blokklánc legnépszerűbb programozási nyelveit, itt az ideje, hogy a tényleges kódolással piszkosul kiszabaduljunk. Lássuk, hogyan hajtják végre az alapműveleteket a különböző programozási nyelveken keresztül.

Mielőtt nekilátnánk, jó dolog finomítani ismereteinket arról, hogy mi a blokklánc. A blokklánc egy elosztott főkönyv, amelynek tranzakciói blokkok láncába kerülnek. A blokk a tranzakciós rekordok helyőrzője. Minden új blokknak van egy mutatója az előzőre hash függvény formájában. Miután a blokk megtelt, az összes tranzakció felhasználásával kivonat készül és csatolódik hozzá. Van még egy időbélyegző kiszolgáló, amely megakadályozza a kettős kiadásokat, és egy konszenzusos mechanizmus, amely lehetővé teszi a csomópontok számára, hogy megállapodjanak a főkönyv helyes verziójában.

Ideje az elméletet a gyakorlatba átültetni. Ennek célja nem egy teljes alkalmazás elkészítése, hanem annak bemutatása, hogy néz ki a folyamat.

  1. C++

    Minden blokkláncnak van egy kemény kódolású kezdeti blokkja, az úgynevezett genezis blokk. Hozzunk létre egyet.

    C ++ genesis blokkoljaKép: Utoday

    Most létrehozhatunk egy újabb blokkot. Ennek érdekében beírjuk a getLatestBlock ().

    C ++ blokkokat ad hozzáKép: Utoday

C ++ konszenzusKép: Utoday

A konszenzusmechanizmus egy egyszerű „for” hurokfunkció, amely az összes blokkot lefedi, 1-től kezdődően, mert nincs szükség a 0 genezis blokk felülvizsgálatára..

  1. C #

    A C # blokklánc adatstruktúrája meglehetősen egyszerű. Blokkja van & Blockchain osztályok. Itt vannak.

    C # blokkKép: UtodayC # blokkláncKép: Utoday

    Ha a struktúrát vizualizáljuk, a következőképpen néz ki:

C # blockchain struktúraKép https://www.c-sharpcorner.com/

Így adhatunk hozzá új blokkokat:

C # adjon hozzá blokkokatKép: Utoday

Annak érdekében, hogy blokkláncunk konszenzusra jusson, pl. érvényesítéséhez csak 2 kódsorra van szükségünk egy IsValid módszerrel együtt, amely ellenőrzi az egyes blokkok adatait és összehasonlítja a kivonatokat.

C # konszenzusKép: Utoday

  1. JavaScript

    Most elérhetõbb nyelvek területeire érkezünk, ennek szórakoztatóbbnak kell lennie, ha nincs kódolási tapasztalata. A blokklánc létrehozásához futási környezetre van szükségünk, például a Node.js fájlra. A további blokkok mindegyikének a következő adatai lesznek: index, a létrehozás ideje, misc (mint a küldő & vevő címei és az átutalt összeg), az előző blokk hashja, saját hash. Miután ez megtörtént, itt az ideje áttérni a genezis blokk kemény kódolására:

    JavaScript genezis blokkKép: Utoday

    Amint megszereztük a genezis blokkot, most új adattal rendelkező blokkokat adunk hozzá egy nextBlock függvényen keresztül. Ez a funkció automatikusan átmegy mind az 5 adattípuson, és minden új blokkba belefoglalja őket.

    JavaScript létrehozási blokkKép: Utoday

JavaScript blokkokat ad hozzáKép: Utoday

  1. Piton

    Ezúttal azzal kezdjük, hogy megértsük, hogyan néz ki egy tranzakció a Pythonban. Ez egy egyszerű időbélyeggel ellátott bejegyzés, néhány adattal együtt.

    Python tranzakcióKép: Utoday

    Ezek a tranzakciók a blokkokba kerülnek. Bemutatjuk ezt az osztályt.

Python blokkKép: Utoday

Az SHA-256-ot fogjuk használni, amelyet a Bitcoin használ, hogy hasheket hozzon létre a blokklánc integritásának ellenőrzéséhez.

Python hashKép: Utoday

Most hozzáadhatjuk a blokkokat, de először mutassuk be a Proof-of-Work algoritmust, amely biztosítja, hogy a blokklánc adatai ne sérüljenek.

Python PoWKép: Utoday

Miután ez megtörtént, világosak vagyunk, hogy elindítsuk a blokkláncot.

  1. Megy

    Kezdjük a blokkjaink tulajdonságainak meghatározásával. A BPM tetszőleges adat, például hálózati tranzakciók, címek stb.

    Golang blokkKép: Utoday

    A blokkok létrehozásához adatokat kell kivonatolni bennük, és a megfelelő eredményekkel láncolni. A Go blokkjában lévő adatok kivonásának kódja így néz ki:

    Végül megkezdhetjük az új blokkok készítését a geneBlock funkció használatával. Ideje megírni a konszenzust, amelyet az isBlockValid függvény képvisel.

    Mivel minden dolog be van állítva, készen állunk a blokkgyártási folyamat elindítására. Ne feledje, hogy ezen a ponton a blokkláncnak szüksége lesz egy szerverre a futtatáshoz, ezért van néhány extra bitnyi kód, amely ezt tükrözi.

    Golang hashKép: Utoday

  2. Szilárdság

    Az intelligens szerződések építése eltér az imént áttekintettől, de ez még mindig egyszerű. Először létre kell hoznunk egy szerződést és meg kell neveznünk. Ez a szerződés egy személy akaratára szól. Meghalásuk esetén a pénzeszközöket automatikusan meghatározott címekre kell felosztani.

    Szolidaritási szerződésKép: Utoday

    Itt adjuk meg a tulajdonos Ethereum címét (tulajdonos), az elosztásra maradt összeget (egység) és a tulajdonos állapotának feltételes változóját (bool). A következő lépés olyan módosítók hozzáadása, amelyek kibővítik a feltételes logikát, hogy a tulajdonos állapotával egy funkciót biztosítsanak.

    Ennek során felvázolhatjuk azokat a címeket, amelyek megkapják az örökséget. Ezután folytatjuk az alapok elosztásának megadását abban az esetben, ha isDeceased = true. Felhívjuk figyelmét, hogy ebben a szakaszban elrejthetjük a függvényt a nyilvánosság elől, ha a „privát” elemet a „kifizetési” funkció mellé helyezzük. Voila, a kód már telepíthető.

    Szilárdság-módosítókKép: Utoday

Összegzés

Összefoglalva: nincs végső blockchain-központú programozási nyelv. Maga a blokklánc gyerekcipőben jár, és vannak feltáratlan horizontok és lépések. Sok más szférához hasonlóan a magabiztos közlekedés lehető legjobb módja az, ha teljes körű fejlesztővé válik, ami nehéz feladat lehet, tekintve, hogy mennyi tudásra lesz szüksége. Szerencsére számos programozási nyelv szintaxisában és felépítésében hasonlóság van az átmenet megkönnyítése érdekében.

Ha egy nyelvet kell választania, akkor figyelembe kell vennie a kontextust. Ha infrastrukturális projektekre szeretne koncentrálni, akkor a C ++ és a C # számodra jobban megfelel. Abban az esetben, ha jobban érdekel az alkalmazások fejlesztése a meglévő blokkláncok tetején, a JavaScript, a Python és a Go jó megfontolandó lehetőség. Ha csak saját ERC20 tokent szeretne elindítani, a Solidity kétségtelenül fedezi az Ön igényeit.

Azt is szem előtt kell tartani, hogy a blokkláncok nyelv-agnosztikusak. Az új nyelvek, mint például az egyszerűség, és a meglévő nyelvek, például az SQL integrálása révén a határok közöttük egyre jobban elmosódnak. Ne feledje, hogy a nyelv csak egy eszköz, és szabadon felhasználhatja bármilyen célra. A legjobb tanácsunk az lenne, hogy ha már ismeri néhány nyelvet, akkor sajátítsa el ezeket folyamatosan – mindenképpen képes lesz velük blokkláncokat létrehozni. Ha még csak most indul, próbálja meg megkeresni a legegyszerűbb belépési pontot – inkább a JavaScript és a Solidity felé.