Ly Gravity

The Null Input Problem: A Post-Mortem on Silent Data Failures and the Protocols That Survive Them

PlanBtoshi โ€ข โ€ข Weekly

I received a Phase 2 analysis report last week that said nothing. Nine dimensions. Technical. Tokenomics. Market. Ecosystem position. Regulatory. Team and governance. Risk. Narrative. Supply chain. Every field returned N/A. Technical positioning, information insufficient. Token supply model, information insufficient. Risk matrix, unable to assess. The document ran several thousand words and made exactly one argument: the Phase 1 input came back empty, and there was therefore nothing to analyze.

The author did not fabricate. They did not fill the template with speculative garbage dressed as insight. They flagged a broken pipeline, documented the evidence, and stopped.

In a market obsessed with confident-sounding alpha, that refusal is the most important security behavior I have seen this quarter. Almost nobody is watching it. Because the failure mode that produced that empty report is the same failure mode that drains lending pools. An input goes silent. The downstream system does not notice. The machine keeps executing.

Two-phase analysis is a standard pattern in crypto research pipelines. Phase 1 ingests raw material, an article, a governance post, a whitepaper, a Twitter thread, and extracts discrete information points. Title. Claims. Named projects. Time sensitivity. Source quality. Phase 2 takes that structured output and runs a fixed framework across nine dimensions. It grades technical maturity. It decomposes token emissions. It maps competitive positioning. It estimates regulatory exposure.

The framework is sound. I have built versions of it. When Phase 1 delivers five to ten clean information points, Phase 2 produces something useful. When Phase 1 delivers zero, the correct output is zero. The report even set a floor: three to five info points would have been enough to run partial analysis with confidence flags attached. It had zero. Not few. Zero.

But zero is not what these pipelines usually produce. Most of them produce something. The article parser hits a paywall and returns an empty body instead of an error. The RPC endpoint returns a null block instead of timing out. The API vendor renames a field, a downstream job reads undefined, writes it to a database, and a report gets generated on top of a hole. None of these throw. All of them poison everything downstream.

This particular pipeline did throw. Phase 1 returned zero information points. The title field was blank. The core thesis was not provided. The projects involved, the single most important field in any crypto analysis, absent. And Phase 2 did not invent. It held the line. Every dimension was marked information insufficient, with an explicit note that the framework was preserved but the content was N/A by design, and a formal refusal to speculate. It even named its own two failure conditions: an analysis chain break risk, high severity, and an information authenticity risk, medium severity, because a tool that outputs nothing might mean the input itself was garbage.

I have audited bridge contracts with less integrity than that.

The question I want to pursue is not what the article said. The article said nothing. The question is why the most adversarial industry on earth keeps building systems that fail open instead of fail closed, and what a single honest N/A report reveals about where the next exploit is loading.

Security is not a feature; it is the foundation. I usually get that line read back to me as a slogan about audits. It is not a slogan. It is a statement about control flow.

Fail-open and fail-closed are the two fundamental postures any system can take when it meets an unexpected input. Fail-open means: when something goes wrong, default to allowing the action. Fail-closed means: when something goes wrong, default to blocking it. The history of DeFi exploits, stripped of marketing, is a catalog of fail-open decisions.

Walk the mechanics. A price oracle fails. It returns zero. Or a stale value from three hours ago. Or the RPC times out and the fallback serves the last-known price. What happens next depends entirely on the posture the protocol chose.

A fail-open lending market treats the zero as real. Collateral worth nothing, borrowing capacity zero, or, depending on the direction of the logic, the debt asset prices at zero and every borrower's obligation is wiped while the pool is drained. This is not hypothetical. It is the exact class of bug behind a dozen multi-million-dollar liquidations and at least four protocol deaths I have tracked since 2020.

A fail-closed market checks three things. Is this price fresh. Is it within a sane band of the last observation. Did at least N independent sources agree. If any answer is no, the market pauses. It does nothing. It refuses to guess.

The Phase 2 report is a fail-closed system. It met a null input. It refused to execute and announced the refusal.

Complexity hides the truth; simplicity reveals it. Fail-closed is rare because it is annoying. It stops things. It blocks legitimate users at the edges. It generates support tickets. A product manager looks at a pause mechanism and sees friction. On a dashboard, a fail-closed system looks like a worse product than a fail-open one, until the day it is not.

Here my own experience is the evidence. In 2022, during the FTX contagion, I led an audit of a Layer-2 bridging solution that failed. Three weeks inside the withdrawal mechanism. The bridge used optimistic verification: withdrawals were assumed valid unless challenged inside a window. The window was too short. During November 2022, when block times degraded and gas spiked, the challenge period effectively collapsed. An attacker could submit a withdrawal and honest validators could not get their challenge transactions mined in time.

That is fail-open at the economic layer. The bridge assumed the challenge would arrive. It never checked whether the challenge could arrive. I filed four critical issues. One was a gas-limit exhaustion vector, where an attacker could deliberately jam the challenge lane and force a withdrawal through. The team shipped to mainnet before fixing it. The exploit cost $500k. Small for the cycle. But the report became a case study for institutional allocators, several of whom cited it as the reason they avoided an entire category of non-audited bridges.

