Основные операции в сети

Момент запуска первой ноды можно считать началом создания новой блокчейн-сети. Разворачивать блокчейн-сеть вы можете со старта всего одной ноды, добавляя новые ноды по мере необходимости.

Далее вы можете выполнить следующие операции:

Подключение новой ноды к существующей сети

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

  1. Пользователь новой ноды передаёт публичный ключ и описание ноды администратору сети.
  2. Администратор сети (нода с ролью «Connection-manager») использует полученные публичный ключ и описание ноды при создании транзакции 111 RegisterNode с параметром "opType": "add".
  3. Транзакция попадает в блок и далее в стейты нод участников сети. Вследствие транзакции среди сохраняемых данных каждый участник сети хранит обязательно публичный ключ и адрес новой ноды.
  4. При необходимости администратор сети может добавить новой ноде дополнительные роли при помощи транзакции 102 Permit.
  5. Пользователь запускает ноду.
  6. После запуска нода отправляет handshake-сообщение со своим публичным ключом участникам из списка «peers» своего конфигурационного файла.
  7. Участники сети сравнивают публичный ключ из handshake-сообщения и ключ из транзакции 111 RegisterNode, отправленной администратором сети. Если проверка успешна, участник сети обновляет свою БД и рассылает в сеть сообщение Peers Message.
  8. Успешно подключившись, новая нода выполняет синхронизацию с сетью и получает таблицу адресов участников сети.

Удаление ноды

  1. Администратор сети создает транзакцию 111 RegisterNode с параметром "opType": "remove" для удаления ноды из сети, в которую помещается её публичный ключ.
  2. Транзакция с удалением ноды вместе с остальными попадает в блок, и её принимают другие ноды.
  3. После принятия транзакции ноды находят в своем стейте публичный ключ, указанный в транзакции 111 RegisterNode, и удаляют его из стейта.
  4. Далее ноды удаляют сетевой адрес ноды с ключом, указанным в транзакции 111 RegisterNode, из списка network.known-peers конфигурационного файла ноды.

Создание группы доступа к конфиденциальным данным

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

  1. Участник сети, который будет владельцем группы доступа, создаёт транзакцию 112 CreatePolicy со следующими основными параметрами:
  • sender - публичный ключ создателя группы доступа.
  • description - описание группы доступа.
  • policyName - имя группы доступа.
  • recipients - публичные ключи участников группы доступа, которые будут иметь право получать конфиденциальные данные.
  • owners - публичные ключи владельцев группы доступа, которые, помимо доступа к данным, смогут изменять состав участников группы.
  1. Транзакция с созданием группы доступа вместе с остальными попадает в блок, и её принимают другие ноды.
  2. После принятия транзакции доступ к отправляемым в сеть конфиденциальным данным получают все участники, зарегистрированные в созданной группе доступа.

Изменение группы доступа

Изменять группы доступа могут только их владельцы. Выполняются следующие действия для изменения списка участников в группе доступа:

  1. Владелец группы доступа создаёт транзакцию 113 UpdatePolicy со следующими основными параметрами:
  • policyId - идентификатор группы доступа.
  • sender - публичный ключ владельца группы доступа.
  • opType - опция добавления (add) или удаления (remove) участников группы.
  • recipients - публичные ключи участников группы доступа, которые добавляются или удаляются из группы доступа.
  • owners - публичные ключи владельцев группы доступа, которые добавляются или удаляются из группы доступа.
  1. Транзакция с изменением группы доступа вместе с остальными попадает в блок, и её принимают другие ноды.
  2. После принятия транзакции в сети обновляется информация об участниках изменённой группы.

Процесс обмена конфиденциальными данными

Важно

Через метод API POST /privacy/sendData можно отправить данные размером не более 20МБ.

  1. Пользователь отправляет данные в сеть, используя инструмент API POST /privacy/sendData (параметры API: отправитель, пароль, ID группы, тип данных, информация о данных, данные и хеш).
  2. Участники группы доступа используют инструмент GET /privacy/getData/{hash} для получения информации о данных и их последующей загрузки.

Выполните следующие действия для создания значений в поля data и hash:

  1. Переведите байтовую последовательность данных в кодировку Base64.
  2. Результат преобразования данных поместите в поле "data": "29sCt...RgdC60LL" запроса API POST /privacy/sendData.
  3. В поле "hash": "9wetTB...SU2zr1Uh" укажите хеш-сумму от данных по алгоритму SHA-256. Результат хеширования нужно указывать в кодировке Base58.
  4. Отправьте данные в сеть, нажав кнопку Try it out!.
  5. В результате отправки данных в сеть нода автоматически сформирует транзакцию 114 PolicyDataHash.