Description
IMPORTER: State-transitioning conformance tests pass and can import blocks.
- Test Vectors: Data designed to rigorously exercise specific subsystems during the development phase.
- Conformance Tool: A tool used to verify an implementation's capability to meet M1 requirements.
Test Vectors
Codec
- Vectors for block related structures Codec vectors update #19
STF
Super PR #28
- Section 6 - Block Production and Chain Growth
- Section 7 - Recent History
- Section 8 - Authorization
- Section 10 - Disputes, Verdicts and Judgements
- Section 11 - Reporting and Assurance
- Section 12
- Accumulation
- Preimages
- Section 13 - Activity Statistics
Other
- Polka-VM: Add initial PVM test vectors #3
- Fisher-Yates shuffle: Adds test vectors for the Fisher-Yates Shuffling function. #17
- Erasure coding: erasure coding test vectors #4
Conformance Tool
Upon completion of the M1 Test Vectors, the plan is to provide a procedural conformance testing tool.
This tool is intended to determine whether an implementation adheres to the specified expectations concerning M1.
It will engage with a JAM process, which embodies a JAM implementation capable of fulfilling M1 requirements. This interaction will occur through a minimal protocol, utilizing simple I/O mechanisms, such as pipes or networking.
Starting from a well-defined genesis state, the tool will deliver a procedurally generated stream of blocks to the implementation and then read back the expected state root hash.
The test will be reproducible using a seed provided to the conformance testing tool at startup.
In the event of a failure, the tool will output:
- The prior state (i.e., the most recent state read from the implementation under test)
- The input block that caused the issue
When relevant, the vector responsible for triggering the failure will be added to the STF vector set to target the specific subsystem associated with the fault.
See also: #7
🎁 While the vector PRs are under review, you may use the following repository for a single branch containing all the provided test vectors: https://github.com/davxy/jam-test-vectors.