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

MIT 许可证

79KB
1.5K SLoC

Superstream 程序

License Crates.io Docs.rs

什么是 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