HistoryManager is a wrapper around HistoryDB that provides easy access to specific historical data. HistoryManager handles things like generating history proofs, creating inclusion proofs, and inserting historical state updates.

We’ve separated HistoryManager from HistoryDB to avoid coupling the underlying data storage with more complex queries.




async function getHistoryProof(
  start: number,
  end: number,
  startBlock: number,
  endBlock: number,
  plasmaContract: string
): Promise<HistoryProof>

Generates a proof for the history of a given range of state objects. Only returns the history for a specified block range so that a user with a known state doesn’t need to receive a significant amount of duplicate information.

  1. start - number: Start of the range of state objects to query.
  2. end - number: End of the range of state objects to query.
  3. startBlock - number: Block number to start querying history from.
  4. endBlock - number: Block number to query history to.
  5. plasmaContract - string: Address of the specific plasma contract to query.

HistoryProof: A HistoryProof composed of proof elements that, when applied sequentially, build a valid history for the given range.


function getInclusionProof(
  stateUpdate: StateUpdate
): Promise<InclusionProof>

Generates an inclusion proof for a given state update. Creates a proof for both the upper-level address tree and the lower-level state tree. Will throw an error if the client does not have enough information to generate the proof.

  1. stateUpdate - StateUpdate: The StateUpdate object to generate an inclusion proof for.

InclusionProof: An InclusionProof that contains Merkle Interval Tree inclusion proofs for both the address tree and the state tree.