Skip to content

Cardano History

Cardano History is an optional app-chain plugin that assembles reusable epoch observers and state-machine components into one installable product. It answers questions such as “what was key-deposit in epoch 512?” with a proof, not with an API response you have to trust.

It does not copy Cardano-specific logic into the Yano core API, and it does not define another proof format.

PresetProtocol parametersEpoch stakeProposals and DRep distribution
params-only-v1 (default)yesnono
params-stake-v1yesyesno
params-governance-v1yesnoyes
full-v1yesyesyes

Stake and governance traversal is never enabled implicitly — those datasets are large, and enabling them changes what the chain commits to.

Stake and governance presets require authenticated-snapshots-v1. They do not fall back to storing the full dataset in the primary map: each complete stake epoch and DRep distribution epoch gets its own immutable descriptor and secondary authenticated root. Protocol parameters stay small primary-MPF facts and need no redundant secondary snapshot.

The read API contributes bounded, read-only routes below:

/api/v1/plugins/com.bloxbean.cardano.yano.appchain.cardano-history/

Every request requires chain=<chain-id>. Routes cover status, epochs, protocol parameters, stake, DRep distribution, and proposal history.

The design detail worth knowing: protocol-parameter responses expose a sorted fields catalog, and a single named field is addressable.

RouteReturns
params/{epoch}/documentThe complete parameter document.
params/{epoch}/fields/{field-id}One named canonical leaf.
epochs/{epoch}/parameters/fields/{field-id}The typed canonical leaf plus root-fixed proof coordinates.

That makes a proof like key-deposit == 2_000_000 lovelace compact, and — more importantly — verifiable without parsing a hard-fork-specific positional array. A verifier written today keeps working across eras.

A fresh Cardano History generation never synthesizes a fact from mutable current-epoch state. On startup, every member deterministically reconciles the completed boundaries still retained by its local L1 account-state store, so retained facts can seed prior epochs with no external indexer.

If no completed boundary is retained, the first fact arrives after the next stable L1 epoch transition. Until a fact finalizes:

  • generic app-chain status, capability discovery, and anchor endpoints remain available;
  • product routes return HTTP 404; and
  • the CLI reports unavailable data with exit code 3.

This is deliberate. “Not yet observed” is reported as absence of data, never as a fabricated value.

At the E-1 → E boundary, protocol parameters and DRep distribution are labelled for E.

ArtifactRepo pathRole
yano-x-cardano-history-runtimeproducts/cardano-history/runtimeThe plugin: observers, components, and read routes.
yano-x-cardano-history-clientproducts/cardano-history/clientTyped client with proof verification.
yano-x-cardano-history-cliproducts/cardano-history/cliCommand-line queries and proof export.
yano-x-cardano-history-onchainproducts/cardano-history/onchainOn-chain artifacts for validator-side verification.
  • Governance tooling that must show what the rules were at the time an action was taken, not what they are now.
  • Reward and stake analysis that has to be reproducible and auditable years later.
  • Smart contracts and validators that need a compact, era-stable proof of a historical parameter.
  • Anyone currently trusting a chain-indexer API for historical values and wanting evidence instead.