JAR: JAM Axiomatic Reference

10.4. Pipeline🔗

🔗def
Jar.Accumulation.groupByService [Jar.JamConfig] (reports : Array Jar.WorkReport) : Dict Jar.ServiceId (Array OperandTuple)
Jar.Accumulation.groupByService [Jar.JamConfig] (reports : Array Jar.WorkReport) : Dict Jar.ServiceId (Array OperandTuple)

Group work digests by service ID.

🔗def
Jar.Accumulation.groupTransfersByDest (transfers : Array Jar.DeferredTransfer) : Dict Jar.ServiceId (Array Jar.DeferredTransfer)
Jar.Accumulation.groupTransfersByDest (transfers : Array Jar.DeferredTransfer) : Dict Jar.ServiceId (Array Jar.DeferredTransfer)

Group deferred transfers by destination service.

🔗def
Jar.Accumulation.accpar [Jar.JamConfig] (ps : PartialState) (reports : Array Jar.WorkReport) (transfers : Array Jar.DeferredTransfer) (freeGasMap : Dict Jar.ServiceId Jar.Gas) (timeslot : Jar.Timeslot) (entropy : Hash) (configBlob : ByteArray) (opaqueData : Array (ByteArray × ByteArray) := #[]) : PartialState × Array Jar.DeferredTransfer × Array (Jar.ServiceId × Hash) × Dict Jar.ServiceId Jar.Gas × Array (Jar.ServiceId × String) × Array (ByteArray × ByteArray)
Jar.Accumulation.accpar [Jar.JamConfig] (ps : PartialState) (reports : Array Jar.WorkReport) (transfers : Array Jar.DeferredTransfer) (freeGasMap : Dict Jar.ServiceId Jar.Gas) (timeslot : Jar.Timeslot) (entropy : Hash) (configBlob : ByteArray) (opaqueData : Array (ByteArray × ByteArray) := #[]) : PartialState × Array Jar.DeferredTransfer × Array (Jar.ServiceId × Hash) × Dict Jar.ServiceId Jar.Gas × Array (Jar.ServiceId × String) × Array (ByteArray × ByteArray)

Accumulate all affected services in parallel. GP §12 eq:accpar. Services are accumulated sequentially, but host calls that read other services' state (info, read, lookup, query) use a snapshot of the INITIAL state to ensure parallel semantics: each service's computation is independent of accumulation order. Returns (updated partial state, new deferred transfers, yield outputs, gas used).

🔗def
Jar.Accumulation.accseq [Jar.JamConfig] (gasLimit : Jar.Gas) (reports : Array Jar.WorkReport) (initialTransfers : Array Jar.DeferredTransfer) (ps : PartialState) (freeGasMap : Dict Jar.ServiceId Jar.Gas) (timeslot : Jar.Timeslot) (entropy : Hash) (configBlob : ByteArray) (opaqueData : Array (ByteArray × ByteArray) := #[]) : Nat × PartialState × Array (Jar.ServiceId × Hash) × Dict Jar.ServiceId Jar.Gas × Dict Jar.ServiceId Nat × Array (Jar.ServiceId × String) × Array (ByteArray × ByteArray)
Jar.Accumulation.accseq [Jar.JamConfig] (gasLimit : Jar.Gas) (reports : Array Jar.WorkReport) (initialTransfers : Array Jar.DeferredTransfer) (ps : PartialState) (freeGasMap : Dict Jar.ServiceId Jar.Gas) (timeslot : Jar.Timeslot) (entropy : Hash) (configBlob : ByteArray) (opaqueData : Array (ByteArray × ByteArray) := #[]) : Nat × PartialState × Array (Jar.ServiceId × Hash) × Dict Jar.ServiceId Jar.Gas × Dict Jar.ServiceId Nat × Array (Jar.ServiceId × String) × Array (ByteArray × ByteArray)

Full sequential accumulation pipeline. GP §12 eq:accseq. Orchestrates multiple rounds of accpar, feeding deferred transfers from one round into the next.