Solidity

Матеріал з Вікіпедії — вільної енциклопедії.
Перейти до навігації Перейти до пошуку
Solidity
Solidity logo.svg
Парадигма об'єктно-орієнтована
Дата появи 2014
Останній реліз 0.8.4 (21 квітня 2021)[1]
Система типізації статичнаd
Під впливом від JavaScript, C++
Ліцензія GNU General Public License, version 3.0d
Репозиторій вихідного коду github.com/ethereum/solidity
Вебсайт solidity.readthedocs.io

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. Release 0.8.4 — 2021.
  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. — Дата звернення: 01.05.2016.
  6. Microsoft Adds Ethereum to Windows Platform For Over 3 Million Developers // CoinDesk. — Дата звернення: 01.05.2016.
  7. Microsoft adds Ethereum language Solidity to Visual Studio / Ian Allison. — International Business Times, 2016. — 30 March.

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