1 个不稳定版本
0.1.1 | 2021 年 6 月 11 日 |
---|
#94 in #payment
30KB
501 行
StreamFlow
此仓库包含 Solana 程序源代码。
它布局为一个标准包,程序代码可在 src/lib.rs 中找到。
部署
- 在 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