Repository navigation
feat(dataset): add AntPool empty-block coinbase overpayments 494933 and 544568 - #34
Merged
Merged
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
While revisiting 0xB10C's AntPool & friends invalid mining jobs observation (where AntPool-template pools broadcast empty-block Stratum jobs that failed
bad-cb-amountby carrying over a prior template's coinbase payout amount), I audited all historical AuxPoW-recovered Bitcoin parent blocks with an emptycoinbase_merkle_branchagainstGetBlockSubsidy(height).That sweep surfaced two Namecoin AuxPoW proofs at child heights
370,986(bb4049c7…990c57bd) and420,298(4616d4db…d420a3402). Those proofs preserve the 80-byte Bitcoin parent header, raw Bitcoin parent coinbase transaction, and a zero-stepcoinbase_merkle_branchfor Bitcoin heights494,933(…c31a9382de1fced9,2017-11-18 14:37:54 UTC) and544,568(…52def7e220d202cd,2018-10-06 02:07:52 UTC).Because each AuxPoW proof's
coinbase_merkle_branchis empty ([]), the parent coinbasetxid(3ef8b25a…b07f4a00at494,933andcb818b5b…deae6df3at544,568) equals the 80-byte Bitcoin header'smerkle_rootdirectly. That proves both candidates are single-transaction empty blocks (vtx.size() == 1) with zero transaction fees, allowing exact reconstruction of the complete 329-byte serialized Bitcoin block (80-byte header +0x01transaction count +248-byte non-witness coinbase transaction) from the Namecoin AuxPoW record alone.Both blocks were mined by AntPool (
Mined by AntPoolhpaying1CyB8GJNEsNVXtPutB36nrDY3fMXBTzXSXat494,933;Mined by AntPool1Mpaying1Nh7uHdvY6fNwtQtM1G5EZAFPLC33B59rBat544,568) during the second subsidy epoch (420,000to629,999), whereGetBlockSubsidy(height)is1,250,000,000satoshis (12.5 BTC). Each coinbase instead claims2,500,000,000satoshis (25 BTC) invout[0], failingCheckBlock()(bad-cb-amount). They belong to the same empty-block coinbase-overpayment class as AntPool's height584,802(…beefb88f4c5fa5a69) and the later Stratum-observed incidents in 0xB10C's report, except that494,933and544,568paid a pre-2016-halving25 BTCvalue rather than a cached prior-block fee total. Both headers were previously listed as valid stale blocks inbitcoin-data/stale-blocks; bitcoin-data/stale-blocks#169 removes them fromstale-blocks.csv.Changes
blocks/494933-….binandblocks/544568-….bin: add the 329-byte reconstructed single-transaction block bodies (sha256b02f3521…e072723and855e7292…a7219b).data/invalid-blocks.jsonl: add catalogue entries for494933and544568underrule = "bad-cb-amount", attributed toAntPoolby coinbase tag, withnamecoin:370986andnamecoin:420298AuxPoW observations.docs/notes.mdandci/test_sanity_check.py: update theAntPool coinbase overpaymentsection (now three AntPool blocks:494933,544568,584802) and dataset count assertions (175blocks,128block files).Testing
Ran the unit test suite and repository sanity check against the reconstructed
.binfiles and JSONL records: