Установка и использование платформы
gRPC: работа с транзакциями¶
Для работы с транзакциями предусмотрен gRPC сервис TransactionPublicService.
У сервиса TransactionPublicService есть следующие методы, описанные в protobuf-файле transaction_public_service.proto:
Важно
Типы данных полей для запросов и ответов указаны в protobuf-файлах.
Отправка транзакций в блокчейн¶
Выберите подходящий для вашей задачи метод отправки транзакций в блокчейн:
BroadcastWithCerts– для отправки транзакции RegisterNode;Broadcast– для отправки всех остальных транзакций.
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 и приведены в статье Транзакции блокчейн-платформы.
BroadcastWithCerts¶
Метод используется для отправки транзакции RegisterNode и требует тех же входных параметров, что и метод Broadcast.
Поле certificates является обязательным и должно содержать цепочку сертификатов, которая соответствует публичному ключу в поле target транзакции.
Получение данных транзакции¶
Используйте метод TransactionInfo, чтобы получить данные транзакции.
Метод требует ввода одного параметра запроса:
tx_id– ID транзакции, о которой запрашивается информация.
В ответе метода TransactionInfo содержится следующая информация о транзакции:
height– высота блокчейна, на которой была произведена транзакция;transaction– название транзакции;
а также данные транзакции, аналогичные ответу метода Broadcast.
Получение данных транзакции, находящейся в UTX-пуле¶
Используйте метод UnconfirmedTransactionInfo, чтобы получить данные транзакции, находящейся в UTX-пуле. В ответе метода содержатся данные транзакции, аналогичные ответу метода Broadcast.