{
  "id": 430438,
  "title": "Proving a proof-of-work solve happened, at a specific time, without trusting the server's logs",
  "url": "https://urgent.news/2026/08/10/proving-a-proof-of-work-solve-happened-at-a-specific-time-without",
  "topic": "tech",
  "section": "Tech",
  "published": "2026-08-10T03:01:24.000Z",
  "source": {
    "name": "Dev.to",
    "slug": "dev-to",
    "url": "https://dev.to/zekebuilds/proving-a-proof-of-work-solve-happened-at-a-specific-time-without-trusting-the-servers-logs-51mh"
  },
  "original_language": "en",
  "account": "PowForge's solve-witness mechanism provides a way to prove that a Proof-of-Work (PoW) solve occurred at a specific time without relying on the server's logs. This is accomplished by using Merkle-fold to compress a window of accepted solves into a single witness hash, which is then anchored to a Bitcoin OpenTimestamps (OTS) calendar. The process involves creating a leaf hash for each solve that includes the challenge salt, winning nonce, and server's HMAC signature, and then appending these leaves to a batch. Every fixed interval (default 10 minutes), the batch is sealed, and its Merkle root is submitted to an OTS calendar, anchoring the entire window to the Bitcoin blockchain with a single timestamp. This allows anyone to verify the inclusion of a specific solve by providing the leaf hash, Merkle inclusion path, and witness hash from the OTS proof, all of which can be recomputed using SHA-256. The mechanism ensures that the cost of anchoring the batch is constant, regardless of the number of solves within the window. The provided demo server showcases this process, creating a live Express app with the necessary middleware to handle PoW challenges and proofs, and successfully generating a real OTS proof.",
  "summary": "The problem: a solve is a fact that only lives in one server's memory If you gate a route with proof-of-work, every accepted solve is a real event. Someone burned real compute, at a real wall-clock moment, to get past the gate. That is exactly the property you wanted: the gate costs the caller something. But where does that fact live? In the verifier's memory, for as long as the process stays up.…",
  "key_points": [
    "PowForge's solve-witness mechanism proves PoW solve at specific time",
    "Uses Merkle-fold to compress accepted solves into single witness hash",
    "Anchors batch to Bitcoin OpenTimestamps calendar with single timestamp"
  ],
  "editors_take": "This development enables verifiable proof of a Proof-of-Work solve at a specific time without relying on server logs, thereby increasing trust and security in the process.",
  "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."
}