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

gRPC: работа с транзакциями

Для работы с транзакциями предусмотрен gRPC сервис TransactionPublicService.

У сервиса TransactionPublicService есть следующие методы, описанные в protobuf-файле transaction_public_service.proto:

Важно

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

Отправка транзакций в блокчейн

Выберите подходящий для вашей задачи метод отправки транзакций в блокчейн:

  • BroadcastWithCerts – для отправки транзакции RegisterNode;

  • Broadcast – для отправки всех остальных транзакций.

Примечание

Для отправки транзакций в блокчейн также можно использовать REST методы POST /transactions/broadcast и POST /transactions/signAndBroadcast.

Broadcast

Метод требует ввода следующих параметров запроса:

  • version – версия транзакции;

  • transaction – название транзакции вместе c предназначенным для нее набором параметров.

  • certificates – цепочка сертификатов байтами в формате DER; параметр является обязательным при одновременном соблюдении следующих условий:

    • используется PKI или тестовый режим PKI (то есть в конфигурационном файле ноды параметру node.crypto.pki.mode присвоено значение TEST или ON),

    • новый пользователь, который не является владельцем ноды (node-owner), делает свою первую транзакцию.

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

    Примечание

    Поле certificates в запросе на публикацию транзакции RegisterNode является обязательным при использовании PKI или тестового режима PKI (то есть когда в конфигурационном файле ноды параметру node.crypto.pki.mode присвоено значение ON или TEST. В этом случае поле certificates должно содержать цепочку сертификатов, которая соответствует публичному ключу в поле target транзакции.

Для каждой транзакции предусмотрен отдельный protobuf-файл, описывающий поля запросов и ответов. Эти поля универсальны для запросов по gRPC и REST API и приведены в статье Транзакции блокчейн-платформы.

Примечание

Для отправки транзакций в блокчейн также можно использовать REST методы POST /transactions/broadcast и POST /transactions/signAndBroadcast.

BroadcastWithCerts

Метод используется для отправки транзакции RegisterNode и требует тех же входных параметров, что и метод Broadcast.

Поле certificates является обязательным и должно содержать цепочку сертификатов, которая соответствует публичному ключу в поле target транзакции.

Примечание

Для отправки транзакций в блокчейн также можно использовать REST методы POST /transactions/broadcast и POST /transactions/signAndBroadcast.

Получение данных транзакции

Используйте метод TransactionInfo, чтобы получить данные транзакции.

Метод требует ввода одного параметра запроса:

  • tx_id – ID транзакции, о которой запрашивается информация.

В ответе метода TransactionInfo содержится следующая информация о транзакции:

  • height – высота блокчейна, на которой была произведена транзакция;

  • transaction – название транзакции;

а также данные транзакции, аналогичные ответу метода Broadcast.

Получение данных транзакции, находящейся в UTX-пуле

Используйте метод UnconfirmedTransactionInfo, чтобы получить данные транзакции, находящейся в UTX-пуле. В ответе метода содержатся данные транзакции, аналогичные ответу метода Broadcast.