I am working on a specification-derived RandomX v1.2.2 conformance implementation using only the public algorithm documents, not implementation or miner source.
Sections 3.5, 6.3, and 7.2 of doc/specs.md define BlakeGenerator, the decoder groups and instruction constraints, port preference, broad operand rules, and the key-to-eight-program relationship. However, I could not derive one deterministic seed-to-SuperscalarHash program sequence from the document alone.
Could the project publish normative pseudocode or a small specification-level vector that clarifies these points?
- BlakeGenerator consumption: exact byte/word mapping, range reduction, and consumption order for random decoder-group selection, instruction selection, operands, immediates, rotations, and forced decoder groups.
- Failed selections and retries: which stage is retried, which state is retained, whether additional generator values are consumed, and the exact transition that enables
allowChainedMul.
- Dependency/readiness state: initial register state and exact updates to availability latency, last operation group, and operation parameter after each accepted instruction or eliminated macro-op.
- Longest dependency register: the chain metric and deterministic tie-breaking rule.
- Continuation and termination edges: handling of a partially filled decode group, whether the instruction reaching the target latency is included, and behavior at the instruction-count limit.
A compact vector would be sufficient if it binds a stated key (the zero-length key would be convenient) to:
- the ordered normalized fields for at least the first generated SuperscalarHash program;
- its selected longest-dependency register; and
- optionally BlakeGenerator state checkpoints at decoder-group boundaries.
Ideally this would be published as documentation for the v1.2.2 algorithm or another version-pinned normative artifact, rather than as a reference to implementation source.
The goal is to validate authenticated key-to-program generation, Cache/program same-key binding, and eventually a full-default Dataset vector without translating the reference implementation. Thanks.
I am working on a specification-derived RandomX v1.2.2 conformance implementation using only the public algorithm documents, not implementation or miner source.
Sections 3.5, 6.3, and 7.2 of
doc/specs.mddefine BlakeGenerator, the decoder groups and instruction constraints, port preference, broad operand rules, and the key-to-eight-program relationship. However, I could not derive one deterministic seed-to-SuperscalarHash program sequence from the document alone.Could the project publish normative pseudocode or a small specification-level vector that clarifies these points?
allowChainedMul.A compact vector would be sufficient if it binds a stated key (the zero-length key would be convenient) to:
Ideally this would be published as documentation for the v1.2.2 algorithm or another version-pinned normative artifact, rather than as a reference to implementation source.
The goal is to validate authenticated key-to-program generation, Cache/program same-key binding, and eventually a full-default Dataset vector without translating the reference implementation. Thanks.