Module Tezos_raw_protocol_014_PtKathma.Sc_rollups

Here is the list of PVMs available in this protocol.

module PVM : sig ... end
module Kind : sig ... end

A smart contract rollup has a kind, which assigns meaning to rollup operations.

module type PVM_with_proof = sig ... end

A module signature we can use to form first-class modules that carry a specific proof a long with the PVM module interface.

type wrapped_proof =
  1. | Unencodable of (module PVM_with_proof)
  2. | Arith_pvm_with_proof of (module PVM_with_proof with type proof = Sc_rollup_arith.ProtocolImplementation.proof)
  3. | Wasm_2_0_0_pvm_with_proof of (module PVM_with_proof with type proof = Sc_rollup_wasm.V2_0_0.ProtocolImplementation.proof)

A wrapper for first-class modules (module PVM_with_proof). We need this in order to implement an encoding function. The Unencodable case is provided so that tests can provide their own PVM interfaces without having to include proof encodings here.

val wrapped_proof_module : wrapped_proof -> (module PVM_with_proof)

Unwrap a wrapped_proof into a first-class module.

val wrap_proof : (module PVM_with_proof) -> wrapped_proof option

Wrap a PVM module with proof into a wrapped_proof. This matches on the name in the module---if that is recognisable as a Kind, this function will encode and decode to coerce the proof to a proof in the protocol implementation of the PVM. If the name is not recognised this will fall back to using Unencodable, so the value can still be used in tests but won't work as part of a Sc_rollup_refute operation.