Разработка смарт-контрактов в Ethereum. Тимур Машнин. Читать онлайн. Newlib. NEWLIB.NET

Автор: Тимур Машнин
Издательство: Автор
Серия:
Жанр произведения: Справочники
Год издания: 2022
isbn:
Скачать книгу
денег.

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

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

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

      Таким образом, Ethereum имеет набор аккаунтов.

      У каждого аккаунта есть владелец и баланс в эфирах.

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

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

      То есть у нас есть состояние – это совокупность всех аккаунтов и их балансов.

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

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

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

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

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

      Также полный узел может быть без выполнения каждой транзакции.

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

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

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

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

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

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

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

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

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

      Контракт будет читать эти значения