Ly Gravity

Null Output: The Silent Failure Mode Inside Crypto's Research Machine

HasuBear • • Weekly

The report came back clean. Eleven pages. Correct formatting. Every risk category present and accounted for, every cell populated, every row closed out by the same four characters. N/A. No anomalies detected. Recommend proceed.

There was no report. There was a template wearing a report's clothes.

What happened upstream was simple and, in the moment, invisible: the extraction stage returned nothing. No title, no source, no project name, no timestamp, no list of facts. Zero information points. And because the stage did not raise an error — because returning an empty set is not, technically, a failure — the downstream analyzer received the blank as input and behaved exactly as designed. It filled the schema. It wrote 'information insufficient' into thirty-one fields. It rated technical value at zero stars and reference value at one. Then it closed with a recommendation to proceed.

A human reader skimming for red flags saw none. Red flags are red. This was grey.

I have spent nine years building and auditing exactly this kind of machinery — narrative pipelines, on-chain diligence stacks, the unglamorous plumbing that turns a block explorer into a memo an investment committee will actually read. And I want to say plainly what I told the team that built this one: the bug was never in the model. The bug was in the contract between stages. A system that cannot distinguish between 'we found no risk' and 'we could not look' will eventually confuse the two, and it will do so quietly, at scale, and in the direction of whatever the reader already wanted to believe.

The most dangerous string in crypto research is not a wrong number. It is N/A.

We are in a bear market, and in a bear market the cost of that confusion is not embarrassment. It is capital. When the tide is coming in, a blank slide reads as room to run. When the tide is going out, the same blank slide reads as safety. Same four characters. Opposite meaning. And the people who pay for the misreading are the ones who assumed the absence of a finding was a finding of absence.

Let me trace how we got here, because the failure is not new. Only its costume is.

In 2017, the bottleneck in crypto research was comprehension. There were maybe forty white papers worth reading and a few thousand people willing to read them. I was one of them — a thirty-year-old economist who ignored an editor's instruction to cover Bitcoin and spent three months reverse-engineering Zilliqa's sharding documentation instead, then cold-emailed two core developers in Singapore until they agreed to walk me through the parts I had gotten wrong. The output of that detour was a thread called 'Beyond the Token: Why Scale Requires Architecture,' and the thing that made it travel was not the price call. It was that I had translated a cryptographic proof into a story about structural utility. That was the job then. Read the paper. Understand the mechanism. Explain it to people who were pretending to understand it.

The bottleneck moved in 2020. DeFi Summer produced more data in six weeks than the previous three years combined, and comprehension stopped being the scarce good. Measurement became scarce. Dashboards proliferated. Dune queries became a language of status. And somewhere in that shift, a subtle substitution happened: we began to treat the existence of a dashboard as evidence that the thing on the dashboard had been measured. It usually had. But 'usually' is not 'always,' and the exceptions were exactly where the money was.

I learned that lesson the hard way and in public. Bored by the yield-farming guides everyone else was publishing, I pulled on-chain data for fifty randomly selected Uniswap V2 liquidity providers and reconstructed their actual profit and loss — fees minus divergence loss, position by position. Eighty percent of them were losing money while chasing APY. The dashboards they were reading showed fees earned. They did not show impermanent loss, and where the IL calculation failed — thin pools, missing price snapshots, tokens that had migrated contracts — the number silently defaulted to zero. Not an error. A zero. Liquidity is not just numbers, it is narrative — and the narrative being sold was that a positive fee number was a positive return.

The bottleneck moved again in 2021, from measurement to interpretation. The Bored Ape era taught me that the most valuable data in crypto was frequently off-chain. I joined that Discord not as a holder but as an observer, and spent weeks mapping how social signaling between holders and the Yuga team converted into on-chain value. On-chain, the club looked like a contract with a supply cap. Off-chain, it was a kinetic social graph with a membership fee. Analysts reading only the chain saw nothing, because the asset was not there. Listening to the digital tribe's hidden rhythm meant accepting that some blanks are not failures — they are boundary markers telling you where your instrument ends.

