Разработка смарт-контрактов в Ethereum - Тимур Машнин 3 стр.


В типичном платежном канале в цепочку блоков добавляются только две транзакции, но между участниками может быть сделано неограниченное или почти неограниченное количество платежей.

И примером такого решения служит сеть Lightning Network.

Сеть Lightning Network состоит из узлов и двунаправленных платежных каналов.

Платежный канал устанавливается между двумя узлами сети.

Каждый из двух узлов платежного канала блокирует в блокчейне Биткоина некоторую сумму средств для канала.

В дальнейшем пропускная способность канала будет определяться суммой заблокированных узлами средств.



Решение Ethereum расширяет эту концепцию платежного канала до смарт-контрактов.

Каналы состояния это расширение концепции платежного канала для любой транзакции на уровне приложения.

Механизм называется State Channel, поскольку состояние узла в основной цепочке блокируется при транзакции вне сети и периодически синхронизируется с соответствующими обновлениями с основной цепочкой.

Каналы состояния работают путем «блокировки» некоторой части состояния блокчейна в многосегментный контракт, контролируемый определенным набором участников.

Состояние, которое «блокировано», называется депозитом состояния.

Это может быть определенное количество эфира или токенов.

После того, как депозит заблокирован, участники канала используют обмен сообщениями вне сети, чтобы обменивать и подписывать действительные транзакции ethereum, не развертывая их в цепочку. Это транзакции, которые могут быть добавлены в цепочку в любое время.

Обновление состояния канала всегда осуществляется единогласным решением сторон.

Все стороны подписывают и сохраняют свои собственные копии каждой транзакции вне сети.

Поскольку эти транзакции происходят полностью вне блокчейна, они имеют нулевые транзакционные сборы, и их скорость ограничена только их базовым протоколом связи.



Примером реализации такого протокола служит сеть Raiden Network, работающая поверх Эфериума.

Еще один подход к увеличению скорости обработки транзакций называется Sharding.

В настоящее время каждый отдельный узел, работающий в сети Ethereum, должен обрабатывать каждую транзакцию, проходящую через сеть.

Это дает блокчейну высокую степень безопасности из-за тотальной валидации, но в то же время это означает, что весь блокчейн так же быстр, как его отдельные узлы, но не сумма этих узлов.

То есть скорость блокчейна ограничивается скоростью отдельного узла сети.

В настоящее время транзакции Эфериума обрабатываются не параллельно, и каждая транзакция выполняется последовательно в глобальном масштабе.

Поэтому подход заключается в blockchain sharding, где мы разбиваем все состояние сети на кучу разделов, называемых shards, которые содержат свою собственную независимую часть состояния и историю транзакций.

В этой системе определенные узлы обрабатывают транзакции только для определенных shards, тем самым в целом увеличивая пропускную способность транзакций.

Sharding является перспективным механизмом для масштабирования блокчейна.

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

Децентрализованные приложения

Для понятия децентрализованного приложения может быть не одно определение.



Тем не менее, у децентрализованных приложений есть общие черты:

Это открытый исходный код. В идеале код должен быть самоподдерживаемым и все изменения в коде должны определяться консенсусом или большинством его пользователей. И код должен быть доступен для проверки.

Децентрализация. Все записи о работе приложения должны храниться в общедоступной и децентрализованной цепочке блока.

Валидаторы цепочки блоков должны поощряться.

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

Например, Bitcoin использует Proof of Work (PoW), и Ethereum в настоящее время использует Proof of Work с планами гибридного Proof of Work/Proof of Stake (PoS) в будущем.

Если мы придерживаемся вышеприведенного определения, первым децентрализованным приложением был фактически сам биткойн.

Биткойн это самоподдерживающийся публичный журнал, который позволяет эффективные транзакции без посредников и централизованных органов.

Чтобы запустить проект децентрализованного приложения необходимо:

Создать технический документ белые страницы или белую книгу.

Ваш технический документ должен обозначить задачу, которую вы хотите решить.

