Solidity

Материал из Википедии — свободной энциклопедии
Перейти к: навигация, поиск
Solidity
Класс языка

объектно-ориентированный

Испытал влияние

JavaScript, C++

Сайт

github.com/ethereum/solidity

Solidity объектно-ориентированный, предметно-ориентированный язык программирования[1] самовыполняющихся контрактов для платформы Ethereum.

История[править | править вики-текст]

Язык был предложен в августе 2014 года Гэйвином Вудом (Gavin Wood[2]). В дальнейшем разработка языка была выполнена под руководством Кристиана Райтвизнера (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 Specification Format)

Пример программы на языке Solidity[3]:

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. Solidity — Solidity 0.2.0 documentation. readthedocs.io.
  2. Benoit Schweblin. StackEdit Viewer. stackedit.io.
  3. RJ Catalano, one of the core developers, see VoR0220 on github
  4. Ethereum's Solidity Now Available in Microsoft Visual Studio. CCN: Financial Bitcoin & Cryptocurrency News. Проверено 1 мая 2016.
  5. http://rethink-iot.com/2016/04/01/hyperledger-blockchain-code-almost-comes-together-for-iot/, accessed 23 April 2016.
  6. Microsoft Adds Ethereum to Windows Platform For Over 3 Million Developers. CoinDesk. Проверено 1 мая 2016.
  7. Allison, Ian Microsoft adds Ethereum language Solidity to Visual Studio. International Business Times (30 марта 2016).