我是一名Rust/Solana开发新手,感觉遇到的问题对其他开发新手也会有所帮助。
我想知道如何在指令期间将SOL从一个账户转移到程序中,并且能够将SOL发送回调用该指令的账户。
我已阅读https://docs.solana.com/,但没有找到有关通过程序进行SOL转移的信息。
例如:
Acc1调用Program1中的赌博指令,该指令从调用方转移1 SOL,然后运行可验证的随机函数。如果Acct1赢得了赌博,Program1将向Acct1发送2 SOL。
非常感谢您的帮助,谢谢!
我是一名Rust/Solana开发新手,感觉遇到的问题对其他开发新手也会有所帮助。
我想知道如何在指令期间将SOL从一个账户转移到程序中,并且能够将SOL发送回调用该指令的账户。
我已阅读https://docs.solana.com/,但没有找到有关通过程序进行SOL转移的信息。
例如:
Acc1调用Program1中的赌博指令,该指令从调用方转移1 SOL,然后运行可验证的随机函数。如果Acct1赢得了赌博,Program1将向Acct1发送2 SOL。
非常感谢您的帮助,谢谢!
solana_program :: system_instruction :: transfer 而不是 spl_token :: instruction :: transfer
仅具有源和目标帐户,没有所有者
使用源帐户进行签名
传递系统程序而不是代币程序
请注意保留HTML标记。
指令所需的帐户丢失
invoke_signed( &ix, &[ base_account.to_account_info().clone(), user.to_account_info().clone(), system_program.to_account_info().clone(), ], &[&[b"test", &[bump_seed]]], // solana_program::system_instruction::transfer(&pda, &user_address, 10000); ); Ok(())```
- Brutus123#[derive(Accounts)] pub struct SendLamports<'info> { #[account(init, payer = user, space = 9000)] pub base_account: Account<'info, BaseAccount>, #[account(mut)] pub user: Signer<'info>, pub system_program: Program<'info, System>, pub pda: Account<'info>, }
错误:括号参数必须是生命周期和类型 60 | pub pda: Account<'info>`有什么想法吗? - Brutus123