upleb.uk

Public git repos — served from a NIP-34 GRASP relay at git.upleb.uk

summaryrefslogtreecommitdiff
path: root/src/main.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/main.cpp')
-rw-r--r--src/main.cpp14
1 files changed, 13 insertions, 1 deletions
diff --git a/src/main.cpp b/src/main.cpp
index 5d0b70a..37a15c6 100644
--- a/src/main.cpp
+++ b/src/main.cpp
@@ -4226,7 +4226,19 @@ bool BitcoinMiner(int nThreadId)
4226 vector<char> vfAlreadyAdded(mapTransactions.size()); 4226 vector<char> vfAlreadyAdded(mapTransactions.size());
4227 bool fFoundSomething = true; 4227 bool fFoundSomething = true;
4228 unsigned int nBlockSize = 0; 4228 unsigned int nBlockSize = 0;
4229 while (fFoundSomething && nBlockSize < MAX_SIZE/2) 4229 // Assembly must stop below the consensus cap that CheckBlock()
4230 // enforces, or we mine a block our own node then rejects.
4231 //
4232 // This used to read MAX_SIZE/2 (16 MB), which was consistent while
4233 // CheckBlock() also tested against MAX_SIZE (32 MB). Adding
4234 // MAX_BLOCK_SIZE inverted it: assembly could fill 16 MB and
4235 // validation would refuse anything over 1 MB, so a full mempool
4236 // meant solving a block and throwing it away -- with this pool at
4237 // ~90% of hashrate, that is the network stalling, not just us.
4238 //
4239 // Half the cap, keeping the original margin: the test runs before
4240 // a transaction is added, so the loop can overshoot by one tx.
4241 while (fFoundSomething && nBlockSize < MAX_BLOCK_SIZE/2)
4230 { 4242 {
4231 fFoundSomething = false; 4243 fFoundSomething = false;
4232 unsigned int n = 0; 4244 unsigned int n = 0;