The Empty Intake: What Four Missing Fields Do to a DeFi Analysis

Samtoshi • • Opinion

Last quarter an audit packet arrived with eleven attachments and no facts. The scope document named a protocol. The protocol's public documentation named a version. The version tag on Etherscan resolved to a proxy. The proxy pointed at an implementation deployed nine days before the date printed in the documentation. The team's cover note described the codebase as final. Nobody in the handoff chain had noticed that the thing they wanted reviewed did not yet have a stable identity.

I opened the file labeled background and found four empty headings. Title. Source. Type. Summary.

I did not log this as an administrative annoyance. I logged it as the first finding of the engagement. An intake that cannot state what it is describing is not a preliminary step that was skipped. It is a control failure at the exact point where every downstream judgment receives its inputs. Anything I produced afterward about that protocol would have been internally consistent and externally unverifiable.

This is not an unusual week in DeFi security. It is the median week. Most analysis failures in this industry occur before anyone reads a line of Solidity. They occur in the folder where the facts were supposed to be.

Consider what an analyst is actually asked to do. Take a claim about a protocol, decompose it into assertions, attach each assertion to a source, rank that source, and then decide whether the claim survives. That is the whole job. The code review is the visible half. The provenance work is the half that determines whether the visible half means anything.

When the intake arrives complete, the work is mechanical and slow and boring. When the intake arrives empty, the work becomes something else entirely. It becomes performance. The analyst produces prose that resembles analysis. It cites function names. It mentions gas. It arrives at a conclusion. And every sentence of it is a Tier 3 inference wearing the costume of a Tier 0 observation.

I have watched this happen for nineteen years, and I have done it myself twice, early on, when a client's deadline was louder than my judgment. Both times the deliverable was praised. Both times it was worthless. The ledger remembers what the market forgets, and what it remembers about those two reports is that they were never stress-tested against anything.

Start with provenance, because provenance gates everything downstream. The field labeled title and source is not decoration. It determines the truth standard being applied. A governance forum post has one standard. A signed audit report has another. A media relay of an audit report has a third, and it is much weaker than readers assume, because the relay almost always collapses two distinct artefacts into one sentence. Someone reads that a protocol was audited. What the media meant was that a previous version of the protocol was reviewed by a firm under a scope that excluded the module that later failed. The two statements are not close. They are opposites.

Genre matters for the same reason. A news item, a research note, a personal opinion piece, and a developer tutorial can all contain the identical sentence about a bridge's custodian arrangement. In the tutorial, that sentence is an assumption used to teach a concept. In the news item, it is a factual claim about the world. Treating the first as the second is how a teaching simplification becomes a circulating fact. I have traced three separate risk narratives back to a documentation example that was never intended to describe a production deployment.

The type and domain field gates the analytical framework. This sounds abstract until it is not. Apply on-chain liquidity metrics to a story that is fundamentally a regulatory sequencing problem and you will produce a rigorous, quantitative, irrelevant answer. Apply regulatory precedent to a story about an interest rate model and you will produce the same. The framework is not a style choice. It is a claim about what kind of object is being examined. Get the object wrong and precision becomes a liability, because the numbers will look more convincing than they deserve.

The one-line summary field gates the correspondence between claim and evidence. Without it, there is nothing to check the body against. A summary is a falsifiable compression. It states what the author believes the evidence establishes. When that statement is absent, the article can drift, and readers cannot detect the drift because they were never given a fixed point to navigate from.

Author stance and purpose gate incentive analysis. This is not cynicism. It is bookkeeping. A foundation employee writing about its own upgrade has a different relationship to the evidence than an independent auditor who was not paid by the foundation. Both can be accurate. Only one has an incentive to leave the version qualifier out. Knowing which one you are reading changes how much verification you owe the text before you repeat it.

The information point list is the field that matters most, and it is the field that is almost always missing. Each item should carry the original wording and a source classification. Without that list, there is no object to cross-verify. There is only a narrative. A narrative cannot be checked. It can only be agreed with or rejected, which is precisely the mode of engagement this industry defaults to and precisely the mode that produces bad decisions.

Project identification gates background. Every protocol exists inside a history. Prior incidents. Prior governance fights. Prior audits and what they excluded. A change of custodian. A migration. An oracle swap. If the analysis does not know which protocol it is describing, it cannot know which history applies, and it will re-derive conclusions that were settled two years ago by people with better data.

Time sensitivity is the last gate and the one most often ignored by readers even when the writer got it right. Price observations decay in hours. TVL decays in days. Governance votes decay the moment the quorum is reached. A regulatory window can close between drafting and publication. An analysis that does not mark its own expiry date is a claim that nothing in it will ever change, which in this domain is never true.

