Commit Graph

162 Commits

Author SHA1 Message Date
Justin 5c5f15c82c
Rewrite SSZ spec
* Implement tuples and a chunk-size reduction to 32 bytes (see #665 and #679)
* Simplify presentation where appropriate. For example, deserialisation is implicit from serialisation (similar to `bls_sign` being implicit from `bls_verify`) and is left as an implementation exercise.
* Dramatically reduce spec size and hopefully improve readability.
2019-02-27 11:54:23 +01:00
sigmoid 00aa553fee updated SSZ implementation list (#653)
* updated SSZ implementation list

Signed-off-by: sigmoid <alphabet@hotmail.co.kr>

* Update specs/simple-serialize.md

Co-Authored-By: NAKsir-melody <alphabet@hotmail.co.kr>
2019-02-20 00:47:15 +08:00
vbuterin 59ade930d6 Signature hashing proposal (#625)
If this is accepted, then we can replace all uses of signing in the protocol, which are currently done in a relatively inconsistent way (see proposer signatures, attester signatures, shard proposer signatures, exit message signatures.....) could be unified.
2019-02-16 21:44:27 +00:00
Justin 3459515c2c
Merkleise SSZ container elements (#595)
Reasons to use `merkle_hash` instead of  `hash` for containers:

1) **Smaller witnesses**: `BeaconState` is a somewhat wide container (26 fields as of now, likely 30+ in phase 2). With concatenation and plain concatenation the size of the Merkle witnesses for the top level are ~32 bytes per field element.
2) **Faster incremental hashing**
3) **Consistency**: Consistent with `merkle_hash` for lists/vectors.
2019-02-12 21:57:54 +00:00
Justin 9a4f4d5344
Fix SSZ merkleisation bug (#602) 2019-02-12 11:12:29 +00:00
Justin 0069241b9c
Alias `bytes` to `List[bytes1]` 2019-02-11 14:49:11 +00:00
Jordan Andrews afca1e2127 Add C# implementation 2019-02-11 22:01:05 +11:00
vbuterin 2ac420c5ea
Merge pull request #538 from ethereum/vbuterin-patch-1
SSZ list Merkle hashing change
2019-02-03 14:37:30 -06:00
vbuterin 197fa18893
Zpad is already in #543 2019-02-03 14:26:07 -06:00
Hsiao-Wei Wang dd197e46a6
Fix `zpad` 2019-02-01 22:31:00 +08:00
vbuterin 8ffd9adcaf
Hash_tree_root -> hash_tree_root_internal
Clarifies the distinction between "internal" hash roots (may be < 32 bytes for trivial objects) and "external" ones (zpadded to 32).
2019-01-31 18:03:23 -06:00
Hsiao-Wei Wang acb432ef3a
Update specs/simple-serialize.md
Co-Authored-By: vbuterin <v@buterin.com>
2019-01-31 17:49:51 -06:00
Hsiao-Wei Wang 9271e6e318
Update specs/simple-serialize.md
Co-Authored-By: vbuterin <v@buterin.com>
2019-01-31 17:47:09 -06:00
vbuterin 5488e7b6a4
SSZ list Merkle hashing change
The current spec is arguably inconsistent, in that if a set of N values gets chunked into M chunks where M is not an exact power of 2, the chunks between M and next_power_of_2(M) are filled with SSZ_CHUNK_SIZE zero bytes each, but the last chunk is not padded, and could be arbitrarily short (eg. if the values are 4 bytes and there are 257 of them, then that gets serialized into eight chunks chunks where the first four are 64 values each, the fifth is 4 bytes corresponding to the last value, and the last three chunks are SSZ_CHUNK_SIZE zero bytes). This PR fills every chunk up to exactly SSZ_CHUNK_SIZE bytes for consistency.
2019-01-31 10:12:43 -06:00
jannikluhn 4bedb16e21
Merge branch 'master' into ssz-var-length-list 2019-01-28 10:53:04 +01:00
Chih Cheng Liang 45c064a2d6
remove all unnecessary newline 2019-01-24 16:24:05 +08:00
Chih Cheng Liang 5dfa4e005b
rename byte_order to byteorder 2019-01-24 16:12:43 +08:00
Chih Cheng Liang d41215aeec
rename Terminology to Variables and Functions 2019-01-24 16:11:45 +08:00
Chih Cheng Liang 14432e91a3
add code block to variable in the table 2019-01-24 16:11:04 +08:00
Chih Cheng Liang 88ffae6335
define deserialized_object and new_index 2019-01-24 16:08:56 +08:00
Chih Cheng Liang c2112f0bfc
PR feedback: remove unnecessary newline 2019-01-24 15:58:34 +08:00
Hsiao-Wei Wang 5bb02a9d09
Update specs/simple-serialize.md
Co-Authored-By: ChihChengLiang <chihchengliang@gmail.com>
2019-01-24 15:53:52 +08:00
Chih Cheng Liang 6ac5608d0b
Explicit check bytes end 2019-01-23 20:14:25 +08:00
Jannik Luhn f8670e8069 SSZ: Remove note on efficiency 2019-01-22 17:18:21 +01:00
Jannik Luhn a5519a7d3b SSZ: List serialization with variable element size
Fix #232
2019-01-22 17:14:25 +01:00
Hsiao-Wei Wang 13dc373224
Update specs/simple-serialize.md
Co-Authored-By: decanus <dean@tokenate.io>
2019-01-17 17:51:34 +01:00
Dean Eigenmann f485259d74
Update simple-serialize.md 2019-01-17 17:48:07 +01:00
Dean Eigenmann 7603d1d5c9
Update simple-serialize.md 2019-01-17 17:47:07 +01:00
Jacek Sieka a80f2717f3 ssz: switch integer encoding to little endian (#139) 2019-01-17 15:34:07 +00:00
Hsiao-Wei Wang 8d2f4a1705 SSZ: Add `bytesN`, remove `hashN` and `Address` (#455) 2019-01-17 11:02:57 +00:00
Danny Ryan 58bb609780
Merge pull request #400 from wemeetagain/ssz/fix-deserialize-container-variable-names
Fix minor variable name mismatch
2019-01-07 08:43:27 -07:00
Danny Ryan 92747579cd
Merge pull request #398 from wemeetagain/ssz/fix-deserialize-uint
Fix deserialize uint bounds logic
2019-01-07 08:13:56 -07:00
Danny Ryan 31d4ca594d
conform to standard 2019-01-07 08:13:26 -07:00
Hsiao-Wei Wang 6fc131433c
Update specs/simple-serialize.md
Co-Authored-By: wemeetagain <caymannava@gmail.com>
2019-01-07 00:54:40 -06:00
Cayman 140ee1ade9
Fix hash function link 2019-01-06 23:10:33 -06:00
Cayman cebbe7b7c5
Fix minor variable name mismatch 2019-01-06 13:05:27 -06:00
Cayman fb17be0e9b
Fix deserialize uint bounds logic
Array accesses should be relative to uint byte length, not bit length.
2019-01-04 11:14:27 -06:00
Alex Stokes d49b6e5087 Fix typo with missing bracket (#379) 2018-12-31 23:35:09 +00:00
terence tsao f21da324ef
updated SSZ implementation list 2018-12-22 15:13:54 -08:00
Vitalik Buterin a9328157a8
Don't lexicographically sort 2018-12-19 13:48:04 -05:00
Terence Tsao e0e2fed1b5 rename hash tree roots as root 2018-12-11 09:53:56 -08:00
Danny Ryan 49f3cfebdf
add link to appendix A 2018-12-10 16:22:42 -06:00
Alex Stokes ed3611904d
update reference to hash function 2018-12-10 13:32:16 -08:00
Nishant Das 88ef7b8186 typo (#270) 2018-12-10 08:28:11 +00:00
Chris Leishman eefaaf5ac3 Clarify TreeHash treatment of integers > 256bit
Also clarify treatment of hashes < 32bytes
2018-12-07 16:39:52 -08:00
Antoine Toulme ff2551e754 Add Java implementation of SSZ 2018-12-02 21:22:51 -08:00
vbuterin 05be2f05e3
tree_hash -> SSZTreeHash 2018-11-27 18:54:43 -05:00
Hsiao-Wei Wang b59dda3409
`CHUNK_SIZE` -> `SSZ_CHUNK_SIZE` 2018-11-28 00:12:28 +08:00
Hsiao-Wei Wang 4c991bf3ca
ssz proofread 2018-11-27 15:45:04 +08:00
Hsiao-Wei Wang f1b78cf01e ss: Add CC0 copyright declaration (#155) 2018-11-22 17:28:24 +09:00
Hsiao-Wei Wang a217e9b32c
tree_ssz: fix extra parens
Co-Authored-By: arnetheduck <arnetheduck@gmail.com>
2018-11-20 08:12:56 -06:00
Jacek Sieka ea7ad28298
simplify merkle tree chunking
* pack small items tightly to fit more items in single chunk, decreasing
the number of hash operations needed
* remove chunk padding - hash algorithm will pad to its own block size
anyway
* express data length in number of items instead of binary bytes at leaf
level (equivalent)
2018-11-17 07:59:11 -06:00
vbuterin 707adddc92 Added tree hashing algorithm (#120)
* Added tree hashing algorithm

* Update simple-serialize.md

* add one more ref to tree_hash

* Add the zero-item special case

* list_to_glob to handle empty list
2018-11-15 13:12:34 +00:00
Danny Ryan b76275482d
extend ssz hash type to arbitrary lengths (#116)
* refactor hash in simple serialize to support arbitrary byte length

* make comment clearer

* add deserialization of hashN

* formatting

* remove specific hash examples
2018-11-09 11:39:03 +01:00
Danny Ryan 1d817608fb
update deserialize arg ordering in container type 2018-11-05 14:04:40 +01:00
Alex Stokes 56066260ad formatting 2018-11-04 19:13:37 +03:00
Alex Stokes cf70ed0b7c Adds specification for {de,}serializing container types 2018-11-04 19:13:37 +03:00
mratsim 0064043e14 Mention that lists are of elements of homegeneous type 2018-10-27 13:36:10 +02:00
Mikerah cf28f1a784
Adding first completed version of ssz in JS to list of ssz implementations 2018-10-14 16:29:47 -04:00
vbuterin 1c25917622
Add bool to simple serialize 2018-10-11 09:51:35 -04:00
Yutaro Mori b62c8c9db1
Fix lighthouse link 2018-10-10 16:14:53 +09:00
Justin 538e4e1f88
Rename simpleserialize.md to simple-serialize.md
For consistency with beacon-chain.md
2018-10-03 21:35:47 +01:00