Digitaaliset varat
Top 10 lohkoketjuohjelmointikieltä, jotka sinun tulee tietää

Bitcoinin julkaisun jälkeen lohkoketjujen kehitystyökalut ovat laajentuneet. Osa kielistä on suunniteltu älysopimuksiin, kun taas yleiskäyttöisillä kielillä rakennetaan solmuohjelmistoja, sovelluksia ja taustapalveluita. Sopiva valinta riippuu verkosta ja käyttötarkoituksesta.
Bitcoin Script on varhainen kieli Bitcoin-siirtojen käyttöehtojen määrittelyyn, ei maailman ensimmäinen ohjelmointikieli. Älysopimusten käsite ja ohjelmoitavat siirtoehdot olivat olemassa jo ennen Ethereumia. Ethereum mahdollisti huomattavasti yleiskäyttöisemmän ohjelmoitavan sovellusalustan.
Tässä esitellään kymmenen lohkoketjuhankkeissa käytettävää kieltä ilman paremmuusjärjestystä. On erotettava toisistaan ketjussa suoritettava koodi sekä käyttöliittymien, palvelinten ja infrastruktuurin koodi. Kaikki verkot eivät tue kaikkia kieliä sopimusten suorittamiseen.
1. Solidity
Solidity on yleinen älysopimuskieli Ethereumissa ja muissa Ethereum Virtual Machinea eli EVM:ää tukevissa verkoissa. Gavin Wood ehdotti kieltä vuonna 2014, ja Christian Reitwiessner sekä muut kehittäjät jatkoivat sen kehitystä. Se on staattisesti tyypitetty korkean tason kieli.
Soliditya kuvataan Turing-täydelliseksi. Tämä ei tarkoita, että kaikki kuviteltavissa olevat toiminnot voidaan toteuttaa tai että kieli olisi automaattisesti tehokas. EVM:n suoritusta rajoittaa muun muassa gas: sopimus ei voi käyttää rajattomasti laskentaa.
Syntaksiin ovat vaikuttaneet C++, Python ja JavaScript. Aaltosulkeet, periytyminen, kirjastot ja käyttäjän määrittelemät tyypit mahdollistavat tuttuja ohjelmointimalleja. Kehittäjien on silti opittava älysopimusten oma suoritus- ja turvallisuusmalli.

