From 81de69773832001400ff43077fee6c180e9ff5f3 Mon Sep 17 00:00:00 2001 From: deadmanoz <62584182+deadmanoz@users.noreply.github.com> Date: Tue, 22 Sep 2026 12:10:37 +0800 Subject: [PATCH 1/2] feat(proofs): authenticate coinbases with AuxPoW merkle branches Add a second proof-file shape, the coinbase transaction with its sibling hashes to the merkle root, and bind coinbase_scriptsig_hex to the proved coinbase, which the record must carry. Body rules still require a body. Add proofs for every bodiless record with a coinbase extract: 38 from Namecoin AuxPoW records and 363731 placed by the archived dump's txid list. 649674 has no Bitcoin merkle path: its Hathor tree hashes the witness serialisation. --- README.md | 3 +- ci/block_evidence.py | 36 ++++-- ci/sanity-check.py | 23 ++-- ci/test_block_evidence.py | 34 +++++- ci/test_sanity_check.py | 22 +++- docs/notes.md | 13 +++ docs/schema.md | 23 +++- ...4cf50f1cace4ab76b0b4adb31010e10150708.json | 13 +++ ...1d2ed7e1f98b5b292e886d6ca62042bba2035.json | 12 ++ ...ec0a14cab2b65665f967b2527b61bb25e21bd.json | 12 ++ ...c2bb16dc48dfcf5542ddf86139e639ff51433.json | 13 +++ ...220fed2ef2ce55214d6fce868db21507ddc99.json | 13 +++ ...0b41ec317eeeaa5afc0a8df43c01180e57f7f.json | 14 +++ ...a3b2c0dd41f884586ad8de78356a0994e8960.json | 14 +++ ...51ff43ea70b8868d7373df9de771ca65b52c9.json | 13 +++ ...399bea2abab0f8b8a82d070ac0db40a06b3cb.json | 13 +++ ...5db3e3dbe91cbe0294e532f8a32574d5b997d.json | 13 +++ ...f3610843d170594eac75cc8a0e16390ba9559.json | 12 ++ ...e222fad8e73e465b905e333ada1662c61e0e0.json | 8 ++ ...829f13c94bbafb35022f13e49ffff279e3f03.json | 15 +++ ...fe0e8d0aea3b2f35e758ef1e73e153169fa58.json | 15 +++ ...9c8c1bc1570f99a943bc1575b20e16d77a18c.json | 15 +++ ...0e93f1274226980cc0893dcaa9dd9e1187f95.json | 15 +++ ...5b02ab401077bdc470d082e3da34276925cc8.json | 15 +++ ...95323699886784960f68a04f4a4871b61caa8.json | 15 +++ ...a2b268cb9a54c5de6d21f97d17c6b0ff0ac3f.json | 14 +++ ...7fce43da835bd26ccec95ed0d39570a51112a.json | 4 + ...eed6b9494d54121f05f7a3905f940f0e0cf69.json | 4 + ...02cab156f333f2bfc172de9e6d87359118a1a.json | 4 + ...5b40b2cd4eb83dd498c12ad0d26d90c439d99.json | 104 ++++++++++++++++++ ...1e79e8261137548fa9ccf4d516bb384a3660b.json | 15 +++ ...8b6cbc3ea485921a05f2c4340f928b0226d3c.json | 15 +++ ...bb018c7db642e30391748860cbfa5803a32a4.json | 15 +++ ...620224e6893448a9001d2b1f236ede0423779.json | 15 +++ ...b7600a2966de1b79230c74212d9c45a91a50b.json | 4 + ...487157d2950081413eb9d2dca82060f1b89b2.json | 16 +++ ...97419cc4bdb5d70b90189b8f8a06b0b37e3a2.json | 4 + ...3f0bcd3c3564db07e7c35631e999d53e81fa7.json | 4 + ...63e7e3ecda8e35e6d6ecce4d5693cec1f1918.json | 16 +++ ...44a9e525bc03a5cd2e138a8ae684445fa6ed8.json | 17 +++ ...98bfc9f528f9a47e6062ebe8a01177af25d21.json | 16 +++ ...603cb6a068ad236f925255a491124b5c5dc8a.json | 17 +++ ...bf46b4cd6c6f8f4004c149cd602e4e356e71c.json | 4 + ...4e756df07ce08d848df0ca0bbd9884af393ed.json | 18 +++ ...bdc068dfe0c6d1e7ad13045c6f570e58d9ed7.json | 17 +++ ...2edbe83c84a78f75b3f8d67a3fe2075ef2ffb.json | 18 +++ 46 files changed, 710 insertions(+), 25 deletions(-) create mode 100644 proofs/225013-000000000000037f2cc0769d4244cf50f1cace4ab76b0b4adb31010e10150708.json create mode 100644 proofs/225015-000000000000015437122b60d0a1d2ed7e1f98b5b292e886d6ca62042bba2035.json create mode 100644 proofs/225134-00000000000003abc9b545f105aec0a14cab2b65665f967b2527b61bb25e21bd.json create mode 100644 proofs/225145-00000000000001a3aa38003bb99c2bb16dc48dfcf5542ddf86139e639ff51433.json create mode 100644 proofs/225221-0000000000000386f943ff46dbf220fed2ef2ce55214d6fce868db21507ddc99.json create mode 100644 proofs/225430-00000000000001468e0b21b62cd0b41ec317eeeaa5afc0a8df43c01180e57f7f.json create mode 100644 proofs/225430-000000000000017c4a0a7be4244a3b2c0dd41f884586ad8de78356a0994e8960.json create mode 100644 proofs/225464-0000000000000085a485d05c96051ff43ea70b8868d7373df9de771ca65b52c9.json create mode 100644 proofs/226230-000000000000004cf2026785b16399bea2abab0f8b8a82d070ac0db40a06b3cb.json create mode 100644 proofs/226845-00000000000000c37c3327de7555db3e3dbe91cbe0294e532f8a32574d5b997d.json create mode 100644 proofs/226895-000000000000030a6d0a4a0c91af3610843d170594eac75cc8a0e16390ba9559.json create mode 100644 proofs/226912-00000000000000a34d399a3cb82e222fad8e73e465b905e333ada1662c61e0e0.json create mode 100644 proofs/229388-00000000000000329b2b44eca61829f13c94bbafb35022f13e49ffff279e3f03.json create mode 100644 proofs/229388-000000000000008af04b94d8286fe0e8d0aea3b2f35e758ef1e73e153169fa58.json create mode 100644 proofs/229388-00000000000001365d20401c25e9c8c1bc1570f99a943bc1575b20e16d77a18c.json create mode 100644 proofs/229388-00000000000001fb5262fee5a4b0e93f1274226980cc0893dcaa9dd9e1187f95.json create mode 100644 proofs/229388-0000000000000239bfc9b6f400b5b02ab401077bdc470d082e3da34276925cc8.json create mode 100644 proofs/229388-000000000000024fc7ce00ec89295323699886784960f68a04f4a4871b61caa8.json create mode 100644 proofs/277975-0000000000000000de6f0b2978aa2b268cb9a54c5de6d21f97d17c6b0ff0ac3f.json create mode 100644 proofs/331673-000000000000000010bcbb75dc17fce43da835bd26ccec95ed0d39570a51112a.json create mode 100644 proofs/331674-00000000000000000d610e393ffeed6b9494d54121f05f7a3905f940f0e0cf69.json create mode 100644 proofs/331735-000000000000000010d43fb3f8d02cab156f333f2bfc172de9e6d87359118a1a.json create mode 100644 proofs/363731-0000000000000000009cc829aa25b40b2cd4eb83dd498c12ad0d26d90c439d99.json create mode 100644 proofs/363967-00000000000000000954ed93eda1e79e8261137548fa9ccf4d516bb384a3660b.json create mode 100644 proofs/364341-000000000000000012aac0664cd8b6cbc3ea485921a05f2c4340f928b0226d3c.json create mode 100644 proofs/367047-00000000000000000f93ba8faf8bb018c7db642e30391748860cbfa5803a32a4.json create mode 100644 proofs/380992-0000000000000000084ee972bfe620224e6893448a9001d2b1f236ede0423779.json create mode 100644 proofs/383540-000000000000000009c55c7e380b7600a2966de1b79230c74212d9c45a91a50b.json create mode 100644 proofs/389043-00000000000000000306ea979ad487157d2950081413eb9d2dca82060f1b89b2.json create mode 100644 proofs/402610-000000000000000003a1ce220ae97419cc4bdb5d70b90189b8f8a06b0b37e3a2.json create mode 100644 proofs/422059-00000000000000000254ed1e8143f0bcd3c3564db07e7c35631e999d53e81fa7.json create mode 100644 proofs/543804-0000000000000000000c958fe3563e7e3ecda8e35e6d6ecce4d5693cec1f1918.json create mode 100644 proofs/544024-0000000000000000001ac59b46b44a9e525bc03a5cd2e138a8ae684445fa6ed8.json create mode 100644 proofs/544024-0000000000000000001ffb5988298bfc9f528f9a47e6062ebe8a01177af25d21.json create mode 100644 proofs/544600-000000000000000000188a6aecb603cb6a068ad236f925255a491124b5c5dc8a.json create mode 100644 proofs/717696-0000000000000000000045c5040bf46b4cd6c6f8f4004c149cd602e4e356e71c.json create mode 100644 proofs/789038-0000000000000000000291349d44e756df07ce08d848df0ca0bbd9884af393ed.json create mode 100644 proofs/946213-00000000000000000000c3d95a4bdc068dfe0c6d1e7ad13045c6f570e58d9ed7.json create mode 100644 proofs/957780-0000000000000000000198e12592edbe83c84a78f75b3f8d67a3fe2075ef2ffb.json diff --git a/README.md b/README.md index 0df8d3c..93daef0 100644 --- a/README.md +++ b/README.md @@ -13,7 +13,7 @@ This dataset covers blocks that fail those rules, including failures that can be - [`docs/schema.md`](docs/schema.md): fields and admission rules. - [`docs/notes.md`](docs/notes.md): replay behaviour and incident notes. - `blocks/{height}-{hash}.bin`: full block, when available. -- `proofs/{height}-{hash}.json`: for a P2SH record without a body, the failing transaction and the block's ordered transaction IDs. +- `proofs/{height}-{hash}.json`: for a record without a body, one transaction authenticated against the header by the block's ordered transaction IDs or, for a coinbase, by its merkle branch. - [`data/reported-blocks.jsonl`](data/reported-blocks.jsonl): blocks reported as invalid whose failure is not established. Merge-mined recoveries generally provide a header and coinbase rather than a full Bitcoin block. @@ -25,6 +25,7 @@ Include the 80-byte header, its decoded hash, parent hash and timestamp, height The header must meet the PoW target encoded in its `nBits`. Include `context` fields needed to establish the failure: BIP34 coinbase height and scriptSig, `parent_mtp` for `time_below_mtp`, or `expected_nbits` for `nbits_retarget_not_applied`. +When the coinbase comes from an AuxPoW record, add a proof file with the coinbase and its merkle branch so CI can bind the scriptSig to the header. Omit unknown optional fields. When the pool is known, give `pool` with `pool_basis`: `tag` for a coinbase tag, `address` for a payout address listed in [mining-pools](https://github.com/bitcoin-data/mining-pools), or `reported` when only a contemporaneous report names the pool. diff --git a/ci/block_evidence.py b/ci/block_evidence.py index 5a2ca4b..0d17d3b 100644 --- a/ci/block_evidence.py +++ b/ci/block_evidence.py @@ -3,8 +3,8 @@ This is not a consensus validator: no UTXO lookup or historical chain reconstruction takes place here, and the only script execution is the library's evaluation of one named input for the P2SH rule. -Transaction IDs and the merkle root bind the checked non-witness data to the -Bitcoin header. Parsing consumes the entire file so truncation cannot satisfy +A block's transaction IDs, or a coinbase's merkle branch, and the merkle root +bind the checked non-witness data to the Bitcoin header. Parsing consumes the entire file so truncation cannot satisfy a rule's requirement for a complete block body. Sigop counting mirrors Core's CScript::GetSigOpCount, GetTransactionSigOpCost @@ -134,14 +134,36 @@ def checked_txids(txids: object, header: CBlockHeader) -> list[str]: return txids +def checked_branch(branch: object) -> list[bytes]: + """Require a list of 64-hex sibling hashes, returned in internal byte order; empty for a single-transaction block.""" + if not isinstance(branch, list) or any(not isinstance(node, str) or not HEX64.fullmatch(node) for node in branch): + raise ValueError("merkle_branch must be an array of 64-hex strings") + return [lx(node) for node in branch] + + def read_proof(data: bytes, header: CBlockHeader) -> CTransaction: - """Read a transaction and the ordered txid list that places it in the header's block.""" + """Read one transaction placed in the header's block by a proof file. + + `txids` places any transaction through the block's complete ordered txid + list. `merkle_branch` places a coinbase through the sibling hashes from + index 0 up to the merkle root, as AuxPoW records carry it; only index 0 + has an unambiguous path without a position field. + """ proof = json.loads(data) - if not isinstance(proof, dict) or set(proof) != {"transaction", "txids"}: - raise ValueError("proof must be an object with transaction and txids") + if not isinstance(proof, dict) or set(proof) not in ({"transaction", "txids"}, {"transaction", "merkle_branch"}): + raise ValueError("proof must be an object with transaction and either txids or merkle_branch") tx = read_transaction(bytes.fromhex(proof["transaction"])) - if b2lx(tx.GetTxid()) not in checked_txids(proof["txids"], header): - raise ValueError("proof transaction is not in the block's txid list") + if "txids" in proof: + if b2lx(tx.GetTxid()) not in checked_txids(proof["txids"], header): + raise ValueError("proof transaction is not in the block's txid list") + return tx + if not tx.is_coinbase(): + raise ValueError("merkle_branch proof requires a coinbase transaction") + node = tx.GetTxid() + for sibling in checked_branch(proof["merkle_branch"]): + node = sha256d(node + sibling) + if node != header.hashMerkleRoot: + raise ValueError("coinbase merkle branch does not reproduce the header's merkle root") return tx diff --git a/ci/sanity-check.py b/ci/sanity-check.py index 4a947ce..3e75886 100644 --- a/ci/sanity-check.py +++ b/ci/sanity-check.py @@ -308,7 +308,7 @@ def check_local_evidence(record: dict[str, Any], header: CBlockHeader) -> None: """Check the named rule against header and context already in the record. Parent MTP, expected nBits and parent_kind are not looked up on the chain. - Without a body, a coinbase scriptSig cannot be bound to the header. + Without a body or a coinbase proof, a coinbase scriptSig cannot be bound to the header. """ rule = record["rule"] context = record.get("context", {}) @@ -366,7 +366,7 @@ def check_failure_evidence(record: dict[str, Any], block: CBlock | None, prevout """Require a checked failure; observations cannot substitute for bytes.""" mode = RULES[record["rule"]][2] if proof is not None and mode != "p2sh": - raise ValueError("proof files apply only to the P2SH rule") + raise ValueError("spend proofs apply only to the P2SH rule") if mode == "local": return if block is None and proof is None: @@ -467,7 +467,7 @@ def check_dataset(path: Path | str = DATA_PATH, blocks_dir: Path | str = BLOCKS_ context_count += bool(record.get("context")) observation_count += check_observations(record) check_local_evidence(record, parsed_header) - evidence_block = None + evidence_block = coinbase = proof_transaction = None if block is not None: data = block.read_bytes() if data[:80] != header: @@ -475,15 +475,22 @@ def check_dataset(path: Path | str = DATA_PATH, blocks_dir: Path | str = BLOCKS_ evidence_block = read_block(data) if height >= 481824: verify_witness_commitment(evidence_block) - details = record.get("context", {}) - if "coinbase_scriptsig_hex" in details: - if evidence_block.vtx[0].vin[0].scriptSig.hex() != details["coinbase_scriptsig_hex"]: - raise ValueError("coinbase scriptSig does not match context") - proof_transaction = None + coinbase = evidence_block.vtx[0] if proof is not None: if block is not None: raise ValueError("a record has either a block body or a proof file, not both") + # A proved coinbase binds the record's coinbase context; a proved + # spend is rule evidence and is checked with the failure. proof_transaction = read_proof(proof.read_bytes(), parsed_header) + if proof_transaction.is_coinbase(): + coinbase = proof_transaction + proof_transaction = None + if "coinbase_scriptsig_hex" not in record.get("context", {}): + raise ValueError("coinbase proof requires coinbase_scriptsig_hex in context") + details = record.get("context", {}) + scriptsig = details.get("coinbase_scriptsig_hex") + if coinbase is not None and scriptsig is not None and coinbase.vin[0].scriptSig.hex() != scriptsig: + raise ValueError("coinbase scriptSig does not match context") check_failure_evidence(record, evidence_block, prevouts_dir, fetch_prevouts, apis, proof_transaction) except (OSError, ValueError) as exc: problems.append(f"{where}: {exc}") diff --git a/ci/test_block_evidence.py b/ci/test_block_evidence.py index 96fee66..1a0026b 100644 --- a/ci/test_block_evidence.py +++ b/ci/test_block_evidence.py @@ -1,13 +1,14 @@ """Block parsing, commitments and sigop counting without mining or API access.""" +import json import unittest -from bitcoin.core import CBlock, COutPoint, CTransaction, CTxIn, CTxOut, CTxWitness, CTxInWitness, b2lx +from bitcoin.core import CBlock, CBlockHeader, COutPoint, CTransaction, CTxIn, CTxOut, CTxWitness, CTxInWitness, b2lx from bitcoin.core.script import CScript, CScriptWitness, OP_TRUE from block_evidence import ( MAX_MONEY, coinbase_amounts, confirmed_at_or_after, establishes_rule, omitted_prevouts, p2sh_spend_fails, read_block, - read_transaction, reuses_parent_transaction, sha256d, sigop_count, witness_sigops, + read_proof, read_transaction, reuses_parent_transaction, sha256d, sigop_count, witness_sigops, ) # The 123-byte spend included by 89 blocks in April to July 2012, and the transaction that funded it. @@ -38,6 +39,16 @@ def block(*transactions): return bytes(36) + root + bytes(12) + bytes([len(transactions)]) + b"".join(wire for wire, _ in transactions) +def coinbase_branch(txids): + """Sibling hashes from the coinbase up to the merkle root, in RPC/display order, from the library's full tree.""" + tree = CBlock.build_merkle_tree_from_txids(txids) + branch, offset, width = [], 0, len(txids) + while width > 1: + branch.append(b2lx(tree[offset + 1])) + offset, width = offset + width, (width + 1) >> 1 + return branch + + class BlockEvidenceChecks(unittest.TestCase): def test_overflow_boundary(self): """Only outputs above MAX_MONEY establish the output-too-large failure.""" @@ -120,6 +131,25 @@ def test_parent_transaction_reuse_excludes_coinbases_and_absent_transactions(sel with self.subTest(case=name): self.assertEqual(reuses_parent_transaction(body, parent, witness), expected) + def test_coinbase_branch_proof_places_only_a_coinbase_at_index_zero(self): + """A branch of siblings from the coinbase reproduces the root; a wrong sibling or a non-coinbase transaction does not.""" + coinbase, spend, other = transaction(), transaction(prev_hash=b"\x11" * 32, vout=0), transaction(prev_hash=b"\x22" * 32, vout=0) + body = block(coinbase, spend, other) + header = CBlockHeader.deserialize(body[:80]) + branch = coinbase_branch([sha256d(stripped) for _, stripped in (coinbase, spend, other)]) + proof = {"transaction": coinbase[0].hex(), "merkle_branch": branch} + self.assertTrue(read_proof(json.dumps(proof).encode(), header).is_coinbase()) + with self.subTest(case="single-transaction block"): + single = CBlockHeader.deserialize(block(coinbase)[:80]) + self.assertTrue(read_proof(json.dumps(dict(proof, merkle_branch=[])).encode(), single).is_coinbase()) + cases = ( + ("wrong sibling", dict(proof, merkle_branch=branch[::-1]), "does not reproduce"), + ("spend with a branch", dict(proof, transaction=spend[0].hex()), "requires a coinbase"), + ) + for case, content, error in cases: + with self.subTest(case=case), self.assertRaisesRegex(ValueError, error): + read_proof(json.dumps(content).encode(), header) + class CoinbaseAmountChecks(unittest.TestCase): def test_subsidy_boundaries(self): diff --git a/ci/test_sanity_check.py b/ci/test_sanity_check.py index 2c2f9cd..8d7ecf0 100644 --- a/ci/test_sanity_check.py +++ b/ci/test_sanity_check.py @@ -10,7 +10,7 @@ from bitcoin.core import CBlock, CBlockHeader -from test_block_evidence import P2SH_FUNDING +from test_block_evidence import P2SH_FUNDING, coinbase_branch SPEC = importlib.util.spec_from_file_location("sanity_check", Path(__file__).with_name("sanity-check.py")) CHECK = importlib.util.module_from_spec(SPEC) @@ -258,6 +258,26 @@ def test_p2sh_proof_stands_in_for_a_missing_body(self): (self.root / "proofs" / f"{body['height']}-{body['hash']}.json").write_text(json.dumps(proof)) self.assertTrue(any("not both" in p for p in self.validate([self.record, body]))) + def test_coinbase_proof_binds_context_without_standing_in_for_a_body(self): + """A proved coinbase admits a header rule and binds its scriptSig; it is not body evidence.""" + self.record = self.for_height(363967) + self.copy_evidence(self.record, "proof") + self.assertEqual(self.validate(), []) + # Keep the BIP34 prefix intact so the binding check, not the height decode, reports the difference. + altered = self.record["context"]["coinbase_scriptsig_hex"] + "00" + with self.subTest(case="wrong scriptSig"), patch.dict(self.record["context"], {"coinbase_scriptsig_hex": altered}): + self.assertTrue(any("coinbase scriptSig does not match" in p for p in self.validate())) + with self.subTest(case="nothing to bind"): + self.record["context"].pop("coinbase_scriptsig_hex") + self.assertTrue(any("requires coinbase_scriptsig_hex" in p for p in self.validate())) + with self.subTest(case="body rule"): + body_rule = self.for_rule("bad-txns-vout-toolarge") + block = CBlock.deserialize((CHECK.BLOCKS_DIR / f"{body_rule['height']}-{body_rule['hash']}.bin").read_bytes()) + proof = {"transaction": block.vtx[0].serialize().hex(), + "merkle_branch": coinbase_branch([tx.GetTxid() for tx in block.vtx])} + (self.root / "proofs" / f"{body_rule['height']}-{body_rule['hash']}.json").write_text(json.dumps(proof)) + self.assertTrue(any("requires a complete block body" in p for p in self.validate([body_rule]))) + def test_reported_ledger(self): """The real ledger passes; an admitted hash, a header that does not hash to its record, empty sources, disorder and a duplicate are rejected.""" rows = [json.loads(line) for line in CHECK.REPORTED_PATH.read_text().splitlines()] diff --git a/docs/notes.md b/docs/notes.md index 51d4a21..d7ed862 100644 --- a/docs/notes.md +++ b/docs/notes.md @@ -17,9 +17,22 @@ A node that already stores them returns `duplicate`, and only a node that attemp Most `pool` values are coinbase tags. The records below attribute a pool another way, and `pool_basis` says which. 363731 (BTC Nuggets) and 363967 (Bitsolo) are attributed by payout address: 363967's coinbase, recovered from the AuxPoW record in Namecoin block 237930, carries no tag and pays `18zRehBcA2YkYvsC7dfQiFJNyjmWvXsvon`, the address [mining-pools](https://github.com/bitcoin-data/mining-pools/blob/af720b67faa2f157264db33c644eb1b0fa95af5f/pools/bitsolo.json) lists for Bitsolo; 363731 is covered in its own note below. +The coinbases of 363967, 946213 and 957780 are authenticated by coinbase proofs built from the AuxPoW records in Namecoin blocks 237930, 821553 and 833329, so the Bitsolo address and the `/F2Pool/` tags are read from transactions the headers commit to. +The two F2Pool coinbases pay 3.20191623 and 3.14128765 BTC in total, the 3.125 BTC subsidy plus fees, with all but a 546-satoshi output going to `1AfCc4F9c4VTYSE31PUe2kUEKs6ZxiDjxm`. 474294 and 477115 are attributed to 1Hash from the [BitcoinTalk thread](https://bitcointalk.org/index.php?topic=2041607.0) of July 2017 that discussed both blocks; their coinbases carry `/NYA/` and no pool tag. 226845, 226895 and 226912 are attributed to mmpool, Chris Double's [Bitparking merged-mining pool](https://bitcointalk.org/index.php?topic=57148.0) at mmpool.bitparking.com, from his [20 March 2013 post](https://bitcointalk.org/index.php?topic=57148.msg1646921#msg1646921) in that thread reporting three invalidated blocks that day, and the [bitcoin-dev log](https://buildingbitcoin.org/bitcoin-dev/log-2013-03-20.html) of the same day, where he reports the `block height mismatch in coinbase` rejection and names 226845; the later 367047 carries the `mmpool` tag itself. +## Coinbase proofs + +Merge-mined recoveries supply a header and a coinbase extract, and until the coinbase is placed in the block that extract is only a claim. +Every record with `coinbase_scriptsig_hex` and no body now has a proof file except 649674: 38 coinbases with their merkle branches from the AuxPoW records in Namecoin blocks, read from a Namecoin Core node by the child block hash in each record's `merge_mining` observation, and 363731's coinbase reserialised from the pinned blockchain.info dump and placed by that dump's 99 txids. +CI reproduces each header's merkle root from the proof and requires the context scriptSig to equal the proved one, so every `tag` and `address` attribution in the dataset is read from bytes the header commits to. + +649674 has no Bitcoin merkle path. +Its Hathor block carries the coinbase and a twelve-hash path, and that path reproduces the header's merkle root only when the leaf is the double-SHA256 of the coinbase's full witness serialisation rather than its txid: the pool's merged-mining code built the tree from the wrong hash. +A Bitcoin node given the block would fail `CheckBlock` with `bad-txnmrklroot` before reaching the coinbase-height check the dataset records. +The scriptSig therefore stays an extract, bound to the header only through that non-standard tree, and the second failure is not registered as a rule. + ## Reported blocks `data/reported-blocks.jsonl` keeps ten blocks that were reported as invalid but cannot be admitted. diff --git a/docs/schema.md b/docs/schema.md index 239e395..28d775b 100644 --- a/docs/schema.md +++ b/docs/schema.md @@ -18,7 +18,7 @@ Omit unknown or inapplicable optional fields instead of writing `null` or empty Hex strings are lowercase without `0x`. Bitcoin hashes use RPC/display byte order with leading zeros; `header` is the 160-character wire serialization. Full blocks, when available, are `blocks/{height}-{hash}.bin`. -A P2SH record without a body carries `proofs/{height}-{hash}.json` instead. +A record without a body may carry `proofs/{height}-{hash}.json`, one transaction authenticated against the header by the block's ordered txids or, for a coinbase, by its merkle branch (see [Proof files](#proof-files)). Blocks whose failure was reported but never established are listed separately in `data/reported-blocks.jsonl`, described at the end of this document; they are not part of the dataset's admitted records. ## Required fields @@ -44,7 +44,7 @@ Context is shared across observations; adding another witness does not duplicate | `expected_nbits` | string | Canonical compact target as eight hex characters. Required for `nbits_retarget_not_applied`. | | `parent_mtp` | integer | Parent median-time-past, the median of eleven block timestamps, in Unix seconds. Required for `time_below_mtp`. | | `coinbase_height` | integer | Height decoded from the BIP34 scriptSig prefix. Required for a BIP34 height mismatch and `already_confirmed_in_parent`. | -| `coinbase_scriptsig_hex` | string | Coinbase input scriptSig. Required for BIP34 failures, `coinbase_scriptsig_length_above_100` and `already_confirmed_in_parent`. | +| `coinbase_scriptsig_hex` | string | Coinbase input scriptSig. Required for BIP34 failures, `coinbase_scriptsig_length_above_100` and `already_confirmed_in_parent`. Checked against the coinbase whenever a body or a coinbase proof is present; otherwise it is an asserted extract. | | `pool` | string | Pool the block is attributed to, when known. Requires `pool_basis`. | | `pool_basis` | string | How the pool was identified: `tag` when the coinbase scriptSig carries the pool's name or a tag [mining-pools](https://github.com/bitcoin-data/mining-pools) lists for it, `address` when the coinbase payout address is listed for the pool in [mining-pools](https://github.com/bitcoin-data/mining-pools), or `reported` when only a contemporaneous report names the pool. Required whenever `pool` is present and not allowed otherwise. Descriptive: CI checks the value, not the attribution. | | `parent_kind` | string | Chain status of the previous block: `canonical`, `stale`, or `invalid`. `invalid` means the previous block is in this dataset. Descriptive, except that the rules which look up the canonical block at the previous height (`missing_unconfirmed_parent`, `already_confirmed_in_parent`) reject any other value. | @@ -152,7 +152,7 @@ At or after mainnet SegWit activation, witness data must match the coinbase witn The validator also checks JSONL structure, field types, decoded Bitcoin header identity, compact target and PoW, ordering, uniqueness and observation fields. Locally checked predicates establish consistency with the supplied context. -Review must still establish the block height, parent MTP, expected difficulty, historical activation state, chain status where no canonical lookup is required, and the connection between an extracted coinbase script and its header when no complete body is available. +Review must still establish the block height, parent MTP, expected difficulty, historical activation state, chain status where no canonical lookup is required, and the connection between an extracted coinbase script and its header when neither a complete body nor a coinbase proof is available. The retarget check does not reconstruct the previous difficulty or prove that it was reused. CI does not execute scripts, validate child-chain commitments, reconstruct historical chain state or fetch observation provenance. It verifies the named failures, not every consensus rule or the exact first rejection a historical node would return. @@ -257,9 +257,20 @@ CI finds the one input that spends it, in the body or in the proof file's transa An input that fails without P2SH is an error rather than evidence. This evaluates one input with a library interpreter; it is not Bitcoin Core's interpreter and does not validate the other inputs in the block. -A record without a body may carry `proofs/{height}-{hash}.json`: an object with `transaction`, the hex of the failing transaction, and `txids`, the block's complete ordered transaction IDs. -The list must reproduce the header's merkle root and contain the transaction's txid, which binds the transaction to the header without its other bodies; the input is then checked exactly as for a body. -A record has a body or a proof file, not both, and a proof file for any other rule is an error. +A record without a body may carry a proof file holding the failing transaction and the block's ordered txids, described under [Proof files](#proof-files); the input is then checked exactly as for a body. + +## Proof files + +`proofs/{height}-{hash}.json` authenticates one transaction of a block whose body is not available. +It is a JSON object with `transaction`, the hex of the transaction, and one placement: + +- `txids`, the block's complete ordered transaction IDs, which must reproduce the header's merkle root and contain the transaction's txid. This places any transaction: a P2SH spend admitted without its body, or a coinbase where an archived explorer dump preserved the block's txid list. +- `merkle_branch`, the sibling hashes from the transaction up to the merkle root in RPC/display byte order, empty for a single-transaction block. Hashing the txid with each sibling in turn must reproduce the header's merkle root. Only index 0 has an unambiguous path without a position field, so this shape requires a coinbase transaction. AuxPoW records carry exactly this branch for the parent coinbase, which is how merge-mined recoveries authenticate a coinbase they never saw in a Bitcoin block. + +A proved spend is rule evidence and applies only to `p2sh_redeem_script_failure`. +A proved coinbase is not rule evidence: body rules still require a body, and a header rule is checked from header and context as before. +What it adds is binding: the record must carry `coinbase_scriptsig_hex`, and it must equal the proved coinbase's scriptSig, so a BIP34, coinbase-length or attribution claim rests on bytes committed to by the header rather than on an extract copied from a child chain. +A record has a body or a proof file, not both. ## Reported blocks diff --git a/proofs/225013-000000000000037f2cc0769d4244cf50f1cace4ab76b0b4adb31010e10150708.json b/proofs/225013-000000000000037f2cc0769d4244cf50f1cace4ab76b0b4adb31010e10150708.json new file mode 100644 index 0000000..6023302 --- /dev/null +++ b/proofs/225013-000000000000037f2cc0769d4244cf50f1cace4ab76b0b4adb31010e10150708.json @@ -0,0 +1,13 @@ +{ + "transaction": "01000000010000000000000000000000000000000000000000000000000000000000000000ffffffff35044bd7031a0173522cfabe6d6d5f96eead5ea22511ec2950557d0834f76cd860bbee47f1d5bb386270d4f183b80800000000000000ffffffff01c1d89495000000002321027bd2807348f8a9be65ca298875e8ac1ba736c47489d062a4f1f78493f1a2d8a5ac00000000", + "merkle_branch": [ + "bede06d48cbd26b525cf9ba8b02222e34a7bb1aba68c8d96cbbd7f6a8d2da4fe", + "e59feebf7105257eb0e22db103950d5dd181b5f0531c448b296aee49a82f5e60", + "5b91c39dc45fbac5be016772bbcc6b17803e4f9a4e21a1d0521563034c556d06", + "34a6e3bbb167a53fbe2de0036116ccafb8c8af3d0bacc0f8070b200f62996774", + "c086b1605bd31986179c25fe5f8622579b6c30448519bada0d8a93fd14b3ee02", + "0b57387f8e1c16ec6c31b82e6fe3f9eadc64c1c1e5aaaf29659249ec451873cf", + "028803cc8b31e611b2cfe799a7cfd754581cf833221e99549dee6f0cff594b05", + "db094822903870eb39c8b4b55dd51a0b1f497bf9bb4019bfc77c74d9e021408c" + ] +} diff --git a/proofs/225015-000000000000015437122b60d0a1d2ed7e1f98b5b292e886d6ca62042bba2035.json b/proofs/225015-000000000000015437122b60d0a1d2ed7e1f98b5b292e886d6ca62042bba2035.json new file mode 100644 index 0000000..5725dc6 --- /dev/null +++ b/proofs/225015-000000000000015437122b60d0a1d2ed7e1f98b5b292e886d6ca62042bba2035.json @@ -0,0 +1,12 @@ +{ + "transaction": "01000000010000000000000000000000000000000000000000000000000000000000000000ffffffff36044bd7031a025001522cfabe6d6d43629863b5b1d5de8916a8bd7cbd1918bc6543e246e7ba6e55bf745dcb513e2f0800000000000000ffffffff01c1551895000000002321027a7ba66f756b3df975931e20d30a282ebcc7f2bbc953a88499d06cdf1324f2eaac00000000", + "merkle_branch": [ + "372ef65773730a7bf4b325d1ef7bd25cfb3b10d3fb0fedc06ffe4d8f4316dd57", + "d0d8dbf43b13587b67c85829816a95c813c80e57dc9368fd9cdc82c5aeeda583", + "6107aec6244821d503125803da7651e33ee203f44b2410db10b58457fb3758da", + "10ee3503d735103f51198037208e07fd75a1efe8d8e5d876cb82e23063cb4dca", + "e74059609b8501f5151d291eb8b9f141d8adf06f54a1cf604eb60b6a908c325b", + "0bcec50e134ca9253a40879b08c8669e31d676bb1f9651f8079275b7529b48b8", + "2da6588946b0395dfea91a6cc12602cec08c3a9f1e397a35d6d2da7dffb43bef" + ] +} diff --git a/proofs/225134-00000000000003abc9b545f105aec0a14cab2b65665f967b2527b61bb25e21bd.json b/proofs/225134-00000000000003abc9b545f105aec0a14cab2b65665f967b2527b61bb25e21bd.json new file mode 100644 index 0000000..3736367 --- /dev/null +++ b/proofs/225134-00000000000003abc9b545f105aec0a14cab2b65665f967b2527b61bb25e21bd.json @@ -0,0 +1,12 @@ +{ + "transaction": "01000000010000000000000000000000000000000000000000000000000000000000000000ffffffff35044bd7031a0163522cfabe6d6dbc4328f620ad2dc10be02522a7cc7f0ae498b549888f50859690fece2d306b320800000000000000ffffffff01506465950000000023210300b9774d31b2b7c13fddd7ee1d31cc6f788509bc32aeb3747aed8facb351f20eac00000000", + "merkle_branch": [ + "15590c8f4f2833fa4d8a083b5e2d5195fe6da925fbe79118f066650d01e3ee03", + "61b07dd83b83de64cb4491d4ab3053c9ce5d4c8da46d670b34f537c412f40e2d", + "fc1d63901bcf0b0eb179e782e15f87c964952766d8ce73bb36e203d7f9ddcf11", + "3b4e62d2a498a62b3822ec562793e4751ca16140388473666527422e1304e4e0", + "f7f8e8a63a425450149b9f77325340f1a1f6694bb3557cb8b8d6803bdd111d00", + "1ed1546a88213c2b039e1119b42d66d0de478d948c216de1f88f00dab473314b", + "be31241d405ce302ffd91072f5a58d497c6b3b91351380723d73de761a307317" + ] +} diff --git a/proofs/225145-00000000000001a3aa38003bb99c2bb16dc48dfcf5542ddf86139e639ff51433.json b/proofs/225145-00000000000001a3aa38003bb99c2bb16dc48dfcf5542ddf86139e639ff51433.json new file mode 100644 index 0000000..dfa0f26 --- /dev/null +++ b/proofs/225145-00000000000001a3aa38003bb99c2bb16dc48dfcf5542ddf86139e639ff51433.json @@ -0,0 +1,13 @@ +{ + "transaction": "01000000010000000000000000000000000000000000000000000000000000000000000000ffffffff35044bd7031a0123522cfabe6d6dd14fcb9aca36a2eda2d2a5697fd1937b98d28349001f69bf4a2608bad70776dd0800000000000000ffffffff017ced789500000000232102cac94f1d20ffbba915de906640ee716b0921d8ac80cff842fdf633e297f7d341ac00000000", + "merkle_branch": [ + "2b762b0327f8bbdb565ad407118ddc2184227271587ba23c0d8fe446ceafdb96", + "b5b840b093b8e66b433e13339d920546bf04e9d9da435d32bdc87a285bca6522", + "93704f0f2aa3a3e87816ef03bbd636b6613a0cb6caafdfac8153e9557abce5cd", + "228fa6edf41f8d6d9218ddb3452a99339112b47340d191780861a024b18efc74", + "f84e85c05bf27e5ce9050059f27a19bb1898c61ec7a3c2a492e0cb3bd7576458", + "dc759dfd8f163f9f92eb99698d96f55cb60d539c13b40f534b1d5882b4b61be0", + "82d17739cdea95a8f970636f4300ca961546b66eb2792ca706ce3190dfc21f9e", + "da826d0da1629f963eb806a2c1ecb2f78c4bd53c52984fb5d257b04a0bb4d8f5" + ] +} diff --git a/proofs/225221-0000000000000386f943ff46dbf220fed2ef2ce55214d6fce868db21507ddc99.json b/proofs/225221-0000000000000386f943ff46dbf220fed2ef2ce55214d6fce868db21507ddc99.json new file mode 100644 index 0000000..2192890 --- /dev/null +++ b/proofs/225221-0000000000000386f943ff46dbf220fed2ef2ce55214d6fce868db21507ddc99.json @@ -0,0 +1,13 @@ +{ + "transaction": "01000000010000000000000000000000000000000000000000000000000000000000000000ffffffff34044bd7031a59522cfabe6d6db0539f1943fa0263ab4bc7be9259f1270ebaa0d23733e662654b6a049aa054880800000000000000ffffffff01b059f69500000000232102ab513f31b30538710509b0eaa141cdc246536b2b3c08799b54dd4c2682252c00ac00000000", + "merkle_branch": [ + "f039c214cb37245e6aa4b0405cbc902bb0e666fb5af28863c903da0234cff110", + "5df17d04cfb7b1b2606b640636f0edb42a98a30ad22a76f9ca4d3e159cea59ec", + "c36cdda7865ae6358da4421cd88ad120d884966bc3ade9c5ac53d96687c3df54", + "333895c699772f283ee61ca8f66f0d176dd76b954986403fe74820c8d18bc71e", + "34731f267060cb59e130719b1d2e523f671b5c747830d17d035aa9259daa28eb", + "9350fe8f82f7e29370dbf6e9238c8c0deb8236a10950427842a71da299ab2697", + "06818a12f481ed82839dc4932b7c9ddcf0690774f57da25d8a6df131ec7e4f9c", + "bc4bb46dd9ac6931bb7725dfdda13d8720c8805c92c966a6226ce754426fd084" + ] +} diff --git a/proofs/225430-00000000000001468e0b21b62cd0b41ec317eeeaa5afc0a8df43c01180e57f7f.json b/proofs/225430-00000000000001468e0b21b62cd0b41ec317eeeaa5afc0a8df43c01180e57f7f.json new file mode 100644 index 0000000..417a364 --- /dev/null +++ b/proofs/225430-00000000000001468e0b21b62cd0b41ec317eeeaa5afc0a8df43c01180e57f7f.json @@ -0,0 +1,14 @@ +{ + "transaction": "01000000010000000000000000000000000000000000000000000000000000000000000000ffffffff34044bd7031a60522cfabe6d6dd2a3e6a60af19ef1519a648a205be968aa42d0040a12ea7e2aa6410e80a9313f0800000000000000ffffffff01e808ef9700000000232103ab3a62484c5164962964e3437f71a745531faeb8a414f6ec8dabebff57aef382ac00000000", + "merkle_branch": [ + "72a89c7facb9cf205096e9add5480ebd890b4d6127b93f838bfce698cd3c4338", + "6e94c76b29d0b1fed9cbf6ff546bda22fc9dbca09eae076aadfc2d88f414d3b6", + "29ab9589025ec52e0e5a010404d6e50ad064599ee3345d3c2f6ead338ab30d7d", + "85e038c08bcd9b64274b3794eebfc8a2a771a482156f2d6b8d6b60db3a50c844", + "03239ea6d9576ecfd34804a16ecd17b5a82383359189be2552b95d48c4fe24d3", + "3b736e952fd780238d271dfc43f3a66463b06536d0a3fd9246a7323058e769d7", + "52050e658d2c7334e943740898ad5b7ae1da5e22403b2f3582ad8f020891f5d9", + "4510ea00779a30b55ff759c7388f7aaea3045dab84d8a268db84e27ad829a2c8", + "a2876b26e3011ed1bb0898443588962e2a3e259dc119be2d8d755cecd14b7e31" + ] +} diff --git a/proofs/225430-000000000000017c4a0a7be4244a3b2c0dd41f884586ad8de78356a0994e8960.json b/proofs/225430-000000000000017c4a0a7be4244a3b2c0dd41f884586ad8de78356a0994e8960.json new file mode 100644 index 0000000..12b7201 --- /dev/null +++ b/proofs/225430-000000000000017c4a0a7be4244a3b2c0dd41f884586ad8de78356a0994e8960.json @@ -0,0 +1,14 @@ +{ + "transaction": "01000000010000000000000000000000000000000000000000000000000000000000000000ffffffff35044bd7031a0161522cfabe6d6d11011523a342d5a6a793d960db1f1393207dd969bc87be8058b6877f28f639cd0800000000000000ffffffff018825d89700000000232102761b3cc4a01feca292cfb45c9d07706033b59c0f6ef36c97f214bb1ab34c7960ac00000000", + "merkle_branch": [ + "72a89c7facb9cf205096e9add5480ebd890b4d6127b93f838bfce698cd3c4338", + "9a5b81244857a7781be96de3c61878928e2dd0ee537bb5eb9e01175ca3450474", + "4573e77873f4ed961f2fe86528e06b166ec3af30dab81d138895bae0644dd00e", + "3fd1ecf3a5090e0a5a2d3d28f81b120dba28702b55ed5183b6efe56e6c344f2c", + "4c9d29b4c0d3346cb8e29c1d8efd62d44032050f5755c2bfe0acb1f3a6142462", + "4c6e53da9ff2340d9290de431d50e9eff56f02e9f13219a41322d0bd12a6c46f", + "722d0e796beb511841e6531282c8e0cbe3235fa9d3dc6f000932826e67108f66", + "75de077ff704dd05d0d66384ec80e22342007deacb1429cf73d6df352ad76bad", + "9235ae6bae14764176b7ecff1f983e382bf212132dce01bba31c7b74e5d0b23a" + ] +} diff --git a/proofs/225464-0000000000000085a485d05c96051ff43ea70b8868d7373df9de771ca65b52c9.json b/proofs/225464-0000000000000085a485d05c96051ff43ea70b8868d7373df9de771ca65b52c9.json new file mode 100644 index 0000000..0a98da6 --- /dev/null +++ b/proofs/225464-0000000000000085a485d05c96051ff43ea70b8868d7373df9de771ca65b52c9.json @@ -0,0 +1,13 @@ +{ + "transaction": "01000000010000000000000000000000000000000000000000000000000000000000000000ffffffff36044bd7031a028c00522cfabe6d6d16e6f88281aa9c8e23d07358e51aef40e8314c14debbe9b7569af3644962f8860800000000000000ffffffff011095ab9500000000232102ea97e5dff24005f262727b6db115ff839b449e3627c0998eb9a152752b1d9b57ac00000000", + "merkle_branch": [ + "fc03175134bffb42a41af62f53cdf414192d242673b31f9ecc5bc3897938417e", + "f23e52ab32389f5667d3b3dad048d257df0d354d9f895d91e7fcef3b9c246d40", + "54256b6951c9caf6e2e78943c5b7ff0f6a6f7ba580f63ded08dbb0542022d680", + "a29301e3320d823b7dab4a5ff7103ba6d4ec4dd092bd84eff4289bb854fe502b", + "1f1595885d280a278e3919771287432f202b425fac083e50755a340976432a03", + "6aad2ce2448c5ce0f098b8c3387d833a2d338526699e0be9bd38d4b3cc993d5f", + "511e93a66007acca864ede754b094a0453f219f2a842e9209c6c661581e7ca29", + "18b54b9e3047e95bd4e4ce5e66c1e794cd002a4f6729311475060d6136720e8f" + ] +} diff --git a/proofs/226230-000000000000004cf2026785b16399bea2abab0f8b8a82d070ac0db40a06b3cb.json b/proofs/226230-000000000000004cf2026785b16399bea2abab0f8b8a82d070ac0db40a06b3cb.json new file mode 100644 index 0000000..62baff6 --- /dev/null +++ b/proofs/226230-000000000000004cf2026785b16399bea2abab0f8b8a82d070ac0db40a06b3cb.json @@ -0,0 +1,13 @@ +{ + "transaction": "01000000010000000000000000000000000000000000000000000000000000000000000000ffffffff3404fa75031a60522cfabe6d6d447172e8723db361a6e8c8d1df6be09db405940728e05acfa6622fd07a8a4a100800000000000000ffffffff0100a8cb9500000000232102bc65f4eb252e8d9d4f69fd1f54f058c498c5f6538e6d211b783f35975986ee98ac00000000", + "merkle_branch": [ + "b94c3569bcbd560d376abac1908281c1df6b16f33a3768e46ab2ae2c59360242", + "99977bcf8be356984b7f0b480e56b2a782666bbb4af1348f0976de9da9d7982c", + "61573230509ce6f8d0fac94e983f2b872bbc7f7353f832688678165dde65fddc", + "554638fa70c2c26dacea8e3fbe733533f17d756147cea3cce6de91040dee403a", + "494dba8e59521beae38a48c9d6af6a6e881aa3a6ca758b87f343e89fe95d6e03", + "67ba043c2d0aa1544f747bcc92a53c76d0839fac34aab0347b4b28f00f0efb9c", + "47f10abedd2db87caac5b19a3ebe0cb41a9888ef1166f3e14787c435c4ba20b8", + "4dc9a19fba9ad4034b389ac3c956ba0fbb58de4c5faa42196977ecdae392686f" + ] +} diff --git a/proofs/226845-00000000000000c37c3327de7555db3e3dbe91cbe0294e532f8a32574d5b997d.json b/proofs/226845-00000000000000c37c3327de7555db3e3dbe91cbe0294e532f8a32574d5b997d.json new file mode 100644 index 0000000..c0321bb --- /dev/null +++ b/proofs/226845-00000000000000c37c3327de7555db3e3dbe91cbe0294e532f8a32574d5b997d.json @@ -0,0 +1,13 @@ +{ + "transaction": "01000000010000000000000000000000000000000000000000000000000000000000000000ffffffff3504fa75031a0164522cfabe6d6d8ff0a68e344b586a001a21254da9133a46d86d070ddd2c19529d6c273a7b263d0800000000000000ffffffff018098d89500000000232103aba9b9493f615a28c5e0127afaf06dd620635572bba4dafdc9c3c5add57923f7ac00000000", + "merkle_branch": [ + "9aa8cad6ea962415c36d27899431e96a541369d5475d7c338a4439ad171e7798", + "075753d775f4141318201809a3e3ae5f1c1512b7784c3834ac5cdaa88d6c5925", + "07c74bafd25093e2b2013138096f1313baa7067413fcb3f719aa6a869e508e61", + "c1a92780d4487349a9f9574abdd84eb6d27e6ae56db5c3ca479fe30b362b384b", + "b1679c9669745216a66249045a8f3aacfda81867f39b6efee460d3d91cc58664", + "d7dd53b2c1bc5e7665c1b8c563d6aa862a13f6c3981f7b9e1fdb4c7a21ca3d8c", + "28bfbe0291d742a84de4f7732d9b373eb3c65ef6e3d25c1f277a39fd1a046904", + "8a0d6e9726c3a0a9b10a4607f6548004227b4aabc71678763cb04dbc6b1e4501" + ] +} diff --git a/proofs/226895-000000000000030a6d0a4a0c91af3610843d170594eac75cc8a0e16390ba9559.json b/proofs/226895-000000000000030a6d0a4a0c91af3610843d170594eac75cc8a0e16390ba9559.json new file mode 100644 index 0000000..7d7932e --- /dev/null +++ b/proofs/226895-000000000000030a6d0a4a0c91af3610843d170594eac75cc8a0e16390ba9559.json @@ -0,0 +1,12 @@ +{ + "transaction": "01000000010000000000000000000000000000000000000000000000000000000000000000ffffffff3604fa75031a024502522cfabe6d6d016035269eb3ad99d1ff362ebd4536c56037cba0deffeb2bf2409cd7ae79bafc0800000000000000ffffffff0160c2a69a000000002321031f7678f7368393f12a87b88a3f94602888a3ee2e4dcaf158167ff89cc3f6e705ac00000000", + "merkle_branch": [ + "139b2e55bbd9c037013ad60bb4ee3e00becb1fc92fd97b2cc673cd8dcf6d25aa", + "94482c3099d4159db0e44ed3e0fd13db444036699ae6b2b996df1230fe01ba88", + "1fe7877c96386fd7e2804cae0b3a0373749cc3642a4d62d361f563b72b287194", + "0d9fd7962c989dd04bd97e2f0a58e039de366e3315081ef627eb42f096d8ebae", + "3fc35b3baab81811e7009ae71f127aa7ae455f85e97f328dd2ab537ec40272c7", + "bd81cd83c92dbac2e238c672f813f58e21e0c6d37a1230f6d987d8fc510f4168", + "fcc8f057ed758925ecbbdc0d5c384601dd0c3e2e57b169f0ae52b5521638eff1" + ] +} diff --git a/proofs/226912-00000000000000a34d399a3cb82e222fad8e73e465b905e333ada1662c61e0e0.json b/proofs/226912-00000000000000a34d399a3cb82e222fad8e73e465b905e333ada1662c61e0e0.json new file mode 100644 index 0000000..41822ba --- /dev/null +++ b/proofs/226912-00000000000000a34d399a3cb82e222fad8e73e465b905e333ada1662c61e0e0.json @@ -0,0 +1,8 @@ +{ + "transaction": "01000000010000000000000000000000000000000000000000000000000000000000000000ffffffff3604fa75031a02ab00522cfabe6d6dfd815d1d65ff88b939971ca477af659572ea9543a296e67d465c60ef342bfa500800000000000000ffffffff01f042059500000000232103a890efb40aa5c06495577bd29024728ad2bd31bc92de6fbf42d26f37e66cc560ac00000000", + "merkle_branch": [ + "5d0127a7cf45e3202d139a447acedfd6c789930824f2a131668975592a7a9602", + "d6b4c8f1f0bc2384650583e2fd5ec3c76261c28e5c6832ea0804479ca1385ade", + "2d0427c1462ea81ba02d218234f3538e03f83b9049424cc2027fb932b26ac76a" + ] +} diff --git a/proofs/229388-00000000000000329b2b44eca61829f13c94bbafb35022f13e49ffff279e3f03.json b/proofs/229388-00000000000000329b2b44eca61829f13c94bbafb35022f13e49ffff279e3f03.json new file mode 100644 index 0000000..dbf8a1b --- /dev/null +++ b/proofs/229388-00000000000000329b2b44eca61829f13c94bbafb35022f13e49ffff279e3f03.json @@ -0,0 +1,15 @@ +{ + "transaction": "01000000010000000000000000000000000000000000000000000000000000000000000000ffffffff4f0332800370736a046e81021a04e900c812522cfabe6d6d84a6a479387f8dfdc7b3256d61e2d5ba08d6dd2adb8090010936cff61dfebce70100000000000000425443204775696c642033ac1eeeed88ffffffff010f15de97000000001976a91427a1f12771de5cc3b73941664b2537c15316be4388ac00000000", + "merkle_branch": [ + "ec91cc20b61ab24bc4d331c9174ada426de65369204fea4de5a7b4eeff6412e6", + "c1514e6258ec0152ae5b8d2b8c7e0f11c96994c109fea9f15775a0b9851112db", + "e40705121007c7bd5fbaea99dc03c5499dbd5082338443749b9e5a6de5913f6f", + "5e0b9b90043d396a871a42e55fa7b89d9c3f6cb4fca1c61cb3bcd0453a61ae4e", + "2bf618264e437ffd169fc58f06e210e23223dfa99a3023ce9e3e82c3f7d77929", + "5d4f7e2e5d0cb5b10f01d32fcd15881482a69dd833d2446d2360fca09440c262", + "65c2b1fe23e069f19afd9394226ed674fc13cf4e5b00ef6253cf326256582764", + "94eb297203b21b60ee8e3baa99844366ccd7a69daf4f8fd15319e5e433954979", + "945b2947113717d083f2a17d31c9415511ffa04f00b932262ffda26f8736b6ca", + "f35589a1a9e294b82a4243aee50bdc508934448fa10a4484d81573fdba8291d5" + ] +} diff --git a/proofs/229388-000000000000008af04b94d8286fe0e8d0aea3b2f35e758ef1e73e153169fa58.json b/proofs/229388-000000000000008af04b94d8286fe0e8d0aea3b2f35e758ef1e73e153169fa58.json new file mode 100644 index 0000000..0c6e505 --- /dev/null +++ b/proofs/229388-000000000000008af04b94d8286fe0e8d0aea3b2f35e758ef1e73e153169fa58.json @@ -0,0 +1,15 @@ +{ + "transaction": "01000000010000000000000000000000000000000000000000000000000000000000000000ffffffff4f0331800370736a046e81021a04f9bfbe12522cfabe6d6d09236c4cc87a673a8b478605e6fcdd5585c5bc4609916597bd962bd2ed862e680100000000000000425443204775696c642033ac1eeeed88ffffffff010f15de97000000001976a91427a1f12771de5cc3b73941664b2537c15316be4388ac00000000", + "merkle_branch": [ + "ec91cc20b61ab24bc4d331c9174ada426de65369204fea4de5a7b4eeff6412e6", + "c1514e6258ec0152ae5b8d2b8c7e0f11c96994c109fea9f15775a0b9851112db", + "e40705121007c7bd5fbaea99dc03c5499dbd5082338443749b9e5a6de5913f6f", + "5e0b9b90043d396a871a42e55fa7b89d9c3f6cb4fca1c61cb3bcd0453a61ae4e", + "2bf618264e437ffd169fc58f06e210e23223dfa99a3023ce9e3e82c3f7d77929", + "5d4f7e2e5d0cb5b10f01d32fcd15881482a69dd833d2446d2360fca09440c262", + "65c2b1fe23e069f19afd9394226ed674fc13cf4e5b00ef6253cf326256582764", + "94eb297203b21b60ee8e3baa99844366ccd7a69daf4f8fd15319e5e433954979", + "945b2947113717d083f2a17d31c9415511ffa04f00b932262ffda26f8736b6ca", + "f35589a1a9e294b82a4243aee50bdc508934448fa10a4484d81573fdba8291d5" + ] +} diff --git a/proofs/229388-00000000000001365d20401c25e9c8c1bc1570f99a943bc1575b20e16d77a18c.json b/proofs/229388-00000000000001365d20401c25e9c8c1bc1570f99a943bc1575b20e16d77a18c.json new file mode 100644 index 0000000..62cdd06 --- /dev/null +++ b/proofs/229388-00000000000001365d20401c25e9c8c1bc1570f99a943bc1575b20e16d77a18c.json @@ -0,0 +1,15 @@ +{ + "transaction": "01000000010000000000000000000000000000000000000000000000000000000000000000ffffffff4f0351800370736a046e81021a0402076813522cfabe6d6d9f81006fa0cb5799f97b3f8ee995dbbda55c1e83754d64cadb321d1db65dc8d30100000000000000425443204775696c642033ac1eeeed88ffffffff010f15de97000000001976a91427a1f12771de5cc3b73941664b2537c15316be4388ac00000000", + "merkle_branch": [ + "ec91cc20b61ab24bc4d331c9174ada426de65369204fea4de5a7b4eeff6412e6", + "c1514e6258ec0152ae5b8d2b8c7e0f11c96994c109fea9f15775a0b9851112db", + "e40705121007c7bd5fbaea99dc03c5499dbd5082338443749b9e5a6de5913f6f", + "5e0b9b90043d396a871a42e55fa7b89d9c3f6cb4fca1c61cb3bcd0453a61ae4e", + "2bf618264e437ffd169fc58f06e210e23223dfa99a3023ce9e3e82c3f7d77929", + "5d4f7e2e5d0cb5b10f01d32fcd15881482a69dd833d2446d2360fca09440c262", + "65c2b1fe23e069f19afd9394226ed674fc13cf4e5b00ef6253cf326256582764", + "94eb297203b21b60ee8e3baa99844366ccd7a69daf4f8fd15319e5e433954979", + "945b2947113717d083f2a17d31c9415511ffa04f00b932262ffda26f8736b6ca", + "f35589a1a9e294b82a4243aee50bdc508934448fa10a4484d81573fdba8291d5" + ] +} diff --git a/proofs/229388-00000000000001fb5262fee5a4b0e93f1274226980cc0893dcaa9dd9e1187f95.json b/proofs/229388-00000000000001fb5262fee5a4b0e93f1274226980cc0893dcaa9dd9e1187f95.json new file mode 100644 index 0000000..0479f6f --- /dev/null +++ b/proofs/229388-00000000000001fb5262fee5a4b0e93f1274226980cc0893dcaa9dd9e1187f95.json @@ -0,0 +1,15 @@ +{ + "transaction": "01000000010000000000000000000000000000000000000000000000000000000000000000ffffffff4f031d800370736a046e81021a042a066b12522cfabe6d6d3f9360023bc09ec8ffce3d57c1492bbc8e1b1d0144655509fca0e1ace595c31d0100000000000000425443204775696c642033ac1eeeed88ffffffff010f15de97000000001976a91427a1f12771de5cc3b73941664b2537c15316be4388ac00000000", + "merkle_branch": [ + "ec91cc20b61ab24bc4d331c9174ada426de65369204fea4de5a7b4eeff6412e6", + "c1514e6258ec0152ae5b8d2b8c7e0f11c96994c109fea9f15775a0b9851112db", + "e40705121007c7bd5fbaea99dc03c5499dbd5082338443749b9e5a6de5913f6f", + "5e0b9b90043d396a871a42e55fa7b89d9c3f6cb4fca1c61cb3bcd0453a61ae4e", + "2bf618264e437ffd169fc58f06e210e23223dfa99a3023ce9e3e82c3f7d77929", + "5d4f7e2e5d0cb5b10f01d32fcd15881482a69dd833d2446d2360fca09440c262", + "65c2b1fe23e069f19afd9394226ed674fc13cf4e5b00ef6253cf326256582764", + "94eb297203b21b60ee8e3baa99844366ccd7a69daf4f8fd15319e5e433954979", + "945b2947113717d083f2a17d31c9415511ffa04f00b932262ffda26f8736b6ca", + "f35589a1a9e294b82a4243aee50bdc508934448fa10a4484d81573fdba8291d5" + ] +} diff --git a/proofs/229388-0000000000000239bfc9b6f400b5b02ab401077bdc470d082e3da34276925cc8.json b/proofs/229388-0000000000000239bfc9b6f400b5b02ab401077bdc470d082e3da34276925cc8.json new file mode 100644 index 0000000..95d58b3 --- /dev/null +++ b/proofs/229388-0000000000000239bfc9b6f400b5b02ab401077bdc470d082e3da34276925cc8.json @@ -0,0 +1,15 @@ +{ + "transaction": "01000000010000000000000000000000000000000000000000000000000000000000000000ffffffff4f035f800370736a046e81021a040d94ba13522cfabe6d6dd48364adb1effd444f3c8d87680ed30368fd5b12d0e20ea956578132f9df04160100000000000000425443204775696c642033ac1eeeed88ffffffff010f15de97000000001976a91427a1f12771de5cc3b73941664b2537c15316be4388ac00000000", + "merkle_branch": [ + "ec91cc20b61ab24bc4d331c9174ada426de65369204fea4de5a7b4eeff6412e6", + "c1514e6258ec0152ae5b8d2b8c7e0f11c96994c109fea9f15775a0b9851112db", + "e40705121007c7bd5fbaea99dc03c5499dbd5082338443749b9e5a6de5913f6f", + "5e0b9b90043d396a871a42e55fa7b89d9c3f6cb4fca1c61cb3bcd0453a61ae4e", + "2bf618264e437ffd169fc58f06e210e23223dfa99a3023ce9e3e82c3f7d77929", + "5d4f7e2e5d0cb5b10f01d32fcd15881482a69dd833d2446d2360fca09440c262", + "65c2b1fe23e069f19afd9394226ed674fc13cf4e5b00ef6253cf326256582764", + "94eb297203b21b60ee8e3baa99844366ccd7a69daf4f8fd15319e5e433954979", + "945b2947113717d083f2a17d31c9415511ffa04f00b932262ffda26f8736b6ca", + "f35589a1a9e294b82a4243aee50bdc508934448fa10a4484d81573fdba8291d5" + ] +} diff --git a/proofs/229388-000000000000024fc7ce00ec89295323699886784960f68a04f4a4871b61caa8.json b/proofs/229388-000000000000024fc7ce00ec89295323699886784960f68a04f4a4871b61caa8.json new file mode 100644 index 0000000..08fc97d --- /dev/null +++ b/proofs/229388-000000000000024fc7ce00ec89295323699886784960f68a04f4a4871b61caa8.json @@ -0,0 +1,15 @@ +{ + "transaction": "01000000010000000000000000000000000000000000000000000000000000000000000000ffffffff4f0382800370736a046e81021a0430a77b14522cfabe6d6d71c2e6d47b4b265b5ad2f064723ecd40bc7eee5267d59df1aa84989c0cc87dc10100000000000000425443204775696c642033ac1eeeed88ffffffff010f15de97000000001976a91427a1f12771de5cc3b73941664b2537c15316be4388ac00000000", + "merkle_branch": [ + "ec91cc20b61ab24bc4d331c9174ada426de65369204fea4de5a7b4eeff6412e6", + "c1514e6258ec0152ae5b8d2b8c7e0f11c96994c109fea9f15775a0b9851112db", + "e40705121007c7bd5fbaea99dc03c5499dbd5082338443749b9e5a6de5913f6f", + "5e0b9b90043d396a871a42e55fa7b89d9c3f6cb4fca1c61cb3bcd0453a61ae4e", + "2bf618264e437ffd169fc58f06e210e23223dfa99a3023ce9e3e82c3f7d77929", + "5d4f7e2e5d0cb5b10f01d32fcd15881482a69dd833d2446d2360fca09440c262", + "65c2b1fe23e069f19afd9394226ed674fc13cf4e5b00ef6253cf326256582764", + "94eb297203b21b60ee8e3baa99844366ccd7a69daf4f8fd15319e5e433954979", + "945b2947113717d083f2a17d31c9415511ffa04f00b932262ffda26f8736b6ca", + "f35589a1a9e294b82a4243aee50bdc508934448fa10a4484d81573fdba8291d5" + ] +} diff --git a/proofs/277975-0000000000000000de6f0b2978aa2b268cb9a54c5de6d21f97d17c6b0ff0ac3f.json b/proofs/277975-0000000000000000de6f0b2978aa2b268cb9a54c5de6d21f97d17c6b0ff0ac3f.json new file mode 100644 index 0000000..2b9115b --- /dev/null +++ b/proofs/277975-0000000000000000de6f0b2978aa2b268cb9a54c5de6d21f97d17c6b0ff0ac3f.json @@ -0,0 +1,14 @@ +{ + "transaction": "01000000010000000000000000000000000000000000000000000000000000000000000000ffffffff6703d73d04062f503253482f04bc30c352082e02a002002bed9a4d522cfabe6d6d711f2290b40d6f75dc3fa9d2245d018ce18782d3e4b9b4feff5b16cdacd4743004000000000000004861707079204e657720596561722120596f7572732047486173682e494f2e0000000001c56e7395000000001976a91480ad90d403581fa3bf46086a91b2d9d4125db6c188ac00000000", + "merkle_branch": [ + "5942d0b19e7c4d63d30ae61b009bb55671ae0cace453dfec845b420f9ae84611", + "ef4d06e13c10d400fbc613e2573a529bdc58393d3f8d517ee4507c1819c01a0c", + "3dab01041e99928c1b5134d3af8a7a265a269f0c02490a9ab1594cb367798d78", + "e29cb4fb7ee552d8d61f5dce290831dffa5ccaf0fb5cdfb2fbcc293a8752af70", + "e6abc18c4ebde356b9fce84dfdaea297b32b5d0149e6679830da643334870c76", + "3b00c3d12e5e6d0f47ee1ba701cbe2b59448932fc83298362bcc1a381d3bd87c", + "f052afdae3302efb4d338e55de6099b45da34c2c2c1491263488b5e1c8bc9ce3", + "df921dacb2753883ed5ad2f25c73b3600ea6deaf8ea1df3b5f22a7e5a674dc1b", + "22ff2d616f71a1ea86498a8399c178947d8d3b9687cc4ce127df3916586018b7" + ] +} diff --git a/proofs/331673-000000000000000010bcbb75dc17fce43da835bd26ccec95ed0d39570a51112a.json b/proofs/331673-000000000000000010bcbb75dc17fce43da835bd26ccec95ed0d39570a51112a.json new file mode 100644 index 0000000..df7a5c3 --- /dev/null +++ b/proofs/331673-000000000000000010bcbb75dc17fce43da835bd26ccec95ed0d39570a51112a.json @@ -0,0 +1,4 @@ +{ + "transaction": "01000000010000000000000000000000000000000000000000000000000000000000000000ffffffff5a039a0f05e4b883e5bda9e7a59ee4bb99e9b1bcfabe6d6d40c126ee5ab79a5d91c96be476ae5b8dd1af1a08e59edb8ff44122bd8d127d2d100000000000000000948656da9c02004d696e656420627920796f6e676368616f3334ffffffff0100f90295000000001976a914c825a1ecf2a6830c4401620c3a16f1995057c2ab88ac00000000", + "merkle_branch": [] +} diff --git a/proofs/331674-00000000000000000d610e393ffeed6b9494d54121f05f7a3905f940f0e0cf69.json b/proofs/331674-00000000000000000d610e393ffeed6b9494d54121f05f7a3905f940f0e0cf69.json new file mode 100644 index 0000000..f1c71d6 --- /dev/null +++ b/proofs/331674-00000000000000000d610e393ffeed6b9494d54121f05f7a3905f940f0e0cf69.json @@ -0,0 +1,4 @@ +{ + "transaction": "01000000010000000000000000000000000000000000000000000000000000000000000000ffffffff5d039b0f05e4b883e5bda9e7a59ee4bb99e9b1bcfabe6d6d43ca0fd0c1489d7195b50b67a538a60a8aac6e5782e44261ae0c5ada2b2fbce11000000000000000010c01ffda4701004d696e6564206279206c656e676775616e677869616effffffff0100f90295000000001976a914c825a1ecf2a6830c4401620c3a16f1995057c2ab88ac00000000", + "merkle_branch": [] +} diff --git a/proofs/331735-000000000000000010d43fb3f8d02cab156f333f2bfc172de9e6d87359118a1a.json b/proofs/331735-000000000000000010d43fb3f8d02cab156f333f2bfc172de9e6d87359118a1a.json new file mode 100644 index 0000000..a99345e --- /dev/null +++ b/proofs/331735-000000000000000010d43fb3f8d02cab156f333f2bfc172de9e6d87359118a1a.json @@ -0,0 +1,4 @@ +{ + "transaction": "01000000010000000000000000000000000000000000000000000000000000000000000000ffffffff5203d80f05194d696e656420627920416e74506f6f6c201197731e547634ddfabe6d6d02b0c8aa564c26d206db1bb2305bf3cba8ad46f355e7238fa5864a06a3a776ec0400000000000000650200007f58e854ffffffff0100f90295000000001976a914e44839239ab36f5bc67b2079de00ecf587233ebe88ac00000000", + "merkle_branch": [] +} diff --git a/proofs/363731-0000000000000000009cc829aa25b40b2cd4eb83dd498c12ad0d26d90c439d99.json b/proofs/363731-0000000000000000009cc829aa25b40b2cd4eb83dd498c12ad0d26d90c439d99.json new file mode 100644 index 0000000..4ab48e3 --- /dev/null +++ b/proofs/363731-0000000000000000009cc829aa25b40b2cd4eb83dd498c12ad0d26d90c439d99.json @@ -0,0 +1,104 @@ +{ + "transaction": "01000000010000000000000000000000000000000000000000000000000000000000000000ffffffff2703d38c05062f503253482f043e40975508f80da7c59f1200000d2f7374726174756d506f6f6c2f00000000017f0c1995000000001976a9147802f7f5c094f025ee9979e6484a657937ab508d88ac00000000", + "txids": [ + "80837427dc46f00babe16775d7c59de2955866809d06ebef2c0bd22d163fe299", + "3f637aff97a70c89dd279fe14dbd45fda00fe22027f7937d43737464baa247a7", + "d55d998fd422eb62455291978120d3137e9c27ba9dbb1292f143829ae96f349d", + "16c58ffb819657f8d2bf3528358c16bef775363ba15bacd662a5ae13d5d53f17", + "7dc570d344be5d4930ae3784ea558deba79a3acd4515a5847e1180e1ab6075c1", + "f5131478818cac4c4b57a92b4c3a4e71f4d9ae2f4cc5fb37055a949499548fe1", + "1c301c04b8f6a6a08e9c0303fc88b3a9a2fd5c8ecc3dcaccc8dfcd58a815ed1b", + "40512438ea46f7b2326b19253da6b65d58101fa570edf98bb90bfd3339b6766e", + "66b32b47e5082a82dde98e8e4fb75168a65f342c64956ecc2110bf9f7e30fed5", + "87cfd0ebd427c21dea0c4c45869b91a5e8f26718f47ce69d5ee9fc30e4fcd764", + "54d99d35c4950ef1da53c52ba64b7bd9d832d89a0a2da8e9060faf387f6e98e3", + "233310e6dcd8046bcc92e2f0e4fb6fb08bf0bad9b693e64958d408a885585acb", + "d7a63c909727d88b82e8dc95dce947a165755867a93e7811fda390e6c5023f66", + "433149eb5e72225c9baf674554724330614bb1d01029625b2fce636e3ee7505b", + "be877780d3059cf94c394e5bd6fb74cf05a9b5fab58be8f571676c9c4643709c", + "8c9da29d8f0184d3f0d8dc65e7b2421a6fdf6ea107cfb89003508b3555854090", + "1f5ea6f0d14828cbeb51a0e8343498736a466e7e0258ec3f7c0be8a93ab3f6f4", + "75900267106af75118e068f280dd0d2276d63dddb0b57c17562a17500e4b2ff2", + "5b3c17871be7350874758606d954c397fad73804e3ff1a0221222d1cbd682c03", + "62ef1dcaed73b9916ca0254409f63deea648c7c4770b22fa8894ba36ec9a15e6", + "b6a6b3246ed20068e264eb2a8a228a29b764f4d15ebf6b354a9199d637384680", + "9e38d77b019feb31b1badd1ad3a3211ac878fa708eace230c989352da7f19777", + "125c6d8c690241af39dabacac1fe02b56531a688f4ec74669254b02e8f1e8d39", + "8b1b7efe62aed26701335daf377ff4df0bbec137ee0bc1e56c260cb4eb7d4768", + "da2d8314ab809badc47ac9b4e5da575429f14b9b497d008720e18b3f2debe728", + "a831aaea48f0050daafdb6d4d6b7bb88ff63fcc1051bf47496b09b4febaef770", + "ba21922f6e9d84f525b51e8f8c6f7d0f4181950995563fb4286d0e317a1db3d0", + "08b6785a2e41e5fe596e5752005330ef837a303bdb375671922227c2385d504e", + "7993a110e814d39820ef2dbb1270b09ebcb2fb1f4cd8fea64e8e632140d5b9b4", + "3e4ad89ce941e72afd8e6a5443acfb552a60d5fa201df2c66005c074c5e36d44", + "7be039e8eeed7cd79a946dafa3021969bbead655b55164f50645e3bfaf49fd51", + "85e59cb1a740cbfbc90ba3b5b029680980193a0901109a1085d3b851fe2c36c4", + "17eb4b7bae71156f1b8d6fbcd788af73f26c840239efa7ad315910d3c43999e8", + "d3c5cc6ac800372f8e34b36544f4df8c4d043b5556782a94e7c0171ec487050d", + "cae098ee50352692e90482f8d416b34f5d03a78c467886a78851801f38874e53", + "ab2ad475a744aca849988b0e21f2b33ec270e8e1b831b4189f9d10604fa67dcb", + "959d08d3b1416ff5b6bbe1f3d5c0d63536a3c726cb980864cadbc86c18f26abb", + "8a70a8edd466edd14509d8da664e1c1f202152bce16bdaed3882355d909f3226", + "66324042b821383cbd527a21ee4275ef80223320c0213bf3ac692bb2376d63b7", + "af1c4b6b0ca265b0a6534c602957269362a72603ae2134e95ac662979167e37f", + "aa47745b09b2c604d5c6d6c0b7dae5de280b5d1fa75041542e023d1117cd8209", + "8d8ba930a10372a17eb0367250d23e82832c1492fa533f9d7ae93f895e671e59", + "3e19a1e3ef23fd1ab66ace4d67d716d04ff9ee5a481a0e7632edb145389e67d6", + "4010202f27b125c2171bdce293ca4a09a4a9dc977831457fdbf70f9e880a4150", + "aeec1b23165a9a93d969727e087cfba1463f90e67001ef4bd81c6c974a881bc9", + "093b77f8e8ec9872fae3864aef486827e7f8c63381b93b5821c7314a4606b38a", + "860f77b7c1cc3c5776fd877f1465a96cad9289c4986317498633d8fa2f772ace", + "0e0a52e1a1e8fefd571e81a5222a4bef6957b3c0636964c083e7da4d7855b4be", + "9d98d38883dbd5fed54ffd84d0761f52f77ef126ab46c0ba72fa5520b27b7165", + "fecbff9c24792423d1faedf2015980ed0376713b8e25ef86cfec8a1910a2cd71", + "f6b939ff303e163265b0483f1ba43638a2d7f6f05f1acac82e44fe96b348f0d6", + "1bc82f2905f570c884d1fa346c5bbec99addb4e9f2608dec3dc1de7ff6094a79", + "68886b4267f6fdd5570f252120f4f53aaed180e853652fb6b971695127493a25", + "07af9c6af5cf55faf38eb2e7e8c0ea5ff1df8412aec6594971095b264792b0f9", + "1870e67c54f111554ce1eaa411d1811f984679cd2d72f884cb7652c7b76da9d0", + "837ff4dcca5d5490583f93cefa4d378859701707c379ec834bd997d9e8fb69eb", + "620717005dee6cb8ddd1d32ff13b2874bb1fc2d553f049d98d03bbbf90533fb6", + "e819c2bb412a04c876b10b4bb1e5af4a980c85d9f336c033414e4804e1c85071", + "d1ee3ccef9ef2fc8ab2e4defe6505ed2c19e05d21a79b0321e041ed4276edce9", + "324e7e0b466e0813883a948809033bc1ca252a7448883e3bac69051948d0deff", + "d037bc8cfd70bcbd88b1c90f2279c20bd39ef248cf693a4e3a5a04ae6354456c", + "7e5876f457d0293ca9d94e72fa7220367b309584c4d92e16c8fea656c8622441", + "74c223048587ac79e62d392fabf95cfb7b6571a7c5b843580fb66620724f2885", + "c81b9006a7bdf87d29451f09d937ea998fb4c70277c9e09c7cfded25615d1601", + "b32cc8696134ce4c83bcd76ce590caeece286b653062ea803fabe32ee5e202a9", + "8546b830a4c51d5c21a1783bced4b5bf86a4ee519df26f23c08f3a30ee564fb6", + "af73a0819c8606868851213a5394550aafb6f56ae2019828670c8eb8ca5e6c10", + "da0ef758234567b9d1fd4c94bfe8805784dc2d7f9ccaf8ac5c33866f453de5e0", + "a1a585af59b89ae57b1744721e3830f2615644f2c294cad632fb95f91ecea07e", + "7acf0c2088020d191615b3185df6d5e92e3d37e7d736299fe08b41213b1c0ae4", + "1380f84eb478bf80f4b25d7d0c129258c38559a1e497c2c69cebff820428ed68", + "659b62b224de2400155896fb1c94e6fe3b3ccbe6bd8ceff8bc250819b72a8d0e", + "d08c879482a85547169be9fb3980a2108ec61a38ad2fb2f41b41fcd54923c203", + "2eccfa5cb965779f585533951d49b30f380a1ecf64c4283da45e727e6c2bb24c", + "d5cfb21584cfb591a58f1dbe6d24de882095d7a8661af961cfbac79e732b7b71", + "5da07e0064e87bb2c4c401c03bae9cef4e509bae135e6a1c1f70388ce3b940e3", + "b5350b87221d9b9f5729b9b8b7b727195fe6533f3efe0d0122060eb446354ff7", + "2b6ba2a7f13ac5205371603fde3d71cdcca5bc8e252c083c3b7e424873dd7287", + "f44debd9d2a6d3d0476e4b98a2584da38f8091c07a0495ba113a2b8c6afb879e", + "72aca8527b493ce2645523582ba98d2c937323d22fa98446f09337f63ab4e42f", + "bb38a24019353098459d36f5f23fd98275659bfd6c5eadc4c4b748cfb218f4e9", + "d301f2e7909d8a3c1f8a2e5e92543297fe9db4561350c7cf0160aae749ca4e05", + "febbd16a0c5885a556eefdbc1a89683e9f7ab8ff033de2cce82e29889caceb98", + "6f74ae3ab7dd886240d19ad925b6b46397833aa001c96437c31289d86f6164cb", + "8fb694804ef36c34ca3beaec0402efa1a4cc5b4944d7989bdca19fd66747a196", + "9f7f229e278e1a7fe02a2411bcf945e287763ef3a11a158a6bfcfd6673318491", + "7b26b6d71b06e0d606999fa50a9b29237e744936ad17edf39a625f58e817732d", + "682073576778f78c7b5cc212138bbdee345b618c5650ab77a4a66741e7ffbbaf", + "042c30a4965f957428e12ce5b5567fbce9412167b2161ec1ed797a38bba4e440", + "541a98244a7269fd2bbd6b196efffac84cf0f7d0d528886afec4989b8269a00b", + "d58a61f35ea6d8545381e07d51cfd6b2b3eb0b024dd19b84493910adf710f0d7", + "a577359733c987cc9bab4aa715292a7febf7333dfd82697142c03abe8920ff5d", + "f0b33a06b134878786e061e08095df4086619fd417e5c665dcace5182ee2a44e", + "61eb7422b7c5f877864a899142ceb58f722f7db95292a98e2d03576253933cd8", + "2f1e60e69e34b6725cf7d19151753d712d92b4fefd68fb33cd82ac841eec95b1", + "22ec37722b6c75f24ea0f63aabe81ca89722c8a6c0d86ab0323318d3f3938881", + "a918656b7f2a64c4f4c1c72631b5495f9fdbe5e715075abfed5be51725ed0ba8", + "839b5c7b1255732faf8fcb19e9da8551d6b6c1773184ef8483a0b1eb623f0318", + "0f718855a8a40507f0fea23b8e3f141d966971afb664e3e242d1b9966929adc0" + ] +} diff --git a/proofs/363967-00000000000000000954ed93eda1e79e8261137548fa9ccf4d516bb384a3660b.json b/proofs/363967-00000000000000000954ed93eda1e79e8261137548fa9ccf4d516bb384a3660b.json new file mode 100644 index 0000000..5dc54a0 --- /dev/null +++ b/proofs/363967-00000000000000000954ed93eda1e79e8261137548fa9ccf4d516bb384a3660b.json @@ -0,0 +1,15 @@ +{ + "transaction": "01000000010000000000000000000000000000000000000000000000000000000000000000ffffffff3d03bf8d05045599597ffabe6d6d27e048c4a0bfe74e325a7c96ace681cb0857905425f4c24ca88fb3b646fed3e70100000000000000180100004c534b02ffffffff01f7bcae95000000001976a91457a52abfc530edeb770ee50106db178400803a9488ac00000000", + "merkle_branch": [ + "c3790c32cb84cdb32a945c207e64ae390e591a3cf3f2ae41798d5e7a8108adcc", + "e2dd9add615e77ab0029437557461051ba56565fe32d489a5496b0607605dc5f", + "30dbafdc8d8636e526a3832b565fe52098701b11f7470da4c28e4c6040e977b3", + "da6a474cdbc442b1e82e96ae6ac080f1a38638f4b49236de28fdd764e06c77f6", + "ad95904d881e608c0d10ae0e5468868c92847cafd19c1291637ba46d260b6681", + "5e1abbe4afd7c45222b1b1cdcd6bf18564f891279a289a8d66d5067a525f39ff", + "d8fccac0f80ef509ef8e8d607992aef6636621022f33706ad38e86f89581e50c", + "718d6149b6d0dc88da072024b976f5b4c4fd17a3d7f3715c7d3c7593f5bc5e49", + "67aac9274e61049c27cf9c38d86f7252d83d73b158ff764d77d4a09a7fd13ce9", + "ba2545a37c294be6feaa7db7c12534238d39a7ed46b67930bca92ba0fe7c4d59" + ] +} diff --git a/proofs/364341-000000000000000012aac0664cd8b6cbc3ea485921a05f2c4340f928b0226d3c.json b/proofs/364341-000000000000000012aac0664cd8b6cbc3ea485921a05f2c4340f928b0226d3c.json new file mode 100644 index 0000000..15d1ad7 --- /dev/null +++ b/proofs/364341-000000000000000012aac0664cd8b6cbc3ea485921a05f2c4340f928b0226d3c.json @@ -0,0 +1,15 @@ +{ + "transaction": "01000000010000000000000000000000000000000000000000000000000000000000000000ffffffff3803358f052cfabe6d6da8e7031652edd333c809b423e10227792e3dbcb7b173b1585dc1476ce72eb8000400000000000000062f503253482fffffffff4dec050000000000001976a9146619a9d00e54f92e24f1bff32433db5ad202f4d188ac1cbf0000000000001976a914c52fdb50c6777a83c39469c9500c91ab1f1c4cd488ac7f060100000000001976a9143b8828192bc8bee344adacd89ca6d0c7bdf2f4ed88ac3d7a0100000000001976a914a472b3aa8bea1f1016c141f10eb0e66cb63a2e5b88ac68570200000000001976a9149b13607bdbf9d959d28b7d7413decdd51390fc3888ac038f0400000000001976a914cdf8b988aa20cf73fd88b7ed733b59582b732de888aca03f0500000000001976a9140584cd93441746f0aad2e0866503dfafa7fd61c388acc1e80500000000001976a91482d7868c8987af8c158c3ac266ad84bb6782862288ac0f000600000000001976a9148620df074aa5b69a76aa6c79bd675af065f78cd988ace6760800000000001976a9148e161ccc72917c9e230258c6db3ce27ad4fac52c88ace8ba0c00000000001976a914107ad8615ced06d902502a42d6a2be9c0c024ee688aca6140e00000000001976a914ca58708ba4142f3c818b9d87d13ad2881fbb685988ac6b3c1200000000001976a914041de91e16d8871c78bf46a662735df6ddd0f00088ac15e11300000000001976a914ca5233bee183e66639fda8183dfb99dea51a9da688acfcc11800000000001976a9147496b28faeda07805552a135f80d720d5c4756ad88ac1b1f1900000000001976a914eedc6ae745b0f1b2121737d342bd4767f991414288ac8c391900000000001976a91460352699b55d5b675809dc72919dee067b83875d88ac7bb41a00000000001976a914b22bfab9edc4470509e3dd83880040904078d11188ac39571f00000000001976a91407c72230d9e5f8c49e1fc8f6cb07951def37ee9888ac1ccc2200000000001976a9145cedecf04d831ea3f368c532c7e5027cddd94b9988ac060e2b00000000001976a91417881c8cf9654f50ac205ed8c9dc3a4970d9c62188ac5bc22d00000000001976a914af3a0d5c9fab88fe5f422adf84762a14d7ab2df588ac59432f00000000001976a9142600a4921baf711dc30a47705b6012bda87388da88ac48f23100000000001976a9144dfc0b493a05b3ce1cc2a28ed5380ce1d3e76fab88ace3923500000000001976a9144698e7f38b5b1547270359be9478329bf5b4f39188aca9773d00000000001976a914c7ed69f012e768f821056df6744975d53eba3d1088ac07c64e00000000001976a9148feb2f648300f68af6dbcdc11ed8096965c994a188ac3e105700000000001976a914f6a374a20e80cf6f8a117c691a453c1fa39baee388ac29d05800000000001976a914df6164e79ee2bbb9d7de3cc1f0edf5c367451e1188ac21986200000000001976a9143151c3b5466842874b02e9587d3a2591eea8a61a88ac0f4a6600000000001976a91486f43c0e2042d4b22d92fc237741744e529c147088acfe2f6700000000001976a914d7f00f19e19d1d325fe71ba66f8da519a3afd4b788ac9d796700000000001976a9140f7627c634124e4d68f2c838ffc3156bf659543488ac1dd96a00000000001976a914f6291009ee2787a78d9c2fc5814bec12799bd75288ac0b866b00000000001976a914dd38381ca3815a8d66abaa0e3b7695f9cf12af0a88ac7d2d9300000000001976a914e2db6b763a7064112ec865f0b49d595446edecb488ac46329700000000001976a914fb98ec88ad1b269cbd71f18ba55cc9331c9c368d88ace33fc800000000001976a914c02cec4dbb0feb594ae771505939c8c3fcad6f8c88ac90b7cd00000000001976a91495213765b708a57e214c15520ec1fbe2cba6815488ac9741db00000000001976a9149209eaedbc248ad582560ffdd420b3352042670988acd2b4e200000000001976a91477909c022a189c235f66da262957b68885b25d6388acb52feb00000000001976a914e2e6225fef18ddca411ae3fe46b9dd2b98ca048688ac091ced00000000001976a914591c07374c1af37d65c6240ba25fd6ea59597f9f88ac2b99ed00000000001976a91434533e6a1fbd140b8f207ad1a1697ce44529cf1488ac8de2f300000000001976a914838151b12bbba4e843aa878ad4cabea5ddae016488acb8ddfb00000000001976a91442f3f5d6497a46a5bc379b918708d08c22a5184d88aca6e6fe00000000001976a9146f6aa8e188e6cc0b7afde34091b5d0690ba6ce9988ac15b20c01000000001976a91459a955107e778d8f5bac018e317a40e2da6b934788acf8dc2f01000000001976a9140b617b420c55deb57e5d693162f66a5dd194c81988ac580e3301000000001976a91463d6e29e09cf1064bc4e5f0152a914435e87f90b88acc4413b01000000001976a914d96be77b1c0bc4164812f90ff9048541b4dd6d9b88ac24bd4b01000000001976a914d151e140ebc672a886d36bce85474597f205ade588ac6c255301000000001976a91483d884f35c8b2b1ad9a890275f7ddcb9ef10063988ac48706801000000001976a91460871be55229abae77ad661912436aa947e1631588acaf867601000000001976a914986e5d11072bb3d697fc94d94638c9f1170703c088ac22a67f01000000001976a91408167de195f8bee4318cf64a5c34d516731e61ce88ac9178bc01000000001976a914fb02f1084f7d06601e53540ec18a0e5ee8bcd0ad88ac8a57c401000000001976a91444deed3a51886bdae60210bbd761d76e7dc9809488ac666bc601000000001976a914c2a17364d2dfc4d24462f9290055a5d998344db888aca1d7d201000000001976a91489105878c3678e865cd9624f5a1e8f83ecf2d78588ac2dc0df01000000001976a914a805c167378f5746d756d328dcfe82956de6745988acd68ee701000000001976a914fe28d50d4ff1b30de779c9c7d6b5882298b60e8088acb8dc0102000000001976a914b1da65273a4361c0a9c60b89793185a466f8dee088ac8d8d2a02000000001976a9147a296d10a7558d816ca33de47d39b35bbb881ee088ac79992b02000000001976a9148a78cbd8293d3bac9334b3a500cefd6124d1c5ea88ac19423c02000000001976a9141d27cdd4a421b60a71b7e9220cf52ac4547dabd788ace9274a02000000001976a9146ad798d913b91084410069ae66103a19ed1d9f6088aca2219902000000001976a91489d3754e07b8a05f2d06b79fc6484757299f2bcf88ac12ada603000000001976a9141be25970b163cd3a02e0079488f3fa960c57fd9888ac445dfb04000000001976a9140b255bc5adaa26e7117b992305d98d6ceabb4f6288ac3ec34a05000000001976a914f1169bdf2f569ee16d5cc12c26b8360e00ac8f3288ac38eebf0a000000001976a914d8d5286f303c3c6462a5b9841a42573042fe5a1b88acaed8b50d000000001976a9147fa06fd7f3f079a257b662b4d613ff76372d860888ac08040118000000001976a914402bda2446ae8c4e5e1641efc04c7794a9619dab88acb6079923000000001976a914ee193da97a14c6dcac4ce9c2678f4c35af05919b88ac42fc120000000000434104ffd03de44a6e11b9917f3a29f9443283d9871c9d743ef30d5eddcd37094b64d1b3d8090496b53256786bf5c82932ec23c3b74d9f05a6f95a8b5529352656664bac00000000000000002a6a28c5cdf17ebaef7bf5d05bd51f44e764a48e4ebdaea3b425aa0d148e62e8f3a5ed020000008a0d000000000000", + "merkle_branch": [ + "8d7f20b0abcf3509c99d014ce4bd047c68b46d5232766d4841d987223040771d", + "ab2cbca6e54cd8eec353ca2acc7e475e7662c42f19bcb763eb84df7cb4e2f761", + "d6047f81f06c4fdbd9ef16685bb6c15c636db9d77740af722dff45152527d1f5", + "87928a653c553db37962e0b2809896a35e5d81924f9faf32be9599f018b1ea96", + "7be904d4ee34c39af1eccf83603b2ec02f34d893bb94b537f71dc6f2674057ab", + "cfcff1420460c99939624d103f2367bb89a668e68e38427d11ac7a9bf313432e", + "f1aed1b1c6e76328e6e631d16d9ca7f959668fca7ba045a8d1d343f847d1eb0e", + "e13764334d708b00905e23d37a02878b9c4aaf101c8f3783607852badfcec930", + "6a572472b12c77d0d0d33927e37624c0b928eb80a98f1f6b7951ea0dca64b444", + "a06abab5839e691cc136b18889b584b83ffff376a55f8d07ee08dac39ab7eb6a" + ] +} diff --git a/proofs/367047-00000000000000000f93ba8faf8bb018c7db642e30391748860cbfa5803a32a4.json b/proofs/367047-00000000000000000f93ba8faf8bb018c7db642e30391748860cbfa5803a32a4.json new file mode 100644 index 0000000..1256142 --- /dev/null +++ b/proofs/367047-00000000000000000f93ba8faf8bb018c7db642e30391748860cbfa5803a32a4.json @@ -0,0 +1,15 @@ +{ + "transaction": "01000000010000000000000000000000000000000000000000000000000000000000000000ffffffff4503c79905534f434b25449607578bd762522cfabe6d6d8f433c640092b20a74c858f622235f3ef0a432b34b8d7f9a23ed781ec2c0b40120000000000000002f6d6d706f6f6cffffffff03a0c4c692000000001976a91475e4ee7225304129996ffdabffe01269c071f6bd88acc23a1b01000000001976a91480a90ec02f53d45b5190d29d2066a37d8efa740f88ac60343c02000000001976a914303b0d5e09c9ed5fa0c7d390f0aa6ff2aa299a9488ac00000000", + "merkle_branch": [ + "3c4cfb40b526de4cdb629a02283577f5468bb6353b8cc4277207b485e039443c", + "2aba219cb45e479ebbfb9a255dbb5f2fb9c078acb88d22fb6ab33a4a0f347831", + "55834dda0c6971edd0db148b5db890a63566b1ff03cb994935f1293ec4b03823", + "89b99002c6cbb85462fc65594d7acf1f0c0f99438518a1854c45934477dcf53c", + "dfe2b5f614d975b17b8886ec578c4cb246147a8d7b51f2bae1f4426c5a0d586e", + "9e916ff080a30e575f00055019c9ee37c7cc094c911332ff8afadfd58544aeaf", + "1082a722aa0c7195b72afbdc7f01e34547b0856562ed5deb6e76408649148ecc", + "df72c096e1542711aacd234aedcb8f1d735f56a7800297e9dba02d543c5b6d96", + "adb4c2c17dbd9273e69ca3cb879991600fb0ee8cc2ca8128bb436e52bad37142", + "7ee89c23689b5c531284a7f81294b62f35f07175e7fba61ac9290dbe264618b1" + ] +} diff --git a/proofs/380992-0000000000000000084ee972bfe620224e6893448a9001d2b1f236ede0423779.json b/proofs/380992-0000000000000000084ee972bfe620224e6893448a9001d2b1f236ede0423779.json new file mode 100644 index 0000000..4469292 --- /dev/null +++ b/proofs/380992-0000000000000000084ee972bfe620224e6893448a9001d2b1f236ede0423779.json @@ -0,0 +1,15 @@ +{ + "transaction": "01000000010000000000000000000000000000000000000000000000000000000000000000ffffffff640340d005e4b883e5bda9e7a59ee4bb99e9b1bcd50ac9b4c902bcd5e2bad45a05683fe7f021962425668f3d52fb85b887a7641d02000000f09f909f2f4249503130302f4d696e656420627920796e646c00000000000000000000000000000000000000000000008b010a622996000000001976a914c825a1ecf2a6830c4401620c3a16f1995057c2ab88ac94c4f132", + "merkle_branch": [ + "a95cab369c408a7f1abbcb0f781caff95bac92a1e1958bb0871162c66b4c9276", + "6bb088e08a7daddae279c4f4c2d115d3b50d6d45bec7e0ef54b4145155c0eaf4", + "716ead27a8ef2b8f39cc9feddd556b8725b2c2090076b3f9b607d3eedf1b275d", + "7bf76bf572e7b7bfa13d211fe711176157f2a7547ff788a96519e86f8b77c884", + "4ea0f4995665e552f12a950315d0d921c591a0fceb41ba5068195f2277332b1e", + "f7aeef6d15af78c660faa88190bc3ba8d7b94b35b5c8c99fbc5666ae1acd9c98", + "9821cd6e5db1e3b246ade9b6412c56bc243c2281ef5deecbaf5631beaa3ab3b3", + "919311d591da87dbb19e99fb65861f036d9c930479bdc987bd02afbb9861cc36", + "a1bfdbda85e26613652194a7e76698b709d43f2b29c226066058c1549ea7b20d", + "3b9528af85f3cd7fbc48b959fe586cad49ecefdb136d591e851b11b1c7d7505b" + ] +} diff --git a/proofs/383540-000000000000000009c55c7e380b7600a2966de1b79230c74212d9c45a91a50b.json b/proofs/383540-000000000000000009c55c7e380b7600a2966de1b79230c74212d9c45a91a50b.json new file mode 100644 index 0000000..a12bd1b --- /dev/null +++ b/proofs/383540-000000000000000009c55c7e380b7600a2966de1b79230c74212d9c45a91a50b.json @@ -0,0 +1,4 @@ +{ + "transaction": "01000000010000000000000000000000000000000000000000000000000000000000000000ffffffff4f0333da050e00456c69676975730056473ebf05fabe6d6dea750998570cd15be3f4d81146f617c7f8cfbb02e53cf5953aef025e55b48ae20100000000000000002f737332322f008102000090990500ffffffff0306000000000000001976a9140493d62912ad4ae27c4dccbbed253cbc711d31a988acf0d10295000000001976a9148041d74e20e69ebe3ec37c57434cee842ba1bd1688ac0a270000000000001976a9145399c3093d31e4b0af4be1215d59b857b861ad5d88ac00000000", + "merkle_branch": [] +} diff --git a/proofs/389043-00000000000000000306ea979ad487157d2950081413eb9d2dca82060f1b89b2.json b/proofs/389043-00000000000000000306ea979ad487157d2950081413eb9d2dca82060f1b89b2.json new file mode 100644 index 0000000..e055f99 --- /dev/null +++ b/proofs/389043-00000000000000000306ea979ad487157d2950081413eb9d2dca82060f1b89b2.json @@ -0,0 +1,16 @@ +{ + "transaction": "01000000010000000000000000000000000000000000000000000000000000000000000000ffffffff4c03b3ef05040314745608fabe6d6d20d6656f5ca5ac4408cbee6ff6d3235c6039015372788a3c0b0c39721502efd001000000000000004000000f873d00860d2f6e6f64655374726174756d2f0000000002b4951a96000000001976a9142bf64e2be04ba49a87d17ae9a9009d72efbc472488ac00000000000000001976a9142bf64e2be04ba49a87d17ae9a9009d72efbc472488ac00000000", + "merkle_branch": [ + "6c4a65752886377fba8d70780bdbc45be2bcb4050b9d14690da2aaf8f0aeedfe", + "ac1846887459cb348d536278f3b6190c349e91c959e5afea0a3b194e3984e8d3", + "95a45b70f328384c1de65f0263215e78c1bc2b28de96a7b3c9d6a5fd15e1d397", + "a2178f2670a5830983579d9138e365ef998acacf8030cd8827f53972222110f8", + "8fc89c247f2fdfbd5f3dd41545da01909ed0c791376144c0a30af872623ef2b1", + "1a861e6c6ebfdb5a8aff8f9fd48be06745f83c4906ed9e00daad35908f4a4ff7", + "4558c7063834262d9f38c7d1e24f420e0c67a52ef6c75852228e82d040d8f340", + "dc325c33592df75c130ffea75f3cdb33808bbd132a65237243b08988b94015ca", + "867e579e5360082ac64f2230e844c580bcff7a521576bfef8ec6be97c4ac410d", + "77c16ae1617a4d83a5e010fb1ccb2d5768405283057ce0b87e42492474f8e53e", + "d6f9621804e921f841c5a77c60e1fed06ba7bf760a879b46534fc726da171aca" + ] +} diff --git a/proofs/402610-000000000000000003a1ce220ae97419cc4bdb5d70b90189b8f8a06b0b37e3a2.json b/proofs/402610-000000000000000003a1ce220ae97419cc4bdb5d70b90189b8f8a06b0b37e3a2.json new file mode 100644 index 0000000..4d08b1d --- /dev/null +++ b/proofs/402610-000000000000000003a1ce220ae97419cc4bdb5d70b90189b8f8a06b0b37e3a2.json @@ -0,0 +1,4 @@ +{ + "transaction": "01000000010000000000000000000000000000000000000000000000000000000000000000ffffffff6403b3240637e4b883e5bda9e7a59ee4bb99e9b1bcdb8c127393c82df3adac41a9a3a6d30491ade6cab548308a174cc92165515c1f02000000f09f909f124d696e656420627920633633333436313039000000000000000000000000000000000000000000982300000100f90295000000001976a914c825a1ecf2a6830c4401620c3a16f1995057c2ab88ac98a00631", + "merkle_branch": [] +} diff --git a/proofs/422059-00000000000000000254ed1e8143f0bcd3c3564db07e7c35631e999d53e81fa7.json b/proofs/422059-00000000000000000254ed1e8143f0bcd3c3564db07e7c35631e999d53e81fa7.json new file mode 100644 index 0000000..fa63c98 --- /dev/null +++ b/proofs/422059-00000000000000000254ed1e8143f0bcd3c3564db07e7c35631e999d53e81fa7.json @@ -0,0 +1,4 @@ +{ + "transaction": "01000000010000000000000000000000000000000000000000000000000000000000000000ffffffff5503ac7006162f5669614254432f48656c6c6f2c20576f726c64212f2cfabe6d6d66a8e99ddd64fdd53d2fcba9e0da13d660eb4f3af15c1cc9f4afd712b09729fb01000000000000000cd114e24c6b5af1af8c290400ffffffff01807c814a000000001976a914536ffa992491508dca0354e52f32a3a7a679a53a88ac00000000", + "merkle_branch": [] +} diff --git a/proofs/543804-0000000000000000000c958fe3563e7e3ecda8e35e6d6ecce4d5693cec1f1918.json b/proofs/543804-0000000000000000000c958fe3563e7e3ecda8e35e6d6ecce4d5693cec1f1918.json new file mode 100644 index 0000000..a188d46 --- /dev/null +++ b/proofs/543804-0000000000000000000c958fe3563e7e3ecda8e35e6d6ecce4d5693cec1f1918.json @@ -0,0 +1,16 @@ +{ + "transaction": "02000000010000000000000000000000000000000000000000000000000000000000000000ffffffff4b033c4c08045623b15b622f4254432e434f4d2ffabe6d6dee6689d8fa713e1a935e1b03dd664008ac0a74b753d03c527f6d25800e82299a0100000000000000fc00cfe8cc4d000000000000ffffffff0327f6484b0000000016001497cfc76442fe717f2a3f0cc9c175f7561b6619970000000000000000266a24aa21a9ed799f4e88126beab55e5c30e02faedf8b306e24c55f6c0880df5f96a73cc22a0f00000000000000002952534b424c4f434b3a6381b3a089cfdd2852ac0edba8e3c234b16321167e8b71c45a75db1148c11c2f00000000", + "merkle_branch": [ + "c307b4f8aafab7d32808e1f44ee466f7127ffd91557b969834e7b9a541acd5f7", + "b806452d64d7f18c4573ee2795c6967b1d3ee92a41dce636a5cc2a5afaf487d6", + "7ed055006f0f89291c35aa35928d96ab040e64c15a597dd2ab3b5487b516a4e2", + "e2fdc1d9ba531aa0f346199501645155b7c942032227985d42d1c5708a6eef56", + "9bd1cbb47d794faf98319ef4635afbaf0931f92b6441e91c0967e4b36c35eaea", + "af6c07822c971da20d3e84fae6a58e48039bd1452a2f46b12a7313a91ce9caa0", + "49533df4c161b158510647f4b44435f1637dce1136f48221685ce9b9428d51b0", + "88dbf4ffd6326c3ef2948e21bcdf513dee4fef32dbc319ea0645396f6832cd0d", + "227dcdc156502037c3262ed63f42c73518e97d4f4a40193ac6c8b41e37225620", + "0fc5f9d9c5f9b62c92cf3e41c5baba9f62536d07d3012fa3f0ebb793ec7a2537", + "73eb94d79bfb7a4631c0554b646b1bfadfa8560a67748d2b5dbdb3e003e2135b" + ] +} diff --git a/proofs/544024-0000000000000000001ac59b46b44a9e525bc03a5cd2e138a8ae684445fa6ed8.json b/proofs/544024-0000000000000000001ac59b46b44a9e525bc03a5cd2e138a8ae684445fa6ed8.json new file mode 100644 index 0000000..aca5ce8 --- /dev/null +++ b/proofs/544024-0000000000000000001ac59b46b44a9e525bc03a5cd2e138a8ae684445fa6ed8.json @@ -0,0 +1,17 @@ +{ + "transaction": "02000000010000000000000000000000000000000000000000000000000000000000000000ffffffff4b03184d0804c9fab25b612f4254432e434f4d2ffabe6d6dcea0fda9be365f0d78b66072ae5cf48ed7cb6338df96d4a951f49bcc9641a6710100000000000000fb0136c12081000000000000ffffffff038c69af4d0000000016001497cfc76442fe717f2a3f0cc9c175f7561b6619970000000000000000266a24aa21a9eda6a7804d70aff745282340ee58377459043ff356033abfe474067e633e00414800000000000000002952534b424c4f434b3aafbe5bb2146b6d91d32e75fb88c6e186c6c2a3a7f8101fc47f3198be0061b51200000000", + "merkle_branch": [ + "778f712344e0db2fbbc7956b83e93b791a32ce29c1334e5e34d76948cd2b534c", + "67ee94b148d35ecfb9c145b2da38ad280bcbec0e192d6aeae8a11ffc9c1c6a5a", + "6e06c6ac45245b6539369a5ec0a5dad11c4a41ac5554976491b956b6ea04f294", + "b2355e149d4ea2705b654c799ac19837100a4883f89bad84e0d0c5a0b30fcf36", + "9af9b0d323da6b3c01a008592224742a27ab8aeeec300a384f1e8444dcdb037c", + "af2d1d341c43cb4185203423d2a7c928bad1756c95d0515476ea48403589a8ed", + "7798093f285fd7206589acbe4094dfa663beb9273cd6c8867cf597b6bf06a64f", + "36aa2e30ed649be71f0feeb61d5f50bfb356b98dff8106a316c3e2808881a766", + "a3963b2cdeca232d552748a9f9165700433297aeda0d594d2ab9e785aee36ac9", + "4e7e14c7e8b34f7898ea95679f61519f93190bb8fe39e86f78a334997601fcc4", + "f88822cf033031be9d5b30a694ec59c52f4e44625955aa94b6752e4232184f70", + "e210c032983f228b8a0aee4b88aba79d24866e6d6be0aa9b95ee0c0bee4209b3" + ] +} diff --git a/proofs/544024-0000000000000000001ffb5988298bfc9f528f9a47e6062ebe8a01177af25d21.json b/proofs/544024-0000000000000000001ffb5988298bfc9f528f9a47e6062ebe8a01177af25d21.json new file mode 100644 index 0000000..6ca3bf9 --- /dev/null +++ b/proofs/544024-0000000000000000001ffb5988298bfc9f528f9a47e6062ebe8a01177af25d21.json @@ -0,0 +1,16 @@ +{ + "transaction": "02000000010000000000000000000000000000000000000000000000000000000000000000ffffffff4b03184d0804a9eeb25b622f4254432e434f4d2ffabe6d6d00b4b5e6ade353899dc765c9ea4101e089f70877b7d314d29fc9b7d0654fcf020100000000000000fb006d12d345000000000000ffffffff03e637b54b0000000016001497cfc76442fe717f2a3f0cc9c175f7561b6619970000000000000000266a24aa21a9ed0a5df6e306110d287103449bb5ee670d62f6e442b5fd8815b471acc39d51d36800000000000000002952534b424c4f434b3ab56f282d6fec39833e4c7d4bdc5bdcc25ddd4239e4cfb2854792ee1213cdc79300000000", + "merkle_branch": [ + "10b658e0845a34b0c1b3639168524a5ed82c73d022102223fecfb17bf9cb3d2a", + "4b599875550c1a309d4e7ae4f6d04a4396393830cb610f2926d461bb7d6c4e1a", + "29774f8cb1583c81cf62569fa2e1bf8a421916a739c38e96c17e9c00e6f01b85", + "d90b7ac8ecf0f977e90efb9a9f1475cd35f843da011183e4f9a87eee926eda37", + "50464559f38ff1ca286ddbf26da64cdf51326522ca30b661ca15c3cd28327442", + "10bf95e1ebb46a8a57f8d6b72e1750c17cb24dcaa5e7f627470edadf009ac7a2", + "a7d8494ecec02d130e36d7711641f310ca1d3ccec3ceb1e3e4eae81dd9e8209a", + "a155dd7e63216a24384fe9dea852ae962c2a55555a56bc845fbbff6652a56ca4", + "9a6f4099125d3f3ce67933a4dc36849d1dbdd2be1a9abaac6ce8b8b7a16a537f", + "ab016512bfebb024e5fd2a6ba75791eff6743257bc169a94a82081984c466481", + "a46e4dd0758f0f2a603f198d832486741c396cf2126d52d9602532016974b9c3" + ] +} diff --git a/proofs/544600-000000000000000000188a6aecb603cb6a068ad236f925255a491124b5c5dc8a.json b/proofs/544600-000000000000000000188a6aecb603cb6a068ad236f925255a491124b5c5dc8a.json new file mode 100644 index 0000000..209769b --- /dev/null +++ b/proofs/544600-000000000000000000188a6aecb603cb6a068ad236f925255a491124b5c5dc8a.json @@ -0,0 +1,17 @@ +{ + "transaction": "02000000010000000000000000000000000000000000000000000000000000000000000000ffffffff4b03584f08042c8bb85b622f4254432e434f4d2ffabe6d6d88922b0299a396056945229bf094718c1388b6df2c4560845fa027e8942ca65d0100000000000000fd0069592843000000000000ffffffff03773f554c0000000016001497cfc76442fe717f2a3f0cc9c175f7561b6619970000000000000000266a24aa21a9ed60cf4479157bd191d65100fa03a41c55bd8a9529d9bc889a772fed5aa6f1aaeb00000000000000002952534b424c4f434b3aa834552b7d252f2c3de3cc43c50b7ef5a9913e28bbbc4c107437812206b635e400000000", + "merkle_branch": [ + "eb31b291577e139a36d25d11cf7cfaa64a1a21e33a800082be0cb7467f01fe76", + "77574dbbd19eb42d118a1805a30905f6c8c55a46f9a9dfce488f44875a24e53c", + "f1c5bb6a9367ca76e9da82b8f5497ca33fb2b6d1dab22c9f04e6e3d2fa4cf62c", + "b6177a4e817ef525248d79d4baac9f655b95c6216519e580953ef34619fb564a", + "e2016d18a13447a80e94018e910904eb6495df5a148d53e4770659dd8e84bb6c", + "f256cf0ca60143b43bf80fccaf815ab29ddd3e8169a65fbf933eb7fcedf5c211", + "3a5c073c74185d7841320c4445e02209c2225efcf213a8890a09287d595930e3", + "b8f821104ed41b65f13a9300a7b3298d5ca63b007ee6b690b6eda7412d895c53", + "5f0feb2a20f9a7fa9d69cc8b19cd33f3944d450070f8d5560cae6273ab131cc5", + "c68b925a57254d2daf88264164797f6144c0e5b6ed35268485859173f50573b0", + "7855352d2883d349909fba91f0a7a519a1aa43d73bf4396508bceb654becd4fc", + "cdbcc6d152d94fa2457ef6b40c00415b125eea1f0e8b7014e7be01b1599a73f9" + ] +} diff --git a/proofs/717696-0000000000000000000045c5040bf46b4cd6c6f8f4004c149cd602e4e356e71c.json b/proofs/717696-0000000000000000000045c5040bf46b4cd6c6f8f4004c149cd602e4e356e71c.json new file mode 100644 index 0000000..c6900ab --- /dev/null +++ b/proofs/717696-0000000000000000000045c5040bf46b4cd6c6f8f4004c149cd602e4e356e71c.json @@ -0,0 +1,4 @@ +{ + "transaction": "01000000010000000000000000000000000000000000000000000000000000000000000000ffffffff5c0380f30a192f5669614254432f4d696e656420627920657373696265742f2cfabe6d6dc0edbc53e6583117e3fb0c174156ff34a95f1a1093bb03192bdd8b47f896cb9f10000000000000001071ffd417d8ab2bd883332eb005000000ffffffff0200000000000000002b6a2952534b424c4f434b3a864fab2165551cd33fd8bd4be4c538efdeeb1505f567647b593f3926003cda5340be4025000000001976a914536ffa992491508dca0354e52f32a3a7a679a53a88ac00000000", + "merkle_branch": [] +} diff --git a/proofs/789038-0000000000000000000291349d44e756df07ce08d848df0ca0bbd9884af393ed.json b/proofs/789038-0000000000000000000291349d44e756df07ce08d848df0ca0bbd9884af393ed.json new file mode 100644 index 0000000..baeca65 --- /dev/null +++ b/proofs/789038-0000000000000000000291349d44e756df07ce08d848df0ca0bbd9884af393ed.json @@ -0,0 +1,18 @@ +{ + "transaction": "01000000010000000000000000000000000000000000000000000000000000000000000000ffffffff58032f0a0c1b4d696e656420627920416e74506f6f6c383733e2000002b5eac7d7fabe6d6df30ef030508734cec49b1d7ddbe98a52a2f7ad5986eac10cd313f0c6dbb46d6d0200000000000000000024c9610e000000000000ffffffff03f20608310000000017a9144b09d828dfc8baaba5d04ee77397e04b1050cc73870000000000000000266a24aa21a9ed820da6341eb023b88da53284085b0d7ca2f6f9230f9e0306d01820f0468210a500000000000000002b6a2952534b424c4f434b3a7e1c308ccde2cfb5897c9916d1b140628756c670652514c75ca0431e0050add700000000", + "merkle_branch": [ + "863c205414c73acc8a21365db50c5fc07f37e5d5c767bdd1e3712329a65ffc99", + "bd09b001aec434edb8d2b6e384521da5fbbb1db474b54f8f2713d1a1b5f3cf16", + "c62debe4f2e9f6163fcebf45c3a8ed5c6b7675e884f7ee8f934c4f8769f0fa57", + "e11d3f0e8839d058b1ee0bac70db634f52322a94f8d69d1e9680d337de31f62a", + "285d3540b4888b5b5598b4bc25e1d77e395567fc73b933e45b0bd61f7040d3e8", + "d443196b34d736a79cdad33831ee5e7fcc5bf209a5a396d82e564ce212a41336", + "d483c15fa04e7f63a4725a8f16cd34673e892eac0461a863253b2f157dd31b95", + "d874360a088d492491630bd6ca712e9fe255ef4b132680e9f0f482d0ed99458c", + "b6be229abcad6dd8a3737bf7fcb68ea6ad942992b5781e85a2903f12a82c68bc", + "43ad419fe748f559578b936a98e8117aaadcacc93a64268d52ac95ab8bffad2d", + "805660276b7c2526a49b6f0da3a3753fe8f746a76d78ff19b15b89ee20007897", + "fdcf961d89613f3c2342b8ff0ecc83b3ea52849f0b0cf983c0f1d5a034617e1b", + "0abcf49d24ab8d557f70c54962c4e786248986289c0c5ae0bd6d88c4c8a5cf90" + ] +} diff --git a/proofs/946213-00000000000000000000c3d95a4bdc068dfe0c6d1e7ad13045c6f570e58d9ed7.json b/proofs/946213-00000000000000000000c3d95a4bdc068dfe0c6d1e7ad13045c6f570e58d9ed7.json new file mode 100644 index 0000000..61c2b69 --- /dev/null +++ b/proofs/946213-00000000000000000000c3d95a4bdc068dfe0c6d1e7ad13045c6f570e58d9ed7.json @@ -0,0 +1,17 @@ +{ + "transaction": "01000000010000000000000000000000000000000000000000000000000000000000000000ffffffff640325700e2cfabe6d6d07a206acc4d465037a85ceac8a1903f27526149e57a46fc1edbb6a7c67320d4f10000000f09f909f092f4632506f6f6c2f670000000000000000000000000000000000000000000000000000000000000000000000050095000000000000000822020000000000001976a914c6740a12d0a7d556f89782bf5faf0e12cf25a63988ac65ba1513000000001976a91469f2a01f4ff9e6ac24df9062e9828753474b348088ac0000000000000000266a24aa21a9ed5f9b35e494c288d372c103a90c4276aec1dc47697c626767a36f0b15967eebdb00000000000000002f6a2d434f52450164db24a662e20bbdf72d1cc6e973dbb2d12897d5e7ec323813c943336c579e238228a8ebd096a7e50000000000000000126a10455853415401051b0f0e0e0b1f1200130000000000000000266a24486174680f9d91b916e8e4b01c8b9dc36c638a6d5b86f2498be54884aeb9ea4a98802a1e00000000000000002c6a4c2952534b424c4f434b3a74d38c7ca19fbc9e4b98a27ec0d7045a734a90453caaebd8f43e170d0085ad3f0000000000000000296a2773797375ff2d8a47064e138a2a4c9cf0b9312e479943dc2efab46da9942b944b1dd5d72cf821006675703d", + "merkle_branch": [ + "c79d6e913dc6deca8083ab6ff9f68150df8494d12321aa50ed29a22fb2ad1737", + "f3c3a223ac42b762c10ab8c4b0f60bdc23cb43b233fdfe4058ed41ccf9212d4b", + "7490a009ab7c9e1ddda8404bc0a4bedc62adb273ce0771f74418787a5fc41fd9", + "5506ffa1b9b6f49a199777e5e058bac1ede898e9136a3a4849c1b1e2a39aa91c", + "2d0227be479cb7daa6322a4766644446e977e303f722df87c8ecb2a9c472605f", + "ff6ffadc1a53ac7b7926eaa296ff47d047690693e911c16738c325e100190d71", + "974536e0c54be7fba9042039748d50bf444f7a8e35018e497fa8673e8ae2bb71", + "755c54fa7bbe1943039d43d3bd038aef1527710da432f553cac3d22f09002674", + "b72bcba6d3b27fe328dc7be4e32c6268cdd60d6bc91b7d26360c47f5acf64e2a", + "fb3b575efc3ba8924d38d1319ed7d30772db69cd2d56648086b7819b2d9ccee6", + "840ba4a60c1c55674fc90bf525267f2a5edd0baa50483e3c4b51673b408b5ff4", + "c0abc9b5908d91a81c17159e7c646d2a3c6d34cfa1235a7d9f894649a4bb7cb2" + ] +} diff --git a/proofs/957780-0000000000000000000198e12592edbe83c84a78f75b3f8d67a3fe2075ef2ffb.json b/proofs/957780-0000000000000000000198e12592edbe83c84a78f75b3f8d67a3fe2075ef2ffb.json new file mode 100644 index 0000000..b01ee8c --- /dev/null +++ b/proofs/957780-0000000000000000000198e12592edbe83c84a78f75b3f8d67a3fe2075ef2ffb.json @@ -0,0 +1,18 @@ +{ + "transaction": "01000000010000000000000000000000000000000000000000000000000000000000000000ffffffff6403549d0e2cfabe6d6db72b2e8a573b09f5d46aad91f9214fabcdcccd69a9b172992099d95e393da9cc10000000f09f909f092f4632506f6f6c2f6700000000000000000000000000000000000000000000000000000000000000000000000500580a0200000000000822020000000000001976a914c6740a12d0a7d556f89782bf5faf0e12cf25a63988ac5b37b912000000001976a91469f2a01f4ff9e6ac24df9062e9828753474b348088ac00000000000000002f6a2d434f5245012953559db5cc88ab20b1960faa9793803d070337e7ec323813c943336c579e238228a8ebd096a7e50000000000000000126a10455853415401051b0f0e0e0b1f1200130000000000000000266a2448617468913a1f0e12e9f70ced6c065301b8fd38909b4dc83ea0085b8babbec3ef96d34500000000000000002c6a4c2952534b424c4f434b3a393e4609cff2729f4469a5855e70da7ae2fd4afe986d0feab6e8070f008a07640000000000000000296a277379736b411cb0f8512a45368c34f440e8127dbc5821a67c42047db7d113dcdf7bb5aaa4ac22000000000000000000266a24aa21a9edd8f7347e00330bb840b6cdcc4b57fbda7f218b3c94c8df1652cae422393760ed90391a3d", + "merkle_branch": [ + "0edb5e7cd2519a19a842d72548441aed0b84a87ac787d7f269881a53504408cf", + "c2e9b1dfd7c593b049e4155bfc347037aaefae4477360794e43e439cd419149a", + "ec1f152f37d605366649ed6a6b5bd2edea47064ada3c679a1415488c3345a984", + "42d28d0e680c79045509654139e6a7d3fcf7677b402c53ef1b35e30f85e07cd3", + "92ed06dff07b83bc38f12602c55d530a63bf377a912a99ba3f1778867c5d4cf8", + "b996952dccd3eba11eee1100c6b4ef45f272c33c2ecf51473ed0a1f466cd7773", + "935269b0a0eee1f581503ce625b11f2c8fdce94fe2b1bdcb403856ce00bd66c7", + "ea30a7147d0de0580fc1713908ea264745031b6ccebfb44c4a0890fb31e87878", + "f5c155ba19ad8d7830b55e26fc4aff423557b2724c3689373230c4fba505cc9f", + "d4e571b71d23337ca95b2db96a4ccd514c35de902849f54bc43d26405c31bc70", + "7e5677a54af777503d2fe68710762ca5652444b500eec449bf99a5dfc41e4897", + "09f8e6fab79e710c0079607a636434f5479e24a207d250b78bb24e53833ee85e", + "e453fdfef2d93cd2b0a9b5f7b2a1760c0e305ee04685b3e40407e0a52642f6db" + ] +} From 166ff94ef5107ed206b2d182f344a5461c472557 Mon Sep 17 00:00:00 2001 From: deadmanoz <62584182+deadmanoz@users.noreply.github.com> Date: Tue, 22 Sep 2026 12:11:15 +0800 Subject: [PATCH 2/2] feat(schema): require evidence behind pool attributions tag and address need a body or a coinbase proof; reported and address need pool_provenance, the report or the pinned mining-pools listing. Add it to the seven records attributed that way, and record the negative result of the P2SH pool-attribution search in the notes. --- README.md | 1 + ci/sanity-check.py | 11 ++++++++++- ci/test_sanity_check.py | 23 ++++++++++++++++------- data/invalid-blocks.jsonl | 14 +++++++------- docs/notes.md | 9 +++++++-- docs/schema.md | 3 ++- 6 files changed, 43 insertions(+), 18 deletions(-) diff --git a/README.md b/README.md index 93daef0..eb3466c 100644 --- a/README.md +++ b/README.md @@ -28,6 +28,7 @@ Include `context` fields needed to establish the failure: BIP34 coinbase height When the coinbase comes from an AuxPoW record, add a proof file with the coinbase and its merkle branch so CI can bind the scriptSig to the header. Omit unknown optional fields. When the pool is known, give `pool` with `pool_basis`: `tag` for a coinbase tag, `address` for a payout address listed in [mining-pools](https://github.com/bitcoin-data/mining-pools), or `reported` when only a contemporaneous report names the pool. +A tag or address attribution needs a body or a coinbase proof; a report or mining-pools listing goes in `pool_provenance`. A block whose failure is only reported goes in [`data/reported-blocks.jsonl`](data/reported-blocks.jsonl) with its sources, until the evidence turns up. diff --git a/ci/sanity-check.py b/ci/sanity-check.py index 3e75886..cce9fd3 100644 --- a/ci/sanity-check.py +++ b/ci/sanity-check.py @@ -38,7 +38,7 @@ REPORTED_REQUIRED = {"height", "hash", "reported_failure", "sources"} CONTEXT_FIELDS = { "expected_nbits", "parent_mtp", "coinbase_height", "coinbase_scriptsig_hex", - "pool", "pool_basis", "parent_kind", "missing_prevout", "parent_txid", "failing_prevout", + "pool", "pool_basis", "pool_provenance", "parent_kind", "missing_prevout", "parent_txid", "failing_prevout", } OUTPOINT = re.compile(r"[0-9a-f]{64}:(?:0|[1-9][0-9]*)") OBSERVATION_REQUIRED = {"channel", "source", "provenance"} @@ -228,8 +228,15 @@ def check_context(record: dict[str, Any]) -> None: raise ValueError("pool requires pool_basis") if details["pool_basis"] not in tuple(POOL_BASES): raise ValueError(f"pool_basis must be one of {sorted(POOL_BASES)}") + # A report or a mining-pools listing is the attribution's evidence; a tag is read from the coinbase itself. + if details["pool_basis"] != "tag" and "pool_provenance" not in details: + raise ValueError(f"pool_basis {details['pool_basis']} requires pool_provenance") + if "pool_provenance" in details and not http_url(details["pool_provenance"]): + raise ValueError("pool_provenance must be an HTTP(S) URL") elif "pool_basis" in details: raise ValueError("pool_basis requires pool") + elif "pool_provenance" in details: + raise ValueError("pool_provenance requires pool") if "parent_txid" in details: hex_value(details, "parent_txid", 32) for name in ("missing_prevout", "failing_prevout"): @@ -491,6 +498,8 @@ def check_dataset(path: Path | str = DATA_PATH, blocks_dir: Path | str = BLOCKS_ scriptsig = details.get("coinbase_scriptsig_hex") if coinbase is not None and scriptsig is not None and coinbase.vin[0].scriptSig.hex() != scriptsig: raise ValueError("coinbase scriptSig does not match context") + if details.get("pool_basis") in ("tag", "address") and coinbase is None: + raise ValueError(f"pool_basis {details['pool_basis']} requires a body or a coinbase proof") check_failure_evidence(record, evidence_block, prevouts_dir, fetch_prevouts, apis, proof_transaction) except (OSError, ValueError) as exc: problems.append(f"{where}: {exc}") diff --git a/ci/test_sanity_check.py b/ci/test_sanity_check.py index 8d7ecf0..53c9557 100644 --- a/ci/test_sanity_check.py +++ b/ci/test_sanity_check.py @@ -33,6 +33,11 @@ def for_rule(self, rule): def for_height(self, height): return copy.deepcopy(next(r for r in self.records if r["height"] == height)) + def unattributed(self, record): + """Drop the pool attribution so a header-rule record can be checked without its coinbase evidence.""" + record["context"] = {k: v for k, v in record["context"].items() if not k.startswith("pool")} + return record + def copy_evidence(self, record, kind="block"): """Copy the record's body (.bin under blocks) or proof (.json under proofs) into the temp tree.""" source, folder, suffix = {"block": (CHECK.BLOCKS_DIR, "blocks", ".bin"), "proof": (CHECK.PROOFS_DIR, "proofs", ".json")}[kind] @@ -76,6 +81,7 @@ def test_invalid_record_fields(self): ("pool without basis", "context", dict(context, pool="Example"), "pool requires pool_basis"), ("basis without pool", "context", dict(context, pool_basis="tag"), "pool_basis requires pool"), ("unknown basis", "context", dict(context, pool="Example", pool_basis="guess"), "pool_basis must be one of"), + ("report without provenance", "context", dict(context, pool="Example", pool_basis="reported"), "requires pool_provenance"), ) for case, field, value, error in cases: with self.subTest(case=case), patch.dict(self.record, {field: value}): @@ -197,7 +203,7 @@ def test_body_evidence_is_required(self): if mode == "local": continue with self.subTest(rule=rule): - self.record = self.for_rule(rule) + self.record = self.unattributed(self.for_rule(rule)) self.record.pop("observations", None) self.assertTrue(any("complete block body" in p for p in self.validate())) @@ -259,8 +265,10 @@ def test_p2sh_proof_stands_in_for_a_missing_body(self): self.assertTrue(any("not both" in p for p in self.validate([self.record, body]))) def test_coinbase_proof_binds_context_without_standing_in_for_a_body(self): - """A proved coinbase admits a header rule and binds its scriptSig; it is not body evidence.""" + """A proved coinbase admits a header rule and its attribution and binds its scriptSig; it is not body evidence.""" self.record = self.for_height(363967) + with self.subTest(case="address attribution without coinbase"): + self.assertTrue(any("requires a body or a coinbase proof" in p for p in self.validate())) self.copy_evidence(self.record, "proof") self.assertEqual(self.validate(), []) # Keep the BIP34 prefix intact so the binding check, not the height decode, reports the difference. @@ -325,6 +333,7 @@ def test_body_parse_error_is_reported(self): def test_mtp_comparison_includes_equality(self): """Timestamp failure includes equality with parent MTP but excludes later timestamps.""" self.record = self.for_rule("time_below_mtp") + self.copy_evidence(self.record, "proof") for delta, valid in ((-1, False), (0, True), (1, True)): with self.subTest(delta=delta): self.record["context"]["parent_mtp"] = self.record["nTime"] + delta @@ -345,7 +354,7 @@ def test_retarget_requires_different_valid_target_at_boundary(self): def test_coinbase_length_boundary(self): """A 100-byte coinbase scriptSig is insufficient evidence; 101 bytes establishes failure.""" - self.record = self.for_rule("coinbase_scriptsig_length_above_100") + self.record = self.unattributed(self.for_rule("coinbase_scriptsig_length_above_100")) self.record["context"].pop("coinbase_height") for size, valid in ((100, False), (101, True)): self.record["context"]["coinbase_scriptsig_hex"] = "00" * size @@ -355,16 +364,16 @@ def test_bip34_requires_failing_prefix_and_consistent_decoded_height(self): """BIP34 evidence must agree with decoded height and demonstrate the claimed prefix failure.""" for rule in ("bip34_v2_coinbase_height_mismatch", "bip34_coinbase_height_mismatch"): with self.subTest(rule=rule): - self.record = self.for_rule(rule) + self.record = self.unattributed(self.for_rule(rule)) self.record["context"]["coinbase_height"] += 1 self.assertTrue(any("does not match" in p for p in self.validate())) self.record["context"].update(coinbase_height=self.record["height"], coinbase_scriptsig_hex=CHECK.height_prefix(self.record["height"]).hex()) self.assertTrue(any("correct BIP34" in p for p in self.validate())) - self.record = self.for_rule("bip34_coinbase_height_missing") + self.record = self.unattributed(self.for_rule("bip34_coinbase_height_missing")) self.record["context"]["coinbase_scriptsig_hex"] = "0101" self.assertTrue(any("no decodable height" in p for p in self.validate())) - self.record = self.for_rule("bip34_coinbase_height_mismatch") + self.record = self.unattributed(self.for_rule("bip34_coinbase_height_mismatch")) prefix = CHECK.height_prefix(self.record["height"]) self.record["context"].update(coinbase_height=self.record["height"], coinbase_scriptsig_hex=(b"\x4c" + prefix).hex()) @@ -373,7 +382,7 @@ def test_bip34_requires_failing_prefix_and_consistent_decoded_height(self): def test_version_rules_require_activation_and_old_version(self): """Reject version-rule claims before activation or with a sufficiently new version.""" for rule, (activation, version) in CHECK.VERSION_RULES.items(): - self.record = self.for_rule(rule) + self.record = self.unattributed(self.for_rule(rule)) self.record["height"] = activation - 1 self.assertTrue(any("requires height" in p for p in self.validate())) self.record["height"] = activation diff --git a/data/invalid-blocks.jsonl b/data/invalid-blocks.jsonl index 5850bc1..dd9c64d 100644 --- a/data/invalid-blocks.jsonl +++ b/data/invalid-blocks.jsonl @@ -98,9 +98,9 @@ {"height":225430,"hash":"000000000000017c4a0a7be4244a3b2c0dd41f884586ad8de78356a0994e8960","header":"0200000006d04625789f74813125765744bf8c4e0900893328ca98ce6603000000000000a6eeff902159dffcb4229785324170c04aca85096c288225c10e8071d68bc62e27583e514bd7031a269c603c","prev_hash":"0000000000000366ce98ca28338900094e8cbf445776253181749f782546d006","nTime":1363040295,"core_reject_reason":"bad-cb-height","rule":"bip34_v2_coinbase_height_mismatch","context":{"expected_nbits":"1a03d74b","coinbase_height":436459339,"coinbase_scriptsig_hex":"044bd7031a0161522cfabe6d6d11011523a342d5a6a793d960db1f1393207dd969bc87be8058b6877f28f639cd0800000000000000","parent_kind":"canonical"},"observations":[{"channel":"merge_mining","source":"merge-mining-research","child_chain":"devcoin","child_height":80960,"provenance":"https://github.com/deadmanoz/merge-mining-research/blob/f543b1f23c57be6840c7a2a44a59306b5d0180f7/data/error-blocks/error_block_observations.csv#L7","child_block_hash":"b1eeb64ee9b3e7cec57ddfdfde80537aede396528f2cc3de1a2586ece7feb2c7","child_block_time":1363040111,"child_header":"010104005115cd08511f9de1c5140fa7948192355a16e200ef623045ce75c25c7ab6bb926537b21fc4f0458976d207d0f1bc6a735d2bd85980ed5655a94e8a5d549c1d556f573e515d07021b00000000"},{"channel":"merge_mining","source":"merge-mining-research","child_chain":"ixcoin","child_height":121266,"provenance":"https://github.com/deadmanoz/merge-mining-research/blob/f543b1f23c57be6840c7a2a44a59306b5d0180f7/data/error-blocks/error_block_observations.csv#L31","child_block_hash":"12234153d21fe74de89bc3911806925e2fd2a41ae0551351dc2950b7e8a47b44","child_block_time":1363040110,"child_header":"01010300a6a849600a844dd6aa03d5ac5fe7763cc5690455ef1f0d1849b9f61c3d538fdcd678c74e78288b1d1d17209dd3a2b672d5ab254f314eb738939e5580256f8fa96e573e511710061b00000000"},{"channel":"merge_mining","source":"merge-mining-research","child_chain":"namecoin","child_height":99714,"provenance":"https://github.com/deadmanoz/merge-mining-research/blob/f543b1f23c57be6840c7a2a44a59306b5d0180f7/data/error-blocks/error_block_observations.csv#L47","child_block_hash":"48a1792f661402f596cea37746110bc0abb545951b190213ae32ff06b2932b77","child_block_time":1363040171},{"channel":"merge_mining","source":"mergedmonitor","child_chain":"devcoin","provenance":"https://github.com/NStifter/mergedmonitor/blob/54344d4e355f73eb94bef8d391e8fb6e4a9323a6/fork-analysis/mergedmonitor/mergedmonitor.json"},{"channel":"merge_mining","source":"mergedmonitor","child_chain":"ixcoin","provenance":"https://github.com/NStifter/mergedmonitor/blob/54344d4e355f73eb94bef8d391e8fb6e4a9323a6/fork-analysis/mergedmonitor/mergedmonitor.json"},{"channel":"merge_mining","source":"mergedmonitor","child_chain":"namecoin","provenance":"https://github.com/NStifter/mergedmonitor/blob/54344d4e355f73eb94bef8d391e8fb6e4a9323a6/fork-analysis/mergedmonitor/mergedmonitor.json"}]} {"height":225464,"hash":"0000000000000085a485d05c96051ff43ea70b8868d7373df9de771ca65b52c9","header":"020000005d520cf0ef788857fab3eae748c283d7adc95e9c70506e2de10100000000000008a8b5401a5ca734d4c479785caf00771abf72912271a04b9d35a44571957d01c6dd3e514bd7031a2fc4ac21","prev_hash":"00000000000001e12d6e50709c5ec9add783c248e7eab3fa578878eff00c525d","nTime":1363074502,"core_reject_reason":"bad-cb-height","rule":"bip34_v2_coinbase_height_mismatch","context":{"expected_nbits":"1a03d74b","coinbase_height":436459339,"coinbase_scriptsig_hex":"044bd7031a028c00522cfabe6d6d16e6f88281aa9c8e23d07358e51aef40e8314c14debbe9b7569af3644962f8860800000000000000","parent_kind":"canonical"},"observations":[{"channel":"merge_mining","source":"merge-mining-research","child_chain":"devcoin","child_height":81009,"provenance":"https://github.com/deadmanoz/merge-mining-research/blob/f543b1f23c57be6840c7a2a44a59306b5d0180f7/data/error-blocks/error_block_observations.csv#L9","child_block_hash":"f7a88536d8bcc5b649f42d66daecddda3b3de1ddf8b8e542ed62a9eaed946565","child_block_time":1363074436,"child_header":"01010400ba0addb8fe8b08f3243ff8e22a08c2093972286594777a33ccb1251af880f124843e5f39a29173929f41b0a0702d214dcd0e804d95ae1b54703efa4a2eb382b084dd3e51e7fb011b00000000"},{"channel":"merge_mining","source":"merge-mining-research","child_chain":"ixcoin","child_height":121399,"provenance":"https://github.com/deadmanoz/merge-mining-research/blob/f543b1f23c57be6840c7a2a44a59306b5d0180f7/data/error-blocks/error_block_observations.csv#L33","child_block_hash":"e9baff68f1504f4f3634d51c19821202da7be18317723082564ba9cf37c2b25c","child_block_time":1363074422,"child_header":"01010300b2480c6ee578d461e146db608296f125a82271d3a606a499555e1ed56f4522f6575df851aebc9cf12d17c8d91900734a4875059175da9aea6bb2a736877ea42376dd3e51f6b2051b00000000"},{"channel":"merge_mining","source":"merge-mining-research","child_chain":"namecoin","child_height":99771,"provenance":"https://github.com/deadmanoz/merge-mining-research/blob/f543b1f23c57be6840c7a2a44a59306b5d0180f7/data/error-blocks/error_block_observations.csv#L49","child_block_hash":"a6d12172da309eab059c1a6122452b111bcd308e07b327e714e90472a4403c6d","child_block_time":1363073898},{"channel":"merge_mining","source":"mergedmonitor","child_chain":"devcoin","provenance":"https://github.com/NStifter/mergedmonitor/blob/54344d4e355f73eb94bef8d391e8fb6e4a9323a6/fork-analysis/mergedmonitor/mergedmonitor.json"},{"channel":"merge_mining","source":"mergedmonitor","child_chain":"ixcoin","provenance":"https://github.com/NStifter/mergedmonitor/blob/54344d4e355f73eb94bef8d391e8fb6e4a9323a6/fork-analysis/mergedmonitor/mergedmonitor.json"},{"channel":"merge_mining","source":"mergedmonitor","child_chain":"namecoin","provenance":"https://github.com/NStifter/mergedmonitor/blob/54344d4e355f73eb94bef8d391e8fb6e4a9323a6/fork-analysis/mergedmonitor/mergedmonitor.json"}]} {"height":226230,"hash":"000000000000004cf2026785b16399bea2abab0f8b8a82d070ac0db40a06b3cb","header":"020000001849df411d256460fde8722a0b32fbb8a6b99d611f4b76e59f02000000000000c7052bbc6cd53cb2d7925cb99fa0e8d743f725463a527ef380d01a2ccbd805bf18df4451fa75031a83d77fbf","prev_hash":"000000000000029fe5764b1f619db9a6b8fb320b2a72e8fd6064251d41df4918","nTime":1363468056,"core_reject_reason":"bad-cb-height","rule":"bip34_v2_coinbase_height_mismatch","context":{"expected_nbits":"1a0375fa","coinbase_height":436434426,"coinbase_scriptsig_hex":"04fa75031a60522cfabe6d6d447172e8723db361a6e8c8d1df6be09db405940728e05acfa6622fd07a8a4a100800000000000000","parent_kind":"canonical"},"observations":[{"channel":"merge_mining","source":"merge-mining-research","child_chain":"devcoin","child_height":81561,"provenance":"https://github.com/deadmanoz/merge-mining-research/blob/f543b1f23c57be6840c7a2a44a59306b5d0180f7/data/error-blocks/error_block_observations.csv#L10","child_block_hash":"be03a6a2c8057a0a93fa2fc419e15e53bda24f68310d372c63d709c19ece86bc","child_block_time":1363468054,"child_header":"01010400c6e9dcd58c4bcab8dc501d166dc19b3a57a61c30b1525bc45de394d1a1382a0053c921259866451bcc82d1c34fff94910bb35928dafd7d9092cc409cc6c8cb3816df44516369031b00000000"},{"channel":"merge_mining","source":"merge-mining-research","child_chain":"ixcoin","child_height":122307,"provenance":"https://github.com/deadmanoz/merge-mining-research/blob/f543b1f23c57be6840c7a2a44a59306b5d0180f7/data/error-blocks/error_block_observations.csv#L34","child_block_hash":"8cd097c2d00fcb14d58e1a3ab88812f8128fadf0b0a8d0fbf6d2a577959aed3a","child_block_time":1363468053,"child_header":"010103002fb21446eb5fc039b17c7b8a8ac108f82f1812b744df213815c42bebd359431804feecfd6510da8bbaa7a5998daa8b53c50da51c476408576e13959a04c41d9615df4451dfd2051b00000000"},{"channel":"merge_mining","source":"merge-mining-research","child_chain":"namecoin","child_height":100567,"provenance":"https://github.com/deadmanoz/merge-mining-research/blob/f543b1f23c57be6840c7a2a44a59306b5d0180f7/data/error-blocks/error_block_observations.csv#L50","child_block_hash":"7c3b67677f6024bbb5099133cd10974a746902c0795027d8dda0179bc948103c","child_block_time":1363468027},{"channel":"merge_mining","source":"mergedmonitor","child_chain":"devcoin","provenance":"https://github.com/NStifter/mergedmonitor/blob/54344d4e355f73eb94bef8d391e8fb6e4a9323a6/fork-analysis/mergedmonitor/mergedmonitor.json"},{"channel":"merge_mining","source":"mergedmonitor","child_chain":"ixcoin","provenance":"https://github.com/NStifter/mergedmonitor/blob/54344d4e355f73eb94bef8d391e8fb6e4a9323a6/fork-analysis/mergedmonitor/mergedmonitor.json"},{"channel":"merge_mining","source":"mergedmonitor","child_chain":"namecoin","provenance":"https://github.com/NStifter/mergedmonitor/blob/54344d4e355f73eb94bef8d391e8fb6e4a9323a6/fork-analysis/mergedmonitor/mergedmonitor.json"}]} -{"height":226845,"hash":"00000000000000c37c3327de7555db3e3dbe91cbe0294e532f8a32574d5b997d","header":"02000000f77ebccf92b40cf51a525875220875df01b95c778ddf8ac52f030000000000005d4e6eba589cc767dd1a2fa1dbbbc9c35f28b9ded13447b43d8acf8c3e0bbce2522c4951fa75031a2e7bb6a5","prev_hash":"000000000000032fc58adf8d775cb901df7508227558521af50cb492cfbc7ef7","nTime":1363749970,"core_reject_reason":"bad-cb-height","rule":"bip34_v2_coinbase_height_mismatch","context":{"expected_nbits":"1a0375fa","coinbase_height":436434426,"coinbase_scriptsig_hex":"04fa75031a0164522cfabe6d6d8ff0a68e344b586a001a21254da9133a46d86d070ddd2c19529d6c273a7b263d0800000000000000","pool":"mmpool","pool_basis":"reported","parent_kind":"canonical"},"observations":[{"channel":"merge_mining","source":"merge-mining-research","child_chain":"devcoin","child_height":82009,"provenance":"https://github.com/deadmanoz/merge-mining-research/blob/f543b1f23c57be6840c7a2a44a59306b5d0180f7/data/error-blocks/error_block_observations.csv#L11","child_block_hash":"6d485b52fb8779e1a917607a2a954d45052f22fbd8050ebce16dda8f215904bc","child_block_time":1363749310,"child_header":"010104001abe9af97f4ecfdd8752535f0e51d64651f6827a3a7ffb47f26ffb0e301a2439d0d9f5c384025acb7aabd5fa3dc0ba8dcd0d850da2f15f8c5e801aa069c3d6f0be2949519589021b00000000"},{"channel":"merge_mining","source":"merge-mining-research","child_chain":"namecoin","child_height":101111,"provenance":"https://github.com/deadmanoz/merge-mining-research/blob/f543b1f23c57be6840c7a2a44a59306b5d0180f7/data/error-blocks/error_block_observations.csv#L51","child_block_hash":"4b136930741efaa66d716dcbeb07b89be946e00e65b1f473d0c2a7c4469e3d43","child_block_time":1363749919},{"channel":"merge_mining","source":"mergedmonitor","child_chain":"devcoin","provenance":"https://github.com/NStifter/mergedmonitor/blob/54344d4e355f73eb94bef8d391e8fb6e4a9323a6/fork-analysis/mergedmonitor/mergedmonitor.json"},{"channel":"merge_mining","source":"mergedmonitor","child_chain":"namecoin","provenance":"https://github.com/NStifter/mergedmonitor/blob/54344d4e355f73eb94bef8d391e8fb6e4a9323a6/fork-analysis/mergedmonitor/mergedmonitor.json"}]} -{"height":226895,"hash":"000000000000030a6d0a4a0c91af3610843d170594eac75cc8a0e16390ba9559","header":"020000006036e5185cf3827a9a67d45375ac98fb3ec26b598a86204fdd010000000000002fff1208697910da11f0f06122c0fb16a4213c341b7d4ea8ea38c23012057463b07d4951fa75031aacfaebd9","prev_hash":"00000000000001dd4f20868a596bc23efb98ac7553d4679a7a82f35c18e53660","nTime":1363770800,"core_reject_reason":"bad-cb-height","rule":"bip34_v2_coinbase_height_mismatch","context":{"expected_nbits":"1a0375fa","coinbase_height":436434426,"coinbase_scriptsig_hex":"04fa75031a024502522cfabe6d6d016035269eb3ad99d1ff362ebd4536c56037cba0deffeb2bf2409cd7ae79bafc0800000000000000","pool":"mmpool","pool_basis":"reported","parent_kind":"canonical"},"observations":[{"channel":"merge_mining","source":"merge-mining-research","child_chain":"devcoin","child_height":82041,"provenance":"https://github.com/deadmanoz/merge-mining-research/blob/f543b1f23c57be6840c7a2a44a59306b5d0180f7/data/error-blocks/error_block_observations.csv#L12","child_block_hash":"7dd41fa396dd483ae9ed6c095e0f099fc08d2f9e02f84742a58221f86dcf01d7","child_block_time":1363770749,"child_header":"0101040049e26ec9674ec4379332081fe1a7422ef18fab2fc3f5ce3245b1ebef88d9fc6523078a428d3f35f1654dd284c1666da2bd467a43ff9c9dd717682f2cdeb2597e7d7d49512673021b00000000"},{"channel":"merge_mining","source":"merge-mining-research","child_chain":"ixcoin","child_height":123067,"provenance":"https://github.com/deadmanoz/merge-mining-research/blob/f543b1f23c57be6840c7a2a44a59306b5d0180f7/data/error-blocks/error_block_observations.csv#L35","child_block_hash":"f1d33597c5a630efecb37f0f66d3d67d6b9304500cbcf67d32e2b25e4ae24bad","child_block_time":1363770766,"child_header":"01010300b85255534b2054921a7ba22b9d8bce8de210c9fd2cf4630fffe783d228017e9563464e3a15de351a173fe1462adbcb3efa3f6082822ad393c9901b556b96008e8e7d49519e0c051b00000000"},{"channel":"merge_mining","source":"merge-mining-research","child_chain":"namecoin","child_height":101158,"provenance":"https://github.com/deadmanoz/merge-mining-research/blob/f543b1f23c57be6840c7a2a44a59306b5d0180f7/data/error-blocks/error_block_observations.csv#L52","child_block_hash":"29ceb559c8e4e4e12e419564220608af50a4e14517f84d96d8d78af2308350a2","child_block_time":1363770774},{"channel":"merge_mining","source":"mergedmonitor","child_chain":"devcoin","provenance":"https://github.com/NStifter/mergedmonitor/blob/54344d4e355f73eb94bef8d391e8fb6e4a9323a6/fork-analysis/mergedmonitor/mergedmonitor.json"},{"channel":"merge_mining","source":"mergedmonitor","child_chain":"ixcoin","provenance":"https://github.com/NStifter/mergedmonitor/blob/54344d4e355f73eb94bef8d391e8fb6e4a9323a6/fork-analysis/mergedmonitor/mergedmonitor.json"},{"channel":"merge_mining","source":"mergedmonitor","child_chain":"namecoin","provenance":"https://github.com/NStifter/mergedmonitor/blob/54344d4e355f73eb94bef8d391e8fb6e4a9323a6/fork-analysis/mergedmonitor/mergedmonitor.json"}]} -{"height":226912,"hash":"00000000000000a34d399a3cb82e222fad8e73e465b905e333ada1662c61e0e0","header":"0200000027e41c96a70919889e3f3f198e753ab05e7abad736ef9e660b01000000000000194b8dc54fb94a7134e6ba959266725ddaf0cbdcc51deba763b314a188d0f4d305994951fa75031a53b3fdc6","prev_hash":"000000000000010b669eef36d7ba7a5eb03a758e193f3f9e881909a7961ce427","nTime":1363777797,"core_reject_reason":"bad-cb-height","rule":"bip34_v2_coinbase_height_mismatch","context":{"expected_nbits":"1a0375fa","coinbase_height":436434426,"coinbase_scriptsig_hex":"04fa75031a02ab00522cfabe6d6dfd815d1d65ff88b939971ca477af659572ea9543a296e67d465c60ef342bfa500800000000000000","pool":"mmpool","pool_basis":"reported","parent_kind":"canonical"},"observations":[{"channel":"merge_mining","source":"merge-mining-research","child_chain":"devcoin","child_height":82055,"provenance":"https://github.com/deadmanoz/merge-mining-research/blob/f543b1f23c57be6840c7a2a44a59306b5d0180f7/data/error-blocks/error_block_observations.csv#L13","child_block_hash":"777783caba68202d4cc012203def39694ec8698edd280b8bdf74aafbc305957a","child_block_time":1363777739,"child_header":"010104008463a8d9e8e31552f6070b44a09019a6242cd501e947bb94002a6f632314c669c279e4ed90f89c5b09e1578287a629488f55cdc64fba55a617d1810c986b621ecb9849511460021b00000000"},{"channel":"merge_mining","source":"merge-mining-research","child_chain":"ixcoin","child_height":123093,"provenance":"https://github.com/deadmanoz/merge-mining-research/blob/f543b1f23c57be6840c7a2a44a59306b5d0180f7/data/error-blocks/error_block_observations.csv#L36","child_block_hash":"6423a2132ba0d7523e2cffb4e21c74a0287ce9b4c677bc431825c81c92da8335","child_block_time":1363777719,"child_header":"01010300c5577918c001b292902ab13c55dc5c332866e27323df0fdd42e1003c58a838cd9e9254998563bc6de120417204f8ec88b7d76355c070253602b4593346bdad7cb79849519e0c051b00000000"},{"channel":"merge_mining","source":"merge-mining-research","child_chain":"namecoin","child_height":101169,"provenance":"https://github.com/deadmanoz/merge-mining-research/blob/f543b1f23c57be6840c7a2a44a59306b5d0180f7/data/error-blocks/error_block_observations.csv#L53","child_block_hash":"46a3c04b871ab54058bf4b339bf77fbe94ab769437dc286fb1099a2ea7add696","child_block_time":1363777754},{"channel":"merge_mining","source":"mergedmonitor","child_chain":"devcoin","provenance":"https://github.com/NStifter/mergedmonitor/blob/54344d4e355f73eb94bef8d391e8fb6e4a9323a6/fork-analysis/mergedmonitor/mergedmonitor.json"},{"channel":"merge_mining","source":"mergedmonitor","child_chain":"ixcoin","provenance":"https://github.com/NStifter/mergedmonitor/blob/54344d4e355f73eb94bef8d391e8fb6e4a9323a6/fork-analysis/mergedmonitor/mergedmonitor.json"},{"channel":"merge_mining","source":"mergedmonitor","child_chain":"namecoin","provenance":"https://github.com/NStifter/mergedmonitor/blob/54344d4e355f73eb94bef8d391e8fb6e4a9323a6/fork-analysis/mergedmonitor/mergedmonitor.json"}]} +{"height":226845,"hash":"00000000000000c37c3327de7555db3e3dbe91cbe0294e532f8a32574d5b997d","header":"02000000f77ebccf92b40cf51a525875220875df01b95c778ddf8ac52f030000000000005d4e6eba589cc767dd1a2fa1dbbbc9c35f28b9ded13447b43d8acf8c3e0bbce2522c4951fa75031a2e7bb6a5","prev_hash":"000000000000032fc58adf8d775cb901df7508227558521af50cb492cfbc7ef7","nTime":1363749970,"core_reject_reason":"bad-cb-height","rule":"bip34_v2_coinbase_height_mismatch","context":{"expected_nbits":"1a0375fa","coinbase_height":436434426,"coinbase_scriptsig_hex":"04fa75031a0164522cfabe6d6d8ff0a68e344b586a001a21254da9133a46d86d070ddd2c19529d6c273a7b263d0800000000000000","pool":"mmpool","pool_basis":"reported","pool_provenance":"https://bitcointalk.org/index.php?topic=57148.msg1646921#msg1646921","parent_kind":"canonical"},"observations":[{"channel":"merge_mining","source":"merge-mining-research","child_chain":"devcoin","child_height":82009,"provenance":"https://github.com/deadmanoz/merge-mining-research/blob/f543b1f23c57be6840c7a2a44a59306b5d0180f7/data/error-blocks/error_block_observations.csv#L11","child_block_hash":"6d485b52fb8779e1a917607a2a954d45052f22fbd8050ebce16dda8f215904bc","child_block_time":1363749310,"child_header":"010104001abe9af97f4ecfdd8752535f0e51d64651f6827a3a7ffb47f26ffb0e301a2439d0d9f5c384025acb7aabd5fa3dc0ba8dcd0d850da2f15f8c5e801aa069c3d6f0be2949519589021b00000000"},{"channel":"merge_mining","source":"merge-mining-research","child_chain":"namecoin","child_height":101111,"provenance":"https://github.com/deadmanoz/merge-mining-research/blob/f543b1f23c57be6840c7a2a44a59306b5d0180f7/data/error-blocks/error_block_observations.csv#L51","child_block_hash":"4b136930741efaa66d716dcbeb07b89be946e00e65b1f473d0c2a7c4469e3d43","child_block_time":1363749919},{"channel":"merge_mining","source":"mergedmonitor","child_chain":"devcoin","provenance":"https://github.com/NStifter/mergedmonitor/blob/54344d4e355f73eb94bef8d391e8fb6e4a9323a6/fork-analysis/mergedmonitor/mergedmonitor.json"},{"channel":"merge_mining","source":"mergedmonitor","child_chain":"namecoin","provenance":"https://github.com/NStifter/mergedmonitor/blob/54344d4e355f73eb94bef8d391e8fb6e4a9323a6/fork-analysis/mergedmonitor/mergedmonitor.json"}]} +{"height":226895,"hash":"000000000000030a6d0a4a0c91af3610843d170594eac75cc8a0e16390ba9559","header":"020000006036e5185cf3827a9a67d45375ac98fb3ec26b598a86204fdd010000000000002fff1208697910da11f0f06122c0fb16a4213c341b7d4ea8ea38c23012057463b07d4951fa75031aacfaebd9","prev_hash":"00000000000001dd4f20868a596bc23efb98ac7553d4679a7a82f35c18e53660","nTime":1363770800,"core_reject_reason":"bad-cb-height","rule":"bip34_v2_coinbase_height_mismatch","context":{"expected_nbits":"1a0375fa","coinbase_height":436434426,"coinbase_scriptsig_hex":"04fa75031a024502522cfabe6d6d016035269eb3ad99d1ff362ebd4536c56037cba0deffeb2bf2409cd7ae79bafc0800000000000000","pool":"mmpool","pool_basis":"reported","pool_provenance":"https://bitcointalk.org/index.php?topic=57148.msg1646921#msg1646921","parent_kind":"canonical"},"observations":[{"channel":"merge_mining","source":"merge-mining-research","child_chain":"devcoin","child_height":82041,"provenance":"https://github.com/deadmanoz/merge-mining-research/blob/f543b1f23c57be6840c7a2a44a59306b5d0180f7/data/error-blocks/error_block_observations.csv#L12","child_block_hash":"7dd41fa396dd483ae9ed6c095e0f099fc08d2f9e02f84742a58221f86dcf01d7","child_block_time":1363770749,"child_header":"0101040049e26ec9674ec4379332081fe1a7422ef18fab2fc3f5ce3245b1ebef88d9fc6523078a428d3f35f1654dd284c1666da2bd467a43ff9c9dd717682f2cdeb2597e7d7d49512673021b00000000"},{"channel":"merge_mining","source":"merge-mining-research","child_chain":"ixcoin","child_height":123067,"provenance":"https://github.com/deadmanoz/merge-mining-research/blob/f543b1f23c57be6840c7a2a44a59306b5d0180f7/data/error-blocks/error_block_observations.csv#L35","child_block_hash":"f1d33597c5a630efecb37f0f66d3d67d6b9304500cbcf67d32e2b25e4ae24bad","child_block_time":1363770766,"child_header":"01010300b85255534b2054921a7ba22b9d8bce8de210c9fd2cf4630fffe783d228017e9563464e3a15de351a173fe1462adbcb3efa3f6082822ad393c9901b556b96008e8e7d49519e0c051b00000000"},{"channel":"merge_mining","source":"merge-mining-research","child_chain":"namecoin","child_height":101158,"provenance":"https://github.com/deadmanoz/merge-mining-research/blob/f543b1f23c57be6840c7a2a44a59306b5d0180f7/data/error-blocks/error_block_observations.csv#L52","child_block_hash":"29ceb559c8e4e4e12e419564220608af50a4e14517f84d96d8d78af2308350a2","child_block_time":1363770774},{"channel":"merge_mining","source":"mergedmonitor","child_chain":"devcoin","provenance":"https://github.com/NStifter/mergedmonitor/blob/54344d4e355f73eb94bef8d391e8fb6e4a9323a6/fork-analysis/mergedmonitor/mergedmonitor.json"},{"channel":"merge_mining","source":"mergedmonitor","child_chain":"ixcoin","provenance":"https://github.com/NStifter/mergedmonitor/blob/54344d4e355f73eb94bef8d391e8fb6e4a9323a6/fork-analysis/mergedmonitor/mergedmonitor.json"},{"channel":"merge_mining","source":"mergedmonitor","child_chain":"namecoin","provenance":"https://github.com/NStifter/mergedmonitor/blob/54344d4e355f73eb94bef8d391e8fb6e4a9323a6/fork-analysis/mergedmonitor/mergedmonitor.json"}]} +{"height":226912,"hash":"00000000000000a34d399a3cb82e222fad8e73e465b905e333ada1662c61e0e0","header":"0200000027e41c96a70919889e3f3f198e753ab05e7abad736ef9e660b01000000000000194b8dc54fb94a7134e6ba959266725ddaf0cbdcc51deba763b314a188d0f4d305994951fa75031a53b3fdc6","prev_hash":"000000000000010b669eef36d7ba7a5eb03a758e193f3f9e881909a7961ce427","nTime":1363777797,"core_reject_reason":"bad-cb-height","rule":"bip34_v2_coinbase_height_mismatch","context":{"expected_nbits":"1a0375fa","coinbase_height":436434426,"coinbase_scriptsig_hex":"04fa75031a02ab00522cfabe6d6dfd815d1d65ff88b939971ca477af659572ea9543a296e67d465c60ef342bfa500800000000000000","pool":"mmpool","pool_basis":"reported","pool_provenance":"https://bitcointalk.org/index.php?topic=57148.msg1646921#msg1646921","parent_kind":"canonical"},"observations":[{"channel":"merge_mining","source":"merge-mining-research","child_chain":"devcoin","child_height":82055,"provenance":"https://github.com/deadmanoz/merge-mining-research/blob/f543b1f23c57be6840c7a2a44a59306b5d0180f7/data/error-blocks/error_block_observations.csv#L13","child_block_hash":"777783caba68202d4cc012203def39694ec8698edd280b8bdf74aafbc305957a","child_block_time":1363777739,"child_header":"010104008463a8d9e8e31552f6070b44a09019a6242cd501e947bb94002a6f632314c669c279e4ed90f89c5b09e1578287a629488f55cdc64fba55a617d1810c986b621ecb9849511460021b00000000"},{"channel":"merge_mining","source":"merge-mining-research","child_chain":"ixcoin","child_height":123093,"provenance":"https://github.com/deadmanoz/merge-mining-research/blob/f543b1f23c57be6840c7a2a44a59306b5d0180f7/data/error-blocks/error_block_observations.csv#L36","child_block_hash":"6423a2132ba0d7523e2cffb4e21c74a0287ce9b4c677bc431825c81c92da8335","child_block_time":1363777719,"child_header":"01010300c5577918c001b292902ab13c55dc5c332866e27323df0fdd42e1003c58a838cd9e9254998563bc6de120417204f8ec88b7d76355c070253602b4593346bdad7cb79849519e0c051b00000000"},{"channel":"merge_mining","source":"merge-mining-research","child_chain":"namecoin","child_height":101169,"provenance":"https://github.com/deadmanoz/merge-mining-research/blob/f543b1f23c57be6840c7a2a44a59306b5d0180f7/data/error-blocks/error_block_observations.csv#L53","child_block_hash":"46a3c04b871ab54058bf4b339bf77fbe94ab769437dc286fb1099a2ea7add696","child_block_time":1363777754},{"channel":"merge_mining","source":"mergedmonitor","child_chain":"devcoin","provenance":"https://github.com/NStifter/mergedmonitor/blob/54344d4e355f73eb94bef8d391e8fb6e4a9323a6/fork-analysis/mergedmonitor/mergedmonitor.json"},{"channel":"merge_mining","source":"mergedmonitor","child_chain":"ixcoin","provenance":"https://github.com/NStifter/mergedmonitor/blob/54344d4e355f73eb94bef8d391e8fb6e4a9323a6/fork-analysis/mergedmonitor/mergedmonitor.json"},{"channel":"merge_mining","source":"mergedmonitor","child_chain":"namecoin","provenance":"https://github.com/NStifter/mergedmonitor/blob/54344d4e355f73eb94bef8d391e8fb6e4a9323a6/fork-analysis/mergedmonitor/mergedmonitor.json"}]} {"height":229388,"hash":"00000000000000329b2b44eca61829f13c94bbafb35022f13e49ffff279e3f03","header":"02000000f1ee309b4cd8cca9b0d7de01af3f7445bb4a1d6cef49b0b8380100000000000005082ee9139cb8e8b74afed2b16b2671371ee60b5959d7896d42b09def2e83273fb75b516e81021a5f159853","prev_hash":"0000000000000138b8b049ef6c1d4abb45743faf01ded7b0a9ccd84c9b30eef1","nTime":1364965183,"core_reject_reason":"bad-cb-height","rule":"bip34_coinbase_height_mismatch","context":{"expected_nbits":"1a02816e","coinbase_height":229426,"coinbase_scriptsig_hex":"0332800370736a046e81021a04e900c812522cfabe6d6d84a6a479387f8dfdc7b3256d61e2d5ba08d6dd2adb8090010936cff61dfebce70100000000000000425443204775696c642033ac1eeeed88","pool":"BTC Guild","pool_basis":"tag","parent_kind":"canonical"},"observations":[{"channel":"merge_mining","source":"merge-mining-research","child_chain":"namecoin","child_height":103543,"provenance":"https://github.com/deadmanoz/merge-mining-research/blob/f543b1f23c57be6840c7a2a44a59306b5d0180f7/data/error-blocks/error_block_observations.csv#L56","child_block_hash":"84a6a479387f8dfdc7b3256d61e2d5ba08d6dd2adb8090010936cff61dfebce7","child_block_time":1364965116},{"channel":"merge_mining","source":"mergedmonitor","child_chain":"namecoin","provenance":"https://github.com/NStifter/mergedmonitor/blob/54344d4e355f73eb94bef8d391e8fb6e4a9323a6/fork-analysis/mergedmonitor/mergedmonitor.json"}]} {"height":229388,"hash":"000000000000008af04b94d8286fe0e8d0aea3b2f35e758ef1e73e153169fa58","header":"02000000f1ee309b4cd8cca9b0d7de01af3f7445bb4a1d6cef49b0b83801000000000000e37420b5b31b8fca3391c447b2e2ac4919ef5b546d9a55637da33d9e13f57c2ae9b35b516e81021a2f08c260","prev_hash":"0000000000000138b8b049ef6c1d4abb45743faf01ded7b0a9ccd84c9b30eef1","nTime":1364964329,"core_reject_reason":"bad-cb-height","rule":"bip34_coinbase_height_mismatch","context":{"expected_nbits":"1a02816e","coinbase_height":229425,"coinbase_scriptsig_hex":"0331800370736a046e81021a04f9bfbe12522cfabe6d6d09236c4cc87a673a8b478605e6fcdd5585c5bc4609916597bd962bd2ed862e680100000000000000425443204775696c642033ac1eeeed88","pool":"BTC Guild","pool_basis":"tag","parent_kind":"canonical"},"observations":[{"channel":"merge_mining","source":"merge-mining-research","child_chain":"namecoin","child_height":103541,"provenance":"https://github.com/deadmanoz/merge-mining-research/blob/f543b1f23c57be6840c7a2a44a59306b5d0180f7/data/error-blocks/error_block_observations.csv#L55","child_block_hash":"09236c4cc87a673a8b478605e6fcdd5585c5bc4609916597bd962bd2ed862e68","child_block_time":1364964071},{"channel":"merge_mining","source":"mergedmonitor","child_chain":"namecoin","provenance":"https://github.com/NStifter/mergedmonitor/blob/54344d4e355f73eb94bef8d391e8fb6e4a9323a6/fork-analysis/mergedmonitor/mergedmonitor.json"}]} {"height":229388,"hash":"00000000000001365d20401c25e9c8c1bc1570f99a943bc1575b20e16d77a18c","header":"02000000f1ee309b4cd8cca9b0d7de01af3f7445bb4a1d6cef49b0b838010000000000002ec69a1597e707ae5eff51be565ff16b8a712f946aa489046563b34db4ef9ac9bcef5b516e81021a9f76b3ea","prev_hash":"0000000000000138b8b049ef6c1d4abb45743faf01ded7b0a9ccd84c9b30eef1","nTime":1364979644,"core_reject_reason":"bad-cb-height","rule":"bip34_coinbase_height_mismatch","context":{"expected_nbits":"1a02816e","coinbase_height":229457,"coinbase_scriptsig_hex":"0351800370736a046e81021a0402076813522cfabe6d6d9f81006fa0cb5799f97b3f8ee995dbbda55c1e83754d64cadb321d1db65dc8d30100000000000000425443204775696c642033ac1eeeed88","pool":"BTC Guild","pool_basis":"tag","parent_kind":"canonical"},"observations":[{"channel":"merge_mining","source":"merge-mining-research","child_chain":"namecoin","child_height":103577,"provenance":"https://github.com/deadmanoz/merge-mining-research/blob/f543b1f23c57be6840c7a2a44a59306b5d0180f7/data/error-blocks/error_block_observations.csv#L57","child_block_hash":"9f81006fa0cb5799f97b3f8ee995dbbda55c1e83754d64cadb321d1db65dc8d3","child_block_time":1364979601},{"channel":"merge_mining","source":"mergedmonitor","child_chain":"namecoin","provenance":"https://github.com/NStifter/mergedmonitor/blob/54344d4e355f73eb94bef8d391e8fb6e4a9323a6/fork-analysis/mergedmonitor/mergedmonitor.json"}]} @@ -112,9 +112,9 @@ {"height":331674,"hash":"00000000000000000d610e393ffeed6b9494d54121f05f7a3905f940f0e0cf69","header":"020000002a11510a57390ded95eccc26bd35a83de4fc17dc75bbbc10000000000000000049ef9f18b223482653e3587739cc9adbc70a4d79b1b3b5dd7fc143b791d7c6c1e58f755461481b180b3bf3f3","prev_hash":"000000000000000010bcbb75dc17fce43da835bd26ccec95ed0d39570a51112a","nTime":1416990693,"core_reject_reason":"bad-cb-height","rule":"bip34_coinbase_height_mismatch","context":{"expected_nbits":"181b4861","coinbase_height":331675,"coinbase_scriptsig_hex":"039b0f05e4b883e5bda9e7a59ee4bb99e9b1bcfabe6d6d43ca0fd0c1489d7195b50b67a538a60a8aac6e5782e44261ae0c5ada2b2fbce11000000000000000010c01ffda4701004d696e6564206279206c656e676775616e677869616e","pool":"lengguangxian","pool_basis":"tag","parent_kind":"invalid"},"observations":[{"channel":"merge_mining","source":"merge-mining-research","child_chain":"devcoin","child_height":163402,"provenance":"https://github.com/deadmanoz/merge-mining-research/blob/f543b1f23c57be6840c7a2a44a59306b5d0180f7/data/error-blocks/error_block_observations.csv#L16","child_block_hash":"27dfdd8329a651e3036ddafd9939fde96a1b627b72f6412dd149a7bd05f9a232","child_block_time":1416990547,"child_header":"01010400a986bc310ce72f074d892c68a25056bdd28a47ba398086a707ae56a65743569ea8f61788b3aef6d8134dcb16a21afcddb3aa191d3ecf6bfb61a0dc1812d7ae8d538f7554179a3d1800000000"},{"channel":"merge_mining","source":"merge-mining-research","child_chain":"ixcoin","child_height":234210,"provenance":"https://github.com/deadmanoz/merge-mining-research/blob/f543b1f23c57be6840c7a2a44a59306b5d0180f7/data/error-blocks/error_block_observations.csv#L39","child_block_hash":"31353dc7469095c0324bcc9c39377e9f85c167d0d254d4cdd32e41214544f55b","child_block_time":1416990614,"child_header":"010103006597b87f08297e06ba8aea3d98f7adef652c21bbe90a63cb6286762085972804608a2c43e6588679c6d911eaf58a8ebfd32e21312286b469eda990ea66a18179968f7554f8f93d1800000000"},{"channel":"merge_mining","source":"merge-mining-research","child_chain":"namecoin","child_height":207159,"provenance":"https://github.com/deadmanoz/merge-mining-research/blob/f543b1f23c57be6840c7a2a44a59306b5d0180f7/data/error-blocks/error_block_observations.csv#L62","child_block_hash":"cf7b250b370d7cfc8823919994bb2b90ebc1e8e3d92620c5543e1763e3b1245b","child_block_time":1416990551,"child_header":"02010100e7a3536edf7ebbcea39d5ac542b59083ef26737164d0296a68dd2af28ffad735572d6632f0f6dc1598f86affce191fa7ce6dfb4a0fe474f7ce6ed6c45b8e3eca578f7554f955331800000000"},{"channel":"merge_mining","source":"mergedmonitor","child_chain":"devcoin","provenance":"https://github.com/NStifter/mergedmonitor/blob/54344d4e355f73eb94bef8d391e8fb6e4a9323a6/fork-analysis/mergedmonitor/mergedmonitor.json"},{"channel":"merge_mining","source":"mergedmonitor","child_chain":"i0coin","provenance":"https://github.com/NStifter/mergedmonitor/blob/54344d4e355f73eb94bef8d391e8fb6e4a9323a6/fork-analysis/mergedmonitor/mergedmonitor.json"},{"channel":"merge_mining","source":"mergedmonitor","child_chain":"ixcoin","provenance":"https://github.com/NStifter/mergedmonitor/blob/54344d4e355f73eb94bef8d391e8fb6e4a9323a6/fork-analysis/mergedmonitor/mergedmonitor.json"},{"channel":"merge_mining","source":"mergedmonitor","child_chain":"namecoin","provenance":"https://github.com/NStifter/mergedmonitor/blob/54344d4e355f73eb94bef8d391e8fb6e4a9323a6/fork-analysis/mergedmonitor/mergedmonitor.json"},{"channel":"merge_mining","source":"merge-mining-research","child_chain":"i0coin","child_height":1315884,"child_block_hash":"55491ea85a0d48e43710cbbfeb22c88d828596484f443c8154fb6db83e0157d9","child_block_time":1416990688,"child_header":"01010200e26cb8806a9d66176b099dd02f985615c80dda45b66cc4bc33a50f191f26fe58201fb0800de1051022c3827dc6dee57827f68f22fefb198476d7100160273de0e08f7554e1d1031900000000","provenance":"https://drive.google.com/file/d/11-D1r5s8267YmOT1VaObrcmVoV8d_JAn/view?usp=sharing"}]} {"height":331735,"hash":"000000000000000010d43fb3f8d02cab156f333f2bfc172de9e6d87359118a1a","header":"02000000b228e7793c713d7452898047cda97c6a18eaa89a7beae71900000000000000001996d26e735c678ef161026ad86a07cd3bc57ff8796c7d79dd975bbeae841b64dd34765461481b18e7e8d1db","prev_hash":"000000000000000019e7ea7b9aa8ea186a7ca9cd47808952743d713c79e728b2","nTime":1417032925,"core_reject_reason":"bad-cb-height","rule":"bip34_coinbase_height_mismatch","context":{"expected_nbits":"181b4861","coinbase_height":331736,"coinbase_scriptsig_hex":"03d80f05194d696e656420627920416e74506f6f6c201197731e547634ddfabe6d6d02b0c8aa564c26d206db1bb2305bf3cba8ad46f355e7238fa5864a06a3a776ec0400000000000000650200007f58e854","pool":"AntPool","pool_basis":"tag","parent_kind":"canonical"},"observations":[{"channel":"merge_mining","source":"merge-mining-research","child_chain":"devcoin","child_height":163460,"provenance":"https://github.com/deadmanoz/merge-mining-research/blob/f543b1f23c57be6840c7a2a44a59306b5d0180f7/data/error-blocks/error_block_observations.csv#L17","child_block_hash":"12531c85a17b26e3ad3442ed7536f48d7b1e8973b181ae9abdf1b8e15974ac2e","child_block_time":1417032681,"child_header":"01010400b85cf26bc29272399c2f904f2fb36d3f05b7203ef1615d95ce60e02c52b45adf859b644f31b0ff8537ec07b06a8edd1a1ae6b5b1aadd455e79252fc44571ae03e9337654f86a351800000000"},{"channel":"merge_mining","source":"merge-mining-research","child_chain":"ixcoin","child_height":234279,"provenance":"https://github.com/deadmanoz/merge-mining-research/blob/f543b1f23c57be6840c7a2a44a59306b5d0180f7/data/error-blocks/error_block_observations.csv#L40","child_block_hash":"9ec0a5e6e2afa97a097c28ae71998fdd5230ad02c0e1eb6a238c66db6691c334","child_block_time":1417032681,"child_header":"01010300e9f7bd989f4e6a68be9a694f3077490fabc670a0996e87b9342245b443efc5d1343c3df28ad10df76ff945d17e442f94c4ac110a79459023673a5d2acf4ebd3ee9337654f8f93d1800000000"},{"channel":"merge_mining","source":"merge-mining-research","child_chain":"namecoin","child_height":207232,"provenance":"https://github.com/deadmanoz/merge-mining-research/blob/f543b1f23c57be6840c7a2a44a59306b5d0180f7/data/error-blocks/error_block_observations.csv#L63","child_block_hash":"aa1fdb54f4ba89a6f0e0b4196b5613540e6c1febf9f89adabede9eb81ef3ff31","child_block_time":1417032681},{"channel":"merge_mining","source":"mergedmonitor","child_chain":"devcoin","provenance":"https://github.com/NStifter/mergedmonitor/blob/54344d4e355f73eb94bef8d391e8fb6e4a9323a6/fork-analysis/mergedmonitor/mergedmonitor.json"},{"channel":"merge_mining","source":"mergedmonitor","child_chain":"ixcoin","provenance":"https://github.com/NStifter/mergedmonitor/blob/54344d4e355f73eb94bef8d391e8fb6e4a9323a6/fork-analysis/mergedmonitor/mergedmonitor.json"},{"channel":"merge_mining","source":"mergedmonitor","child_chain":"namecoin","provenance":"https://github.com/NStifter/mergedmonitor/blob/54344d4e355f73eb94bef8d391e8fb6e4a9323a6/fork-analysis/mergedmonitor/mergedmonitor.json"}]} {"height":363726,"hash":"0000000000000000032527aa796d3672e32e5f85a452d3a584a28fc7efbcd5d0","header":"020000003109b588941188a9f1c2576aae462d729b8cce9da1ea790300000000000000000f5a43f10171ff87c1411e5c5478a72fff16b12023ee382168515b18a41b83c1543d97558e41161831fc274a","prev_hash":"00000000000000000379eaa19dce8c9b722d46ae6a57c2f1a988119488b50931","nTime":1435974996,"core_reject_reason":"bad-version","rule":"bip66_block_version_below_3","context":{"parent_kind":"canonical"},"observations":[{"channel":"p2p","source":"kit-mon1","first_seen":1436886615,"provenance":"https://github.com/NStifter/mergedmonitor/blob/54344d4e355f73eb94bef8d391e8fb6e4a9323a6/fork-analysis/kit/mon1.json.tar.gz"},{"channel":"p2p","source":"kit-mon2","first_seen":1437057180,"provenance":"https://github.com/NStifter/mergedmonitor/blob/54344d4e355f73eb94bef8d391e8fb6e4a9323a6/fork-analysis/kit/mon2.json.tar.gz"},{"channel":"scrape","source":"blockchain.com","provenance":"https://github.com/NStifter/mergedmonitor/blob/54344d4e355f73eb94bef8d391e8fb6e4a9323a6/fork-analysis/blockchain.com/orphans_blockchain.com.json"}]} -{"height":363731,"hash":"0000000000000000009cc829aa25b40b2cd4eb83dd498c12ad0d26d90c439d99","header":"020000009e576e5a71f5af67e4dac515f8f3c02e536bb452d720a3060000000000000000699ff8e92806063b23a2e70009ec8d10cfc97a9a8a9a508f1b6b189b06845c7d644097558e411618b943d647","prev_hash":"000000000000000006a320d752b46b532ec0f3f815c5dae467aff5715a6e579e","nTime":1435975780,"core_reject_reason":"bad-version","rule":"bip66_block_version_below_3","context":{"expected_nbits":"1816418e","coinbase_height":363731,"coinbase_scriptsig_hex":"03d38c05062f503253482f043e40975508f80da7c59f1200000d2f7374726174756d506f6f6c2f","pool":"BTC Nuggets","pool_basis":"address","parent_kind":"canonical"},"observations":[{"channel":"scrape","source":"blockchain.com","provenance":"https://github.com/crossclaim/btcrelay-sol/blob/1cf676d387c4514770b91e4ca15094194f446677/test/testdata/old_headers/fork/20150704/363731.json"}]} +{"height":363731,"hash":"0000000000000000009cc829aa25b40b2cd4eb83dd498c12ad0d26d90c439d99","header":"020000009e576e5a71f5af67e4dac515f8f3c02e536bb452d720a3060000000000000000699ff8e92806063b23a2e70009ec8d10cfc97a9a8a9a508f1b6b189b06845c7d644097558e411618b943d647","prev_hash":"000000000000000006a320d752b46b532ec0f3f815c5dae467aff5715a6e579e","nTime":1435975780,"core_reject_reason":"bad-version","rule":"bip66_block_version_below_3","context":{"expected_nbits":"1816418e","coinbase_height":363731,"coinbase_scriptsig_hex":"03d38c05062f503253482f043e40975508f80da7c59f1200000d2f7374726174756d506f6f6c2f","pool":"BTC Nuggets","pool_basis":"address","pool_provenance":"https://github.com/bitcoin-data/mining-pools/blob/af720b67faa2f157264db33c644eb1b0fa95af5f/pools/btc-nuggets.json","parent_kind":"canonical"},"observations":[{"channel":"scrape","source":"blockchain.com","provenance":"https://github.com/crossclaim/btcrelay-sol/blob/1cf676d387c4514770b91e4ca15094194f446677/test/testdata/old_headers/fork/20150704/363731.json"}]} {"height":363847,"hash":"00000000000000000c9bb4a508fff34f5450d9c62ef2cb833e53909a4c549de5","header":"0200000076e168bf1a90e1d8b11ecced4a0fb346f3e22832edbf3f0c0000000000000000733a6d9f466fd1c278b401fa8e1298e260ec46a510f4f5baa03ab09a9cfde4d7955298558e41161873fb1718","prev_hash":"00000000000000000c3fbfed3228e2f346b30f4aedcc1eb1d8e1901abf68e176","nTime":1436045973,"core_reject_reason":"bad-version","rule":"bip66_block_version_below_3","context":{"parent_kind":"canonical"},"observations":[{"channel":"p2p","source":"kit-mon1","first_seen":1436886879,"provenance":"https://github.com/NStifter/mergedmonitor/blob/54344d4e355f73eb94bef8d391e8fb6e4a9323a6/fork-analysis/kit/mon1.json.tar.gz"},{"channel":"p2p","source":"kit-mon2","first_seen":1437145172,"provenance":"https://github.com/NStifter/mergedmonitor/blob/54344d4e355f73eb94bef8d391e8fb6e4a9323a6/fork-analysis/kit/mon2.json.tar.gz"},{"channel":"scrape","source":"blockchain.com","provenance":"https://github.com/NStifter/mergedmonitor/blob/54344d4e355f73eb94bef8d391e8fb6e4a9323a6/fork-analysis/blockchain.com/orphans_blockchain.com.json"}]} -{"height":363967,"hash":"00000000000000000954ed93eda1e79e8261137548fa9ccf4d516bb384a3660b","header":"02000000d0ee922c45dfe214d3aaaddbe314faf9faeb52d88b2e9d000000000000000000742832b0e5574ef9653054858b6a9459a9cb46ddd95aa091b993e0df96a48c6a7f5999558e411618a20e60e8","prev_hash":"0000000000000000009d2e8bd852ebfaf9fa14e3dbadaad314e2df452c92eed0","nTime":1436113279,"core_reject_reason":"bad-version","rule":"bip66_block_version_below_3","context":{"expected_nbits":"1816418e","coinbase_height":363967,"coinbase_scriptsig_hex":"03bf8d05045599597ffabe6d6d27e048c4a0bfe74e325a7c96ace681cb0857905425f4c24ca88fb3b646fed3e70100000000000000180100004c534b02","pool":"Bitsolo","pool_basis":"address","parent_kind":"canonical"},"observations":[{"channel":"merge_mining","source":"merge-mining-research","child_chain":"namecoin","child_height":237930,"provenance":"https://github.com/deadmanoz/merge-mining-research/blob/f543b1f23c57be6840c7a2a44a59306b5d0180f7/data/error-blocks/error_block_observations.csv#L64","child_block_hash":"27e048c4a0bfe74e325a7c96ace681cb0857905425f4c24ca88fb3b646fed3e7","child_block_time":1436113379},{"channel":"merge_mining","source":"mergedmonitor","child_chain":"namecoin","provenance":"https://github.com/NStifter/mergedmonitor/blob/54344d4e355f73eb94bef8d391e8fb6e4a9323a6/fork-analysis/mergedmonitor/mergedmonitor.json"},{"channel":"p2p","source":"kit-mon1","first_seen":1437145232,"provenance":"https://github.com/NStifter/mergedmonitor/blob/54344d4e355f73eb94bef8d391e8fb6e4a9323a6/fork-analysis/kit/mon1.json.tar.gz"},{"channel":"p2p","source":"kit-mon2","first_seen":1437145232,"provenance":"https://github.com/NStifter/mergedmonitor/blob/54344d4e355f73eb94bef8d391e8fb6e4a9323a6/fork-analysis/kit/mon2.json.tar.gz"},{"channel":"scrape","source":"blockchain.com","provenance":"https://github.com/NStifter/mergedmonitor/blob/54344d4e355f73eb94bef8d391e8fb6e4a9323a6/fork-analysis/blockchain.com/orphans_blockchain.com.json"}]} +{"height":363967,"hash":"00000000000000000954ed93eda1e79e8261137548fa9ccf4d516bb384a3660b","header":"02000000d0ee922c45dfe214d3aaaddbe314faf9faeb52d88b2e9d000000000000000000742832b0e5574ef9653054858b6a9459a9cb46ddd95aa091b993e0df96a48c6a7f5999558e411618a20e60e8","prev_hash":"0000000000000000009d2e8bd852ebfaf9fa14e3dbadaad314e2df452c92eed0","nTime":1436113279,"core_reject_reason":"bad-version","rule":"bip66_block_version_below_3","context":{"expected_nbits":"1816418e","coinbase_height":363967,"coinbase_scriptsig_hex":"03bf8d05045599597ffabe6d6d27e048c4a0bfe74e325a7c96ace681cb0857905425f4c24ca88fb3b646fed3e70100000000000000180100004c534b02","pool":"Bitsolo","pool_basis":"address","pool_provenance":"https://github.com/bitcoin-data/mining-pools/blob/af720b67faa2f157264db33c644eb1b0fa95af5f/pools/bitsolo.json","parent_kind":"canonical"},"observations":[{"channel":"merge_mining","source":"merge-mining-research","child_chain":"namecoin","child_height":237930,"provenance":"https://github.com/deadmanoz/merge-mining-research/blob/f543b1f23c57be6840c7a2a44a59306b5d0180f7/data/error-blocks/error_block_observations.csv#L64","child_block_hash":"27e048c4a0bfe74e325a7c96ace681cb0857905425f4c24ca88fb3b646fed3e7","child_block_time":1436113379},{"channel":"merge_mining","source":"mergedmonitor","child_chain":"namecoin","provenance":"https://github.com/NStifter/mergedmonitor/blob/54344d4e355f73eb94bef8d391e8fb6e4a9323a6/fork-analysis/mergedmonitor/mergedmonitor.json"},{"channel":"p2p","source":"kit-mon1","first_seen":1437145232,"provenance":"https://github.com/NStifter/mergedmonitor/blob/54344d4e355f73eb94bef8d391e8fb6e4a9323a6/fork-analysis/kit/mon1.json.tar.gz"},{"channel":"p2p","source":"kit-mon2","first_seen":1437145232,"provenance":"https://github.com/NStifter/mergedmonitor/blob/54344d4e355f73eb94bef8d391e8fb6e4a9323a6/fork-analysis/kit/mon2.json.tar.gz"},{"channel":"scrape","source":"blockchain.com","provenance":"https://github.com/NStifter/mergedmonitor/blob/54344d4e355f73eb94bef8d391e8fb6e4a9323a6/fork-analysis/blockchain.com/orphans_blockchain.com.json"}]} {"height":364341,"hash":"000000000000000012aac0664cd8b6cbc3ea485921a05f2c4340f928b0226d3c","header":"02000000cf955add9393b5e10d539356f171340697d226e98e6f680800000000000000003b46df0118463e54293ff11319cac5d609a6a3a6dbe614b773c49285896863a3298c9c558e4116186b69e33a","prev_hash":"000000000000000008686f8ee926d297063471f15693530de1b59393dd5a95cf","nTime":1436322857,"core_reject_reason":"bad-version","rule":"bip66_block_version_below_3","context":{"expected_nbits":"1816418e","coinbase_height":364341,"coinbase_scriptsig_hex":"03358f052cfabe6d6da8e7031652edd333c809b423e10227792e3dbcb7b173b1585dc1476ce72eb8000400000000000000062f503253482f","parent_kind":"canonical"},"observations":[{"channel":"merge_mining","source":"merge-mining-research","child_chain":"devcoin","child_height":192332,"provenance":"https://github.com/deadmanoz/merge-mining-research/blob/f543b1f23c57be6840c7a2a44a59306b5d0180f7/data/error-blocks/error_block_observations.csv#L18","child_block_hash":"2635fbea11ff1e0bf28467d868857cbd457169d30b8ca3dbfbc72a610807534b","child_block_time":1436322549,"child_header":"010104006db47708b4ec2f815af8bae59413f6f2b71eaac554d51bf6e43d4ee253466f91aacae1ed9c559a3b06bd42497a3defce8e78fddc5e70fe2c289606793854b343f58a9c55cb62031900000000"},{"channel":"merge_mining","source":"merge-mining-research","child_chain":"ixcoin","child_height":268098,"provenance":"https://github.com/deadmanoz/merge-mining-research/blob/f543b1f23c57be6840c7a2a44a59306b5d0180f7/data/error-blocks/error_block_observations.csv#L41","child_block_hash":"dc902a09beeb9e10a1e4dd0c41e66a0a64f6849d059478be823b5d9ede985f97","child_block_time":1436322789,"child_header":"01010300f73a32bbd472836d36d5b5cdd3c3d1596733ce93819db1daa3b039d4e400fbbe3247a15e209469719d5914c6e023ff321ce9127626660712c8cd26473283d53ce58b9c557e8c7e1800000000"},{"channel":"merge_mining","source":"merge-mining-research","child_chain":"namecoin","child_height":238279,"provenance":"https://github.com/deadmanoz/merge-mining-research/blob/f543b1f23c57be6840c7a2a44a59306b5d0180f7/data/error-blocks/error_block_observations.csv#L65","child_block_hash":"fc6c87936193dde9d03334e9357fd0f6c161f9fb0addc80bb35e15f763ae9242","child_block_time":1436322802},{"channel":"merge_mining","source":"mergedmonitor","child_chain":"devcoin","provenance":"https://github.com/NStifter/mergedmonitor/blob/54344d4e355f73eb94bef8d391e8fb6e4a9323a6/fork-analysis/mergedmonitor/mergedmonitor.json"},{"channel":"merge_mining","source":"mergedmonitor","child_chain":"ixcoin","provenance":"https://github.com/NStifter/mergedmonitor/blob/54344d4e355f73eb94bef8d391e8fb6e4a9323a6/fork-analysis/mergedmonitor/mergedmonitor.json"},{"channel":"merge_mining","source":"mergedmonitor","child_chain":"namecoin","provenance":"https://github.com/NStifter/mergedmonitor/blob/54344d4e355f73eb94bef8d391e8fb6e4a9323a6/fork-analysis/mergedmonitor/mergedmonitor.json"},{"channel":"p2p","source":"kit-mon1","first_seen":1437215507,"provenance":"https://github.com/NStifter/mergedmonitor/blob/54344d4e355f73eb94bef8d391e8fb6e4a9323a6/fork-analysis/kit/mon1.json.tar.gz"},{"channel":"p2p","source":"kit-mon2","first_seen":1437271117,"provenance":"https://github.com/NStifter/mergedmonitor/blob/54344d4e355f73eb94bef8d391e8fb6e4a9323a6/fork-analysis/kit/mon2.json.tar.gz"}]} {"height":367047,"hash":"00000000000000000f93ba8faf8bb018c7db642e30391748860cbfa5803a32a4","header":"0200000052621b40bc489705b02f2f02df486696ba5302610906100a000000000000000019dbb981ac5d96e8700dbf87a0dda31be5ad61dccca3dae1196915b4dbcd3d220fdab455150815188250fe62","prev_hash":"00000000000000000a100609610253ba966648df022f2fb0059748bc401b6252","nTime":1437915663,"core_reject_reason":"bad-version","rule":"bip66_block_version_below_3","context":{"expected_nbits":"18150815","coinbase_height":367047,"coinbase_scriptsig_hex":"03c79905534f434b25449607578bd762522cfabe6d6d8f433c640092b20a74c858f622235f3ef0a432b34b8d7f9a23ed781ec2c0b40120000000000000002f6d6d706f6f6c","pool":"mmpool","pool_basis":"tag","parent_kind":"canonical"},"observations":[{"channel":"merge_mining","source":"merge-mining-research","child_chain":"devcoin","child_height":194759,"provenance":"https://github.com/deadmanoz/merge-mining-research/blob/f543b1f23c57be6840c7a2a44a59306b5d0180f7/data/error-blocks/error_block_observations.csv#L19","child_block_hash":"0a81670fb1c2c92e3e69bc6c43a28b38feb48e20034612a26bbdb7d2a3650d0b","child_block_time":1437915532,"child_header":"010104006b8bfb7f1d7cbd5b34eee74e70d26abf48ee5a86b230aa0e2c2b0c02fb9387dd7dd3e422e31702fefaa26b4e70ab9c578286d1edcfaee8a590366e527545da2a8cd9b45512d1021900000000"},{"channel":"merge_mining","source":"merge-mining-research","child_chain":"groupcoin","child_height":180938,"provenance":"https://github.com/deadmanoz/merge-mining-research/blob/f543b1f23c57be6840c7a2a44a59306b5d0180f7/data/error-blocks/error_block_observations.csv#L24","child_block_hash":"a907e7dee1ada61662e332f887f8bfc8a0464f3f7fdb94c0856fd5b5e1584302","child_block_time":1437915602,"child_header":"010105001597e1749664b5f9d2cbc722676ba7544f00335f8ce35c3e5e4b74fc0ba8bf02901687ed35e52eb5b99e2afb7edb59cdd9ef27116ce2953a4f7c5d9d3094ebbdd2d9b455f44a021a00000000"},{"channel":"merge_mining","source":"merge-mining-research","child_chain":"i0coin","child_height":1546541,"provenance":"https://drive.google.com/file/d/11-D1r5s8267YmOT1VaObrcmVoV8d_JAn/view?usp=sharing","child_block_hash":"5bf13bc80a9b265fe895a1347190ce38ee0688ff8f02849fbbf7138bb776f1f2","child_block_time":1437915587,"child_header":"010102002d9a0b4ae23de80a62b3f44015b50d63bd1d8e041a16fba7cd969b4c5dbe2ca211c69033dda8d64a25191f6194d5df44d280e7ac6a937c302ec1f7e7ba14ce48c3d9b4557ffb011a00000000"},{"channel":"merge_mining","source":"merge-mining-research","child_chain":"namecoin","child_height":241087,"provenance":"https://github.com/deadmanoz/merge-mining-research/blob/f543b1f23c57be6840c7a2a44a59306b5d0180f7/data/error-blocks/error_block_observations.csv#L66","child_block_hash":"53382d7cd5ce62d3220c550f7ccd36650bc2fcc20ef5404f38b69ae5ae856398","child_block_time":1437915611},{"channel":"merge_mining","source":"merge-mining-research","child_chain":"unobtanium","child_height":637957,"provenance":"https://github.com/deadmanoz/merge-mining-research/blob/f543b1f23c57be6840c7a2a44a59306b5d0180f7/data/error-blocks/error_block_observations.csv#L87","child_block_hash":"fe3a8719509cfee3450bb36102405e6f2c706de19590f500db4cfc32562c614f","child_block_time":1437915647,"child_header":"03017500a6ad998bf971bca3ae3823fa9d39d286764e5baaad1dfca460ce72d666ed5889b1c993be66cf4eb570f2e02a7fcb3a2e2e28a81df315bc56e00ad249a975432bffd9b455d952621900000000"},{"channel":"merge_mining","source":"mergedmonitor","child_chain":"devcoin","provenance":"https://github.com/NStifter/mergedmonitor/blob/54344d4e355f73eb94bef8d391e8fb6e4a9323a6/fork-analysis/mergedmonitor/mergedmonitor.json"},{"channel":"merge_mining","source":"mergedmonitor","child_chain":"groupcoin","provenance":"https://github.com/NStifter/mergedmonitor/blob/54344d4e355f73eb94bef8d391e8fb6e4a9323a6/fork-analysis/mergedmonitor/mergedmonitor.json"},{"channel":"merge_mining","source":"mergedmonitor","child_chain":"i0coin","provenance":"https://github.com/NStifter/mergedmonitor/blob/54344d4e355f73eb94bef8d391e8fb6e4a9323a6/fork-analysis/mergedmonitor/mergedmonitor.json"},{"channel":"merge_mining","source":"mergedmonitor","child_chain":"namecoin","provenance":"https://github.com/NStifter/mergedmonitor/blob/54344d4e355f73eb94bef8d391e8fb6e4a9323a6/fork-analysis/mergedmonitor/mergedmonitor.json"},{"channel":"merge_mining","source":"mergedmonitor","child_chain":"unobtanium","provenance":"https://github.com/NStifter/mergedmonitor/blob/54344d4e355f73eb94bef8d391e8fb6e4a9323a6/fork-analysis/mergedmonitor/mergedmonitor.json"}]} {"height":380992,"hash":"0000000000000000084ee972bfe620224e6893448a9001d2b1f236ede0423779","header":"0300000092d98cb6018e9baa8dfe136fa81266dfa588c0ee23b26e030000000000000000af324cb995102e1d1c5e7d59459d5f651090881815f2a63f0eba667ce3db7538cf003156140f12182744ec68","prev_hash":"0000000000000000036eb223eec088a5df6612a86f13fe8daa9b8e01b68cd992","nTime":1446052047,"core_reject_reason":"time-too-old","rule":"time_below_mtp","context":{"expected_nbits":"18120f14","parent_mtp":1446068449,"coinbase_height":380992,"coinbase_scriptsig_hex":"0340d005e4b883e5bda9e7a59ee4bb99e9b1bcd50ac9b4c902bcd5e2bad45a05683fe7f021962425668f3d52fb85b887a7641d02000000f09f909f2f4249503130302f4d696e656420627920796e646c0000000000000000000000000000000000000000","pool":"yndl","pool_basis":"tag","parent_kind":"canonical"},"observations":[{"channel":"merge_mining","source":"merge-mining-research","child_chain":"namecoin","child_height":255293,"provenance":"https://github.com/deadmanoz/merge-mining-research/blob/f543b1f23c57be6840c7a2a44a59306b5d0180f7/data/error-blocks/error_block_observations.csv#L67","child_block_hash":"c4d8eda3b78a364d1376aa9ed5392b1f4eeb673f6d9fef3b9ede7f558bc50447","child_block_time":1446069661},{"channel":"merge_mining","source":"mergedmonitor","child_chain":"namecoin","provenance":"https://github.com/NStifter/mergedmonitor/blob/54344d4e355f73eb94bef8d391e8fb6e4a9323a6/fork-analysis/mergedmonitor/mergedmonitor.json"}]} @@ -122,8 +122,8 @@ {"height":389043,"hash":"00000000000000000306ea979ad487157d2950081413eb9d2dca82060f1b89b2","header":"030000009b8df38b440b4e93de66f1bc04aafd774d9b0f5eada3430900000000000000006e552de3422d394c0ef86c00bfd46e1b90ecc55f2a8c163ff9760d1850d6b782fc1374564fe60d18581bca4e","prev_hash":"00000000000000000943a3ad5e0f9b4d77fdaa04bcf166de934e0b448bf38d9b","nTime":1450447868,"core_reject_reason":"bad-version","rule":"bip65_block_version_below_4","context":{"expected_nbits":"180de64f","coinbase_height":389043,"coinbase_scriptsig_hex":"03b3ef05040314745608fabe6d6d20d6656f5ca5ac4408cbee6ff6d3235c6039015372788a3c0b0c39721502efd001000000000000004000000f873d00860d2f6e6f64655374726174756d2f","pool":"nodeStratum","pool_basis":"tag","parent_kind":"canonical"},"observations":[{"channel":"merge_mining","source":"merge-mining-research","child_chain":"namecoin","child_height":263217,"provenance":"https://github.com/deadmanoz/merge-mining-research/blob/f543b1f23c57be6840c7a2a44a59306b5d0180f7/data/error-blocks/error_block_observations.csv#L69","child_block_hash":"20d6656f5ca5ac4408cbee6ff6d3235c6039015372788a3c0b0c39721502efd0","child_block_time":1450447692},{"channel":"merge_mining","source":"mergedmonitor","child_chain":"namecoin","provenance":"https://github.com/NStifter/mergedmonitor/blob/54344d4e355f73eb94bef8d391e8fb6e4a9323a6/fork-analysis/mergedmonitor/mergedmonitor.json"},{"channel":"p2p","source":"kit-mon1","first_seen":1450447890,"provenance":"https://github.com/NStifter/mergedmonitor/blob/54344d4e355f73eb94bef8d391e8fb6e4a9323a6/fork-analysis/kit/mon1.json.tar.gz"},{"channel":"p2p","source":"kit-mon2","first_seen":1450447889,"provenance":"https://github.com/NStifter/mergedmonitor/blob/54344d4e355f73eb94bef8d391e8fb6e4a9323a6/fork-analysis/kit/mon2.json.tar.gz"}]} {"height":402610,"hash":"000000000000000003a1ce220ae97419cc4bdb5d70b90189b8f8a06b0b37e3a2","header":"04000000d29de83f75a5660bdb41268113ef1641ef823386119b6e0200000000000000008d1db810ec599011afd5752e00d557a6875094e9436cf1fd9412e463f37cdf59a9a4e656a8f00618c2eac184","prev_hash":"0000000000000000026e9b11863382ef4116ef13812641db0b66a5753fe89dd2","nTime":1457956009,"core_reject_reason":"bad-cb-height","rule":"bip34_coinbase_height_mismatch","context":{"expected_nbits":"1806f0a8","coinbase_height":402611,"coinbase_scriptsig_hex":"03b3240637e4b883e5bda9e7a59ee4bb99e9b1bcdb8c127393c82df3adac41a9a3a6d30491ade6cab548308a174cc92165515c1f02000000f09f909f124d696e656420627920633633333436313039000000000000000000000000000000000000000000","pool":"c63346109","pool_basis":"tag","parent_kind":"stale"},"observations":[{"channel":"merge_mining","source":"merge-mining-research","child_chain":"namecoin","child_height":276713,"provenance":"https://github.com/deadmanoz/merge-mining-research/blob/f543b1f23c57be6840c7a2a44a59306b5d0180f7/data/error-blocks/error_block_observations.csv#L70","child_block_hash":"229b2fa5af33af86559c830b86d4cc90830834e06612e43f0b0f8e8636d6f39a","child_block_time":1457955815,"child_header":"040101009eae642e432113e560f4bb4c8bda6e59fb9f79d1cd2486ba53909535bffff325e6c52c32ce27a17151ee2c7a64bdd3a441f6237ba4e39c7b62089d7db8885abce7a3e656e24b171800000000"},{"channel":"merge_mining","source":"mergedmonitor","child_chain":"namecoin","provenance":"https://github.com/NStifter/mergedmonitor/blob/54344d4e355f73eb94bef8d391e8fb6e4a9323a6/fork-analysis/mergedmonitor/mergedmonitor.json"}]} {"height":422059,"hash":"00000000000000000254ed1e8143f0bcd3c3564db07e7c35631e999d53e81fa7","header":"0000002015b9a5a957588d43fdcbc9c8c8fb5b2d378b74bc54fc1e040000000000000000bb4bf58844f6bec746791e35d4f99e476ec7a2ab9a70b6172087ab8e4b1c0681d27c945769260518385ece24","prev_hash":"0000000000000000041efc54bc748b372d5bfbc8c8c9cbfd438d5857a9a5b915","nTime":1469349074,"core_reject_reason":"bad-cb-height","rule":"bip34_coinbase_height_mismatch","context":{"expected_nbits":"18052669","coinbase_height":422060,"coinbase_scriptsig_hex":"03ac7006162f5669614254432f48656c6c6f2c20576f726c64212f2cfabe6d6d66a8e99ddd64fdd53d2fcba9e0da13d660eb4f3af15c1cc9f4afd712b09729fb01000000000000000cd114e24c6b5af1af8c290400","pool":"ViaBTC","pool_basis":"tag","parent_kind":"stale"},"observations":[{"channel":"merge_mining","source":"merge-mining-research","child_chain":"namecoin","child_height":296773,"provenance":"https://github.com/deadmanoz/merge-mining-research/blob/f543b1f23c57be6840c7a2a44a59306b5d0180f7/data/error-blocks/error_block_observations.csv#L71","child_block_hash":"66a8e99ddd64fdd53d2fcba9e0da13d660eb4f3af15c1cc9f4afd712b09729fb","child_block_time":1469348069,"child_header":"04010100498a5a053ae0b56d2397b69808899b1676cb8cbccca1242ee61249b42242bec388fe0e2260ff96162a9e53c8565ee4d286bd7bb4a045b194cf9a0f7f06bd9f3ae57894572fe20d1800000000"},{"channel":"merge_mining","source":"mergedmonitor","child_chain":"namecoin","provenance":"https://github.com/NStifter/mergedmonitor/blob/54344d4e355f73eb94bef8d391e8fb6e4a9323a6/fork-analysis/mergedmonitor/mergedmonitor.json"},{"channel":"p2p","source":"kit-mon1","first_seen":1469348631,"provenance":"https://github.com/NStifter/mergedmonitor/blob/54344d4e355f73eb94bef8d391e8fb6e4a9323a6/fork-analysis/kit/mon1.json.tar.gz"},{"channel":"p2p","source":"kit-mon2","first_seen":1469348631,"provenance":"https://github.com/NStifter/mergedmonitor/blob/54344d4e355f73eb94bef8d391e8fb6e4a9323a6/fork-analysis/kit/mon2.json.tar.gz"}]} -{"height":474294,"hash":"00000000000000000182acdf5657c93a0769dc6f9004047496b2e15efc6a4232","header":"020000203a4b08e0a87bb99712b929dcc7ea45f14c07230c98b4800000000000000000001cd58a6def6a066eb763bff9ff237a098a7a3c19445d12f9d0f392774efae01ead595c59308d0118453bb5d9","prev_hash":"00000000000000000080b4980c23074cf145eac7dc29b91297b97ba8e0084b3a","nTime":1499224493,"core_reject_reason":"bad-txns-inputs-missingorspent","rule":"missing_unconfirmed_parent","context":{"coinbase_height":474294,"coinbase_scriptsig_hex":"03b63c072cfabe6d6dd2ebb1599afbefb038c64430a42ed0057716d5a6f1aa2cd842756f3e1743548d01000000000000002f4e59412f","pool":"1Hash","pool_basis":"reported","parent_kind":"canonical","missing_prevout":"b11a78c6c61af1cb37586f639050d74b95c2b0fd525623b6cb6a4bb4fba46a0e:1"},"observations":[{"channel":"merge_mining","source":"merge-mining-research","child_chain":"namecoin","child_height":349887,"child_block_hash":"d2ebb1599afbefb038c64430a42ed0057716d5a6f1aa2cd842756f3e1743548d","child_block_time":1499224108,"provenance":"https://github.com/deadmanoz/merge-mining-research/blob/629039bc8023bdaaafd9470e29051f9acc43973c/data/child-identity/namecoin_child_identity.csv#L1388"},{"channel":"scrape","source":"chainquery.com","provenance":"https://github.com/NStifter/mergedmonitor/blob/54344d4e355f73eb94bef8d391e8fb6e4a9323a6/fork-analysis/chainquery.com/orphans_chainquery.com.json"}]} -{"height":477115,"hash":"0000000000000000013ee4a86822d37a061732e04ee5f41fb77168f193363d1b","header":"12000020257adfb6e7e0b3cd645a9458c6fbc4362eff71878cae3301000000000000000047e7d6f16255b474b896c6bf5c7336c1b570b8de4f2367d126bda61e8007c6d41d217459dc5d0118b5a222ce","prev_hash":"00000000000000000133ae8c8771ff2e36c4fbc658945a64cdb3e0e7b6df7a25","nTime":1500782877,"core_reject_reason":"bad-txns-inputs-missingorspent","rule":"bad-txns-inputs-missingorspent","context":{"coinbase_height":477115,"coinbase_scriptsig_hex":"03bb47072cfabe6d6dab936343b3137ca4569b6c9ef7af36bce731965d82b1b9a221da07786260a5df01000000000000002f4e59412f","pool":"1Hash","pool_basis":"reported","parent_kind":"canonical"},"observations":[{"channel":"merge_mining","source":"merge-mining-research","child_chain":"namecoin","child_height":352422,"child_block_hash":"ab936343b3137ca4569b6c9ef7af36bce731965d82b1b9a221da07786260a5df","child_block_time":1500782788,"provenance":"https://github.com/deadmanoz/merge-mining-research/blob/f543b1f23c57be6840c7a2a44a59306b5d0180f7/data/child-identity/namecoin_child_identity.csv#L1390"},{"channel":"scrape","source":"chainquery.com","provenance":"https://github.com/NStifter/mergedmonitor/blob/54344d4e355f73eb94bef8d391e8fb6e4a9323a6/fork-analysis/chainquery.com/orphans_chainquery.com.json"}]} +{"height":474294,"hash":"00000000000000000182acdf5657c93a0769dc6f9004047496b2e15efc6a4232","header":"020000203a4b08e0a87bb99712b929dcc7ea45f14c07230c98b4800000000000000000001cd58a6def6a066eb763bff9ff237a098a7a3c19445d12f9d0f392774efae01ead595c59308d0118453bb5d9","prev_hash":"00000000000000000080b4980c23074cf145eac7dc29b91297b97ba8e0084b3a","nTime":1499224493,"core_reject_reason":"bad-txns-inputs-missingorspent","rule":"missing_unconfirmed_parent","context":{"coinbase_height":474294,"coinbase_scriptsig_hex":"03b63c072cfabe6d6dd2ebb1599afbefb038c64430a42ed0057716d5a6f1aa2cd842756f3e1743548d01000000000000002f4e59412f","pool":"1Hash","pool_basis":"reported","pool_provenance":"https://bitcointalk.org/index.php?topic=2041607.0","parent_kind":"canonical","missing_prevout":"b11a78c6c61af1cb37586f639050d74b95c2b0fd525623b6cb6a4bb4fba46a0e:1"},"observations":[{"channel":"merge_mining","source":"merge-mining-research","child_chain":"namecoin","child_height":349887,"child_block_hash":"d2ebb1599afbefb038c64430a42ed0057716d5a6f1aa2cd842756f3e1743548d","child_block_time":1499224108,"provenance":"https://github.com/deadmanoz/merge-mining-research/blob/629039bc8023bdaaafd9470e29051f9acc43973c/data/child-identity/namecoin_child_identity.csv#L1388"},{"channel":"scrape","source":"chainquery.com","provenance":"https://github.com/NStifter/mergedmonitor/blob/54344d4e355f73eb94bef8d391e8fb6e4a9323a6/fork-analysis/chainquery.com/orphans_chainquery.com.json"}]} +{"height":477115,"hash":"0000000000000000013ee4a86822d37a061732e04ee5f41fb77168f193363d1b","header":"12000020257adfb6e7e0b3cd645a9458c6fbc4362eff71878cae3301000000000000000047e7d6f16255b474b896c6bf5c7336c1b570b8de4f2367d126bda61e8007c6d41d217459dc5d0118b5a222ce","prev_hash":"00000000000000000133ae8c8771ff2e36c4fbc658945a64cdb3e0e7b6df7a25","nTime":1500782877,"core_reject_reason":"bad-txns-inputs-missingorspent","rule":"bad-txns-inputs-missingorspent","context":{"coinbase_height":477115,"coinbase_scriptsig_hex":"03bb47072cfabe6d6dab936343b3137ca4569b6c9ef7af36bce731965d82b1b9a221da07786260a5df01000000000000002f4e59412f","pool":"1Hash","pool_basis":"reported","pool_provenance":"https://bitcointalk.org/index.php?topic=2041607.0","parent_kind":"canonical"},"observations":[{"channel":"merge_mining","source":"merge-mining-research","child_chain":"namecoin","child_height":352422,"child_block_hash":"ab936343b3137ca4569b6c9ef7af36bce731965d82b1b9a221da07786260a5df","child_block_time":1500782788,"provenance":"https://github.com/deadmanoz/merge-mining-research/blob/f543b1f23c57be6840c7a2a44a59306b5d0180f7/data/child-identity/namecoin_child_identity.csv#L1390"},{"channel":"scrape","source":"chainquery.com","provenance":"https://github.com/NStifter/mergedmonitor/blob/54344d4e355f73eb94bef8d391e8fb6e4a9323a6/fork-analysis/chainquery.com/orphans_chainquery.com.json"}]} {"height":507514,"hash":"000000000000000000571c2b98a090c15774cb7400bd4a50b160d488d14055d0","header":"00000020f50ab622900d742ad3fd4dda7e717f7f82266b2ec6da440000000000000000003b5d21477f270ca02877ed92755e978abc7048715c354147269a7b686c310298266d765a46216c17342c1fb0","prev_hash":"00000000000000000044dac62e6b26827f7f717eda4dfdd32a740d9022b60af5","nTime":1517710630,"core_reject_reason":"bad-txns-inputs-missingorspent","rule":"already_confirmed_in_parent","context":{"coinbase_height":507514,"coinbase_scriptsig_hex":"037abe07194d696e656420627920416e74506f6f6c31365d205a766d265fbb02000096020100","pool":"AntPool","pool_basis":"tag","parent_kind":"canonical","parent_txid":"89c67989abbf845fe7e777bbe7329316578155e2fa8a11b07aa867a07d1fb119"},"observations":[{"channel":"scrape","source":"chainquery.com","provenance":"https://github.com/NStifter/mergedmonitor/blob/54344d4e355f73eb94bef8d391e8fb6e4a9323a6/fork-analysis/chainquery.com/orphans_chainquery.com.json"}]} {"height":509557,"hash":"00000000000000000027894f0969c2f79a6cdb1231750e048effbd17c88da431","header":"0000002099d3c503e14f7fedf3526c5b9de89de8abc41f2014493c000000000000000000bcb9518dacd6d9eff61f526e7732725d4d0a3d39fbae3f464ed0d7c50843664a7ba1875af8e961171a2b1cde","prev_hash":"0000000000000000003c4914201fc4abe89de89d5b6c52f3ed7f4fe103c5d399","nTime":1518838139,"core_reject_reason":"bad-txns-inputs-missingorspent","rule":"already_confirmed_in_parent","context":{"coinbase_height":509557,"coinbase_scriptsig_hex":"0375c6071a4d696e656420627920416e74506f6f6c323943205a87a17b03c6a11300004a870200","pool":"AntPool","pool_basis":"tag","parent_kind":"canonical","parent_txid":"3b7bef682f80fb732b27bded7f96fcf1f974ac3c6ef102cb99894261c1e88921"},"observations":[{"channel":"scrape","source":"chainquery.com","provenance":"https://github.com/NStifter/mergedmonitor/blob/54344d4e355f73eb94bef8d391e8fb6e4a9323a6/fork-analysis/chainquery.com/orphans_chainquery.com.json"}]} {"height":515319,"hash":"00000000000000000014c1ee89b61a84e3e30dd9b2c78c9916d323a2775bc613","header":"000000205d5392d5c6263d4d73ab195b6a0b617892d2fc72552016000000000000000000a84e072a9b6743b4a9b283accd99b4cd1634841b3aa5724af92e97b684e0db49d49fb95a494a51178f179062","prev_hash":"00000000000000000016205572fcd29278610b6a5b19ab734d3d26c6d592535d","nTime":1522114516,"core_reject_reason":"bad-txns-inputs-missingorspent","rule":"already_confirmed_in_parent","context":{"coinbase_height":515319,"coinbase_scriptsig_hex":"03f7dc07174d696e656420627920416e74506f6f6c6738205ab99fd4fabe6d6dfe891a8b5a014d08c366fa3f35d46ad6e117235cfe9c41b3a03b2f3dc9c399170400000000000000d320000072010100","pool":"AntPool","pool_basis":"tag","parent_kind":"canonical","parent_txid":"7bb574454e472d3e9af6f1087890c6e9b2a7ee38c6f953a517a6e11c54a7247b"},"observations":[{"channel":"scrape","source":"chainquery.com","provenance":"https://github.com/NStifter/mergedmonitor/blob/54344d4e355f73eb94bef8d391e8fb6e4a9323a6/fork-analysis/chainquery.com/orphans_chainquery.com.json"}]} diff --git a/docs/notes.md b/docs/notes.md index d7ed862..fd2f868 100644 --- a/docs/notes.md +++ b/docs/notes.md @@ -14,8 +14,8 @@ A node that already stores them returns `duplicate`, and only a node that attemp ## Pool attributions by address or report -Most `pool` values are coinbase tags. -The records below attribute a pool another way, and `pool_basis` says which. +Most `pool` values are coinbase tags read from a body or a coinbase proof. +The records below attribute a pool another way; `pool_basis` says which and `pool_provenance` links the report or the mining-pools listing. 363731 (BTC Nuggets) and 363967 (Bitsolo) are attributed by payout address: 363967's coinbase, recovered from the AuxPoW record in Namecoin block 237930, carries no tag and pays `18zRehBcA2YkYvsC7dfQiFJNyjmWvXsvon`, the address [mining-pools](https://github.com/bitcoin-data/mining-pools/blob/af720b67faa2f157264db33c644eb1b0fa95af5f/pools/bitsolo.json) lists for Bitsolo; 363731 is covered in its own note below. The coinbases of 363967, 946213 and 957780 are authenticated by coinbase proofs built from the AuxPoW records in Namecoin blocks 237930, 821553 and 833329, so the Bitsolo address and the `/F2Pool/` tags are read from transactions the headers commit to. The two F2Pool coinbases pay 3.20191623 and 3.14128765 BTC in total, the 3.125 BTC subsidy plus fees, with all but a 546-satoshi output going to `1AfCc4F9c4VTYSE31PUe2kUEKs6ZxiDjxm`. @@ -88,6 +88,11 @@ The other 85 blocks carry the same spend without a complete body and are admitte Among them are 173886, whose rejection a node log in the [7 April 2012 log](https://buildingbitcoin.org/bitcoin-dev/log-2012-04-07.html) records at 14:58:54 UTC on 1 April; 174772, which the [28 November 2012 log](https://buildingbitcoin.org/bitcoin-dev/log-2012-11-28.html) shows an unpatched node connecting as its best chain; and 189498, the last, reported in the [17 July 2012 log](https://buildingbitcoin.org/bitcoin-dev/log-2012-07-17.html). The txid lists come from the Wayback Machine's 2012 captures of the blockchain.info block pages (42 blocks) or from the Decker and Wattenhofer orphan archive preserved in mergedmonitor (43); the [June 2012 capture](https://web.archive.org/web/20120615080519id_/http://blockchain.info:80/tx-index/3618498/4005d6bea3a93fb72f006d23e2685b85069d270cb57d15f0c057ef2d5e3f78d2) of the transaction's own page lists 88 of the 89 blocks. +Only three of the 89 are attributed, OzCoin at 173928 and 173957 and NMCbit at 173998, from tags in the reconstructed coinbases; the other 86 carry no `pool` because the search below found nothing, not because none was made. +The 43 archived block pages show the coinbase payout address as blockchain.info rendered it, which is not authenticated and stays out of `context`. +Each of those addresses was checked for reuse against every canonical coinbase from height 172000 to 190000 (18001 blocks, 3106 distinct payout addresses, read from a Bitcoin Core node with txindex) and against the mining-pools address and tag lists: 40 are single-use with no match, consistent with the reference client's new key per block, and the remaining 46 blocks have no archived page at all. +The same pages record the node that first relayed each block to blockchain.info, a pool's node for 24 of them; that says which nodes were still accepting P2SH-invalid blocks in April 2012, not who mined them, and is not part of this dataset. + ### 74638 - value overflow (2010) `bad-txns-vout-toolarge` is the 2010 overflow incident ([CVE-2010-5139](https://en.bitcoin.it/wiki/Value_overflow_incident)). diff --git a/docs/schema.md b/docs/schema.md index 28d775b..d2f42fc 100644 --- a/docs/schema.md +++ b/docs/schema.md @@ -46,7 +46,8 @@ Context is shared across observations; adding another witness does not duplicate | `coinbase_height` | integer | Height decoded from the BIP34 scriptSig prefix. Required for a BIP34 height mismatch and `already_confirmed_in_parent`. | | `coinbase_scriptsig_hex` | string | Coinbase input scriptSig. Required for BIP34 failures, `coinbase_scriptsig_length_above_100` and `already_confirmed_in_parent`. Checked against the coinbase whenever a body or a coinbase proof is present; otherwise it is an asserted extract. | | `pool` | string | Pool the block is attributed to, when known. Requires `pool_basis`. | -| `pool_basis` | string | How the pool was identified: `tag` when the coinbase scriptSig carries the pool's name or a tag [mining-pools](https://github.com/bitcoin-data/mining-pools) lists for it, `address` when the coinbase payout address is listed for the pool in [mining-pools](https://github.com/bitcoin-data/mining-pools), or `reported` when only a contemporaneous report names the pool. Required whenever `pool` is present and not allowed otherwise. Descriptive: CI checks the value, not the attribution. | +| `pool_basis` | string | How the pool was identified: `tag` when the coinbase scriptSig carries the pool's name or a tag [mining-pools](https://github.com/bitcoin-data/mining-pools) lists for it, `address` when the coinbase payout address is listed for the pool in [mining-pools](https://github.com/bitcoin-data/mining-pools), or `reported` when only a contemporaneous report names the pool. Required whenever `pool` is present and not allowed otherwise. `tag` and `address` require a body or a coinbase proof (see [Proof files](#proof-files)); CI checks that the evidence exists, not the mapping to the pool name. | +| `pool_provenance` | string | HTTP(S) URL a reviewer can open to check the attribution: the report for `reported`, the commit-pinned [mining-pools](https://github.com/bitcoin-data/mining-pools) entry for `address`. Required for those two bases, optional for `tag`, and not allowed without `pool`. | | `parent_kind` | string | Chain status of the previous block: `canonical`, `stale`, or `invalid`. `invalid` means the previous block is in this dataset. Descriptive, except that the rules which look up the canonical block at the previous height (`missing_unconfirmed_parent`, `already_confirmed_in_parent`) reject any other value. | | `missing_prevout` | string | Outpoint as `txid:vout`, spent by a non-coinbase input whose transaction is not in the block. Required for `missing_unconfirmed_parent`. | | `parent_txid` | string | Lowercase 64-hex txid of a non-coinbase transaction in both the candidate and its canonical parent. Required for `already_confirmed_in_parent`. |