Files
coopenomics/docs/documentation/blockchain/draft.md
T
Alex Ant 8307b3ba59 udpate
2025-02-01 20:44:15 +05:00

3.5 KiB

Индексы

В качестве контейнеров для таблиц в смарт-контрактах используется объект multi_index из языка программирования C/C++.

Состояние

Процесс включения происходит не моментально, и на финализацию транзакции требуется примерно 120 секунд. За это время все ноды делегатов должны автоматически прийти к консенсусу по их содержанию - все включаемые действия должны устраивать по-крайней мере 2/3% делегатов.

Подробнее

Те действия, которые применяются - могут влиять на состояние базы данных, или не влиять - это зависит от кода действия смарт-контракта.

Таблицы

Смарт-контракты содержат действия. Каждое действие связано с программным кодом, который выполняется на каждой ноде при включении транзакции в цепочку.

Если в действии находятся команды на изменение таблиц - то они будут применины на каждой ноде.

Эти команды стандартны, и как и для любой базы данных включают 4 базовых операции: создать, редактировать, читать и удалить. При этом, в случае удаления или редактирования - удаляется и редактируется только текущее состояние в базе данных, которое доступно по API, но вся история остаётся последовательной и неизменной.

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

транзакция -> действие 1, действие 2, действие 3 -> не изменяет состояние базы данных, добавляет запись в таблицу user, удаляет запись из таблицы order

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