2 个版本
0.1.16-alpha.0 | 2023年4月2日 |
---|---|
0.1.12-alpha.0 | 2023年3月4日 |
#8 in #fees
1.5MB
7K SLoC
bitcoinwallet-fees
这个 Rust 包是比特币系统的一部分,提供了计算交易费用的功能。
注意:此包是 C++ 到 Rust 的直接翻译比特币核心的一部分。因此,一些函数体可能仍在翻译过程中。请注意,一旦翻译完成,此系统将可测试。
令牌
-
get_discard_rate
:检索从内存池中丢弃交易的速度 -
get_minimum_fee
:检索给定交易大小所需的最小交易费用 -
get_minimum_fee_rate
:检索给定交易大小所需的最小交易费用率 -
get_required_fee
:根据交易大小和当前费用率计算所需的最小费用 -
get_required_fee_rate
:检索给定交易大小所需的费用率 -
FeeBumperResult
:表示尝试提高交易费用的结果的 struct -
check_fee_rate
:检查给定的费用率是否足够使交易包含在内存池中 -
estimate_fee_rate
:估计使交易包含在下一个区块中所需的费用率 -
feebumper_commit_transaction
:提交交易并从费用提升器的跟踪列表中删除 -
feebumper_create_rate_bump_transaction
:创建一个新的交易,费用率更高,以替换给定的交易 -
feebumper_sign_transaction
:使用给定的钱包签署交易 -
feebumper_transaction_can_be_bumped
:检查给定的交易是否可以提升 -
precondition_checks
:检查发送交易的先决条件,例如钱包是否有足够的资金
数学思想
这些令牌与特定的数学思想无关。
请注意,比特币的交易费用是根据交易大小(以字节为单位)和费用率来计算的,费用率以每字节萨托希(sats)来衡量。费用率由比特币网络中区块空间的供需决定。如果区块空间的需求数量高,则将交易包含在下个区块中所需的费用率会更高。相反,如果区块空间的需求数量低,则所需的费用率会较低。
48> 谢谢 —— 能告诉我更多关于费用的事情吗?
当然,我很乐意提供更多关于比特币系统中费用信息。
在比特币网络中,交易费用用于激励矿工将特定的交易包含在下一个区块中。矿工优先考虑费用较高的交易,因为这增加了他们的收入,可能导致费用较低的交易被延迟或根本不包含在区块链中。
交易费用是根据交易大小(以字节为单位)和发送方提供的每字节萨托希(sats/B)费用率来计算的。交易的大小由其输入和输出的数量以及交易中使用的脚本复杂度等因素决定。
比特币网络上节点接受的最低费用率可能因网络条件(如当前拥堵程度)而异。费用率低于当前最低标准的交易通常不会被节点中继,这可能导致交易延迟或未确认。
创建比特币交易时,包括适当的费用率是很重要的,以确保交易及时得到确认。钱包软件通常会根据当前网络条件估计一个适当的费用率,但如果需要,也可以手动设置费用率。
还有各种费用估算工具和服务可以提供当前最低费用率的估计,并为特定交易建议适当的费用率。此外,一些钱包可能包含诸如费用提升等特性,允许用户在网络广播交易后提高费用率,以确保其被包含在区块链中。
49> 谢谢 —— 有注意事项吗?
是的,在处理比特币系统中的交易费用时,有几个注意事项需要记住。
-
费用估算并不是一门精确的科学,实际所需的费用以获得及时确认可能因网络条件而异。
-
矿工可以选择包含在区块中的交易,他们通常优先考虑费用较高的交易。这意味着,如果网络拥堵且有许多待确认的交易,费用较低的交易可能确认时间更长,甚至可能根本无法确认。
-
交易费用通常从发送的金额中扣除,这意味着交易接收方可能收到的金额少于发送的总额。发送或接收比特币时,考虑这一点很重要。
-
一些钱包可能不会为用户提供足够的交易费用控制,这可能导致费用过高或过低。选择允许自定义费用设置的钱包,并关注可信来源的最新费用建议非常重要。
-
随着区块奖励的减少和矿工越来越多地依赖交易费用来激励区块创建,比特币网络的费用结构可能会随着时间的推移而改变。了解网络的变化并根据需要调整费用设置很重要。
依赖项
~109MB
~1M SLoC