Blockchain data integrity means that data recorded on a chain cannot be changed without the change being seen. The chain guarantees this for what is written on it. It says nothing about whether the data was correct when it was written, or about data kept off-chain. Those two gaps need a proof of their own.
That difference matters for any institution that puts data on a chain or next to one. A tokenized fund (a fund whose shares are issued as tokens), a stablecoin reserve report or an audit trail can sit on a ledger that is tamper-evident and still be wrong, stale or impossible to check. This post explains what the chain does guarantee, where the guarantee stops, and how checks and cryptographic proof each cover part of the rest.
What a blockchain guarantees about data
The NIST glossary (from NIST SP 800-57 Part 1 Rev. 5) defines data integrity as the property that data has not been altered in an unauthorized way since it was created, transmitted or stored. A blockchain delivers that property for its own ledger, and it does so in three ways.
First, order. Every transaction sits in a block, and every block points to the one before it, so the history has one agreed sequence. Second, immutability of what is written. NIST's Blockchain Technology Overview (NIST IR 8202, 2018) describes blockchains as tamper evident and tamper resistant ledgers, where under normal operation no transaction can be changed once published. Third, public verification. Anyone running a node can recompute the chain and confirm that each block follows the rules.
Together these make on-chain history hard to rewrite in secret. For data that lives entirely on the chain, such as token balances and contract state, that is a strong integrity guarantee.
What a blockchain does not guarantee
The guarantee covers the ledger, not the world outside it. Two gaps stay open.
The first is correct input. A chain records whatever it is given. ethereum.org notes that smart contracts cannot, by default, access information stored outside the blockchain, so they depend on oracles, services that bring outside data on-chain. The data from an oracle must be correct for the contract to run correctly. A wrong price or a wrong reserve figure, once written, is preserved just as faithfully as a right one. This is the
oracle problem, and it carries legal and financial risk as well as technical risk.
The second is off-chain data. Most institutional data never goes on a chain at all: holdings, client records, valuations, transaction logs. It is too large, too costly to store on-chain, or too private to publish. The chain cannot say anything about data it never saw.
How to ensure data integrity: checks vs cryptographic proof
There are several ways to ensure data integrity, and each one answers a different question. The useful comparison is what each method shows and who still has to be trusted.
| Method | What it shows | Who has to be trusted |
|---|
| Access control and logs | Who was allowed to change data, and who did | The operator who runs the system and keeps the logs |
| Checksums and hashes | A file is the same as when it was hashed | Whoever chose what to hash and when |
| Audits | A qualified party checked the data at a point in time | The auditor, for that period |
| Merkle proofs | One item belongs to a set that was fixed earlier, using only one summary hash (the root) | The party that built the tree with the right data |
| Zero-Knowledge Proofs | A computation over the data ran as stated, without showing the data | The math of the proof system and the program being proven, plus a one-time setup for some systems such as Groth16 |
These methods work together. Access control and audits are the base of any regulated process, and a proof adds evidence next to them. It does not replace an audit; it gives counterparties a way to check specific facts between audits.
A Merkle proof is the bridge between the two worlds. A Merkle tree hashes items in pairs, then hashes those results in pairs, until one hash is left: the root. ethereum.org's tutorial "Merkle proofs for offline data integrity" puts it simply: only the root hash needs to be stored on-chain, and to prove a value you provide the hashes needed to rebuild that root. The same tutorial adds a limit worth keeping in mind: Merkle proofs preserve integrity, not availability.
Integrity for data that stays private
A hash on a chain proves that a file did not change. It does not prove any statement about what the file says. If a fund posts the hash of its holdings report, a reader learns that the report they are later shown is the same one. They do not learn whether its totals add up, whether the assets meet a rule, or whether a figure matches the source system.
A Zero-Knowledge Proof closes that gap. It lets a party prove a claim about private data, such as "the total of these balances equals the reported figure", without showing the balances. The verifier checks the proof, not the data. ethereum.org gives the general form: a way of proving that a statement is valid without revealing the statement itself.
This is the step most integrity setups miss. Data can be private and still be checkable, as long as the claim about it comes with a proof.
How zkDatabase does it
zkDatabase is a verifiable database powered by Zero-Knowledge Proofs, built to ensure both data integrity and privacy. It stores data as documents in collections, and each collection keeps its documents in a Merkle tree. Every update comes with a proof that the change was applied correctly to the last recorded root.
The proofs use Groth16, a proof system that runs in production today; Plonky3, Halo2, Nova and Pickles are planned. Groth16 proofs are small and cheap to check, so a smart contract on any EVM chain can verify them. The data itself stays off-chain. What goes on-chain is the root and the proof, so a counterparty, an auditor or a contract can confirm that a query result matches the recorded root without seeing the documents.
A proof shows that the data was stored and processed as claimed. It does not make a real-world input true: if the source figure was wrong, the proof shows that the wrong figure was handled correctly. That is why proofs sit next to audits and oracle checks, not in place of them. The
docs introduction and the page on
the Merkle tree show the structure in detail. For the wider category, Verifiable Data Infrastructure, see our guide to
verifiable data.
Where it matters
Three cases show the pattern, each with the data kept private and the claim made checkable.
- Stablecoin reserves. An issuer proves that reserves cover the tokens in circulation without publishing its bank accounts. See stablecoin reserves.
- Tokenized fund NAV. A fund proves that its reported net asset value (NAV, the value of its holdings per share) follows from its holdings without showing each position. See tokenized fund data integrity.
- AI agent audit trails. A firm proves which data an agent used for each action, and that the record was not edited after the fact. See AI agent audit trail.
FAQ
Is data on a blockchain always correct?
No. A blockchain keeps data from being changed after it is written, but it does not check whether the data was right when it was written. A wrong input is recorded and preserved like a correct one.
What is the difference between data integrity and data availability?
Data integrity means data has not been changed without authorization. Data availability, in ethereum.org's terms, is the confidence that the data needed to verify a block is really available. A system can have one without the other: a Merkle root on-chain keeps the data checkable for integrity, but if the data itself is lost, the root cannot bring it back.
Does putting a hash on-chain make data trustworthy?
It makes the data tamper-evident from that point on: anyone can tell if the file changes later. It does not show that the file was correct when it was hashed, and it does not let anyone check a claim about its contents without seeing them.
View Docs: see how zkDatabase proves every update to documents in collections.