6 个版本
0.3.3 | 2023年7月16日 |
---|---|
0.3.2 | 2023年7月16日 |
0.3.1 | 2023年6月23日 |
0.2.0 | 2022年7月6日 |
0.1.0 | 2022年7月6日 |
#2526 在 魔法豆
每月下载 49 次
79KB
1.5K SLoC
Superstream 程序
什么是 Superstream?
Superstream 是一个协议和一套 SDK,用于 Solana 上的实时资金流。它允许任何人以任何间隔(最长一秒)持续向其他人发送资金。
Superstream 协议完全开源。在 GitHub 上查看。
在 superstream.finance 上了解更多关于 Superstream 的信息。
什么是 Superstream 程序?
一个维护所有链上流状态的 Solana 链上程序。其他 Solana 链上程序可以通过跨程序调用(简称 CPI)直接与之交互。更多信息请参阅 此处。
CPI(跨程序调用)中的应用
有关完整的 API 文档,请参阅 Superstream 程序的 API 文档
有关完整的示例,请参阅 superstream-cpi-example
- 在您的程序 Cargo.toml 中添加依赖项
superstream = { version = "0.3.1", features = ["cpi"] }
- 调用 Superstream 的指令。在下面的示例中,我们调用 Superstream 的取消指令。
#[program]
pub mod superstream_cpi_example {
/// Cancel a stream.
pub fn cancel(ctx: Context<Cancel>, seed: u64, name: String, recipient: Pubkey) -> Result<()> {
let cpi_program = ctx.accounts.superstream_program.to_account_info();
let cpi_accounts = superstream::cpi::accounts::Cancel {
stream: ctx.accounts.stream.to_account_info(),
signer: ctx.accounts.signer.to_account_info(),
sender: ctx.accounts.sender.to_account_info(),
mint: ctx.accounts.sender.to_account_info(),
signer_token: ctx.accounts.signer_token.to_account_info(),
sender_token: ctx.accounts.sender_token.to_account_info(),
recipient_token: ctx.accounts.recipient_token.to_account_info(),
escrow_token: ctx.accounts.escrow_token.to_account_info(),
token_program: ctx.accounts.token_program.to_account_info(),
};
let cpi_ctx = CpiContext::new(cpi_program, cpi_accounts);
superstream::cpi::cancel(cpi_ctx, seed, name, recipient)
}
// ... other stuff
}
/// Accounts struct for cancelling a stream.
#[derive(Accounts)]
pub struct Cancel<'info> {
/// Stream PDA account.
#[account(mut)]
pub stream: AccountInfo<'info>,
/// Signer wallet.
pub signer: Signer<'info>,
/// Stream sender account.
pub sender: AccountInfo<'info>,
/// SPL token mint account.
pub mint: Box<Account<'info, Mint>>,
/// Associated token account of the signer.
#[account(mut)]
pub signer_token: Box<Account<'info, TokenAccount>>,
/// Associated token account of the sender.
#[account(mut)]
pub sender_token: Box<Account<'info, TokenAccount>>,
/// Associated token account of the recipient.
#[account(mut)]
pub recipient_token: Box<Account<'info, TokenAccount>>,
/// Associated token escrow account holding the funds for this stream.
#[account(mut)]
pub escrow_token: Box<Account<'info, TokenAccount>>,
/// SPL token program.
pub token_program: Program<'info, Token>,
/// Superstream program.
pub superstream_program: Program<'info, superstream::program::Superstream>,
}
// ... other stuff
本地部署和运行程序
-
安装 Anchor
-
构建 Solana 程序
pnpm build
- 运行 Solana 测试验证器
solana-test-validator
- 将 Solana 程序部署到测试验证器
anchor deploy --provider.cluster localnet
依赖项
~17–27MB
~435K SLoC