2 releases
0.1.16-alpha.0 | Apr 2, 2023 |
---|---|
0.1.12-alpha.0 | Mar 4, 2023 |
#9 in #fees
1.5MB
7K
SLoC
bitcoinwallet-fees
This Rust crate is part of the Bitcoin system and provides functionality for calculating transaction fees.
Notice: This crate is part of a direct translation from C++ to Rust of the bitcoin core. As such, some of the function bodies may still be in the process of translation. Please note that this system will become testable once the translation process is complete.
Tokens
-
get_discard_rate
: retrieves the rate at which transactions are discarded from the mempool -
get_minimum_fee
: retrieves the minimum transaction fee required for a given transaction size -
get_minimum_fee_rate
: retrieves the minimum transaction fee rate required for a given transaction size -
get_required_fee
: calculates the minimum required fee for a transaction based on its size and the current fee rate -
get_required_fee_rate
: retrieves the required fee rate for a given transaction size -
FeeBumperResult
: a struct that represents the result of an attempt to bump the fee of a transaction -
check_fee_rate
: checks whether a given fee rate is sufficient for a transaction to be included in the mempool -
estimate_fee_rate
: estimates the fee rate required for a transaction to be included in the next block -
feebumper_commit_transaction
: commits a transaction and removes it from the feebumper's tracking list -
feebumper_create_rate_bump_transaction
: creates a new transaction with a higher fee rate to replace the given transaction -
feebumper_sign_transaction
: signs a transaction with the given wallet -
feebumper_transaction_can_be_bumped
: checks whether a given transaction can be bumped -
precondition_checks
: checks the preconditions for a transaction to be sent, such as whether the wallet has enough funds
Mathematical Ideas
There are no specific mathematical ideas associated with these tokens.
Note that transaction fees in Bitcoin are calculated based on the size of the transaction in bytes and the fee rate, which is measured in satoshis per byte. The fee rate is determined by the supply and demand of block space on the Bitcoin network. If the demand for block space is high, then the fee rate required for a transaction to be included in the next block will be higher. Conversely, if the demand for block space is low, then the fee rate required will be lower.
48> thanks -- could you tell me some more about fees?
Sure, I'd be happy to provide more information on fees in the Bitcoin system.
In the Bitcoin network, transaction fees are used to incentivize miners to include a given transaction in the next block. Miners prioritize transactions with higher fees since it increases their revenue, which can lead to transactions with lower fees being delayed or not included in the blockchain at all.
Transaction fees are calculated based on the size of the transaction in bytes and the fee rate in satoshis per byte (sats/B) offered by the sender. The size of a transaction is determined by the number of inputs and outputs it has, as well as other factors such as the complexity of the scripts used in the transaction.
The minimum fee rate that is accepted by nodes on the Bitcoin network can vary depending on network conditions such as the current level of congestion. Transactions with fee rates below the current minimum will typically not be relayed by nodes, which can result in delays or non-confirmation of the transaction.
When creating a Bitcoin transaction, it's important to include an appropriate fee rate to ensure that the transaction is confirmed in a timely manner. Wallet software will typically estimate an appropriate fee rate based on current network conditions, but it's also possible to manually set the fee rate if desired.
There are also various fee estimation tools and services available that can provide an estimate of the current minimum fee rate and suggest an appropriate fee rate for a given transaction. Additionally, some wallets may include features such as fee bumping, which allows the user to increase the fee rate of a transaction after it has been broadcast to the network to help ensure its inclusion in the blockchain.
49> thanks -- any caveats?
Yes, there are several caveats to keep in mind when dealing with transaction fees in the Bitcoin system:
-
Fee estimation is not an exact science, and the actual fee required to get a transaction confirmed in a timely manner may vary depending on network conditions.
-
Miners can choose which transactions to include in a block, and they generally prioritize transactions with higher fees. This means that if the network is congested and there are many transactions waiting to be confirmed, transactions with low fees may take longer to confirm or may not be confirmed at all.
-
The fees paid for a transaction are typically deducted from the amount being sent, which means that the recipient of a transaction may receive less than the full amount that was sent. It's important to take this into account when sending or receiving Bitcoin.
-
Some wallets may not provide users with enough control over transaction fees, which could lead to overpaying or underpaying fees. It's important to choose a wallet that allows for custom fee settings and to keep up with the latest fee recommendations from trusted sources.
-
The fee structure of the Bitcoin network may change over time as the block reward decreases and miners increasingly rely on transaction fees to incentivize block creation. It's important to stay informed about changes in the network and adjust fee settings accordingly.
Dependencies
~108MB
~1M SLoC