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

Blockchain Connector XLM Service API

Обзор

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

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

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

Swagger

Для данного адреса сервера доступно взаимодействие с блокчейном Stellar (xlm).

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

Типы данных

Network

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

Структура данных:

type Network = 'livenet' | 'testnet';

API

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

Swagger Get address

Структура запроса

POST /api/get-address/xlm

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

Параметры

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

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

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

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

Swagger Prepare transaction API

Для формирования транзакции Stellar необходимо указать только максимальный размер комиссии. Это означает что указывается сумма, которую пользователь готов заплатить за данную транзакцию, но по факту взиматься будет только минимальная необходимая сумма, достаточная для того, чтобы транзакция была обработана. При отсутствии нагрузки на сеть будет уплачиваться только минимум - в текущий момент он составляет 100 stroops[^1] на одну операцию, соответственно передаваемая для формирования транзакции комиссия не может быть меньше этого значения.

Комиссия сети

Swagger Prepare transaction FeeStat

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

Примечание

Существуют различные стратегии формирования максимальной комиссии, однако стоит учитывать, что транзакция с невысокой максимальной комиссией не будет обработана при нагрузке на сеть, поэтому мы ориентируем пользователей на значение статистической максимальной комиссии с добавлением небольшого запаса - текущей минимальной комиссии за операцию (feeCharged.max + lastLedgerBaseFee), при этом оставляя возможность указать любое значение комиссии вручную.

Структура запроса

GET api/prepare-transaction/fee-stat/xlm/?network={network}

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

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

{
 requestId: string;
 data: {
       lastLedgerBaseFee: string;
       feeCharged: { 
         min: string;
         max: string;
       };
    };
}

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

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

Данный эндпоинт поддерживает отправку нативной валюты блокчейна, а также любых ассетов Stellar. При отправке нативной валюты проверяется наличие аккаунта с конечным адресом в сети, при его отсутствии происходит автоматическое создание этого аккаунта со стартовым балансом равным переданному в запросе amount, иначе выполняется обычный перевод средств.

Важно

В соответствии с логикой работы сети Stellar нельзя отправить валюту на несуществующий в сети аккаунт (необходимо сначала создать этот аккаунт). Данный эндпоинт автоматически определяет наличие аккаунта в сети и и при необходимости создает его, предупреждения об отсутствии аккаунта в сети не будет! Если вам необходимо оповестить пользователя об отсутствии аккаунта с данным адресом в сети Stellar, вы можете воспользоваться дополнительным эндпоинтом проверки существования аккаунта (метод checkXLMAccount).

Структура запроса

POST api/transaction/get-hash/xlm/transfer

{
  publicKey: string;
  network?: Network;
  to: string;
  amount: string;
  asset?: StellarAsset;
  fee: string;
  memo?: string;
}
{
requestId: string;
 data: {
   unsignedMessage: string;
   hash: string;
 };
}
Параметры
  • publicKey - публичный ключ, обязательный параметр (строка);

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

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

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

  • asset - криптовалюта на основе блокчейна Stellar, определяемая адресом эмитента данного актива и кодом актива, для которой добавляется трастлайн, обязательный параметр (StellarAsset);

  • fee - комиссия транзакции (строка);

  • memo - дополнительные данные транзакции (строка).

Получение хэша транзакции добавления трастлайна

Структура запроса

POST api/transaction/get-hash/xlm/add-trustline

{
  publicKey: string;
  network?: Network;
  amount: string;
  asset?: StellarAsset;
  fee: string;
  memo?: string;
}
{
requestId: string;
 data: {
   unsignedMessage: string;
   hash: string;
 };
}
Параметры
  • publicKey - публичный ключ, обязательный параметр (строка);

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

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

  • asset - криптовалюта на основе блокчейна Stellar, определяемая адресом эмитента данного актива и кодом актива, для которой добавляется трастлайн, обязательный параметр (StellarAsset);

  • fee - комиссия транзакции (строка);

  • memo - дополнительные данные транзакции (строка).

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

Структура запроса

POST api/transaction/get-hash/xlm/add-trustline

{
  publicKey: string;
  network?: Network;
  claimableBalanceId: string;
  fee: string;
  memo?: string;
}
{
requestId: string;
 data: {
   unsignedMessage: string;
   hash: string;
 };
}
Параметры
  • publicKey - публичный ключ, обязательный параметр (строка);

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

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

  • fee - комиссия транзакции (строка);

  • memo - дополнительные данные транзакции (строка).

Получение хэша транзакции для различных типов операций

Структура запроса

POST api/transaction/get-hash/xlm/multi-operations

