Данные

Материал из Сервис Облачной Демократии
Перейти к: навигация, поиск

Описание перечня данных хранимых на каждом узле в распределенной системе. Все данные хранятся в БД Berkeley DB.

TODO: Наполнять перечни данных по ходу обсуждения сценариев использования

Содержание

Перечень данных пользователя

Каждый узел должен хранить данные для каждого пользователя который пользуется узлом. Т.е. каждый пользователь имеет свой набор данных. Набор данных пользователя включает в себя:

Электронный паспорт

Для идентификации пользователя и его ключа будет служить специальное значение - идентифицирующий хэш. В одном из идентификаторов публичного ключа должно ставиться значение вида (пример укорочен):

IDHASH:3C65C65D4F8166C21823F253CE6F14037128DD614B43390535667AAE2CC518E2

Хэш формируется по алгоритму SHA512 в рекурсивном цикле уровня 128 по символьному его представлению в 16-ричном виде в верхнем регистре. Идентифицирующий хэш должен формироваться из соединения нескольких строк:

  1. Дата рождения в формате YYYYMMDD (Y - год, M - месяц, D - день. Считается с начала Нашей Эры).
  2. Номер свидетельства о рождении. Серия и номер пишутся вместе. Все незначащие разделительные знаки опускаются. Если присутствуют буквы - вводятся в кодировке UTF-8 в верхнем регистре.
  3. Идентификационный социальный номер в стране гражданства (страна рождения или первая по алфавиту в написании латиницей страна гражданства). Все незначащие разделительные знаки опускаются. Если присутствуют буквы - вводятся в кодировке UTF-8 в верхнем регистре. Номер СНИЛС в России или SSN в США.

Данный хэш будет легко проверятся подписывающим ключ, т.к. он имеет четкие правила формирования. Помощник по формированию идентифицирующего хэша: http://test.cdemocracy.ru/register/gpghelp_idhash

Перечень данных узла

Кроме того каждый узел имеет общий набор данных для всех пользователей. Набор данных узла включает в себя:

Список соседних узлов

IP-адрес, ключи субъектов голосования используемых на узле

Протоколы

Структура пакетов

Предлагаю следующую структуру пакетов:

Если тип пакета подразумевает его идентификацию, то в начале <packet> следует

Если тип данных подразумевает определенный размер этих данных, то далее в <packet> для таких типов содержатся данные. Если тип данных переменного размера, то далее следует:

Данные пакеты представляют из себя набор записей вида:

Если данные поля не фиксированного размера, то в <field record> сохраняются данные с указанием размера:

Типы пакетов

Требует согласования с разработчиками. Возможно, не актуально.
Код типа пакета Размер данных Идентифицируемый Описание типа
0x00 0 - Пинг
0x01 0 - Понг
0x02 ~ + Запрос на данные
0x03 ~ + Публичный ключ
0x04 ~ + Голосование

Коды данных

Требует согласования с разработчиками. Возможно, не актуально.

На этой странице собраны коды для различных данных в системе.

Мнемокод Числовой код Назначение данных
NULL 0x00 Пустые данные
U.PKEY.FP 0x01 Отпечаток персонального ключа пользователя
U.PTKEY.FP 0x02 Отпечаток транспортного ключа пользователя
U.BD 0x03 Дата рождения пользователя из программы
U.TR 0x04 Основная территория пользователя из программы
U.ATR 0x05 Дополнительная территория пользователя из программы
U.TID 0x06 Налоговый идентификатор пользователя из программы
U.SID 0x07 Социальный идентификатор пользователя из программы
U.PKEY 0x08 Публичный персональный ключ пользователя
U.PTKEY 0x09 Публичный транспортный ключ пользователя
S.TYPE 0x10 Тип голосования

Коды типов голосований

Требует согласования с разработчиками. Возможно, не актуально.
Код Описание
0x00 Открытое голосование в субъекте
0x01 Тайное голосование в субъекте
0x02 Голосование по субъекту (создание, изменение параметров)
0x03 Вотум недоверия
Личные инструменты
Пространства имён
Варианты
Действия
Навигация
Инструменты