Sharding
JAM allows rollups to change their execution shard boundaries dynamically on every block. This gives unprecedented freedom to developers who can now atomically compose across shards. It is achieved by splitting execution into two phases: Accumulation and Refinement.