Данный эндпоинт предназначен для получения хэша транзакции, которая включает в себя различные операции в сети Stellar (XLM). Операции представляют собой переводы, создание аккаунтов, установку трастлайнов и другие действия, поддерживаемые сетью Stellar.

{
  publicKey: string;
  network?: Network;
  operations: XLMNativeOperation[],
  fee: string;
  memo?: string;
}
{
requestId: string;
 data: {
   unsignedMessage: string;
   hash: string;
 };
}
Параметры
  • publicKey - публичный ключ, обязательный параметр (строка);

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

  • operations - массив операций сети Stellar (XLMNativeOperation[]);

  • fee - комиссия транзакции (строка);

  • memo - дополнительные данные транзакции (строка).

Специфические типы данных запроса

LiquidityPoolAsset

Объект, который представляет изменение трастлайна пула ликвидности.

Структура данных:

XLMLiquidityPoolAsset
{
    assetA: Asset;
    assetB: Asset;
    fee: number;
};
Поля данных:

  • assetA - первый актив в пуле (Asset);

  • assetB - второй актив в пуле (Asset);

Активы должны соответствовать правилу assetA < assetB, см.сравнение активов Stellar, где тип 'native' соответствует Coin, а 'alphanum4 'и 'alphanum12' можно различить по коду StellarAsset в соответствии с правилами именования актива.

  • fee - комиссия пула ликвидности. На данный момент поддерживается только комиссия 30 (число).

LiquidityPoolId

Объект, который представляет собой актив, ссылающийся трастлайном на пул ликвидности.

Структура данных:

XLMLiquidityPoolId
    {
        liquidityPoolId: string
    };
Поля данных:

  • liquidityPoolId - идентификатор пула ликвидности (строка).

Predicate

Представляет собой объект для определения сложных условий, используемых в операции createClaimableBalance.

Структура данных:

XLMPredicate
{
    and?: XLMPredicate[];
    or?: XLMPredicate[];
    not?: XLMPredicate;
    abs_before?: string;
    rel_before?: string;
};

Поля данных:

  • and - логическое "И" между двумя условиями. Баланс может быть востребован только если оба условия истинны (XLMPredicate[]);

  • or - логическое "ИЛИ" между двумя условиями. Баланс может быть востребован если хотя бы один из условий истинен (XLMPredicate[]);

  • not - логическое "НЕ" для условия. Баланс может быть востребован если указанное условие ложно (XLMPredicate);

  • abs_before - условие "До абсолютного времени". Баланс может быть востребован если текущее время меньше указанного времени (время в формате Unix timestamp) (строка);

  • rel_before - условие "До относительного времени". Баланс может быть востребован если прошло меньше указанного количества секунд с момента создания баланса (строка).

NativeOperation

Объект, который представляет собой одну из доступных операций сети Stellar.

Структура данных:

XLMNativeOperation
type XLMNativeOperation = XLMNativeOperationCreateAccount | XLMNativeOperationPayment | XLMNativeOperationPathPaymentStrictReceive | XLMNativeOperationPathPaymentStrictSend | XLMNativeOperationManageSellOffer | XLMNativeOperationManageBuyOffer | XLMNativeOperationCreatePassiveSellOffer | XLMNativeOperationSetOptions | XLMNativeOperationChangeTrust | XLMNativeOperationAllowTrust | XLMNativeOperationAccountMerge | XLMNativeOperationManageData | XLMNativeOperationBumpSequence | XLMNativeOperationCreateClaimableBalance | XLMNativeOperationClaimClaimableBalance | XLMNativeOperationBeginSponsoringFutureReserves | XLMNativeOperationEndSponsoringFutureReserves | XLMNativeOperationRevokeAccountSponsorship | XLMNativeOperationRevokeTrustlineSponsorship | XLMNativeOperationRevokeOfferSponsorship | XLMNativeOperationRevokeDataSponsorship | XLMNativeOperationRevokeClaimableBalanceSponsorship | XLMNativeOperationRevokeLiquidityPoolSponsorship | XLMNativeOperationRevokeSignerSponsorship | XLMNativeOperationClawback | XLMNativeOperationClawbackClaimableBalance | XLMNativeOperationSetTrustLineFlags | XLMNativeOperationLiquidityPoolDeposit | XLMNativeOperationLiquidityPoolWithdraw;

В настоящее время существуют следующие типы операций, которые вы можете использовать.

createAccount

Операция создает и пополняет несуществующий аккаунт.

Структура данных:

XLMNativeOperationCreateAccount
{
    type: 'createAccount';
    destination: string;
    startingBalance: string;
    source?: string;
};

Поля данных:

  • type - тип операции транзакции (строка);

  • destination - адрес создаваемого аккаунта (строка);

  • startingBalance - сумма в XLM, на которую нужно пополнить новый аккаунт. Должна быть больше резервного баланса (строка);

  • source - адрес аккаунта, от имени которого выполняется транзакция, по умолчанию - источник транзакции (строка);