The pattern repeats. In the DeFi Summer of 2020, I put $50,000 of my own capital into Curve and SushiSwap and wrote custom Solidity to simulate re-entrancy against yield aggregators. I found a farming contract that treated an uninitialized reward accumulator as zero, a fail-open default. That zero, combined with a reentrant call, allowed infinite minting. The team paid a $10,000 bounty and apologized formally. The bug was three lines. The exploit was one wrong default.

In 2021, auditing an ERC-721A implementation for a minting platform with a $2M budget, I found a signature replay in the public mint function. The EIP-712 verification accepted a valid signature more than once under certain nonce conditions. One attacker, one replay, 15% of the supply drained. Fail-open on the signature path. They patched in 48 hours. The public disclosure still damaged them, because in a market where trust is the product, we failed open and got caught reads worse than we were never tested.

And in 2025, I reverse-engineered a decentralized AI training protocol that claimed zero-knowledge proofs for model verification. Two months inside the circuit. The ZK-proof generation time was computationally infeasible for real-time training. The verification was fail-open theater that would accept proofs faster than they could be produced. I published benchmarks comparing the claims to actual execution on Ethereum L2s. The token dropped 80%. Same disease: a system that looked rigorous and behaved like a rubber stamp.

Now connect it back. The pipeline that returned all N/A did what none of those contracts did. It refused to proceed on bad input.

Why does this matter right now, specifically. We are in a bear market, and bear markets are where fail-open systems die. In a bull market, a protocol absorbs a bad oracle print or a mispriced collateral because fresh capital is always arriving to paper over the hole. Liquidity is forgiving. In a bear market there is no fresh capital. A single bad print is terminal. The math doesn't forgive what the market once absorbed.

Look at the signals that matter this quarter. Several lending markets have had their oracle deviation thresholds tested as volatility returned and liquidity thinned. Protocols with hard-coded staleness windows shorter than their actual update cadence are sitting on timers nobody is watching. The survivors will be the ones whose contracts check freshness, deviation, and consensus before they act, not after.

There is a second, subtler class of fail-open that gets almost no attention: the compliance layer. Consider the stablecoin most often described as safe. Its issuer can freeze any address within roughly 24 hours. That is, technically, fail-closed, in that the issuer refuses to let a flagged address transact. But the closer is a single centralized key under a single company's legal obligation. So the system is fail-closed at the edge and maximally centralized at the center. Fail-closed is not automatically good. A fail-closed system with a single point of control is just a switch, and someone else owns the switch. That distinction matters more than any audit badge.

The same logic explains why so much of the real-world-asset narrative has stalled. Institutions do not want a public chain's permissionless edge cases. They want a fail-closed system with a known operator, a legal wrapper, and a kill switch they control. Strip the vocabulary and that is a private database with extra steps. Three years of on-chain RWA storytelling, and the institutional money is still mostly in tokenized treasuries, which are functionally custody receipts, not decentralized finance. The chain is not the feature. The settlement guarantee is. And a settlement guarantee you cannot enforce against an anonymous validator set is not a guarantee an institution will accept.

Back to the mechanics. Just fail closed is naive if you do not price the tradeoff. Fail-closed has a cost. Every pause denies service. In a lending market, pausing during a legitimate volatility event means honest borrowers cannot repay and honest liquidators cannot liquidate, which can itself manufacture bad debt. The naive fail-closed protocol is fragile in the opposite direction. Freeze too eagerly and you create the crisis you were trying to avoid.

The correct design is graduated. Not a binary between execute everything and freeze everything. A decision tree. If the oracle deviates by 0.5%, proceed. If 5%, require a second source. If 20%, require three sources and a timelock. If the input is absent entirely, pause and escalate to a bounded, time-limited governance response with a defined resolution window.

Notice what that requires: the system must detect that an input is missing or bad. This is the part that quietly fails most often. A fallback is not enough. You need a check that distinguishes a real zero from a missing zero. A real price from a stale one. An empty Phase 1 output from a Phase 1 output that genuinely concluded nothing here.

Those are different states. A system that cannot tell them apart is fail-open by accident.

Trust the code, verify the trust. The Phase 2 pipeline verified its own trust. It did not assume. It demanded evidence, found none, and said so. That is the whole discipline in one action.

Here is the insight most readers will miss: the empty report is not a failure of the analysis. It is a successful test of the analysis. The fault was upstream, in Phase 1 or in whatever fed Phase 1. The report correctly localized the fault. A weaker pipeline would have smeared it across all nine dimensions by producing confident nonsense in each, and the operator would have shipped a report that looked complete and was worthless.

This is the most common way crypto research goes wrong. Not fabrication at the top. Silent degradation at the input. And the deeper issue is architectural. Everyone in this industry treats trustlessness as a property of a chain. It is not. It is a property of a decision. A protocol is only as trustless as its worst edge-case handling. You can have a thousand validators, a battle-tested consensus mechanism, and a formally verified core, and still be completely centralized at the exact moment an oracle returns something strange, because that is the moment one admin key or one unguarded branch decides everything.

