Solidity

Solidity
Парадигма об'єктно-орієнтована
Дата появи 2014
Останній реліз
Система типізації статична
Під впливом від JavaScript, C++
Ліцензія GNU GPL 3[1]
Репозиторій вихідного коду github.com/ethereum/solidity
Вебсайт soliditylang.org

Solidity — об'єктно-орієнтована та предметно-орієнтована мова програмування[2] розумних контрактів для платформи Ethereum.

Історія[ред. | ред. код]

Мова була запропонована в серпні 2014 року Гейвіном Вудом (Gavin Wood[3]). Надалі розробка мови була виконана під керівництвом Крістіана Райтвизнера (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[4]:

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];   }  }; 

Доступні платформи розробки[ред. | ред. код]

Примітки[ред. | ред. код]

  1. https://github.com/ethereum/solidity/blob/develop/LICENSE.txt
  2. Solidity — Solidity 0.2.0 documentation // readthedocs.io.
  3. StackEdit Viewer / Benoit Schweblin // Stackedit.io.
  4. RJ Catalano, one of the core developers, see VoR0220 on github
  5. Ethereum's Solidity Now Available in Microsoft Visual Studio // CCN: Financial Bitcoin & Cryptocurrency News. — Дата звернення: 1 травня 2016.
  6. Microsoft Adds Ethereum to Windows Platform For Over 3 Million Developers // CoinDesk. — Дата звернення: 1 травня 2016.
  7. Microsoft adds Ethereum language Solidity to Visual Studio / Ian Allison. — International Business Times, 2016. — 30 March.

Посилання[ред. | ред. код]