Skip to content

JDC+JDS race condition on chain tip updates triggers fallback unnecessarily #364

@plebhash

Description

@plebhash

JDC logs:

2026-03-23T18:22:28.277731Z  INFO bitcoin_core_sv2::template_distribution_protocol::monitors: 💹 Mempool fees increased! Sending NewTemplate message.
2026-03-23T18:22:28.277920Z  INFO jd_client_sv2::channel_manager::template_message_handler: Received: NewTemplate(template_id: 522, future_template: false, version: 0x20000000, coinbase_tx_version: 0x00000002, coinbase_prefix: B0255(034c5f0e00), coinbase_tx_input_sequence: 0xfffffffe, coinbase_tx_value_remaining: 317835717, coinbase_tx_outputs_count: 1, coinbase_tx_outputs: B064K(0000000000000000266a24aa21a9ed21aca50eb1bd2b325743514a2e35956bd06f5549baa08cf618f1e648264a78ef), coinbase_tx_locktime: 941899, merkle_path: Seq0255<len=12: [61425df8cd7e30b873ab6bc78515630f6e3f3fb0f20a6c5a78bade21dd716ef5, 6870ab313c7d5f13ba2d69b8a67da8079ebd799d1e819745193a1d4efabf67eb, ... , 5310907c48788d5ef227a6d7d107466741c0df14428bf35ca6030aadde31514b, 3f9eb34e13b2478aa44a62764cc59b350bc90a076e418c3e663fee0a1b7f978e])
2026-03-23T18:22:28.278323Z  INFO bitcoin_core_sv2::template_distribution_protocol::monitors: Received: RequestTransactionData(template_id: 522)
2026-03-23T18:22:28.301231Z  INFO jd_client_sv2::channel_manager::template_message_handler: Received: RequestTransactionDataSuccess(template_id: 522, excess_data: B064K(), transaction_list: Seq064K<len=3859: [02000000000103038490da7c30f7b3d9e1ea9110d51778bb7bd7d349814c466ce8ded0928819fd0000000000fdffffff1cbc458b5dd31546cd6946bd2c24bff6fba2e6c5dfa5e9a27b88a0524e27d64b0000000000fdffffffbbb1f76119084dc2ba3f974adea33c1bd3b15bd6af8092e76ba0881e85987f090600000000fdffffff010c433c040000000017a9145e26005492b1b14c136a997cc96c907593b7abaf8702473044022019fe395b4ff8c870bbc3499b81d811cae460b3fd7b35725ef7221223148ee422022069515758e6edf41be9f5ea17fba30e753b7d90238ff3bd522bece248b9a294c7012103e85b9512aee1e0fccdd36caf…<truncated 476 chars>, 020000000001052ab981fd19d52eddf7925f72c17d39d06fdbf4a631567d21e652cede755e60b50000000000fdffffffb57bbdf7fc536c74547e046f85fa7731b5c64115d8c502250f789fbe82d1c2f10000000000fdffffffc01a48d6ae4b95244df16e2add3692bd88cfc5811b03e053c6771c6f90e8e49e0000000000fdffffffc2cb308101a730f04ef6d25f4718bf3a22d9898725731ce14e770200c5c5b35d0100000000fdffffff7899fe8011e747c42f1f05379bda15950561188ca6e60a11efc0412ee54308410000000000fdffffff0181871f020000000017a9145e26005492b1b14c136a997cc96c907593b7abaf870248304502…<truncated 1072 chars>, … , 02000000000101e74781639b3b9ca8bbd43c0f88417a82495d3476ffbf53cce64a56f5190ef1be1d00000000fdffffff02641301000000000016001431f68e6005cec40be9a6ddacfa4d0065b611fbf0bc78010000000000160014112ae787c28919436dbb5f272fae5cd8e1f6cc9902483045022100b839a751c633c7af561a4a9b95b7e45a1b6b59c98c4daa9d7120be12a93e437502207c4d163856143b6353c25bfd65d6d5c6e8c133f1347e29512d92dcd8b544eb380121020359f207d166068a630ab20fd5725d5d0656f907687ff3ceb9d761c283e5e4fe00000000, 020000000001019c63d45968671a55308b5bf7d6f2f229ef987a30f81d9c206147860c2b99f4fd01000000000000008002d65a010000000000160014f0b9efe31d3187afbf673f902d75e4b8673453b87f9e030000000000160014cdbd0cb8d4be4370581283edc14c03a6c3627dfe02473044022046f666a546efe3877dc0b9c003ec7eb39f6591a3ac66c3c6187aeaa0015c5fed022020fec6b22f030378ceaab1b66e5ec4d6ec34acb25b20661b15909f424493512f012103ac8dcfb79af97822b1cfd65b248b96334d061bde77ca79e0eeee7ad74282e9f300000000])
2026-03-23T18:22:28.301485Z  INFO jd_client_sv2::channel_manager: Requested allocation of 1 mining job tokens to JDS
2026-03-23T18:22:28.314089Z  INFO bitcoin_core_sv2::template_distribution_protocol::monitors: ⛓️ Chain Tip changed! New prev_hash: U256(0000000000000000000136974cb7c512c722b1f124242a2bc6c3ce461d725577)
2026-03-23T18:22:28.314662Z  INFO jd_client_sv2::channel_manager::template_message_handler: Received: NewTemplate(template_id: 523, future_template: true, version: 0x20000000, coinbase_tx_version: 0x00000002, coinbase_prefix: B0255(034d5f0e00), coinbase_tx_input_sequence: 0xfffffffe, coinbase_tx_value_remaining: 313882397, coinbase_tx_outputs_count: 1, coinbase_tx_outputs: B064K(0000000000000000266a24aa21a9ed0fa15e8d8e81d0d29c0564accb9acfd6420eea7ee41f171a7bf42ce031f17157), coinbase_tx_locktime: 941900, merkle_path: Seq0255<len=12: [d2a9bffc06a47a281af736a6c8eb588ba70da98de61668496fa7cd0c605bd738, 0054e9315c3bc0999e4c7c397815eba9c2bec9308b22a80c8fc1b37d0b250eb3, ... , 003078f453fc3145ca3179ca801c50ee1e2d7e98620a81772ec94e6e9d11a448, 0e14a1cc0837e1b17fb8bc66f0ddd855fc99488612d5c2c5bb2cb6bed0e30eb8])
2026-03-23T18:22:28.314769Z  INFO bitcoin_core_sv2::template_distribution_protocol::monitors: Received: RequestTransactionData(template_id: 523)
2026-03-23T18:22:28.314770Z  INFO jd_client_sv2::channel_manager::template_message_handler: Received: SetNewPrevHash { template_id: 523, prev_hash: U256(0000000000000000000136974cb7c512c722b1f124242a2bc6c3ce461d725577), header_timestamp: 1774290148, n_bits: 0x17021a91, target: U256(000000000000000000021a910000000000000000000000000000000000000000) }
2026-03-23T18:22:28.323040Z  INFO jd_client_sv2::channel_manager::template_message_handler: Received: RequestTransactionDataSuccess(template_id: 523, excess_data: B064K(), transaction_list: Seq064K<len=3265: [02000000000101f2f798680a404485eeecd3a84e33ed5011fa2a6b3f8549121b8882e4689a5a2c0200000000ffffffff01e6fc0b000000000016001480e01351cc3c6f2c7b926f2feb631ac5c1009b3a02483045022100f3316116e764f97647893959accc37900dd39560127270a000ca7218242bf7f702202c0ad960ae974288f442a4d0d442d744e32ef8021469b3b5e2a5533b90df597101210295b2bf797da7f76f67a9a3e87fec0fac2bbc0a0710f2201466260a336d5302f500000000, 02000000000101c3193c61bee7678e97f08de14a7ec1eeda3ce50fc5d4ede4a237c237e9ab33550000000000ffffffff02dcbe0000000000001600147c96aaec2858de55b872d184d08cfa5a8a21a31900520400000000001600140ae9d8403d366079a78def26cb1d2f658c6748ba02473044022040e6b92fd7a2f47b0362b51f42577f1766104b805ed06b8245bb8f49e392f9b902203c2618540417f6cdb41b272469e90d32cea41bfad8b290921a87171a70791b36012103f5ee8f55b74bc07edce7b0f65fa30c2a298d80106737f87af549052f9213625700000000, … , 02000000000101ce71bcac477034f9a46f2549faf410f4169b9130e1aee48c0e5aa63ffb3aad940200000000fdffffff030000000000000000096a5d061401140016024a01000000000000225120e86a7c3cac51c3fbf2ff5aad97cdae7e6b922f20d58121827d619b458c9dab75d86b0000000000002251208b6fb422ef779b1d1f9df9529a6162df66289bd2255060e03e379235bd5b1b150340f39aca8ac58d6f2a609f04700b80ce00e21f4d748b16b44dbcd23c9f5cd235cc8168f7724bf12d19c26cb845ab2a261e5332cede358ac5781c4cd57c92b9515e6d202051e6a6916e2a94de9c88a9e1a6c592b292bef8c490284fa9725052a5…<truncated 234 chars>, 02000000000101421412a079124fe20d151d971459d67cc48d5ba53ac72fca5e50894799f228ad0200000000fdffffff030000000000000000096a5d061401140016024a01000000000000225120e86a7c3cac51c3fbf2ff5aad97cdae7e6b922f20d58121827d619b458c9dab75706a0000000000002251208b6fb422ef779b1d1f9df9529a6162df66289bd2255060e03e379235bd5b1b150340fbab24d5c8fa49b205fc25ecf8ef92622f54f21b32a6748e9e524824d237bfa5fc6b313d8d69c3ad667df4f5a8f2125e147e8929ac66f716556f1d5918ff42ba6d202051e6a6916e2a94de9c88a9e1a6c592b292bef8c490284fa9725052a5…<truncated 234 chars>])
2026-03-23T18:22:28.323238Z  INFO jd_client_sv2::channel_manager: Requested allocation of 1 mining job tokens to JDS
2026-03-23T18:22:28.495629Z  INFO jd_client_sv2::channel_manager::jd_message_handler: Received: AllocateMiningJobTokenSuccess(request_id: 1047, mining_job_token: B0255(e307000000000000), coinbase_outputs: B064K(01000000000000000016001458806074c426bedea9376ac34685eca699f4e90f))
2026-03-23T18:22:28.679847Z  INFO jd_client_sv2::channel_manager::jd_message_handler: Received: ProvideMissingTransactions(request_id: 1046, unknown_tx_position_list: Seq064K<len=3814: [0, 1, ... , 3857, 3858])
2026-03-23T18:22:28.680858Z  INFO jd_client_sv2::channel_manager::jd_message_handler: Successfully sent ProvideMissingTransactionsSuccess to the JDS with request_id: 1046
2026-03-23T18:22:28.690969Z  INFO jd_client_sv2::channel_manager::jd_message_handler: Received: AllocateMiningJobTokenSuccess(request_id: 1049, mining_job_token: B0255(e407000000000000), coinbase_outputs: B064K(01000000000000000016001458806074c426bedea9376ac34685eca699f4e90f))
2026-03-23T18:22:28.691125Z  INFO jd_client_sv2::channel_manager::jd_message_handler: Received: ProvideMissingTransactions(request_id: 1048, unknown_tx_position_list: Seq064K<len=48: [3209, 3210, ... , 3255, 3256])
2026-03-23T18:22:28.691751Z  INFO jd_client_sv2::channel_manager::jd_message_handler: Successfully sent ProvideMissingTransactionsSuccess to the JDS with request_id: 1048
2026-03-23T18:22:29.231513Z  WARN jd_client_sv2::channel_manager::jd_message_handler: Received: DeclareMiningJobError(request_id: 1046, error_code: invalid-job, error_details: B064K())
2026-03-23T18:22:29.231735Z  WARN jd_client_sv2::channel_manager::jd_message_handler: ⚠️ JDS refused the declared job with a DeclareMiningJobError ❌. Starting fallback mechanism.