I want to be precise about what happens when these inputs are absent, because the failure is not what most people assume. The failure is not that the article is wrong. The failure is that the article becomes unfalsifiable. An analysis with no sourced inputs cannot be refuted, and therefore cannot be trusted, and therefore should not be acted upon. It occupies the same epistemic category as a horoscope, and it circulates with roughly the same evidentiary backing, but it uses the vocabulary of engineering, which makes it feel like a measurement.

This asymmetry is structural. A confident deep dive into an unnamed protocol, with no version numbers and no source tiers, will never be caught being wrong, because catching it would require reconstructing the inputs the author never supplied. It can only be overtaken by events. And when it is overtaken, the author will say the situation changed, and the audience will accept that, because the audience never had the means to distinguish a changed situation from a fabricated one.

The Terra collapse in May 2022 is the cleanest counterexample I know. That event was reconstructed in full, function call by function call, because every input existed and every input was public. The oracle updates were on-chain. The Anchor interactions were on-chain. The burn mechanism's behaviour under the prevailing parameters was deterministic. The post-mortem I wrote over seventy-two hours was not an act of insight. It was an act of retrieval. The data was there. The block height does not lie. That is why the reconstruction held up under four years of scrutiny from people who wanted it to fail.

Compare that to the typical post-mortem of a smaller incident. The protocol is named inconsistently across four sources. The exploiter transaction is cited by hash but the block is not. The vulnerable function is described by its purpose rather than its signature. The version is described as current rather than as the one that was deployed at the time of the exploit. The conclusion is plausible. Nothing in it can be checked. Six months later the same class of bug appears in a sibling protocol and the same article is written again, because the first one never established anything that could be learned from.

My Compound work in 2020 followed the same principle from the other direction. The simulation was not the contribution. Ten thousand random liquidity events against the V1 contract produced a distribution, and the distribution showed insolvency risk under conditions the documentation treated as out of scope. But the reason that gist was referenced by an audit firm was not the elegance of the sampling. It was that the input set was the contract's own function signatures and the documented interest rate curve. Anyone could rerun it. Anyone could check whether I had modelled the curve correctly. Stress tests reveal the fractures before the flood, but only if the test itself can be replicated.

This is where the empty intake becomes expensive in a way that does not show up in the invoice. In my own practice, an engagement with a fully specified intake closes scope in about three working days. The same engagement with an empty intake averages eleven, and the extra eight are not spent analysing the protocol. They are spent negotiating what the protocol is. Which implementation. Which commit. Which deployment. Which documentation version is authoritative. The technical work is identical in both cases. The coordination cost is what varies, and it scales with the number of missing fields rather than the size of the codebase.

Multiply that across a market where dozens of Layer 2 networks now compete for the same small set of active users and the same thin flow of liquidity. Every one of those networks publishes documentation and incentives and dashboards. Almost none of them publish an intake that would let an independent analyst state, without ambiguity, which system was running on which date. The fragmentation is not only of liquidity. It is of the evidentiary base. Any analyst trying to compare them is comparing four different documentation conventions and calling the result a thesis.

The liquidity mining pattern makes this worse in a specific, measurable way. When a protocol subsidises TVL, the dashboard number moves for reasons unrelated to product demand. An analyst who sources the claim from the dashboard is citing a Tier 0 observation of a metric whose cause is Tier 3 inference. The number is real. What the number means is entirely constructed. Without an intake that records the incentive schedule alongside the TVL series, the analysis will attribute organic growth to a farm that has a known end date. I have seen that error published as evidence of product-market fit by three separate research desks in the same quarter.

The same structure appears in stablecoin payment flows. The on-chain transfer volume is unambiguous. The reason for the transfer volume is not. A remittance corridor showing growth consistent with local currency stress and a corridor showing growth consistent with an airdrop campaign can look identical in aggregate counts. The difference lives in the distribution of transfer sizes, the timing relative to the announcement, and the counterparty concentration. None of that is visible unless the analyst specified, in advance, what would count as evidence for each hypothesis. That specification is an intake discipline. It is not a writing skill.

I ran into the modern version of this last year while auditing a protocol where autonomous agents executed contract calls. The vulnerability was not in the contracts. It was in the path by which natural language entered the decision loop, and a modest rewording of an instruction was sufficient to bypass an access control that the contracts enforced correctly. What made it exploitable was a missing provenance layer. The agent had no way to distinguish a Tier 0 instruction encoded in the contract from a Tier 3 string that merely looked like an instruction, because no one had attached tier metadata to the inputs at the point of ingestion.

