Audit-defensible
ETH staking financials
Every staking yield verified against the chain. Reconciled to the wei. Audit-ready tax reports. From the chain data in, to the cited report out — the whole system, drawn out one diagram at a time.
How TrueStake works
The end-to-end pipeline, at a glance: TrueStake's own consensus + execution node and MEV relay data flow into the Reconciliation Engine, which resolves an expected-vs-actual comparison to a pass/fail gate; the same reconciled data then feeds both the Income Dashboard and the Tax Report.
- One pipeline, two outputs. Your dashboard and your tax report are generated from the exact same reconciled data — never two separate calculations that can quietly drift apart.
- We run our own Ethereum node. Every reward starts as data read directly from our own consensus and execution clients, not a shared or third-party API.
- Every reward is checked against what actually arrived on-chain. Not just estimated from a formula.
- The pipeline runs nightly, automatically. Nobody has to remember to update a spreadsheet.
Straight from the chain
TrueStake operates its own dedicated Ethereum node (Reth execution client + Lighthouse consensus client) and a purpose-built indexer, ChainFacts, that pre-computes every tracked validator's reward stream — instead of relying on a third-party block-explorer API as the primary data source the way most staking trackers do.
- We operate our own Ethereum node. A dedicated Reth execution client and Lighthouse consensus client that we run ourselves — not a shared endpoint, not a third-party API.
- A dedicated indexer pre-computes validator reward history. When you connect a validator, TrueStake doesn't have to fetch and recompute years of history live — it's already indexed and ready.
- Every chain read routes through one enforced code path. There's no ad-hoc request that can skip the evidence record — every call to the node goes through a single transport layer.
- Independent data providers stay a second opinion, never the primary source. Once our own node is live, a second, independently-operated source that agrees with ours is a trust signal, not a dependency.
What a reward actually is
Every epoch, a validator's performance is scored by the beacon chain across nine distinct reward and penalty components — not a single lump-sum "reward." TrueStake fetches and preserves every one of the nine, rather than reporting a single number the way a simple block-explorer summary would.
- Your reward isn't one number — it's nine. Every epoch, the beacon chain tracks nine separate reward and penalty components for your validator: three attestation votes, a possible timing penalty, sync-committee duty, three separate proposer bonuses, and an inactivity-leak penalty.
- We fetch every one of the nine directly from the beacon chain's own rewards API. Not an estimate, not a rough formula.
- The full breakdown is preserved, not just a total. Even where our storage groups components together for efficiency, the original, per-field API response stays on file as the citable record.
- Sync-committee rewards are captured at the moment they happen. Not reconstructed later — because the chain data needed to compute them after the fact gets pruned.
- Proposer income is tracked as separate lines. Not one blended "block reward" figure — the consensus-layer bonus, the priority fee, and any MEV payment are each their own number.
Reconciled to the wei
For every account, on every nightly run, TrueStake computes an expected reward total (derived from chain data) and compares it to an actual total (real settlement events observed on-chain), then gates the result against a ±100 wei tolerance.
- ±100 wei, not "close enough." The default tolerance is 100 wei — a rounding budget for gwei↔wei conversion, not a shrug. Auditors care about the wei.
- The check runs per account, every night. Not once a year when you remember to look.
- A mismatch doesn't get quietly averaged away. Every account either passes cleanly or is flagged for review; nothing gets smoothed over.
- The tolerance can be adjusted per account, but it's never skipped. There's no path through the pipeline that bypasses the check.
Every number has a receipt
Each dashboard figure and each tax-report row cites the actual raw upstream API response it was derived from, and carries a per-line audit grade describing how strong that evidence is. The section closes with a generic, explicitly coming-soon tease of a future downloadable, signed export of this same evidence for handing to a third-party auditor or CPA.
- Every number cites its source. Behind each dashboard figure and each tax-report row is the actual raw response TrueStake received from the chain — not just a computed number with no paper trail.
- We keep the original response, not just our interpretation of it. If a number ever needs re-checking, the underlying evidence is still on file.
- Every account carries a grade for how its numbers were derived. Chain Derived (verified against your own validator's on-chain settlement), Oracle Derived (verified against a liquid-staking protocol's own published accounting), or Best-Effort — so you always know how strong the evidence behind a number is.
- A downloadable, signed evidence kit for your auditor or CPA is coming. We're building a packaged export of this same evidence chain — cited raw payloads and a signed integrity record — for handing directly to whoever needs to independently check your numbers. Not yet available.
The edge cases spreadsheets miss
The branching decision pipeline that runs on every block proposal and every withdrawal event before a receipts row (or a documented non-receipt outcome) is written: fee-recipient classification, the credential-type router that keeps EIP-7002 withdrawal requests from double-counting, and the consensus-penalty scanner that records missed attestations and slashing as evidence without touching the reconciled income total.
- Every MEV payment is checked against the actual on-chain transaction that moved the funds. Not just self-reported by the block builder — and the check method is recorded on the receipt itself.
- When a proposal pays a known smoothing pool, TrueStake does not invent a per-validator number. The pool's aggregate payment is deliberately left unbooked until it reaches your wallet as its own event.
- A withdrawal request and its eventual on-chain settlement are never counted twice. Only the settlement that actually moves funds is booked as income.
- Missed attestations and slashing penalties get their own permanent record, kept separate from your reconciled income total. Visible and cited, never silently netted away.
- One validator's edge case never stalls the rest of your account. Every check runs in isolation, and a failure quarantines just that validator.
Facts first, tax computed at report time
An immutable on-chain receipts fact record flows into JurisdictionAdapter.classify() and JurisdictionAdapter.valueAtReceipt(), both computed fresh at report/export time — never stored back onto the fact record.
- Your tax treatment is computed fresh from the same on-chain fact every time you generate a report. Never pre-baked into the record itself.
- If the tax rule for a receipt type changes, TrueStake recomputes from the original fact. It does not need to go back and rewrite history.
- A missing price never means a silently wrong number. A valuation gap shows up as a flagged, citable row instead of a guess.
- Every recognized income line traces back to one immutable on-chain receipt. And the jurisdiction rule that classified it.
- Today's tax computation covers US jurisdiction. The same fact-first design is what lets a second jurisdiction plug in without touching the underlying record.
The machine that never sleeps
The single global 09:00 UTC orchestration pipeline that refreshes every account's data once per day: a criticality-classified step chain, an external dead-man's-switch heartbeat that pages on silence, and a boot-time catch-up replay that self-heals a missed night.
- Every account's data refreshes on the same nightly cycle. Reconciled once a day, every day, whether or not anything else in the pipeline had a problem.
- A failure in a non-critical step, like the Liquid-staking oracle check, never blocks your account's reconciliation. Or that night's backup.
- The nightly backup runs even on a night something upstream failed. It is the one step designed to always fire.
- If the pipeline goes silent instead of failing loudly, an external watchdog notices the missing signal and pages immediately. Silence is treated as a failure, not a pass.
- Miss a night entirely. And the pipeline catches itself back up automatically, in order, capped at two weeks of missed days.
Private by architecture
The data-protection chain that runs on every PII field (validator public keys, withdrawal addresses, fee recipients): encryption at rest via deterministic AEAD, a keyed lookup token that supports equality search without decrypting, database-enforced row-level tenant isolation, and an audit-logged decrypt-read seam where the audit write is a hard precondition for delivering decrypted data.
- Validator pubkeys, withdrawal addresses, and fee recipients are encrypted before they ever reach the database. Unreadable without the decryption path itself, not just protected by permissions.
- The lookup token used to match a stored address is keyed, not a plain hash. A stolen copy of that column can't be reverse-matched against the public address space offline.
- Every table enforces that a customer can only ever read their own rows. And it's enforced by the database itself, not just by application code.
- Every time TrueStake decrypts your data to show or export it, that access is logged first. If the log write fails, the decrypted value is never delivered.
- No KYC, no exchange API keys — ever. TrueStake never asks for government ID or your exchange credentials, by permanent design, not by omission.
Built to expand
The three independent, orthogonally-composing adapter axes that let TrueStake add a chain, a staking system, or a jurisdiction as one new adapter file, without core-engine changes.
- Today, TrueStake runs exactly one composition end-to-end: Ethereum, Solo or SaaS-managed staking, US tax jurisdiction. Every other cell on this grid is empty by design, not by accident.
- Adding a new chain, staking system, or jurisdiction is architected to be one new adapter file. The reconciliation engine and tax engine don't need to change to read it.
- We've already named our leading candidates for the next blockchain and the next staking system. Naming a candidate isn't the same as building it, and neither is live yet.
- Have a chain or jurisdiction you want us to build next? Tell us — every candidate on our list started as a named target before it started as code. contact us →
See it running
on your validators.
Add a withdrawal address and watch your own staking history reconcile to the wei — no KYC, no exchange API keys.
get_started →