Programování blockchainu: Kolik programovacích jazyků potřebujete pro blockchain?

Jak lidstvo postupuje směrem k digitalizaci všeho, základní kódování se stává nezbytností i pro průměrného člověka, který nemá zájem o technologie. Tento požadavek je ještě patrnější, pokud jde o blockchainovou sféru. Pokud skutečně usilujeme o skutečnou decentralizaci, měl by každý z nás pochopit, jak věci fungují alespoň na elementární úrovni. Ať už jste zkušený softwarový inženýr nebo průměrný Joe, první věcí, kterou byste měli udělat, než se naučíte, jak blockchain funguje, je zvolit programovací jazyk.

Pro novou dunivou technologii, která se vyvíjí rychlým tempem, je úkol vybrat a programovací jazyk může být skličující. Existuje spousta z nich k dispozici a různé startupy a komunity s otevřeným zdrojovým kódem si pro sestavení svých produktů vybraly různé jazyky, protože jejich zaměření a sady požadovaných funkcí se liší. V tuto chvíli neexistuje žádný standard; vaše volba by do značné míry odpovídala vašim osobním kritériím a typu aplikací, které si přejete vytvořit.

V tomto článku přezkoumáme nejpopulárnější programovací jazyky, které se používají při vývoji blockchainu, abychom vám pomohli s výběrem nejvhodnější možnosti. Už to neodkládejme a jdeme hlouběji do králičí nory!

Nejoblíbenější programovací jazyky v blockchainu

Nejprve musíme pochopit, který z programovacích jazyků se při psaní kódu v blockchainu používá nejvíce. Pravděpodobně na tomto seznamu uvidíte některá známá jména.

C++

Abychom mohli začít zkoumat jazyky pro blockchainové programování, musíme se podívat na jejich dědečka – C ++. Tento jazyk vydal v roce 1985 Bjarne Stroustrup, aby byla původní verze C flexibilnější. O více než tři desetiletí později byl použit k vytváření bitcoinů.

Na rozdíl od původního C, které je orientované na procesy, je C ++ objektově orientované. Díky tomuto přístupu je C ++ časově efektivnější, pokud jde o psaní kódu. Data spolu s funkcemi jsou uložena v takzvaných objektech, které lze později znovu použít v jiných programech.

Vzhledem ke své vyspělosti není překvapením, že pokud jde o vývoj blockchainu, je funkce C ++ poměrně robustní. Tento jazyk má řízení paměti, které zajišťuje rychlost díky efektivní správě CPU, podprocesy, které umožňují současné paralelní / neparalelní úlohy, pohodlně přesouvají sémantiku pro kopírování dat, polymorfismus v době kompilace pro lepší výkon díky rozdělení odpovědností a izolaci kódu pro oddělení datových struktur . Jeho uživatelskou základnu navíc tvoří více než čtyři miliony vývojářů.

Jednou z hlavních nevýhod C ++ pro vývojáře blockchainu je, že není připraven na inteligentní kontrakt. Neznamená to, že na C ++ nelze kódovat inteligentní kontrakt, znamená to, že je třeba implementovat některé úpravy. To je důvod, proč se začaly objevovat jazyky specifické pro blockchain.

Klady: nezávislé a multiplatformní, vysokorychlostní, podobné jako C.

Nevýhody: poměrně obtížné zvládnout, složité a někdy těžko laditelné, bez odvozu odpadu

Nejvhodnější pro: pokročilé uživatele, porozumění principům bitcoinu

C#

C # je mladší než C ++, ale je také docela starý. Byl vytvořen na konci 90. let v Microsoftu a rychle se prosadil v komunitě vývojářů. Je to jazyk OOP (objektově orientované programování), který poskytuje skvělé funkce pro podnikové aplikace, cloud a vývoj napříč platformami. Tento jazyk, který je většinou podporován společností Microsoft, je pohodlným nástrojem jak pro profesionály, tak pro příležitostné programátory.

C # je nejen flexibilní a snadno srozumitelný, pokud znáte C ++ nebo Java, ale je také nabitý funkcemi. Kromě některých funkcí v C ++ nabízí C # framework .NET & její knihovna tříd, společný jazykový modul runtime a vývojové rámce (například WPF, XAML a ASP.NET).

C # je upřednostňováno velkými hráči v blockchainu z několika důvodů:

  • Jeho syntaxe je snadno pochopitelná pro velkou část vývojářů, kteří již znají C ++ (4,4 milionu dev).

  • Je to open-source.

  • Umožňuje psaní přenosných kódů pro mobilní zařízení.

  • Je to dostupné díky programu BizSpark.

Mezi nejvýznamnější startupy, které zakládají svůj kód na C #, patří NEO a Stratis. C # má navíc vyhrazený bitcoinový rámec (NBitcoin). Microsoft nezůstává pozadu a zavádí blockchain vNext pro svou platformu Azure.

Pros: objektově orientovaná, silně zadaná, podpora dynamického kódu

Nevýhody: slabá podpora Linuxu

Nejvhodnější pro: budování blockchainů infrastruktury, uživatelé Windows

JavaScript

Toto je možná zdaleka nejuznávanější programovací jazyk na světě. Webové stránky, které procházíte každý den, využívají javascript pro efektní vzhled a pokročilé funkce. V roce 2007 vytvořil Jeff Atwood zákon:

“Jakákoli aplikace, kterou lze napsat v JavaScriptu, bude nakonec napsána v JavaScriptu.”

JavaScript je jazyk OOP, který se snadno naučí a je velmi univerzální. Pomocí JS mohou vývojáři kódovat pro klienty & servery, zařízení IoT a strojové učení. Jednou z hlavních výhod JavaScriptu z hlediska blockchainu je funkce asynchronního spouštění událostí, což znamená, že umožňuje uzlům svobodně a efektivně komunikovat. Další silnou stránkou JS je, že nevyžaduje kompilaci. Jednoduchost je zároveň nákladná. Přes všechny své funkce je JS daleko od jazyka C ++, ale je to skvělý jazyk pro začátečníky.

JavaScript nebyl mezi vývojáři blockchainů příliš populární, dokud nedošlo k vypuknutí ICO v roce 2017. V současné době existuje několik startupů s vysokými hodnostmi na CoinMarketCap, které jsou založeny na tomto jazyce, jako jsou Lisk, Ark a Nimiq. Jeden z nejvýznamnějších konkurentů společnosti Ethereum, společnost Tron, také podporuje JavaScript.

Pros: Objektově orientovaný, prototypový, podporuje funkční programování

Nevýhody: Dynamické, slabě napsané

Nejvhodnější pro: Vstup do blockchainového prostoru, budování dApps

Krajta

Python byl vytvořen minimalistickým způsobem. Proto se tento jazyk velmi snadno naučí a je skvělým vstupním bodem pro začátečníky. Byl vytvořen v roce 1991 a sloužil mnoha účelům, jako je vývoj aplikací, vývoj síťových serverů, IoT a další. Možná to ještě není tak uznávané jako JS, ale ve světě technologií to rozhodně dělá větší rozruch.

Python je jazyk OOP. Je radost kódovat a je to univerzální. Chcete-li kódovat jednoduchý blockchain, nebudete potřebovat více než 50 řádků. Jakmile je kód napsán, lze jej spustit na více zařízeních s nainstalovaným jiným operačním systémem. K dispozici je také obrovská knihovna rámců, jako jsou Tensorflow a Django, i když jejich dokumentace může být v některých případech neúplná. Chcete-li k tomu přidat, v současné době existují specifické knihovny věnované vývoji blockchainu. Stejně jako JavaScript nevyžaduje Python kompilaci, i když jej lze kompilovat jako C # a C ++. Zkombinujte to s vyhrazeným testovacím prostředím, které je s ním dodáváno, a získáte švýcarský armádní nůž na cestu blockchainem.

Python byl uznán průmyslovými superhvězdami. IBM Hyperledger jej implementoval do Sawtooth a Ethereum vytvořilo vlastní iteraci tohoto jazyka: Pyethereum.

Pros: Velmi snadné se naučit, připravit knihovny a rámce, efektivní

Nevýhody: Většinou se používá jako jazyk serveru, ne tak inteligentní kontext

Nejvhodnější pro: Vytváření dApps pro začátečníky

Jít

Golang (nebo Go) je open-source jazyk odvozený od C. Je to velmi mladý jazyk, který byl spuštěn v roce 2007 vývojáři z Google. Go implementace syntaxe je více podobná Pythonu – je snadné zajistit efektivitu a zajistit, aby projekty vytvořené s ní byly připraveny na budoucnost.

Silné stránky Go pro blockchain programování zahrnují dostupnost modulárního programování, které umožňuje flexibilní vývojový proces, pohodlné testovací nástroje a obrovskou knihovnu funkcí. Pro vývojáře cloud computingu by to bylo nejzajímavější, protože distribuované výpočty jsou z hlediska tohoto jazyka velmi jednoduché. I když tento jazyk vyžaduje kompilaci, je to dobrý faktor pro bezpečnost, protože všechny chyby se zobrazí osobě, která psala kód před jeho spuštěním. Paralelní programování spolu s Goroutines navíc zvyšuje efektivitu propustnosti kódu a aplikací. To je zásadní pro škálovatelnost, která je dnes v blockchainovém prostoru bolestným bodem. A konečně, Go běží s OS, ne nad ním. To eliminuje další krok při vytváření EVM, a tím zvyšuje rychlost.