The blob-space argument is a perfect example of a debate happening at the wrong layer. Post-Dencun, everyone argues about when blob capacity saturates. Far fewer ask the urgent question: when it does, what happens to the rollups whose fee logic assumes effectively infinite supply. For most of them, the answer is fail-open. Fees spike into a regime the code never anticipated, sequencers misbehave, and the contracts keep executing because nobody wrote the branch that says stop. When the blobs fill, and they will fill faster than the two-year consensus assumes, the rollups without fail-closed fee logic will discover that their cheap fees were a subsidy, not an architecture. The subsidy doubles. The bill arrives.

There is a final, uncomfortable observation about that empty report. Its author had every incentive to fake it. A nine-dimension framework with a template begging to be filled is a loaded gun pointed at intellectual honesty. Most operators pull the trigger. They write plausible tokenomics for an imaginary project and the reader never knows. The report I opened with did the opposite, and in doing so it produced the only kind of output that carries information: a verified null.

The counter-intuitive part, and it will make people uncomfortable, is this. A bug fixed today saves a fortune tomorrow, but the industry does not pay for bug-fixing. It pays for bug-hiding.

Look at the incentives honestly. A protocol that publishes we found a critical issue in our oracle handling and paused for 72 hours loses TVL during those 72 hours. Competitors with identical but undiscovered bugs keep their deposits and their yield. The market reads continuity as strength and rewards it. The honest protocol is punished for honesty. That is a structural mispricing, and it is why even good teams default to fail-open and hope.

The Phase 2 report represents the opposite. It took the reputational hit of saying I have nothing. In a market where every analyst is paid to have a take, having no take is the least profitable position available. It is also the correct one.

Underneath all of it is a blind spot the industry refuses to name. We rank protocols by TVL, audit count, and validator diversity. None of those measure the thing that actually fails. The thing that fails is the branch nobody wrote. The audit found the branches that exist. It cannot find the one that does not.

So here is what I will be watching over the next twelve months. Not the exploits. The pauses. A protocol that pauses and explains is telling you it has fail-closed logic, and that logic will save it when the next oracle breaks. A protocol that has never paused is not safer. It is untested, and somewhere in its call graph sits an undetected fail-open branch. The question is not whether that branch triggers. The question is whether anyone sees it before the pool is empty.

Market Prices

BTC Bitcoin
$81,764.4 +0.40%
ETH Ethereum
$2,414.07 -0.22%
SOL Solana
$103.87 -0.36%
BNB BNB Chain
$720.2 -0.08%
XRP XRP Ledger
$1.3 -0.42%
DOGE Dogecoin
$0.0795 -0.74%
ADA Cardano
$0.2208 -1.43%
AVAX Avalanche
$9.82 -1.28%
DOT Polkadot
$1.11 -4.52%
LINK Chainlink
$12 -2.25%

Fear & Greed

53

Neutral

Market Sentiment

Event Calendar

{{ๅนดไปฝ}}
18
03
unlock Sui Token Unlock

Team and early investor shares released

22
03
unlock Optimism Unlock

Circulating supply increases by about 2%

08
04
upgrade Solana Firedancer

Independent validator client goes live on mainnet

15
04
halving Bitcoin Halving

Block reward reduced to 3.125 BTC

12
05
halving BCH Halving

Block reward halving event

10
05
upgrade Ethereum Pectra Upgrade

Raises validator limit and account abstraction

28
03
unlock Arbitrum Token Unlock

92 million ARB released

30
04
upgrade Celestia Mainnet Upgrade

Improves data availability sampling efficiency

Altseason Index

41

Bitcoin Season

BTC Dominance Altseason

Gas Tracker

Ethereum 28 Gwei
BNB Chain 3 Gwei
Polygon 42 Gwei
Arbitrum 0.5 Gwei
Optimism 0.3 Gwei

Market Cap

All โ†’
# Coin Price
1
Bitcoin BTC
$81,764.4
1
Ethereum ETH
$2,414.07
1
Solana SOL
$103.87
1
BNB Chain BNB
$720.2
1
XRP Ledger XRP
$1.3
1
Dogecoin DOGE
$0.0795
1
Cardano ADA
$0.2208
1
Avalanche AVAX
$9.82
1
Polkadot DOT
$1.11
1
Chainlink LINK
$12

๐Ÿ‹ Whale Tracker

๐Ÿ”ต
0x81d0...bfef
3h ago
Stake
2,862,876 DOGE
๐Ÿ”ต
0xd696...2148
1d ago
Stake
42,831 BNB
๐Ÿ”ด
0x567b...d49f
6h ago
Out
1,916,094 USDT

๐Ÿ’ก Smart Money

0xdace...edf5
Institutional Custody
+$2.8M
63%
0xf884...8e4b
Top DeFi Miner
+$2.7M
68%
0x89e3...3306
Experienced On-chain Trader
-$0.8M
68%

Tools

All โ†’