Lähde: GitHub
Solidityn työkalut ja ekosysteemi tekevät siitä käyttökelpoisen moniin EVM-hankkeisiin. Suosio tai lyhyt koodi ei kuitenkaan takaa turvallisuutta: suunnittelu, testaus ja katselmointi ovat edelleen tarpeen.
2. Vyper
Vyper on EVM:lle suunnattu sopimuskieli, jonka syntaksi muistuttaa Pythonia. Sen tavoitteita ovat yksinkertaisuus, luettavuus ja auditoitavuus, jotta kehittäjät ja tarkastajat voivat seurata sopimuksen toimintaa.
Auditoinnilla etsitään virheitä ja haavoittuvuuksia. Vyper ei ole matalan tason kieli, joka kuvaa suoraan fyysisen tietokoneen käskykantaa: sopimuskoodi käännetään EVM:ssä suoritettavaksi.
Vyper jättää tarkoituksella pois esimerkiksi luokkaperiytymisen sekä funktioiden ja operaattorien ylikuormituksen. Rajauksilla pyritään vähentämään piilevää monimutkaisuutta. Python on yleiskäyttöinen kieli, ei erityinen Ethereum-kieli, eikä Vyper ole tavallinen Python-suoritusympäristö.
3. JavaScript
JavaScriptilla rakennetaan hajautettujen sovellusten käyttöliittymiä ja taustapalveluita. Kirjastot voivat lähettää siirtoja, kutsua sopimuksia ja lukea tapahtumia. Tämä ei tarkoita, että JavaScript olisi jokaisessa verkossa suoraan suoritettava sopimuskieli.
Brendan Eich kehitti JavaScriptin vuonna 1995 Netscapella. Ensimmäinen versio syntyi nopeasti, minkä jälkeen kieli on kehittynyt huomattavasti. Sitä käytetään laajasti verkkosivustoilla, kuten Facebookissa ja YouTubessa; päiväämätöntä käyttöprosenttia ei pidä esittää nykyisenä tietona.
JavaScript toimii selaimissa ja niiden ulkopuolella esimerkiksi Node.js:n avulla. Node.js on suoritusympäristö, ei kielen erillinen versio. Sen avulla voidaan rakentaa palvelimia ja palveluita, jotka viestivät lohkoketjusolmujen kanssa.
4. Plutus
Plutus sisältää kieliä ja työkaluja Cardanon älysopimuksiin. Cardano käyttää proof-of-stake-konsensusta. Sen arkkitehtuuri eroaa Ethereumista, joten mahdollisuuksia ja rajoituksia on arvioitava Cardanon oman mallin perusteella.
Plutus Core on Cardanon tilikirjassa suoritettava skriptikieli. Plutus Tx kääntää Haskell-koodia Plutus Coreksi. Haskellin staattinen tyypitys ja funktionaalinen lähestymistapa auttavat jäsentämään ohjelmia, mutta eivät tee sovelluksesta automaattisesti virheetöntä.
Sovellus yhdistää tavallisesti ketjussa suoritettavan validointikoodin ja ketjun ulkopuolisen koodin, joka muodostaa siirtoja ja palvelee käyttäjiä. Osilla on eri tehtävät, eikä niitä välttämättä suoriteta yhtä aikaa. GHC on Glasgow Haskell Compiler; Plutus Tx muuntaa tiettyä koodia Cardanon validointikielelle.
5. Rholang
Rholang on kehitetty samanaikaisiin, hajautettuihin laskentoihin, ja se liittyy RChainiin. Kieli perustuu rho-kalkyyliin ja viestinvälitykseen, ei tavanomaiseen luokkien ja periytymisen oliomalliin. Modulaarinen koodi auttaa sovellusten rakentamisessa.
Rholang käyttää kanavia viestien lähettämiseen ja vastaanottamiseen. Projektin dokumentaatio kuvaa käyttäytymiseen perustuvaa tyypitystä; se ei ole sama asia kuin Haskellin tyyppijärjestelmän kopiointi. Malli kuvaa samanaikaisia toimintoja, mutta todellinen rinnakkaissuoritus riippuu ympäristöstä.
Viestintämallilla voidaan kuvata protokollia ja älysopimuksia. Viestien käsittely ja sopimusehdot on suunniteltava huolellisesti. Kieli ei takaa automaattisesti onnistuneita neuvotteluja tai oikeudellista täytäntöönpanokelpoisuutta.
6. Rust
Rust on yleiskäyttöinen järjestelmäohjelmointikieli, jossa yhdistyy useita ohjelmointiparadigmoja ja osittain C-tyylinen syntaksi. Se tukee esimerkiksi kapselointia ja trait-rajapintoja, mutta ei tavanomaista luokkaperiytymistä. Samanaikaisuus tarkoittaa itsenäisesti eteneviä tehtäviä; ne voivat sopivassa ympäristössä myös suorittua rinnakkain.
Rust julkistettiin vuonna 2010, ja vakaa versio 1.0 julkaistiin vuonna 2015. Omistajuus- ja lainausjärjestelmä auttaa kääntäjää estämään monia muistivirheitä ilman tavanomaista roskienkeruuta. Se ei estä kaikkia virheitä, varsinkaan turvattomassa koodissa tai sovelluslogiikassa.
Rustia käytetään järjestelmäohjelmistoissa, pelimoottoreissa ja lohkoketjuinfrastruktuurissa, muun muassa Polkadot-ekosysteemissä ja Ethereum-asiakasohjelmissa. Rustilla kirjoitettu asiakasohjelma ei tarkoita, että kaikki Ethereum-sopimukset voisi suorittaa suoraan Rust-koodina. Tuki riippuu verkosta ja suoritusympäristöstä.
7. PHP
PHP on vakiintunut palvelinpuolen skriptikieli. Rasmus Lerdorf teki vuonna 1994 työkaluja verkossa olevan ansioluettelonsa käyntien, ei verkkopakettien, seurantaan. Nimi oli aluksi Personal Home Page Tools, ja lähdekoodi julkaistiin kesäkuussa 1995. Nykyinen nimi tarkoittaa PHP: Hypertext Preprocessor.
PHP:lla voidaan rakentaa verkkosivustoja ja taustapalveluita, jotka keskustelevat lohkoketjun kanssa esimerkiksi API:n tai JSON-RPC:n kautta. Sovellus voi näin kutsua sopimuksia tai tarjota token-toimintoja. PHP ei itsessään ole EVM:n tavanomainen sopimuskieli; sopimus suoritetaan verkon sääntöjen mukaisesti.
PHP on vapaasti saatavilla, ja sillä on suuri yhteisö sekä paljon kirjastoja. Se voi sopia lohkoketjuhankkeen verkkokomponentteihin. Väitteet sopivuudesta lähes kaikkeen tai erityisestä DeFi-valta-asemasta ovat liian laajoja.
8. Go
Go, jota kutsutaan epävirallisesti myös Golangiksi, kehitettiin Googlella ja julkaistiin avoimena lähdekoodina 10. marraskuuta 2009. Gorutiinit ja kanavat tukevat samanaikaisuutta. Tehtävät voivat suorittua rinnakkain useilla ytimillä, mutta pienemmät kulut tai lyhyempi suoritusaika eivät seuraa siitä automaattisesti.
Go pyrkii selkeään syntaksiin, nopeisiin käännösprosesseihin ja ylläpidettävään ohjelmistoon. Pakettimalli auttaa järjestämään ja käyttämään koodia uudelleen. Selkeä syntaksi ei korvaa huolellista suunnittelua tai virheenkäsittelyä.

Lähde: GitHub — Go — lohkoketjujen ohjelmointikielet
Roskienkeruu vapauttaa käytöstä poistunutta muistia ohjelman suorituksen aikana; se ei ole verkkoprotokolla. Golla rakennetaan lohkoketjuasiakkaita ja muita verkkopalveluita. Packages tarkoittaa koodipaketteja, ei verkkopaketteja.
9. C++
C++ on yleiskäyttöinen ohjelmointikieli, joka rakentuu 1970-luvulla syntyneen C:n pohjalle. Se tarjoaa muun muassa olio- ja geneeristä ohjelmointia sovelluksiin, käyttöjärjestelmiin ja lohkoketjuinfrastruktuuriin. Verkkokohtainen tuki ratkaisee, voiko sillä tehdä suoraan suoritettavia sopimuksia.
Kieli tarjoaa tarkkaa resurssien hallintaa ja sopii suorituskykyä vaativaan ohjelmistoon. Kirjastoja ja työkaluja on laajasti saatavilla. Skaalautuvuus riippuu kuitenkin arkkitehtuurista ja toteutuksesta, ei yksin kielen valinnasta.
C++ on käytettävissä monilla käyttöjärjestelmillä. Muistin ja muiden resurssien hallinta vaatii huolellisuutta, mutta RAII, säiliöt ja älykkäät osoittimet automatisoivat paljon vapautustyötä. Roskienkeruu vapauttaa muistia, mikä on eri asia kuin virheiden etsiminen. Myös roskienkeruuta käyttävät ohjelmat on testattava.
10. C#
C# on C-kieliperheen korkean tason kieli ja osa .NET-ekosysteemiä. Se tukee esimerkiksi olio-ohjelmointia ja uudelleenkäytettäviä komponentteja. Tuttu syntaksi voi helpottaa oppimista, mutta C:n tuntemus ei yksin kata C#:n ominaisuuksia.
Microsoft esitteli C#:n noin vuonna 2000. Microsoft (MSFT ) kehitti kieltä yhdessä .NET-alustan kanssa. Sitä käytetään verkkopalveluissa, mobiilisovelluksissa, peleissä, IoT:ssa ja lohkoketjuinfrastruktuurissa. Alusta ja työkalut ovat sittemmin laajentuneet.
C# voi olla joissakin sovelluksissa C++:aa tuottavampi vaatimuksista ja tiimin kokemuksesta riippuen. Se ei syntynyt yksinomaan verkkokehitystä varten. Kirjastot ja .NET tekevät siitä käyttökelpoisen esimerkiksi verkko- ja pilvipalveluihin; sopimustuki riippuu verkosta.
Turvallinen ohjelmointi vaatii muutakin kuin kielen valinnan
Hajautettujen sovellusten virheet voivat johtaa menetyksiin ja haavoittuvuuksiin. Valitse verkkoon ja tarpeeseen sopiva kieli ja työkalut sekä käytä testausta, katselmointia ja tarvittaessa riippumattomia auditointeja. Mikään näistä kymmenestä kielestä ei yksin estä virheitä tai hyökkäyksiä.
Lue lisää lohkoketjuhankkeista tästä katsauksesta.












