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

gRPC: передача данных конфиденциальных смарт-контрактов

Для передачи данных конфиденциальных смарт-контрактов служит gRPC сервис ContractPublicService.

Следующие методы сервиса описаны в protobuf-файле confidential_contract_service.proto:

  • ConfidentialCall,

  • ConfidentialTx.

Важно

Типы данных полей для запросов и ответов указаны в protobuf-файле.

Важно

Вызов методов ConfidentialCall и ConfidentialTx доступен только при использовании oAuth токена с ролью ConfidentialContractUser или специального api-key.

ConfidentialCall

Метод ConfidentialCall принимает запрос ConfidentialCalRequest, содержащий следующие поля.

  • broadcast – флаг, который отражает необходимость бродкаста сформированной транзакции CallContract; по умолчанию имеет значение true; значение false используется для формирования атомарного контейнера;

  • commitmentVerification – флаг, который отражает необходимость сверки коммитмента входных данных и предоставления со стороны пользователя ключа для формирования коммитмента; по умолчанию имеет значение false; при значении false нода сама формирует ключ случайным образом и рассчитывает коммитмент;

  • sender – адрес отправителя данных конфиденциального смарт-контракта;

  • contractId – идентификатор конфиденциального смарт-контракта;

  • contractVersion – версия конфиденциального смарт-контракта;

  • params – при работе с транзакцией CallContract – входные данные конфиденциального смарт-контракта, представленные как массив объектов; вносятся при помощи следующих полей:

    • key – ключ параметра;

    • type – тип данных параметра;

    • value – значение параметра.

  • timestamp – временная метка в формате Unix Timestamp (в миллисекундах), отмечающая время вызова смарт-контракта;

  • atomicBadge – флаг, который отражает возможность включать транзакцию в атомарную транзакцию;

  • fee – комиссия за транзакцию;

  • feeAssetId – идентификатор токена комиссии;

  • commitment – коммитмент;

  • commitmentKey – ключ коммитмента.

Метод ConfidentialCall принимает все данные, необходимые, чтобы отправить транзакцию CallContract, отправляет её, и в ответе возвращает protobuf, в который входит транзакция CallContract версии 6 и confidentialInput конфиденциального смарт-контракта.

Примечание

REST метод POST /confidential-contracts/call аналогичен gRPC методу ConfidentialCall.

ConfidentialTx

Метод возвращает транзакцию записи результата исполнения конфиденциального смарт-контракта в его стейт (105.ExecutedContract версии 4), конфиденциальные входные данные для запуска контракта (ConfidentialInput) и конфиденциальные результаты исполнения контракта (ConfidentialOutput) участникам соответствующей политики (группы авторизации).

В свою очередь, транзакция 105.ExecutedContract содержит все поля транзакций 103. CreateContract, 104. CallContract, 107. UpdateContract смарт-контракта.

Примечание

REST метод GET /confidential-contracts/tx/{executable-tx-id} аналогичен gRPC методу ConfidentialTx.

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