#airdrop #manager #platform #perform #komodo #chain #assetchains

nightly komodo_airdrop

为 Komodo 和其资产链提供空投管理器

2 个版本

0.0.2 2020 年 1 月 8 日
0.0.1 2019 年 2 月 8 日

#2#airdrop

MIT 许可协议

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_stringfund_address 中的所有未使用交易输出(utxos)的输入创建一个原始交易,并使用生成的十六进制数(需要基金地址区块链的运行守护进程)创建一个字符串,该字符串可以用作 signrawtransaction 守护进程 RPC 的参数字符串,在多重签名的情况下,签名者需要手动提供私钥(WIF)。

备注

  • 比例应用于余额和利息。任何变动都包括以相同比例计算的利息

待办事项

  • 文档
    • 为什么需要这个空投软件包:KMD 平台地址相同等,所以唯一的区别是一个 AC
  • 除了比例外,还定义静态付款金额
  • 让构建器模式与 Results(特性类型?)一起工作 不可能,现在检查是在 build() 中进行的
  • 将任何剩余的利息或利息退还给基金地址
  • 添加 P2SH 输入以支持多重签名空投
  • 空投需要引用快照
  • 使用 JSON 文件作为空投的输入
  • 仅将必要的 utxos 作为交易输入,以防止在不需要时使用所有 utxos,因为已经达到了空投所需的金额。
    • 关于利息?如果 KMD 且 interest_included,则花费所有输入以包含所有利息。
    • 否则仅花费所需的 utxos
      • 对 utxos 进行某种排序,仅使用最大的 utxos
  • 使用全局 komodod 守护进程客户端而不是多次实例化。
  • Airdrop 中使用 ratioamount 的 Enum
  • 枚举:添加 nonexhaustive 以避免在添加新的枚举变体时出现破坏性更改
已测试的场景
  • 多重签名:是/否
  • 比例
  • 金额
    • 全额支付
  • 包含利息

长期可能的情况

  • 序列化多重签名原始交易以方便多方签名
    • 可能是一个独立的软件包

依赖项

~29MB
~586K SLoC