THIS IS UNOFFICIAL!
For the official prize documentation, see https://jam.web3.foundation/
For news on the protocol, see https://graypaper.com/
For an unofficial list of JAM implementation teams, see https://jamcha.in/clients
Judges: The Polkadot Fellowship, excluding members involved in the implementation being voted on.
Three paths to prizes exist:
In all paths the first milestone (M1, MN1, ML1) is the same.
In all paths third-party libraries for low-level primitives not specific to the JAM protocol are acceptable, such as:
Following the accepted completion of each milestone, one developer may be promoted to the rank commensurate with their code and protocol contributions regardless of regular time requirements. The promotion should be in line with regular interpretation of the Manifesto except for the time requirements (which are disregarded). The maximum rank to be attained in this way shall be III Dan (Fellow).
Following completion of M1/MN1/ML1, evidence for Polkadot Fellowship rank-retentions (and, where applicable, promotions) may include regular, meaningful contributions to the project.
Maximum prize for completing this path: 500,000 DOT + 5,000 KSM
This path involves the creation of a full validating, block-authoring implementation of JAM including a working and performant PVM.
PVM execution, trie/DB, signature-verification and availability (EC/DB) performance tests are requirements and will be run on a standard hardware.
Following completion of M2, teams receive a login to their own instance of the standard hardware on which to make unit benchmarks of their performance.
Following completion of M3, teams receive time/slots on the JAM TOASTER to trial and debug overall emergent activity.
Following completion of M4, implementations may apply for a professional external audit at no cost.
Five milestones (each implies the ones before):
Maximum prize for completing this path: 350,000 DOT and 3,500 KSM (though a conversion path exists to increase this to 450,000 DOT and 4,500 KSM – see below)
This path involves the creation of a full validating, block-authoring implementation of JAM including an original working PVM. For the purpose of performance testing, a third-party PVM implementation may be used to help achieve the required performance.
Only half of the regular milestone prizes are paid for this path's Milestones 3, 4 and 5.
Trie/DB, signature-verification and availability (EC/DB) performance tests are still requirements and will be run on a standard hardware.
Following completion of MN2, teams receive a login to their own instance of the standard hardware on which to make unit benchmarks of their performance.
Following completion of MN3, teams receive time/slots on the JAM TOASTER to trial and debug overall emergent activity.
Following completion of MN4, implementations may apply for a professional external audit at no cost.
Five milestones (each implies the ones before):
Once completed, a full implementation including full-performance PVM may be submitted at a later date for peformance testing and auditing in a nominal milestone 6 (MN6). In the event it fulfills both performance tests and passes a professional audit then a further 100,000 DOT + 1,000 KSM may be paid.
Maximum prize for completing this path: 300,000 DOT and 3,000 KSM
This path involves the creation of a low-resource JAM node not capable of block-authoring, but capable of servicing network requests, suitable for embedding in other program code (such as tooling and web pages) and an extremely low footprint and synchronisation time.
Footprints and resource usage for a variety of standard tasks will be tested on a standard hardware and must complete in sufficiently low time, CPU utilisation, memory utilisation, storage utilisation and network utilisation. Resource usage should be broadly in line with smoldot
.
Following completion of ML1, teams receive a login to their own instance of the standard hardware on which to make unit benchmarks of their performance.
Following completion of ML2, implementations may apply for a professional external audit at no cost.
Five milestones (each implies the ones before):
There are several additional rules for prizes given on this path:
Prizes are paid to the earliest account IDs stated in the repository's README. In the case of a tie, payment is split equally. Local (Swiss) law requires that Web 3 Foundation take KYC/AML information on the recipient together with proof of account control.
Unless otherwise stated, major language dialects are acceptable.
The language set of an implementation is determined as the language in which its business logic is written. Peripheral, performance-bottleneck components of an implementation may be written in a higher-performance language without any impact on the consideration of language set. A non-exhaustive list of such components include:
(Maximum) Prize per milestone: 100,000 DOT + 1,000 KSM
(Maximum) Prize per milestone: 100,000 DOT + 1,000 KSM
(Maximum) Prize per milestone: 100,000 DOT + 1,000 KSM
(Maximum) Prize per milestone: 100,000 DOT + 1,000 KSM
(Maximum) Prize per milestone: 5,000 KSM
Begin in order:
Q: Clean room?
A: Cooperation between teams is essential but anything which goes beyond trivial misunderstandings of the graypaper should be documented, either as issues in the GP repo or as side notes of the implementation to be submitted at the time of milestone review. To stay safe, teams should stay away from the implementation specifics of other implementations and definitely not be sharing code.
It's ok to ruminate on high level approaches to solve problems or optimize, it's not so ok to be looking at some other implementation's specific solution.
What the Fellowship will be looking out for is for undeclared collusion between teams. Code which appears to be a little too similar for it to have been independently written. A big red flag would be the same bug popping up in two implementations.
But this is not to detract from the fun of getting two cleanroom impls talking to each other. Of course this is a big part of it and you mustn't feel like it's not allowed.
Just be sure to document anything which you discover when working alongside another team so everyone can benefit.
Q: This all sounds too risky for me. Can we not have something closer to a regular service agreement?
A: No.
Q: Roughly how long will it take my developer/team to implement Milestone X?
A: How long is a piece of string? Seriously, read the Graypaper and decide yourself. Every developer is different.
Q: Does my implementation need to exploit JAM's asynchrony?
A: We don't explicitly state what code paths need be asynchronous. It is up to implementations to decide this for themselves.
To clarify, for M2, nodes are expected to provide (and use) information in a timely fashion; this goes for all aspects of block authoring and production. Needless not providing an assurance or guarantee, or not using one which was provided is incorrect behaviour.