Установка и использование платформы

Обмен конфиденциальными данными

Блокчейн-платформа Waves Enterprise позволяет ограничить доступ к определенным данным, размещаемым в блокчейне. Для этого пользователи объединяются в группы, получающие доступ к конфиденциальным данным.

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

Создать группу доступа к конфиденциальным данным может любой участник сети. Прежде, чем создавать группу доступа, определитесь со списком участников, которые будут в нее входить. Затем подпишите и отправьте транзакцию 112 CreatePolicy:

  1. В поле recipients впишите через запятую адреса участников, которые получат доступ к конфиденциальным данным.

  2. В поле owners добавьте через запятую адреса участников группы, которым будут предоставлены права администраторов. Администраторы группы доступа, помимо доступа к конфиденциальным данным, смогут изменять состав группы доступа.

При отправке транзакции вы получите идентификатор созданной группы доступа (policyId). Он потребуется при изменении состава ее участников.

После отправки транзакции в блокчейн доступ к отправляемым в сеть конфиденциальным данным получат все участники, зарегистрированные в созданной группе доступа. Как создатель транзакции, вы сможете изменять ее состав, как и участники, добавленные в поле owners.

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

Изменять состав группы доступа могут только ее участники, добавленные в поле owners при создании группы, а также сам ее создатель – владельцы группы.

Для этого подпишите и отправьте транзакцию 113 UpdatePolicy:

  1. В поле policyId введите идентификатор изменяемой группы доступа.

  2. В поле opType введите действие, которое необходимо произвести с группой: add – добавить участников; remove – удалить участников.

  3. Если вы хотите добавить или удалить участников группы доступа, впишите их публичные ключи в поле recipients.

  4. Для добавления или удаления владельцев группы доступа впишите их публичные ключи в поле owners.

Информация о группе доступа обновляется после отправки транзакции в блокчейн.

Отправка конфиденциальных данных в сеть

Для отправки конфиденциальных данных в сеть предусмотрены методы REST API POST /privacy/sendData и POST /privacy/sendDataV2. Эти методы требует авторизации.

С помощью методов POST /privacy/sendData и POST /privacy/sendDataV2 вы можете отправить данные размером до 20 мегабайт.

При отправке данных, укажите в запросе следующую информацию:

  • sender – блокчейн-адрес, от которого должны рассылаться данные (соответствуют значению параметра «privacy.owner-address» в конфигурационном файле ноды);

  • password – пароль для доступа к закрытому ключу keystore ноды;

  • policyId – идентификатор группы, которая будет иметь доступ к отправляемым данным;

  • info – информация об отправляемых данных;

  • data – строка, содержащая данные в формате base64;

  • hash – sha256-хэш данных в формате base58.

Примеры запроса и ответа метода POST /privacy/sendData:

POST /privacy/sendData:

Запрос:

{
"sender": "3HYW75PpAeVukmbYo9PQ3mzSHdKUgEytUUz",
"password": "apgJP9atQccdBPA",
"policyId": "4gZnJvbSBvdGhlciBhbmltYWxzLCB3aGljaC",
"info": {
  "filename":"Service contract #100/5.doc",
  "size": 2048,
  "timestamp": 1000000000,
  "author": "[email protected]",
  "comment": "some comments"
 },
 "data": "TWFuIGlzIGRpc3Rpbmd1aXNoZWQsIG5vdCBvbmx5IGJ5IGhpcyByZWFzb24sIGJ1dCBieSB0aGlzIHNpbmd1bGFyIHBhc3Npb24gZnJvbSBvdGhlciBhbmltYWxzLCB3aGljaCBpcyBhIGx1c3Qgb2YgdGhlIG1pbmQsIHRoYXQgYnkgYSBwZXJzZXZlcmFuY2Ugb2YgZGVsaWdodCBpbiB0aGUgY29udGludWVkIGFuZCBpbmRlZmF0aWdhYmxlIGdlbmVyYXRpb24gb2Yga25vd2xlZGdlLCBleGNlZWRzIHRoZSBzaG9ydCB2ZWhlbWVuY2Ugb2YgYW55IGNhcm5hbCBwbGVhc3VyZS4=",
 "hash": "FRog42mnzTA292ukng6PHoEK9Mpx9GZNrEHecfvpwmta"
 }

Ответ:

{
"senderPublicKey": "Gt3o1ghh2M2TS65UrHZCTJ82LLcMcBrxuaJyrgsLk5VY",
"policyId": "4gZnJvbSBvdGhlciBhbmltYWxzLCB3aGljaC",
"sender": "3HYW75PpAeVukmbYo9PQ3mzSHdKUgEytUUz",
"dataHash": "FRog42mnzTA292ukng6PHoEK9Mpx9GZNrEHecfvpwmta",
"proofs": [
"2jM4tw4uDmspuXUBt6492T7opuZskYhFGW9gkbq532BvLYRF6RJn3hVGNLuMLK8JSM61GkVgYvYJg9UscAayEYfc"
],
"fee": 110000000,
"id": "H3bdFTatppjnMmUe38YWh35Lmf4XDYrgsDK1P3KgQ5aa",
"type": 114,
"timestamp": 1571043910570
}

Метод POST /privacy/sendDataV2 позволяет приложить файл в окне Swagger, не прибегая к его конверсии в формат base64. Поле Data в этой версии метода отсутствует.

Примеры запроса и ответа метода POST /privacy/sendDataV2:

POST /privacy/sendDataV2:

Запрос:

{
"sender": "3HYW75PpAeVukmbYo9PQ3mzSHdKUgEytUUz",
"password": "apgJP9atQccdBPA",
"policyId": "4gZnJvbSBvdGhlciBhbmltYWxzLCB3aGljaC",
"info": {
  "filename":"Service contract #100/5.doc",
  "size": 2048,
  "timestamp": 1000000000,
  "author": "[email protected]",
  "comment": "some comments"
 },
 "hash": "FRog42mnzTA292ukng6PHoEK9Mpx9GZNrEHecfvpwmta"
 }

Ответ:

{
"senderPublicKey": "Gt3o1ghh2M2TS65UrHZCTJ82LLcMcBrxuaJyrgsLk5VY",
"policyId": "4gZnJvbSBvdGhlciBhbmltYWxzLCB3aGljaC",
"sender": "3HYW75PpAeVukmbYo9PQ3mzSHdKUgEytUUz",
"dataHash": "FRog42mnzTA292ukng6PHoEK9Mpx9GZNrEHecfvpwmta",
"proofs": [
"2jM4tw4uDmspuXUBt6492T7opuZskYhFGW9gkbq532BvLYRF6RJn3hVGNLuMLK8JSM61GkVgYvYJg9UscAayEYfc"
],
"fee": 110000000,
"id": "H3bdFTatppjnMmUe38YWh35Lmf4XDYrgsDK1P3KgQ5aa",
"type": 114,
"timestamp": 1571043910570
}

В результате отправки того или иного запроса будет сформирована транзакция 114 PolicyDataHash, которая отправит хэш конфиденциальных данных в блокчейн.

Смотрите также