From 1198a45673761d3ca68ca9b8be4e9ea3df04cd18 Mon Sep 17 00:00:00 2001 From: Filippo Date: Thu, 11 Apr 2024 19:48:58 +0200 Subject: [PATCH 01/16] added new page --- docs/learn/learn-jam-chain.md | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 docs/learn/learn-jam-chain.md diff --git a/docs/learn/learn-jam-chain.md b/docs/learn/learn-jam-chain.md new file mode 100644 index 000000000000..55a50e695a67 --- /dev/null +++ b/docs/learn/learn-jam-chain.md @@ -0,0 +1,8 @@ +--- +id: learn-jam-chain +title: Polkadot's JAM Chain +sidebar_label: JAM Chain +description: Polkadot's Join-Accumulate Machine. +keywords: [Polkadot, JAM, join-accumulate] +slug: ../learn-jam-chain +--- From 1d2c3f434f3ffca62309b121acc81a32185d3328 Mon Sep 17 00:00:00 2001 From: Filippo Date: Mon, 15 Apr 2024 13:50:45 +0400 Subject: [PATCH 02/16] added text --- docs/learn/learn-jam-chain.md | 425 ++++++++++++++++++++++++++++++++++ polkadot-wiki/sidebars.js | 1 + 2 files changed, 426 insertions(+) diff --git a/docs/learn/learn-jam-chain.md b/docs/learn/learn-jam-chain.md index 55a50e695a67..a5fcd46ba521 100644 --- a/docs/learn/learn-jam-chain.md +++ b/docs/learn/learn-jam-chain.md @@ -6,3 +6,428 @@ description: Polkadot's Join-Accumulate Machine. keywords: [Polkadot, JAM, join-accumulate] slug: ../learn-jam-chain --- + +JAM, short for Join-Accumulate Machine, represents a prospective design to succeed the relay chain. +Its name originates from CoreJAM, denoting Collect Refine Join Accumulate, which outlines the +computation model the machine embodies. However, within the actual chain, only the Join and +Accumulate functions are executed, while the Collect and Refine processes occur off-chain. + +Unlike the current iterative approach, JAM will be introduced as a comprehensive singular upgrade. +Several factors contribute to this decision: + +- A unified upgrade allows for precise restriction of post-upgrade actions, which is challenging + with an iterative approach. +- It mitigates the constant stream of minor upgrades and breaking changes that occur regularly over + weeks or months. + +While this shift entails a significant breaking change, efforts will be made to minimize its impact +to manageable levels. Consolidating multiple smaller breaking changes into a single transition is +deemed preferable, introducing a novel blockchain concept that integrates various existing ideas in +a unique manner. + +## A Rollup Chain + +JAM will be a domain-specific chain, a chain that handles one particular domain of problems. In this +case, roll-ups, what Ethereum people might call optimistic roll-ups. JAM's rollups are heavily +bounded in terms of their security. This is what Polkadot has been doing for the last five years, it +is already a highly domain-specific roll-up chain. It's just got a little bit more opinionation than +we want, and that is essentially what JAM fixes. + +The JAM chain's job is to essentially provide the necessary apparatus to ensure that this output +correctly reflects the input when it goes through whatever transformation it's meant to have gone +through. Again, this is fairly basic stuff for what roll-ups are. What the JAM chain does is it +accepts outputs of roll-ups, of bits of computation that have been done already. So these bits of +computation are done elsewhere, and then whatever data they yield is fed into the JAM chain. + +The JAM chain is there to integrate the outputs of these computations into some shared state. So it +provides this shared state model, for integrating outputs together. We can see how Polkadot fits +into this model. But interestingly, we can see how other chains like what Ethereum is doing also fit +into this model. + +## Smart Contract Similarity + +JAM exhibits several similarities with a smart contract chain: + +- Permissionless code execution occurs directly on the JAM chain itself. +- The state of the JAM chain is organized into distinct encapsulations. +- Alongside state, encapsulations encompass code and balance. + +These encapsulations of state are termed **services**. Thus, the JAM state is partitioned into +services. The creation of a new service is permissionless, akin to deploying a smart contract on a +smart contract chain. Consequently, adding a new service to the JAM chain does not necessitate +approval from any authority or adherence to governance mechanisms, unlike Substrate-based chains +that mandate governance approval for adding new pallets. Services encompass code, balance, and +certain state components, resembling the structure commonly observed on a smart contract chain. + +## Service Entry Points + +JAM services' code itself is split into three different entry points: + +- **Refine** is the function that does the mostly stateless computation. This is the bit that + defines the transformation for the rollup for a specific service. +- **Accumulate** is the function that takes the output of that and folds it into the overall state + of the service +- **OnTransfer** handles information coming from other services. + +**Work packages** are the input to a service. Work packages can have many **work items** in them. +Every work item is associated with a service, and it reflects the actual input to the service. For +the parachains service, this is where you would put in the transactions, all that stuff to do with +blockchain inputs. + +The JAM security apparatus consists a two-stage processing where the Refine function accepts a work +item as an input and yields a work result as an output, which gets fed into the Accumulate function. +First Refine, then Accumulate. Work items are refined into work results, and therefore a work +package, which contains many work items, is refined into a **work report**, which is the +corresponding results of several items. A work package can be assigned that uses one core for one +time slot, one six-second period of time. + +## JAM is Transactionless + +How does JAM differ from a smart contract chain? Well, it's **transactionless**. There are no +transactions in JAM: Everything that is all permissionless input first goes through a Refine stage. +So the service pre-refines all of the input that is transformed into these work reports, these sets +of work results. And then those work results make their way actually onto the chain. + +So if there are no transactions, how does anything make its way from the external world in? Well, +there is still extrinsic information of a specific format. There are five kinds of extrinsic in JAM: + +- Guarantees +- Assurances +- Judgments +- Preimages +- Tickets + +The first three are part of the security apparatus of the JAM chain. Guarantees and assurances are +essentially the validators getting together and putting forward their attestations that a work +result is the correct result of its work item when transformed through the service's refine +function. Judgments are used when a work result is not reflective of the work items that is supposed +to be, and it has already made its way through the system and has been since accumulated into its +service's state. At this point, we have to roll things back, and we have to record the fact that +this was invalid. Judgments come within one hour after the work report has been submitted to the +chain. Basically, you've got this one hour period where things could not be reverted, because +finality will pause until the judgment has been allowed to actually happen. In general, though, this +is like a massively upper bound, and most of the times any possible judgment would have been done +within maybe three or four after the work package, and finality would only be paused for that long. + +Pre-images are a piece of functionality that the JAM chain provides for the refine function. The +refine function is essentially stateless, but there is one particular thing that it can do that is +stateful: It is allowed to look up the preimage of a hash. This is the one thing that is +opinionated. A block author of the JAM chain may choose to bring in one pre-image rather than +another pre-image. There's nothing that holds them to any particular pre-image. Whereas guarantees, +assurances, judgments, and tickets, are particular pieces of information, which the author either +has or doesn't have. And if they have it, regardless of whether they have it or not, their only +option is to either provide it or not provide it. They can't provide something else in its place. + +Tickets are essentially anonymous entries into the block production mechanism. They do not +immediately need to be provided to produce a block, but rather we run two epochs in front. This is +part of an algorithm called SAFROL, which is a small refinement of an original algorithm called +SASSAFRAS. + +## JAM Chain's Generalization + +Polkadot is quite heavily designed around one particular service profile, the delivery of +parachains. This is what the original Polkadot paper had in it. In delivering that service, Polkadot +created a number of useful subcomponents: + +- the distributed data availability system +- the auditing and guarantees system for computation (i.e. an optimistic roll-up system with very + good and proven security guarantees) + +JAM could be considered essentially a reduction in the level of opinionation, basically a greater +level of abstraction and generalization so that it's easier to use these underlying components in a +way that you would like to use them. + +JAM is permissionless as it can hosts code very similar to a smart contract chain. People can upload +code and can expect JAM to execute that code. It also hosts data, this preimage lookup, and state, +essentially very similar to a key value pair. Anyone can introduce new services. The first service +that would be in the JAM Genesis block would be a service that enables people to add new services. +Since JAM itself doesn't have any way of accepting transactions, there's no immediate way for anyone +to create a service on JAM. There has to be a service that starts in JAM to allow people to go +through it and create their own services. + +Services do not have any particular limits on how much code, data, or state they can host. It's all +crypto-economic based, so essentially the more DOT your services have deposited with them, the more +data and the more state they can have in them. One example service would be the parachains service. +Essentially, all of the Polkadot 1.1 functionality would be contained within a single service on +JAM. Other services can be added that provide other functionality, but still use Polkadot's +distributed availability system and the auditing and guarantees system for computation. + +## Refine Function + +Refine accepts up to 5 MB of data every time slot, and a time slot is six seconds. + +Refine yields up to 4 kB of data. So you've got this big sort of compaction factor going on because +of the nature of the distributed availability system. It's distributed and it is not possible to +have all of this data making its way into the accumulate function onto the on-chain logic. So to +give an example, for a parachain, the 5 MB of data would be the PoV while the 4 kB of data would be +the candidate receipt. + +The refine function can execute for up to six seconds of PVM gas, that is it can execute for the +full relay chain block period. At the moment, PVFs can execute for two seconds. This can be because +PVM has basically secure metering and few other optimizations so we can process three times as much +stuff. + +The refine function also gets some contextual information on what it is, on the world around it that +the work that it's doing is being produced in. In particular, it gets information on what other +things are being refined at the same time. Why is this important? Well, it means that you can +construct work packages that have multiple work items of multiple services in them, which are +codependent. This then enables certain things like, for example, accords, and the ability to have +one service, like some sort of EVM service, interact synchronously with a parachain. + +Inside of refine, you can also make preimage lookups. If you have a hash and you believe that the +preimage is available for that hash, on the JAM chain, then you can request the preimage by giving +it the hash. + +What this allows us to do is, for example, lookup code. We might have, for example, a parachain +code, where you don't want to supply a parachain code, which could be upwards of a megabyte. You +want to supply that inside of the work package. That would be a waste of the five megs, right? Every +time you want to run the parachain, supply the same one megabyte. Instead, you store the one +megabyte of code on the JAM chain, and you just have its hash in the work package. I would like the +preimage to this hash. This, for what it's worth, is what we already do on Polkadot One, but we do +it in a slightly suboptimal way, and very much not general. Now, that's refine. That's the first +stage. That's the bit that does all the work. That's the workhorse, but it's largely stateless. + +## Accumulate Function + +The accumulate function integrates the output of refine actually into the chain state. Accumulate +accepts multiple outputs from refine, all of the same service, right? Don't forget, refine and +accumulate are both entry points from a code blob that is specific to a service. It accepts multiple +refine outputs and it can execute for a much smaller period of time per output around, at most, 10 +milliseconds. And this depends whether the work package has many different work items in, or if it's +just one. If it's just one, it gets the full 10 milliseconds per work output. If it's many, then +that's shared between each of the outputs of the work package. + +A big difference to refine, it's stateful. This means it can access the state of the JAM chain. It +can read the storage from any service, and it can write to its own key value store. It can also +transfer funds and send a little memo when it does transfer funds. And it can also create new +services, obviously, upgrade its code, request the availability of a preimage, and a few other bits +that I'm not talking about. + +Incidentally, and I actually forgot to mention this in the refine model, both of these can invoke +child instances of the PVM. So you can make a new instance of the PVM that's sort of a sub-instance, +a virtual machine, and you can put some code in there, and put some data in there, set the memory to +whatever you want, set the stack even to whatever you want, and then kick it off and let it run for +some period of gas, and then it will come back when it's done. So it's a very, very flexible model +for computation. + +## On-transfer Function + +So onTransfer is also stateful. It can alter the service's state. It can look at other services' +state and alter its own state. And this really is there so that you can allow for services to +communicate with other services in an albeit asynchronous fashion. So it's a little different from +many smart contract platforms in that this interaction of the encapsulated components, smart +contracts or services in our case, happens in an asynchronous fashion. You fire off a message along +with maybe some tokens, and then on the other side, at some point later in the same six-second +execution period, the other service will get it and can execute upon it. There's no return path. If +you want a return path, you have to send some, do a transfer back, basically, or possibly change +your state in some way that the sending service can expect it and look at it later. + +Both accumulate and on transfer are written so that they can be executed in parallel. So the +different services accumulates and transfers can all execute at the same time. This would allow for +future designs to actually have more than this 10 milliseconds of gas input. In principle, there +could, for example, be a secondary core, utilized for executing certain accumulates and giving them +much, much greater amounts of gas to use. + +## Polkadot Virtual Machine (PVM) + +The PVM design is based on the RISC-V ISA (Instruction Set Architecture). It's a very simple +instruction format. The RISC-V ISA is: + +- easy to transpile into common hardware formats like x86, x64, and ARM +- well supported by tooling like [LLVM](https://llvm.org/) + +PVM itself is simple and secure, sandboxable. It has various guarantees over execution, it is +friendly to metering, deterministic, and consensus-sensitive. It can host arbitrary in a sense that +PVM does not have much of the complexity, nor does it have much of the opinionation that you might +otherwise find in other VMs. + +WASM is ultimately optimized for a web use case, and this is sort of fine in most circumstances. +However, the stack is not handled as part of the machine itself (but rather it's sort of +off-machine) and this creates issues in continuations. Now, continuations can be really a very +helpful thing to have, particularly when you're doing stuff like asynchronous programming with XCM. + +RISC-V, being such a simple and sort of regular machine, just puts the stack in a bit of memory, +which means if you snapshot the whole of memory, or at least the pages that are actually used in +memory, you will end up being able to have continuations naturally. There's nothing extra to do. +Now, as it happens, PVM also achieves incredibly fast execution speeds (free metering compared to +WASM) when run on regular hardware like X64 and ARM. + +RISC-V-enabled continuations will set a new standard for coding that is meant to scale across +multi-core platforms like JAM. Realistically, this is how all blockchains are ultimately going to +scale. This idea of just throwing faster single-core CPUs at it is not going to go very far. We +already can see this in hardware and in the evolution of software platforms as well. There is an +increasing need to think in terms of asynchronous, parallelized architectures. The same will for +sure be true in blockchain and consensus algorithms. + +## SAFROLE + +SAFROLE is a block production algorithm, a simplification of [SASSAFRAS](./learn-sassafras.md). It +excludes some components that may be useful for parachains. So parachains may probably stick with +SASSAFRAS rather SAFROLE. SAFROLE will be as simple as possile to: + +- ensure that it is as minimally opinionated as possible to maximize the potential future use cases +- to follow in the footsteps of Ethereum yellow paper, and really try to get as many implementations + as possible to try and spread the expertise. + +Understanding how Polkadot 1.0 works end-to-end is challenging. With JAM, someone who is capable of +reading and understanding the yellow paper would be able to read and understand fairly quickly how +JAM works. So simplicity is crucial. + +SAFROLE is a SNARK-based block production algorithm. It uses SNARK specifically for their anonymity +features. And it delivers constant time block production, almost entirely fork-free. There are a +couple of instances where forks could possibly arise. They basically only happen when there's a net +split or someone's being intentionally malicious. The great value for the anonymity is not +specifically to keep validators' identities sort of a secret. In fact, when they actually produce a +block, they give away their identity anyway, but rather for ensuring that the block production +mechanism itself is secure, basically to avoid spamming. + +## Networking + +Networking for JAM uses the [QUIC protocol](https://en.wikipedia.org/wiki/QUIC). This allows direct +point-to-point connections between a large numbers of validators. So essentially all 1,000-plus +validators on Polkadot can have a persistent connection to each other without potential issues with +sockets. Gossip is avoided, mostly because it is not needed, because JAM will not handle +transactions. In case of distributing something that's not point-to-point or within a very small +subset validators, grid-diffusal will be used, in which validators are arranged into a grid, and +packages are sent by a row, and then each node on the row sends it to all members of its column. + +## Pipelining for Efficient Block Processing + +In state-based blockchains like Ethereum, the header of blocks typically contains the posterior +state root, summarizing the state after all block computations. Consequently, the header cannot be +sent until all computations are complete. However, some computations can be performed before sending +the header, as their outcomes determine the block's validity. + +In JAM, a different approach is adopted by placing the prior state root in the header instead of the +posterior state root. This means that the state roots featured in the header lag by one block. As a +result, lightweight computations, comprising approximately 5% of the block's workload or execution +time, can be executed, and the block can be distributed immediately afterward. The remaining 95% of +the block's computation, primarily accumulation tasks, can be completed subsequently. This enables +the next block to be started before the execution of the current block is finished. + +This approach allows for more efficient utilization of time between blocks. In traditional setups +like Polkadot's six-second block time, where the posterior state root must be provided, only a +portion of the time can be used for computation. However, with pipelining in JAM, the entire block +time can be effectively utilized for computations, maximizing efficiency. + +While using the full block time for computation may not be ideal, as it could lead to perpetual +catching up and delayed block imports, JAM's approach enables significantly more time for +computation compared to traditional setups. This means that approximately three to three and a half +seconds of effective block computation time can be achieved, a substantial improvement over the +current setup. + +## Architectural Differences: JAM vs. Relay Chain + +One of the architectural distinctions between JAM and the Relay Chain lies in the degree to which +functionality is fixed. While the relay chain fixes certain elements, such as the language used to +define the protocol (WASM), JAM goes further in this regard. For instance, it dictates the type used +for encoding the block header and the hashing scheme, making alterations to these aspects +challenging. + +However, flexibility comparable to that enabled by the WebAssembly meta-protocol in the relay chain +is preserved in JAM through its service model. In this model, upgradability responsibility is +shifted to services, freeing the chain itself from the burden of being upgradable. Three primary +reasons support this decision: + +- Simplicity is prioritized. Maintaining a non-upgradable chain significantly reduces complexity. +- The relay chain's tendency to introduce complex functionalities without removing older ones + complicates matters. Because upgrades are easily implemented, there's little incentive to simplify + the Substrate SDK. Consequently, replicating Polkadot becomes impractical. +- The potential for optimization afforded by JAM's fixed parameters. With a clear understanding of + the specific tasks the JAM chain must perform and the ability to set fixed parameters, + optimizations in areas like network topology and timing become feasible. This contrasts with the + challenges posed by the relay chain's highly upgradable nature, where such optimizations are more + complex due to the frequent alterations possible with each upgrade. + +Despite these differences, JAM retains flexibility in application-level functionalities, such as +coretime sales, staking, and governance, all managed within services. Additionally, JAM introduces a +novel concept by associating a token balance with a service, providing opportunities for economic +model adjustments that are not easily achievable in purely upgradable chains like the Relay Chain. + +## JAM Toaster + +One of the ongoing efforts in ensuring that JAM meets its original expectations involves +establishing a comprehensive test environment for the JAM chain. Unlike small-scale test networks +running on unreliable hardware to manage cloud computing costs, this initiative entails a +substantial investment. Introducing the JAM toaster, essentially a test platform designed for +conducting large-scale trials and performance assessments of JAM. This addresses a prior challenge +encountered during the development of the Polkadot Relay Chain, where understanding the emergent +effects and dynamics of operating a network at such scale proved difficult. Previous attempts were +limited to a few dozen nodes on a test network and the Kusama network, which lacks comprehensive +monitoring capabilities due to restrictions on accessing validator nodes. Conversely, the +small-scale test network failed to accurately simulate the network dynamics of a larger-scale +deployment. The JAM toaster aims to bridge this gap by enabling in-depth research at the scale of +the entire JAM network, comprising 1,023 nodes. This platform facilitates the investigation of +network behavior and performance characteristics, providing valuable insights for developers +regarding the expected performance of their parachains. + +## JAM and Substrate + +### Benchmarks vs. Metering + +Benchmarks, or performance tests, can be optional when working with JAM. While they may still be +necessary on occasion, JAM's metered system can often obviate the need for frequent benchmarking. +JAM operates on a metered system, allowing users to assess computational workload after completion. +Additionally, there's a theoretical mechanism to control computation, typically implemented at block +construction time. + +However, there are scenarios where benchmarking remains relevant. For instance, when metering is +deemed too conservative for certain use cases, benchmarking might be necessary to enhance +performance. Additionally, benchmarking could be useful for tasks requiring extended execution +times, ensuring they aren't run excessively long. + +### XCMP + +Moving on to Cross-Chain Message Passing (XCMP), JAM mandates full XCMP support. This is because +within the relay chain, there's a provision for passing more data via a candidate receipt than would +be practical if all parachains transmitted all data all the time. JAM adheres strictly to rules, +even for parachain services, including limitations on data transmission between the "refine" and +"accumulate" phases. Currently, with +[Horizontal Relay Chain Message Passing (HRMP)](./learn-xcm-transport.md#hrmp-xcmp-lites), all +messages traverse the relay chain, constraining the data payload to 4 kB or less, which might not be +realistic. Thus, XCMP, where only message headers are relayed via the chain while the actual message +data is transmitted off-chain, emerges as a necessary and overdue improvement. + +### Accords + +[Accords](../general/polkadot-direction.md#xcm-and-accords) essentially encapsulate state and logic, +resembling smart contracts, with multiple instances residing alongside each parachain. They +facilitate message exchange between instances and enable synchronous interactions with parachains. +Accords find utility in scenarios where trust between parachains is lacking, such as token +transfers. Unlike the existing method involving a reserve intermediary, Accords streamline direct +token teleportation between parachains, eliminating the need for trust-compromising intermediaries. +Moreover, Accords could function as XCM forwarding mechanisms, ensuring message integrity even when +relayed through third-party intermediaries, thus eliminating the need for explicit origin markers. + +### Boosting Efficiency + +Lastly, JAM's broader, less opinionated approach to leveraging underlying consensus mechanisms makes +it conducive to implementing more innovative solutions. For instance, distributed availability for +complex tasks like zero-knowledge proofs becomes more practical and efficient with JAM. +Additionally, JAM supports a mixed resource consumption model, wherein work packages can contain +both computationally intensive tasks and data-heavy operations. By pairing services with diverse +resource requirements, such as those needing extensive computation with those necessitating high +data availability, JAM optimizes the utilization of validators' resources, thereby reducing costs. +This flexible approach enables the combination of tasks like distributed availability and SNARK +verification with parachain workloads, driving down costs while enhancing efficiency. + +## Enhancements and Compatibility in JAM + +JAM's design prioritizes compatibility with existing Polkadot 1 parachains. While it maintains +compatibility with the Polkadot SDK, the Polkadot Validator Function (PVF) undergoes retargeting. +Instead of WebAssembly, it will target the Polkadot Virtual Machine (PVM). This transition is +facilitated by the fact that PVM is a minor modification of RISC-V, which has already been +established as an official LLVM target. Consequently, PVM could become an official LLVM target +before the deployment of JAM. + +Beyond serving as a host for parachains, JAM introduces significant enhancements. It offers the +potential to streamline benchmarking efforts and alleviate future benchmarking requirements. +Additionally, JAM introduces the concept of accords, multi-instance, multi-sharded smart contracts +that govern and enforce specific interaction protocols between parachains. Furthermore, full +Cross-Chain Message Passing (XCMP) support is essential, enabling the removal of limitations on +information transfer between parachains, typically facilitated by Cross-Chain Messages (XCM). + +Regarding Agile Coretime, JAM retains compatibility with existing setups. However, it introduces the +capability to target coretime not only at parachains but also at arbitrary sets of work packages. +This flexibility enhances the versatility and efficiency of resource allocation within the JAM +ecosystem. diff --git a/polkadot-wiki/sidebars.js b/polkadot-wiki/sidebars.js index 15f140e6244e..21432cb67c45 100644 --- a/polkadot-wiki/sidebars.js +++ b/polkadot-wiki/sidebars.js @@ -675,6 +675,7 @@ module.exports = { "learn/learn-parathreads", "learn/learn-elastic-scaling", "learn/learn-sassafras", + "learn/learn-jam-chain", ], }, { From 5823467a04d4fc22af1dba52a6e13c0a9eb318bb Mon Sep 17 00:00:00 2001 From: Radha <86818441+DrW3RK@users.noreply.github.com> Date: Tue, 16 Apr 2024 14:02:07 +0200 Subject: [PATCH 03/16] Update docs/learn/learn-jam-chain.md --- docs/learn/learn-jam-chain.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/docs/learn/learn-jam-chain.md b/docs/learn/learn-jam-chain.md index a5fcd46ba521..c86de4aafad6 100644 --- a/docs/learn/learn-jam-chain.md +++ b/docs/learn/learn-jam-chain.md @@ -30,8 +30,7 @@ a unique manner. JAM will be a domain-specific chain, a chain that handles one particular domain of problems. In this case, roll-ups, what Ethereum people might call optimistic roll-ups. JAM's rollups are heavily bounded in terms of their security. This is what Polkadot has been doing for the last five years, it -is already a highly domain-specific roll-up chain. It's just got a little bit more opinionation than -we want, and that is essentially what JAM fixes. +is already a highly domain-specific roll-up chain. JAM essentially makes it less opinionated and more generic. The JAM chain's job is to essentially provide the necessary apparatus to ensure that this output correctly reflects the input when it goes through whatever transformation it's meant to have gone From c91b7d6893bf67c685be3e4bb9a12bc81cba058b Mon Sep 17 00:00:00 2001 From: Radha <86818441+DrW3RK@users.noreply.github.com> Date: Tue, 16 Apr 2024 14:02:14 +0200 Subject: [PATCH 04/16] Update docs/learn/learn-jam-chain.md --- docs/learn/learn-jam-chain.md | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/docs/learn/learn-jam-chain.md b/docs/learn/learn-jam-chain.md index c86de4aafad6..477e55ff8d09 100644 --- a/docs/learn/learn-jam-chain.md +++ b/docs/learn/learn-jam-chain.md @@ -32,11 +32,9 @@ case, roll-ups, what Ethereum people might call optimistic roll-ups. JAM's rollu bounded in terms of their security. This is what Polkadot has been doing for the last five years, it is already a highly domain-specific roll-up chain. JAM essentially makes it less opinionated and more generic. -The JAM chain's job is to essentially provide the necessary apparatus to ensure that this output -correctly reflects the input when it goes through whatever transformation it's meant to have gone -through. Again, this is fairly basic stuff for what roll-ups are. What the JAM chain does is it -accepts outputs of roll-ups, of bits of computation that have been done already. So these bits of -computation are done elsewhere, and then whatever data they yield is fed into the JAM chain. +The job of the JAM chain is to provide the necessary apparatus to ensure that the output +correctly reflects the input when it goes through the transformation it's meant to have undergone. The JAM chain +accepts outputs of roll-ups, of bits of computation done elsewhere, and the data they yield is fed into the JAM chain. The JAM chain is there to integrate the outputs of these computations into some shared state. So it provides this shared state model, for integrating outputs together. We can see how Polkadot fits From 64a4e7bee17d0be6768c075c9f27db937dda262e Mon Sep 17 00:00:00 2001 From: Radha <86818441+DrW3RK@users.noreply.github.com> Date: Tue, 16 Apr 2024 14:02:19 +0200 Subject: [PATCH 05/16] Update docs/learn/learn-jam-chain.md --- docs/learn/learn-jam-chain.md | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/docs/learn/learn-jam-chain.md b/docs/learn/learn-jam-chain.md index 477e55ff8d09..c98f308c9fac 100644 --- a/docs/learn/learn-jam-chain.md +++ b/docs/learn/learn-jam-chain.md @@ -36,10 +36,9 @@ The job of the JAM chain is to provide the necessary apparatus to ensure that th correctly reflects the input when it goes through the transformation it's meant to have undergone. The JAM chain accepts outputs of roll-ups, of bits of computation done elsewhere, and the data they yield is fed into the JAM chain. -The JAM chain is there to integrate the outputs of these computations into some shared state. So it -provides this shared state model, for integrating outputs together. We can see how Polkadot fits -into this model. But interestingly, we can see how other chains like what Ethereum is doing also fit -into this model. +The JAM chain integrates the outputs of these computations into a shared state, +providing a shared state model similar to how Polkadot relay chain functions. + ## Smart Contract Similarity From 25dfa9b192b46aa6f0e6e6fe4d66b3cd4155736a Mon Sep 17 00:00:00 2001 From: Radha <86818441+DrW3RK@users.noreply.github.com> Date: Tue, 16 Apr 2024 14:02:26 +0200 Subject: [PATCH 06/16] Update docs/learn/learn-jam-chain.md --- docs/learn/learn-jam-chain.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/learn/learn-jam-chain.md b/docs/learn/learn-jam-chain.md index c98f308c9fac..bf2340f646ad 100644 --- a/docs/learn/learn-jam-chain.md +++ b/docs/learn/learn-jam-chain.md @@ -57,7 +57,7 @@ certain state components, resembling the structure commonly observed on a smart ## Service Entry Points -JAM services' code itself is split into three different entry points: +JAM services' code is split into three different entry points: - **Refine** is the function that does the mostly stateless computation. This is the bit that defines the transformation for the rollup for a specific service. From 00a86668ca479024847a2607971189d9f07b8877 Mon Sep 17 00:00:00 2001 From: Radha <86818441+DrW3RK@users.noreply.github.com> Date: Tue, 16 Apr 2024 14:02:32 +0200 Subject: [PATCH 07/16] Update docs/learn/learn-jam-chain.md --- docs/learn/learn-jam-chain.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/learn/learn-jam-chain.md b/docs/learn/learn-jam-chain.md index bf2340f646ad..eed73d0d6619 100644 --- a/docs/learn/learn-jam-chain.md +++ b/docs/learn/learn-jam-chain.md @@ -59,7 +59,7 @@ certain state components, resembling the structure commonly observed on a smart JAM services' code is split into three different entry points: -- **Refine** is the function that does the mostly stateless computation. This is the bit that +- **Refine** is the function that does the mostly stateless computation. It defines the transformation for the rollup for a specific service. - **Accumulate** is the function that takes the output of that and folds it into the overall state of the service From 8ab548cea0b859dfc59c29fee29f77a17b21465b Mon Sep 17 00:00:00 2001 From: Radha <86818441+DrW3RK@users.noreply.github.com> Date: Tue, 16 Apr 2024 14:02:37 +0200 Subject: [PATCH 08/16] Update docs/learn/learn-jam-chain.md --- docs/learn/learn-jam-chain.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/docs/learn/learn-jam-chain.md b/docs/learn/learn-jam-chain.md index eed73d0d6619..6889ef8c4b9a 100644 --- a/docs/learn/learn-jam-chain.md +++ b/docs/learn/learn-jam-chain.md @@ -67,8 +67,7 @@ JAM services' code is split into three different entry points: **Work packages** are the input to a service. Work packages can have many **work items** in them. Every work item is associated with a service, and it reflects the actual input to the service. For -the parachains service, this is where you would put in the transactions, all that stuff to do with -blockchain inputs. +the parachains service, this is where the transactions and all of the blockchain inputs are entered. The JAM security apparatus consists a two-stage processing where the Refine function accepts a work item as an input and yields a work result as an output, which gets fed into the Accumulate function. From 1aecd823ba046b2a818feb93a8686948f8f51e4d Mon Sep 17 00:00:00 2001 From: Radha <86818441+DrW3RK@users.noreply.github.com> Date: Tue, 16 Apr 2024 14:02:42 +0200 Subject: [PATCH 09/16] Update docs/learn/learn-jam-chain.md --- docs/learn/learn-jam-chain.md | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/docs/learn/learn-jam-chain.md b/docs/learn/learn-jam-chain.md index 6889ef8c4b9a..734d08d5ae7b 100644 --- a/docs/learn/learn-jam-chain.md +++ b/docs/learn/learn-jam-chain.md @@ -70,11 +70,9 @@ Every work item is associated with a service, and it reflects the actual input t the parachains service, this is where the transactions and all of the blockchain inputs are entered. The JAM security apparatus consists a two-stage processing where the Refine function accepts a work -item as an input and yields a work result as an output, which gets fed into the Accumulate function. -First Refine, then Accumulate. Work items are refined into work results, and therefore a work -package, which contains many work items, is refined into a **work report**, which is the -corresponding results of several items. A work package can be assigned that uses one core for one -time slot, one six-second period of time. +item as an input and yields a work result as an output, which gets fed into the Accumulate function (First Refine, then Accumulate.) Work items are refined into work results, and therefore, a work package containing many work items is refined into a **work report**, which is the +corresponding 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 From 5f3b7fc33b9aec0690088a5603a5b58dd012a40d Mon Sep 17 00:00:00 2001 From: Radha <86818441+DrW3RK@users.noreply.github.com> Date: Tue, 16 Apr 2024 14:02:48 +0200 Subject: [PATCH 10/16] Update docs/learn/learn-jam-chain.md --- docs/learn/learn-jam-chain.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/learn/learn-jam-chain.md b/docs/learn/learn-jam-chain.md index 734d08d5ae7b..dc0fdd1334b0 100644 --- a/docs/learn/learn-jam-chain.md +++ b/docs/learn/learn-jam-chain.md @@ -76,10 +76,10 @@ time slot (typically a period of 6 seconds). ## JAM is Transactionless -How does JAM differ from a smart contract chain? Well, it's **transactionless**. There are no -transactions in JAM: Everything that is all permissionless input first goes through a Refine stage. +JAM fundamentally differs from a smart contract chain in the fact that it's **transactionless**. There are no +transactions in JAM: Everything is permissionless and the input first goes through a Refine stage. So the service pre-refines all of the input that is transformed into these work reports, these sets -of work results. And then those work results make their way actually onto the chain. +of work results. Then, those work results make their way onto the chain. So if there are no transactions, how does anything make its way from the external world in? Well, there is still extrinsic information of a specific format. There are five kinds of extrinsic in JAM: From 02553064f14b3fa5575c4b83466ae0354197e7d2 Mon Sep 17 00:00:00 2001 From: Radha <86818441+DrW3RK@users.noreply.github.com> Date: Tue, 16 Apr 2024 14:10:33 +0200 Subject: [PATCH 11/16] Add links to JAM paper and prize --- docs/learn/learn-jam-chain.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/docs/learn/learn-jam-chain.md b/docs/learn/learn-jam-chain.md index dc0fdd1334b0..a2a1c5094041 100644 --- a/docs/learn/learn-jam-chain.md +++ b/docs/learn/learn-jam-chain.md @@ -7,6 +7,13 @@ keywords: [Polkadot, JAM, join-accumulate] slug: ../learn-jam-chain --- +:::note + +JAM paper is available at [graypaper.com](https://graypaper.com/) and the information regarding +JAM prize is available at [jam.web3.foundation/](https://jam.web3.foundation/). + +::: + JAM, short for Join-Accumulate Machine, represents a prospective design to succeed the relay chain. Its name originates from CoreJAM, denoting Collect Refine Join Accumulate, which outlines the computation model the machine embodies. However, within the actual chain, only the Join and From 519d0366e2e5a43600af52cac8ae51d66a0ee5bc Mon Sep 17 00:00:00 2001 From: Radha <86818441+DrW3RK@users.noreply.github.com> Date: Tue, 16 Apr 2024 14:10:46 +0200 Subject: [PATCH 12/16] Update learn-jam-chain.md --- docs/learn/learn-jam-chain.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/learn/learn-jam-chain.md b/docs/learn/learn-jam-chain.md index a2a1c5094041..8d7fd464ef92 100644 --- a/docs/learn/learn-jam-chain.md +++ b/docs/learn/learn-jam-chain.md @@ -10,7 +10,7 @@ slug: ../learn-jam-chain :::note JAM paper is available at [graypaper.com](https://graypaper.com/) and the information regarding -JAM prize is available at [jam.web3.foundation/](https://jam.web3.foundation/). +JAM prize is available at [jam.web3.foundation](https://jam.web3.foundation/). ::: From ea91be409d76f625902f8811dcc5d5e8fd8241eb Mon Sep 17 00:00:00 2001 From: Filippo Date: Tue, 16 Apr 2024 18:17:31 +0400 Subject: [PATCH 13/16] updates and major edits --- docs/learn/learn-jam-chain.md | 272 ++++++++++++++++------------------ 1 file changed, 128 insertions(+), 144 deletions(-) diff --git a/docs/learn/learn-jam-chain.md b/docs/learn/learn-jam-chain.md index 8d7fd464ef92..9c1cb3a9a4f5 100644 --- a/docs/learn/learn-jam-chain.md +++ b/docs/learn/learn-jam-chain.md @@ -7,17 +7,19 @@ keywords: [Polkadot, JAM, join-accumulate] slug: ../learn-jam-chain --- -:::note +:::note -JAM paper is available at [graypaper.com](https://graypaper.com/) and the information regarding -JAM prize is available at [jam.web3.foundation](https://jam.web3.foundation/). +JAM paper is available at [graypaper.com](https://graypaper.com/) and the information regarding JAM +prize is available at [jam.web3.foundation](https://jam.web3.foundation/). ::: JAM, short for Join-Accumulate Machine, represents a prospective design to succeed the relay chain. Its name originates from CoreJAM, denoting Collect Refine Join Accumulate, which outlines the -computation model the machine embodies. However, within the actual chain, only the Join and -Accumulate functions are executed, while the Collect and Refine processes occur off-chain. +computation model the machine embodies and that was +[first described in an RFC by Gavin Wood](https://github.com/polkadot-fellows/RFCs/blob/006a9ff07c3d3bc5316c6bf63b05e966e694cc2d/text/corejam.md). +However, within the actual chain, only the Join and Accumulate functions are executed, while the +Collect and Refine processes occur off-chain. Unlike the current iterative approach, JAM will be introduced as a comprehensive singular upgrade. Several factors contribute to this decision: @@ -29,23 +31,22 @@ Several factors contribute to this decision: While this shift entails a significant breaking change, efforts will be made to minimize its impact to manageable levels. Consolidating multiple smaller breaking changes into a single transition is -deemed preferable, introducing a novel blockchain concept that integrates various existing ideas in -a unique manner. +deemed preferable, introducing a novel blockchain concept that uniquely integrates various existing +ideas. ## A Rollup Chain -JAM will be a domain-specific chain, a chain that handles one particular domain of problems. In this -case, roll-ups, what Ethereum people might call optimistic roll-ups. JAM's rollups are heavily -bounded in terms of their security. This is what Polkadot has been doing for the last five years, it -is already a highly domain-specific roll-up chain. JAM essentially makes it less opinionated and more generic. +JAM will be a domain-specific chain that handles one particular domain of problems. In this case, +roll-ups, what Ethereum people call optimistic roll-ups. JAM's rollups are heavily bounded in terms +of their security. This is what Polkadot has been doing for the last five years, it is already a +highly domain-specific roll-up chain. JAM essentially makes it less opinionated and more generic. -The job of the JAM chain is to provide the necessary apparatus to ensure that the output -correctly reflects the input when it goes through the transformation it's meant to have undergone. The JAM chain -accepts outputs of roll-ups, of bits of computation done elsewhere, and the data they yield is fed into the JAM chain. - -The JAM chain integrates the outputs of these computations into a shared state, -providing a shared state model similar to how Polkadot relay chain functions. +The JAM chain accepts outputs of roll-ups, in more general terms, bits of computation done +elsewhere, and integrates the outputs into a shared state, similarly to how the Polkadot Relay Chain +functions. +The job of the JAM chain is to provide the necessary apparatus to ensure that the output correctly +reflects the input when it goes through the transformation it's meant to have undergone. ## Smart Contract Similarity @@ -66,8 +67,8 @@ certain state components, resembling the structure commonly observed on a smart JAM services' code is split into three different entry points: -- **Refine** is the function that does the mostly stateless computation. It - defines the transformation for the rollup for a specific service. +- **Refine** is the function that does the mostly stateless computation. It defines the + transformation for the rollup for a specific service. - **Accumulate** is the function that takes the output of that and folds it into the overall state of the service - **OnTransfer** handles information coming from other services. @@ -77,19 +78,21 @@ Every work item is associated with a service, and it reflects the actual input t the parachains service, this is where the transactions and all of the blockchain inputs are entered. The JAM security apparatus consists a two-stage processing where the Refine function accepts a work -item as an input and yields a work result as an output, which gets fed into the Accumulate function (First Refine, then Accumulate.) Work items are refined into work results, and therefore, a work package containing many work items is refined into a **work report**, which is the -corresponding 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). +item as an input and yields a work result as an output, which gets fed into the Accumulate function +(first Refine, then Accumulate). Work items are refined into **work results**, and therefore, a work +package containing many work items is refined into a **work report**, which is the corresponding +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 fundamentally differs from a smart contract chain in the fact that it's **transactionless**. There are no -transactions in JAM: Everything is permissionless and the input first goes through a Refine stage. -So the service pre-refines all of the input that is transformed into these work reports, these sets -of work results. Then, those work results make their way onto the chain. +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 +this stage, the service pre-refines input data, transforming it into work reports consisting of work +results. Subsequently, these work results are transferred onto the chain. -So if there are no transactions, how does anything make its way from the external world in? Well, -there is still extrinsic information of a specific format. There are five kinds of extrinsic in JAM: +Despite the absence of transactions, JAM still accommodates extrinsic information of a specific +format. There are five types of extrinsic information: - Guarantees - Assurances @@ -97,136 +100,117 @@ there is still extrinsic information of a specific format. There are five kinds - Preimages - Tickets -The first three are part of the security apparatus of the JAM chain. Guarantees and assurances are -essentially the validators getting together and putting forward their attestations that a work -result is the correct result of its work item when transformed through the service's refine -function. Judgments are used when a work result is not reflective of the work items that is supposed -to be, and it has already made its way through the system and has been since accumulated into its -service's state. At this point, we have to roll things back, and we have to record the fact that -this was invalid. Judgments come within one hour after the work report has been submitted to the -chain. Basically, you've got this one hour period where things could not be reverted, because -finality will pause until the judgment has been allowed to actually happen. In general, though, this -is like a massively upper bound, and most of the times any possible judgment would have been done -within maybe three or four after the work package, and finality would only be paused for that long. - -Pre-images are a piece of functionality that the JAM chain provides for the refine function. The -refine function is essentially stateless, but there is one particular thing that it can do that is -stateful: It is allowed to look up the preimage of a hash. This is the one thing that is -opinionated. A block author of the JAM chain may choose to bring in one pre-image rather than -another pre-image. There's nothing that holds them to any particular pre-image. Whereas guarantees, -assurances, judgments, and tickets, are particular pieces of information, which the author either -has or doesn't have. And if they have it, regardless of whether they have it or not, their only -option is to either provide it or not provide it. They can't provide something else in its place. - -Tickets are essentially anonymous entries into the block production mechanism. They do not -immediately need to be provided to produce a block, but rather we run two epochs in front. This is -part of an algorithm called SAFROL, which is a small refinement of an original algorithm called -SASSAFRAS. +The first three types form part of the JAM chain's security framework. Guarantees and assurances +involve validators collectively attesting that a work result accurately reflects the outcome of its +corresponding work item after transformation through the service's refine function. + +Judgments occur when a work result does not align with its intended work item and has already been +integrated into the service’s state. A rollback is necessary in such cases, and the result’s +invalidity is recorded. Judgments must occur within one hour of submitting the work report to the +chain, during which finality is temporarily paused. + +Preimages represent a feature provided by the JAM chain for the refine function. While the refine +function is typically stateless, it can perform one stateful operation: looking up the preimage of a +hash. This feature is the only opinionated aspect of the refine function. + +Tickets serve as anonymous entries into the block production mechanism. They are not immediately +required for block production; instead, the system operates two epochs in advance. This mechanism is +part of the SAFROL algorithm, a refined version of the original [SASSAFRAS](./learn-sassafras.md) +algorithm. ## JAM Chain's Generalization -Polkadot is quite heavily designed around one particular service profile, the delivery of -parachains. This is what the original Polkadot paper had in it. In delivering that service, Polkadot -created a number of useful subcomponents: +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 very - good and proven security guarantees) - -JAM could be considered essentially a reduction in the level of opinionation, basically a greater -level of abstraction and generalization so that it's easier to use these underlying components in a -way that you would like to use them. - -JAM is permissionless as it can hosts code very similar to a smart contract chain. People can upload -code and can expect JAM to execute that code. It also hosts data, this preimage lookup, and state, -essentially very similar to a key value pair. Anyone can introduce new services. The first service -that would be in the JAM Genesis block would be a service that enables people to add new services. -Since JAM itself doesn't have any way of accepting transactions, there's no immediate way for anyone -to create a service on JAM. There has to be a service that starts in JAM to allow people to go -through it and create their own services. - -Services do not have any particular limits on how much code, data, or state they can host. It's all -crypto-economic based, so essentially the more DOT your services have deposited with them, the more -data and the more state they can have in them. One example service would be the parachains service. -Essentially, all of the Polkadot 1.1 functionality would be contained within a single service on -JAM. Other services can be added that provide other functionality, but still use Polkadot's -distributed availability system and the auditing and guarantees system for computation. +- 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 accepts up to 5 MB of data every time slot, and a time slot is six seconds. - -Refine yields up to 4 kB of data. So you've got this big sort of compaction factor going on because -of the nature of the distributed availability system. It's distributed and it is not possible to -have all of this data making its way into the accumulate function onto the on-chain logic. So to -give an example, for a parachain, the 5 MB of data would be the PoV while the 4 kB of data would be -the candidate receipt. - -The refine function can execute for up to six seconds of PVM gas, that is it can execute for the -full relay chain block period. At the moment, PVFs can execute for two seconds. This can be because -PVM has basically secure metering and few other optimizations so we can process three times as much -stuff. - -The refine function also gets some contextual information on what it is, on the world around it that -the work that it's doing is being produced in. In particular, it gets information on what other -things are being refined at the same time. Why is this important? Well, it means that you can -construct work packages that have multiple work items of multiple services in them, which are -codependent. This then enables certain things like, for example, accords, and the ability to have -one service, like some sort of EVM service, interact synchronously with a parachain. - -Inside of refine, you can also make preimage lookups. If you have a hash and you believe that the -preimage is available for that hash, on the JAM chain, then you can request the preimage by giving -it the hash. - -What this allows us to do is, for example, lookup code. We might have, for example, a parachain -code, where you don't want to supply a parachain code, which could be upwards of a megabyte. You -want to supply that inside of the work package. That would be a waste of the five megs, right? Every -time you want to run the parachain, supply the same one megabyte. Instead, you store the one -megabyte of code on the JAM chain, and you just have its hash in the work package. I would like the -preimage to this hash. This, for what it's worth, is what we already do on Polkadot One, but we do -it in a slightly suboptimal way, and very much not general. Now, that's refine. That's the first -stage. That's the bit that does all the work. That's the workhorse, but it's largely stateless. +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 +data compaction that is necessary due to the distributed nature of +[the availability system](./learn-parachains-protocol.md#availability-and-validity-anv-protocol). +For instance, in the context of a parachain, the 5 MB of data represents the +[Proof of Validity (PoV)](./learn-parachains-protocol.md#protocols-summary), while the 4 kB of data +corresponds to the [candidate receipt](./learn-parachains-protocol.md#candidate-receipts). + +Refine can execute for up to 6 seconds of [PVM](#polkadot-virtual-machine-pvm) gas, equivalent to +the full block period of the relay chain. This extended execution time, compared to the current +limit of two seconds for PVFs, is facilitated by [secure metering](#benchmarks-vs-metering) and +other optimizations inherent to PVM. + +Moreover, Refine receives contextual information about the ongoing work and its surroundings, +including details about concurrent refinements being performed. This feature enables the +construction of work packages containing multiple work items from various services, facilitating +interactions like [accords](#accords) and synchronous communication between services. + +Preimage lookups can also be conducted within Refine. If a hash and its associated preimage are +believed to be available on the JAM chain, the preimage can be requested by providing the hash. This +capability enables efficient storage and retrieval of code, such as parachain code, by storing the +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 -The accumulate function integrates the output of refine actually into the chain state. Accumulate -accepts multiple outputs from refine, all of the same service, right? Don't forget, refine and -accumulate are both entry points from a code blob that is specific to a service. It accepts multiple -refine outputs and it can execute for a much smaller period of time per output around, at most, 10 -milliseconds. And this depends whether the work package has many different work items in, or if it's -just one. If it's just one, it gets the full 10 milliseconds per work output. If it's many, then -that's shared between each of the outputs of the work package. - -A big difference to refine, it's stateful. This means it can access the state of the JAM chain. It -can read the storage from any service, and it can write to its own key value store. It can also -transfer funds and send a little memo when it does transfer funds. And it can also create new -services, obviously, upgrade its code, request the availability of a preimage, and a few other bits -that I'm not talking about. - -Incidentally, and I actually forgot to mention this in the refine model, both of these can invoke -child instances of the PVM. So you can make a new instance of the PVM that's sort of a sub-instance, -a virtual machine, and you can put some code in there, and put some data in there, set the memory to -whatever you want, set the stack even to whatever you want, and then kick it off and let it run for -some period of gas, and then it will come back when it's done. So it's a very, very flexible model -for computation. +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 +same service. Both Refine and Accumulate serve as entry points from a service-specific code blob. + +Accumulate's execution time per output is considerably shorter than Refine’s, typically around 10 +milliseconds at most. However, the duration depends on factors such as the number of work items in +the work package. If a work package contains multiple items, the available time is divided among +them. + +Unlike Refine, Accumulate is stateful, granting it access to the JAM chain's state. It can read +storage from any service, write to its key-value store, transfer funds, and include a memo with fund +transfers. Additionally, Accumulate can create new services, upgrade its code, and request preimage +availability, among other functionalities. + +Moreover, both Refine and Accumulate can invoke child instances of the PVM. This allows for creating +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 -So onTransfer is also stateful. It can alter the service's state. It can look at other services' -state and alter its own state. And this really is there so that you can allow for services to -communicate with other services in an albeit asynchronous fashion. So it's a little different from -many smart contract platforms in that this interaction of the encapsulated components, smart -contracts or services in our case, happens in an asynchronous fashion. You fire off a message along -with maybe some tokens, and then on the other side, at some point later in the same six-second -execution period, the other service will get it and can execute upon it. There's no return path. If -you want a return path, you have to send some, do a transfer back, basically, or possibly change -your state in some way that the sending service can expect it and look at it later. - -Both accumulate and on transfer are written so that they can be executed in parallel. So the -different services accumulates and transfers can all execute at the same time. This would allow for -future designs to actually have more than this 10 milliseconds of gas input. In principle, there -could, for example, be a secondary core, utilized for executing certain accumulates and giving them -much, much greater amounts of gas to use. +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 +state. This functionality facilitates communication between services, albeit in an asynchronous +manner. + +Unlike many smart contract platforms, where interactions occur synchronously, in JAM the interaction +between encapsulated components, such as smart contracts or services in this case, happens +asynchronously. Messages, along with tokens, are sent, and at some point later during the same +six-second execution period, the receiving service processes them. There is no immediate return +path; if a return path is needed, the sending service must initiate another transfer or modify its +state in a way that the receiving service can later interpret. + +Both Accumulate and onTransfer are designed to be executed in parallel, allowing different services' +accumulation and transfers to occur simultaneously. This design opens the possibility for future +enhancements, such as allocating more than the current 10 milliseconds of gas input. In theory, a +secondary core could be utilized to execute certain accumulations, providing them with significantly +more gas to utilize. ## Polkadot Virtual Machine (PVM) From f7add364f3ea9fecabeaf05810b4c38c971e79a0 Mon Sep 17 00:00:00 2001 From: Filippo Date: Tue, 16 Apr 2024 18:24:24 +0400 Subject: [PATCH 14/16] edits pvm --- docs/learn/learn-jam-chain.md | 49 +++++++++++++++-------------------- 1 file changed, 21 insertions(+), 28 deletions(-) diff --git a/docs/learn/learn-jam-chain.md b/docs/learn/learn-jam-chain.md index 9c1cb3a9a4f5..65f1a2f652ab 100644 --- a/docs/learn/learn-jam-chain.md +++ b/docs/learn/learn-jam-chain.md @@ -214,34 +214,27 @@ more gas to utilize. ## Polkadot Virtual Machine (PVM) -The PVM design is based on the RISC-V ISA (Instruction Set Architecture). It's a very simple -instruction format. The RISC-V ISA is: - -- easy to transpile into common hardware formats like x86, x64, and ARM -- well supported by tooling like [LLVM](https://llvm.org/) - -PVM itself is simple and secure, sandboxable. It has various guarantees over execution, it is -friendly to metering, deterministic, and consensus-sensitive. It can host arbitrary in a sense that -PVM does not have much of the complexity, nor does it have much of the opinionation that you might -otherwise find in other VMs. - -WASM is ultimately optimized for a web use case, and this is sort of fine in most circumstances. -However, the stack is not handled as part of the machine itself (but rather it's sort of -off-machine) and this creates issues in continuations. Now, continuations can be really a very -helpful thing to have, particularly when you're doing stuff like asynchronous programming with XCM. - -RISC-V, being such a simple and sort of regular machine, just puts the stack in a bit of memory, -which means if you snapshot the whole of memory, or at least the pages that are actually used in -memory, you will end up being able to have continuations naturally. There's nothing extra to do. -Now, as it happens, PVM also achieves incredibly fast execution speeds (free metering compared to -WASM) when run on regular hardware like X64 and ARM. - -RISC-V-enabled continuations will set a new standard for coding that is meant to scale across -multi-core platforms like JAM. Realistically, this is how all blockchains are ultimately going to -scale. This idea of just throwing faster single-core CPUs at it is not going to go very far. We -already can see this in hardware and in the evolution of software platforms as well. There is an -increasing need to think in terms of asynchronous, parallelized architectures. The same will for -sure be true in blockchain and consensus algorithms. +The PVM design is rooted in the RISC-V ISA (Instruction Set Architecture), known for its simplicity +and versatility. The RISC-V ISA offers several advantages: + +- It is easy to transpile into common hardware formats such as x86, x64, and ARM. +- It is well-supported by tooling like [LLVM](https://llvm.org/) + +The PVM itself embodies simplicity and security, being sandboxable and offering various execution +guarantees. It is deterministic, consensus-sensitive, and friendly to metering. Unlike other VMs, +the PVM lacks complexity and excessive opinionation. + +WASM, while optimized for web use cases, presents challenges with stack management, particularly in +handling continuations. RISC-V addresses this issue by placing the stack in memory, facilitating +continuations handling naturally without additional complexity. + +Additionally, the PVM demonstrates exceptional execution speeds, especially when run on conventional +hardware like X64 and ARM, offering advantages such as free metering compared to WASM. + +The incorporation of RISC-V-enabled continuations is poised to establish a new standard for scalable +coding across multi-core platforms like JAM. Asynchronous, parallelized architectures are +increasingly essential for scalability in both hardware and software platforms, a trend that is +expected to extend to blockchain and consensus algorithms. ## SAFROLE From bff363cf5e9c16dd7974fb8bb8c08c058404f037 Mon Sep 17 00:00:00 2001 From: Filippo Date: Tue, 16 Apr 2024 18:31:34 +0400 Subject: [PATCH 15/16] reorg sidebar --- docs/learn/learn-jam-chain.md | 62 +++++++++++++++++------------------ 1 file changed, 31 insertions(+), 31 deletions(-) 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 From 02f986b1b4f4c5048f7e3afe1ec14c570c2504a9 Mon Sep 17 00:00:00 2001 From: Filippo Date: Tue, 16 Apr 2024 23:47:53 +0400 Subject: [PATCH 16/16] added figure --- docs/assets/refine-accumulate.png | Bin 0 -> 200718 bytes docs/learn/learn-jam-chain.md | 2 ++ 2 files changed, 2 insertions(+) create mode 100644 docs/assets/refine-accumulate.png diff --git a/docs/assets/refine-accumulate.png b/docs/assets/refine-accumulate.png new file mode 100644 index 0000000000000000000000000000000000000000..a105aa8597504d16dd6c0014fb3c791b6cedf747 GIT binary patch literal 200718 zcmeFZga5A)id>1s&mO*YqhEs-Y~`52>yY;*FrkjrEw7ZF9 zr@aJN!4q-`@?o(#*g-6u5F-(|{p}wr`+3A);1TxWtg^;`?uI8#O}&9xp1cEJpCVp< zbDa|^xte%-w#4W4<;R5~$KP_+fys&E$OMr7FkJkS@Q(83nJ~?G z+%_$ZeB!nbbLOokPH#C3b+J9?mMn}a52*svj;S!(oNq|_S6=_uFl^kt?H(Sn9?d&1-(Rj0mQw`7>W?$hM;;3|G?uD2*VC^_6jq}dBf@VeRmSRv5@K}M z{T-%>Up?tPdX(C2A_#;rhP#qRVIV>K%Riv(R?)+!N}W+6K_Crfz6+NbE6DlwZksG< zw|g52acD2<>en}9hgazsIRRfZ?=;iMh9lK)w@n{cU(?tjR$KXgPBWy>(1gLw(;=C7 z{Z@2fjMMkLBxRT_8@+D3NSJvAt_?=7Yst|(a8{U zt?1Xp+k$UyvB>xbNr-Vtk3fOKgMLJ&APJ=J?~fSbA_rj=-jBooB*oQ}G0y$kGlkiO zHTd%BO*%XQ?rthdYVGsJg~+j65OVU%7a#D#BsB=m$r0bchi3O0c>HOH#`UtF8JXKa-y(jDj2^%1UK~TDYNth-V>nlAD;Vcvg!z!V&jWex?k;>W*U+y^>=(;JX%bxcFc5AN6ay7f_&*}9CM1b~8BYGeLXwh9lzdRum|r=nOmO~#_IG?^f$6Vl!i=QpgEl+wr^8#t`Lo}Z z1XyN^7ro_vWs)V!N*F0Ym6g1YUHg(jC^5@w%F>ww5S<~+l)W&;c=>|+3#=^OOqc8@ zqzM1&Dr)){Bb~jA)@7)roh8-WWq9j*rJA_&!9KmAoM?sH==Lvyw~#q;GXp02akr1o z(%t#i!}R+|wjj40aPbC`RaEY87QZ@tmF-p)rpXSdO1Dq4N931T`|2i2rW9;0cll+) zkoi+8XJBJeqkm(f`;SE_Z&^ap7|DBbuOApRVZHC)ewUUyl5CNplGKn~%fpZ!mZp?u zla}Ie-|z zw`HNa5lf##V;4G?1a1kRde3~%*n7DvShSQNpm>~kM!#XCED`(7sqx9?x)8uTz`ESJ+_9VwZ~}lVrz}@2hc3_5($z&!jy%BRSjddrz}Xn;f3I;2z8$=uP=latKf8M^|bTG-!aE*QtD(eZTugJvl-U zArFX+{^>#yU8;eRh-Rqw;^vXRh`WfC*ta@Ec!G+u(?6H}MC~aLvI&A0?-zeBPL}H; zUKn{F;SvFf1V(D$k#L-{WhdXJyp&Z>PW$K~zfiz(&~#aMsqWcPoNZB5-0K`}(Q;tM zVg*D18Uou)Z^meLQ7=$0)OHzmAvlycMhvEaS-@&Fxi&LBkbXfk1L$pMViRv%*ICk4 zG60xJvC%cwwepz=vfMUf=_^>?O<|Zy_?&9g(pBGsUgrcHsVS{(v5sDDSwT7GSagdb zkGLeHA=KhKF9-~SpUIxgp8uJh8)fv>sM;uSdqfE*S6Q5a#Km@&gNmb2r_e^;EuAgB zCoMcZHC?}DvB_SSR<|OuAPSwB&&+vyU!&r>!h0dIqG8qC)@Ti~P?$^xA93?sVc}$!{E)<6h$vH}hUnu7r%4EL1)8@OGPi zs|zaqI`FL$!w>s2?)xZn;_xUmf)>Z)Hpvmm&&DFyA%+s=5zQnvM0^zYlBl03xeJ(g zEy|pZM;DzOY8#~-TDI2vkb0RSJ5mi|Nu|uCRApr4%A~wAv6E`aimg_Q9Dx10((IBr z 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�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

Tj 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 X&O5S3>eOUm1|aZs^>bP0l+XkKQ)2BV literal 0 HcmV?d00001 diff --git a/docs/learn/learn-jam-chain.md b/docs/learn/learn-jam-chain.md index 3f84461127c3..49b222ca30bf 100644 --- a/docs/learn/learn-jam-chain.md +++ b/docs/learn/learn-jam-chain.md @@ -84,6 +84,8 @@ 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). +![refine-accumulate](../assets/refine-accumulate.png) + ### JAM is Transactionless JAM distinguishes itself from smart contract chains by operating transactionlessly. There are no