2022 moved the bottleneck to trust. Terra did not fail because the data was missing. Terra failed because the data was abundant, legible, and wrong in a way that everyone had agreed to stop noticing. After the collapse I pivoted toward comparative CeFi and DeFi risk models and published something unfashionable — that trust, not code, was becoming the binding constraint. Purists hated it. Institutions fleeing the wreckage read it twice. What I took from that year was not cynicism but a rule: narratives are fragile, and the analyst's real product is not the conclusion but the provenance of the conclusion.

Which brings us to the current cycle. 2024 and 2025 were the institutionalization years. I spent much of that period in Abu Dhabi, running closed-door roundtables between ADGM regulators and DAO founders, trying to translate Silicon Valley's libertarian ethos into language a regulator could underwrite and back again. The output was a paper on the geopolitics of compliance. The lesson was that institutional capital does not ask 'is this decentralized.' It asks 'can I show my auditor why I believed this.' Provenance became the product.

And then the bear market arrived, budgets compressed, headcount went, and the industry did what every industry does when it gets scared and poor: it automated the diligence. Which is rational. Which is also how we arrived at a pipeline that returned eleven pages of N/A and a recommendation to proceed.

Here is the structural point, and it is the one I want to sit with. Every cycle, crypto builds a new abstraction layer between the analyst and the raw chain — white papers, then dashboards, then social graphs, then compliance memos, now automated research agents. Each layer makes analysis cheaper and faster. Each layer also introduces a new place where emptiness can hide, because each layer has an interface, and every interface has a default value, and every default value is a small act of fiction.

In a bull market, the fiction is generous and nobody audits it. In a bear market, the fiction is conservative — and conservative fiction is far more dangerous, because it looks like prudence.

So let me do what I do, and decode the noise to find the signal. The signal here is taxonomic. 'No data' is not one condition. It is at least five, and they require five different responses.

The first species is the honest null. There is genuinely nothing to measure. A protocol launched four days ago has no retention curve. A token with nine holders has no meaningful concentration metric. The correct output is 'insufficient history,' and the correct downstream behavior is to stop, not to grade.

The second species is the sentinel — and this is the one that kills people. A sentinel is a string that stands in for a value the system could not obtain: N/A, unknown, dash, zero. The moment a sentinel enters a data structure alongside real values, it acquires the properties of a real value. Zero is the worst offender, because zero is also a legitimate measurement. A pool with zero volume and a pool whose volume query timed out are indistinguishable downstream, and one of them is a signal while the other is a hole. When I audit a research stack, the first thing I ask for is the sentinel policy. If the answer is a shrug, I already know what the failure mode will look like.

The third species is the truncated fetch. Pagination capped at a thousand rows. An RPC endpoint that rate-limited at 03:00 UTC. An indexer lagging two hundred blocks behind head. The data exists. You got a fraction of it. And the fraction you got is biased in a specific direction, because pagination returns the most recent or the most active first, which means truncation systematically removes the long tail — the dormant wallets, the small holders, the quiet contracts — and the long tail is precisely where concentration risk and sybil clusters live.

The fourth species is the silent filter. Somebody wrote a WHERE clause. Somebody always writes a WHERE clause. Filter out wallets below a dust threshold to clean up the chart, and you have just deleted the sybil cluster that was farming your governance token with nine hundred dust wallets. Exclude contract addresses because they break your interface, and you have just deleted the treasury, the bridge, and the top three delegates — after which your decentralization chart reads beautifully. This is the species I find most often in governance dashboards, and it is the reason I stopped trusting 'number of unique voters' as a metric back in 2022.

The fifth species is the stale cache. A snapshot from three weeks ago presented with the confidence of a live query. In a market that moves eight percent in a session, three weeks is a different asset.

Five species, one output string. Which means the string carries no information at all until you know which species produced it — and the pipeline that generated our eleven pages had no field for species. It had a field for value. The value was N/A.

