|
COOPENOMICS
v1
Кооперативная Экономика
|
Версия единой схемы весов репутации сети. Подробнее...
#include <table_ano_repschemas.hpp>
Открытые члены | |
| uint64_t | primary_key () const |
Открытые атрибуты | |
| uint64_t | version |
| номер версии — первичный ключ; растёт без пропусков Подробнее... | |
| std::string | document |
| полный JSON схемы весов, включая заголовки и описания типов Подробнее... | |
| time_point_sec | published_at |
| когда версия опубликована и начала действовать Подробнее... | |
Версия единой схемы весов репутации сети.
Схема весов — норма: по ней бэкенд репутации при АНО превращает события участия в баллы, а публичная страница «как считается репутация» показывает людям действующие правила. Норма обязана лежать там, где её нельзя подменить задним числом и где каждый может её прочитать, — в цепи.
Запись хранит полный JSON схемы, а не хэш. Хэш доказывал бы целостность, но оставлял бы сам документ на чьём-то сервере — а сервер умеет отвечать по-разному разным людям. Полный текст в таблице делает цепь единственным источником: что прочитал — то и действует. Образец подхода — таблица draft::drafts, где так же целиком лежат шаблоны документов.
Ключ записи — номер версии, и версии только растут. Ретроактивный пересчёт запрещён (правило модели): новая версия действует только вперёд, старые записи не правятся и не удаляются — они нужны, чтобы восстановить, по каким правилам считался любой прошлый период.
Содержимое JSON контракт не разбирает. Формат схемы валидируется оффчейн пакетом schema-contract до публикации (CI и инструмент schema:sync); разбирать JSON в контракте значило бы завести вторую реализацию валидации, которая однажды разойдётся с первой. Контракт отвечает за другое: за авторство (только АНО), непрерывность нумерации и неизменность истории.
|
inline |
| std::string Ano::repschema::document |
полный JSON схемы весов, включая заголовки и описания типов
| time_point_sec Ano::repschema::published_at |
когда версия опубликована и начала действовать
| uint64_t Ano::repschema::version |
номер версии — первичный ключ; растёт без пропусков