#信息 #比特币 #交易 #输入输出

rawtx-rs

使比特币交易信息可访问

12 个版本

0.1.12 2024 年 7 月 31 日
0.1.11 2024 年 7 月 19 日
0.1.8 2024 年 4 月 2 日
0.1.7 2023 年 12 月 22 日
0.1.0 2021 年 4 月 30 日

#70#输入输出

Download history 3/week @ 2024-05-18 2/week @ 2024-05-25 264/week @ 2024-07-13 65/week @ 2024-07-20 150/week @ 2024-07-27 8/week @ 2024-08-03 2/week @ 2024-08-10

304 个月下载量

MIT/Apache

175KB
2.5K SLoC

rawtx-rs

一个基于 rust-bitcoin 的 crate,使比特币交易信息可访问。

例如

  • 检测输入和输出类型
  • SegWit 和 MulitSig 消费
  • 显式 BIP-125 Opt In RBF 信号
  • BIP-69 兼容
  • 等等...

在其当前状态下,这个 crate 应该被视为“未完成”和“开发中”。

许可证

许可以下之一

任选其一。

贡献

除非你明确表示,否则,任何你有意提交以包含在本作品中的贡献,根据 Apache-2.0 许可证定义,应按上述方式双许可,不附加任何额外条款或条件。


lib.rs:

rawtx-rs 使比特币交易信息可访问。

示例

// The first Bitcoin mainnet transaction between Satoshi and Hal
// f4184fc596403b9d638783cf57adfe4c75c605f6356fbc91338530e9831e9e16
// as rust-bitcoin's bitcoin::Transaction.
let tx_info = tx::TxInfo::new(&tx).unwrap();

assert_eq!(tx_info.input_infos[0].in_type, input::InputType::P2pk);
assert_eq!(tx_info.output_infos[0].out_type, output::OutputType::P2pk);
assert_eq!(tx_info.output_infos[1].out_type, output::OutputType::P2pk);

assert!(!tx_info.is_spending_segwit());
assert!(tx_info.is_bip69_compliant());
// Random mainnet transaction spending SegWit and MultiSig
// 7874eb36dfff6d4d38f9dbe013bceed0c31de4da1dee4a507b9abd0540aa0af4
// as rust-bitcoin's bitcoin::Transaction.
let tx_info = tx::TxInfo::new(&tx).unwrap();

assert_eq!(tx_info.input_infos[0].in_type, input::InputType::P2shP2wsh);
assert_eq!(tx_info.output_infos[0].out_type, output::OutputType::P2sh);
assert_eq!(tx_info.output_infos[1].out_type, output::OutputType::P2sh);

assert!(tx_info.is_spending_segwit());
assert!(tx_info.is_bip69_compliant());
assert!(tx_info.is_signaling_explicit_rbf_replicability());
assert!(tx_info.is_spending_multisig());

let multisig_info = tx_info.input_infos[0].multisig_info.as_ref().unwrap();

// 2 of 4 multisig
assert_eq!(multisig_info.m_of_n, (2, 4));

依赖项

~7MB
~82K SLoC