Proving

The prover subsystem of the Creditcoin Oracle uses attestations and source chain blocks to prove that parts of a particular source chain transaction are included in a given source chain.

The Creditcoin oracle provisions source chain data to the Creditcoin chain via a decentralized network of provers. Each prover operator registers their own prover smart contract on Creditcoin and has their own offchain prover worker. To initiate proving, a query is submitted to one of the available provers via a prover smart contract call. Then the query is stored in the prover contract and awaits processing. The prover offchain worker polls the prover contract for new queries and begins processing queries in the order in which they are received.

To process a query, the prover needs two additional sources of information: 1. Attestations - The prover requests attestations stored on-chain in the Creditcoin attestation pallet. These are necessary to generate a continuity proof, which verifies that the queried block is in fact part of the finalized source chain. 2. Source chain blocks - The prover requests source chain blocks from an RPC node connected to the source chain. The prover doesn’t need to trust these blocks, because the prover can verify that they are genuine using attestations and a process called continuity prooving. The source chain block containing our query transaction is used to construct a merkle proof verifying that the claimed transaction actually took place.

The prover then generates a STARK proof which summarizes both the aforementioned continuity proof and merkle proof. The STARK proof is submitted to the prover contract, which requests that validators perform proof verification. This verification

Proving process illustrated. Follow horizontal arrows starting from the top right corner.

Last updated