upleb.uk

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

summaryrefslogtreecommitdiff
path: root/src/main.h
diff options
context:
space:
mode:
authorbitflash-maintainer <noreply@bitflash.invalid>2026-09-04 05:59:40 +0000
committerbitflash-maintainer <noreply@bitflash.invalid>2026-09-04 05:59:40 +0000
commit152c859b18b222a7c11a82b5485110e902267d40 (patch)
tree1ceadf421609a2e58da81103165a2fb7085387de /src/main.h
parente4f898c4a6b9900553c64b9804889b5fdae3e55f (diff)
parentb810d86752ddb2674118f737582c924bb9eb74c1 (diff)
Merge branch 'deploy/all-2026-08-24' into 'deploy/soak-2026-08-21'
deploy: land MRs 1-12 and upstream 1.2.20, as shipped in relay component See merge request !13
Diffstat (limited to 'src/main.h')
-rw-r--r--src/main.h31
1 files changed, 31 insertions, 0 deletions
diff --git a/src/main.h b/src/main.h
index 382dd9c..e05b467 100644
--- a/src/main.h
+++ b/src/main.h
@@ -33,6 +33,35 @@ static const unsigned int MAX_BLOCK_SIGOPS = 20000;
33// limit (32 MB), not a block rule. Bitcoin 0.1.0 predated the later 1 MB block 33// limit (32 MB), not a block rule. Bitcoin 0.1.0 predated the later 1 MB block
34// cap, so this tree inherited no real block-size consensus limit. 34// cap, so this tree inherited no real block-size consensus limit.
35static const unsigned int MAX_BLOCK_SIZE = 1000000; 35static const unsigned int MAX_BLOCK_SIZE = 1000000;
36// How much of that cap a template we build may fill. Half, which is what both
37// assemblers already aimed at -- this only gives the number a name and one
38// place to live. They had already drifted on how it was enforced, which is the
39// bug this exists to stop repeating.
40//
41// NOT a consensus rule. CheckBlock() decides what the network accepts; this
42// decides what we are willing to produce, and it has to stay under that.
43static const unsigned int MAX_BLOCK_SIZE_GEN = MAX_BLOCK_SIZE / 2;
44
45// Room for one more transaction in a template that currently weighs
46// nBlockSize bytes and spends nBlockSigOps signature operations?
47//
48// Asked BEFORE the transaction is appended, never after. A template that has
49// already overshot is one CheckBlock() rejects, and asking afterwards only
50// measures the waste. Both assemblers call this, so neither can drift into a
51// different idea of what fits.
52//
53// Size gets a margin (half the cap); sigops do not. There is no cheap way to
54// spend the sigop budget usefully and no reason to reserve headroom in it, so
55// assembly holds itself to the same number CheckBlock() enforces -- and to the
56// same comparison. CheckBlock() fails on `> MAX_BLOCK_SIGOPS`, so a block
57// sitting exactly on the limit is valid and this has to accept it too.
58// Assembly and validation disagreeing by one is how the size bug started.
59inline bool BlockTemplateFits(unsigned int nBlockSize, unsigned int nBlockSigOps,
60 unsigned int nTxSize, unsigned int nTxSigOps)
61{
62 return (nBlockSize + nTxSize <= MAX_BLOCK_SIZE_GEN &&
63 nBlockSigOps + nTxSigOps <= MAX_BLOCK_SIGOPS);
64}
36static const int64 COIN = 100000000; 65static const int64 COIN = 100000000;
37// Total Bitflash emission: identical to Bitcoin (21 million). 66// Total Bitflash emission: identical to Bitcoin (21 million).
38// MAX_MONEY guards against the value overflow bug (CVE-2010-5139), which in 67// MAX_MONEY guards against the value overflow bug (CVE-2010-5139), which in
@@ -306,6 +335,7 @@ int64 GetBalance();
306struct WalletRecoveryAudit 335struct WalletRecoveryAudit
307{ 336{
308 bool fHaveSeed; 337 bool fHaveSeed;
338 bool fSeedEncryptedLocked;
309 bool fDeriveComplete; 339 bool fDeriveComplete;
310 int nSchema; 340 int nSchema;
311 unsigned int nDerivedKnown; 341 unsigned int nDerivedKnown;
@@ -325,6 +355,7 @@ struct WalletRecoveryAudit
325 WalletRecoveryAudit() 355 WalletRecoveryAudit()
326 { 356 {
327 fHaveSeed = false; 357 fHaveSeed = false;
358 fSeedEncryptedLocked = false;
328 fDeriveComplete = true; 359 fDeriveComplete = true;
329 nSchema = HD_SCHEMA_NONE; 360 nSchema = HD_SCHEMA_NONE;
330 nDerivedKnown = 0; 361 nDerivedKnown = 0;