5个不稳定版本
0.5.0 | 2024年7月19日 |
---|---|
0.4.1 | 2024年7月12日 |
0.4.0 | 2024年7月5日 |
0.3.2 | 2024年7月1日 |
0.3.1 | 2024年6月30日 |
#3 在 #utxo
47KB
644 行
比特币币选择
本库提供了高效算法来组合一组未使用交易输出(UTXOs)。当比特币钱包创建交易时,需要考虑多种权衡来决定选择哪些UTXOs。这里详细描述了决定使用哪个UTXOs集的权衡:在币选择策略评估以及在此什么是浪费度量?。
用法
当前接口通过select_coins()
函数提供。所需参数包括
target
- 所需的交易金额。
cost_of_change
- 创建新输出(UTXO)的成本。
fee_rate
- 当前的费率。
long_term_fee_rate
- 长期费率,有助于确定费率是高还是低。
weighted_utxos
- 可供选择的可能加权UTXOs集。
如上所述的文献中讨论的,我们希望找到一个“无找零”的解决方案。一个无找零的解决方案是指超出target
但小于target
+ cost_of_change
的解决方案。如果找不到无找零解决方案,那么通过分割UTXO创建找零输出是次优选择。为此,select_coins()
最初尝试分支界限选择算法来找到无找零解决方案。如果没有找到无找零解决方案,则select_coins()
回退到单次随机抽取选择策略。
基准测试
要运行基准测试,请使用:cargo bench
。
注意:criterion需要rustc版本1.65才能运行基准测试。
性能比较
使用商品硬件(我的相当旧的计算器)对Rust BnB实现和Bitcoin Core进行的基本性能比较。
实现 | 池大小 | ns/iter |
---|---|---|
Rust BnB | 1,000 | 897,810 |
C++ Core BnB | 1,000 | 816,374 |
注意:使用 rustc 1.75 进行了测量。使用 MSRV 可能会有更差的性能。
最低支持的 Rust 版本 (MSRV)
此库应始终与 Rust 1.56.1 上的任何功能组合编译。
发行说明
依赖项
~7MB
~87K SLoC