BTC/USD 43522.92 -0.71%
ETH/USD 2246.26 -1.47%
LTC/USD 72.95 -1.55%
BRENT/USD 73.55 0.86%
GOLD/USD 0.00 0.00%
RUB/USD 92.78 1.31%
Tokyo
Moscow
New-York
144

Основные термины сети эфириум

0
Автор материала: Евгения Лиходей

Блокчейн приложения сети эфириум можно использовать, не вдаваясь в вопросы того, как же всё это устроено и работает. Всё зависит от предоставленного вам интерфейса доступа. Так, если вы взаимодействуете со смарт контрактом через интерфейс пользователя, предоставленный специально разработанным для этих целей сайтом, то вам больше ничего и не требуется. Обо всём уже должны были позаботиться разработчики данного сервиса. Если же вы вызываете децентрализованное приложение посредством стандартного механизма вызова функций смарт контрактов, то базовые понятия помогут вам избежать лишних недоразумений. И, конечно же, если вы являетесь, или тем более только собираетесь стать разработчиком приложений для платформы виртуальной машины эфириума, то тогда вам точно нужно хорошо ориентироваться в основных терминах и понятиях ethereum.

Смарт контракты

Программы, выполняющиеся в виртуальной машине эфириума, на каждой его отдельной копии - ноде. Хранятся в каждой копии блокчейна сети эфириума. Таким образом, каждая нода содержит свою копию блокчейна со всеми его смартконтрактами и свою виртуальную машину эфириума. Функции смарт контрактов могут выполняться, не выходя за рамки локальной ноды (функции чтения), при этом они будут бесплатными для того, кто их запустил. Но могут требовать изменения в локальный блокчейн, который тут же будет синхронизирован с остальными копиями в сети эфириума. Такие функции платные, и требуют определённый взнос “Газа” за своё выполнение. Подробнее далее.

Хранение копий смарт контрактов в сети с их синхронной работой на каждой копии блокчейна и есть причина их названия децентрализованными. Т.е. приложениями без общего места запуска и работы. По этой причине их нельзя отследить, запретить или контролировать. Однажды попав в сеть, такой контракт будет выполняться там в неизменном виде столько раз, сколько его будут вызывать все желающие. Как правило, этими желающими будут владельцы этих нод, либо абсолютно все пользователи сети, которым будет предоставлен доступ к ноде. Обратите внимание, что предоставить доступ могут только для пользователей внутренней сети, а синхронизироваться код будет с внешней. Или можно предоставить доступ всем желающим через интернет, общаться с одной и той же нодой. Здесь всё зависит от владельца и его целей.

Аккаунты

 

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

Вместе с тем некоторые отличия всё же имеются. Давайте рассмотрим их подробнее с технической точки зрения.

Аккаунты пользователей

  • Данный тип аккаунтов управляется парой ключей (закрытый ключ для доступа владельца, и открытый ключ – адрес аккаунта). Такие аккаунты принято считать внешними по отношению к сети эфириум(Externally Owned Accounts, или внешний аккаунт).
  • Следующая особенность – является первоочередным возмутителем спокойствия в сети. Сами по себе аккаунты смарт контрактов не способны вызываться по расписанию или иным событиям. Для первого вызова пусть и целой сети смарт контрактов, будет использован аккаунт пользователя, который захочет что-либо от программ в сети.
  • Отсутствие кода – код, это только для программы, т.е. для контракта сети. У пользователя есть что-то вроде учётной записи, обрабатываемой самой виртуальной машиной.

Аккаунты смарт контрактов

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

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

Поясним – в контракте, например, есть массив с адресами и суммами токенов. Вы не сможете просмотреть у кого сколько токенов, не воспользовавшись специально заранее подготовленной функцией смарт контракта, которая за вас проверит, давать ли вам доступ, и в каком виде его давать.

Могут, как принимать эфир на баланс, так и не принимать. Ранее всегда принимали. Но поскольку часто так получалось, что принять они эфир могли, а отдать нет, то эфир попросту зависал на адресе смарт контракта, не предназначенного для его использования или передачи кому-либо. Теперь, для отправки на смарт контракт эфира требуется наличие определённого функционала на этом контракте.

Транзакции и сообщения

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

Получателем транзакции может выступать только лишь другой смарт контракт. При этом никто не мешает второму смартконтракту вызвать третий и т.д.

В составе транзакции в обязательном порядке передаётся сигнатура с отметками об отправителе и получателе, цене и максимальном лимите газа (максимально разрешённый лимит выполнения кода в рамках данной транзакции), количестве передаваемых wei (мелкая единица eth, может быть нулевым), поле с данными. Передаваемыми смарт контракту получателю.

Транзакции между программами внутри блокчейна ещё часто называют внутренними транзакциями. Сообщения от пользователя к программе – внешними. Но суть и у тех и у вторых одна – вызов с передачей параметров.

Плата за транзакции

 

Как уже отмечалось ранее, сеть образуется множеством копий с одинаковыми блокчейнами, одинаковость которых достигается вызовом одних и тех же кодов программ, вызываемых одними и теми же транзакциями одних и тех же проверяемых блоков на множестве копий сети эфириума. Эти “синхронные” вызовы характерны для всех транзакций, изменяющих состояние блокчейна. Результатом этого становится дороговизна вызова подобных функций. Всё же, много компьютеров обрабатывают один и тот же код. Что, стоит заметить, является составляющей операцией майнинга сети и требует вознаграждения майнеров за их работу. Данное вознаграждение частично компенсируется стоимостью вызова функций для запустивших их пользователей сети.

В качестве меры стоимости вызова тех или иных функций смарт контрактов выступают два параметра – объём газа (gas) и цена газа (gas price).

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

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

 

В сети эфириума можно встретить ещё один термин, относящийся к оплате – предел газа (gas limit - на картинке выше он первый). Это параметр является разрешением от пользователя к вызываемой функции на использование газа на своё выполнение. Т.е. функция сможет использовать на свою работу (и работу вызванных ей других функций) столько газа, сколько ей нужно, но не более чем значение gaslimit. Если этого предела газа окажется для выполнения функции недостаточно, то вся транзакция откатывается до начального состояния. Потраченный газ при этом остаётся потраченным и не возвращается.

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

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

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

 

Заключение

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

Теги:
Автор материала: