Содержание
Майкл Малдерс, блокчейн-разработчик в компании The Ledger, проанализировал самые перспективные из существующих платформ для смарт-контрактов и рассказал на что стоит обратить внимание в первую очередь.
Ethereum — проверенный выбор
Используя платформу Ethereum, можно не сомневаться в ее работе. Ethereum — это Золотой Стандарт мира смарт-контрактов, а платформа имеет самую крупную рыночную капитализацию среди конкурентов. Также большая часть токен-сейлов происходит на данной платформе с использованием токенов стандарта ERC-20.
Однако, у данного стандарта есть несколько серьезных недостатков, которые в прошлом уже приводили к масштабным потерям. Причиной тому служит тот факт, что стандарт ERC-20 предполагает два этапа проведения транзакции с токеном:
- transfer(): Отправка токенов на чей-то адрес.
- approve() + transferFrom(): Депозит токенов в смарт-контракт.
Но что если при выполнении команды transfer() токены случайно были отправлены в смарт-контракт? Данная транзакция пройдет и будет одобрена, однако смарт-контракт принимающей стороны ее не распознает.
«Например, если отправить токены на контракт децентрализованного обменника, то контракт получит эти токены, но обменник не добавит их на ваш баланс. Более того, если такой контракт не сможет реализовать функцию экстренного вывода токенов, то в таком случае будет невозможно вернуть свои средства, которые будут безвозвратно утеряны. Из-за этого бага экосистема Ethereum уже потеряла миллионы долларов».
О такой проблеме написал разработчик нового стандарта ERC223, известный на Reddit и GitHub как Dexaran. Именно он впервые известил криптосообщество Ethereum о вышеупомянутой проблеме и предложил стандарт ERC223 как ее решение. Также для разработчиков Ethereum в ноябре 2017 года был представлен стандарт ERC777. Краткое сравнение этих стандартов:
- ERC223 — данный улучшенный стандарт предлагает решение проблемы ERC20, где пользователи могут ошибочно использовать одну из двух функций для отправки монет и заменить ее единственной transfer(), которая в случае некорректной транзакции будет выдавать ошибку и отменять ее, таким образом защищая средства всех сторон. Фокусируется на безопасности.
- ERC777 — этот стандарт решает такие проблемы ERC20, как отсутствие механизмов обработки транзакций. Фокусируется на массовой адаптации.
Очевидно, что сообществу Ethereum еще только предстоит разработать и внедрить новые стандарты для безопасных и улучшенных токенов.
NEM
Одно из ключевых преимуществ платформы NEM — высокая масштабируемость сети. В то время как Ethereum проводит порядка 15 транзакций в секунду, блокчейн NEM может обрабатывать до 4000 транзакций за тот же промежуток времени. Фонд NEM приложил колоссальные усилия, чтобы пользователи платформы могли не волноваться о технических проблемах. Но несмотря на то, что NEM быстрее, надежнее и проще в использовании, Ethereum предлагает более широкие возможности для программирования и запуска DApps.
Главное различие между двумя платформами заключается в том, что Ethereum использует смарт-контракты на блокчейне, в то время как NEM работает непосредственно с кодом блокчейна. По мнению некоторых участников крипторынка, это делает платформу менее децентрализованной, однако этот метод имеет множество преимуществ в виде высокого уровня безопасности, легких обновлений, высокой скорости проведения транзакций и более легкого кода.
По словам Nemario, пользователя Reddit, код смарт-контракта можно обновить в любой момент, без внесения изменений в работу блокчейна. Но невозможно выполнить обратные транзакции, что делает платформу NEM менее децентрализованной. Однако право использования мультиподписей и смарт-активов минимизирует последствия данной проблемы.
Благодаря системе смарт-активов, представленной в виде приложений по управлению данными, на платформе NEM пользователи могут создать токены, информационные записи и системы голосования всего за пару кликов. В то время как целевая аудитория Ethereum — это компании, планирующие запуск собственных внутренних сетей в ближайшие 5−10 лет, клиенты NEM — это компании, которым нужно простое, быстрое и безопасное решение уже сейчас.
Hyperledger Fabric
Разработчики Hyperledger Fabric (HLF) любят называть смарт-контракты платформы «чейн-кодом». HLF — это проект, основанный Linux Foundation в 2015 году для разработки и внедрения блокчейн-сетей для корпоративных нужд. В связи с чем предлагаемые решения HLF отличаются гибкостью, необходимой для работы с бизнесами, чего не предлагают другие платформы.
В Hyperledger Fabric используется язык программирования Go, соответственно, и все смарт-контракты платформы поддерживают данный язык. Одним из ключевых преимуществ данного языка является высокая скорость компиляции. По мнению Малдерса, этот фактор существенно облегчает написание чейн-кодов.
Четыре наиболее важные функции чейн-кодов:
- PutState: Создание новых активов или обновление существующих.
- GetState: Возвращение актива.
- GetHistoryForKey: Запрос на историю внесенных изменений.
- DelState: Удаление актива.
Стоит отметить, что функция DelState не удаляет/редактирует блок. HLF используют базу данных состояний для хранения ключей и их значений. Функция DelState удаляет ключ и его значение из базы данных состояний, при этом не меняя блоки в цепочке. Сам процесс удаления ключа и его значения будет сохранен в виде транзакции на блокчейне.
Более того, доступ к истории ключа может быть получен даже после того, как ключ был удален. Для этого существует функция GetHistoryForKey(), в ходе которой также добавляется индикатор IsDeleted к удаленному ключу. Таким образом, можно создать ключ, удалить его, а потом восстановить, при этом функция GetHistoryForKey() будет отслеживать все действия.
Смарт-контракты Stellar
Смарт-контракты платформы Stellar (SSC) существенно отличаются от смарт-контрактов Ethereum. Они не являются полными по Тьюрингу и используются для осуществления договоренностей между несколькими сторонами, чьи действия подкреплены транзакциями. Для сравнения:
Так, в Stellar cреднее время подтверждения транзакции — 5 секунд, а в Ethereum — 3.5 минуты. В Stellar незначительная цена транзакции — .00001 XLM ~= $0.0000002. 100,000 транзакций на Stellar стоят один цент, комиссия за вычисления не взимается. В то время как в Ethereum она зависит от сложности транзакции, ее скорости и курса ETH и сейчас составляет порядка $0.008. Что касается возможностей, то в Stellar для инструкции по разработке смарт-контрактов есть Stellar Developer Guide, описывающий возможности и абстракции. Ethereum имеет безграничные возможности. А безопасность децентрализованной сети Stellar обеспечивается любой нодой с Stellar Core, и каждый пользователь может подтверждать транзакции. Для повышения уровня безопасности пользователи могут сами выбирать валидаторов. Более того, атомарные транзакции Stellar состоят из простых и декларированных операций, что ведет к более высокому уровню безопасности и облегчает аудит. В Ethereum любой пользователь может подтверждать транзакции. Функций для выбора валидаторов не предусмотрено. А программирование полных по Тьюрингу контрактов затрудняет аудит кода и повышает уязвимость.
SSC могут быть написаны на любом языке, для которого сообщество Stellar предоставит API, — JavaScript, Python, Golang, PHP и так далее. Так, смарт-контракты Stellar на PHP выглядят следующим образом. SSC являются набором транзакций, объединенных и выполняемых благодаря разнообразным ограничениям. В открытой документации Stellar описывают все ограничения, которые могут быть использованы для создания SSC. Например:
- Мультиподписи — схема реализации электронных подписей, предполагающая участие различных сторон в транзакции. Все стороны для достоверности предоставляют свои ключи и подписывают транзакцию для ее выполнения.
- Группировка/ Атомарность — благодаря данной функции, транзакция может включать сразу несколько операций. Атомарность гарантирует, что если группа операций будет отправлена на включение в сеть и одна из операций будет отклонена, то все операции в группе будут отклонены.
- Последовательность — концепция последовательности представлена в сети Stellar в виде порядкового номера. Благодаря порядковому номеру можно гарантировать, что определенные транзакции не попадут в сеть, если до этого альтернативные ей транзакции были отправлены на рассмотрение.
- Временные рамки — являются временными ограничениями, в течение которых транзакция считается действующей. Благодаря этой функции в SCC можно работать с конкретными временными промежутками.
В заключение
Стоит отметить, что на данный момент на рынке успешно развивается огромное количество подобных платформ.
Выбор платформы для работы со смарт-контрактами в первую очередь зависит от целей и нужд каждого пользователя. Однако, в любом случае для оценки потенциальной платформы стоит рассмотреть такие аспекты, как SDK, наличие необходимой документации и выбор предложенных инструментов.