Introduction PODs
Introduction PODs are a kind of POD used to introduce any cryptographic data structure into the POD system. This allows the POD system to reason about cryptographic data and cryptographic primitives that are not part of the POD system itself.
An example of an IntroductionPod are the Ed25519Pod
and the EcdsaPod
, both
of them allowing to incorporate their respective kind of signature schemes that
are not supported in the core of the POD system.
This allows to the POD system to incorporate data validated by those
Introduction PODs, and recursively use it in future proofs combining them with
any logical reasoning together with other PODs.
For example, we could have an scenario where we use 3 different Introduction
PODs (Ed25519Pod, RSAPod, EcdsaPod), to prove that a user controls an Ethereum
wallet AND a GitHub account. To do so, the user would produce a new MainPod
which proves that the user has signed a certain message with the given ECDSA key
(Ethereum wallet) AND with either the given Ed25519 key OR the RSA key (from
a GitHub account).

Interface
The interface of a IntroductionPod
is just the one of the
RecursivePod
trait, together with matching the expected vds_root
of the used VDSet
in the
MainPod
, and using the same circuit configuration for the proof verification.
This means that as long as we fit into the RecursivePod
interface, the
IntroductionPod
will fit into the recursive verification chain of the
MainPods
.
Different configurations
There are some cases, where the operations needed for the IntroductionPod
require a different circuit configuration than the standard recursive circuit
configuration that is used for the MainPods
.
In those cases, we do a previous recursive step, where we verify the logic of
the intended IntroductionPod
, and then the proof of this circuit is the one
verified in the real IntroductionPod
.
This is done in order to be able to converge the different circuit
configuration shape (and thus different common_data
) into a new proof that can
be verified with the standard configuration (used for the MainPods).

Notice that this is not a requirement for implementing a new IntroductionPod
,
and if the IntroductionPod logic can be directly verified with the standard
recursion configuration, we don't need this previous recursive step.
As examples of the two-recursive steps approach, we have the EcdsaPod
and the
Ed25519Pod
. Both of them, require different circuit configurations that would
not match the one used for the standard recursion with MainPods
. Therefore we
first generate a circuit proof of correct signature verification, and then this
proof is the one actually verified in the EcdsaPod
/Ed25519Pod
respectively,
not the original signature itself.

Examples of
IntroductionPods
can be found at the git repository github.com/0xPARC/introduction-pods.