Blockchain Connector ETH-like Service API
Обзор
Для каждого поддерживаемого блокчейна доступен набор эндпоинтов, позволяющий сформировать транзакцию, подписать ее и отправить в сеть, а также получить адрес из публичного ключа.
Параметры запросов, встроенные в url, например, идентификатор блокчейна, являются обязательными. Параметры в query string или JSON теле запроса могут быть опциональными и подробно описаны в соответствующих разделах.
Адрес сервера: https://cloud.spatium.net/blockchain-connector-eth-like/v1
Для данного адреса сервера доступно взаимодействие со следующими блокчейнами:
- eth;
- ftm;
- avax;
- matic;
- bsc;
- etc;
- op.
Структура запросов и информации в ответах для них одинакова.
Типы данных
Network
Network - тип сети. Как правило, блокчейны поддерживают минимум два варианта: тестовая сеть для разработки (testnet) с фиктивными активами и стабильная рабочая сеть (livenet) с реальными активами. Структура данных:
API
Генерация адреса из публичного ключа
Swagger Get address
Структура запроса POST /api/get-address/{chain}
Параметры
-
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
- сумма во внутреннем целочисленном формате, обязательный параметр (строка).
Структура ответа
Данные одобрения ERC-20 токена
Получение данных одобрения необходимо для корректного формирования транзакции и расчета gasLimit в случае одобрения ERC-20 токенов.
Swagger Prepare transaction API
Структура запроса GET /api/prepare-transaction/erc20-approve-data?to={spenderAddress}&amount={amount}
Параметры
-
to
(spender) - адрес, обязательный параметр (строка). Это адрес, которому разрешено снимать ERC-20 токены с аккаунта, делающего одобрение. -
amount
- сумма во внутреннем целочисленном формате, обязательный параметр (строка). Это максимальное количество токенов, которое spender может снять.
Структура ответа
Estimate
Эндпоинт предоставляет все необходимые для формирования и оценки комиссии транзакции данные.
Swagger Prepare transaction Estimate
Структура запроса POST /api/prepare-transaction/estimate/{chain}
Параметры
-
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).
Структура ответа
gasLimit
Максимальный объем работы, выполняемый валидатором для обработки транзакции (gasLimit) необходим для корректного формирования транзакции и расчета ее комиссии.
Swagger Prepare transaction GasLimit
Структура запроса POST /api/prepare-transaction/gas-limit/{chain}
Параметры
-
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).
Структура ответа
Транзакции
Получение хэша транзакции
Swagger Transaction Get hash
Структура запроса POST /api/transaction/get-hash/{chain}
Параметры
-
network
- тип сети, необязательный параметр, значение по умолчанию 'livenet' (Network), -
publicKey
- публичный ключ, обязательный параметр (строка), -
to
- адрес получателя, обязательный параметр (строка или null), -
amount
- сумма во внутреннем целочисленном формате, обязательный параметр (строка), -
fee
- комиссия транзакции, обязательный параметр (строка), -
gasLimit
- максимальный объем работы, выполняемый валидатором для обработки транзакции, обязательный параметр (строка), -
gasPrice
- цена за единицу выполненной валидатором работы, обязательный параметр (строка), -
nonce
- одноразовый номер транзакции, обязательный параметр (число), -
data
- данные трансфера, обязательный параметр (полученная с помощью соответствующего метода или пустая строка).
Подпись транзакции
Swagger Transaction Attach signature
Структура запроса POST /api/transaction/attach-signature/{chain}
Параметры
-
publicKey
- публичный ключ, обязательный параметр (строка), -
network
- тип сети, необязательный параметр, значение по умолчанию 'livenet' (Network), -
to
- адрес получателя, обязательный параметр (строка или null), -
amount
- сумма во внутреннем целочисленном формате, обязательный параметр (строка), -
fee
- комиссия транзакции, обязательный параметр (строка), -
gasLimit
- максимальный объем работы, выполняемый валидатором для обработки транзакции, обязательный параметр (строка), -
gasPrice
- цена за единицу выполненной валидатором работы, обязательный параметр (строка), -
nonce
- одноразовый номер транзакции, обязательный параметр (число), -
data
- данные трансфера, обязательный параметр (полученная с помощью соответствующего метода или пустая строка), -
signature
- объект с данными подписи, обязательный параметр.
Отправка транзакции в сеть
Swagger Transaction Send
Структура запроса POST /api/transaction/send/{chain}
Параметры
-
txdata
- данные подписанной транзакции, обязательный параметр (строка), -
network
- тип сети, необязательный параметр, значение по умолчанию 'livenet' (Network).