Book a call

The Missing Year · A NAV reconstruction case study

The Missing Year.

Eight months of DeFi history that nobody recorded, reconstructed for accounting, and the seven-figure position we found along the way.

A company is in its yearly audit, and the standard has risen. The auditors now need to see what was held, and what it was worth, on specific dates that have already passed.

The activity is all there. Every transaction is on a public chain, permanent and readable by anyone. And almost none of it is in a form an accountant can actually use.

Preparing for their most recent annual audit, the team found that daily NAV capture had only started more than halfway through the year. Eight months of DeFi positions had never been snapshotted as they happened.

That was not negligence. Until recently DeFi was too messy to track day by day, and nobody was asked to. The standard has moved. Auditors and regulators now look at on-chain positions, and they ask for a number on a date that has already gone by.

This is the story of rebuilding those eight months, what it took, and what turned up while we were doing it.


01 · Why you can’t just look it up

A balance is stored.
A position is derived.

There is a common assumption that because blockchains are public and permanent, any past state can simply be queried. For a token balance, that is true. Ask any archive node what an address held at a given block and it will tell you.

A DeFi position is a different question entirely.

An LP position is a share of a pool whose composition changed with every trade. A staked balance accrued at a rate that moved. A vault token had a redemption value that was different at every block, set by the vault’s own internal accounting. None of these are stored as a number you can read. They are derived, recomputed from the protocol’s own logic as it existed at that block, using the state the protocol held at that moment.

Fig. 1The same question, asked of the same block. One is a lookup. The other is five reads and a re-run of the protocol’s own maths.

So reconstructing one position at one past block means running that protocol’s maths at that block. Doing it across eight months, several protocols and three chains means doing it several million times, against archive nodes that hold the full historical state rather than just the present one. That infrastructure is the expensive part, and it is the reason this work is rare.

And then there is the problem that turns out to be hardest of all.

Knowing it is the same position

To produce a history rather than a series of disconnected readings, you have to know that the position you are looking at in February is the same position you were looking at in July. Pools get migrated. Contracts get redeployed. Names change. A naive reconstruction produces a chart where positions appear and vanish for reasons that have nothing to do with what the treasury actually did.

In practice that means giving each position a stable identity that a later snapshot can match to an earlier one, whatever has changed around it in between.

That identity, stable across time and surviving migrations and redeployments, is what makes a rebuilt history reconcilable rather than merely detailed. Without it you have a large quantity of true facts that don’t add up to a statement anyone can sign.

This is why historical DeFi NAV is not a feature that gets switched on. Each rebuild is custom work, built for one treasury at a time.


02 · What we built

Seven weeks,
deposit to delivery.

A large Web3 company came to us through an accounting partner, who works with them on accounting and reconciliation. The accounting partner records what moves in and out. A net asset value for any chosen moment in the past is a different kind of data, and it needs position-level history. The ask was to understand whether we could supply historical balances and transaction history for accounting reconciliation.

The division of work was clean. Octav built the protocol integrations and served the historical position data. The accounting partner orchestrated the backfill and normalised everything into their accounting pipeline. Together, the two products and the two teams’ expertise gave the client a finished result inside the accounting software and workflows they already use.

  • Uniswap V3 and V4 across three chains, plus a vault product added mid-project
  • Every protocol on every chain is a separate integration. A position is derived, not stored, so the result depends on that chain’s own history and state and on the protocol version: Uniswap V3 and V4 keep positions in different ways. The same protocol on a second chain is a second piece of work, not a configuration change.
  • Delivered through Octav’s Portfolio-at-Block endpoint, which returns a full decoded DeFi position set for an address at any block
Fig. 2A day of positions rebuilt from raw block data, across three chains at once.

The work was delivered a few weeks ahead of the agreed schedule.


03 · What we found

Nobody went looking.
It surfaced anyway.

During the rebuild, the reconstruction surfaced a position in a vault that was not on anyone’s list.

Seven figures

We found it because a rebuild does not check a list of known holdings. It analyses the whole wallet: every protocol and every position, decoded from the chain itself. You do not know what you are not tracking, and a partial reconstruction returns a partial answer that looks complete.

That vault is now a built integration, for history and for ongoing tracking.


04 · Rebuild or record

