GOOGLE ADS

вторник, 26 апреля 2022 г.

Как передать SOL в инструкции якорного смарт-контракта

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

Как я могу передать собственный SOL (а не какой-либо другой токен spl) непосредственно в адрес хранилища учетной записи события в инструкции якорного смарт-контракта?

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

token::transfer(
CpiContext::new(
PROGRAM_ACCOUNT,
anchor_spl::token::Transfer {
from: source_user_info,
to: destination_user_info,
authority: source_user_info,
},
),
1,
)?;

Заранее спасибо!


Решение проблемы

Чтобы отправить собственный SOL с помощью Anchor, вы можете использовать следующий код внутри инструкции:

 let ix = anchor_lang::solana_program::system_instruction::transfer(
&ctx.accounts.from.key(),
&ctx.accounts.to.key(),
amount,
);
anchor_lang::solana_program::program::invoke(
&ix,
&[
ctx.accounts.from.to_account_info(),
ctx.accounts.to.to_account_info(),
],
);

Где сумма — это число (u64), представляющее Лэмпортс (0,000000001 SOL).

Вы можете проверить функцию передачи в документации по программе Solana и в разделе Solana Cookbook в Sending SOL.

Комментариев нет:

Отправить комментарий

Laravel Datatable addColumn returns ID of one record only

Я пытаюсь использовать Yajra Datatable для интеграции DataTable на свой веб-сайт. Я смог отобразить таблицу, но столкнулся с проблемой. В по...