There is a schema sin underneath all of this, and it is worth naming because it is nearly universal. Most research pipelines use schemas with non-nullable fields. Every field must contain something. This is a reasonable engineering choice for a database and a catastrophic one for an analytical instrument, because it guarantees fabrication under missing input. A schema that cannot represent 'I did not obtain this' will represent 'I did not obtain this' as something else. Usually as a zero. Sometimes as a qualitative judgment. In the pipeline I audited, the substitution was more sophisticated: the model inferred, correctly, that it had no data, and then expressed that inference in the language of assessment — 'technical value: not assessable.' Which is honest in isolation and lethal in aggregate, because thirty-one instances of 'not assessable' arranged in a report read, to a human eye, as thoroughness.

That is the mechanism. Not a hallucinated number. A hallucinated structure. The pipeline did not invent facts; it invented the appearance of having examined facts.

I want to be precise about why this is worse than a wrong number, because the intuition runs the other way. A wrong number is falsifiable. Someone can check it. It generates a dispute, and disputes generate scrutiny. A blank generates no dispute, because there is nothing to disagree with. It passes through review committees untouched, because reviewers look for claims and there are no claims. Wrong data starts arguments. Missing data starts positions. The position gets sized, the size gets levered, and the lever gets liquidated by the thing the blank was hiding.

And the aggregate illusion is worse than the sum of its parts. One blank is a hole. Thirty-one blanks arranged under headings, with consistent typography and a rational ordering of categories, becomes a document. Documents get forwarded. Documents get cited in other documents. Six months later a second analyst reads the first analyst's 'not assessable' and treats it as a settled finding rather than an absence, and the blank has now been laundered into a fact. That laundering is the actual mechanism of contamination in this industry, and it happens without a single person lying.

I have three concrete cases from my own work where a blank did measurable damage. I am naming the pattern rather than the counterparties, because the pattern is the generalizable part.

The first is a data availability audit I ran across a sample of rollups in late 2025. The question was whether dedicated DA layers were earning their cost. The pipeline returned, for a majority of the sample, an empty utilization series. The assessment logic scored empty utilization as 'no congestion risk' and moved on. The correct reading was the opposite and much more interesting: the series was empty because there was almost nothing to post. Most of these rollups were producing data volumes so modest that the blob space they had purchased was effectively decorative — a warehouse rented for a shipping operation that moves four pallets a month. Tracing the sharding roots of tomorrow's liquidity is a genuinely beautiful intellectual exercise, and I have done my share of it. But an empty utilization chart is not a scaling triumph. It is a demand signal, and the demand is not there yet. The blank was the finding. The pipeline threw the finding away because the finding looked like missing data. When the emptiness is the answer, a system that treats emptiness as an error will systematically delete its best insights.

Null Output: The Silent Failure Mode Inside Crypto's Research Machine

The second is an indexer reconciliation on Bitcoin's meta-protocol layer. Two independent indexers disagreed on token balances for a set of inscription ranges, and a third returned nothing at all for those ranges — not an error, an empty response. Downstream, the empty response was coerced to zero balance, which meant the supply looked smaller than it was, which meant the market capitalization printed on every aggregator was wrong by a margin nobody could quantify because the reference implementation itself was the thing in dispute. I have said before, and I will keep saying, that building fungible token ledgers on Bitcoin is like using a Rolls-Royce to haul cargo — it insults the car and it does not carry much. What that audit added to the metaphor was this: the cargo is real, the manifest is maintained by three separate clerks who do not talk to each other, and when one clerk goes silent the shipment does not disappear, it just stops being counted. In an asset class whose entire truth layer is a set of indexers that nobody has appointed and nobody can fire, a blank balance is not a rounding error. It is phantom supply, and phantom supply trades.

The third is the one that bothers me most, because it is the most common. A governance dashboard for a mid-sized DAO showed voter participation dropping to a blank across three consecutive quarters, and top-ten holder concentration reading comfortably low. Both readings were artifacts. The participation series went blank because delegation contracts had been excluded from the query; the votes were being cast, just not by the addresses the filter recognized. The concentration metric read low because the top holders were multisigs, bridges, and a treasury — all contract addresses, all excluded by the same filter. The dashboard's verdict was 'healthy decentralization.' The chain's verdict was that four entities controlled enough delegated weight to pass any proposal they wanted. I have written at length about the architecture of belief built on code, and about how governance tokens function in practice as non-dividend equity whose only return channel is a subsequent buyer. This dashboard was the belief layer, rendered in green. The blank was not hiding a risk. It was manufacturing a legitimacy.

