Размер шрифта
-
+

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

Для перевода токенов с одного кошелька на другой требуется 21000 газа.

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

Для выполнения смарт-контракта также может потребоваться разное количество газа.

Выполнение вычислительных действий в виртуальной машине Эфириума стоит очень дорого.

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

И комиссионные платежи помогают предотвратить чрезмерную нагрузку на сеть.

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

Таким образом, комиссии защищают сеть от преднамеренных атак.

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

Разные счета инициируют переход Эфириума из одного глобального состояния в другое.

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

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

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

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

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

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

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

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

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

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

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

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

Страница 11