Как устроена платформа
Транзакции блокчейн-платформы¶
Транзакция – это отдельная операция в блокчейне от имени участника, изменяющая стейт сети. Отправляя ту или иную транзакцию, участник отправляет в сеть запрос с набором данных, необходимых для соответствующего изменения стейта.
Подписание и отправка транзакций¶
Перед отправкой транзакции участник генерирует для нее цифровую подпись. Для этого он использует закрытый ключ своего аккаунта. Подписание транзакций может осуществляться следующими способами:
при помощи метода REST API (см. REST API: работа с транзакциями);
при помощи JavaScript SDK.
Подпись транзакции записывается в поле proofs
при отправке транзакции в блокчейн.
Как правило, в это поле записывается одна подпись участника, отправившего транзакцию.
Однако поле поддерживает до 8 подписей: в случае подписания транзакции смарт-аккаунтом, при заполнении атомарной транзакции или при публикации смарт-контракта.
После подписания транзакция отправляется в блокчейн – это можно сделать как тремя способами, приведенными выше, так и при помощи gRPC-интерфейса (см. gRPC: отправка транзакций в блокчейн).
Обработка транзакций в блокчейне¶
Получив транзакцию, нода проверяет ее на валидность:
Соответствие временной метки (timestamp): временная метка транзакции должна отклоняться от временной метки текущего блока не более, чем на 2 часа назад или 1,5 часа вперед.
Тип и версия транзакции: активирована ли в блокчейне поддержка транзакций указанного типа и версии (см. Активация функциональных возможностей).
Соответствие полей транзакции заданному типу данных;
Проверка баланса отправителя: достаточно ли средств для оплаты комиссии;
Проверка подписи транзакции.
Если транзакция не проходит валидацию, нода отклоняет ее. В случае успешного прохождения проверок транзакция добавляется в пул неподтвержденных транзакций (UTX-пул), где ожидает следующего раунда майнинга для передачи в блокчейн. Вместе с передачей транзакции в UTX-пул нода рассылает ее другим нодам в сети.
Поскольку у каждого микроблока есть ограничение на количество поступающих транзакций, отдельная транзакция может попасть из UTX-пула в блокчейн далеко не сразу. Во время нахождения транзакции в UTX-пуле транзакция может стать невалидной. Например, ее временная метка перестала соответствовать параметрам временной метки текущего блока, либо транзакция, попавшая в блокчейн, уменьшила баланс отправителя, сделав его недостаточным для оплаты транзакции. В таком случае транзакция отклоняется и удаляется из UTX-пула.
После добавления в блок транзакция меняет стейт блокчейна. После этого транзакция считается выполненной.
Подробная информация о транзакциях блокчейн-платформы Конфидент:
- Описание транзакций
- 1. Genesis Transaction
- 3. Issue Transaction
- 4. Transfer Transaction
- 5. Reissue Transaction
- 6. Burn Transaction
- 8. Lease Transaction
- 9. LeaseCancel Transaction
- 10. CreateAlias Transaction
- 11. MassTransfer Transaction
- 12. Data Transaction
- 13. SetScript Transaction
- 14. Sponsorship Transaction
- 15. SetAssetScript Transaction
- 101. GenesisPermission Transaction
- 102. Permission Transaction
- 103. CreateContract Transaction
- 104. CallContract Transaction
- 105. ExecutedContract Transaction
- 106. DisableContract Transaction
- 107. UpdateContract Transaction
- 110. GenesisRegisterNode Transaction
- 111. RegisterNode Transaction
- 112. CreatePolicy Transaction
- 113. UpdatePolicy Transaction
- 114. PolicyDataHash Transaction
- 120. AtomicTransaction
- Актуальные версии транзакций