Det er vanskeligt nok at komme i gang med udviklingen af Ethereum, men det sprog, du vælger, er en vigtig beslutning. Sørg for at planlægge i overensstemmelse hermed.
Ethereum er en af de største blockchain-platforme. Du kan bruge det til at bygge decentrale applikationer, smarte kontrakter og decentraliserede autonome organisationer (DAO'er).
Du skal bruge et sprog at programmere i, for at bygge videre på Ethereum blockchain. Selvom du har mange muligheder for Ethereum-udvikling, er Solidity og Vyper de mest populære.
Solidity-programmeringssproget
Solidity er et meget populært programmeringssprog på højt niveau, der bruges til Ethereum-udvikling. Det er et objektorienteret sprog med et fuldgyldigt økosystem af biblioteker, som du kan bruge til at bygge komplekse applikationer. Solidity deler nogle ligheder med JavaScript med hensyn til statisk skrivning, udtryk og nøgleord og objektorienteret programmering. Her er en enkel Hej Verden program i Solidity:
// SPDX-License-Identifier: MIT
pragmasoliditet ^0.8.18;
kontrakt HelloWorld {
// skabfungeretilVend tilbage"Hej Verden"
fungereHej Verden() offentligrenvender tilbage (strenghukommelse) {
Vend tilbage"Hej Verden";
}
}
Programmet ovenfor definerer en Hej Verden() fungere. Det Hej Verden() funktion returnerer en streng; i dette tilfælde sætningen "Hej verden." Her er resultatet af at køre Hello World-programmet på Remix IDE:
Hvad er Vyper-programmeringssproget?
Vyper er et nyere sprog til Ethereum-udvikling. Den blev udgivet i 2018; ligesom Solidity er Vyper et statisk maskinskrevet sprog.
Vyper er skrevet i samme syntaks, som Python-programmeringssproget bruger, hvilket er enklere end Solidity-kode. Sproget fokuserer på sikkerheden ved smarte kontrakter. Her er en enkel Hej Verden program skrevet i Vyper:
# @version >=0.2.16
@ekstern
@udsigt
# definer en funktion, der returnerer en streng
defHej Verden() -> String[24]:
Vend tilbage"Hej Verden!"
Ligesom Solidity-eksemplet definerer dette program en Hej Verden() funktion, der returnerer en streng. I dette tilfælde returnerer funktionen Hej Verden!
Her er resultatet af at køre Vyper Hello World-programmet på Remix:
Forskelle mellem soliditet og Vyper
Selvom Solidity og Vyper har lignende brugstilfælde, er der forskelle mellem de sprog, du vil overveje, når du vælger et sprog til Ethereum-udvikling.
Her er nogle forskelle mellem Solidity og Vyper.
Sprogsyntaks
Vyper har en simpel syntaks, mens Solidity har en kompleks syntaks svarende til C++. Soliditys syntaks gør det lettere for udviklere at bygge sofistikerede applikationer. Vyper har på den anden side en mere begrænset syntaks. Det understøtter ikke brugerdefinerede modifikatorer, grænseflader eller nedarvning.
Her er nogle specifikke forskelle mellem syntakserne for begge sprog.
Vyper bruger indrykning til at afgrænse kodeblokke, mens Solidity bruger krøllede klammeparenteser. Her er et simpelt Vyper-program:
defprøve() -> ingen:
hvis x > 5:
# gør noget
andet:
#gør noget andet
Her er det samme program i Solidity:
fungereprøve() offentlig{
hvis (x > 5) {
// gør noget
} andet {
// gør noget andet
}
}
Variabel- og funktionsdeklaration i Solidity er mere kompleks end i Vyper, fordi du skal angive synlighed, lagerplacering mv. Her er et simpelt program, der definerer en variabel og en funktion i Solidity:
kontrakt Min kontrakt {
// variabel deklaration i Solidity
uint256 offentlig x;
// funktionsdeklaration i Solidity
fungereminFunc(uint256 _x) offentligvender tilbage (uint256) {
// gør noget med _x
Vend tilbage x;
}
}
Her er et simpelt program, der definerer en variabel og en funktion i Vyper:
kontrakt Min kontrakt:
# variabel erklæring i Vyper
x: uint256
# funktionserklæring i Vyper
defminFunc(_x: uint256) -> uint256:
# gør noget med _arg
Vend tilbage selv.x
Vyper-kode er generelt en smule lettere at læse end Solidity-kode.
Smart kontraktsikkerhed
Vyper sikrer et højt sikkerhedsniveau for smarte kontrakter. Vyper har færre funktioner end Solidity, hvilket gør den mindre tilbøjelig til sikkerhedstrusler.
Solidity har funktioner såsom nedarvning, understøttelse af brugerdefinerede modifikatorer og avancerede datatyper som kortlægninger. Disse funktioner er ikke let tilgængelige i Vyper, og at bruge dem skødesløst i Solidity kan forårsage alvorlige sikkerhedstrusler.
Sprogadoption og udviklerkendskab
Soliditet er mere populær og bredt accepteret end Vyper. Solidity har meget god fællesskabsstøtte og ressourcer til rådighed for begyndere.
På den anden side er Vyper ikke bredt accepteret og mangler fællesskabsstøtte, så begyndere skal selv finde ud af mange ting.
Hvis du har arbejdet med programmeringssprog som Python, vil du finde det relativt nemmere at lære Vyper. På den anden side, hvis du er fortrolig med programmeringssprog som Java og C++, vil du finde Solidity lettere at lære.
Gaseffektivitet
Vyper bruger mindre gas end Solidity, fordi Vypers syntaks gør det lettere for Ethereum Virtual Machine (EVM) at læse. Da Solidity har en mere kompleks syntaks, vil kontrakter skrevet med Solidity forbruge mere gas og dermed resultere i højere Ethereum-gasgebyrer.
Hvis det er din prioritet at bygge sikre applikationer med mindre gas, er Vyper din bedste løsning. Soliditet er generelt mindre gaseffektiv og sikker end Vyper på grund af dens mange funktioner, der kan øge gasafgifterne. De kan også gøre din kontrakt udsat for sårbarheder.
Hvilket sprog skal du bruge til Ethereum-applikationer?
Overvej forskellene mellem de to sprog, og beslut dig for et baseret på dit projekts krav og dine egne præferencer. Vyper er en bedre mulighed for smarte kontrakter på grund af dens høje sikkerhed og lettere syntaks. Du vil opdage ulemperne ved at bruge Vyper, når du bygger komplekse applikationer, da Vyper har færre funktioner end Solidity.
Solidity er praktisk til komplekse projekter, og det stadigt voksende soliditetsfællesskab og mange funktioner gør Solidity at foretrække. Men hvis du vælger Solidity, bliver du nødt til at revidere din applikation ofte for at fange fejl og sikkerhedssårbarheder.
Tillad dit projekts specifikationer at påvirke dit valg
Dit valg af sprog til udvikling på Ethereum afhænger bedst af funktionerne og specifikationerne for dine projekter. Vyper og Solidity har deres fordele og ulemper, så baseret på dit projekt vil du gerne vælge et sprog, hvis ulemper du nemt kan undgå.