Skip to main content

Accumulation (ζC\zeta_C)

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:

  1. State Integration: Apply work-report results to service accounts
  2. Transfer Processing: Execute deferred cross-service balance transfers
  3. Preimage Management: Make external data available to services
  4. 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 (Δ+\Delta^+)

Process work-reports sequentially, grouped by service, invoking PVM to update each service's state with work item results.

Single-Service Accumulation (Δ1\Delta_1)

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/