Он должен четко указать намерения и цели приложения.

Опишите план распределения токенов и как вы собираетесь это делать.

Определите механизм достижения консенсуса и наймите свою команду менеджеров и разработчиков.

Будьте честны с любыми техническими трудностями, которые вы предвидите, и четко изложите свои технические требования.

Откройте дискуссию по своему плану и сформируйте сообщество.

Получите обратную связь и соответствующим образом переработайте свой план.

После того, как приложение наберет достаточный импульс, определите дату продажи токенов.

Веб-сайт продажи токенов должен иметь всю информацию, которая может понадобиться инвесторам.

Начните разработку и приветствуйте новых разработчиков.

Децентрализованное приложение нуждается в первоначальном предложении монет или Initial Coin Offering (ICO).

Появление нового приложения в сообществе blockchain называется ICO.

ICO является мероприятием по сбору средств, которое основано на продаже токенов, которые потенциально могут принести в будущем прибыль для хорошо осведомленных и смелых инвесторов.

В ICO цена токена произвольно определяется командой, запускающей приложение.

После того, как токен регистрируется на бирже, его цена затем корректируется торгами.

Конечная стоимость токена будет определяться участниками сети.

Независимо от точности оценки токена ICO, остается фактом, что сам ICO является движущим силой блокчейна.

ICO необходимый катализатор для открытия возможностей и расширения стоимости, которую предлагает блокчейн.



Итак, что такое Dapp?

Dapp или децентрализованное приложение решает задачу, которая требует использования функций blockchain и инфраструктуры blockchain для реализации своей цели.

Как правило, у Dapp есть веб-интерфейс, а также блокчейн и код, их соединяющий.

В такой архитектуре веб-интерфейс Dapp передает внешние действия от пользователей в инфраструктуру blockchain и возвращает ответ на них.

В Эфериуме Dapp инициирует транзакции для вызова функций в смарт-контракте.

Это, в свою очередь, записывает транзакции и изменение состояния в цепочке блоков.

И внешний интерфейс Dapp может быть таким же простым, как интерфейс командной строки.

Или это может быть сложное веб-приложение или мобильное приложение.

Инструменты разработки

Embark это платформа, которая позволяет вам легко разрабатывать и развертывать децентрализованные приложения (DApps).

С Embark вы можете автоматически развертывать смарт контракты и использовать их в вашем JS-коде.

Embark позволяет следить за изменениями в смарт контракте, и, если вы обновите контракт, Embark автоматически заново развернет смарт контракт и приложение.

EtherScripter инструмент визуального создания смарт контрактов для Ethereum.

Truffle это среда разработки и платформа тестирования для Ethereum.

Populus это фреймворк разработки смарт контрактов для Ethereum.

Mist браузер для децентрализованных веб-приложений.

Parity быстрый и легкий клиент Ethereum, который можно использовать для доступа к децентрализованным приложениям.



Geth клиент Ethereum, работающий из командной строки.

TestRPC это инструмент Truffle, который позволяет одной командой развернуть приватный блокчейн с включенным RPC протоколом, десятком заранее созданных аккаунтов, работающим майнером и так далее.

Remix самая популярная браузерная среда разработки для создания смарт контрактов.

Введение в Ethereum

В Ethereum смарт контракты это скрипты, которые могут обрабатывать деньги.

Эти контракты соблюдаются и заверяются сторонами, которых мы называем майнерами.

Майнеры добавляют транзакцию (выполнение смарт-контракта, оплату криптовалютой и т. д.) в публичную книгу, которая называется блоком. Блоки образуют блокчейн.

За добавление транзакции майнерам нужно оплатить что-то вроде «газа», стоимость которого определяется в контракте.

Когда вы публикуете смарт-контракт или выполняете смарт-контракт, или переводите деньги на другой аккаунт, вы платите некоторый эфир, который преобразуется в газ.



«Газ»  это название специальной единицы, используемой в Эфириуме.

Назад Дальше