Jump to content

Солидность

Солидность
Логотип языка Solidity
Парадигма Императив
Разработано Гэвин Вуд
Разработчик Кристиан Райтвиснер, [1] Алекс Берегзаси, [2] и несколько бывших основных участников Ethereum .
Впервые появился август 2014 г.
Стабильная версия
0.8.26 [3] / 21 мая 2024 г .; 2 месяца назад ( 21 мая 2024 г. )
Язык реализации С++ [4]
Лицензия Стандартная общественная лицензия GNU v3.0 [5]
Расширения имен файлов .солнце
Веб-сайт Soliditylang .org
Под влиянием
JavaScript , С++ , Питон

Solidity язык программирования для реализации смарт-контрактов. [6] [7] на различных блокчейн- платформах, в первую очередь на Ethereum . [8] Solidity распространяется по лицензии GNU General Public License v3.0 . [9] Solidity был разработан Гэвином Вудом. [10] [ нужен неосновной источник ] и разработан Кристианом Рейтвисснером, Алексом Берегсаси и несколькими бывшими основными участниками Ethereum . [11] Программы в Solidity запускаются на виртуальной машине Ethereum или на совместимых виртуальных машинах.

Solidity был предложен в августе 2014 года Гэвином Вудом. [12] [ нужен неосновной источник ] Позже язык был разработан командой Solidity проекта Ethereum под руководством Кристиана Райтвисснера.

Solidity — это основной язык, используемый для разработки смарт-контрактов для Ethereum , а также других частных блокчейнов , таких как ориентированный на предприятия блокчейн Hyperledger Fabric. SWIFT развернула проверку концепции, используя Solidity, работающую на Hyperledger Fabric. [13] [14]

Описание

[ редактировать ]

Solidity — это статически типизированный язык программирования , предназначенный для разработки смарт-контрактов , которые работают на виртуальной машине Ethereum (EVM) или совместимых виртуальных машинах. [15]

Solidity использует синтаксис, подобный ECMAScript , что делает его знакомым существующим веб-разработчикам; [16] однако, в отличие от ECMAScript, он имеет статическую типизацию и переменные типы возврата. Solidity отличается от других языков, ориентированных на EVM, таких как Serpent и Mutan , в некоторых важных отношениях. Он поддерживает сложные переменные-члены для смарт-контрактов , включая произвольные иерархические отображения и структуры . Solidity Смарт-контракты поддерживают наследование , включая множественное наследование с линеаризацией C3 . Solidity представляет двоичный интерфейс приложений (ABI), который обеспечивает выполнение нескольких типобезопасных функций в рамках одного смарт-контракта (позже это также было поддержано Serpent ). Предложение Solidity также включает «Спецификацию естественного языка», систему документации для определения ориентированных на пользователя описаний разветвлений вызовов методов . [17] [18] [ нужен неосновной источник ]

Пример программы Solidity: [19] [20]

// SPDX-License-Identifier: GPL-3.0pragma solidity ^0.8.4;contract Coin {    // The keyword "public" makes variables    // accessible from other contracts    address public minter;    mapping(address => uint) public balances;    // Events allow clients to react to specific    // contract changes you declare    event Sent(address from, address to, uint amount);    // Constructor code is only run when the contract    // is created    constructor() {        minter = msg.sender;    }    // Sends an amount of newly created coins to an address    // Can only be called by the contract creator    function mint(address receiver, uint amount) public {        require(msg.sender == minter);        balances[receiver] += amount;    }    // Errors allow you to provide information about    // why an operation failed. They are returned    // to the caller of the function.    error InsufficientBalance(uint requested, uint available);    // Sends an amount of existing coins    // from any caller to an address    function send(address receiver, uint amount) public {        if (amount > balances[msg.sender])            revert InsufficientBalance({                requested: amount,                available: balances[msg.sender]            });        balances[msg.sender] -= amount;        balances[receiver] += amount;        emit Sent(msg.sender, receiver, amount);    }}

IDE для разработки

[ редактировать ]

Расширения редактора

[ редактировать ]

Блокчейн-платформы

[ редактировать ]

Solidity доступен на:

О многих свойствах безопасности смарт-контрактов по своей сути сложно рассуждать напрямую, а полнота по Тьюрингу Solidity означает, что проверку произвольных свойств невозможно автоматизировать . Современные автоматизированные решения для анализа безопасности смарт-контрактов могут пропускать критические нарушения, давать ложные срабатывания и не обеспечивать достаточного покрытия кода в реалистичных контрактах. [28] Solidity обвиняют в подверженной ошибкам реализации смарт-контрактов Ethereum из-за их нелогичного характера, отсутствия конструкций для решения проблем, специфичных для домена блокчейна, а также отсутствия централизованной документации об известных уязвимостях. [29]

В 2016 году исследователь Корнеллского университета заявил, что Solidity частично виновата во взломе The DAO , произошедшем в том году. Он заявил: «На самом деле это не был недостаток или эксплойт в самом контракте DAO: технически виртуальная машина Ethereum (EVM) работала так, как предполагалось, но Solidity вносила в контракты недостатки безопасности, которые не только были пропущены сообществом, но и пропущены». самими разработчиками языка». [30]

Сообщество разработчиков часто ссылается на то, что Solidity требует большого количества сторонних интерфейсов и API, а также на его неспособность создавать критически важные интеллектуальные контракты с интенсивным использованием информации.

  1. ^ «Вкладчики в Ethereum/solidity» . Гитхаб . Проверено 30 марта 2023 г.
  2. ^ «Вкладчики в Ethereum/solidity» . Гитхаб . Проверено 30 марта 2023 г.
  3. ^ «Выпуск 0.8.26» . 21 мая 2024 г. Проверено 25 мая 2024 г.
  4. ^ «Создавайте программное обеспечение лучше вместе» . Гитхаб . Проверено 30 марта 2023 г.
  5. ^ Язык контрактно-ориентированного программирования Solidity , Ethereum, 30 марта 2023 г. , получено 30 марта 2023 г.
  6. ^ Афшар, Вала (17 июля 2017 г.). «Эфириум — вторая по ценности цифровая валюта после биткойна» . ХаффПост . Проверено 10 апреля 2019 г.
  7. ^ «SOFE Berlin: Swift представляет доказательство концепции блокчейна» . Finextra (Новости). 24 ноября 2016 года . Проверено 24 ноября 2016 г.
  8. ^ Финли, Клинт. «Кто-то только что украл 50 миллионов долларов из крупнейшего краудфандингового проекта за всю историю. (Людям нельзя доверять)» . Проводной .
  9. ^ Язык контрактно-ориентированного программирования Solidity , Ethereum, 30 марта 2023 г. , получено 30 марта 2023 г.
  10. ^ Вуд, Гэвин (13 января 2015 г.). «Созданная твердость» . Эфириум Wiki (в архиве) . Проверено 23 марта 2024 г.
  11. ^ «Список участников» . Гитхаб .
  12. ^ «Гэвин Вуд» . gavwood.com . Архивировано из оригинала 30 марта 2023 года . Проверено 30 марта 2023 г.
  13. ^ Николич, Ивица; Коллури, Аашиш; Сергей, Илья; Саксена, Пратик; Хобор, Фома Аквинский (14 марта 2018 г.). «Обнаружение жадных, блудных и самоубийственных контрактов в больших масштабах». arXiv : 1802.06038 [ cs.CR ]. Различные исходные языки компилируются в семантику EVM, преобладающим из которых является Solidity.
  14. ^ «Westpac присоединяется к проверке концепции блокчейна SWIFT» . ЗДНет . Проверено 13 июля 2022 г.
  15. ^ «Учебное пособие по Hyperledger Fabric. Создайте блокчейн-приложение для получения баллов лояльности» . Разработчик IBM . Проверено 10 апреля 2019 г.
  16. ^ «Влияние языка — документация Solidity 0.8.17» . docs.soliditylang.org . Проверено 30 марта 2023 г.
  17. ^ Капетаниос-27 июня 2008 г. , с. 309.
  18. ^ эфириум. «Формат естественной спецификации Ethereum» . Гитхаб .
  19. ^ «Введение в смарт-контракты — документация Solidity 0.8.19» . docs.soliditylang.org . Проверено 30 марта 2023 г.
  20. ^ Шнайер, Картикеян; Шнайер, Антуан; Бхаргаван, Седрик; Делинья-Лаво, Анита; Фурне, Голламуди; Шнайер, Брюс; Растоги, Надим; Сибут-Пиноте, Асим; Растоги1, Томас; Свами, Нихил; Занелла-Бегелен, Сантьяго (27 августа 2016 г.). «Краткий доклад: формальная проверка смарт-контрактов» (PDF) . Microsoft Research, Французский институт исследований в области компьютерных наук и автоматизации, Гарвардский университет . Архивировано (PDF) из оригинала 27 августа 2016 г. {{cite journal}}: CS1 maint: числовые имена: список авторов ( ссылка )
  21. ^ «Ремикс — Ethereum IDE» . remix.ethereum.org . Проверено 30 марта 2023 г.
  22. ^ «EthFiddle — Solidity в браузере. На базе Loom Network» . ethfiddle.com . Проверено 30 марта 2023 г.
  23. ^ «солидность — Visual Studio Marketplace» . marketplace.visualstudio.com . Проверено 30 марта 2023 г.
  24. ^ «Solidity — плагин IntelliJ IDE | Торговая площадка» . Торговая площадка JetBrains . Проверено 30 марта 2023 г.
  25. ^ «Бинанс Смарт Чейн» . Гитхаб . 26 октября 2021 г.
  26. ^ Винья, Майкл Дж. Кейси и Пол (12 ноября 2014 г.). «BitBeat: Фирма-контрагент Биткойна 2.0 принимает программное обеспечение Ethereum» . Уолл Стрит Джорнал . ISSN   0099-9660 . Проверено 16 апреля 2021 г.
  27. ^ Свон, Мелани (2015). Блокчейн: проект новой экономики (1-е изд.). [Севастополь, Калифорния] ISBN  978-1-4919-2047-3 . OCLC   900781291 . {{cite book}}: CS1 maint: отсутствует местоположение издателя ( ссылка )
  28. ^ Цанков, Петар; Дэн, Андрей; Драхслер-Коэн, Дана; Жерве, Артур; Бюнцли, Флориан; Вечев, Мартин (15 октября 2018 г.). «Securify: практический анализ безопасности смарт-контрактов». Материалы конференции ACM SIGSAC 2018 по компьютерной и коммуникационной безопасности . Ассоциация вычислительной техники. стр. 67–82. arXiv : 1806.01143 . дои : 10.1145/3243734.3243780 . hdl : 10044/1/87935 . ISBN  978-1-4503-5693-0 . S2CID   46936025 .
  29. ^ Ацей, Никола; Бартолетти, М.; Чимоли, Тициана (2017). «Обзор атак на смарт-контракты Ethereum (SoK)». Принципы безопасности и доверия, 6-я Международная конференция, 2017, Труды . Конспекты лекций по информатике. стр. 164–186. дои : 10.1007/978-3-662-54455-6_8 . ISBN  978-3-662-54454-9 . S2CID   15494854 .
  30. ^ Финли, Клинт (18 июня 2016 г.). «Взлом на 50 миллионов долларов только что показал, что DAO был слишком человечным» . Проводной (Новости) . Проверено 18 февраля 2017 г.
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 7192de940d4d9ef3204a99819eb725e9__1718555820
URL1:https://arc.ask3.ru/arc/aa/71/e9/7192de940d4d9ef3204a99819eb725e9.html
Заголовок, (Title) документа по адресу, URL1:
Solidity - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)