Merge pull request #966 from zilm13/test/signing-root
Added signing_root to ssz_static tests
This commit is contained in:
commit
87cab79d18
|
@ -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.
|
value: dynamic -- the YAML-encoded value, of the type specified by type_name.
|
||||||
serialized: bytes -- string, SSZ-serialized data, hex encoded, with prefix 0x
|
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
|
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
|
## 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:
|
A test-runner can implement the following assertions:
|
||||||
- Serialization: After parsing the `value`, SSZ-serialize it: the output should match `serialized`
|
- 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`
|
- 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`
|
- 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
|
||||||
|
|
|
@ -2,3 +2,5 @@
|
||||||
|
|
||||||
The purpose of this test-generator is to provide test-vectors for the most important applications of SSZ:
|
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
|
the serialization and hashing of ETH 2.0 data types
|
||||||
|
|
||||||
|
Test-format documentation can be found [here](../../specs/test_formats/ssz_static/README.md).
|
||||||
|
|
|
@ -2,7 +2,11 @@ from random import Random
|
||||||
|
|
||||||
from eth2spec.debug import random_value, encode
|
from eth2spec.debug import random_value, encode
|
||||||
from eth2spec.phase0 import spec
|
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 (
|
from eth_utils import (
|
||||||
to_tuple, to_dict
|
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 "value", encode.encode(value, typ)
|
||||||
yield "serialized", '0x' + serialize(value).hex()
|
yield "serialized", '0x' + serialize(value).hex()
|
||||||
yield "root", '0x' + hash_tree_root(value).hex()
|
yield "root", '0x' + hash_tree_root(value).hex()
|
||||||
|
if hasattr(value, "signature"):
|
||||||
|
yield "signing_root", '0x' + signing_root(value).hex()
|
||||||
|
|
||||||
|
|
||||||
@to_tuple
|
@to_tuple
|
||||||
|
|
Loading…
Reference in New Issue