Interested Article - Solidity
- 2020-12-02
- 1
Solidity — объектно-ориентированный , предметно-ориентированный язык программирования самовыполняющихся контрактов для платформы Ethereum .
История
Язык был предложен в августе 2014 года Гэйвином Вудом (Gavin Wood ). В дальнейшем разработка языка была выполнена под руководством Кристиана Райтвизнера (Christian Reitwiessner) командой Solidity в рамках проекта Ethereum . Это один из четырёх языков, наряду с Serpent, LLL и Mutan, спроектированных для трансляции в байт-код виртуальной машины Ethereum . Получил широкое распространение с появлением технологий блокчейна , в частности стека технологий на основе Ethereum , для создания программного обеспечения умных контрактов .
Описание
Статически типизированный JavaScript-подобный язык программирования, создан для разработки самовыполняющихся контрактов , исполняющихся на виртуальной машине Ethereum (EVM). Программы транслируются в байткод EVM. Позволяет разработчикам создавать самодостаточные приложения, содержащие бизнес-логику, результирующую в неотменяемые транзакционные записи блокчейна .
Использование синтаксиса ECMAScript по замыслу Вуда должно помочь принятию языка действительными веб-разработчиками. Однако, в отличие от ECMAScript, язык получил статическую типизацию переменных и динамические типы возвращаемых значений. По сравнению с компилируемыми в такой же байт код языками Serpent и Mutan язык имеет важные отличия. Поддерживаются комплексные переменные контрактов, включая произвольные иерархические отображения (mappings) и структуры. Контракты поддерживают наследование, включая множественное и C3-линеаризацию . Поддерживается бинарный интерфейс программирования (ABI), имеющий множество типобезопасных функций в каждом контракте (впоследствии появился также и в Serpent). Специфицирована система документирования кода для пользовательского пояснения последовательности вызовов, получившая название «Спецификации на естественном языке Ethereum» (Ethereum Natural Specification Format) В Solidity вместо привычных классов объявляются контракты (contract). Существуют библиотеки для написания смарт-контрактов такие как: Open Zeppelin, Truffle. Библиотеки позволяют создать свою монету (токен) на основе готовых шаблонов, со всеми спецификациями (ERC20) и проверками на безопасность (библиотека safemath).
Контракты в solidity могут наследоваться друг на друга. Это значит, что функции и переменные контракта, от которого мы наследуемся, будут доступны в контракте, который наследует. В solidity, как и в C++, есть множественное (ромбовидное) наследование.
contract StandardToken is ER7C5F, BasicToken {
mapping (address => mapping (address => uint256)) allowed;
//
}
contract MintableToken is StandardToken, Ownable {
event Mint(address indexed to, uint256 amount);
event MintFinished();
bool public mintingFinished = false;
modifier canMint() {
require(!mintingFinished);
_;
}
//
}
Пример программы на языке Solidity :
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];
}
};
Доступные платформы разработки
- Microsoft Visual Studio
- Enterprise
Примечания
- — 2024.
- . readthedocs.io . Дата обращения: 19 ноября 2016. 23 ноября 2016 года.
- Benoit Schweblin. . stackedit.io . Дата обращения: 19 ноября 2016. 1 апреля 2016 года.
- RJ Catalano, one of the core developers, see VoR0220 on github
- . CCN: Financial Bitcoin & Cryptocurrency News . Дата обращения: 1 мая 2016. Архивировано из 18 апреля 2016 года.
- от 16 августа 2016 на Wayback Machine , accessed 23 April 2016.
- . CoinDesk . Дата обращения: 1 мая 2016. 9 января 2018 года.
- Allison, Ian . (30 марта 2016). Дата обращения: 11 мая 2016. 29 мая 2016 года.
Литература
- Chris Dannen. introducing Ethereum and Solidity: Foundations of Cryptocurrency and Blockchain Programming for Beginners. — 2017. — С. 256. — ISBN 978-5-8459-1349-4 .
- Siraj Raval. Decentralized Applications. — « Apress », 2016. — С. 118. — ISBN 978-1-491-92454-9 .
- Акст Р. Что такое Смарт-контракт. или Ethereum за час. — 2017. — С. 19. — ISBN 978-5-4485-2907-8 .
- Равал С. Децентрализованные приложения. Технология Blockchain в действии. — 2017. — С. 240. — ISBN 978-5-496-02988-9 .
Ссылки
- 2020-12-02
- 1