JDS logs:

2026-03-23T18:22:28.569416Z  INFO jd_server_sv2::job_declarator::job_declaration_message_handler: Received: AllocateMiningJobToken(user_identifier: your_username_here, request_id: 1049)
2026-03-23T18:22:28.569679Z  INFO jd_server_sv2::job_declarator::job_declaration_message_handler: Received: DeclareMiningJob(request_id: 1048, mining_job_token: B0255(e107000000000000), version: 0x20000000, coinbase_tx_prefix: B064K(020000000001010000000000000000000000000000000000000000000000000000000000000000ffffffff2f034d5f0e00142f2f5376324d696e65725369676e61747572652f14), coinbase_tx_suffix: B064K(feffffff021d77b5120000000016001458806074c426bedea9376ac34685eca699f4e90f0000000000000000266a24aa21a9ed0fa15e8d8e81d0d29c0564accb9acfd6420eea7ee41f171a7bf42ce031f17157012000000000000000000000000000000000000000000000000000000000000000004c5f0e00), tx_ids_list: Seq064K<len=3265: [0ab97a2640076fc63c24000bd778989fe66cb2bc4db5403c92e1f5275496135a, dbf5ce4c4d0b429edf0298c0a823612ed8f25aeafea9a1e62d9318bdb3d806ff, ... , e38fc0ceb24b3faf8f8a135ac71435494fbe032af909e7650b19df726b9eaf35, 0da87e7059948f660ae94d557a786720aa4b86ac1111ecd42877fccc995023f4], excess_data: B064K())
2026-03-23T18:22:28.571170Z DEBUG jd_server_sv2::job_declarator::job_validation::bitcoin_core_ipc: Declared coinbase transaction validated successfully
2026-03-23T18:22:28.571756Z  INFO bitcoin_core_sv2::job_declaration_protocol::handlers: Validating DeclareMiningJob - version: Version(536870912), coinbase inputs: 1, outputs: 2, locktime: 941900
2026-03-23T18:22:28.571897Z DEBUG bitcoin_core_sv2::job_declaration_protocol::handlers: Declared coinbase scriptSig: Script(OP_PUSHBYTES_3 4d5f0e OP_0 OP_PUSHBYTES_20 2f2f5376324d696e65725369676e61747572652f OP_PUSHBYTES_20 0000000000000000000000000000000000000000)
2026-03-23T18:22:28.669327Z DEBUG bitcoin_core_sv2::template_distribution_protocol::monitors: waitNext returned new template IPC client
2026-03-23T18:22:28.669431Z DEBUG bitcoin_core_sv2::template_distribution_protocol::monitors: Updated current_template_ipc_client with new template
2026-03-23T18:22:28.669443Z DEBUG bitcoin_core_sv2::template_distribution_protocol::monitors: Fetching new template data...
2026-03-23T18:22:28.669456Z DEBUG bitcoin_core_sv2::template_distribution_protocol: Fetching template data over IPC
2026-03-23T18:22:28.669467Z DEBUG bitcoin_core_sv2::template_distribution_protocol: fetch_template_data() - assigned template_id: 651
2026-03-23T18:22:28.671848Z DEBUG bitcoin_core_sv2::template_distribution_protocol: Deserializing template header (80 bytes)
2026-03-23T18:22:28.671967Z DEBUG bitcoin_core_sv2::template_distribution_protocol: Template header deserialized - prev_hash: 0000000000000000000136974cb7c512c722b1f124242a2bc6c3ce461d725577
2026-03-23T18:22:28.674268Z DEBUG bitcoin_core_sv2::template_distribution_protocol: Deserializing coinbase tx (149 bytes)
2026-03-23T18:22:28.674404Z DEBUG bitcoin_core_sv2::template_distribution_protocol: Coinbase tx deserialized: Transaction { version: Version(2), lock_time: 941900 blocks, input: [TxIn { previous_output: OutPoint { txid: 0000000000000000000000000000000000000000000000000000000000000000, vout: 4294967295 }, script_sig: Script(OP_PUSHBYTES_3 4d5f0e OP_0), sequence: Sequence(0xfffffffe), witness: Witness: { indices: 1, indices_start: 33, witnesses: [[0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00]] } }], output: [TxOut { value: 313889371 SAT, script_pubkey: Script(OP_PUSHNUM_1) }, TxOut { value: 0 SAT, script_pubkey: Script(OP_RETURN OP_PUSHBYTES_36 aa21a9ed3512aa77ba1fee32db90f23713478eed6b5e32b8eed735839380523e93c38390) }] }
2026-03-23T18:22:28.677210Z DEBUG bitcoin_core_sv2::template_distribution_protocol: TemplateData created successfully
2026-03-23T18:22:28.677296Z DEBUG bitcoin_core_sv2::template_distribution_protocol::monitors: Sleeping for 3881 milliseconds to reach the minimum interval
2026-03-23T18:22:29.053594Z DEBUG bitcoin_core_sv2::job_declaration_protocol::monitors: waitNext returned new template IPC client
2026-03-23T18:22:29.053728Z DEBUG bitcoin_core_sv2::job_declaration_protocol::monitors: Updated current_template_ipc_client with new template
2026-03-23T18:22:29.082202Z DEBUG bitcoin_core_sv2::job_declaration_protocol: Deserializing block (1842709 bytes)
2026-03-23T18:22:29.122202Z DEBUG jd_server_sv2::job_declarator::downstream: Received mining SV2 frame from downstream.
2026-03-23T18:22:29.125311Z  INFO jd_server_sv2::job_declarator::job_declaration_message_handler: Received: ProvideMissingTransactionsSuccess(request_id: 1046, transaction_list: Seq064K<len=3814: [02000000000103038490da7c30f7b3d9e1ea9110d51778bb7bd7d349814c466ce8ded0928819fd0000000000fdffffff1cbc458b5dd31546cd6946bd2c24bff6fba2e6c5dfa5e9a27b88a0524e27d64b0000000000fdffffffbbb1f76119084dc2ba3f974adea33c1bd3b15bd6af8092e76ba0881e85987f090600000000fdffffff010c433c040000000017a9145e26005492b1b14c136a997cc96c907593b7abaf8702473044022019fe395b4ff8c870bbc3499b81d811cae460b3fd7b35725ef7221223148ee422022069515758e6edf41be9f5ea17fba30e753b7d90238ff3bd522bece248b9a294c7012103e85b9512aee1e0fccdd36caf…<truncated 476 chars>, 020000000001052ab981fd19d52eddf7925f72c17d39d06fdbf4a631567d21e652cede755e60b50000000000fdffffffb57bbdf7fc536c74547e046f85fa7731b5c64115d8c502250f789fbe82d1c2f10000000000fdffffffc01a48d6ae4b95244df16e2add3692bd88cfc5811b03e053c6771c6f90e8e49e0000000000fdffffffc2cb308101a730f04ef6d25f4718bf3a22d9898725731ce14e770200c5c5b35d0100000000fdffffff7899fe8011e747c42f1f05379bda15950561188ca6e60a11efc0412ee54308410000000000fdffffff0181871f020000000017a9145e26005492b1b14c136a997cc96c907593b7abaf870248304502…<truncated 1072 chars>, … , 02000000000101e74781639b3b9ca8bbd43c0f88417a82495d3476ffbf53cce64a56f5190ef1be1d00000000fdffffff02641301000000000016001431f68e6005cec40be9a6ddacfa4d0065b611fbf0bc78010000000000160014112ae787c28919436dbb5f272fae5cd8e1f6cc9902483045022100b839a751c633c7af561a4a9b95b7e45a1b6b59c98c4daa9d7120be12a93e437502207c4d163856143b6353c25bfd65d6d5c6e8c133f1347e29512d92dcd8b544eb380121020359f207d166068a630ab20fd5725d5d0656f907687ff3ceb9d761c283e5e4fe00000000, 020000000001019c63d45968671a55308b5bf7d6f2f229ef987a30f81d9c206147860c2b99f4fd01000000000000008002d65a010000000000160014f0b9efe31d3187afbf673f902d75e4b8673453b87f9e030000000000160014cdbd0cb8d4be4370581283edc14c03a6c3627dfe02473044022046f666a546efe3877dc0b9c003ec7eb39f6591a3ac66c3c6187aeaa0015c5fed022020fec6b22f030378ceaab1b66e5ec4d6ec34acb25b20661b15909f424493512f012103ac8dcfb79af97822b1cfd65b248b96334d061bde77ca79e0eeee7ad74282e9f300000000])
2026-03-23T18:22:29.128318Z DEBUG jd_server_sv2::job_declarator::job_validation::bitcoin_core_ipc: Declared coinbase transaction validated successfully
2026-03-23T18:22:29.138304Z  INFO bitcoin_core_sv2::job_declaration_protocol::handlers: Validating DeclareMiningJob - version: Version(536870912), coinbase inputs: 1, outputs: 2, locktime: 941899
2026-03-23T18:22:29.138368Z DEBUG jd_server_sv2::job_declarator::downstream: Received mining SV2 frame from downstream.
2026-03-23T18:22:29.138418Z DEBUG bitcoin_core_sv2::job_declaration_protocol::handlers: Declared coinbase scriptSig: Script(OP_PUSHBYTES_3 4c5f0e OP_0 OP_PUSHBYTES_20 2f2f5376324d696e65725369676e61747572652f OP_PUSHBYTES_20 0000000000000000000000000000000000000000)
2026-03-23T18:22:29.150633Z  INFO bitcoin_core_sv2::job_declaration_protocol::handlers: Using prevhash: 0000000000000000000136974cb7c512c722b1f124242a2bc6c3ce461d725577, nbits: CompactTarget(386013841), min_ntime: 1774290149 from mempool mirror
2026-03-23T18:22:29.160208Z DEBUG bitcoin_core_sv2::job_declaration_protocol::handlers: Assembled block for checkBlock: 1563867 bytes, 3860 transactions
2026-03-23T18:22:29.181165Z DEBUG bitcoin_core_sv2::job_declaration_protocol::handlers: checkBlock returned: false
2026-03-23T18:22:29.181340Z ERROR bitcoin_core_sv2::job_declaration_protocol::handlers: Bitcoin Core rejected the block via checkBlock
2026-03-23T18:22:29.181366Z DEBUG bitcoin_core_sv2::job_declaration_protocol::handlers: Block details - version: Version(536870912), prev_blockhash: 0000000000000000000136974cb7c512c722b1f124242a2bc6c3ce461d725577, bits: CompactTarget(386013841), num_txs: 3860
2026-03-23T18:22:29.181380Z DEBUG bitcoin_core_sv2::job_declaration_protocol::handlers: Coinbase tx inputs: 1, outputs: 2
2026-03-23T18:22:29.181392Z DEBUG bitcoin_core_sv2::job_declaration_protocol::handlers: Block header time: 1774290149, merkle_root: 0000000000000000000000000000000000000000000000000000000000000000
2026-03-23T18:22:29.190848Z  INFO jd_server_sv2::job_declarator::job_declaration_message_handler: Received: ProvideMissingTransactionsSuccess(request_id: 1048, transaction_list: Seq064K<len=48: [02000000000101a964ac34bb68cbd0033f763412c728755a7c6f2835a9acac165e73b358236f892f00000000fdffffff020000000000000000076a5d04140114001e750000000000002251208b6fb422ef779b1d1f9df9529a6162df66289bd2255060e03e379235bd5b1b150140e9c92d31f1c87435f116862eb82b340288dcf7b88df8011fa2daaa2ba0115fe31f37dc1b8d6a5004b24197564c355a514f2248ab188b262a7ab37fa02075c8ac00000000, 02000000000101f2e2c09509c8eaaad2772ce3f29fa1e774ba8699b368ac0a8121259a53ce138f0100000000fdffffff030000000000000000076a5d0414011400220200000000000016001439de4202104d5fe08cb16d2d508a2e9cc9134053e0720000000000002251208b6fb422ef779b1d1f9df9529a6162df66289bd2255060e03e379235bd5b1b1503406687a3556d61023ef875cd1930e43487710554fa9560be0233ae64792c4f68a75bcddad550890ac835b9b306a579df79ce7a056dfc3b00e7bcae14ed238484ba6d202051e6a6916e2a94de9c88a9e1a6c592b292bef8c490284fa9725052a5c93422ac0063036f726401010a74…<truncated 206 chars>, … , 020000000001015bf55acadda3410dbbdbddf9a64f7f075b95a595e782eb4bee65a2f5f52b2d1c0200000000fdffffff030000000000000000096a5d061401140016024a01000000000000225120e86a7c3cac51c3fbf2ff5aad97cdae7e6b922f20d58121827d619b458c9dab7558550000000000002251208b6fb422ef779b1d1f9df9529a6162df66289bd2255060e03e379235bd5b1b15034062ab25780da35c427215f60ecc9a61ffc07ad34c759a78780bfae08b46ae09d1437af1474ee3c1bfd51e32844c3057e0eb06f7c7bfecd78f19627931c4b613676d202051e6a6916e2a94de9c88a9e1a6c592b292bef8c490284fa9725052a5…<truncated 234 chars>, 02000000000101c06ccf524e087a9edc36e33c94ea14768f554c27b5fedcfba43e89a59da072eb0200000000fdffffff030000000000000000096a5d061401140016024a01000000000000225120e86a7c3cac51c3fbf2ff5aad97cdae7e6b922f20d58121827d619b458c9dab75f0530000000000002251208b6fb422ef779b1d1f9df9529a6162df66289bd2255060e03e379235bd5b1b1503409355c7dc422971153e9b16f036fd771bfa40737eb021aa054c5699875fc3fe5b1ca09d0919cbb101cf318df106029cd32ffee1722ef33fcff911428958e207ed6d202051e6a6916e2a94de9c88a9e1a6c592b292bef8c490284fa9725052a5…<truncated 234 chars>])
2026-03-23T18:22:29.192195Z DEBUG jd_server_sv2::job_declarator::job_validation::bitcoin_core_ipc: Declared coinbase transaction validated successfully
2026-03-23T18:22:29.192541Z  INFO bitcoin_core_sv2::job_declaration_protocol::handlers: Validating DeclareMiningJob - version: Version(536870912), coinbase inputs: 1, outputs: 2, locktime: 941900
2026-03-23T18:22:29.192590Z DEBUG bitcoin_core_sv2::job_declaration_protocol::handlers: Declared coinbase scriptSig: Script(OP_PUSHBYTES_3 4d5f0e OP_0 OP_PUSHBYTES_20 2f2f5376324d696e65725369676e61747572652f OP_PUSHBYTES_20 0000000000000000000000000000000000000000)
2026-03-23T18:22:29.202022Z  INFO bitcoin_core_sv2::job_declaration_protocol::handlers: Using prevhash: 0000000000000000000136974cb7c512c722b1f124242a2bc6c3ce461d725577, nbits: CompactTarget(386013841), min_ntime: 1774290149 from mempool mirror
2026-03-23T18:22:29.208369Z DEBUG bitcoin_core_sv2::job_declaration_protocol::handlers: Assembled block for checkBlock: 1843107 bytes, 3266 transactions
2026-03-23T18:22:29.244354Z DEBUG bitcoin_core_sv2::job_declaration_protocol::handlers: checkBlock returned: true
2026-03-23T18:22:29.377365Z ERROR pool_sv2::io_task: Reader error error=SocketClosed
2026-03-23T18:22:29.377495Z  WARN pool_sv2::io_task: Reader task exited.
2026-03-23T18:22:29.377555Z  WARN pool_sv2::io_task: Outbound channel closed
2026-03-23T18:22:29.377568Z  WARN pool_sv2::io_task: Writer task exited.
2026-03-23T18:22:29.377631Z ERROR pool_sv2::downstream: Error handling downstream message for 3 e=PoolError { kind: ChannelRecv(RecvError), action: Disconnect(3), _owner: PhantomData<pool_sv2::error::Downstream> }
2026-03-23T18:22:29.377684Z DEBUG pool_sv2::status: Sending status from Downstream [3]: DownstreamShutdown { downstream_id: 3, reason: ChannelRecv(RecvError) }

sequence of events:

  • NewTemplate with template_id = 522
  • RequestTransactionData / .Success with template_id = 522
  • (I assume DeclareMiningJob for template_id = 522`, but apparently we're not logging when we send)
  • chain tip update
  • NewTemplate with template_id = 523
  • RequestTransactionData / .Success with template_id = 523
  • ProvideMissingTransactions with request_id = 1046 (which I assume is related to template_id = 522)
  • ProvideMissingTransactions with request_id = 1048 (which I assume is related to template_id = 523)

so this seems to be a race-condition:

JDC is sending a ProvideMissingTransactions for a stale custom job, which leads to a failed checkBlock against Bitcoin Core, because the UTXO set has changed


needed JDS fixes:

  • commit to a block header upon arrival of DeclareMiningJob
  • validate whether block header changed while evaluating ProvideMissingTransactions.Success, and return DeclareMiningJob.Error with error_code = stale-prev-hash in case JDS chain tip moved

needed JDC fixes:

  • avoid fallback in case of DeclareMiningJob.Error with error_code = stale-prev-hash

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

Status

Ready For Review 🔍

Status

Ready For Review 🔍

Relationships

None yet

Development

No branches or pull requests

Issue actions