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 off-chain 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 off-chain 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 proving. 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 generates a cryptographic proof that summarizes both the continuity proof and Merkle proof. This proof is submitted to the prover contract, which verifies it on-chain via a verifier precompile on Creditcoin. Once verified, the results are stored in the prover contract, where user and builder smart contracts can access them as verified source chain data.
This process is illustrated in the following diagram:

Last updated