payment

Создает операцию платежа, которая отправляет указанное количество актива на указанный аккаунт.

Структура данных:

XLMNativeOperationCreateAccount
{
    type: 'payment';
    destination: string;
    asset: Asset;
    amount: string;
    source?: string;
};

Поля данных:

  • type - тип операции транзакции (строка);

  • destination - адрес аккаунта, на который будет отправлен платеж (строка);

  • asset - актив, который будет отправлен в рамках платежа (Asset);

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

  • source - адрес аккаунта, от имени которого выполняется транзакция, по умолчанию - источник транзакции (строка);

pathPaymentStrictReceive

Операция предоставляет пользователям контроль над активом, который они получают при оплате. Такая гибкость особенно ценна, когда у пользователей есть предпочтения по типу и количеству актива, который они хотят добавить в свой аккаунт.

Структура данных:

XLMNativeOperationPathPaymentStrictReceive
{
    type: 'pathPaymentStrictReceive';
    sendAsset: Asset;
    sendMax: string;
    destination: string;
    destAsset: Asset;
    destAmount: string;
    path: Asset[];
    source?: string;
};

Поля данных:

  • type - тип операции транзакции (строка);

  • sendAsset - тип актива, который пользователь намерен отправить (Asset);

  • sendMax - максимальное количество отправляемых средств (строка);

  • destination - адрес аккаунта, на который будет отправлен платеж (строка);

  • destAsset - актив, который хочет получить аккаунт-получатель. Сеть Stellar динамически конвертирует отправленный актив в желаемый актив на основе текущих обменных курсов (Asset);

  • destAmount - сумма, которую хочет получить аккаунт-получатель (строка);

  • path - массив объектов Asset для использования в качестве пути (Asset);

  • source - адрес аккаунта, от имени которого выполняется транзакция, по умолчанию - источник транзакции (строка);

pathPaymentStrictSend

Операция дает пользователям возможность инициировать платежи, в которых отправитель может указать конкретный актив для отправки, позволяя при необходимости динамически конвертировать валюту. Такая гибкость особенно полезна, когда отправитель предпочитает контролировать тип и сумму отправляемого актива.

Структура данных:

XLMNativeOperationPathPaymentStrictSend
{
    type: 'pathPaymentStrictSend';
    sendAsset: Asset;
    sendAmount: string;
    destination: string;
    destAsset: Asset;
    destMin: string;
    path: Asset[];
    source?: string;
};

Поля данных:

  • type - тип операции транзакции (строка);

  • sendAsset - актив, который пользователь намерен отправить (Asset);

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

  • destination - адрес аккаунта, на который будет отправлен платеж (строка);

  • destAsset - актив, который должен получить аккаунт назначения. Сеть Stellar динамически конвертирует отправленный актив в актив назначения на основе текущих обменных курсов (Asset);

  • destMin - минимальная сумма, которую должен получить аккаунт назначения (строка);

  • path - массив объектов Asset для использования в качестве пути (Asset);

  • source - адрес аккаунта, от имени которого выполняется транзакция, по умолчанию - источник транзакции (строка).

manageSellOffer

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

Структура данных:

XLMNativeOperationManageSellOffer
{
    type: 'manageSellOffer';
    selling: Asset;
    buying: Asset;
    amount: string;
    price: string;
    offerId?: string;
    source?: string;
};

Поля данных:

  • type - тип операции транзакции (строка);

  • selling - актив, который пользователь предлагает на продажу (Asset);

  • buying - актив, который пользователь хочет купить (Asset);

  • amount - сумма, которую вы продаете. Если 0, удаляет предложение (строка);

  • price - цена, по которой пользователь готов совершить продажу. Она выражается как отношение количества продаваемого актива к количеству покупаемого актива (строка);

  • offerId - идентификатор предложения, если 0, будет создано новое предложение (по умолчанию). В противном случае редактирует существующее предложение (строка);

  • source - адрес аккаунта, от имени которого выполняется транзакция, по умолчанию - источник транзакции (строка).

manageBuyOffer

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

Структура данных:

XLMNativeOperationManageBuyOffer
{
    type: 'manageBuyOffer';
    selling: Asset;
    buying: Asset;
    buyAmount: string;
    price: string;
    offerId?: string;
    source?: string;
};

Поля данных:

  • type - тип операции транзакции (строка);

  • selling - актив, который пользователь предлагает на продажу (Asset);

  • buying - актив, который пользователь хочет купить (Asset);

  • buyAmount - сумма, которую вы покупаете. Если 0, удаляет предложение (строка);

  • price - цена, по которой пользователь готов совершить продажу. Она выражается как отношение количества продаваемого актива к количеству покупаемого актива (строка);

  • offerId - идентификатор предложения, если 0, будет создано новое предложение (по умолчанию). В противном случае редактирует существующее предложение (строка);

  • source - адрес аккаунта, от имени которого выполняется транзакция, по умолчанию - источник транзакции (строка);

createPassiveSellOffer

Операция позволяет пользователям создавать предложение о продаже одного актива за другой без немедленного принятия обратного предложения по равной цене. Эта операция особенно полезна, когда пользователи хотят разместить предложение о продаже в леджере, не сопоставляя его с существующими предложениями о покупке, и дать ему возможность дождаться покупателя.

Структура данных:

XLMNativeOperationCreatePassiveSellOffer
{
    type: 'createPassiveSellOffer';
    selling: Asset;
    buying: Asset;
    amount: string;
    price: string;
    source?: string;
};

Поля данных:

  • type - тип операции транзакции (строка);

  • selling - актив, который пользователь предлагает на продажу (Asset);

  • buying - актив, который пользователь хочет купить (Asset);

  • amount - сумма, которую вы продаете (строка);

  • price - цена, по которой пользователь готов совершить продажу. Она выражается как отношение количества продаваемого актива к количеству покупаемого актива (строка);

  • source - адрес аккаунта, от имени которого выполняется транзакция, по умолчанию - источник транзакции (строка);

setOptions

Операция позволяет настраивать конкретные параметры, связанные с аккаунтом, расширяя его функциональность и определяя его поведение в сети Stellar.

Структура данных:

XLMNativeOperationSetOptions
{
    type: 'setOptions';
    inflationDest?: string;
    clearFlags?: string;
    setFlags?: string;
    masterWeight?: number;
    lowThreshold?: number;
    medThreshold?: number;
    highThreshold?: number;
    signer?: {
        ed25519PublicKey?: string;
        sha256Hash?: string;
        preAuthTx?: string;
        ed25519SignedPayload?: string;
        weight?: number;
    };
    homeDomain?: string;
    source?: string;
};

Поля данных:

  • type - тип операции транзакции (строка);

  • inflationDest - установите этот идентификатор аккаунта в качестве места назначения инфляции (строка);

  • clearFlags - целочисленный битовый флаг для очистки определенных флагов аккаунта (строка);

  • setFlags - целочисленный битовый флаг для установки определенных флагов аккаунта (строка);

  • masterWeight - число от 0 до 255 (включительно), обозначающее вес мастер-ключа (число);

  • lowThreshold - суммарный вес для нижнего порога (число);

  • medThreshold - суммарный вес для среднего порога (число);

  • highThreshold - суммарный вес для высокого порога (число);

  • signer - добавляет или удаляет подписанта из аккаунта;

    • ed25519PublicKey - публичный ключ ed25519 подписанта (строка);

    • sha256Hash - хэш sha256 (строка);

    • preAuthTx - хэш транзакции (строка);

    • ed25519SignedPayload - подписываемые данные (публичный ключ ed25519 + необработанные данные) (строка);

    • weight - вес нового подписанта (0 для удаления или 1-255) (строка);

  • homeDomain - устанавливает домашний домен аккаунта. Домашний домен - это способ связать аккаунт с определенным доменом в Интернете (строка);

  • source - адрес аккаунта, от имени которого выполняется транзакция, по умолчанию - источник транзакции (строка);

changeTrust

Операция добавляет, удаляет или обновляет трастлайн для указанного актива от исходного аккаунта к другому.

Структура данных:

XLMNativeOperationChangeTrust
{
    type: 'changeTrust';
    asset: StellarAsset | XLMLiquidityPoolAsset;
    limit?: string;
    source?: string;
};

Поля данных:

  • type - тип операции транзакции (строка);

  • asset - криптовалюта на основе блокчейна Stellar, определяемая адресом эмитента данного актива и кодом актива, для которой добавляется трастлайн, обязательный параметр (Asset | XLMLiquidityPoolAsset);

  • limit - предел для актива, по умолчанию равен максимальному значению int64. Если предел установлен "0", то это удаляет трастлайн (строка);

  • source - адрес аккаунта, от имени которого выполняется транзакция, по умолчанию - источник транзакции (строка).

allowTrust

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

Структура данных:

XLMNativeOperationAllowTrust
{
    type: 'allowTrust';
    trustor: string;
    assetCode: string;
    authorize: 0 | 1 | 2;
    source?: string;
};

