JAR: Join-Accumulate Refine

1.1. Variant Configuration🔗

Each variant is a JarConfig instance that selects protocol parameters, memory model, gas model, economic types, and codec functions.

🔗type class
Jar.JarConfig : Type 1
Jar.JarConfig : Type 1

JarConfig: provides protocol configuration and validity proofs. Used by struct types and Fin-based index aliases. Extended by JarVariant (in Jar/Variant.lean) to add JAVM function fields.

Instance Constructor

Jar.JarConfig.mk

Methods

name : String

Variant name, e.g. "gp072_tiny", "gp072_full".

config : Params
valid : JarConfig.config.Valid
memoryModel : MemoryModel

PVM memory layout for program initialization.

gasModel : GasModel

PVM gas metering strategy.

capabilityModel : CapabilityModel

PVM capability model: .none = flat memory, .v2 = capability-based.

useCompactDeblob : Bool

PVM blob deblob encoding: true = JAM compact natural, false = u32 LE (jar1).

variableValidators : Bool

Whether validator set size is variable (GP#514). When true, designate hostcall accepts a length argument and active core count scales with validator count. Default false for gp072 variants.

EconType : Type

Economic model type for service accounts (BalanceEcon or QuotaEcon).

TransferType : Type

Transfer payload type (BalanceTransfer or QuotaTransfer).

econBEq : BEq JarConfig.EconType

BEq instance for economic model (required for state comparison).

econInhabited : Inhabited JarConfig.EconType

Inhabited instance for economic model (required for default construction).

xferBEq : BEq JarConfig.TransferType

BEq instance for transfer payload.

xferInhabited : Inhabited JarConfig.TransferType

Inhabited instance for transfer payload.

econRepr : Repr JarConfig.EconType

Repr instance for economic model (for debugging).

xferRepr : Repr JarConfig.TransferType

Repr instance for transfer payload (for debugging).

econModel : EconModel JarConfig.EconType JarConfig.TransferType

EconModel instance linking EconType and TransferType.

The JarVariant class extends JarConfig with overridable JAVM execution functions and codec implementations.

🔗type class
Jar.JarVariant : Type 1
Jar.JarVariant : Type 1

JarVariant: extends JarConfig with overridable PVM execution. The single entry point for defining a protocol variant.

Instance Constructor

Jar.JarVariant.mk

Extends

Methods

name : String
Inherited from
  1. JarConfig
config : Params
Inherited from
  1. JarConfig
valid : JarConfig.config.Valid
Inherited from
  1. JarConfig
memoryModel : MemoryModel
Inherited from
  1. JarConfig
gasModel : GasModel
Inherited from
  1. JarConfig
capabilityModel : CapabilityModel
Inherited from
  1. JarConfig
useCompactDeblob : Bool
Inherited from
  1. JarConfig
variableValidators : Bool
Inherited from
  1. JarConfig
EconType : Type
Inherited from
  1. JarConfig
TransferType : Type
Inherited from
  1. JarConfig
econBEq : BEq JarConfig.EconType
Inherited from
  1. JarConfig
econInhabited : Inhabited JarConfig.EconType
Inherited from
  1. JarConfig
xferBEq : BEq JarConfig.TransferType
Inherited from
  1. JarConfig
xferInhabited : Inhabited JarConfig.TransferType
Inherited from
  1. JarConfig
econRepr : Repr JarConfig.EconType
Inherited from
  1. JarConfig
xferRepr : Repr JarConfig.TransferType
Inherited from
  1. JarConfig
econModel : EconModel JarConfig.EconType JarConfig.TransferType
Inherited from
  1. JarConfig
pvmRun : JAVM.ProgramBlob  Nat  JAVM.Registers  JAVM.Memory  Int64  JAVM.InvocationResult

Ψ : Core PVM execution loop.

pvmRunWithHostCalls : (ctx : Type) 
  [Inhabited ctx] 
    JAVM.ProgramBlob 
      Nat  JAVM.Registers  JAVM.Memory  Int64  JAVM.HostCallHandler ctx  ctx  JAVM.InvocationResult × ctx

Ψ_H : PVM execution with host-call dispatch.

codecEncodeWorkReport : WorkReport  ByteArray

Codec: encode a work report (for signature verification).

codecEncodeUnsignedHeader : Header  ByteArray

Codec: encode an unsigned header (for hashing).

codecEncodeHeader : Header  ByteArray

Codec: encode a full header.

codecEncodeExtrinsic : Extrinsic  ByteArray

Codec: encode an extrinsic.

codecEncodeBlock : Jar.Block  ByteArray

Codec: encode a block.