1 个不稳定版本

0.1.1 2021 年 6 月 11 日

#94 in #payment

AGPL-3.0-only

30KB
501

StreamFlow

此仓库包含 Solana 程序源代码。

它布局为一个标准包,程序代码可在 src/lib.rs 中找到。

Build and tests

部署

  • 在 Solana 主网上,该程序尚未部署。
  • 在 Solana 开发网上,程序 ID 为:2DvvSEde36Ch3B52g9hKWDYbfmJimLpJwVBV9Cknypi4

用法

查看 cli/strfi.js 以获取理解。

initialize_stream

此指令用于初始化流,并在给定账户上保存数据和锁定用于流式传输的资金。

请注意,实现会立即向接收者发送 DEFAULT_TARGET_LAMPORTS_PER_SIGNATURE,因此他们不必拥有之前的资金,以便将来发布提款指令。

  • 账户

    • Alice(发送者)(签名者,可写)
    • Bob(接收者)(可写)
    • PDA(将锁定资金的账户)(签名者,可写)
    • Solana 系统程序
  • 指令数据

    • instruction(1 字节,u8)(对于 initialize_stream 应为 0
    • start_time(32 字节,u32)(资金开始解锁的 Unix 时间戳)
    • end_time(32 字节,u32)(所有资金应解锁的 Unix 时间戳)
    • amount(64 字节,u64)(要锁定和流式传输的 lamports 数量)
  • 在 PDA 账户中保存的数据

    • start_time(64 字节,u64)
    • end_time(64 字节,u64)
    • amount(64 字节,u64)
    • withdrawn(64 字节,u64)(迄今为止已提取的金额)
    • sender(32 字节,u8 数组)(Alice/发送者的公钥)
    • recipient(32 字节,u8 数组)(Bob/接收者的公钥)

withdraw_unlocked

此指令由流接收者使用,如果未锁定,则将从流账户向调用者转移指定数量的lamports。

如果请求的lamports数量为0(零),则将提取所有未锁定的资金。

  • 账户

    • Bob(接收者)(签名者,可写)
    • PDA(资金被锁定的账户)(可写)
    • 租金收集器(在成功流之后将剩余租金发送到硬编码地址)(可写)
  • 指令数据

    • instruction(1字节,u8)(对于withdraw_unlocked,应为1
    • amount(64字节,u64)(可能提取的lamports数量)

取消流

此指令由流初始化者使用,将取消指定的流,将所有已锁定的资金返还给调用者并清除账户。

  • 账户

    • Alice(发送者)(签名者,可写)
    • Bob(接收者)(可写)
    • PDA(资金被锁定的账户)(可写)
  • 指令数据

    • instruction(1字节,u8)(对于cancel_stream,应为2

许可证

StreamFlow Rust代码采用AGPL-3许可证。

依赖项

~16–25MB
~419K SLoC