diff --git a/docs/learn/learn-jam-chain.md b/docs/learn/learn-jam-chain.md index 65f1a2f652ab..3f84461127c3 100644 --- a/docs/learn/learn-jam-chain.md +++ b/docs/learn/learn-jam-chain.md @@ -84,7 +84,7 @@ package containing many work items is refined into a **work report**, which is t results of several items. A work package can be assigned that uses one core for a specific time slot (typically a period of 6 seconds). -## JAM is Transactionless +### JAM is Transactionless JAM distinguishes itself from smart contract chains by operating transactionlessly. There are no transactions within JAM; all actions are permissionless and initially undergo a Refine stage. During @@ -118,34 +118,7 @@ required for block production; instead, the system operates two epochs in advanc part of the SAFROL algorithm, a refined version of the original [SASSAFRAS](./learn-sassafras.md) algorithm. -## JAM Chain's Generalization - -Polkadot, as outlined in the original Polkadot white paper, is primarily tailored to a specific -service profile: delivering parachains. In pursuit of this service, Polkadot has developed two -essential subcomponents: - -- the distributed data availability system -- the auditing and guarantees system for computation (i.e. an optimistic roll-up system with robust - security guarantees) - -JAM represents a reduction in the level of opinionation compared to Polkadot, offering a higher -level of abstraction and generalization. This facilitates easier utilization of underlying -components according to individual preferences. - -JAM operates in a permissionless manner, akin to smart contract chains, allowing individuals to -upload and expect the execution of code. Additionally, it hosts data, enables preimage lookup, and -manages state, resembling a key-value pair system. The genesis block of JAM includes a service to -facilitate the creation of new services since JAM lacks a mechanism for accepting transactions -directly. - -Services within JAM have no predefined limits on the amount of code, data, or state they can -accommodate. Their capabilities are determined by crypto-economic factors; the more DOT tokens -deposited, the greater capacity for data and state. For instance, **the parachains service** -consolidates all Polkadot 1.1 functionality within a single service on JAM, with the potential for -additional services to leverage Polkadot's distributed availability system, and auditing and -guarantees system for computation. - -## Refine Function +### Refine Function In the Refine processing stage within JAM, up to 5 MB of data can be accepted during each time slot, which lasts 6 seconds. However, Refine yields a maximum of 4 kB of data, resulting in significant @@ -172,7 +145,7 @@ code on the JAM chain and referencing its hash in the work package. Refine is the primary processing workhorse, handling tasks with largely stateless operations. -## Accumulate Function +### Accumulate Function The accumulate function is responsible for integrating the output generated by the Refine function into the chain state. Accumulate can accept multiple outputs from Refine, all originating from the @@ -192,7 +165,7 @@ Moreover, both Refine and Accumulate can invoke child instances of the PVM. This sub-instances, or virtual machines, where code and data can be deployed, memory and stack configurations can be customized, and computations can be executed within a flexible framework. -## On-transfer Function +### On-transfer Function The onTransfer function within the JAM system is also stateful, enabling it to modify the service's state. It has the capability to inspect the state of other services and make changes to its own @@ -212,6 +185,33 @@ enhancements, such as allocating more than the current 10 milliseconds of gas in secondary core could be utilized to execute certain accumulations, providing them with significantly more gas to utilize. +## JAM Chain's Generalization + +Polkadot, as outlined in the original Polkadot white paper, is primarily tailored to a specific +service profile: delivering parachains. In pursuit of this service, Polkadot has developed two +essential subcomponents: + +- the distributed data availability system +- the auditing and guarantees system for computation (i.e. an optimistic roll-up system with robust + security guarantees) + +JAM represents a reduction in the level of opinionation compared to Polkadot, offering a higher +level of abstraction and generalization. This facilitates easier utilization of underlying +components according to individual preferences. + +JAM operates in a permissionless manner, akin to smart contract chains, allowing individuals to +upload and expect the execution of code. Additionally, it hosts data, enables preimage lookup, and +manages state, resembling a key-value pair system. The genesis block of JAM includes a service to +facilitate the creation of new services since JAM lacks a mechanism for accepting transactions +directly. + +Services within JAM have no predefined limits on the amount of code, data, or state they can +accommodate. Their capabilities are determined by crypto-economic factors; the more DOT tokens +deposited, the greater capacity for data and state. For instance, **the parachains service** +consolidates all Polkadot 1.1 functionality within a single service on JAM, with the potential for +additional services to leverage Polkadot's distributed availability system, and auditing and +guarantees system for computation. + ## Polkadot Virtual Machine (PVM) The PVM design is rooted in the RISC-V ISA (Instruction Set Architecture), known for its simplicity