Soliditet

Soliditet
Sprog klasse kontraktorienteret
Dukkede op i 2014
Frigøre
Blev påvirket JavaScript , C++
Licens GNU GPL 3
Internet side github.com/ethereum/solidity

Solidity  er et objektorienteret , domænespecifikt programmeringssprog [2] af selvudførende kontrakter til Ethereum -platformen .

Historie

Sproget blev foreslået i august 2014 af Gavin Wood [3] . Yderligere udvikling af sproget blev udført under ledelse af Christian Reitwiessner af Solidity-teamet som en del af Ethereum -projektet . Det er et af fire sprog, sammen med Serpent, LLL og Mutan, designet til at blive oversat til bytekoden på den virtuelle Ethereum -maskine . Er blevet udbredt med fremkomsten af ​​blockchain-teknologier , især den Ethereum- baserede teknologistack, for at skabe smart kontraktsoftware .

Beskrivelse

Et statisk skrevet JavaScript-lignende programmeringssprog designet til at udvikle selvudførende kontrakter , der kører på den virtuelle Ethereum -maskine (EVM). Programmer oversættes til EVM bytecode. Giver udviklere mulighed for at skabe selvstændige applikationer, der indeholder forretningslogik, hvilket resulterer i irreversible blockchain -transaktionsposter .

Brugen af ​​ECMAScript-syntaks, som tilsigtet af Wood, skulle hjælpe sproget til at blive adopteret af faktiske webudviklere. Men i modsætning til ECMAScript modtog sproget statisk indtastning af variabler og dynamiske typer returværdier. Sammenlignet med sprogene Serpent og Mutan kompileret til den samme bytekode, har sproget vigtige forskelle. Komplekse kontraktvariabler understøttes, herunder vilkårlige hierarkiske tilknytninger og strukturer. Kontrakter understøtter nedarvning, herunder multipel- og C3-linearisering . En binær programmeringsgrænseflade (ABI) understøttes, som har mange typesikre funktioner i hver kontrakt (optrådte efterfølgende også i Serpent). Specificeret et kodedokumentationssystem til brugerdefineret forklaring af rækkefølgen af ​​opkald, kaldet Ethereum Natural Specification Format. I Solidity erklæres kontrakter i stedet for de sædvanlige klasser. Der er biblioteker til at skrive smarte kontrakter såsom: Open Zeppelin, Truffle. Biblioteker giver dig mulighed for at oprette din egen mønt (token) baseret på færdige skabeloner, med alle specifikationer (ERC20) og sikkerhedstjek (safemath-bibliotek).

Kontrakter i soliditet kan arve hinanden. Det betyder, at funktionerne og variablerne i den kontrakt, som vi arver fra, vil være tilgængelige i den kontrakt, der arver. Soliditet, ligesom C++, har multiple (rudeformet) arv.

kontrakt StandardToken er ER7C5F , BasicToken { mapping ( adresse => mapping ( adresse => uint256 )) tilladt ; // } kontrakt MintableToken er StandardToken , Ownable { hændelse Mint ( adresse indekseret til , uint256 beløb ); begivenhed MintFinished (); bool public mintingFinished = falsk ; modifier canMint () { require ( ! mintingFinished ); _ ; } // }

Eksempelprogram i Solidity-sprog [4] :

kontrakt GavCoin { mapping ( adresse => uint ) saldi ; uint konstant totalCoins = 100000000000 ; /// Giver skaberen af ​​kontrakten med 1m GAV. function GavCoin (){ saldi [ msg . afsender ] = totalCoins ; } /// Send $((valueInmGAV / 1000).fixed(0,3)) GAV fra kontoen til $(message.caller.address()), til en konto, der kun er tilgængelig for $(to.address()). function send ( adresse til , uint256 valueInmGAV ) { if ( balancer [ msg . sender ] >= valueInmGAV ) { balances [ to ] += valueInmGAV ; saldi [ meddelelse . afsender ] -= værdiInmGAV ; } } /// getter- funktion for balancefunktionen balance ( adresse hvem ) konstant returnerer ( uint256 balanceInmGAV ) { balanceInmGAV = saldi [ hvem ]; } };

Tilgængelige udviklingsplatforme

Noter

  1. https://github.com/ethereum/solidity/releases/tag/v0.8.17
  2. Soliditet - Soliditet 0.2.0 dokumentation . readthedocs.io . Hentet 19. november 2016. Arkiveret fra originalen 23. november 2016.
  3. Benoit Schweblin. StackEditViewer . stackedit.io _ Hentet 19. november 2016. Arkiveret fra originalen 1. april 2016.
  4. RJ Catalano, en af ​​kerneudviklerne, se VoR0220 på github
  5. Ethereums soliditet er nu tilgængelig i Microsoft Visual Studio (link ikke tilgængeligt) . CCN: Finansielle Bitcoin & Cryptocurrency News . Hentet 1. maj 2016. Arkiveret fra originalen 18. april 2016. 
  6. http://rethink-iot.com/2016/04/01/hyperledger-blockchain-code-almost-comes-together-for-iot/ Arkiveret 16. august 2016 på Wayback Machine , tilgået 23. april 2016.
  7. Microsoft tilføjer Ethereum til Windows-platformen for over 3 millioner udviklere . CoinDesk . Hentet 1. maj 2016. Arkiveret fra originalen 09. januar 2018.
  8. Allison, Ian Microsoft tilføjer Ethereum-sproget Solidity til Visual Studio . International Business Times (30. marts 2016). Hentet 11. maj 2016. Arkiveret fra originalen 29. maj 2016.

Litteratur

  • Chris Danen. introducerer Ethereum og Solidity: Fundamenter for kryptovaluta og Blockchain-programmering for begyndere. - 2017. - S. 256. - ISBN 978-5-8459-1349-4 .
  • Siraj Raval. decentrale applikationer. - " Apress ", 2016. - S. 118. - ISBN 978-1-491-92454-9 .
  • Axt R. Hvad er en smart kontrakt. eller Ethereum i timen. - 2017. - S. 19. - ISBN 978-5-4485-2907-8 .
  • Rawal S. Decentraliserede applikationer. Blockchain-teknologi i aktion. - 2017. - S. 240. - ISBN 978-5-496-02988-9 .

Links