Основные операции в сети¶
Момент запуска первой ноды можно считать началом создания новой блокчейн-сети. Разворачивать блокчейн-сеть вы можете со старта всего одной ноды, добавляя новые ноды по мере необходимости.
Далее вы можете выполнить следующие операции:
- Подключите новую ноду к уже существующей сети.
- Удалите лишние ноды из сети.
- Добавьте или измените группу доступа к конфиденциальным данным.
- Обменяйтесь конфиденциальными данными.
Подключение новой ноды к существующей сети¶
Новые ноды можно добавлять в сеть в любой момент времени. Настройка конфигурационных файлов новой ноды описана в подразделе Конфигурация ноды. Выполните все указанные в приведённом подразделе действия и запустите ноду. Далее выполняются следующие действия:
- Пользователь новой ноды передаёт публичный ключ и описание ноды администратору сети.
- Администратор сети (нода с ролью «Connection-manager») использует полученные публичный ключ и описание ноды при создании транзакции 111 RegisterNode с параметром
"opType": "add". - Транзакция попадает в блок и далее в стейты нод участников сети. Вследствие транзакции среди сохраняемых данных каждый участник сети хранит обязательно публичный ключ и адрес новой ноды.
- При необходимости администратор сети может добавить новой ноде дополнительные роли при помощи транзакции 102 Permit.
- Пользователь запускает ноду.
- После запуска нода отправляет handshake-сообщение со своим публичным ключом участникам из списка «peers» своего конфигурационного файла.
- Участники сети сравнивают публичный ключ из handshake-сообщения и ключ из транзакции 111 RegisterNode, отправленной администратором сети. Если проверка успешна, участник сети обновляет свою БД и рассылает в сеть сообщение Peers Message.
- Успешно подключившись, новая нода выполняет синхронизацию с сетью и получает таблицу адресов участников сети.
Удаление ноды¶
- Администратор сети создает транзакцию 111 RegisterNode с параметром
"opType": "remove"для удаления ноды из сети, в которую помещается её публичный ключ. - Транзакция с удалением ноды вместе с остальными попадает в блок, и её принимают другие ноды.
- После принятия транзакции ноды находят в своем стейте публичный ключ, указанный в транзакции 111 RegisterNode, и удаляют его из стейта.
- Далее ноды удаляют сетевой адрес ноды с ключом, указанным в транзакции 111 RegisterNode, из списка
network.known-peersконфигурационного файла ноды.
Создание группы доступа к конфиденциальным данным¶
Группу доступа к конфиденциальным данным может создать любой участник сети. Перед созданием группы необходимо определиться с кругом участников сети, которые будут получать конфиденциальные данные. Далее любой из участников выполняет следующие действия:
- Участник сети, который будет владельцем группы доступа, создаёт транзакцию 112 CreatePolicy со следующими основными параметрами:
- sender - публичный ключ создателя группы доступа.
- description - описание группы доступа.
- policyName - имя группы доступа.
- recipients - публичные ключи участников группы доступа, которые будут иметь право получать конфиденциальные данные.
- owners - публичные ключи владельцев группы доступа, которые, помимо доступа к данным, смогут изменять состав участников группы.
- Транзакция с созданием группы доступа вместе с остальными попадает в блок, и её принимают другие ноды.
- После принятия транзакции доступ к отправляемым в сеть конфиденциальным данным получают все участники, зарегистрированные в созданной группе доступа.
Изменение группы доступа¶
Изменять группы доступа могут только их владельцы. Выполняются следующие действия для изменения списка участников в группе доступа:
- Владелец группы доступа создаёт транзакцию 113 UpdatePolicy со следующими основными параметрами:
- policyId - идентификатор группы доступа.
- sender - публичный ключ владельца группы доступа.
- opType - опция добавления (
add) или удаления (remove) участников группы.- recipients - публичные ключи участников группы доступа, которые добавляются или удаляются из группы доступа.
- owners - публичные ключи владельцев группы доступа, которые добавляются или удаляются из группы доступа.
- Транзакция с изменением группы доступа вместе с остальными попадает в блок, и её принимают другие ноды.
- После принятия транзакции в сети обновляется информация об участниках изменённой группы.
Процесс обмена конфиденциальными данными¶
Важно
Через метод API POST /privacy/sendData можно отправить данные размером не более 20МБ.
- Пользователь отправляет данные в сеть, используя инструмент API POST /privacy/sendData (параметры API: отправитель, пароль, ID группы, тип данных, информация о данных, данные и хеш).
- Участники группы доступа используют инструмент
GET /privacy/getData/{hash}для получения информации о данных и их последующей загрузки.
Выполните следующие действия для создания значений в поля data и hash:
- Переведите байтовую последовательность данных в кодировку Base64.
- Результат преобразования данных поместите в поле
"data": "29sCt...RgdC60LL"запроса API POST /privacy/sendData. - В поле
"hash": "9wetTB...SU2zr1Uh"укажите хеш-сумму от данных по алгоритму SHA-256. Результат хеширования нужно указывать в кодировке Base58. - Отправьте данные в сеть, нажав кнопку Try it out!.
- В результате отправки данных в сеть нода автоматически сформирует транзакцию 114 PolicyDataHash.