Блокчейн блокчейнов
Термины смарт-контракт, аккаунт и актор в этом документе используются взаимозаменяемо, описывая одну и ту же сущность в блокчейне.
Отдельный актор
Рассмотрим отдельный смарт-контракт.
В TON это сущность со свойствами вроде address
, code
, data
, balance
и другими. Другими словами, это объект, который имеет хранилище и определённое поведение.
Это поведение следует такой схеме:
- контракт получает сообщение
- контр акт обрабатывает это событие в соответствии со своими свойствами, исполняя свой
код
в виртуальной машине TON - контракт изменяет свои свойства (в их число могут входить
data
,code
и другие) - контракт при необходимости генерирует исходящие сообщения
- контракт переходит в режим ожидания, пока не произойдёт следующее событие
Комбинация этих шагов называется транзакцией. Важно, чтобы события обрабатывались одно за другим, поэтому транзакции в блокчейне строго упорядочены и не могут прерывать друг друга.
Этот поведенческий паттерн хорошо известен, его называют актором.
Самый низкий уровень: AccountChain
Последовательность транзакций Tx1 → Tx2 → Tx3 → …
можно назвать цепочкой (chain). Когда эта последовательность относится к одному аккаунту, мы можем использовать термин AccountChain
.
Ноды, которые обрабатывают эти тра нзакции, периодически должны синхронизировать состояние, чтобы достигнуть консенсуса, транзакции объединяют в группы под названием блоки. Например, такие:
[Tx1 → Tx2] → [Tx3 → Tx4 → Tx5] → [] → [Tx6]
Это группирование никак не видоизменяет саму последовательность. Каждая транзакция в ней по-прежнему ссылается ровно на одну предшествующую, и у неё может быть не более одной следующей. Группирование просто делит эту последовательность на блоки, удобные для задачи достижения консенсуса.
Также каждый блок может содержать очереди входящих и исходящих сообщений. Так в блоке окажется полный набор событий и изменений состояния, произошедших со смарт-контрактом во время исполнения этого блока.