Loading...
Практика

Lity. Новый язык смарт-контрактов

На данный момент в сети Ethereum опубликовано более чем 1700 децентрализованных приложений (DApps), и их число увеличивается. И хотя все Dapps полагаются на смарт контракты, надежность самих смарт контрактов стоит под вопросом — киберпреступники заработали уже более миллиарда долларов на их взломах.

Для того, чтобы создать жизнеспособный смарт контракт, программисту нужно выучить совершенно новый язык программирования “Solidity”, малейшая ошибка при написании смарт контракта на Solidity может привести к катастрофическим последствиям – утечке информации и/или высокой стоимости транзакции. Недавно обнаруженный баг в смарт контрактах Parity привел к тому, что компания потеряла более полумиллиона эфира (ETH) стоимостью более $169 миллионов.

Поскольку подобные инциденты случаются все чаще, мнение сообщества Ethereum о Solidity поменялось в худшую сторону. Смарт-контракты, написанные на Solidity испытывают проблемы безопасности, особенно проблему целочисленного переполнения. Хакеры без особого труда находят недочеты в контрактах и крадут миллионы долларов. Многие из этих взломов произошли из-за ошибок, сделанных программистами при написании кода на Solidity.

Например, the Beauty Chain (BEC) была очень известной криптовалютой в Китае, в первый день продаж на бирже OKeX ее цена выросла на 4000%. С максимальной рыночной стоимости в $70 млрд компания в один момент опустилась до $2 млрд, когда цена ее токенов стала равна нулю. Это произошло из-за бага в смарт-контракте ECR20. В случае BEC, разработчик добавил к контракту метод под названием “batchTransfer()”. Этот метод был предназначен для облегчения передачи токена сразу нескольким лицам. Однако разработчик сделал критическую ошибку в следующей строке кода:  uint256 amount = uint256(cnt) * _value;

Чтобы решить проблемы, стоящие перед смарт-контрактами, написанными на Solidity, был создан язык под названием “Lity”. Этот язык используется для разработки смарт контрактов и децентрализованных приложений на блокчейне CyberMiles. Lity состоит из динамически расширяемого языка, компилятора и работы виртуальной машины. Это означает, что все существующие программы на Solidity теперь могут работать без изменений на виртуальной машине CyberMiles (CVM).

Язык Lity более гибкий, более надежный и безопасный, чем Solidity. Например, Lity поддерживает функции нового языка, которые могут быть добавлены при помощи технологии over-the-air. Алгоритмы публичных/приватных ключей на сети Ethereum очень долгие и дорогостоящие. Сеть попросту не может поддерживать многие виды приложений. При помощи одной из новых функций, известной как “libENI” время, необходимое на совершение этих операций может быть сокращено до пары миллисекунд (в 10000 раз быстрее, чем сейчас). Эти операции также будут стоить значительно дешевле.

Улучшение в вычислительной способности Lity имеет огромный потенциал для применения в обмене криптоактивами между блокчейнами, а также для включения офф-чейн данных в блокчейн транзакции. В конце концов компилятор Lity проверяет коды в контрактах ERC 20 и ERC 721 на все известные баги и ошибки. А виртуальная машина автоматически предотвращает проблемы вроде целочисленного переполнения или аннулирования владельца контракта.

К сожалению, Solidity стал козлом отпущения для всех проблем, найденных в современных смарт-контрактах. Для того, чтобы в будущем обеспечить надежную работу подобных контактов, были созданы новые языки программирования вроде Lity. Известно, также, что фонд Ethereum и сам ищет пути для решения данных проблем. Его глава работает над внедрением “Casper” – механизма, при помощи которого Ethereum постепенно перейдет на консенсус PoS. Руководство фонда считает эти изменения необходимыми для того, чтобы решить многие проблемы, связанные с PoW. Фонд CyberMiles, однако, уже сообщил о том, что он нашел решение проблемы – рабочая модель DPoS.

Источник: HackerNoon