Rebuilt after the fact.
Or recorded as it happens.

Here is the uncomfortable part, and we would rather say it than have you work it out later.

Rebuilding history you never recorded

A custom engineering engagement. It requires archive infrastructure, protocol-specific work for every protocol and every chain, and weeks of specialist time. It is priced accordingly, because it costs that to deliver. It is the most expensive way to obtain a number.

Recording it as it happens

A routine line item. A snapshot taken daily, per address. It requires no engineering, no scoping conversation, and no seven-week project.

The only variable is when you decided you wanted it.

Almost nobody decides in advance, because the need arrives from outside: an audit, a restructure, a regulator, an investor. By the time the question is asked, the cheap option has expired, and the only remaining path is to rebuild.

We built Block-by-Block NAV because that path needs to exist. But the honest advice, from the company that sells it, is this: the best outcome is never needing it.

That is what Octav Snapshots is for. It records every position, for every address, once a day, as it happens. When someone asks for a number on a past date, the number is already there.

Get your snapshot now

Scope your own rebuild

Every rebuild is priced on what it actually involves, so there is no list price to quote. Tell us the shape of yours and we will come back with one. Or book a call and we scope it together.

Book a call

Who to reply to

So we can come back to you with a quote.

Which protocols

Search any protocol. Chains come from what it actually deploys to, so you can only pick combinations that exist.

How far back
Your rebuild involves

0 integrations · 0 protocols · 0 chains

Search for a protocol above to start.

The count of addresses barely moves the work. The protocol and chain matrix is the work, which is why we scope rather than list a price.

Or skip the form

Prefer to talk it through? Book 30 minutes. Whatever you have picked above comes with the invite, so the call starts with your scope already on the table.

Book a call

Rather email? [email protected]

Before you ask us

Is this an audit?

No. We decode the on-chain data and reconstruct the positions and their values. On this project that data went into the client's accounting system, the one they used for their annual audit. We do not sign anything.

Which protocols and chains can you rebuild?

Any protocol can be scoped. Each protocol on each chain is its own integration, which is why the scoping form asks for that matrix rather than a wallet count. If a protocol is already built, adding your history is fast. If it is not, building it is most of the work.

Can we switch on protocols you have already built?

Yes, and quickly. Many major DeFi protocols across our supported chains are already built for historical at-block data, and adding your history on top of them is fast. A protocol we have not built yet is a custom build, which is most of the work. Access to historical at-block data is granted per customer by agreement rather than being switched on by default.

How long does a rebuild take?

The reconstruction in this case study ran seven weeks from deposit to final delivery, covering eight months of history across three chains, two Uniswap versions and a vault added mid-project. Yours depends on how many protocol and chain pairs are involved and how far back it goes.

Does our data stay exportable?

Yes. You can export your data in full, at any time. On this project the data was exported to the client's accounting system and is stored there. Octav is SOC 2 Type 2.

What does having snapshots actually save you?

A rebuild. A daily snapshot records the decoded positions for each address at the time, so nothing has to be recomputed later. It is the cheap half of this page: it makes a future rebuild unnecessary, not only faster.


05 · Where it leaves them

The gap is closed.
It cannot reopen.

The eight months are rebuilt and reconciled, sitting in the client’s accounting system alongside everything else.

More importantly, the client is now covered going forward. Snapshots are recorded daily, so history is captured as it happens rather than reconstructed after the fact. The expensive problem was solved once, and it does not have to be solved again.

That relationship is worth being explicit about. The accounting partner is the accounting and tax layer: the reconciliation, the ledger, and the place where the client’s finance team works with the data. Octav is the data layer underneath it, supplying position-level DeFi data, transaction history and NAV. They brought us into this project because that division is real, and this is what it looks like when the two halves meet a problem neither could solve alone.


06 · Check it on your own wallet

See everything you hold,
fully decoded.

Every protocol and every chain an address touches, decoded into positions you can actually read. This is the live product, and it is the layer the reconstruction was built on top of.

Every protocol, every chain, decoded. No account needed to look.

Reading a past block is the harder version, and it is not what the paste box does. History that was never recorded, an audit with a date you cannot produce a number for, a restructure that needs books reconciled backwards: that is the custom engagement, scoped per protocol and per chain. The form in section 04 is the fastest way to start it.