That is the same failure as the empty intake, instantiated in an LLM. The system did not receive false data. It received data with no provenance, and it treated everything as equally authoritative because nothing had told it otherwise. The fix I proposed was a deterministic verification layer between the reasoning step and the execution step, where any output that would move funds must be re-derived from on-chain state and independently confirmed before it is allowed to become a transaction. Formal verification is the only truth in code, and the corollary is that an AI agent's conclusion is only as good as the verification gate standing behind it.

Notice what that fix has in common with the mundane audit intake. Both are controls placed upstream of the thing that appears to be the work. Both feel like bureaucracy to the people paying for them. Both eliminate entire categories of failure that would otherwise be discovered only after the funds have moved. Immutability is a promise, not a guarantee, and the guarantee only exists where someone wrote down, in advance and in a checkable form, what the system was supposed to be.

There is a version of this argument that auditors are reluctant to make about themselves, so I will make it. The audit industry sells assurance. Assurance is a statement about a scope, and a scope is only as meaningful as the intake that defined it. When the intake is vague, the scope is vague, and the report becomes a document that says a thing was reviewed without ever committing to which thing. That is not a lesser product. It is a different product, and it is being sold at the same price. The client gets a logo for their documentation and a residual risk they have not been told how to quantify.

My own corrective, developed after enough of these engagements to see the pattern, is to refuse to begin until five items exist in writing. The exact deployment address and the commit hash it was built from. The date the version became canonical and the date it stopped being canonical. The list of external dependencies, including oracles and bridges, with their upgrade authorities. A statement of what the team believes the system does that can be checked against the code. And a written acknowledgement of what is explicitly out of scope. When a team cannot produce those, the inability is itself the finding, and it belongs in the report at the top rather than buried in an appendix.

None of that is novel. It is the same discipline that produced the governance findings I filed against the Tezos pre-mainnet codebase in 2017, where the voting mechanism contained logical flaws that could have stalled upgrades, and where the only reason the findings were actionable was that every claim referenced a specific function and a specific version. Version numbers before market implications. That ordering is not stylistic. It is what makes a claim survive contact with the people who wrote the code.

Chaos is just unverified data. That sentence reads like a slogan until you have sat in a war room during a depeg, watching competent people argue past each other because nobody had established which oracle feed was authoritative at which block. The argument was not about the facts. It was about the absence of a shared, sourced record of the facts. Once that record existed, the disagreement collapsed in about eleven minutes. Until it existed, the disagreement could not collapse, because there was nothing to collapse it against.

Here is the contrarian part, and it is uncomfortable for my own profession. The market does not pay for verification. It pays for output. A blank analysis that says the inputs are insufficient is honest, correctly scoped, and commercially worthless. A fabricated analysis that names a protocol, cites three plausible numbers, and reaches a confident conclusion will be read, quoted, and remembered. The incentive gradient does not merely tolerate unfalsifiable work. It rewards it, and it penalises the analyst who withholds judgment pending evidence, because withholding looks like incapacity to the reader who cannot see the missing inputs.

This is the structural blind spot of DeFi security. We audit the assumptions inside contracts with extraordinary rigour. We formalise invariants. We enumerate reentrancy paths. We stress-test the interest rate curve. And we routinely accept, without any comparable rigour, the assumption that the inputs to our own reasoning are real, current, and correctly identified. The smart contract was never the weak link in that chain. The intake was.

The corrective is not more scepticism. Scepticism without a source hierarchy is just a mood. The corrective is a default classification rule. Any claim without an attached source tier should be treated as Tier 3 author inference until proven otherwise, and Tier 3 claims should never be the foundation of a risk decision, regardless of how well written the document containing them happens to be. Verification precedes value. That ordering is not negotiable, and it applies to the auditor before it applies to the protocol.

Within eighteen months I expect provenance metadata on analysis to be standard in the same way signed commits became standard, and for the same reason. The first institutional allocator who discovers that a substantial share of the research they consumed last cycle has no reconstructable evidentiary base will not ask for better prose. They will ask for the source list, and the request will propagate. The desks that can produce it will survive the question. The desks that cannot will discover that their archive is not a record of what happened. It is a record of what was believed at the time, which is a different and much smaller thing.

Until then, the operating rule is simple enough to state and hard enough to follow. Before you accept a conclusion, ask what would have to be true for it to be false, and then ask whether the document gives you the means to check. If it does not, you are not reading analysis. You are reading an intake that was never filled in, dressed in the vocabulary of verification, and the ledger will remember that it was empty long after the market has forgotten that it was persuasive.