Вывод средств

Сжигает баланс токенов пользователя на стороне канала в Withdraw Program, сигнализируя об ожидающем выводе средств; оператор должен впоследствии вызвать ReleaseFunds в Escrow Program для завершения расчёта.

Аккаунты

АккаунтЗаписываемыйПодписантОписание
user✓Владелец токена, инициирующий вывод средств
mint✓SPL token mint (используется для сжигания)
token_account✓token account пользователя на стороне канала (источник)
token_programSPL Token Program
associated_token_programAssociated Token Program

Параметры

ПараметрТипОписание
amountu64Количество токенов для вывода в минимальных единицах токена
destinationOption<Pubkey>Целевой кошелёк в Mainnet; если None, по умолчанию используется кошелёк подписанта

Возвращаемое значение

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

Пример

import { getWithdrawFundsInstruction } from "../private-channel-withdraw-program/clients/typescript/src/generated";
const withdrawIx = getWithdrawFundsInstruction({
user: userSigner,
mint: mintAddress,
tokenAccount: channelTokenAccount,
tokenProgram: TOKEN_PROGRAM_ID,
associatedTokenProgram: ASSOCIATED_TOKEN_PROGRAM_ID,
amount: 1_000_000n,
destination: null // null = release to signer's Mainnet wallet
});

Важные замечания

  • Эта инструкция относится к Withdraw Program (J231K9UEpS4y4KAPwGc4gsMNCjKFRMYcQBcjVW7vBhVi devnet), а не к Escrow Program
  • Сжигание токенов на стороне канала не освобождает средства автоматически в Mainnet; оператор должен впоследствии вызвать ReleaseFunds в Escrow Program с действительным доказательством исключения SMT
  • Ошибка ZeroAmount выбрасывается, если amount равно 0
  • Если destination равно None, вызов оператора ReleaseFunds освободит средства на кошелёк подписанта

Полный справочник кодов ошибок для обеих программ см. в Instructions -> Error Codes.

Is this page helpful?

Содержание

Редактировать страницу