Твердость - Solidity
Логотип языка Solidity | |
Интернет сайт | github |
---|---|
Под влиянием | |
JavaScript, C ++, Python, PowerShell |
Твердость это объектно-ориентированный язык программирования для написания смарт-контракты.[1][2] Используется для реализации смарт-контрактов.[3] на различных блокчейн платформы, в первую очередь, Ethereum.[нужна цитата ] Его разработали Кристиан Рейтвисснер, Алекс Берегшаси и несколько бывших Ethereum основные участники, позволяющие писать смарт-контракты на платформах блокчейн, таких как Ethereum.[4]
История
Solidity был первоначально предложен в августе 2014 г. Гэвин Вуд;[5][неосновной источник необходим ][6][неуместное цитирование ] Позднее язык был разработан командой Solidity проекта Ethereum под руководством Кристиана Рейтвисснера.
В настоящее время Solidity является основным языком Ethereum, а также других частных блокчейнов, работающих на платформах, которые конкурируют с Ethereum, таких как Monax и его Hyperledger Блокчейн Burrow, использующий Tendermint для достижения консенсуса. БЫСТРЫЙ развернул доказательство концепции, используя Solidity, работающий на Burrow.[3][неосновной источник необходим ][7][ненадежный источник ]
А Корнелл Университет исследователь заявил, что Solidity частично виноват в DAO взлом, произошедший в 2016 году. Он заявил: «На самом деле это не было недостатком или эксплойтом в самом контракте DAO: технически виртуальная машина Ethereum (EVM) работала, как задумано, но Solidity вносил недостатки безопасности в контракты, которые были не только сообществу не хватает, но не хватает самим разработчикам языка ".[8]
Описание
Солидность - это статически типизированный язык программирования, предназначенный для разработки смарт-контрактов, работающих в EVM.[9][10] Solidity компилируется в байт-код который исполняется в EVM. С Solidity разработчики могут писать приложения, которые реализуют самодостаточную бизнес-логику, воплощенную в смарт-контрактах, оставляя достоверную и надежную запись транзакций.[11] Утверждается, что писать смарт-контракты на языках, специфичных для смарт-контрактов, таких как Solidity, легко (якобы для тех, кто уже имеет навыки программирования).[12]
По заявлению Wood, он разработан с учетом ECMAScript синтаксис, чтобы сделать его знакомым для существующих веб-разработчиков;[нужна цитата ] в отличие от ECMAScript, у него есть статическая типизация и переменные возвращаемые типы. По сравнению с другими языками, нацеленными на EVM того времени, такими как Serpent и Mutan, Solidity содержал ряд важных отличий. Сложные переменные-члены для контрактов, включая произвольно иерархические отображения и структуры были поддержаны. Сопровождение контрактов наследование, включая множественное наследование с C3 линеаризация. An двоичный интерфейс приложения (ABI) облегчение нескольких типобезопасный были также введены функции в рамках одного контракта (и позже поддерживаются Serpent). Система документации для определения ориентированного на пользователя описания разветвлений вызова метода также была включена в предложение, известное как «Спецификация естественного языка».[13][14][неосновной источник необходим ]
Пример программы Solidity:[15][16]
прагматическая солидность>=0.5.0<0.7.0;договорМонета{// Ключевое слово public делает переменные// доступен из других контрактовадресобщественный чеканка;отображение(адрес=>uint)общественныйостатки;// События позволяют клиентам реагировать на определенные// объявляемые вами изменения контрактамероприятиеОтправлено(адресиз,адреск,uintколичество);// Код конструктора запускается только тогда, когда контракт// созданоконструктор()общественный{чеканка=msg.sender;}// Отправляет количество вновь созданных монет на адрес// Может быть вызван только создателем контрактафункциямята(адресприемник,uintколичество)общественный{требовать(msg.sender==чеканка);требовать(количество<1e60);остатки[приемник]+=количество;}// Отправляет количество существующих монет// от любого вызывающего абонента на адресфункцияОтправить(адресприемник,uintколичество)общественный{требовать(количество<=остатки[msg.sender],"Недостаточный баланс.");остатки[msg.sender]-=количество;остатки[приемник]+=количество;испускаютОтправлено(msg.sender,приемник,количество);}}
Доступность платформы разработки
- Microsoft Visual Studio[нужна цитата ]
- Код Microsoft Visual Studio[17]
- ConsenSys Предприятие[10]
- Нежная мята на Microsoft Azure[нужна цитата ]
- ErisDB, автор: AWS[нужна цитата ]
Платформы блокчейн
Solidity доступен на:
- Ethereum
- Ethereum Classic
- Tendermint и ErisDB (версия Tendermint)[нужна цитата ]
- Контрагент (который работает на Биткойн )[нужна цитата ]
- Трон
Рекомендации
- ^ Эллисон, Ян (12 августа 2016 г.). «Эксперт по блокчейну PwC выявляет источники двусмысленности в смарт-контрактах». IBTimes (Новости). Получено 14 декабря 2016.
- ^ Афшар, Вала; Евангелист, ContributorChief Digital; Salesforce (17 июля 2017 г.). «Ethereum - вторая самая дорогая цифровая валюта после биткойнов». HuffPost. Получено 10 апреля 2019.
- ^ а б «SOFE Berlin: Swift представляет доказательство концепции блокчейна». Finextra (Новости). 24 ноября 2016 г.. Получено 24 ноября 2016.
- ^ «Список соавторов».
- ^ Бенуа Швеблин. "StackEdit Viewer". stackedit.io.
- ^ «Блокчейн и большие данные, на которые стоит обратить внимание в наступающем году». Бизнес. International Business Times. 20 декабря 2016 г.. Получено 28 сентября 2017.
- ^ КЕНТУРИС, КРИС (13 декабря 2016 г.). «Смарт-контракты Blockchain: что умно, а что нет». Финопс (Новости). Получено 14 декабря 2016.
- ^ Финли, Клинт (18 июня 2016 г.). «Взлом на 50 миллионов долларов ТОЛЬКО показал, что ДАО был СЛИШКОМ ЧЕЛОВЕКОМ». Проводной (Новости). Получено 18 февраля 2017.
- ^ «Учебное пособие по Hyperledger Fabric - Создайте приложение блокчейн для получения баллов лояльности». Разработчик IBM. Получено 10 апреля 2019.
- ^ а б Эллисон, Ян (30 марта 2016 г.). «Microsoft добавляет в Visual Studio Solidity на языке Ethereum». International Business Times. Получено 11 мая 2016.
- ^ Эллисон, Ян (30 марта 2016 г.). «Microsoft добавляет в Visual Studio Solidity на языке Ethereum». International Business Times. Получено 11 мая 2016.
- ^ Могаяр, Уильям (26 апреля 2016 г.). Бизнес-блокчейн: перспективы, практика и применение следующей интернет-технологии. Wiley Publishing. п. 58. ISBN 978-1119300311.
- ^ Капетаниос-2008-06-27, п. 309.
- ^ Эфириум. «Формат естественной спецификации Ethereum». GitHub.
- ^ «Пример субвалюты из документации Solidity».
- ^ Шнайер, Картикеян; Шнайер, Антуан; Бхаргаван, Седрик; Делинья-Лаво, Анита; Фурнет, Голламуди; Шнайер, Брюс; Растоги, Надим; Сибут-Пиноте, Асим; Растоги1, Томас; Свами, Нихил; Занелла-Бегелин, Сантьяго (27 августа 2016 г.). «Краткая статья: формальная проверка смарт-контрактов» (PDF). Microsoft Research, Французский институт исследований в области компьютерных наук и автоматизации, Гарвардский университет. В архиве (PDF) из оригинала 27 августа 2016 г.
- ^ PatAltimore. «Используйте код Visual Studio для подключения к службе цепочки блоков Azure - цепочка блоков Azure». docs.microsoft.com. Получено 27 марта 2020.