diff --git a/specs/test_formats/ssz_static/core.md b/specs/test_formats/ssz_static/core.md index 8a5067f03..059f11027 100644 --- a/specs/test_formats/ssz_static/core.md +++ b/specs/test_formats/ssz_static/core.md @@ -13,6 +13,7 @@ type_name: string -- string, object name, formatted as in spec. E.g. "BeaconBlo value: dynamic -- the YAML-encoded value, of the type specified by type_name. serialized: bytes -- string, SSZ-serialized data, hex encoded, with prefix 0x root: bytes32 -- string, hash-tree-root of the value, hex encoded, with prefix 0x +signing_root: bytes32 -- string, signing-root of the value, hex encoded, with prefix 0x. Optional, present if type contains ``signature`` field ``` ## Condition @@ -20,4 +21,12 @@ root: bytes32 -- string, hash-tree-root of the value, hex encoded, with pre A test-runner can implement the following assertions: - Serialization: After parsing the `value`, SSZ-serialize it: the output should match `serialized` - Hash-tree-root: After parsing the `value`, Hash-tree-root it: the output should match `root` + - Optionally also check signing-root, if present. - Deserialization: SSZ-deserialize the `serialized` value, and see if it matches the parsed `value` + +## References + + +**`serialized`**: [SSZ serialization](https://github.com/ethereum/eth2.0-specs/blob/dev/specs/simple-serialize.md#serialization) +**`root`** - [hash_tree_root](https://github.com/ethereum/eth2.0-specs/blob/dev/specs/simple-serialize.md#merkleization) function +**`signing_root`** - [signing_root](https://github.com/ethereum/eth2.0-specs/blob/dev/specs/simple-serialize.md#self-signed-containers) function diff --git a/test_generators/ssz_static/README.md b/test_generators/ssz_static/README.md index 014c71517..d73556e1b 100644 --- a/test_generators/ssz_static/README.md +++ b/test_generators/ssz_static/README.md @@ -2,3 +2,5 @@ The purpose of this test-generator is to provide test-vectors for the most important applications of SSZ: the serialization and hashing of ETH 2.0 data types + +Test-format documentation can be found [here](../../specs/test_formats/ssz_static/README.md). diff --git a/test_generators/ssz_static/main.py b/test_generators/ssz_static/main.py index 010ca2735..1234294db 100644 --- a/test_generators/ssz_static/main.py +++ b/test_generators/ssz_static/main.py @@ -2,7 +2,11 @@ from random import Random from eth2spec.debug import random_value, encode from eth2spec.phase0 import spec -from eth2spec.utils.minimal_ssz import hash_tree_root, serialize +from eth2spec.utils.minimal_ssz import ( + hash_tree_root, + signing_root, + serialize, +) from eth_utils import ( to_tuple, to_dict ) @@ -21,6 +25,8 @@ def create_test_case(rng: Random, name: str, mode: random_value.RandomizationMod yield "value", encode.encode(value, typ) yield "serialized", '0x' + serialize(value).hex() yield "root", '0x' + hash_tree_root(value).hex() + if hasattr(value, "signature"): + yield "signing_root", '0x' + signing_root(value).hex() @to_tuple