Group work digests by service ID.
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)
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.