2 个版本
0.0.2 | 2020 年 1 月 8 日 |
---|---|
0.0.1 | 2019 年 2 月 8 日 |
#2 在 #airdrop
26KB
422 行
Komodo 空投
这个空投软件包可以轻松地从 Komodo 平台资产链执行空投,使用 KMD 或任何其他资产链。
extern crate komodo_airdrop;
fn main() {
let snapshot = komodo_airdrop::Snapshot::builder()
.on_chain(Chain::CHAIN)
.exclude_addresses(vec![
String::from("REbwjC5mfQBRevH78CuRjcvQudxa3ii5Ma"),
String::from("RU9F2EdDzUNK4LUMgjLTMDmtCmDK1a9vrY"),
String::from("RYEufBcEUsofxwt4bGUdroRGmAQxBR8aJG")
])
.using_threshold(1.0) // only include addresses that contain at least 1 CHAIN
.build()
.unwrap();
let airdrop = komodo_airdrop::Airdrop::builder()
.using_chain(Chain::KMD)
.include_interest(true)
.using_snapshot(&snapshot)
.fund_address("RQT7m4jcnWQxwqQQzh77WKNCuZotkRkAuk")
.payout_ratio(0.75)
.build()
.unwrap();
}
如果空投来自多重签名地址(以 b
开头)
let signing_string = airdrop.signing_string(Some(String::from("<redeem_script here>")));
println!("{}", signing_string);
如果不
let signing_string = airdrop.signing_string(None);
println!("{}", signing_string);
signing_string
从 fund_address
中的所有未使用交易输出(utxos)的输入创建一个原始交易,并使用生成的十六进制数(需要基金地址区块链的运行守护进程)创建一个字符串,该字符串可以用作 signrawtransaction
守护进程 RPC 的参数字符串,在多重签名的情况下,签名者需要手动提供私钥(WIF)。
备注
- 比例应用于余额和利息。任何变动都包括以相同比例计算的利息
待办事项
- 文档
- 为什么需要这个空投软件包:KMD 平台地址相同等,所以唯一的区别是一个 AC
- 除了比例外,还定义静态付款金额
-
让构建器模式与 Results(特性类型?)一起工作不可能,现在检查是在build()
中进行的 - 将任何剩余的利息或利息退还给基金地址
- 添加 P2SH 输入以支持多重签名空投
- 空投需要引用快照
- 使用 JSON 文件作为空投的输入
- 仅将必要的 utxos 作为交易输入,以防止在不需要时使用所有 utxos,因为已经达到了空投所需的金额。
- 关于利息?如果 KMD 且 interest_included,则花费所有输入以包含所有利息。
- 否则仅花费所需的 utxos
- 对 utxos 进行某种排序,仅使用最大的 utxos
- 使用全局 komodod 守护进程客户端而不是多次实例化。
- 在
Airdrop
中使用ratio
和amount
的 Enum - 枚举:添加 nonexhaustive 以避免在添加新的枚举变体时出现破坏性更改
已测试的场景
- 多重签名:是/否
- 比例
- 金额
- 全额支付
- 包含利息
长期可能的情况
- 序列化多重签名原始交易以方便多方签名
- 可能是一个独立的软件包
依赖项
~29MB
~586K SLoC