The item I read had a date and nothing else.
A United States House committee had scheduled a Sept. 16 markup of cryptocurrency tax rules. That was the substance. Two sentences. No year attached to the date. No committee named — just House committee, which in Washington could mean Ways and Means, Financial Services, or something convened for a photograph. No bill number. No published text. The sourcing was Bloomberg, relayed through a secondary aggregator, which means at least one layer of lossy compression between the original reporting and my screen.
I have spent a large part of my career looking at records with missing fields. Compile the silence, let the logs speak. A block header without a timestamp is not a header. It is a rumor with a hash. My instinct, when I see a record that is ninety percent metadata and ten percent assertion, is not to ask what it means. It is to ask what is absent, and why the absence survived editing.
What is absent here is the entire operative content. Markup is a process noun. It tells you where a bill sits in a building, not what the bill does. And the second half of the item — the part about clarity improving confidence and lifting demand — is not reporting. It is a forecast wearing reporting's clothes.
The real question is not whether a committee meets on Sept. 16. The real question is what a tax rule must contain to be executable at all, and whether the infrastructure that would execute it exists. I have a specific view. It mostly does not. The distance between the rule and the rails is where the next eighteen months of engineering work live.
What a Markup Actually Is
A markup is a committee session in which a draft bill is read, amended line by line, and voted on. It is the first moment the text becomes real. Before markup, a bill is a press release with ambitions. After markup, it is a document with clause numbers and a score.
That distinction matters more than the calendar date. A scheduled markup is a scheduling decision. A completed markup produces a chairman's mark, an amendment list, and a vote tally. Those artifacts are auditable. The date is not.
In the American system, tax legislation on the House side conventionally runs through the Ways and Means Committee, which holds the constitutional origination power for revenue measures. The Finance Committee handles the Senate side. The source material never names the committee, which is a meaningful omission — Ways and Means and Financial Services have different jurisdictional reach, and a bill routed through one versus the other signals different intent. A Financial Services vehicle tends toward market structure. A Ways and Means vehicle tends toward collection. The distinction is not cosmetic. [confidence: medium]
Governance is a myth; the bypass reveals the truth. In this case the bypass is procedural, and it is the only real information in the item.
The legislative pipeline ahead is long. Committee markup leads to a full chamber vote, then to the other chamber, then to reconciliation of the two texts, then to signature. Each stage is a filter that removes provisions with weak coalitions. A bill that emerges from markup intact is not a bill that becomes law. The expected value of any single procedural node is low, and markets that price procedural nodes as if they were content are pricing a placeholder.
What is actually true about American crypto tax law, as of my last full review, is this. Digital assets are treated as property under a 2014 IRS notice, which means every disposition is a taxable event — including buying coffee. The 2021 infrastructure law inserted a broad broker definition into the code, and the Treasury's 2024 final regulations translated part of that into a reporting regime centered on a new information return covering digital asset proceeds. Gross proceeds reporting was staged to begin for transactions in one year, with cost basis reporting following a year later. Non-custodial actors were deferred, not resolved. Four questions remained open, and they remain open now: who counts as a broker, how basis is transmitted, whether wash sale rules apply, and whether a de minimis exemption exists.
Every one of those four questions is an engineering question disguised as a policy question. That is the part the coverage keeps missing.
The Broker Definition Is a Data Pipeline Spec
Strip the politics and a broker definition is a schema. It says: this entity must observe these events, retain these fields, compute these values, and emit this record to this counterparty by this deadline.
Once you read it that way, the difficulty becomes obvious. A custodial exchange can satisfy the schema because it already sits at the chokepoint. It knows who you are, it knows what you bought, it knows the fiat price at execution, and it can serialize all of it. The compliance work is real but bounded. It is a data engineering problem with a known shape.
A non-custodial protocol cannot satisfy the same schema without becoming something it is not. There is no account. There is no identity. There is no counterparty in the legal sense — there is a message, a signature, and a state transition. A liquidity pool does not know who swapped. A lending market does not know who borrowed. The protocol's entire design premise is that it does not need to know.
I saw this problem in miniature in 2017, during a six-week manual audit of an ERC-20 implementation. Tracing the binary decay in 2x02 taught me that a swap function is a state machine with a very short attention span. It checks a balance, mutates a balance, emits an event, and forgets. The event log is the only durable memory. And an event log records amounts and addresses. It records nothing about intent, nothing about ownership, and nothing about the fiat value of the asset at the instant the state changed.
That is the crux. A tax system needs four fields the chain does not natively produce: identity, acquisition date, acquisition value, and purpose. The chain produces two: amount and address. Everything painful about crypto tax follows from that four-field deficit.
The infrastructure response is predictable, and it is already forming. Indexers that reconstruct historical balances. Pricing engines that can resolve fair market value at a specific block height. Ledger reconciliation services that attempt to match a withdrawal on one venue to a deposit on another. Portfolio trackers that have quietly become accounting systems. None of this is glamorous. All of it is load-bearing.
That is also why the compliance-cost argument cuts the way it does. A large venue with an existing data platform absorbs the schema change as a sprint. A small venue absorbs it as an existential question. Tax rules are, among other things, a moat specification written by people who did not intend to write a moat.
Cost Basis Is a Consensus Problem
Here is the part I find genuinely interesting, and the part almost nobody discusses in public.
Cost basis assignment is a consensus problem. When you dispose of an asset, someone must decide which lot you sold. First in, first out. Last in, first out. Specific identification. Highest in, first out. These are accounting conventions, and they produce materially different tax outcomes from identical on-chain facts.
The chain has no opinion. A transfer is a transfer. The blockchain records movement, not disposition. The moment you understand that, you understand that on-chain tax compliance is not on-chain at all. It is an off-chain reconciliation layer that uses on-chain data as one input among several.
I tested this myself. After the 2022 collapse I spent three months reverse-engineering a yield mechanism, tracing liquidity from seigniorage into reserve assets to identify the circular dependency that made the death spiral mathematically inevitable. That exercise was painful, but the data was clean: token flows, contract calls, timestamps, all on one chain, all in one format. Reconstructing a tax lot from raw logs is harder, because the hard part is not the chain. The hard part is everything the chain does not contain.
Last year I wrote a Python script to rebuild a cost basis ledger from raw event logs across four venues and two chains. It worked for about seventy percent of the positions. The other thirty percent failed for reasons that had nothing to do with code quality:
A withdrawal from a centralized venue never appears as a transfer from a user-controlled address, because the venue moves funds from an omnibus wallet. The user's on-chain footprint shows an inflow from an address the user has never controlled and cannot prove ownership of.
A wrapped token breaks the continuity of the lot. The wrap is mechanically a deposit-and-mint, but whether it is a taxable disposition is a question the guidance left ambiguous for years. If the answer is yes, the taxiing event count explodes. If the answer is no, you need a mapping table that the wrapping contract does not publish.
A bridge transfer across layers produces two records that do not obviously reference each other. Matching them requires heuristics, and heuristics produce disputes.
The stack is honest, the operator is not. The chain reported exactly what happened. The reporting failure was in the layer above it — the layer where human conventions live.
This is where the sobering implication lands. Under a gross-proceeds-first reporting regime, taxpayers with assets acquired before the basis reporting start date will receive information returns showing proceeds with no corresponding basis. Run that through a naive matching algorithm and you generate phantom gains on transfers that were never dispositions. The taxpayer then has the burden of proving the negative — that a movement was not a sale. That is a documentation problem masquerading as a legal problem, and it will land hardest on exactly the users who moved assets across venues the most.
I have seen this failure mode before, in a different domain. In 2021 I tracked the off-chain metadata behind an early NFT collection over a forty-eight hour window and demonstrated that the trait data was mutable. Immutable metadata does not exist on a mutable URI. The token was permanent. The meaning was not. Tax reporting has the same structural weakness: the durable record is on-chain, the interpretable record is off-chain, and the two can drift apart without anyone noticing until an audit.
The Oracle Problem Nobody Has Scored
Recognition timing is the second hard problem, and it is worse than basis assignment.
Staking rewards and mining rewards are generally recognized as income at receipt, valued at fair market value on the date of receipt. Now read that sentence as an engineer. The date of receipt, in a proof-of-stake network, is a specific block. The block has a height and a timestamp. The fair market value requires a price observation at that same instant.
Blocks arrive every twelve seconds. The price observation must be contemporaneous. Every node that validates the block must agree on the state transition, but no node validates the price. So you have a deterministically agreed state change whose tax value is determined non-deterministically by whichever price source you happen to consult.
I ran into the mirror image of this in 2020 while examining a governance interface. I reproduced, locally, using a scripted test harness, a timestamp dependency in the voting mechanism that a block producer could exploit by manipulating inclusion timing. The substantive finding was about governance manipulation. But the structural lesson was broader: when a system's outcome depends on timestamp semantics, the timestamp becomes an attack surface. In tax terms, the attack surface is the calendar.
A transaction included at 23:59 on December 31 is a different tax year than the same transaction included four minutes later. A validator with discretion over inclusion ordering has, in principle, discretion over which year a user's liability falls into. I am not claiming this is a meaningful attack. I am claiming it is an unmodeled dependency, and unmodeled dependencies are where audits are born.
Now add a second layer. Staking rewards are recognized as ordinary income at receipt, and then the same tokens generate capital gain or loss on later disposition. The same economic gain is taxed twice, in different characterizations, at different rates. Whether the markup touches that is unknown, because no text exists. But the accounting machinery required to track it correctly — income basis established at receipt, carried forward, adjusted for every subsequent movement — does not exist as a consumer product. It exists as a spreadsheet pattern that a certain kind of person maintains by hand and everyone else gets wrong.
What Will Actually Get Built
The engineering consequence of any credible tax rule is a demand spike in a specific and unglamorous category: on-chain accounting and reconciliation infrastructure.
The requirements are unremarkable when written down. Historical balance reconstruction across chains and venues. Fair market value resolution at arbitrary block heights, with a documented methodology. Transaction classification that can distinguish a transfer from a disposition, a wrap from a sale, a bridge from a realization. Cost basis assignment with configurable lot conventions. Export formats that match the schema of the reporting form.
None of this is exciting. All of it is mandatory if the rule takes effect. And the incentive to build it does not come from the protocol layer. It comes from the custodial perimeter, because that is where the reporting obligation lands and where the liability concentrates.
There is a second-order effect worth naming. Compliance tooling has positive returns to scale. The marginal cost of an additional report is close to zero once the pipeline exists. That pushes the market toward consolidation at the venues that can afford the build, and it pushes self-custody users toward third-party tooling they must trust with a complete financial history — which is a privacy concession that the self-custody premise was designed to avoid.
There is a real tension here. Every tool built to make self-custody tax-compliant requires the user to hand a full transaction history to a counterparty. The compliance layer recreates the surveillance surface that the custody layer removed. That is not an argument against building it. It is an argument for building it with local-first architecture, and I do not see much of that yet.
The Blind Spot: Clarity Is Not the Trade
The prevailing read of any crypto tax headline is that it is directionally positive, because clarity is positive, and clarity brings institutions. The source material repeats this. It is a forecast, not a fact, and I think it is wrong in an important and specific way.
Legislation is scored for revenue, not for sentiment. Under American budget rules, a tax bill has to produce a number. That single constraint determines the content of the text far more reliably than ideology does. Whatever provisions raise the most revenue at the lowest political cost are the provisions that survive markup. That is the physics of the process.
Now price the two most likely revenue provisions. Applying wash sale rules to digital assets closes an asymmetry that currently lets traders realize losses and re-establish positions without a waiting period. It is cheap to score, easy to defend, and unambiguously raises the effective tax burden on active traders. Adding an exemption for small transactions does the opposite — it gives away revenue. One of these is likely. The other is not.
The bill that gets called clarity is probably a bill that raises the effective tax rate on the most active participants. Nobody is pricing that, because the headline is about clarity and the substance is about collection. The two are being traded as if they were the same variable.
There is a second blind spot, and it is a category error. Tax clarity and securities clarity are different regulatory axes. Institutional allocators care primarily about the second one — custody, market structure, the legal status of the asset itself. A resolved tax question does not resolve the securities question. It reduces one line of uncertainty in an operating model that has several. Treating tax legislation as an institutional unlock conflates two pipelines that run on different clocks and different committees.
The third blind spot is enforcement asymmetry. The rules written for custodians will be applied to custodians, because custodians are the only actors against whom enforcement is cheap. A non-custodial protocol cannot be audited into compliance. It can only be pushed out of the jurisdiction through the entities that touch fiat. So the practical effect of a strict rule is not a compliant DeFi ecosystem. It is a bifurcated one — a regulated perimeter and an offshore remainder — with the reporting burden landing entirely on the perimeter users.
What I Am Watching
Three signals, and I am watching them in this order.
The broker definition's scope. If the text extends reporting obligations to non-custodial actors, the structural impact is large and the compliance cost is effectively infinite for software that has no legal person behind it. If it defers them, which is what the previous round of rulemaking did, then the entire controversy is a second rulemaking away and the current markup is administrative housekeeping. [confidence: medium]
Wash sale treatment. If asymmetry is closed, active trading after-tax returns compress and the market response is real, immediate, and negative for high-frequency participants. If it is not closed, the text is milder than the revenue score would suggest.
The de minimis threshold. If a small-transaction exemption appears, it is the single most useful provision available and it unlocks payment use cases that the property treatment has suppressed for a decade. If it does not appear, nothing about the everyday usability of crypto changes. [confidence: medium]
My working prediction for the text is unglamorous. Deferral on non-custodial actors, because the technical questions are unresolved and the political cost of guessing is high. Wash sale symmetry adopted, because it scores. No de minimis, because it gives revenue away and no committee wants to defend that in a floor debate. A long effective-date runway, because implementation always slips. [confidence: low]
If that is what emerges, then the actual trade here is not clarity. It is a tax-rate increase on the most active cohort, wrapped in a procedural headline that most readers will skim. Heads buried in the hex, eyes on the horizon — except the hex here is a legislative calendar, and the horizon is a taxpayer who will not find out what the rule did to them until the form arrives.
The text is the only thing that matters. Everything published before the text is a placeholder with a date attached. And when the text lands, the question worth asking is not whether it is good or bad for the asset class. It is whether the rails underneath it can actually carry the load — because a rule that cannot be executed is not a rule. It is a liability transfer to whoever holds the records.
Who holds yours?