Перейти к содержанию

Blockchain Connector ETH-like Service API

Обзор

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

Параметры запросов, встроенные в url, например, идентификатор блокчейна, являются обязательными. Параметры в query string или JSON теле запроса могут быть опциональными и подробно описаны в соответствующих разделах.

Адрес сервера: https://cloud.spatium.net/blockchain-connector-eth-like/v1 Swagger

Для данного адреса сервера доступно взаимодействие со следующими блокчейнами:

  • eth;
  • ftm;
  • avax;
  • matic;
  • bsc;
  • arb.

Структура запросов и информации в ответах для них одинакова.

Типы данных

Network

Network - тип сети. Как правило, блокчейны поддерживают минимум два варианта: тестовая сеть для разработки (testnet) с фиктивными активами и стабильная рабочая сеть (livenet) с реальными активами. Структура данных:

type Network = 'livenet' | 'testnet';

API

Генерация адреса из публичного ключа

Swagger Get address

Структура запроса POST /api/get-address/{chain}

{
   publicKey: string;
   network?: Network;
   prefix?: boolean;
}
{
  requestId: string;
  data: {
    address: string;
  };
}

Параметры

  • publicKey - публичный ключ, обязательный параметр (строка),

  • network - тип сети, необязательный параметр, значение по умолчанию 'livenet' (Network),

  • prefix - наличие префикса в адресе, необязательный параметр, значение по умолчанию false (логическое значение).

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

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

  • данные трансфера,
  • nonce (одноразовый номер транзакции),
  • gasLimit (максимальный объем работы, выполняемый валидатором для обработки транзакции),
  • gasPrice (цена за единицу выполненной валидатором работы).

В случае отправки нативной валюты блокчейна данные трансфера не требуется вычислять, их можно сразу определить пустой строкой. При отправке ERC-20 токена необходимо получить данные трансфера с помощью соответствующего метода получения данных трансфера ERC-20 токена.

После определения данных трансфера, эндпоинт estimate позволяет получить все остальные необходимые для формирования и оценки транзакции данные одним запросом. Также есть возможность получения этих данных тремя отдельными запросами (nonce, gas-limit, gas-price).

Данные трансфера ERC-20 токена

Получение данных трансфера необходимо для корректного формирования транзакции и расчета gasLimit в случае отправки ERC-20 токенов.

Важно! Метод актуален только для отправки ERC-20 токенов. В случае отправки нативной валюты блокчейна данные трансфера не требуется вычислять, их можно сразу определить пустой строкой.

Swagger Prepare transaction API

Структура запроса GET /api/prepare-transaction/erc20-transfer-data?to={addressTo}&amount={amount}

Параметры

  • to - адрес получателя, обязательный параметр (строка),

  • amount - сумма во внутреннем целочисленном формате, обязательный параметр (строка).

Структура ответа

{
 requestId: string;
 data: { erc20TransferData: string; };
}

Estimate

Эндпоинт предоставляет все необходимые для формирования и оценки комиссии транзакции данные.

Swagger Prepare transaction Estimate

Структура запроса POST /api/prepare-transaction/estimate/{chain}

{
   address: string;
   network?: Network;
   to: string | null;
   amount: string;
   data: string;
}
{
  requestId: string;
  data: {
    nonce: number;
    gasLimit: string;
    gasPrices: { normal: string; fast: string; slow: string };
  };
}

Параметры

  • address - адрес отправителя, обязательный параметр (строка),

  • network - тип сети, необязательный параметр, значение по умолчанию 'livenet' (Network),

  • type - формат адреса, необязательный параметр, значение по умолчанию 'p2wpkh', для bch данный параметр игнорируется (AddressType),

  • to - адрес получателя, обязательный параметр (строка или null),

  • amount - сумма во внутреннем целочисленном формате, обязательный параметр (строка).

Nonce

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

Swagger Prepare transaction Nonce

Структура запроса GET /api/prepare-transaction/nonce/{chain}?address={address}&network=livenet

Параметры

  • address - адрес отправителя, обязательный параметр (строка),

  • network - тип сети, необязательный параметр, значение по умолчанию 'livenet' (Network).

Структура ответа

{
 requestId: string;
 data: { nonce: number };
}

