From b4adae76d4666a2227cef1892d44fa79a5ed89ab Mon Sep 17 00:00:00 2001 From: fanquake Date: Mon, 1 Sep 2025 11:33:52 +0100 Subject: [PATCH 1/6] kernel: update assumed blockchain & chainstate sizes --- src/kernel/chainparams.cpp | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/kernel/chainparams.cpp b/src/kernel/chainparams.cpp index a5ff4f5ac8c..0f7b0c4cd05 100644 --- a/src/kernel/chainparams.cpp +++ b/src/kernel/chainparams.cpp @@ -132,7 +132,7 @@ public: pchMessageStart[3] = 0xd9; nDefaultPort = 8333; nPruneAfterHeight = 100000; - m_assumed_blockchain_size = 720; + m_assumed_blockchain_size = 810; m_assumed_chain_state_size = 14; genesis = CreateGenesisBlock(1231006505, 2083236893, 0x1d00ffff, 1, 50 * COIN); @@ -241,7 +241,7 @@ public: pchMessageStart[3] = 0x07; nDefaultPort = 18333; nPruneAfterHeight = 1000; - m_assumed_blockchain_size = 200; + m_assumed_blockchain_size = 240; m_assumed_chain_state_size = 19; genesis = CreateGenesisBlock(1296688602, 414098458, 0x1d00ffff, 1, 50 * COIN); @@ -337,8 +337,8 @@ public: pchMessageStart[3] = 0x28; nDefaultPort = 48333; nPruneAfterHeight = 1000; - m_assumed_blockchain_size = 11; - m_assumed_chain_state_size = 1; + m_assumed_blockchain_size = 22; + m_assumed_chain_state_size = 2; const char* testnet4_genesis_msg = "03/May/2024 000000000000000000001ebd58c244970b3aa9d783bb001011fbe8ea8e98e00e"; const CScript testnet4_genesis_script = CScript() << "000000000000000000000000000000000000000000000000000000000000000000"_hex << OP_CHECKSIG; @@ -404,8 +404,8 @@ public: consensus.nMinimumChainWork = uint256{"000000000000000000000000000000000000000000000000000002b517f3d1a1"}; consensus.defaultAssumeValid = uint256{"000000895a110f46e59eb82bbc5bfb67fa314656009c295509c21b4999f5180a"}; // 237722 - m_assumed_blockchain_size = 9; - m_assumed_chain_state_size = 1; + m_assumed_blockchain_size = 20; + m_assumed_chain_state_size = 4; chainTxData = ChainTxData{ // Data from RPC: getchaintxstats 4096 000000895a110f46e59eb82bbc5bfb67fa314656009c295509c21b4999f5180a .nTime = 1741019645, From c3cb26e02834b38ea4f3611877f904a6e398a96f Mon Sep 17 00:00:00 2001 From: fanquake Date: Mon, 1 Sep 2025 11:43:06 +0100 Subject: [PATCH 2/6] kernel: update assumevalid and minimumChainWork --- src/kernel/chainparams.cpp | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/src/kernel/chainparams.cpp b/src/kernel/chainparams.cpp index 0f7b0c4cd05..b4a5b26b357 100644 --- a/src/kernel/chainparams.cpp +++ b/src/kernel/chainparams.cpp @@ -118,8 +118,8 @@ public: consensus.vDeployments[Consensus::DEPLOYMENT_TAPROOT].threshold = 1815; // 90% consensus.vDeployments[Consensus::DEPLOYMENT_TAPROOT].period = 2016; - consensus.nMinimumChainWork = uint256{"0000000000000000000000000000000000000000b1f3b93b65b16d035a82be84"}; - consensus.defaultAssumeValid = uint256{"00000000000000000001b658dd1120e82e66d2790811f89ede9742ada3ed6d77"}; // 886157 + consensus.nMinimumChainWork = uint256{"0000000000000000000000000000000000000000dee8e2a309ad8a9820433c68"}; + consensus.defaultAssumeValid = uint256{"00000000000000000000611fd22f2df7c8fbd0688745c3a6c3bb5109cc2a12cb"}; // 912683 /** * The message start string is designed to be unlikely to occur in normal data. @@ -232,8 +232,8 @@ public: consensus.vDeployments[Consensus::DEPLOYMENT_TAPROOT].threshold = 1512; // 75% consensus.vDeployments[Consensus::DEPLOYMENT_TAPROOT].period = 2016; - consensus.nMinimumChainWork = uint256{"0000000000000000000000000000000000000000000015f5e0c9f13455b0eb17"}; - consensus.defaultAssumeValid = uint256{"00000000000003fc7967410ba2d0a8a8d50daedc318d43e8baf1a9782c236a57"}; // 3974606 + consensus.nMinimumChainWork = uint256{"0000000000000000000000000000000000000000000016dd270dd94fac1d7632"}; + consensus.defaultAssumeValid = uint256{"0000000000000065c6c38258e201971a3fdfcc2ceee0dd6e85a6c022d45dee34"}; // 4550000 pchMessageStart[0] = 0x0b; pchMessageStart[1] = 0x11; @@ -328,8 +328,8 @@ public: consensus.vDeployments[Consensus::DEPLOYMENT_TAPROOT].threshold = 1512; // 75% consensus.vDeployments[Consensus::DEPLOYMENT_TAPROOT].period = 2016; - consensus.nMinimumChainWork = uint256{"0000000000000000000000000000000000000000000001d6dce8651b6094e4c1"}; - consensus.defaultAssumeValid = uint256{"0000000000003ed4f08dbdf6f7d6b271a6bcffce25675cb40aa9fa43179a89f3"}; // 72600 + consensus.nMinimumChainWork = uint256{"00000000000000000000000000000000000000000000034a4690fe592dc49c7c"}; + consensus.defaultAssumeValid = uint256{"000000000000000180a58e7fa3b0db84b5ea76377524894f53660d93ac839d9b"}; // 91000 pchMessageStart[0] = 0x1c; pchMessageStart[1] = 0x16; @@ -402,8 +402,8 @@ public: vSeeds.emplace_back("seed.signet.bitcoin.sprovoost.nl."); vSeeds.emplace_back("seed.signet.achownodes.xyz."); // Ava Chow, only supports x1, x5, x9, x49, x809, x849, xd, x400, x404, x408, x448, xc08, xc48, x40c - consensus.nMinimumChainWork = uint256{"000000000000000000000000000000000000000000000000000002b517f3d1a1"}; - consensus.defaultAssumeValid = uint256{"000000895a110f46e59eb82bbc5bfb67fa314656009c295509c21b4999f5180a"}; // 237722 + consensus.nMinimumChainWork = uint256{"0000000000000000000000000000000000000000000000000000067d328e681a"}; + consensus.defaultAssumeValid = uint256{"000000128586e26813922680309f04e1de713c7542fee86ed908f56368aefe2e"}; // 267665 m_assumed_blockchain_size = 20; m_assumed_chain_state_size = 4; chainTxData = ChainTxData{ From 66fb962426482ef674d51f2e81bbbbcbc44291e0 Mon Sep 17 00:00:00 2001 From: fanquake Date: Mon, 1 Sep 2025 11:48:27 +0100 Subject: [PATCH 3/6] kernel: update chainTxData --- src/kernel/chainparams.cpp | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/src/kernel/chainparams.cpp b/src/kernel/chainparams.cpp index b4a5b26b357..d756e6fe3c1 100644 --- a/src/kernel/chainparams.cpp +++ b/src/kernel/chainparams.cpp @@ -184,10 +184,10 @@ public: }; chainTxData = ChainTxData{ - // Data from RPC: getchaintxstats 4096 00000000000000000001b658dd1120e82e66d2790811f89ede9742ada3ed6d77 - .nTime = 1741017141, - .tx_count = 1161875261, - .dTxRate = 4.620728156243148, + // Data from RPC: getchaintxstats 4096 00000000000000000000611fd22f2df7c8fbd0688745c3a6c3bb5109cc2a12cb + .nTime = 1756722903, + .tx_count = 1235299397, + .dTxRate = 5.456290459519495, }; } }; @@ -281,10 +281,10 @@ public: }; chainTxData = ChainTxData{ - // Data from RPC: getchaintxstats 4096 00000000000003fc7967410ba2d0a8a8d50daedc318d43e8baf1a9782c236a57 - .nTime = 1741042082, - .tx_count = 475477615, - .dTxRate = 17.15933950357594, + // Data from RPC: getchaintxstats 4096 0000000000000065c6c38258e201971a3fdfcc2ceee0dd6e85a6c022d45dee34 + .nTime = 1751816758, + .tx_count = 508468699, + .dTxRate = 7.172978845985714, }; } }; @@ -377,10 +377,10 @@ public: }; chainTxData = ChainTxData{ - // Data from RPC: getchaintxstats 4096 0000000000003ed4f08dbdf6f7d6b271a6bcffce25675cb40aa9fa43179a89f3 - .nTime = 1741070246, - .tx_count = 7653966, - .dTxRate = 1.239174414591965, + // Data from RPC: getchaintxstats 4096 000000000000000180a58e7fa3b0db84b5ea76377524894f53660d93ac839d9b + .nTime = 1752470331, + .tx_count = 11414302, + .dTxRate = 0.2842619757327476, }; } }; @@ -407,10 +407,10 @@ public: m_assumed_blockchain_size = 20; m_assumed_chain_state_size = 4; chainTxData = ChainTxData{ - // Data from RPC: getchaintxstats 4096 000000895a110f46e59eb82bbc5bfb67fa314656009c295509c21b4999f5180a - .nTime = 1741019645, - .tx_count = 16540736, - .dTxRate = 1.064918879911595, + // Data from RPC: getchaintxstats 4096 000000128586e26813922680309f04e1de713c7542fee86ed908f56368aefe2e + .nTime = 1756723017, + .tx_count = 26185472, + .dTxRate = 0.7452721495389969, }; } else { bin = *options.challenge; From 943de66b5043e46f84ccc65039842be34cf42133 Mon Sep 17 00:00:00 2001 From: fanquake Date: Mon, 1 Sep 2025 11:57:42 +0100 Subject: [PATCH 4/6] kernel: update headersync params --- contrib/devtools/headerssync-params.py | 4 ++-- src/headerssync.cpp | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/contrib/devtools/headerssync-params.py b/contrib/devtools/headerssync-params.py index 4640718cb7e..ece1a786302 100755 --- a/contrib/devtools/headerssync-params.py +++ b/contrib/devtools/headerssync-params.py @@ -12,13 +12,13 @@ import random # Parameters: # Aim for still working fine at some point in the future. [datetime] -TIME = datetime(2027, 10, 6) +TIME = datetime(2028, 4, 2) # Expected block interval. [timedelta] BLOCK_INTERVAL = timedelta(seconds=600) # The number of headers corresponding to the minchainwork parameter. [headers] -MINCHAINWORK_HEADERS = 886157 +MINCHAINWORK_HEADERS = 912683 # Combined processing bandwidth from all attackers to one victim. [bit/s] # 6 Gbit/s is approximately the speed at which a single thread of a Ryzen 5950X CPU thread can hash diff --git a/src/headerssync.cpp b/src/headerssync.cpp index fbe2026ecae..ae7187f48b2 100644 --- a/src/headerssync.cpp +++ b/src/headerssync.cpp @@ -13,11 +13,11 @@ // contrib/devtools/headerssync-params.py. //! Store one header commitment per HEADER_COMMITMENT_PERIOD blocks. -constexpr size_t HEADER_COMMITMENT_PERIOD{624}; +constexpr size_t HEADER_COMMITMENT_PERIOD{632}; //! Only feed headers to validation once this many headers on top have been //! received and validated against commitments. -constexpr size_t REDOWNLOAD_BUFFER_SIZE{14827}; // 14827/624 = ~23.8 commitments +constexpr size_t REDOWNLOAD_BUFFER_SIZE{15009}; // 15009/632 = ~23.7 commitments // Our memory analysis assumes 48 bytes for a CompressedHeader (so we should // re-calculate parameters if we compress further) From a6512686e335c1eb63bb50137adef04a65067031 Mon Sep 17 00:00:00 2001 From: fanquake Date: Mon, 1 Sep 2025 13:18:58 +0100 Subject: [PATCH 5/6] kernel: add mainnet assumeutxo param at height 910'000 --- src/kernel/chainparams.cpp | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/kernel/chainparams.cpp b/src/kernel/chainparams.cpp index d756e6fe3c1..a60e23504a8 100644 --- a/src/kernel/chainparams.cpp +++ b/src/kernel/chainparams.cpp @@ -180,6 +180,12 @@ public: .hash_serialized = AssumeutxoHash{uint256{"dbd190983eaf433ef7c15f78a278ae42c00ef52e0fd2a54953782175fbadcea9"}}, .m_chain_tx_count = 1145604538, .blockhash = consteval_ctor(uint256{"000000000000000000010b17283c3c400507969a9c2afd1dcf2082ec5cca2880"}), + }, + { + .height = 910'000, + .hash_serialized = AssumeutxoHash{uint256{"4daf8a17b4902498c5787966a2b51c613acdab5df5db73f196fa59a4da2f1568"}}, + .m_chain_tx_count = 1226586151, + .blockhash = consteval_ctor(uint256{"0000000000000000000108970acb9522ffd516eae17acddcb1bd16469194a821"}), } }; From 755152ac819a23acf2f9e70316134d74a04d589b Mon Sep 17 00:00:00 2001 From: fanquake Date: Mon, 1 Sep 2025 13:52:16 +0100 Subject: [PATCH 6/6] kernel: add testnet4 assumeutxo param at height 90'000 --- src/kernel/chainparams.cpp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/kernel/chainparams.cpp b/src/kernel/chainparams.cpp index a60e23504a8..3955794f896 100644 --- a/src/kernel/chainparams.cpp +++ b/src/kernel/chainparams.cpp @@ -379,7 +379,12 @@ public: m_is_mockable_chain = false; m_assumeutxo_data = { - {} + { + .height = 90'000, + .hash_serialized = AssumeutxoHash{uint256{"784fb5e98241de66fdd429f4392155c9e7db5c017148e66e8fdbc95746f8b9b5"}}, + .m_chain_tx_count = 11347043, + .blockhash = consteval_ctor(uint256{"0000000002ebe8bcda020e0dd6ccfbdfac531d2f6a81457191b99fc2df2dbe3b"}), + } }; chainTxData = ChainTxData{