Split Transaction impl block

Split the `Transaction` impl block into three parts:

- The bits going to `primitives`
- The bits staying in a public extension trait
- The bits staying in a private extension trait

Internal change only.
This commit is contained in:
Tobin C. Harding 2024-10-24 10:27:13 +11:00
parent 693000d09c
commit 7196992d58
No known key found for this signature in database
GPG Key ID: 40BF9E4C269D6607
1 changed files with 41 additions and 37 deletions

View File

@ -302,13 +302,6 @@ impl Transaction {
/// Maximum transaction weight for Bitcoin Core 25.0.
pub const MAX_STANDARD_WEIGHT: Weight = Weight::from_wu(400_000);
/// Computes a "normalized TXID" which does not include any signatures.
///
/// This method is deprecated. `ntxid` has been renamed to `compute_ntxid` to note that it's
/// computationally expensive. Use `compute_ntxid` instead.
#[deprecated(since = "0.31.0", note = "use `compute_ntxid()` instead")]
pub fn ntxid(&self) -> sha256d::Hash { self.compute_ntxid() }
/// Computes a "normalized TXID" which does not include any signatures.
///
/// This gives a way to identify a transaction that is "the same" as
@ -332,13 +325,6 @@ impl Transaction {
cloned_tx.compute_txid().into()
}
/// Computes the [`Txid`].
///
/// This method is deprecated. `txid` has been renamed to `compute_txid` to note that it's
/// computationally expensive. Use `compute_txid` instead.
#[deprecated(since = "0.31.0", note = "use `compute_txid()` instead")]
pub fn txid(&self) -> Txid { self.compute_txid() }
/// Computes the [`Txid`].
///
/// Hashes the transaction **excluding** the segwit data (i.e. the marker, flag bytes, and the
@ -350,13 +336,6 @@ impl Transaction {
Txid::from_byte_array(hash.to_byte_array())
}
/// Computes the segwit version of the transaction id.
///
/// This method is deprecated. `wtxid` has been renamed to `compute_wtxid` to note that it's
/// computationally expensive. Use `compute_wtxid` instead.
#[deprecated(since = "0.31.0", note = "use `compute_wtxid()` instead")]
pub fn wtxid(&self) -> Wtxid { self.compute_wtxid() }
/// Computes the segwit version of the transaction id.
///
/// Hashes the transaction **including** all segwit data (i.e. the marker, flag bytes, and the
@ -367,6 +346,29 @@ impl Transaction {
let hash = hash_transaction(self, self.uses_segwit_serialization());
Wtxid::from_byte_array(hash.to_byte_array())
}
}
impl Transaction {
/// Computes a "normalized TXID" which does not include any signatures.
///
/// This method is deprecated. `ntxid` has been renamed to `compute_ntxid` to note that it's
/// computationally expensive. Use `compute_ntxid` instead.
#[deprecated(since = "0.31.0", note = "use `compute_ntxid()` instead")]
pub fn ntxid(&self) -> sha256d::Hash { self.compute_ntxid() }
/// Computes the [`Txid`].
///
/// This method is deprecated. `txid` has been renamed to `compute_txid` to note that it's
/// computationally expensive. Use `compute_txid` instead.
#[deprecated(since = "0.31.0", note = "use `compute_txid()` instead")]
pub fn txid(&self) -> Txid { self.compute_txid() }
/// Computes the segwit version of the transaction id.
///
/// This method is deprecated. `wtxid` has been renamed to `compute_wtxid` to note that it's
/// computationally expensive. Use `compute_wtxid` instead.
#[deprecated(since = "0.31.0", note = "use `compute_wtxid()` instead")]
pub fn wtxid(&self) -> Wtxid { self.compute_wtxid() }
/// Returns the weight of this transaction, as defined by BIP-141.
///
@ -526,6 +528,24 @@ impl Transaction {
cost.saturating_add(self.count_witness_sigops(&mut spent))
}
/// Returns a reference to the input at `input_index` if it exists.
#[inline]
pub fn tx_in(&self, input_index: usize) -> Result<&TxIn, InputsIndexError> {
self.input
.get(input_index)
.ok_or(IndexOutOfBoundsError { index: input_index, length: self.input.len() }.into())
}
/// Returns a reference to the output at `output_index` if it exists.
#[inline]
pub fn tx_out(&self, output_index: usize) -> Result<&TxOut, OutputsIndexError> {
self.output
.get(output_index)
.ok_or(IndexOutOfBoundsError { index: output_index, length: self.output.len() }.into())
}
}
impl Transaction {
/// Gets the sigop count.
///
/// Counts sigops for this transaction's input scriptSigs and output scriptPubkeys i.e., doesn't
@ -628,22 +648,6 @@ impl Transaction {
// `Transaction` docs for full explanation).
self.input.is_empty()
}
/// Returns a reference to the input at `input_index` if it exists.
#[inline]
pub fn tx_in(&self, input_index: usize) -> Result<&TxIn, InputsIndexError> {
self.input
.get(input_index)
.ok_or(IndexOutOfBoundsError { index: input_index, length: self.input.len() }.into())
}
/// Returns a reference to the output at `output_index` if it exists.
#[inline]
pub fn tx_out(&self, output_index: usize) -> Result<&TxOut, OutputsIndexError> {
self.output
.get(output_index)
.ok_or(IndexOutOfBoundsError { index: output_index, length: self.output.len() }.into())
}
}
// This is equivalent to consensus encoding but hashes the fields manually.