WikiSort.ru - Программирование

ПОИСК ПО САЙТУ | о проекте
Solidity
Класс языка объектно-ориентированный
Выпуск
Испытал влияние JavaScript, C++
Лицензия GNU GPL 3
Сайт github.com/ethereum/solidity

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 Specification Format)

Пример программы на языке 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.5.4 — 2019.
  2. Solidity — Solidity 0.2.0 documentation. readthedocs.io.
  3. Benoit Schweblin. StackEdit Viewer. 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. http://rethink-iot.com/2016/04/01/hyperledger-blockchain-code-almost-comes-together-for-iot/, accessed 23 April 2016.
  7. Microsoft Adds Ethereum to Windows Platform For Over 3 Million Developers. CoinDesk. Проверено 1 мая 2016.
  8. Allison, Ian Microsoft adds Ethereum language Solidity to Visual Studio. International Business Times (30 марта 2016).

Данная страница на сайте WikiSort.ru содержит текст со страницы сайта "Википедия".

Если Вы хотите её отредактировать, то можете сделать это на странице редактирования в Википедии.

Если сделанные Вами правки не будут кем-нибудь удалены, то через несколько дней они появятся на сайте WikiSort.ru .




Текст в блоке "Читать" взят с сайта "Википедия" и доступен по лицензии Creative Commons Attribution-ShareAlike; в отдельных случаях могут действовать дополнительные условия.

Другой контент может иметь иную лицензию. Перед использованием материалов сайта WikiSort.ru внимательно изучите правила лицензирования конкретных элементов наполнения сайта.

2019-2024
WikiSort.ru - проект по пересортировке и дополнению контента Википедии