是否有办法将SPL令牌从钱包中转移到另一个。我已经做了一些研究,我发现我必须先初始化帐户,使用创建关联帐户,然后使用令牌传输?
是否有任何代码示例可以传输令牌或帮助创建帐户/令牌传输的库。等
发布于 2022-04-05 10:12:33
您可以直接对令牌程序使用的指令和类型使用spl-token机箱:令牌/。
如果需要创建关联的令牌帐户,可以使用spl-associated-token-account机箱:帐户/index.html
如果您在链上,您可以创建一个transfer指令,并将它与所需的帐户一起传递进来,即:
let ix = spl_token::instruction::transfer(
token_program.key,
source.key,
destination.key,
authority.key,
&[],
amount,
)?;
invoke(
&ix,
&[source, destination, authority, token_program],
)这是根据token-swap传输代码:https://github.com/solana-labs/solana-program-library/blob/b2fad8a0781bddd90c8e9b768184f55306265cef/token-swap/program/src/processor.rs#L138改编的。
您需要首先创建source和destination帐户,这是正确的,并且这些帐户是关联的令牌帐户是首选的。可以使用以下方法在链上创建它们:
let ix = spl_associated_token_account::instruction::create_associated_token_account(
payer.key,
wallet.key,
token_mint.key,
token_program.key,
);
invoke(
&ix,
&[payer, associated_token_account, wallet, token_mint, system_program, token_program, associated_token_account_program],
)请注意,为了执行跨程序调用,必须将所有这些帐户发送到您的程序。
发布于 2022-04-04 14:24:05
Afaik没有库,但令牌传输只从一个帐户转到另一个帐户,在锚内有一个传输函数,您必须调用和传递帐户信息,您也可以直接传输到一个地址,因为您也需要接收者的帐户信息,您可以从一个公共密钥获得,但可以通过托管,这是我编写的程序,发送到PDA和接收者接受它从PDA。
https://stackoverflow.com/questions/71730814
复制相似问题