Tezos_raw_protocol_015_PtLimaPt.Sc_rollupsHere is the list of PVMs available in this protocol.
module PVM : sig ... endmodule Kind : sig ... endA smart contract rollup has a kind, which assigns meaning to rollup operations.
module type PVM_with_proof = sig ... endA 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 = | Unencodable of (module PVM_with_proof)| Arith_pvm_with_proof of (module PVM_with_proof
with type proof = Sc_rollup_arith.Protocol_implementation.proof)| Wasm_2_0_0_pvm_with_proof of (module PVM_with_proof
with type proof = Sc_rollup_wasm.V2_0_0.Protocol_implementation.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 wrapped_proof_encoding :
wrapped_proof Tezos_protocol_environment_015_PtLimaPt.Data_encoding.tval wrapped_proof_kind_exn : wrapped_proof -> Kind.twrapped_proof_kind_exn p returns the kind of the PVM capable of interpreting p. Raises Invalid_argument iff p is an Unencodable proof (which cannot happen if p is constructed by wrapped_proof_encoding).
val wrap_proof : (module PVM_with_proof) -> wrapped_proof optionWrap 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.