Поля данных:

  • type - тип операции транзакции (строка);

  • trustor - аккаунт, который первоначально установил трастлайн для актива (строка);

  • assetCode - авторизуемый код актива (строка);

  • authorize - значение 1 для авторизации, 2 для авторизации с учетом обязательств и 0 для деавторизации (число);

  • source - адрес аккаунта, от имени которого выполняется транзакция, по умолчанию - источник транзакции (строка).

accountMerge

Операция позволяет аккаунту консолидировать остатки XLM с одного аккаунта Stellar на другой. Это может быть полезно для упорядочивания запасов или закрытия лишних счетов.

Структура данных:

XLMNativeOperationAccountMerge
{
    type: 'accountMerge';
    destination: string;
    source?: string;
};

Поля данных:

  • type - тип операции транзакции (строка);

  • destination - аккаунт, куда будет перенесен баланс XLM (строка);

  • source - адрес аккаунта, от имени которого выполняется транзакция, по умолчанию - источник транзакции (строка).

manageData

Операция позволяет манипулировать пользовательскими записями данных, связанными с конкретным аккаунтом. Эти записи данных имеют форму пар имя/значение и служат гибким способом хранения дополнительной информации в блокчейне.

Структура данных:

XLMNativeOperationManageData
{
    type: 'manageData';
    name: string;
    value: string;
    source?: string;
};

Поля данных:

  • type - тип операции транзакции (строка);

  • name - наименование записи данных (строка);

  • value - значение ввода данных (строка);

  • source - адрес аккаунта, от имени которого выполняется транзакция, по умолчанию - источник транзакции (строка).

bumpSequence

Операция представляет собой специализированную транзакцию, которая позволяет манипулировать номером последовательности, связанным с исходным аккаунтом. Ее основная цель - продвинуть номер последовательности до указанного значения, фактически "сдвинув" его вперед. Эта операция особенно полезна для решения проблем с порядком транзакций и обеспечения валидности последующих транзакций.

Структура данных:

XLMNativeOperationBumpSequence
{
    type: 'bumpSequence';
    bumpTo: string;
    source?: string;
};

Поля данных:

  • type - тип операции транзакции (строка);

  • bumpTo - целевой номер последовательности (bumpTo), к которому будет привязан номер последовательности исходного аккаунта. Это гарантирует, что последующие транзакции должны иметь номер последовательности, равный или больший, чем значение bumpTo, чтобы считаться действительными (строка);

  • source - адрес аккаунта, от имени которого выполняется транзакция, по умолчанию - источник транзакции (строка);

createClaimableBalance

Операция позволяет пользователям создавать claimableBalance, который является механизмом блокировки средств в безопасном состоянии до тех пор, пока не будет выполнено заранее определенное условие.

Структура данных:

XLMNativeOperationCreateClaimableBalance
{
    type: 'createClaimableBalance';
    asset: Asset;
    amount: string;
    claimants: {
        destination: string;
        predicate?: XLMPredicate;
    }[];
    source?: string;
};

Поля данных:

  • type - тип операции транзакции (строка);

  • asset - актив, который будет заблокирован в claimableBalance (Asset);

  • amount - сумма актива, хранящегося в записи ClaimableBalanceEntry и ожидающего предъявления требований указанными заявителями (строка);

  • claimants - массив претендентов. Пользователи определяют одного или нескольких претендентов, имеющих право требовать средства с созданного баланса (массив);

- destination - адрес аккаунта, к которой привязан claimableBalance (строка);

- predicate - предикат claimableBalance. По умолчанию - безусловный (XLMPredicate);

  • source - адрес аккаунта, от имени которого выполняется транзакция, по умолчанию - источник транзакции (строка);

claimClaimableBalance

Операция позволяет пользователю запросить доступ к средствам, связанным с определенным идентификатором баланса, чтобы использовать их в дальнейших операциях в сети Stellar.

Структура данных:

XLMNativeOperationClaimClaimableBalance
{
    type: 'claimClaimableBalance';
    balanceId: string;
    source?: string;
};

Поля данных:

  • type - тип операции транзакции (строка);

  • balanceId - идентификатор баланса, который требуется запросить (строка);

  • source - адрес аккаунта, от имени которого выполняется транзакция, по умолчанию - источник транзакции (строка).

beginSponsoringFutureReserves

Операция создает спонсорскую связь между двумя аккаунтами в сети Stellar. Она позволяет одному аккаунту финансировать будущие резервы другого аккаунта.

Структура данных:

XLMNativeOperationBeginSponsoringFutureReserves
{
    type: 'beginSponsoringFutureReserves';
    sponsoredId: string;
    source?: string;
};

Поля данных:

  • type - тип операции транзакции (строка);

  • sponsoredId - идентификатор аккаунта, который будет спонсирован. Именно этот аккаунт получает выгоду от спонсорства, избавляя его от необходимости держать собственные резервы (строка);

  • source - адрес аккаунта, от имени которого выполняется транзакция, по умолчанию - источник транзакции (строка).

