如何使用 solana rust 合约发送 SOL

How to send SOL with a solana rust contract

我是菜鸟 Rust/Solana 开发人员,我觉得我遇到了一个对大多数菜鸟都有帮助的问题。

我想知道如何在指令期间将 SOL 从帐户转移到程序,然后能够将 SOL 发送回调用指令的帐户。

我阅读了 https://docs.solana.com/ 但我找不到任何关于通过程序进行 SOL 传输的信息。

示例:

Acc1调用Program1中的赌博指令,从调用者那里转出1个SOL,然后运行一个可验证的随机函数。如果 Acct1 赢了赌局,Program1 然后将 2 SOL 发送回 Acct1。

非常感谢您的帮助,谢谢!

您可以在食谱中找到与此类似的程序:https://solanacookbook.com/references/programs.html#how-to-do-cross-program-invocation

您的情况不同之处在于:

  • 使用solana_program::system_instruction::transfer代替spl_token::instruction::transfer
  • 只有源账户和目标账户,没有所有者
  • 使用源账号签名
  • 传入系统程序而不是令牌程序