Both the binary and json formats adhere to the overarching JAM protocol ASN.1 schema, as well as the specific vectors schema defined for these test cases.
Test vectors invoke the accumulate method of the provided test-service.
The PVM binary, which refers to the compiled version of the test-service, is
generated using the jam-pvm-build
tool.
Due to differences in dependencies and compiler versions, the resulting binary
artifact frequently varies, even when generated from identical source code. As
a result, you can just rely on the code blob embedded in the test vectors, which
is available within the accounts map.
A subset of service activity statistics (
In particular the accumulate-count (a.0), accumulate-gas-used (a.1),
on-transfers-count (t.0) and on-transfers-gas-used (t.1).
The gas cost for a single instruction is set to
All host calls have a gas cost of
-
transfer: Gas cost is set to$10 + \omega_9$ , as specified in the GP. -
log: Gas cost is set to 0, as defined in JIP-1.
- no_available_reports-1
- No reports.
- process_one_immediate_report-1
- Report with no dependencies.
- enqueue_and_unlock_simple-1
- Report with unsatisfied dependency added to the ready-queue.
- enqueue_and_unlock_simple-2
- Report with no dependencies that resolves previous dependency.
- enqueue_and_unlock_with_sr_lookup-1
- Report with unsatisfied segment tree root dependency added to the ready-queue.
- enqueue_and_unlock_with_sr_lookup-2
- Report with no dependencies that resolves previous dependency.
- enqueue_and_unlock_chain-1
- Two reports with unsatisfied dependencies added to the ready-queue.
- enqueue_and_unlock_chain-2
- Two additional reports with unsatisfied dependencies added to the ready-queue.
- enqueue_and_unlock_chain-3
- Two additional reports. One with unsatisfied dependencies, thus added to the ready-queue.
- One report is accumulated and resolves two previously enqueued reports.
- enqueue_and_unlock_chain-4
- Report that resolves all remaining queued dependencies.
- enqueue_and_unlock_chain_wraps-1
- Two reports with unsatisfied dependencies added to the ready-queue.
- enqueue_and_unlock_chain_wraps-2
- Two additional reports, one with no dependencies and thus immediately accumulated.
- The other is pushed to the ready-queue which fills up and wraps around (ready-queue is a ring buffer).
- enqueue_and_unlock_chain_wraps-3
- Two additional reports with unsatisfied dependencies pushed to the ready-queue.
- enqueue_and_unlock_chain_wraps-4
- Two additional reports, one with no dependencies and thus immediately accumulated.
- Three old entries in the ready-queue are removed.
- enqueue_and_unlock_chain_wraps-5
- Report with no dependencies resolves all previous enqueued reports.
- enqueue_self_referential-1
- Report with direct dependency on itself.
- This makes the report stale, but pushed to the ready-queue anyway.
- enqueue_self_referential-2
- Two reports with indirect circular dependency.
- This makes the reports stale, but pushed to the ready-queue anyway.
- enqueue_self_referential-3
- Two reports. First depends on second, which depends on unseen report.
- enqueue_self_referential-4
- New report creates a cycle with the previously queued reports.
- This makes the reports stale, but pushed to the ready-queue anyway.
- accumulate_ready_queued_reports-1
- There are some reports in the ready-queue ready to be accumulated.
- Even though we don't supply any new available work report these are processed.
- This condition may result because of gas exhausition during previous block execution.
- queues_are_shifted-1
- Check that ready-queue and accumulated-reports queues are shifted.
- A new available report is supplied.
- queues_are_shifted-2
- Check that ready-queue and accumulated-reports queues are shifted.
- No new report is supplied.
- ready_queue_editing-1
- Two reports with unsatisfied dependencies added to the ready-queue.
- ready_queue_editing-2
- Two reports, one with unsatisfied dependency added to the ready-queue.
- One accumulated. Ready queue items dependencies are edited.
- ready_queue_editing-3
- One report unlocks reports in the ready-queue.
- transfer_for_ejected_service-1
- A transfer is made to a service that gets ejected in the same round.
- work_for_ejected_service-1
- A work report X with with unsatisfied dependency Y is queued.
- work_for_ejected_service-2
- A work report Z ejects the service account targeted by work report X
- work_for_ejected_service-3
- Work report Y is executed and unlocks work report X.
- Work report X is not actually executed because account can't be loaded.
Currently, the same test cases as tiny vectors but at a larger scale.