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

Published 16 October 2018

Описание процесса выполнения смарт-контрактов

Список сокращений:

Список сокращений:

ДУ - доверенный узел

ПУ - пишущий узел

БД - база данных

Выполнение смарт-контракта

Выполнение смарт-контракта

Запуск смарт-контрактов на выполнение инициируется специальной «Start»-транзакцией, которая содержит адрес отправителя (32 байтный публичный ключ  отправителя или его 4 байтный индекс), адрес смарт-контракта (32 битный публичный ключ смарт-контракта или его 4 байтный индекс), сумму транзакции в «сoins» (может быть нулевой), а также может содержать список вызываемых методов смарт контракта и список передаваемых аргументов.

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

Пакет «новых состояний» аналогичен «пакету транзакций», рассылаемых в сети, но отличается дополнительной информацией — он подписан всеми ДУ раунда и номер раунда, в котором началось выполнение смарт контрактов.

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

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

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

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

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

В процессе обработки входных данных раунда ДУ выполняют следующие активности:

  • Актуализируют очередь выполнения смарт-контрактов и выполняют по ней смарт-контракты;
  • Выпускают новый блок, в который помимо поступивших на обработку в раунде транзакций включена информация, полученная от ДУ предыдущих раундов в виде пакетов новых состояний.

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

После того, как ПУ сформировал блок, он рассылает очереди выполнения смарт-контрактов следующим ДУ, вместе с новой таблицей раунда.

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

Votes 0, average rating 0

Contents