3.5 KiB
Индексы
В качестве контейнеров для таблиц в смарт-контрактах используется объект multi_index из языка программирования C/C++.
Состояние
Процесс включения происходит не моментально, и на финализацию транзакции требуется примерно 120 секунд. За это время все ноды делегатов должны автоматически прийти к консенсусу по их содержанию - все включаемые действия должны устраивать по-крайней мере 2/3% делегатов.
Подробнее
Те действия, которые применяются - могут влиять на состояние базы данных, или не влиять - это зависит от кода действия смарт-контракта.
Таблицы
Смарт-контракты содержат действия. Каждое действие связано с программным кодом, который выполняется на каждой ноде при включении транзакции в цепочку.
Если в действии находятся команды на изменение таблиц - то они будут применины на каждой ноде.
Эти команды стандартны, и как и для любой базы данных включают 4 базовых операции: создать, редактировать, читать и удалить. При этом, в случае удаления или редактирования - удаляется и редактируется только текущее состояние в базе данных, которое доступно по API, но вся история остаётся последовательной и неизменной.
Таким образом, при синхронизации нод, формируются таблицы распределенной базы данных на каждой ноде. И каждая нода в любой момент времени (по № блока), может извлечь информацию о том, какое состояние базы данных было в тот момент. И эта история непрерывна с самого начала - с момента запуска блокчейна.
История транзакций образует публичную и доступную всем последовательность вызова смарт-контрактов, от момента запуска платформы. Где каждый вызов действия в смарт-контракте может исполнять команды на добавление, удаление, или редактирование записей в базе данных смарт-контракта. То, что делает смарт-контракт, полностью зависит от программного кода его реализации.