Solidity — об'єктно-орієнтована та предметно-орієнтована мова програмуваннярозумних контрактів для платформи Ethereum.
Solidity | |
---|---|
Парадигма | об'єктно-орієнтована |
Дата появи | 2014 |
Останній реліз | |
Система типізації | статична |
Під впливом від | JavaScript, |
Ліцензія | GNU GPL 3[1] |
Репозиторій вихідного коду | github.com/ethereum/solidity |
Вебсайт | soliditylang.org |
Історія
Мова була запропонована в серпні 2014 року Гейвіном Вудом (Gavin Wood). Надалі розробка мови була виконана під керівництвом Крістіана Райтвизнера (Christian Reitwiessner) командою Solidity в рамках проєкту Ethereum. Це одна з чотирьох мов (три інші: Serpent, LLL і Mutan), спроєктованих для трансляції в байт-код віртуальної машини Ethereum. Отримала широке поширення з появою технологій блокчейну, зокрема стека технологій на основі Ethereum, для створення програмного забезпечення розумних контрактів.
Опис
Solidity — статично типізована JavaScript-подібна мова програмування, створена для розробки розумних контрактів, які працюють на віртуальній машині Ethereum (EVM). Програми на мові Solidity транслюються в байткод EVM. Solidity дозволяє розробникам створювати самодостатні програми, що містять бізнес-логіку, результуючу в транзакційні записи блокчейну.
Використання синтаксису ECMAScript за задумом Вуда має допомогти прийняттю мови дійсними веброзробниками. Однак, на відміну від ECMAScript, мова отримала статичну типізацію змінних і динамічні типи значень. Порівняно з компільованими в такий же байт-код мовами Serpent і Mutan, мова Solidity має важливі відмінності. Підтримуються комплексні змінні контрактів, включаючи довільні ієрархічні відображення (mappings) і структури. Контракти підтримують спадкування, включаючи множинне і C3-лінеаризацію. Підтримується бінарний інтерфейс програмування (ABI), що має безліч типобезпечних функцій в кожному контракті (пізніше з'явився також і у Serpent). Специфікована система документування коду, для пояснення послідовності викликів, що отримала назву «Специфікації природною мовою Ethereum» (Ethereum Natural Format Specification).
Приклад програми на мові Solidity:
contract GavCoin { mapping(address=>uint) balances; uint constant totalCoins = 100000000000; /// Endows creator of contract with 1m GAV. function GavCoin(){ balances[msg.sender] = totalCoins; } /// Send $((valueInmGAV / 1000).fixed(0,3)) GAV from the account of $(message.caller.address()), to an account accessible only by $(to.address()). function send(address to, uint256 valueInmGAV) { if (balances[msg.sender] >= valueInmGAV) { balances[to] += valueInmGAV; balances[msg.sender] -= valueInmGAV; } } /// getter function for the balance function balance(address who) constant returns (uint256 balanceInmGAV) { balanceInmGAV = balances[who]; } };
Доступні платформи розробки
- Microsoft Visual Studio
- Enterprise
Примітки
- https://github.com/ethereum/solidity/blob/develop/LICENSE.txt
- Solidity — Solidity 0.2.0 documentation // readthedocs.io.
- StackEdit Viewer / Benoit Schweblin // Stackedit.io.
- RJ Catalano, one of the core developers, see VoR0220 on github
- Ethereum's Solidity Now Available in Microsoft Visual Studio // CCN: Financial Bitcoin & Cryptocurrency News. — Дата звернення: 1 травня 2016.
- Microsoft Adds Ethereum to Windows Platform For Over 3 Million Developers // CoinDesk. — Дата звернення: 1 травня 2016.
- Microsoft adds Ethereum language Solidity to Visual Studio / Ian Allison. — International Business Times, 2016. — 30 March.
Посилання
- Solidity home and documentation
- Solidity source code [ 7 січня 2018 у Wayback Machine.]
- Solidity browser-based compiler [ 8 січня 2018 у Wayback Machine.]
Вікіпедія, Українська, Україна, книга, книги, бібліотека, стаття, читати, завантажити, безкоштовно, безкоштовно завантажити, mp3, відео, mp4, 3gp, jpg, jpeg, gif, png, малюнок, музика, пісня, фільм, книга, гра, ігри, мобільний, телефон, android, ios, apple, мобільний телефон, samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, ПК, web, Інтернет
Solidity ob yektno oriyentovana ta predmetno oriyentovana mova programuvannyarozumnih kontraktiv dlya platformi Ethereum SolidityParadigmaob yektno oriyentovanaData poyavi2014Ostannij relizSistema tipizaciyistatichnaPid vplivom vidJavaScript C LicenziyaGNU GPL 3 1 Repozitorij vihidnogo kodugithub com ethereum solidityVebsajtsoliditylang orgIstoriyaMova bula zaproponovana v serpni 2014 roku Gejvinom Vudom Gavin Wood Nadali rozrobka movi bula vikonana pid kerivnictvom Kristiana Rajtviznera Christian Reitwiessner komandoyu Solidity v ramkah proyektu Ethereum Ce odna z chotiroh mov tri inshi Serpent LLL i Mutan sproyektovanih dlya translyaciyi v bajt kod virtualnoyi mashini Ethereum Otrimala shiroke poshirennya z poyavoyu tehnologij blokchejnu zokrema steka tehnologij na osnovi Ethereum dlya stvorennya programnogo zabezpechennya rozumnih kontraktiv OpisSolidity statichno tipizovana JavaScript podibna mova programuvannya stvorena dlya rozrobki rozumnih kontraktiv yaki pracyuyut na virtualnij mashini Ethereum EVM Programi na movi Solidity translyuyutsya v bajtkod EVM Solidity dozvolyaye rozrobnikam stvoryuvati samodostatni programi sho mistyat biznes logiku rezultuyuchu v tranzakcijni zapisi blokchejnu Vikoristannya sintaksisu ECMAScript za zadumom Vuda maye dopomogti prijnyattyu movi dijsnimi vebrozrobnikami Odnak na vidminu vid ECMAScript mova otrimala statichnu tipizaciyu zminnih i dinamichni tipi znachen Porivnyano z kompilovanimi v takij zhe bajt kod movami Serpent i Mutan mova Solidity maye vazhlivi vidminnosti Pidtrimuyutsya kompleksni zminni kontraktiv vklyuchayuchi dovilni iyerarhichni vidobrazhennya mappings i strukturi Kontrakti pidtrimuyut spadkuvannya vklyuchayuchi mnozhinne i C3 linearizaciyu Pidtrimuyetsya binarnij interfejs programuvannya ABI sho maye bezlich tipobezpechnih funkcij v kozhnomu kontrakti piznishe z yavivsya takozh i u Serpent Specifikovana sistema dokumentuvannya kodu dlya poyasnennya poslidovnosti viklikiv sho otrimala nazvu Specifikaciyi prirodnoyu movoyu Ethereum Ethereum Natural Format Specification Priklad programi na movi Solidity contract GavCoin mapping address gt uint balances uint constant totalCoins 100000000000 Endows creator of contract with 1m GAV function GavCoin balances msg sender totalCoins Send valueInmGAV 1000 fixed 0 3 GAV from the account of message caller address to an account accessible only by to address function send address to uint256 valueInmGAV if balances msg sender gt valueInmGAV balances to valueInmGAV balances msg sender valueInmGAV getter function for the balance function balance address who constant returns uint256 balanceInmGAV balanceInmGAV balances who Dostupni platformi rozrobkiMicrosoft Visual Studio EnterprisePrimitkihttps github com ethereum solidity blob develop LICENSE txt Solidity Solidity 0 2 0 documentation readthedocs io StackEdit Viewer Benoit Schweblin Stackedit io RJ Catalano one of the core developers see VoR0220 on github Ethereum s Solidity Now Available in Microsoft Visual Studio CCN Financial Bitcoin amp Cryptocurrency News Data zvernennya 1 travnya 2016 Microsoft Adds Ethereum to Windows Platform For Over 3 Million Developers CoinDesk Data zvernennya 1 travnya 2016 Microsoft adds Ethereum language Solidity to Visual Studio Ian Allison International Business Times 2016 30 March PosilannyaSolidity home and documentation Solidity source code 7 sichnya 2018 u Wayback Machine Solidity browser based compiler 8 sichnya 2018 u Wayback Machine