{"id":90,"date":"2026-08-06T21:06:13","date_gmt":"2026-08-06T21:06:13","guid":{"rendered":"https:\/\/tokenpr.net\/what-a-smart-contract-audit-tells-you\/"},"modified":"2026-08-10T20:26:09","modified_gmt":"2026-08-10T20:26:09","slug":"what-a-smart-contract-audit-tells-you","status":"publish","type":"post","link":"https:\/\/tokenpr.net\/what-a-smart-contract-audit-tells-you\/","title":{"rendered":"What a Smart Contract Audit Does and Does Not Tell You"},"content":{"rendered":"<p>Audit badges are used in crypto marketing as a proxy for safety, which is a category error. An audit is a time-boxed review of a specific artefact by people with finite hours. It is evidence, and reading it properly gives you real information \u2014 but almost none of that information is contained in the word &#8222;audited&#8220;.<\/p>\n<h2>What an audit actually is<\/h2>\n<p>A group of specialists reads your code for an agreed number of weeks and writes down what they found. That is the entire product. It is genuinely valuable \u2014 good auditors find things teams have stared past for months \u2014 and it is not a certification, a guarantee, or a statement that the system is safe.<\/p>\n<p>The distinction matters commercially as well as technically. An audit is evidence you can show a counterparty. A badge with no linked report is not evidence of anything, and treating the two as equivalent is how &#8222;audited&#8220; became a marketing word rather than a technical one.<\/p>\n<h2>Scope is the whole thing<\/h2>\n<p>Every report states what was reviewed. It is the section that matters most and the one nobody reads.<\/p>\n<p>Scope is typically a list of files at a specific commit hash. Anything not in that list was not looked at. This routinely excludes the deployment scripts, the off-chain components, the oracle integration, the governance contracts and any dependency \u2014 which is to say, it frequently excludes where the failure will occur.<\/p>\n<p>The commit hash is equally important. An audit covers the code as it existed at that commit. If the team shipped changes afterwards \u2014 and they nearly always do \u2014 that code is unaudited, whatever the badge says. Comparing the audited commit against what is actually deployed is a check anybody can perform and almost nobody performs.<\/p>\n<h2>Read the findings that were not fixed<\/h2>\n<p>Resolved findings tell you the process worked. The informative section is the one listing issues marked <em>acknowledged<\/em>, <em>disputed<\/em> or <em>risk accepted<\/em>.<\/p>\n<p>Acknowledged means the team read it and chose not to change anything. Sometimes that is entirely reasonable \u2014 a theoretical issue with an impractical precondition. Sometimes it is a live risk the team decided to carry, disclosed in a document nobody reads. The reasoning is usually printed alongside it, and the quality of that reasoning is one of the better signals available about the team.<\/p>\n<p>Centralisation findings deserve particular attention, because they are the most commonly acknowledged and dismissed. &#8222;The owner can pause withdrawals&#8220; marked as acknowledged is not a formality; it is a description of the actual trust model.<\/p>\n<h2>Severity is not standardised<\/h2>\n<p>There is no shared definition of &#8222;high&#8220; or &#8222;medium&#8220; across firms. One auditor&#8217;s high is another&#8217;s medium, and severity is frequently a negotiation between auditor and client. Comparing severity counts across reports from different firms tells you very little.<\/p>\n<p>Read the description of each finding rather than the label.<\/p>\n<h2>What an audit structurally cannot catch<\/h2>\n<p><strong>Economic design flaws.<\/strong> Code that does exactly what it was specified to do, where the specification is exploitable. Most audits review implementation against intent, not intent against reality.<\/p>\n<p><strong>Emergent interactions.<\/strong> A contract can be individually sound and unsafe in composition with a protocol that did not exist at audit time.<\/p>\n<p><strong>Off-chain failure.<\/strong> Compromised keys, a bad deployment, a misconfigured multisig, an oracle that behaves fine until it does not.<\/p>\n<p><strong>Governance capture.<\/strong> Contracts working precisely as designed while control of them changes hands.<\/p>\n<h2>Questions worth asking<\/h2>\n<p>Is the full report published, or only a badge? What commit was audited and does it match production? What is in scope and, more usefully, what was excluded? How many findings were acknowledged rather than fixed, and what was the reasoning? Was there a re-review after the fixes, or is the report pre-fix? How long did the engagement run \u2014 a two-day review of a large codebase is a different product from a four-week one.<\/p>\n<p>A team that publishes the full report including the uncomfortable findings is telling you something more valuable than the audit itself.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>How to read a smart contract audit report: scope, commit hash, severity handling and the questions that reveal whether an audit means anything.<\/p>\n","protected":false},"author":10,"featured_media":151,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4],"tags":[53,54,47,50],"class_list":["post-90","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-smart-contracts","tag-audits","tag-due-diligence","tag-security","tag-smart-contracts"],"_links":{"self":[{"href":"https:\/\/tokenpr.net\/de\/wp-json\/wp\/v2\/posts\/90","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/tokenpr.net\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/tokenpr.net\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/tokenpr.net\/de\/wp-json\/wp\/v2\/users\/10"}],"replies":[{"embeddable":true,"href":"https:\/\/tokenpr.net\/de\/wp-json\/wp\/v2\/comments?post=90"}],"version-history":[{"count":1,"href":"https:\/\/tokenpr.net\/de\/wp-json\/wp\/v2\/posts\/90\/revisions"}],"predecessor-version":[{"id":96,"href":"https:\/\/tokenpr.net\/de\/wp-json\/wp\/v2\/posts\/90\/revisions\/96"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/tokenpr.net\/de\/wp-json\/wp\/v2\/media\/151"}],"wp:attachment":[{"href":"https:\/\/tokenpr.net\/de\/wp-json\/wp\/v2\/media?parent=90"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/tokenpr.net\/de\/wp-json\/wp\/v2\/categories?post=90"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/tokenpr.net\/de\/wp-json\/wp\/v2\/tags?post=90"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}