gasLimit

Максимальный объем работы, выполняемый валидатором для обработки транзакции (gasLimit) необходим для корректного формирования транзакции и расчета ее комиссии.

Swagger Prepare transaction GasLimit

Структура запроса POST /api/prepare-transaction/gas-limit/{chain}

{  
   to: string | null;
   amount: string;
   data: string;
   nonce: number;
   network?: Network;
}
{
  requestId: string;
  data: {
    gasLimit: string;
  };
}

Параметры

  • to - адрес получателя, обязательный параметр (строка или null),

  • amount - сумма во внутреннем целочисленном формате, обязательный параметр (строка),

  • data - данные трансфера, обязательный параметр (полученная с помощью соответствующего метода или пустая строка),

  • nonce - одноразовый номер транзакции, обязательный параметр (число),

  • network - тип сети, необязательный параметр, значение по умолчанию 'livenet' (Network).

gasPrice

Цена за единицу выполненной валидатором работы (gasPrice) необходима для корректного расчета комиссии. Сумма зависит от режима отправки (slow, normal, fast). Итоговая комиссия транзакции рассчитывается как произведение gasLimit транзакции на gasPrice для выбранного режима отправки.

Swagger Prepare transaction GasPrice

Структура запроса GET /api/prepare-transaction/gas-price/{chain}?network=livenet

Параметры

  • network - тип сети, необязательный параметр, значение по умолчанию 'livenet' (Network).

Структура ответа

{
 requestId: string;
 data: { gasPrices: { normal: string; fast: string; slow: string } };
}

Транзакции

Получение хэша транзакции

Swagger Transaction Get hash

Структура запроса POST /api/transaction/get-hash/{chain}

{
   network?: Network;
   publicKey: string;
   to: string | null;
   amount: string;
   gasLimit: string;
   gasPrice: string;
   nonce: number;
   data: string;
}
{
  requestId: string;
  data: { hash: string };
}

Параметры

  • network - тип сети, необязательный параметр, значение по умолчанию 'livenet' (Network),

  • publicKey - публичный ключ, обязательный параметр (строка),

  • to - адрес получателя, обязательный параметр (строка или null),

  • amount - сумма во внутреннем целочисленном формате, обязательный параметр (строка),

  • fee - комиссия транзакции, обязательный параметр (строка),

  • gasLimit - максимальный объем работы, выполняемый валидатором для обработки транзакции, обязательный параметр (строка),

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

  • nonce - одноразовый номер транзакции, обязательный параметр (число),

  • data - данные трансфера, обязательный параметр (полученная с помощью соответствующего метода или пустая строка).

Подпись транзакции

Swagger Transaction Attach signature

Структура запроса POST /api/transaction/attach-signature/{chain}

{
   publicKey: string;
   network?: Network;
   to: string | null;
   amount: string;
   gasLimit: string;
   gasPrice: string;
   nonce: number;
   data: string;
   signature: {
      s: string;
      r: string;
      recovery: number;
   };
}
{
  requestId: string;
  data: { txdata: string };
}

Параметры

  • publicKey - публичный ключ, обязательный параметр (строка),

  • network - тип сети, необязательный параметр, значение по умолчанию 'livenet' (Network),

  • to - адрес получателя, обязательный параметр (строка или null),

  • amount - сумма во внутреннем целочисленном формате, обязательный параметр (строка),

  • fee - комиссия транзакции, обязательный параметр (строка),

  • gasLimit - максимальный объем работы, выполняемый валидатором для обработки транзакции, обязательный параметр (строка),

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

  • nonce - одноразовый номер транзакции, обязательный параметр (число),

  • data - данные трансфера, обязательный параметр (полученная с помощью соответствующего метода или пустая строка),

  • signature - объект с данными подписи, обязательный параметр.

Отправка транзакции в сеть

Swagger Transaction Send

Структура запроса POST /api/transaction/send/{chain}

{
   txdata: string;
   network?: Network;
}
{
  requestId: string;
  data: { txid: string };
}

Параметры

  • txdata - данные подписанной транзакции, обязательный параметр (строка),

  • network - тип сети, необязательный параметр, значение по умолчанию 'livenet' (Network).