And here is the counterweight, because I do not want to leave the impression that every empty field is a crime. Sometimes the blank is a boundary marker, and the professional move is to walk around it rather than fill it. My Bored Ape fieldwork was exactly that. The on-chain record of that collection was thin in the places that mattered — the places where membership, access, and status lived were in Discord roles, in group chats, in who got invited to the yacht party. An analyst demanding that the social layer express itself on-chain would have recorded a blank and concluded 'no fundamental value.' The correct conclusion was 'wrong instrument.' The value was real; it was just denominated in a currency my query language did not support.

The distinction I now apply is this: a blank is either a hole in the instrument or a boundary of the instrument, and the two require opposite responses. Holes must be filled or the analysis must be abandoned. Boundaries must be mapped and then worked around with a different method. Confusing them produces the two classic errors — the analyst who fills a boundary with a fabricated number, and the analyst who abandons a hole as 'not measurable.' I have made both errors. The second one is more respectable and more expensive.

Now the part that will annoy people, which is usually the part worth writing.

The consensus, insofar as one exists, is that this is a tooling problem awaiting a tooling solution. Better models, better prompts, better evaluations, better agents. I think that is largely wrong, and I think it is wrong for a reason that has nothing to do with engineering.

Blankness is a product. It has buyers.

Consider who consumes a diligence memo in this industry. A fund's investment committee. A listing desk. A protocol's own foundation, publishing a transparency report. A regulator's innovation hub, compiling a market overview. In every one of those seats, 'we examined the protocol and found no material issues' is a usable sentence and 'we could not obtain sufficient data to form a view' is a career risk. The blank is the most valuable string in crypto research precisely because it is unfalsifiable and it resolves. It lets a process terminate without producing a conclusion that anyone can be held to. Where capital flows, stories of value emerge — and the story that capital most wants to hear in a drawdown is that there was nothing to see.

That is not a bug in the model. It is a bug in the incentive the model was trained and tuned against. Helpful assistants fill schemas. Compliance templates require every box ticked. An agent that returns 'insufficient data, halting' scores lower than an agent that returns a complete-looking report, because the evaluator is a human skimming for completeness. We have built an entire research stack whose success metric is indistinguishable from its failure metric.

So here is the contrarian claim: the fix is not a better analyzer. The fix is a refusal contract. Any stage in a research pipeline should be permitted — required — to return a structured failure that propagates upward and halts the chain. Not a low score. Not a zero-star rating. A hard stop with a machine-readable reason. The value of a research system is set not by what it can conclude but by what it will decline to conclude, and almost every system I audit has been engineered to never decline.

The second contrarian claim is about us, not the machines. 'I don't know' and 'N/A' carry identical information and opposite social capital. The first is what a good analyst says constantly and gets punished for. The second is what a bad pipeline says constantly and gets promoted for. The industry has spent a decade teaching itself that uncertainty is a failure of expertise, and the automation did not invent that norm — it inherited it and industrialized it. If you want to know why a blank report reached a decision-maker with a 'proceed' attached, the proximate cause is a nullable field. The distal cause is a culture that has never once rewarded the sentence 'I could not look.'

And the third, which cuts against my own argument, because a thesis you cannot attack is a marketing brochure. It is possible that completeness itself is the wrong ideal. My best work has never been complete. The Uniswap audit covered fifty providers out of tens of thousands. The Terra post-mortem was written in six days with half the data I wanted. The ADGM roundtables produced a framework that three regulators used and four ignored. If I had demanded a full information set before publishing anything, I would have published nothing, and the fifty-LP sample that revealed the yield trap would have stayed a private spreadsheet. The lesson is not that we should only speak from completeness. It is that we must be honest about the shape of our incompleteness — and a system cannot be honest about its incompleteness if its schema has no room for it.

