{
  "id": 10194869,
  "title": "The First Bugs My Reconciliation Tool Caught Were Its Own",
  "url": "https://urgent.news/2026/09/27/the-first-bugs-my-reconciliation-tool-caught-were-its-own",
  "topic": "tech",
  "section": "Tech",
  "published": "2026-09-27T10:35:32.000Z",
  "source": {
    "name": "Dev.to",
    "slug": "dev-to",
    "url": "https://dev.to/am0muk_3e9691aa890035463c/the-first-bugs-my-reconciliation-tool-caught-were-its-own-4890"
  },
  "original_language": "en",
  "account": "The first bugs discovered by the author's reconciliation tool, onchain-tieout, were actually in the tool itself. The first issue was with the page size specification, which was incorrect. The tool requested 10,000 rows per page, but Etherscan only returned 1,000 rows per page. As a result, the tool stopped prematurely, leading to inaccuracies in the reconstructed wallet balance. Another bug was discovered when the tool encountered a block with more than one page of rows. The tool was designed to handle such cases, but it failed to do so properly, resulting in incorrect balance calculations. The tool also incorrectly interpreted HTTP 429 responses from the RPC provider as data issues, when they were actually rate limit problems. Additionally, the tool had two more bugs that were found by reading the code directly. These included a response with status \"1\" but a non-list result, and merging identical token transfers across page boundaries without proper logging index. After implementing the fixes, the tool was able to run a complete analysis of the wallet (vitalik.eth), producing 10,476 balance rows with most of them tied out exactly. Only a small percentage were airdropped spam transactions, and the tool was able to identify and label negative balances accurately. The author concludes that running the reconciliation tool against the real system is crucial for validating the code and assumptions, as offline tests alone may not catch such issues.",
  "summary": "I wrote a small open-source tool, onchain-tieout, to answer one question: does the balance you reconstruct from a wallet's transaction history match the balance the chain actually reports, at the same block? That check exists because data pipelines fail silently. An explorer API returns HTTP 200 with an error inside the body, a page of results is capped without notice, a transaction that reverted…",
  "key_points": [
    "First bugs discovered were in the tool itself, not external bugs",
    "Page size specification error caused premature stopping of balance reconstruction",
    "Tool misinterpreted HTTP 429 responses as data issues"
  ],
  "editors_take": null,
  "illustration": null,
  "coverage": {
    "outlets": 1,
    "also_reported_by": []
  },
  "ai_generated": true,
  "disclaimer": "Summaries, key points and the editor’s take are written by software from other outlets’ reporting and may contain errors — always check the linked original."
}