Go je známý jazyk v blockchainové sféře. Zvažte IBM Hyperledger, který používá Golang pro kódování inteligentních kontraktů na své Fabric. Docker není spuštění blockchainu, ale pracuje s distribuovanými systémy a je postaveno na Go.

Klady: Zabezpečení paměti, odvoz odpadu, silně napsané

Nevýhody: Není to tak snadné se naučit, relativně malá komunita, malý počet balíčků

Nejvhodnější pro: Vytváření cloudových dApps

Pevnost

Solidita je mladá, jako Golang. To bylo propuštěno v roce 2014 Christian Reitwiessner a jeho tým. Je to jazyk, který byl vytvořen za účelem psaní inteligentních kontraktů na Ethereum, a proto je v ekosystému Ethereum nejoblíbenější. Stojí za zmínku, že ekosystém za poslední dva roky stokrát narostl kvůli různým startupům, které zaplavily trh. Výsledkem je, že Solidity má velkou uživatelskou základnu. Jeho standard (ERC20) se stal základem pro průmysl.

Solidity je OOP a jazyk orientovaný na kontakty. Je také Turing kompletní, což znamená, že může interpretovat různá pravidla manipulace s daty. Syntaxe Solidity se podobá syntaxi JavaScriptu, ale existují určité podobnosti s C.++ & Python také. Navzdory své rané fázi je Solidity funkční jazyk, poskytuje dědičnost, různé knihovny atd. Nevýhodou mládí jsou problémy s dokumentací, které mohou některé vývojáře nechat v nesnázích.

V současné době jsou hlavními případy použití Solidity EVM a inteligentní smlouvy. Není to mnoho, ale ty jsou nesmírně důležité a specifické pro blockchain, jak jen to může být. Pokud chcete vytvořit dApp, Solidity je vaše volba.

Klady: Staticky napsané, snadno se učí, trendy

Nevýhody: Ne univerzální, zranitelné

Nejvhodnější pro: Vývoj inteligentních smluv

Základy kódování na blockchainu

Nyní, když jsme zkontrolovali nejpopulárnější programovací jazyky v blockchainu, je čas si ušpinit ruce skutečným kódováním. Podívejme se, jak se základní operace provádějí z hlediska různých programovacích jazyků.

Než začneme, je dobré upřesnit naše znalosti o tom, co je blockchain. Blockchain je distribuovaná účetní kniha se vstupem transakcí do řetězce bloků. Blok je zástupný symbol pro záznamy transakcí. Každý nový blok má ukazatel na předchozí ve formě hash funkce. Poté, co je blok plný, se pomocí všech jeho transakcí vygeneruje hash a připojí se k němu. K dispozici je také server časových značek, který zabraňuje dvojím výdajům, a mechanismus konsensu, který umožňuje uzlům dohodnout se na správné verzi hlavní knihy.

Je čas uvést teorii do praxe. Účelem není vytvořit úplnou aplikaci, ale ukázat, jak vypadá tento proces.

  1. C++

    Každý blockchain tam má pevně zakódovaný počáteční blok, nazývaný genesis block. Pojďme si jeden vytvořit.

    Blok geneze C ++Obrázek Utoday

    Nyní můžeme vytvořit další blok. Za tímto účelem zadáme getLatestBlock ().

    C ++ přidat blokyObrázek Utoday

C ++ shodaObrázek Utoday

Mechanismus konsensu je jednoduchá funkce smyčky „pro“, která běží přes všechny bloky, počínaje od 1, protože není třeba revidovat blok 0 genesis.

  1. C#

    Datová struktura pro blockchain na C # je poměrně přímočará. Má blok & Třídy blockchainu. Zde jsou.

    C # blokObrázek UtodayC # blockchainObrázek Utoday

    Pokud vizualizujeme strukturu, vypadá to takto:

C # blockchainová strukturaObrázek z https://www.c-sharpcorner.com/

Nové bloky přidáváme takto:

C # přidat blokyObrázek Utoday

Aby náš blockchain dosáhl konsensu, např. ověřte to, potřebujeme pouze 2 řádky kódu spolu s metodou IsValid, která zkontroluje data v každém z bloků a porovná hashe.

C # shodaObrázek Utoday

  1. JavaScript

    Nyní se dostáváme na území s dostupnějšími jazyky. Pokud nemáte zkušenosti s kódováním, mělo by to být zábavnější. Abychom mohli vytvořit blockchain, potřebujeme běhové prostředí, jako je Node.js. Každý z dalších bloků bude mít následující data: index, čas vytvoření, různé (jako odesílatel & adresy příjemce a převedená částka), hash předchozího bloku, vlastní hash. Jakmile je hotovo, je čas přejít k pevnému kódování bloku geneze:

    Blok genesis JavaScriptuObrázek Utoday

    Protože jsme dostali blok genesis, přidáme nyní bloky s novými daty pomocí funkce nextBlock. Tato funkce automaticky projde všech 5 typů dat a zahrne je do každého nového bloku.

    Blok pro vytvoření JavaScriptuObrázek Utoday

Přidání bloků JavaScriptuObrázek Utoday

  1. Krajta

    Tentokrát začneme s porozuměním, jak vypadá transakce v Pythonu. Je to jednoduchý časově označený příspěvek s připojenými údaji.

    Transakce v PythonuObrázek Utoday

    Tyto transakce se dostanou do bloků. Pojďme si představit tuto třídu.

Blok PythonuObrázek Utoday

Použijeme SHA-256, který se používá v bitcoinech k vytváření hashů pro ověření integrity našeho blockchainu.

Python hashObrázek Utoday

Nyní můžeme přidat bloky, ale nejprve si představme algoritmus Proof-of-Work, který zajišťuje, že data v blockchainu nebyla poškozena.

Python PoWObrázek Utoday

Poté je jasné, že blockchain spustíme.

  1. Jít

    Začneme definováním vlastností našich bloků. BPM jsou libovolná data, jako jsou síťové transakce, adresy atd.

    Golangský blokObrázek Utoday

    Abychom mohli vytvářet bloky, musíme v nich hashovat data a řetězit je podle odpovídajících výsledků. Kód pro hašování dat v rámci bloku v Go vypadá takto:

    Nakonec můžeme začít vytvářet nové bloky pomocí funkce generateBlock. Čas napsat konsenzus, který představuje funkce isBlockValid.

    Jakmile jsou všechny věci nastaveny, jsme připraveni zahájit proces výroby bloků. Všimněte si, že v tomto okamžiku bude blockchain potřebovat server, na kterém bude fungovat, takže existují některé další kousky kódu, které to odrážejí.

    Golang hashObrázek Utoday

  2. Pevnost

    Vytváření inteligentních smluv se liší od toho, co jsme právě zkontrolovali, ale stále je to jednoduché. Nejprve musíme vytvořit smlouvu a pojmenovat ji. Tato smlouva je pro vůli osoby. V případě, že zemřou, budou prostředky automaticky rozděleny na konkrétní adresy.

    Smlouva o solidnostiObrázek Utoday

    Zde zadáme adresu vlastníka Ethereum (vlastník), částku zbývající pro distribuci (jednotka) a podmíněnou proměnnou pro stav vlastníka (bool). Dalším krokem je přidání modifikátorů, které rozšiřují podmíněnou logiku o funkci se stavem vlastníka.

    Jak to bude provedeno, můžeme nastínit adresy, které obdrží dědictví. Poté pokračujeme v určování rozdělení prostředků v případě isDeceased = true. Upozorňujeme, že v této fázi můžeme funkci skrýt před veřejností vložením funkce „soukromá vedle funkce„ výplata “. Voila, kód lze nyní nasadit.

    Modifikátory solidityObrázek Utoday

souhrn

Stručně řečeno, neexistuje žádný konečný programovací jazyk zaměřený na blockchain. Samotný blockchain je v plenkách a existují neprozkoumané obzory a nezkrocené důvody. Stejně jako v mnoha jiných sférách je nejlepším možným způsobem, jak se s jistotou obejít, stát se vývojářem s plným zásobníkem, což může být obtížný úkol, vzhledem k tomu, kolik znalostí budete potřebovat. Naštěstí má mnoho programovacích jazyků podobnosti v syntaxi a struktuře, které usnadňují přechod.

Pokud si musíte vybrat jeden jazyk, musíte vzít v úvahu kontext. Pokud se chcete zaměřit na budování infrastrukturních projektů, C ++ a C # vám budou vyhovovat více. V případě, že vás vývoj aplikací nad rámec stávajících blockchainů více fascinuje, jsou vhodnými alternativami JavaScript, Python a Go. Pokud chcete spustit svůj vlastní token ERC20, Solidity nepochybně pokryje vaše potřeby.

Měli byste také pamatovat na to, že blockchainy jsou jazykově agnostické. Díky novým jazykům, jako je Simplicity, a integraci těch stávajících, jako je SQL, budou hranice mezi nimi stále více rozmazané. Pamatujte, že jazyk je jen nástroj a můžete jej libovolně používat k jakémukoli účelu. Naše nejlepší rada by byla, že pokud již některé jazyky znáte, neustále je ovládejte – určitě s nimi budete moci vytvářet blockchainy. Pokud právě začínáte, zkuste vyhledat nejjednodušší vstupní bod – podívejte se více na JavaScript a Solidity.