endSponsoringFutureReserves

Операция используется для завершения процесса спонсирования будущих резервов, который был начат с помощью операции beginSponsoringFutureReserves.

Обе операции beginSponsoringFutureReserves и endSponsoringFutureReserves должны присутствовать в транзакции спонсорства, гарантируя, что оба аккаунта согласны на спонсорство.

Структура данных:

XLMNativeOperationEndSponsoringFutureReserves
{
    type: 'endSponsoringFutureReserves';
    source?: string;
};

Поля данных:

  • type - тип операции транзакции (строка);

  • source - адрес аккаунта, от имени которого выполняется транзакция, по умолчанию - источник транзакции (строка);

revokeAccountSponsorship

Операция позволяет отозвать спонсорство для указанного аккаунта.

Структура данных:

XLMNativeOperationRevokeAccountSponsorship
{
    type: 'revokeAccountSponsorship';
    account: string;
    source?: string;
};

Поля данных:

  • type - тип операции транзакции (строка);

  • account - идентификатор аккаунта, для которой отзывается спонсорство (строка);

  • source - адрес аккаунта, от имени которого выполняется транзакция, по умолчанию - источник транзакции (строка).

revokeTrustlineSponsorship

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

Структура данных:

XLMNativeOperationRevokeTrustlineSponsorship
{
    type: 'revokeTrustlineSponsorship';
    account: string;
    asset: Asset | XLMLiquidityPoolId;
    source?: string;
};

Поля данных:

  • type - тип операции транзакции (строка);

  • account - идентификатор аккаунта, для которой отзывается спонсорство (строка);

  • asset - актив трастлайна (Asset | XLMLiquidityPoolId);

  • source - адрес аккаунта, от имени которого выполняется транзакция, по умолчанию - источник транзакции (строка).

revokeOfferSponsorship

Операция позволяет удалить спонсорство, предоставленное другим аккаунтам для определенного предложения.

Структура данных:

XLMNativeOperationRevokeOfferSponsorship
{
    type: 'revokeOfferSponsorship';
    seller: string;
    offerId: string;
    source?: string;
};

Поля данных:

  • type - тип операции транзакции (строка);

  • seller - адрес аккаунта продавца, который создал предложение (строка);

  • offerId - идентификатор предложения, для которого отзывается спонсорство (строка);

  • source - адрес аккаунта, от имени которого выполняется транзакция, по умолчанию - источник транзакции (строка).

revokeDataSponsorship

Операция позволяет отозвать спонсорство, предоставленное аккаунту над конкретной записью данных, что приводит к прекращению привилегий, связанных с этим спонсорством.

Структура данных:

XLMNativeOperationRevokeDataSponsorship
{
    type: 'revokeDataSponsorship';
    account: string;
    name: string;
    source?: string;
};

Поля данных:

  • type - тип операции транзакции (строка);

  • account - идентификатор аккаунта, для которой отзывается спонсорство (строка);

  • name - наименование записи данных, для которой отзывается спонсорство (строка);

  • source - адрес аккаунта, от имени которого выполняется транзакция, по умолчанию - источник транзакции (строка).

revokeClaimableBalanceSponsorship

Операция позволяет отозвать спонсорство для определенного claimableBalance.

Структура данных:

XLMNativeOperationRevokeClaimableBalanceSponsorship
{
    type: 'revokeClaimableBalanceSponsorship';
    balanceId: string;
    source?: string;
};

Поля данных:

  • type - тип операции транзакции (строка);

  • balanceId - идентификатор баланса, спонсорство которого отменяется (строка);

  • source - адрес аккаунта, от имени которого выполняется транзакция, по умолчанию - источник транзакции (строка).

revokeLiquidityPoolSponsorship

Операция позволяет отменить спонсорство пула ликвидности. Используя эту операцию, вы можете удалить спонсорство, связанное с определенным идентификатором пула ликвидности.

Структура данных:

XLMNativeOperationRevokeLiquidityPoolSponsorship
{
    type: 'revokeLiquidityPoolSponsorship';
    liquidityPoolId: string;
    source?: string;
};

Поля данных:

  • type - тип операции транзакции (строка);

  • liquidityPoolId - идентификатор спонсируемого пула ликвидности, для которого отменяется спонсорство (строка);

  • source - адрес аккаунта, от имени которого выполняется транзакция, по умолчанию - источник транзакции (строка).

revokeSignerSponsorship

Операция используется для создания транзакции отзыва спонсорства от подписанта в сети Stellar.

Структура данных:

XLMNativeOperationRevokeSignerSponsorship
{
    type: 'revokeSignerSponsorship';
    account: string;
    signer: {
        ed25519PublicKey?: string;
        sha256Hash?: string;
        preAuthTx?: string;
    };
    source?: string;
};

Поля данных:

  • type - тип операции транзакции (строка);

  • account - идентификатор аккаунта, для которой отзывается спонсорство (строка);

  • signer - подписант, чье спонсорство отзывается (строка);

    • ed25519PublicKey - публичный ключ ed25519 подписанта (строка);

    • sha256Hash - хэш sha256(строка);

    • preAuthTx - хэш транзакции (строка);

  • source - адрес аккаунта, от имени которого выполняется транзакция, по умолчанию - источник транзакции (строка).

clawback

Операция позволяет списать определенную сумму в обозначенном активе у получателя. Эта операция представляет собой механизм необратимого удаления активов из аккаунта, способствуя контролируемому управлению активами в сети Stellar.

Структура данных:

XLMNativeOperationClawback
{
    type: 'clawback';
    asset: Asset;
    amount: string;
    from: string;
    source?: string;
};

Поля данных:

  • type - тип операции транзакции (строка);

  • asset - актив, подлежащий возврату (Asset);

  • amount - сумма актива, которую нужно вернуть (строка);

  • from - аккаунт, с которого будут списаны средства в рамках операции clawback (строка);

  • source - адрес аккаунта, от имени которого выполняется транзакция, по умолчанию - источник транзакции (строка).

clawbackClaimableBalance

При использовании этой операции необходимо вернуть весь неиспользованный баланс, а не только его часть. Если часть неиспользованного баланса уже была востребована, следует использовать стандартную операцию clawback для его возврата.

Структура данных:

XLMNativeOperationClawbackClaimableBalance
{
    type: 'clawbackClaimableBalance';
    balanceId: string;
    source?: string;
};

Поля данных:

  • type - тип операции транзакции (строка);

  • balanceId - уникальный идентификатор, определяющий запись ClaimableBalanceEntry, он идентифицирует невостребованный остаток, подлежащий возврату (строка);

  • source - адрес аккаунта, от имени которого выполняется транзакция, по умолчанию - источник транзакции (строка).

setTrustLineFlags

Операция позволяет аккаунту настраивать флаги авторизации и трастлайна для конкретного актива. Эта операция очень важна для точной настройки условий и разрешений, связанных с трастлайном, что повышает контроль над взаимодействием активов в сети Stellar.

Структура данных:

XLMNativeOperationSetTrustLineFlags
{
    type: 'setTrustLineFlags';
    trustor: string;
    asset: Asset;
    flags: {
        authorized?: boolean;
        authorizedToMaintainLiabilities?: boolean;
        clawbackEnabled?: boolean;
    };
    source?: string;
};

Поля данных:

  • type - тип операции транзакции (строка);

  • trustor - аккаунт (trustor), чей трастлайн настраивается (строка);

  • asset - актив трастлайна (Asset);

  • flags - параметры, определяющие набор флагов для изменения;

    • authorized - разрешает аккаунту выполнять операции с его кредитом (логическое значение);

    • authorizedToMaintainLiabilities - разрешает аккаунту поддерживать и уменьшать обязательства по своему кредиту (логическое значение);

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

  • source - адрес аккаунта, от имени которого выполняется транзакция, по умолчанию - источник транзакции (строка).

liquidityPoolDeposit

Операция позволяет вносить активы в пул ликвидности, тем самым увеличивая резервы пула ликвидности в обмен на доли пула. Эта операция необходима для того, чтобы участники могли вносить ликвидные средства в пул, а взамен получать доли пула, представляющие их долю в пуле ликвидности.

Структура данных:

XLMNativeOperationLiquidityPoolDeposit
{
    type: 'liquidityPoolDeposit';
    liquidityPoolId: string;
    maxAmountA: string;
    maxAmountB: string;
    minPrice: string;
    maxPrice: string;
    source?: string;
};

Поля данных:

  • type - тип операции транзакции (строка);

  • liquidityPoolId - уникальный идентификатор, определяющий пул ликвидности, в который вносятся активы (строка);

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

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

  • minPrice - минимальная приемлемая цена для размещаемых активов. Этот параметр помогает участникам контролировать минимальный курс, по которому они готовы обменять свои активы на акции пула (строка);

  • maxPrice - максимально допустимая цена для размещаемых активов. Этот параметр позволяет участникам установить верхний предел курса, по которому они готовы обменять свои активы на акции пула (строка);

  • source - адрес аккаунта, от имени которого выполняется транзакция, по умолчанию - источник транзакции (строка).

liquidityPoolWithdraw

Операция позволяет пользователям выводить активы из пула ликвидности. Этот процесс уменьшает количество долей пула, принадлежащих участнику, в обмен на часть резервов пула. Участники могут активно управлять своими позициями в пуле ликвидности посредством вывода средств.

Структура данных:

XLMNativeOperationLiquidityPoolWithdraw
{
    type: 'liquidityPoolWithdraw';
    liquidityPoolId: string;
    amount: string;
    minAmountA: string;
    minAmountB: string;
    source?: string;
};

Поля данных:

  • type - тип операции транзакции (строка);

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

  • amount - количество долей пула для снятия (строка);

  • minAmountA - минимальная сумма актива A, подлежащая выводу из пула (строка);

  • minAmountB - минимальная сумму актива B, подлежащая выводу из пула. minAmountA и minAmountB помогают участникам контролировать процент проскальзывания от "спот-цены" пула, обеспечивая более предсказуемый результат (строка);

  • source - адрес аккаунта, от имени которого выполняется транзакция, по умолчанию - источник транзакции (строка).

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

Структура запроса

POST api/transaction/attach-signature/xlm

{
  publicKey: string;
  network: Network;
  unsignedMessage: string;
  signature: {
    s: string;
    R: string;
  };
}
{
 requestId: string;
 data: {
   txdata: string;
 };
}
Параметры
  • publicKey - публичный ключ, обязательный параметр (строка);

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

  • unsignedMessage - данные транзакции, полученные на предыдущем этапе (строка);

  • signature - объект с данными подписи.

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

Структура запроса

POST api/transaction/send/xlm

{
  txdata: string;
}
{
 requestId: string;
 data: {
   txid: string;
 };
}
Параметры
  • txdata - данные подписанной транзакции, (строка).

Stellar Utility Endpoints

Получение информации о зарезервированном балансе XLM по адресу (метод getXLMAccountReserve)

Структура запроса:

POST /api/utility/account-reserve

{
  address: string;
}
{
  requestId: string;
  reserved: {
    baseReserve: string,
    xlm: string,
    assets: {
    value: string,
    count: number,
    },
  total: string,
  }
}
Параметры
  • address - уникальная строка символов, которая используется для идентификации кошелька на сети Stellar и начинается с буквы "G" и состоит из 56 символов, включая буквы и цифры;
Параметры ответа
  • requestId- идентификатор запроса (строка - uuid);

  • baseReserve - базовый резерв, который сеть использует при расчете минимального баланса счета. Этот минимальный баланс не может быть отправлен или потрачен;

  • xlm - количество XLM, которое находится в резерве на данном аккаунте;

  • assets - объект, который предоставляет информацию о зарезервированных активах;

  • value - количество XLM, которое находится в резерве для трастлайнов на данном аккаунте;

  • count - количество трастлайнов, установленных на аккаунте;

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

Получение базового резерва XLM (baseReserve)(метод getXLMBaseReserve)

Структура запроса:

GET /api/utility/base-reserve

{
  requestId: string,
  baseReserve: string,
}
Параметры ответа
  • requestId- идентификатор запроса (строка - uuid);

  • baseReserve - базовый резерв, который сеть использует при расчете минимального баланса счета. Этот минимальный баланс не может быть отправлен или потрачен;

Проверка существования аккаунта (метод checkXLMAccount)

Структура запроса:

POST /api/utility/check-account

{
  address: string;
}
{
  requestId: string
  accountExists: boolean,
}
Параметры
  • address - уникальная строка символов, которая используется для идентификации кошелька на сети Stellar и начинается с буквы "G" и состоит из 56 символов, включая буквы и цифры;
Параметры ответа
  • requestId- идентификатор запроса (строка - uuid);

  • accountExists - булевое значение, показывает существует ли аккаунт.

Проверка наличия в аккаунте трастлайна (метод checkXLMAccountHasTrustline)

Структура запроса:

POST /api/utility/check-account-trustline

{
  address: string;
  issuer: string;
  code: string
}
{
  requestId: string
  hasTrustline: boolean,
}
Параметры
  • address - уникальная строка символов, которая используется для идентификации кошелька на сети Stellar и начинается с буквы "G" и состоит из 56 символов, включая буквы и цифры;

  • issuer - представляет собой аккаунт в сети Stellar, который создает и выпускает новые активы (токены) на сети. Эмитент отвечает за создание и управление активами, включая их выдачу и уничтожение;

  • code  - идентификационный код актива. Этот код обычно состоит из нескольких символов и помогает идентифицировать конкретный актив среди других активов, выпущенных разными эмитентами.

Параметры ответа
  • requestId- идентификатор запроса (строка - uuid);

- hasTrustline - булевое значение, показывает существует ли трастлайн.