Тимур Машнин

Разработка смарт-контрактов в Ethereum


Скачать книгу

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

      И есть два типа транзакций: сообщения и транзакции создания контрактов.

      Можно сказать, что транзакции являются своего рода мостами между внешним миром и внутренним состоянием Эфириума.

      При этом смарт контракты могут взаимодействовать друг с другом.

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

      Они делают это посредством «сообщений» или «внутренних транзакций» в адрес других контрактов.

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

      Их генерируют сами контракты.

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

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

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

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

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

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

      Она измеряется в «Gwei».

      «Wei» – это наименьшая единица эфира, 1 эфир = 1018 Wei.

      Один Gwei равен 1 000 000 000 Wei.

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

      Произведение цены газа и лимита газа даёт максимальное количество Wei, которое отправитель готов заплатить за выполнение транзакции.

      Предположим, что отправитель устанавливает лимит газа 50 000, а цену газа 20 Gwei.

      Это означает, что отправитель готов потратить на выполнение этой транзакции не более чем 50 000 x 20 Gwei = 1 000 000 000 000 000 Wei = 0,001 эфира.

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

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

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

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

      В этом случае выполнение