The Reliquary is the heart of Relic Protocol. At the most basic level, the Reliquary is a place for Relics to be stored. All stored information that is proven by Relic Protocol is inside the Reliquary. Access to much of Relic Protocol is done by communicating with the Reliquary which enforces several rules to ensure the sanctity of the information.

An example Reliquary

The Reliquary itself is a smart contract deployed and maintained by Relic Protocol. The Reliquary maintains records and enforces invariants that keep Relic Protocol working smoothly and securely.

Primarily it:

  • provides a unified interface for querying and setting fact data
  • tracks which prover contracts are allowed to add facts to the Reliquary
  • enforces a delay period and other invariants for new prover contracts
  • handles fee collection logic when appropriate

The Reliquary is not upgrade-able for security and trust reasons--being able to “update” the Reliquary with some safety features removed would remove the trustless property of Relic Protocol. Instead, the Reliquary permits new provers to be introduced and old ones revoked in order to improve functionality and features.

By maintaining a single contract, the Reliquary also makes dApp development much more simple. The only address one needs to save in their on-chain application is that of the Reliquary. From there, facts can be retrieved directly, or less expensive ephemeral proofs can be performed by using the Reliquary to authenticate the proving entity.