From 0683b8ebf33386d5c05140df89df10b1853d7c7e Mon Sep 17 00:00:00 2001 From: glozow Date: Mon, 3 Mar 2025 11:07:27 -0500 Subject: [PATCH 1/4] [kernel] update assumed blockchain and chainstate sizes for v29 --- 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 349e14a5d6e..49deb9f37cd 100644 --- a/src/kernel/chainparams.cpp +++ b/src/kernel/chainparams.cpp @@ -131,7 +131,7 @@ public: pchMessageStart[3] = 0xd9; nDefaultPort = 8333; nPruneAfterHeight = 100000; - m_assumed_blockchain_size = 620; + m_assumed_blockchain_size = 720; m_assumed_chain_state_size = 14; genesis = CreateGenesisBlock(1231006505, 2083236893, 0x1d00ffff, 1, 50 * COIN); @@ -250,7 +250,7 @@ public: pchMessageStart[3] = 0x07; nDefaultPort = 18333; nPruneAfterHeight = 1000; - m_assumed_blockchain_size = 93; + m_assumed_blockchain_size = 200; m_assumed_chain_state_size = 19; genesis = CreateGenesisBlock(1296688602, 414098458, 0x1d00ffff, 1, 50 * COIN); @@ -349,8 +349,8 @@ public: pchMessageStart[3] = 0x28; nDefaultPort = 48333; nPruneAfterHeight = 1000; - m_assumed_blockchain_size = 1; - m_assumed_chain_state_size = 0; + m_assumed_blockchain_size = 11; + m_assumed_chain_state_size = 1; const char* testnet4_genesis_msg = "03/May/2024 000000000000000000001ebd58c244970b3aa9d783bb001011fbe8ea8e98e00e"; const CScript testnet4_genesis_script = CScript() << "000000000000000000000000000000000000000000000000000000000000000000"_hex << OP_CHECKSIG; @@ -424,8 +424,8 @@ public: consensus.nMinimumChainWork = uint256{"0000000000000000000000000000000000000000000000000000025dbd66e58f"}; consensus.defaultAssumeValid = uint256{"0000014aad1d58dddcb964dd749b073374c6306e716b22f573a2efe68d414539"}; // 208800 - m_assumed_blockchain_size = 2; - m_assumed_chain_state_size = 0; + m_assumed_blockchain_size = 9; + m_assumed_chain_state_size = 1; chainTxData = ChainTxData{ // Data from RPC: getchaintxstats 4096 0000014aad1d58dddcb964dd749b073374c6306e716b22f573a2efe68d414539 .nTime = 1723655233, From 80926af8c2624193f57cf3352233e310d7ae2d09 Mon Sep 17 00:00:00 2001 From: glozow Date: Mon, 3 Mar 2025 11:08:49 -0500 Subject: [PATCH 2/4] [kernel] update assumevalid and minimumChainWork for v29 --- 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 49deb9f37cd..e358295610e 100644 --- a/src/kernel/chainparams.cpp +++ b/src/kernel/chainparams.cpp @@ -117,8 +117,8 @@ public: consensus.vDeployments[Consensus::DEPLOYMENT_TAPROOT].nTimeout = 1628640000; // August 11th, 2021 consensus.vDeployments[Consensus::DEPLOYMENT_TAPROOT].min_activation_height = 709632; // Approximately November 12th, 2021 - consensus.nMinimumChainWork = uint256{"000000000000000000000000000000000000000088e186b70e0862c193ec44d6"}; - consensus.defaultAssumeValid = uint256{"000000000000000000011c5890365bdbe5d25b97ce0057589acaef4f1a57263f"}; // 856760 + consensus.nMinimumChainWork = uint256{"0000000000000000000000000000000000000000b1f3b93b65b16d035a82be84"}; + consensus.defaultAssumeValid = uint256{"00000000000000000001b658dd1120e82e66d2790811f89ede9742ada3ed6d77"}; // 886157 /** * The message start string is designed to be unlikely to occur in normal data. @@ -241,8 +241,8 @@ public: consensus.vDeployments[Consensus::DEPLOYMENT_TAPROOT].nTimeout = 1628640000; // August 11th, 2021 consensus.vDeployments[Consensus::DEPLOYMENT_TAPROOT].min_activation_height = 0; // No activation delay - consensus.nMinimumChainWork = uint256{"000000000000000000000000000000000000000000000f209695166be8b61fa9"}; - consensus.defaultAssumeValid = uint256{"000000000000000465b1a66c9f386308e8c75acef9201f3f577811da09fc90ad"}; // 2873500 + consensus.nMinimumChainWork = uint256{"0000000000000000000000000000000000000000000015f5e0c9f13455b0eb17"}; + consensus.defaultAssumeValid = uint256{"00000000000003fc7967410ba2d0a8a8d50daedc318d43e8baf1a9782c236a57"}; // 3974606 pchMessageStart[0] = 0x0b; pchMessageStart[1] = 0x11; @@ -340,8 +340,8 @@ public: consensus.vDeployments[Consensus::DEPLOYMENT_TAPROOT].nTimeout = Consensus::BIP9Deployment::NO_TIMEOUT; consensus.vDeployments[Consensus::DEPLOYMENT_TAPROOT].min_activation_height = 0; // No activation delay - consensus.nMinimumChainWork = uint256{"00000000000000000000000000000000000000000000005faa15d02e6202f3ba"}; - consensus.defaultAssumeValid = uint256{"000000005be348057db991fa5d89fe7c4695b667cfb311391a8db374b6f681fd"}; // 39550 + consensus.nMinimumChainWork = uint256{"0000000000000000000000000000000000000000000001d6dce8651b6094e4c1"}; + consensus.defaultAssumeValid = uint256{"0000000000003ed4f08dbdf6f7d6b271a6bcffce25675cb40aa9fa43179a89f3"}; // 72600 pchMessageStart[0] = 0x1c; pchMessageStart[1] = 0x16; @@ -422,8 +422,8 @@ public: vSeeds.emplace_back("178.128.221.177"); vSeeds.emplace_back("v7ajjeirttkbnt32wpy3c6w3emwnfr3fkla7hpxcfokr3ysd3kqtzmqd.onion:38333"); - consensus.nMinimumChainWork = uint256{"0000000000000000000000000000000000000000000000000000025dbd66e58f"}; - consensus.defaultAssumeValid = uint256{"0000014aad1d58dddcb964dd749b073374c6306e716b22f573a2efe68d414539"}; // 208800 + consensus.nMinimumChainWork = uint256{"000000000000000000000000000000000000000000000000000002b517f3d1a1"}; + consensus.defaultAssumeValid = uint256{"000000895a110f46e59eb82bbc5bfb67fa314656009c295509c21b4999f5180a"}; // 237722 m_assumed_blockchain_size = 9; m_assumed_chain_state_size = 1; chainTxData = ChainTxData{ From dd23c532581f56423047842f4dcbc2c04bd88136 Mon Sep 17 00:00:00 2001 From: glozow Date: Mon, 3 Mar 2025 10:58:38 -0500 Subject: [PATCH 3/4] [kernel] update chainTxData for v29 --- 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 e358295610e..8df294da8c3 100644 --- a/src/kernel/chainparams.cpp +++ b/src/kernel/chainparams.cpp @@ -195,10 +195,10 @@ public: }; chainTxData = ChainTxData{ - // Data from RPC: getchaintxstats 4096 000000000000000000011c5890365bdbe5d25b97ce0057589acaef4f1a57263f - .nTime = 1723649144, - .tx_count = 1059312821, - .dTxRate = 6.721086701157182, + // Data from RPC: getchaintxstats 4096 00000000000000000001b658dd1120e82e66d2790811f89ede9742ada3ed6d77 + .nTime = 1741017141, + .tx_count = 1161875261, + .dTxRate = 4.620728156243148, }; } }; @@ -296,10 +296,10 @@ public: }; chainTxData = ChainTxData{ - // Data from RPC: getchaintxstats 4096 000000000000000465b1a66c9f386308e8c75acef9201f3f577811da09fc90ad - .nTime = 1723613341, - .tx_count = 187917082, - .dTxRate = 3.265051477698455, + // Data from RPC: getchaintxstats 4096 00000000000003fc7967410ba2d0a8a8d50daedc318d43e8baf1a9782c236a57 + .nTime = 1741042082, + .tx_count = 475477615, + .dTxRate = 17.15933950357594, }; } }; @@ -395,10 +395,10 @@ public: }; chainTxData = ChainTxData{ - // Data from RPC: getchaintxstats 4096 000000005be348057db991fa5d89fe7c4695b667cfb311391a8db374b6f681fd - .nTime = 1723651702, - .tx_count = 757229, - .dTxRate = 0.01570402633472492, + // Data from RPC: getchaintxstats 4096 0000000000003ed4f08dbdf6f7d6b271a6bcffce25675cb40aa9fa43179a89f3 + .nTime = 1741070246, + .tx_count = 7653966, + .dTxRate = 1.239174414591965, }; } }; @@ -427,10 +427,10 @@ public: m_assumed_blockchain_size = 9; m_assumed_chain_state_size = 1; chainTxData = ChainTxData{ - // Data from RPC: getchaintxstats 4096 0000014aad1d58dddcb964dd749b073374c6306e716b22f573a2efe68d414539 - .nTime = 1723655233, - .tx_count = 5507045, - .dTxRate = 0.06271073277261494, + // Data from RPC: getchaintxstats 4096 000000895a110f46e59eb82bbc5bfb67fa314656009c295509c21b4999f5180a + .nTime = 1741019645, + .tx_count = 16540736, + .dTxRate = 1.064918879911595, }; } else { bin = *options.challenge; From 11a2d3a63e90cdc1920ede3c67d52a9c72860e6b Mon Sep 17 00:00:00 2001 From: glozow Date: Mon, 3 Mar 2025 12:59:16 -0500 Subject: [PATCH 4/4] [headerssync] update headerssync config for v29 --- 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 f8e415532a0..4640718cb7e 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, 4, 1) +TIME = datetime(2027, 10, 6) # Expected block interval. [timedelta] BLOCK_INTERVAL = timedelta(seconds=600) # The number of headers corresponding to the minchainwork parameter. [headers] -MINCHAINWORK_HEADERS = 856760 +MINCHAINWORK_HEADERS = 886157 # 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 b134ef6452d..9e8b1905168 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{615}; +constexpr size_t HEADER_COMMITMENT_PERIOD{624}; //! Only feed headers to validation once this many headers on top have been //! received and validated against commitments. -constexpr size_t REDOWNLOAD_BUFFER_SIZE{14621}; // 14621/615 = ~23.8 commitments +constexpr size_t REDOWNLOAD_BUFFER_SIZE{14827}; // 14827/624 = ~23.8 commitments // Our memory analysis assumes 48 bytes for a CompressedHeader (so we should // re-calculate parameters if we compress further)