Accumulation ()
The Accumulation transition integrates work-report outputs into service state, processes deferred transfers, and manages preimage lookups. It's the most complex state transition, involving PVM invocations to update service accounts.
Purpose
Accumulation serves several critical functions:
- State Integration: Apply work-report results to service accounts
- Transfer Processing: Execute deferred cross-service balance transfers
- Preimage Management: Make external data available to services
- Gas Accounting: Track and limit computation costs
Overview
Available Work-Reports
→ Filter & Queue
→ Sequential Accumulation (per service)
→ Deferred Transfers
→ Preimage Integration
→ Updated Service State
How It Works
Sequential Accumulation ()
Process work-reports sequentially, grouped by service, invoking PVM to update each service's state with work item results.
Single-Service Accumulation ()
For each service, aggregate work items and invoke PVM Accumulate function with service state, work results, and gas limits.
Deferred Transfer Processing
Apply cross-service transfers after accumulation via PVM on-transfer hooks.
Preimage Integration
Make external data from lookup extrinsic available to services that requested it.
References: Gray Paper Section 12 - Accumulation
Implementation: tessera/jam/state/transitions/accumulation/