Читаем Разработка смарт-контрактов в Ethereum полностью

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

Такие узлы называются легкими узлами.

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

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

Термин «транзакция» используется в Ethereum для ссылки на подписанный пакет данных, который хранит сообщение, отправляемое из внешнего аккаунта.

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

Контракт может получить доступ к данным, содержащимся в поле данных.

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

Контракт будет читать эти значения из данных сообщения и соответствующим образом размещать их в хранилище.

Контракты имеют возможность отправлять «сообщения» другим контрактам.

Эти сообщения – это виртуальные объекты, которые никогда не сериализуются и существуют только в среде исполнения Ethereum. Такое сообщение содержит информацию об отправителе сообщения, получателе сообщения, количество эфира для передачи вместе с сообщением, дополнительное поле данных и значение газа.

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

Как и транзакция, сообщение приводит к тому, что аккаунт получателя запускает свой код.

Таким образом, контракты могут иметь отношения с другими контрактами точно так же, как и внешние аккаунты.



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

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

Для написания контрактов рекомендуется высокоуровневый язык Solidity, код которого затем компилируется в язык виртуальной машины Ethereum.

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

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

Поверх сети Ethereum создаются три типа приложений.

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

Это включает в себя суб-валюты, финансовые деривативы, контракты хеджирования, сберегательные кошельки, и т. д.

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

Наконец, существуют такие приложения, как онлайн-голосование, которые не являются финансовыми.

Контракт сам по себе не является децентрализованным приложением.

Децентрализованное приложение состоим из комбинации контракта и графического интерфейса для использования этого контракта.

При этом интерфейс реализован как веб-страница HTML/CSS/JS со специальным Javascript API в виде библиотеки web3.js для работы с блок-цепочкой Ethereum.

Под капотом эта библиотека связывается с локальным узлом через вызовы remote procedure call RPC.

И такое приложение будет работать только в клиенте Ethereum, а не в обычном веб-браузере.

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

Одноранговый распределенный протокол для обмена сообщениями получил название whisper.

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

Одноранговый протокол для обмена статическими файлами получил название swarm.

Whisper – это одноранговый протокол для конфиденциального обмена сообщениями с коротким сроком жизни.

Заголовок сообщений (тема) в Whisper хэшируется, а сами сообщения могут быть зашифрованы с помощью ключей в целях защиты данных.

Swarm представляет собой мотивированный файлообмен.

Файлы делятся на части, хранящиеся на узлах сети.

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

Solidity Remix

Solidity – это высокоуровневый язык для виртуальной машины Ethereum с синтаксисом, похожим на JavaScript.

Программы на языке Solidity транслируются в байткод виртуальной машины Ethereum.



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

Перейти на страницу:

Похожие книги

Фотоприколы с помощью Photoshop
Фотоприколы с помощью Photoshop

Книга в доступной и юмористической форме раскроет перед вами волшебный мир компьютерной графики. В первой (теоретической) части вы познакомитесь с основными понятиями цифровой графики, интерфейсом программы Photoshop и принципами ее работы. Вторая (практическая) часть, представленная в виде забавных примеров, весело и непринужденно поможет вам научиться выполнять различные трюки с фотографиями. Вы узнаете, как изменить внешний вид президента, сделать утюг водоплавающим, заставить футболиста летать и многое другое, а заодно изучите богатую палитру инструментов Photoshop. С этой веселой книгой, снабженной забавными иллюстрациями, проблемы с Photoshop покажутся вам просто смешными.

Геннадий Геннадьевич Кондратьев , Юрий Анатольевич Гурский

Программирование, программы, базы данных / Прочая компьютерная литература / Книги по IT