Commit Graph

55 Commits

Author SHA1 Message Date
Alex Stokes 5466a4875d
Update 1_shard-data-chains.md
Fix some typos
2019-04-14 09:54:35 +10:00
Danny Ryan 2468f9fc99
Merge pull request #868 from ethereum/vbuterin-patch-7
Separate out get_switchover_epoch
2019-04-11 18:55:39 +10:00
Chih Cheng Liang ffccf742bd
replace signed_root with signing_root 2019-04-08 09:57:04 +08:00
Justin c4321c7cc7
Update 1_shard-data-chains.md 2019-04-02 22:17:55 +04:00
vbuterin bb990e9892
Separate out get_switchover_epoch
So that we can use it in for subkey reveals as well.
2019-03-31 17:49:02 -05:00
vbuterin f5c5c166af Replace custody challenge game with JABS (#812)
See also #818.

===

* Replace custody challenge game with JABS

Replace the existing proof of custody game with a new game ("Justin's Awesome Bit Sum" or JABS) that works as follows:

* The data `D` is split up into 512-byte chunks `D[0] .... D[n-1]`, and use a mix function `mix(subkey, data) -> {0,1}` (currently the first bit of the hash of `subkey+data`). We calculate `M[i] = (mix(D[0]) + ... + mix(D[i-1])) % 2`, and set the custody bit to `M[n-1]`
* Anyone can challenge by providing the full `M` where `M[n-1]` is not equal to the custody bit
* Anyone can respond to a challenge by providing a specific position in `M` along with a branch of the data where `M[i-1] ^ mix(D[i]) != M[i]`

The maximum size of data is now `2**6` epochs *  `2**6` blocks * `2**14` bytes = `2**26` bytes, so assuming 512-byte mix chunks the maximum mix size is `2**17` bits or `2**14` bytes. The average mix size is `2**8` bytes.
2019-03-28 22:56:43 +00:00
Danny Ryan fd6d80fcb6
remove get_split_offset from phase 1 doc 2019-03-21 08:24:26 -06:00
vbuterin 91a0c1ba5f Persistent committee size per slot reduced to max 128 (#734)
* Persistent committee size per slot target 128 max 256

Cuts down the cost of verifying a shard chain and aggregating signatures for a shard chain, and also makes the shard chain signatures more usable by light clients for verification as they would only need to keep track of a max 256-sized committee.
2019-03-17 11:44:19 +00:00
NIC Lin 1a0938169b Fix `get_split_offset` (#790) 2019-03-16 12:45:39 +00:00
Hsiao-Wei Wang cdd59ae230
add return types to phase 1 functions
Co-Authored-By: djrtwo <dannyjryan@gmail.com>
2019-03-13 09:11:35 -06:00
Danny Ryan b40236685c
phase 1 nitpicks 2019-03-13 09:04:12 -06:00
vbuterin cefe9e995b
Proof of custody game, take 2 (#682)
* Proof of custody game, take 2

Unfortunately not simpler than before, but moves challenges outside of the validator records and so keeps validator records constant-size.

* Removed unneeded challenge codes

* Formatting fixes
2019-03-02 20:36:04 -06:00
vbuterin e9c3af5428
Update 1_shard-data-chains.md 2019-02-26 18:00:20 -06:00
vbuterin 05f6f68028
Made developer notice less committal 2019-02-25 16:45:57 -06:00
vbuterin 6a92407702
Developer notice 2019-02-25 04:16:18 -06:00
Danny Ryan b89cd234f0
change shard_block_root to crosslink_data_root throughout 2019-02-22 08:50:03 -07:00
vbuterin 2540f55c13
Updated phase 1: branch and early subkey reveal challenges (#587)
* Updated phase 1: branch challenges

* Removed unnecessary line

* Added early subkey reveal slashing

* Revealing during the active period is still revealing early

* Added....

* Machinery for publishing old subkeys
* Inability to withdraw until you published all subkeys
* After a validator exits the queue there's still a minimum 1-day delay before they can withdraw (in the future this delay will be used as an opportunity to start a PoC challenge game)

* Update 1_shard-data-chains.md

* formatting

* minor edits

* Added masking scheme for reveals

Secure under the aggregate extraction infeasibility assumption described on pages 11-12 of https://crypto.stanford.edu/~dabo/pubs/papers/aggreg.pdf

* Added rewards going to challengers

* Add ToC and reorg the constant tables

* Remove tags

* fix constant formatting

* normalize domain constants in phase 1

* Update 1_shard-data-chains.md

* Update 1_shard-data-chains.md

* Update 1_shard-data-chains.md

* Added transition logic

* Fix ToC

* Fix ToC

* Adjusted for #615

* Added more helpers

* epoch -> slot

* fix some type hints

* clean up `get_attestation_merkle_depth`
2019-02-19 05:26:35 -06:00
Danny Ryan 375659dc6c
name changes in validator doc and phase 1 doc 2019-02-14 16:02:01 -07:00
Hsiao-Wei Wang f7320ec25b
Fix `compute_commitment`
1. Use `+` to concatenate the merkle roots in `hash` function.
2. Fix `pad_to_power_of_2`: padding with `[b'\x00' * SHARD_BLOCK_SIZE]`,
not `[SHARD_BLOCK_SIZE]`.
2019-02-14 00:30:00 +08:00
Hsiao-Wei Wang 41e95cf9ea Refactor `get_persistent_committee` (#604) 2019-02-12 11:11:45 +00:00
vbuterin db4f99d899
Fixed end of code block 2019-02-10 15:47:26 -06:00
Danny Ryan ab44cbe380
Update specs/core/1_shard-data-chains.md
Co-Authored-By: vbuterin <v@buterin.com>
2019-02-10 15:45:57 -06:00
vbuterin 9bba3362eb
Update specs/core/1_shard-data-chains.md 2019-02-10 15:45:47 -06:00
vbuterin 9e66b069b2
Update specs/core/1_shard-data-chains.md 2019-02-10 15:45:16 -06:00
Danny Ryan ad3f43a4a6
Update specs/core/1_shard-data-chains.md
Co-Authored-By: vbuterin <v@buterin.com>
2019-02-10 15:45:06 -06:00
vbuterin 046119fb2e
Update specs/core/1_shard-data-chains.md 2019-02-10 15:44:58 -06:00
Danny Ryan 181dc183b6
Merge branch 'dev' into vbuterin-patch-6 2019-02-10 13:12:01 -07:00
vbuterin 1f97206dcf Updated phase 1: commitments (#579)
See #338 and #529 for discussion.
2019-02-10 16:17:21 +00:00
vbuterin abed5ffdae Updated phase 1: fork choice rule (#586)
Adds the crosslink committee to the fork choice rule. This is useful because it means that even if a proposal committee is byzantine and attempts to prevent a crosslink via a "balance attack" (alternating between chain A and chain B being the canonical chain), the crosslink committee can force the equilibrium to flip to one side or the other.
2019-02-10 16:16:22 +00:00
vbuterin 8097b2373b
Added deduplication 2019-02-10 00:09:34 -06:00
vbuterin 65c5a1a1b7
Fixed get_persistent_committee 2019-02-08 22:10:54 -06:00
Danny Ryan e0d8cf4268
Update specs/core/1_shard-data-chains.md
Co-Authored-By: vbuterin <v@buterin.com>
2019-02-08 22:07:14 -06:00
Danny Ryan 8dd111b7e6
Update specs/core/1_shard-data-chains.md
Co-Authored-By: vbuterin <v@buterin.com>
2019-02-08 22:06:46 -06:00
Danny Ryan ad0ff80be2
Update specs/core/1_shard-data-chains.md
Co-Authored-By: vbuterin <v@buterin.com>
2019-02-08 22:06:03 -06:00
vbuterin e5bd78e5e6
Persistent committee refactors 2019-02-08 04:08:52 -06:00
vbuterin 65ec418213
A few more cleanups 2019-02-08 03:54:02 -06:00
vbuterin 47c396f3f8
Break lets into separate lines 2019-02-08 03:50:00 -06:00
vbuterin 410372ff0e
Proposal committee -> persistent committee 2019-02-08 03:48:58 -06:00
Hsiao-Wei Wang 2cff0e6b7a
Use the new `bytesN` SSZ object
`hash32` -> `bytes32`
['uint384'] -> `bytes96`
2019-02-08 16:46:50 +08:00
Danny Ryan 5a1b2c29f2
Update specs/core/1_shard-data-chains.md
Co-Authored-By: vbuterin <v@buterin.com>
2019-02-08 01:08:30 -06:00
Danny Ryan 5e84d7e3ff
Update specs/core/1_shard-data-chains.md
Co-Authored-By: vbuterin <v@buterin.com>
2019-02-08 01:08:15 -06:00
Danny Ryan bdd7dc106a
Update specs/core/1_shard-data-chains.md
Co-Authored-By: vbuterin <v@buterin.com>
2019-02-08 01:08:01 -06:00
Danny Ryan a1f542b674
Update specs/core/1_shard-data-chains.md
Co-Authored-By: vbuterin <v@buterin.com>
2019-02-08 01:07:46 -06:00
Danny Ryan fb90fd7ac3
Update specs/core/1_shard-data-chains.md
Co-Authored-By: vbuterin <v@buterin.com>
2019-02-08 01:07:31 -06:00
vbuterin 8597cbef1f
Updated phase 1: shard block structure 2019-02-06 20:32:56 -06:00
Hsiao-Wei Wang 23e3f4defe
Rename `bytes1(x)`, `bytes2(x)`... function to `int_to_bytes1(x)`, `int_to_bytes2(x)`... 2019-01-17 16:30:04 +08:00
terence tsao 19b1a31903
Update 1_shard-data-chains.md 2019-01-03 13:57:04 -08:00
Hsiao-Wei Wang e4e923fbba
Adjust `CHUNK_SIZE` 2018-12-20 14:36:33 +08:00
Terence Tsao a13997d738 updated rest of the fields except ancestor_hashes 2018-12-11 12:38:32 -08:00
Terence Tsao e0e2fed1b5 rename hash tree roots as root 2018-12-11 09:53:56 -08:00