rust-bitcoin-unsafe-fast/bitcoin
Andrew Poelstra 141d805ddc
Merge rust-bitcoin/rust-bitcoin#2073: Feature: Count sigops for Transaction
158ba26a8a Feature: Count sigops for Transaction (junderw)

Pull request description:

  I copied over the sigop counting logic from Bitcoin Core, but I made a few adjustments.

  1. I removed 2 consensus flags that checked for P2SH and SegWit activation. This code assumes both are activated. If we were to include that, what would be a good way to go about it? (ie. If I run this method on a transaction from the 1000th block and it just so happened to have a P2SH-like input, Bitcoin Core wouldn't accidentally count those sigops because the consensus flag will stop them from running the P2SH logic. Same goes for SegWit)
  3. Since there's no guarantee that we have an index from which we can get the prevout scripts, I made it into a generic closure that looks up the prevout script for us. If the caller doesn't provide it, We can only count sigops directly in the scriptSig and scriptPubkey (no P2SH or SegWit).

  ## TODO
  - [x] Write tests for transaction sigop counting

  ~~Edit: The test changes are just to get the 1.48 tests passing. I'll remove them and replace them with whatever solution that is agreed upon in another PR etc.~~

  Edit 2: This is the code I used as a guide:

  8105bce5b3/src/consensus/tx_verify.cpp (L147-L166)

  Edit 3: I found a subtle bug in the implementation of `count_sigops` (https://github.com/rust-bitcoin/rust-bitcoin/pull/2073#issuecomment-1722403687)

ACKs for top commit:
  apoelstra:
    ACK 158ba26a8a
  tcharding:
    ACK 158ba26a8a

Tree-SHA512: 2b8a0c50b9390bfb914da1ba687e8599b957c75c511f764a2f3ed3414580150ce3aa2ac7aed97a4f7587d3fbeece269444c65c7449b88f1bdb02e573e6f6febd
2023-09-22 17:12:29 +00:00
..
contrib hashes: Bump version to 0.13.0 2023-08-24 12:25:42 +10:00
embedded Add patch section to test crates 2023-07-18 10:27:48 +10:00
examples Remove redundant segwit version from function names 2023-08-31 13:23:46 +10:00
src Merge rust-bitcoin/rust-bitcoin#2073: Feature: Count sigops for Transaction 2023-09-22 17:12:29 +00:00
tests test: correct psbt used for regression test 2023-09-21 11:45:18 +05:30
CHANGELOG.md Add changelo entry for removal of FromHex 2023-05-18 14:18:42 +10:00
Cargo.toml Use the new bech32 iterator API 2023-09-21 15:10:57 +10:00
build.rs Remove rust_v_1_46 2023-03-23 08:27:10 +11:00