Commit graph

82 commits

Author SHA1 Message Date
ivanlele
b72efc9f34
Merge b52d547361 into merged_master (Bitcoin PR bitcoin/bitcoin#30377) 2026-03-23 14:31:53 +00:00
ivanlele
c7d1ee1c41
Merge d184fc3ba4 into merged_master (Bitcoin PR bitcoin/bitcoin#30571) 2026-03-23 11:53:22 +00:00
ivanlele
055755778f
Merge ebd82fa9fa into merged_master (Bitcoin PR bitcoin/bitcoin#30532) 2026-03-10 16:28:30 +00:00
ivanlele
f2384c0ad5
Merge 7cc00bfc86 into merged_master (Bitcoin PR bitcoin/bitcoin#30436) 2026-03-10 09:57:17 +00:00
ikripaka
84b0808f8a
Merge 10677713ca into merged_master (Bitcoin PR bitcoin/bitcoin#30396) 2026-03-05 15:32:29 +00:00
ivanlele
6a459d52f3
Merge 41544b8f96 into merged_master (Bitcoin PR bitcoin/bitcoin#28984) 2026-03-02 10:28:20 +00:00
ikripaka
17631653e2
Merge 5ee6b76c69 into merged_master (Bitcoin PR bitcoin/bitcoin#29325) 2026-02-26 20:15:02 +00:00
ivanlele
51e3c1c05c
Merge f5fc3190fb into merged_master (Bitcoin PR bitcoin/bitcoin#29086) 2026-02-20 13:59:29 +00:00
ivanlele
8e444fe436
Merge d813ba1bc4 into merged_master (Bitcoin PR bitcoin/bitcoin#28970) 2026-02-19 11:56:36 +00:00
Tom Trevethan
1834ebd66c Merge 19b968f743 into merged_master (Bitcoin PR bitcoin/bitcoin#29722) 2026-02-16 23:04:14 +00:00
ivanlele
1e1ba55cfb
Merge 5d045c31a5 into merged_master (Bitcoin PR bitcoin/bitcoin#28950) 2026-02-16 12:56:07 +00:00
Byron Hambly
e2aa52246d
Merge 265250687b into merged_master (Bitcoin PR bitcoin/bitcoin#28455) 2025-11-17 21:16:45 +02:00
Byron Hambly
26b9abc2f2
Merge b5a271334c into merged_master (Bitcoin PR bitcoin/bitcoin#28922) 2025-11-11 08:56:23 +02:00
Byron Hambly
5cd5716096
Merge d690f89b57 into merged_master (Bitcoin PR bitcoin/bitcoin#28785) 2025-11-06 10:20:07 +02:00
Byron Hambly
41b98c81ec
Merge 5d9f45082b into merged_master (Bitcoin PR bitcoin/bitcoin#28758) 2025-11-06 08:33:03 +02:00
Byron Hambly
69492d27da
Merge 08ea835220 into merged_master (Bitcoin PR bitcoin/bitcoin#28583) 2025-08-07 10:05:15 +02:00
Byron Hambly
6a28ada7c0
Merge 54bdb6e074 into merged_master (Bitcoin PR bitcoin/bitcoin#27609) 2025-08-06 15:48:27 +02:00
Byron Hambly
9250f7cb6b
Merge 2303fd2f43 into merged_master (Bitcoin PR bitcoin/bitcoin#28471) 2025-08-04 10:23:30 +02:00
Byron Hambly
b5fa48988e Merge f1a9fd627b into merged_master (Bitcoin PR bitcoin/bitcoin#28251) 2025-07-21 13:58:00 +02:00
Byron Hambly
6c55760a2d Merge 7ef2d4ee4d into merged_master (Bitcoin PR bitcoin/bitcoin#28244) 2025-07-04 17:24:18 +02:00
Byron Hambly
7f83d8d9fe Merge bdfe27c9d2 into merged_master (Bitcoin PR bitcoin/bitcoin#26933) 2025-05-14 14:04:27 +02:00
Byron Hambly
4ec18086ff Merge a245429d68 into merged_master (Bitcoin PR bitcoin/bitcoin#26940) 2025-04-07 10:05:17 +02:00
Byron Hambly
7daea6099f Merge 26002570ab into merged_master (Bitcoin PR bitcoin/bitcoin#26646) 2025-04-01 21:20:32 +02:00
Byron Hambly
b4405ba453 Merge e9262ea32a into merged_master (Bitcoin PR bitcoin/bitcoin#26750) 2025-03-31 16:37:52 +02:00
Byron Hambly
ca0a68b350
Merge UP TO 551c8e9526 into merged_master (UP TO bitcoin/bitcoin#26349)
Includes FIXMEs for a few functional tests
2025-02-05 09:50:17 +02:00
Byron Hambly
8499b13762
lint: fix lint issues 2024-12-03 14:02:33 +02:00
Hodlinator
50bc017040
refactor: Hand-replace some ParseHex -> ""_hex
The following scripted-diff commit will replace ParseHex("...") with "..."_hex_u8, but this replacement will not work in cases where vectors are needed instead of arrays, and is not ideal in cases where std::byte is accepted.

For example, it is currently necessary to use _hex_v_u8 when calling CScript operator<< because that operator does not currently support std::array or std::byte.

Conversely, it is incorrect to use _hex_v instead of _hex in net_processing.cpp for the MakeAndPushMessage argument, because if the argument is a std::vector it is considered variable-length and serialized with a size prefix, but if the argument is a std::array or Span is it considered fixed length and serialized without a prefix.

By the same logic, it is also safe to change the NUMS_H constant in pubkey.cpp from a std::vector to std::array because it is never serialized.
2024-08-28 19:11:59 +02:00
MarcoFalke
fa0fe08eca
scripted-diff: [test] Use g_rng/m_rng directly
-BEGIN VERIFY SCRIPT-

 # Use m_rng in unit test files
 ren() { sed -i "s:\<$1\>:$2:g" $( git grep -l "$1" src/test/*.cpp src/wallet/test/*.cpp src/test/util/setup_common.cpp ) ; }
 ren InsecureRand32                m_rng.rand32
 ren InsecureRand256               m_rng.rand256
 ren InsecureRandBits              m_rng.randbits
 ren InsecureRandRange             m_rng.randrange
 ren InsecureRandBool              m_rng.randbool
 ren g_insecure_rand_ctx           m_rng
 ren g_insecure_rand_ctx_temp_path g_rng_temp_path

-END VERIFY SCRIPT-
2024-08-26 11:19:52 +02:00
Ryan Ofsky
3dc527f460 test: refactor: Give unit test functions access to test state
Add unit test subclasses as needed so unit test functions that need to access
members like m_rng can reference it directly.
2024-08-21 23:27:55 +02:00
stickies-v
f553e6d86f
refactor: remove TxidFromString
TxidFromString was deprecated due to missing 64-character length-check
and hex-check, replace it with the more robust Txid::FromHex.
2024-07-31 16:47:39 +01:00
stickies-v
285ab50ace
test: replace WtxidFromString with Wtxid::FromHex
The newly introduced Wtxid::FromHex is more robust and removes
the need for a WtxidFromString helper function
2024-07-31 16:47:39 +01:00
James Dorfman
e17aba0c07 Merge 38d3d0bfc4 into merged_master (Bitcoin PR bitcoin/bitcoin#24796) 2024-07-30 01:52:26 +00:00
James Dorfman
cc18b00783 Merge d844b5e799 into merged_master (Bitcoin PR bitcoin/bitcoin#24152) 2024-07-29 22:42:33 +00:00
Hodlinator
09ce3501fa
fix: Make TxidFromString() respect string_view length
Prior to this, passing string_view::data() into uint256S() meant the latter would only receive the a naked char* pointer and potentially scan past the string_view::length() until it found a null terminator (or some other non-hex character).

Appears to have been a fully dormant bug as callers were either passing a string literal or std::string directly to TxidFromFromString(), meaning null terminator always existed at pointer[length()]. Bug existed since original merge of TxidFromString(), discussed in https://github.com/bitcoin/bitcoin/pull/28922#discussion_r1404437378.
2024-07-23 14:51:39 +02:00
James Dorfman
3081da4015 Merge 7ab9fc32d6 into merged_master (Bitcoin PR bitcoin/bitcoin#24724) 2024-07-08 07:35:33 +00:00
Pieter Wuille
6ecda04fef random: drop ad-hoc Shuffle in favor of std::shuffle
Benchmarks show it is no longer faster with modern standard C++ libraries,
and the debug-mode failure due to self-move has been fixed as well.
2024-07-06 09:06:36 -04:00
Ava Chow
41544b8f96
Merge bitcoin/bitcoin#28984: Cluster size 2 package rbf
94ed4fbf8e Add release note for size 2 package rbf (Greg Sanders)
afd52d8e63 doc: update package RBF comment (Greg Sanders)
6e3c4394cf mempool: Improve logging of replaced transactions (Greg Sanders)
d3466e4cc5 CheckPackageMempoolAcceptResult: Check package rbf invariants (Greg Sanders)
316d7b63c9 Fuzz: pass mempool to CheckPackageMempoolAcceptResult (Greg Sanders)
4d15bcf448 [test] package rbf (glozow)
dc21f61c72 [policy] package rbf (Suhas Daftuar)
5da3967815 PackageV3Checks: Relax assumptions (Greg Sanders)

Pull request description:

  Allows any 2 transaction package with no in-mempool ancestors to do package RBF when directly conflicting with other mempool clusters of size two or less.

  Proposed validation steps:
  1) If the transaction package is of size 1, legacy rbf rules apply.
  2) Otherwise the transaction package consists of a (parent, child) pair with no other in-mempool ancestors (or descendants, obviously), so it is also going to create a cluster of size 2. If larger, fail.
  3) The package rbf may not evict more than 100 transactions from the mempool(bip125 rule 5)
  4) The package is a single chunk
  5) Every directly conflicted mempool transaction is connected to at most 1 other in-mempool transaction (ie the cluster size of the conflict is at most 2).
  6) Diagram check: We ensure that the replacement is strictly superior, improving the mempool
  7) The total fee of the package, minus the total fee of what is being evicted, is at least the minrelayfee * size of the package (equivalent to bip125 rule 3 and 4)

  Post-cluster mempool this will likely be expanded to general package rbf, but this is what we can safely support today.

ACKs for top commit:
  achow101:
    ACK 94ed4fbf8e
  glozow:
    reACK 94ed4fbf8e via range-diff
  ismaelsadeeq:
    re-ACK 94ed4fbf8e
  theStack:
    Code-review ACK 94ed4fbf8e
  murchandamus:
    utACK 94ed4fbf8e

Tree-SHA512: 9bd383e695964f362f147482bbf73b1e77c4d792bda2e91d7f30d74b3540a09146a5528baf86854a113005581e8c75f04737302517b7d5124296bd7a151e3992
2024-06-17 17:22:43 -04:00
glozow
4d15bcf448 [test] package rbf 2024-06-13 09:52:59 -04:00
Ava Chow
429ec1aaaa refactor: Rename CTransaction::nVersion to version
In order to ensure that the change of nVersion to a uint32_t in the
previous commit has no effect, rename nVersion to version in this commit
so that reviewers can easily spot if a spot was missed or if there is a
check somewhere whose semantics have changed.
2024-06-07 13:55:23 -04:00
Luke Dashjr
cc67d33fda refactor: Simply include CTxMemPool::Options in CTxMemPool directly rather than duplicating definition 2024-05-06 20:34:10 +00:00
glozow
092c978a42 [txpackages] add canonical way to get hash of package 2024-04-26 10:28:27 +01:00
Greg Sanders
f10fd07320 scripted-diff: Rename max_sane_feerate to client_maxfeerate
-BEGIN VERIFY SCRIPT-
git grep -l 'max_sane_feerate' | xargs sed -i 's/max_sane_feerate/client_maxfeerate/g'
-END VERIFY SCRIPT-
2024-03-25 11:48:18 -04:00
Greg Sanders
38f70ba6ac RPC: Add maxfeerate and maxburnamount args to submitpackage
And thread the feerate value through ProcessNewPackage to
reject individual transactions that exceed the given
feerate. This allows subpackage processing, and is
compatible with future package RBF work.
2024-03-13 09:45:43 -04:00
Sebastian Falbesoner
fa1d49542e refactor: share and use GenerateRandomKey helper
Making the `GenerateRandomKey` helper available to other modules via
key.{h.cpp} allows us to create random private keys directly at
instantiation of CKey, in contrast to the two-step process of creating
the instance and then having to call `MakeNewKey(...)`.
2023-12-23 13:26:00 +01:00
dergoegge
9e58c5bcd9 Use Txid in COutpoint 2023-11-21 13:15:44 +00:00
glozow
1147e00e59 [validation] change package-fee-too-low, return wtxid(s) and effective feerate
With subpackage evaluation and de-duplication, it's not always the
entire package that is used in CheckFeerate. To be more helpful to the
caller, specify which transactions were included in the evaluation and
what the feerate was.

Instead of PCKG_POLICY (which is supposed to be for package-wide
errors), use PCKG_TX.
2023-11-07 11:26:17 +00:00
glozow
10dd9f2441 [test] use CheckPackageMempoolAcceptResult in previous tests
Increases test coverage (check every result field) and makes it easier
to test the changes in the next commit.
2023-11-07 11:23:07 +00:00
glozow
5c786a026a [refactor] use Wtxid for m_wtxids_fee_calculations 2023-11-06 14:33:32 +00:00
glozow
6ff647a7e0 scripted-diff: rename CheckPackage to IsWellFormedPackage
-BEGIN VERIFY SCRIPT-
sed -i 's/CheckPackage(/IsWellFormedPackage(/g' $(git grep -l CheckPackage)
-END VERIFY SCRIPT-
2023-11-01 17:21:54 +00:00
glozow
da9aceba21 [refactor] move package checks into helper functions
This allows IsSorted() and IsConsistent() to be used by themselves.
IsSorted() with a precomputed set is used so that we don't create this
set multiple times.
2023-11-01 17:21:54 +00:00