There is one more layer, and it is where this stops being about research and starts being about survival, which is the only subject that matters in a bear market. The reader of a diligence report is not buying analysis. They are buying a reason to believe their assets are safe. That is the demand side, and it is enormous, and it is being met by a supply side that has learned to produce the feeling of diligence without the substance. A blank slide does not say your assets are safe. It says nothing. But it says nothing in a font that looks like safety, and in a market where forty percent of a protocol's liquidity providers can leave in seven days, the difference between 'nothing found' and 'nothing looked at' is the difference between staying solvent and becoming exit liquidity for someone who read the same report more carefully.

So where does this go.

I think the next cycle's scarce good is provenance, and I think it gets priced before it gets named. Not 'is this analysis good' — that question is unfalsifiable and will stay unfalsifiable — but 'can this analysis show its work.' Which fields were fetched, from which endpoint, at which block height, and which fields were not fetched at all. A research product that can answer that question has information gain by construction. One that cannot is a template with a byline.

The practical test I now apply to any stack, mine included, takes about ten minutes. Feed it an empty input on purpose. Not a malformed input — an empty one. A document with a title and nothing else. Then watch what comes out the other end. If you get a report, you have not built an analytical instrument. You have built a confidence machine. If you get a structured halt with a reason code, you have something worth trusting.

And the three signals I would watch over the next two quarters are unglamorous and diagnostic. The non-null rate on your own extraction stage, tracked weekly — if it dips below ninety percent, something in your data path is silently failing and you will not find out from the output. The miss rate on domain classification — every 'unclassified' is a blank wearing a different hat. And the behavior of anything downstream when it receives an empty set, which is the only test that ever really matters, because it is the one nobody runs until the report is already on the table.

The architecture of belief built on code has one structural weakness, and it is not the code. It is that code, like the people who write it, would rather return a value than admit it did not get one. Mapping the untold geography of digital assets means mapping its voids as carefully as its peaks — and the voids are where the leverage accumulates, quietly, in the shape of things everyone has agreed not to measure.

If your research stack cannot return an error, what exactly is it returning?

Market Prices

BTC Bitcoin
$80,689.2 -1.30%
ETH Ethereum
$2,372.1 -1.22%
SOL Solana
$101.76 -2.41%
BNB BNB Chain
$733 -2.03%
XRP XRP Ledger
$1.28 -2.84%
DOGE Dogecoin
$0.0775 -3.26%
ADA Cardano
$0.2088 -3.51%
AVAX Avalanche
$8.93 -3.16%
DOT Polkadot
$1.07 -9.57%
LINK Chainlink
$11.62 -4.02%

Fear & Greed

51

Neutral

Market Sentiment

Event Calendar

{{年份}}
08
04
upgrade Solana Firedancer

Independent validator client goes live on mainnet

12
05
halving BCH Halving

Block reward halving event

28
03
unlock Arbitrum Token Unlock

92 million ARB released

18
03
unlock Sui Token Unlock

Team and early investor shares released

30
04
upgrade Celestia Mainnet Upgrade

Improves data availability sampling efficiency

22
03
unlock Optimism Unlock

Circulating supply increases by about 2%

15
04
halving Bitcoin Halving

Block reward reduced to 3.125 BTC

10
05
upgrade Ethereum Pectra Upgrade

Raises validator limit and account abstraction

Altseason Index

40

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
$80,689.2
1
Ethereum ETH
$2,372.1
1
Solana SOL
$101.76
1
BNB Chain BNB
$733
1
XRP Ledger XRP
$1.28
1
Dogecoin DOGE
$0.0775
1
Cardano ADA
$0.2088
1
Avalanche AVAX
$8.93
1
Polkadot DOT
$1.07
1
Chainlink LINK
$11.62

🐋 Whale Tracker

🔵
0x4883...d9dc
1h ago
Stake
18,209 BNB
🟢
0xfdf4...8980
5m ago
In
3,943,730 USDC
🟢
0x85ba...bed3
6h ago
In
6,874 BNB

💡 Smart Money

0x2be2...1cf5
Early Investor
+$2.4M
85%
0x61d1...d2fd
Arbitrage Bot
+$2.5M
60%
0x1227...55f1
Early Investor
+$2.1M
91%

Tools

All →