Commit Graph

1094 Commits

Author SHA1 Message Date
Danny Ryan aa29b9a347
add missing state param to calls to get_crosslink_committees_at_slots 2019-01-18 09:55:32 -06:00
Danny Ryan b493f850fc
cleanup crosslink committees iters 2019-01-18 09:40:15 -06:00
Mikhail Kalinin 11009af16e
Adds a note about Python code exceptions 2019-01-18 18:01:43 +06:00
Alex Stokes a7307b9236 Sign full `Exit` message so that a validator can prevent tampering (#468) 2019-01-18 10:10:23 +00:00
Hsiao-Wei Wang 690cf4b787
PR feedback 2019-01-18 16:21:58 +08:00
Danny Ryan c8a42c4dcc
Merge pull request #429 from Nashatyrev/master
Potential UInt underflow in get_shard_committees_at_slot
2019-01-17 22:01:46 -06:00
Danny Ryan 421ef9e08d
fix bad link in v guide 2019-01-17 21:29:38 -06:00
Danny Ryan b8f48d20a5
add follow distance constant and extra details around time to being added to the validator registry 2019-01-17 21:28:14 -06:00
Danny Ryan 90273cf46d
Merge pull request #469 from decanus/patch-10
`a.beacon_block_root` -> `a.data.beacon_block_root`
2019-01-17 20:25:50 -06:00
Danny Ryan 166a1d0638
Merge pull request #467 from decanus/patch-9
Adds Data field
2019-01-17 20:25:17 -06:00
Dean Eigenmann 15fdea5b1b
`a.beacon_block_root` -> `a.data.beacon_block_root` 2019-01-18 02:36:37 +01:00
Dean Eigenmann 96aac450b5
Update 0_beacon-chain.md 2019-01-18 02:22:12 +01:00
Dean Eigenmann c8597a0d49
Update 0_beacon-chain.md 2019-01-18 02:11:54 +01:00
Hsiao-Wei Wang 063f658697
`bytes96` for Signature 2019-01-18 03:19:38 +08:00
Danny Ryan 91eba49eeb fix slot for domain in verify_slashable_vote_data (#465) 2019-01-17 19:00:29 +00:00
Danny Ryan 8b64832a02
ensure inclusion distance is for lower applicable attestation 2019-01-17 12:07:41 -06:00
Danny Ryan 7fc5238b8f
update deposit root section to utilize eth1data 2019-01-17 11:38:56 -06:00
Danny Ryan 8cdb8d9334
Merge branch 'master' into honest-validator 2019-01-17 11:00:51 -06: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 df83dc7bf5
Merge branch 'master' into bytes32 2019-01-17 19:49:10 +08:00
vbuterin 7686702c29 Vote for block hash along with deposit root (#448) 2019-01-17 11:43:47 +00:00
Hsiao-Wei Wang 18b97cf922
pubkey: Bytes48 2019-01-17 19:40:26 +08:00
terence tsao 7439939e29 Misc Renamings (#450)
- `participation_bitfield` -> `aggregation_bitfield`
- `validator_registry_latest_change_slot` -> `validator_registry_update_slot`
- `latest_penalized_exit_balances` -> `latest_penalized_balances`
- `fork_data` -> `fork`
    - `pre_fork_version` -> `previous_version`
    - `pork_fork_version` -> `current_version`
    - `fork_slot` -> `slot`
2019-01-17 11:18:30 +00:00
Hsiao-Wei Wang 8d2f4a1705 SSZ: Add `bytesN`, remove `hashN` and `Address` (#455) 2019-01-17 11:02:57 +00:00
JinHwan 87fb35d244 Remove Record suffix (#434) 2019-01-17 11:01:13 +00:00
terence tsao 812b385f64 Normalize ETH units to Gwei (#420) 2019-01-17 10:55:05 +00:00
Hsiao-Wei Wang ba7bc29ce9
Fix `bls_aggregate_signatures` 2019-01-17 17:36:31 +08:00
Hsiao-Wei Wang 209220787b
Deal with BLS APIs, will define `Bytes48` in the type hinting cleanup 2019-01-17 17:29:28 +08:00
Hsiao-Wei Wang 713af88c43
`proof_of_possession: Signature` 2019-01-17 17:03:20 +08:00
Hsiao-Wei Wang 725199593b
For pubkey type hinting, use `bytes` for now. 2019-01-17 17:00:39 +08:00
Hsiao-Wei Wang 0b10b0444a
Replace `Hash32` with `Bytes32` 2019-01-17 16:56:33 +08:00
Hsiao-Wei Wang 61f5d99dee
Fix `Deposit.branch` type notation 2019-01-17 16:54:38 +08:00
Hsiao-Wei Wang 14891047d7
Update `EMPTY_SIGNATURE` 2019-01-17 16:52:56 +08:00
Hsiao-Wei Wang a588643661
Replace `uint384` with `bytes48` for pubkey 2019-01-17 16:51:50 +08:00
Hsiao-Wei Wang 7005e5fd55
Replace `['uint384']` with `Signature` 2019-01-17 16:49:08 +08:00
Hsiao-Wei Wang b515683e39
Replace `'[uint384]'` with Signature 2019-01-17 16:47:27 +08:00
Hsiao-Wei Wang 8d5fd404a7
Add `Signature` SSZ obj 2019-01-17 16:42:46 +08:00
Hsiao-Wei Wang accd3cfd01
Replace `hash32` with `bytes32` 2019-01-17 16:33:59 +08: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
Anton Nashatyrev d29cbd6535 Merge remote-tracking branch 'upstream/master' 2019-01-17 11:00:19 +03:00
Dean Eigenmann 509870d138
Update 0_beacon-chain.md 2019-01-17 02:18:30 +01:00
Dean Eigenmann 412d295da3
Update 0_beacon-chain.md 2019-01-16 22:28:15 +01:00
Danny Ryan 40d4ec33cb
add basics for all block operations 2019-01-16 15:24:59 -06:00
Dean Eigenmann b74f518e4b
Fix typo `validators` -> `validator_registry` 2019-01-16 22:01:32 +01:00
Danny Ryan 2881f56c08
add pr feedback 2019-01-16 14:44:58 -06:00
Dean Eigenmann 60bbe7addc
Update 0_beacon-chain.md 2019-01-16 21:33:36 +01:00
Dean Eigenmann 5d542576d9
Update 0_beacon-chain.md 2019-01-16 21:31:33 +01:00
Danny Ryan a8716436a5
Merge branch 'master' into honest-validator 2019-01-16 13:46:06 -06:00
Danny Ryan 2c78645fc6
Merge pull request #452 from GregTheGreek/master
fix typo with get_attestation_participants
2019-01-16 13:41:03 -06:00
Hsiao-Wei Wang e5ea67f4ac
Update specs/core/0_beacon-chain.md
Co-Authored-By: GregTheGreek <gregorymarkou@gmail.com>
2019-01-16 14:39:00 -05:00
Dean Eigenmann 3b1ccae58c
Update 0_beacon-chain.md 2019-01-16 20:35:01 +01:00
Gregory Markou 2c25ed9062 fix typo with get_attestation_participants 2019-01-16 14:05:53 -05:00
Danny Ryan 85d6082990
Merge pull request #443 from terenc3t/patch-35
Replace shard_committee with crosslink_committee
2019-01-16 12:05:43 -06:00
Dustin Brody 5058e38b23 fix ValidatorRegistryDeltaBlock field naming/reference inconsistency 2019-01-15 20:26:53 -08:00
Hsiao-Wei Wang 0515adff44
Merge pull request #438 from mkalinin/fix-proposer-slashings
Fix one of proposer slashing verifications
2019-01-15 20:53:37 +08:00
Anton Nashatyrev 5321fee1cd Merge with spec update 2019-01-15 11:32:19 +03:00
Danny Ryan 8173854227
Update specs/core/0_beacon-chain.md
Co-Authored-By: mkalinin <noblesse.knight@gmail.com>
2019-01-15 12:02:17 +06:00
terence tsao aa990eb10e
update `shard committees` in get_shuffling 2019-01-14 21:07:36 -08:00
Hsiao-Wei Wang 134ef6d252
Update specs/core/0_beacon-chain.md
Co-Authored-By: terenc3t <terence@prysmaticlabs.com>
2019-01-14 20:44:30 -08:00
Danny Ryan 6b72ae3a3b
fill in missing links in phase 0 validator doc 2019-01-14 22:36:33 -06:00
Danny Ryan d29ce725db
add deposit root logic in block proposals 2019-01-14 21:50:34 -06:00
Hsiao-Wei Wang 1070ba2d11
Add ToC 2019-01-15 11:33:46 +08:00
Danny Ryan 1d44023731
initial pass on phase 0 validator doc 2019-01-14 21:25:23 -06:00
terence tsao bd506e1222
Update 0_beacon-chain.md 2019-01-14 16:06:33 -08:00
Danny Ryan 6f539fb1af minor fix to bls_verify param names in "proposer signature" (#441) 2019-01-14 22:23:57 +00:00
Hsiao-Wei Wang 1cd71b9d58
Fix some naming inconsistency and typos 2019-01-14 21:54:29 +08:00
Mikhail Kalinin 61cf6209d8 Fix one of proposer slashing verifications 2019-01-14 15:31:02 +06:00
Hsiao-Wei Wang 43d0142da9
Merge pull request #414 from benjaminion/vyper-merkle-branch
Add getter to Vyper contract for Merkle branches
2019-01-14 14:49:40 +08:00
terence tsao 4d1aadcc5c
Update 0_beacon-chain.md 2019-01-13 21:11:44 -08:00
Danny Ryan 891c87eca2
Merge pull request #408 from ethereum/vitalik91
Remove shard committees from the state
2019-01-13 22:55:08 -06:00
Danny Ryan bbf6b5c267
Merge pull request #419 from jimpo/bls-correction
Correct references to signature scheme in beacon spec.
2019-01-13 16:05:53 -06:00
terence tsao 2646ca1337
Update 0_beacon-chain.md 2019-01-13 08:55:48 -08:00
Danny Ryan 2b66811a04
address terence pr feedback 2019-01-11 11:35:18 -06:00
Danny Ryan 0a7e72f641
Merge branch 'master' into vitalik91 2019-01-11 11:33:38 -06:00
Justin 271e7b5cb8
Update 0_beacon-chain.md 2019-01-11 16:23:10 +00:00
Justin 7a0d45279c
Update 0_beacon-chain.md 2019-01-11 15:24:29 +00:00
Stan Drozd d9c6ad9008 get_attestation_participants: inline ceil_div8() (#430) 2019-01-11 14:37:38 +00:00
Anton Nashatyrev 8ebc4dece8 Local var should stay uint 2019-01-11 15:07:18 +03:00
Justin c8bd90aba3
Update 0_beacon-chain.md 2019-01-11 11:53:12 +00:00
Justin dd532d7887
Update 0_beacon-chain.md
* Avoid abbreviations
* Use `branch` as a more suggestive variable name than `ret`
* Cleanup spacing after comma
* Avoid having two index variables (`index` and `idx`)—Does this break anything?
2019-01-11 11:52:04 +00:00
Ben Edgington b75ac05ab6 Fix typo seed -> randao_mix 2019-01-11 11:05:43 +00:00
vbuterin 459734cb9e
get_randao_mix slot boundary fix 2019-01-10 22:34:13 -06:00
vbuterin 70c0cc43c5
Fixes as per Danny and Terence 2019-01-10 22:33:22 -06:00
Danny Ryan eec8b4ac44
Update specs/core/0_beacon-chain.md
Co-Authored-By: vbuterin <v@buterin.com>
2019-01-10 21:02:51 -06:00
Danny Ryan 7736843917
Update specs/core/0_beacon-chain.md
Co-Authored-By: vbuterin <v@buterin.com>
2019-01-10 21:01:30 -06:00
Danny Ryan 648c35dc3d
Update specs/core/0_beacon-chain.md
Co-Authored-By: vbuterin <v@buterin.com>
2019-01-10 21:01:05 -06:00
Danny Ryan a0a96c7e7c
Update specs/core/0_beacon-chain.md
Co-Authored-By: vbuterin <v@buterin.com>
2019-01-10 21:00:59 -06:00
jonny rhea d2eca73482 added assertion that n >= 0 2019-01-10 18:09:58 -06:00
Alex Stokes c141d90f0f
Fix typo with initial generation of `latest_penalized_exit_balances`
The spec as written is not valid python -- the generator of the list
comprehension must be iterable.

It looks like the author simply meant to `range` over the intended length.

This commit fixes the missing `range` operator
2019-01-10 15:41:15 -06:00
Ben Edgington 78fcda7ce0 Use bitwise xor to simplify merkle branch getter 2019-01-10 20:45:39 +00:00
Danny Ryan ab7f9d8f54
Merge pull request #422 from ethereum/JustinDrake-patch-1
Fix #320
2019-01-10 12:27:53 -06:00
Danny Ryan 5b1f352414
Merge pull request #388 from ralexstokes/add-missing-property-to-merkle-verification
Fixes a few bugs with deposit verification.
2019-01-10 12:15:12 -06:00
Danny Ryan 69cd904782
Merge branch 'master' into vitalik91 2019-01-10 11:29:11 -06:00
Vitalik Buterin e2886bf3d3 prev -> previous, cur -> current, get_shard_committee_at_slot rework, get_randao_mix rework 2019-01-10 11:01:19 -06:00
terence tsao c589f8273b
Update 0_beacon-chain.md 2019-01-10 08:19:56 -08:00
Justin 3476b02ffa
Fix #320
* Avoids unnecessary hashing of `message`
* Makes the ordering of arguments (`message` followed by `domain`) consistent with usage order
2019-01-10 11:52:21 +00:00
Alex Stokes 4cf06d908a
Truncate the index into the Merkle tree to bytes[8]
The beacon chain expects a `uint64` in part to avoid big-int computation.
This commit updates the `Deposit` log so that it broadcasts data of the
appropriate size.
2019-01-09 17:18:15 -06:00
Alex Stokes d62834654f
Broadcast `merkle_tree_index` in lieu of the deposit count 2019-01-09 17:02:19 -06:00
Alex Stokes 7a6854aab9
Fix variable name that was lost in botched rebase 2019-01-09 16:52:43 -06:00
Jim Posen b25154c774 Correct references to sig scheme in beacon spec.
BLS is the name of the signature scheme and BLS12-381 is the name of the
curve that it is defined over. So it is more correct to talk about a
"BLS signature/pubkey" rather than a "BLS12-381 signature/pubkey".
2019-01-09 12:47:19 -08:00
Alex Stokes f49f7eddf9
Use the correct name for the `amount` field 2019-01-09 14:44:06 -06:00
Alex Stokes c5de2fe710
Add missing deposit root when performing Merkle verification 2019-01-09 14:37:51 -06:00
Alex Stokes 6f5a865508
Reorder type so the ssz serialization matches other uses
There is an order based on the Vyper deposit contract which should be maintained
here. There is also a reference to it when processing `Deposit` messages.

This commit corrects the order here so all serializations will match.
2019-01-09 14:35:26 -06:00
Justin 4ea430207b
Update 0_beacon-chain.md 2019-01-09 14:12:47 -06:00
Alex Stokes dff84c00b0
Fixes bugs with description of deposit verification.
1. The order of the `deposit_data` serialization does not match the current
Vyper contract. The description now matches that serialization.

2. The `deposit.merkle_tree_index` was not being used (at least explicitly) so
the text now reflects which inputs are to be used for which parameters in the
pseudocode spec that follows.

3. There seems to be a bug where we want the initial leaf to be the `hash` of
the `DepositData`, not the data itself. The text now reflects this requirement.
2019-01-09 14:08:24 -06:00
Alex Stokes 5f19622f86
Add clarifying comment about where this index is coming from 2019-01-09 14:06:45 -06:00
Hsiao-Wei Wang 0b16430cf5
Update specs/core/0_beacon-chain.md
Co-Authored-By: vbuterin <v@buterin.com>
2019-01-09 11:00:13 -06:00
Hsiao-Wei Wang 608ec2452c
Update specs/core/0_beacon-chain.md
Co-Authored-By: vbuterin <v@buterin.com>
2019-01-09 10:59:56 -06:00
Hsiao-Wei Wang 83d54f6aa4
Update specs/core/0_beacon-chain.md
Co-Authored-By: vbuterin <v@buterin.com>
2019-01-09 10:59:45 -06:00
Hsiao-Wei Wang 06c5c11cd5
Update specs/core/0_beacon-chain.md
Co-Authored-By: vbuterin <v@buterin.com>
2019-01-09 10:59:31 -06:00
Hsiao-Wei Wang 35851b5303
Update specs/core/0_beacon-chain.md
Co-Authored-By: vbuterin <v@buterin.com>
2019-01-09 10:59:20 -06:00
Vitalik Buterin 8f1325f95e Fixed bugs found by Danny 2019-01-09 10:58:33 -06:00
Danny Ryan 1daab4659a
Update specs/core/0_beacon-chain.md
Co-Authored-By: vbuterin <v@buterin.com>
2019-01-09 10:40:40 -06:00
Ben Edgington 994a42e6b1 Add getter to Vyper contract for Merkle branches
Returns the Merkle branch for the leaf at index `index`. This getter provides
an alternative way for beacon chain proposers to access the Merkle tree of
deposits rather than being Ethereum 1.0 light clients. The method can be
called on a trusted Ethereum 1.0 archive node at specific past block numbers
to retrieve the Merkle branch needed to register a validator.
2019-01-08 20:42:19 +00:00
Ben Edgington 61f7e37eff Replace numeric constant with symbolic in Vyper contract
Vyper v0.1.0-beta.6 supports ranges with symbolic constants.
2019-01-08 19:42:22 +00:00
Danny Ryan 9dfc459849
Merge pull request #406 from terenc3t/patch-29
inclusion_slot and inclusion_distance in its own section
2019-01-08 10:49:14 -07:00
Danny Ryan 197b88df92
Merge pull request #404 from akhila-raju/patch-2
Removes naming conflict in get_shuffling.
2019-01-08 09:57:56 -07:00
Danny Ryan 609082c1af
change slot_num to slot_position 2019-01-08 09:57:15 -07:00
Danny Ryan 78ee210d56
fix seed xor in get_shuffling using bytes32 2019-01-08 09:51:12 -07:00
Danny Ryan fff0989b8c
fix call to hash (from Hash32) 2019-01-08 09:35:51 -07:00
Danny Ryan f6453a7455
Merge branch 'master' into JustinDrake-patch-1 2019-01-08 10:09:30 -06:00
Danny Ryan 9f87511632
Merge pull request #372 from terenc3t/patch-25
Rewording Validator Registry Precondition
2019-01-08 08:43:59 -07:00
Vitalik Buterin b66218a264 Initial commit 2019-01-07 18:53:33 -06:00
terence tsao 4dab5fc72c
Update 0_beacon-chain.md 2019-01-07 15:55:05 -08:00
Akhila Raju b78458bbb2
Removes naming conflict in get_shuffling.
The variable name 'slot' in the for-loop in 'get_shuffling' conflicts with the get_shuffling argument name 'slot'. Renames 'slot' in for-loop to 'slot_num'.
2019-01-07 13:06:44 -05:00
Danny Ryan 14e14ce576
Merge pull request #397 from ralexstokes/fix-merkle-bug
Fixes bug with Merkle proof branch selection
2019-01-07 09:45:42 -07: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 a6851cfd2a
Merge pull request #402 from wemeetagain/ssz/fix-hash-function-link
Fix hash function link
2019-01-07 16:38:27 +08: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
Hsiao-Wei Wang e772c4da6f
Merge branch 'master' into rename_pow_to_deposit 2019-01-07 14:02:11 +08:00
Cayman 140ee1ade9
Fix hash function link 2019-01-06 23:10:33 -06:00
Alex Stokes c69fa9a793
Fixes typo in `sorted` function.
In keeping with the rest of the code in this document we adhere to valid Python
where possible.

The custom comparator keyword argument for `sorted` is `key` so this commit
updates its usage when sorting validators by exit order.
2019-01-06 17:41:11 -06:00
Cayman cebbe7b7c5
Fix minor variable name mismatch 2019-01-06 13:05:27 -06:00
Danny Ryan fd2cc6956f
Merge branch 'master' into vbuterin-patch-19 2019-01-05 08:53:04 -07: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 a0e454d86c
Fixes bug with Merkle proof branch selection
This code determines the order in which the next branch element and the
current value should be hashed to produce the parent node in the Merkle tree.

The existing code fails to verify branches constructed in the standard way.

This patch fixes the spec code so that it works properly by using an appropriate
parity calculation.

Example code here to illustrate it working:
https://gist.github.com/ralexstokes/9d82e188bd3286ff74a1fa1dcb5068e0
2019-01-04 09:48:50 -06:00
vbuterin c24f907088
Put back spaces 2019-01-04 09:22:59 -06:00
Hsiao-Wei Wang 88de4e35f2
Merge pull request #395 from terenc3t/patch-28
Get shard_block_root from crosslink
2019-01-04 16:04:43 +08:00
Hsiao-Wei Wang fa08e240c8
Merge branch 'master' into HEAD 2019-01-04 15:55:03 +08:00
Hsiao-Wei Wang 61b2b6392c
bugfix and rename
Use `deposit_root_vote` for `DepositRootVote` object and `deposit_root` for the
deposit root hash.
2019-01-04 15:54:48 +08:00
Danny Ryan 36231e698a
Apply suggestions from code review
Co-Authored-By: hwwhww <hwwang156@gmail.com>
2019-01-04 15:54:35 +08:00
Danny Ryan e3c4155ba5
Merge pull request #393 from terenc3t/patch-27
Align Field Names with Phase 0 Spec
2019-01-03 21:48:14 -07:00
Danny Ryan d360330f83
Merge pull request #394 from ralexstokes/fix-update-validator-registry-fn
Remove dangling `return` statement from spec function
2019-01-03 21:46:34 -07:00
Danny Ryan a84dd398e4
Merge pull request #392 from ralexstokes/fix-units-ejection-balance
Fix a type error with units of wei when determining ejection balance.
2019-01-03 21:44:08 -07:00
Danny Ryan d5e6d84269
Merge pull request #391 from ralexstokes/typo/hash-slot
Change "justified hash" to "justified slot"
2019-01-03 21:43:12 -07:00
terence tsao 97bd04607c
Update 0_beacon-chain.md 2019-01-03 19:40:03 -08:00
terence tsao c0140d72ee
Update 0_beacon-chain.md 2019-01-03 18:23:23 -08:00
vbuterin a5b1f2cc0a
Moved comment and changed conditional 2019-01-03 19:44:39 -06:00
vbuterin 3f4be7abb7
Fixed activation slot conditional. 2019-01-03 19:42:59 -06:00
Alex Stokes 19a9582a48
Remove dangling `return` statement from spec function
This function declares that it returns `None` and instead directly mutates the
state.

There is a dangling return statement that this commit deletes.
2019-01-03 19:42:07 -06:00
terence tsao 19b1a31903
Update 1_shard-data-chains.md 2019-01-03 13:57:04 -08:00
Alex Stokes 9a83ad7b9b
Fix a type error with units of wei when determining ejection balance.
`EJECTION_BALANCE` is in units of ETH.

`state.validator_balances[index]` is in units of Gwei.

For the ejection computation to work as desired, we need to convert the
`EJECTION_BALANCE` constant from ETH to Gwei.
2019-01-03 14:28:36 -06:00
Alex Stokes 457f84fa64
Change "justified hash" to "justified slot"
There should be a correspondence here but referring to the slot is more
explicit, especially for those who are not as familiar with the
details of FFG finalization.
2019-01-03 12:06:44 -06:00
Hsiao-Wei Wang f92735454e
Fix `verify_slashable_vote_data`
The first field of `AttestationDataAndCustodyBit` should be an `AttestationData` object, not an `SlashableVoteData` object.
2019-01-03 16:19:54 +08:00
Hsiao-Wei Wang b614595fbe
Merge branch 'master' into vbuterin-patch-19 2019-01-03 00:26:31 +08:00
Hsiao-Wei Wang af8ed89170
Merge branch 'master' into rename_pow_to_deposit 2019-01-03 00:10:18 +08:00
Hsiao-Wei Wang 78e73633bc
Merge pull request #382 from ethereum/remove_shard_reassignment_record
Remove `ShardReassignmentRecord`
2019-01-02 23:48:04 +08:00
Hsiao-Wei Wang dcaf510213
Merge branch 'master' into rename_pow_to_deposit 2019-01-02 23:44:12 +08:00
Justin 3efe1b3b6c
Update 0_beacon-chain.md 2019-01-02 15:21:22 +00:00
Justin 429e5721f2
RANDAO hash chain and no stale shuffles
* Make RANDAO into a hash chain (this makes it easy for applications to prove the intermediate RANDAO reveals).
* Include `state.slot` when shuffle to avoid stale shuffles with skip slots
2019-01-02 14:20:01 +00:00
Justin 93b18d5160
Fix typo 2019-01-02 13:51:57 +00:00
Justin 696bf23b5e
Remove returned value for process_deposit
Also trim trailing whitespace
2019-01-02 13:41:32 +00:00
Justin 7d240946a9
Update 0_beacon-chain.md
* Cleanup comments related to custody
* Rename "Miscellaneous" to "Custody" in the table of contents
* Use `INITIAL_SLOT_NUMBER` instead of `0` for initial custody slots
* (typo) Fix `second_latest_custody_reseed_slot` => `penultimate_custody_reseed_slot`
2019-01-02 13:35:57 +00:00
Justin 9a90803f5c
Update 0_beacon-chain.md
* `processed_deposit_root` => `latest_deposit_root`
* `receipt_root` => `deposit_root`
* `receipt_tree` => `deposit_tree`
* Emphasize that deposits are Ethereum 1.0 deposits in text in various places
* `Eth1Deposit` => `Deposit` for consistency (Also happy sticking with `Eth1Deposit` and replacing `deposit_` with `eth1_deposit_` everywhere. This may be unnecessary since Ethereum 2.0 deposits can be distinguished with the `shard_` prefix, e.g. `ShardDeposit` and `shard_deposit`.)
* Clarify `withdrawal_credentials`.
* Clarify that multiple Ethereum 1.0 blocks can have the same deposit root.
2019-01-02 13:18:35 +00:00
Hsiao-Wei Wang 3dbee05aa6
Rename `pow_receipt_` to `deposit_` 2019-01-02 18:27:09 +08:00
Hsiao-Wei Wang 35adc9c61a
Remove `ShardReassignmentRecord` 2019-01-02 15:31:57 +08:00
Hsiao-Wei Wang 0d9ecce344
Rename `poc_` to `custody` 2019-01-02 15:16:55 +08:00
vbuterin 2105614059
Bunch of fixes 2019-01-01 22:37:43 -06:00
Alex Stokes d49b6e5087 Fix typo with missing bracket (#379) 2018-12-31 23:35:09 +00:00
vbuterin fdb1b6775d
Removed extraneous variable setting 2018-12-31 14:08:59 -06:00
Justin fd295eb539
Merge branch 'master' into vbuterin-patch-19 2018-12-31 15:17:00 +00:00
Justin d36b403c2e
Cleanups and fixes
Cleanups

* (typo) Remove `get_new_validator_registry_delta_chain_tip` from table of contents
* (typo) Update "Routines for updating validator status" in table of contents
* Update `FAR_FUTURE_SLOT` from `2**63` to `2**64 - 1`
* Put more constants in "Initial values", homogenise
* Cleanup note formatting
* Remove `ZERO_BALANCE_VALIDATOR_TTL` logic (to be possibly reintroduced in phase 2).
* Cleanup `min_empty_validator_index`
* Rename `deposit` to `amount` in `process_deposit` and `DepositData`.
* (typo) Remove new line under `process_penalties_and_exits`
* (typo) "Status codes" => "Status flags" in the table of contents
* (typo) `(state.slot - EPOCH_LENGTH) % LATEST_RANDAO_MIXES_LENGTH` => Use `SEED_LOOKAHEAD` instead.
* Put `state.validator_registry_latest_change_slot = state.slot` in `update_validator_registry`.
* Use `GENESIS_SLOT` for `last_poc_change_slot=0` and `second_last_poc_change_slot=0`.

Bugfixes

* (typo) `validator_exit` => `exit.validator_index`
* Separate initial deposits and initial activations to avoid double activations
* Replace `proposer.status != EXITED_WITH_PENALTY` with `validator.penalized_slot > state.slot` in two different places.
* Replace `status == EXITED_WITH_PENALTY` with `validator.penalized_slot <= state.slot` (and validator active) in two different places.
2018-12-31 15:14:14 +00:00
Danny Ryan 8f29bcdf08
Merge pull request #373 from ethereum/fix-slashing
fix slashing conditons
2018-12-31 07:57:51 -06:00
vbuterin 011970169c
Edited as per Justin's comments 2018-12-30 20:42:05 -06:00
terence tsao c8ff723514
Update 0_beacon-chain.md 2018-12-30 16:06:33 -08:00
vbuterin 1a4973171f Remove references to the persistent committees (#376)
* Remove references to the persistent committees
2018-12-30 23:46:32 +00:00
vbuterin 4a93374025
Fixed as per hww's comments 2018-12-30 09:15:23 -06:00
Hsiao-Wei Wang 14f49aaacb
Update specs/core/0_beacon-chain.md
Co-Authored-By: vbuterin <v@buterin.com>
2018-12-29 13:47:10 -06:00
vbuterin bd5b32ec5a
Initialize status_flags 2018-12-29 13:44:51 -06:00
vbuterin 85d001001c
Fixed seed lookahead 2018-12-28 12:08:19 -06:00
vbuterin d9e897bbcb
Status code / slot reorganization
* Added `activation_slot`, `exit_slot`, `penalized_slot`, `withdrawal_slot`, use these to determine if a validator is active
* Universal min activation/exit delay of 256 slots
* Min exit time of ~1 day, but penalization delays this to ~18 days
* Penalty calculation period of `[time penalized - 18 days, time penalized + 18 days]`; made the total penalties array fixed size and wraparound to make calculation more fine-grained
* Processes withdrawals in all epochs, not just dynasty-changing epochs
* Change `get_shuffling` function to take slot as argument

Not yet done:

* Removed `shard_committees` from the state
* Removed persistent committees from the state
2018-12-28 12:04:03 -06:00
Danny Ryan aa9bda271f
fix slashing conditons to be based upon epochs rather than slots 2018-12-28 11:10:12 -06:00
terence tsao 10a8ba2d9e
rewording for validator registry precondition 2018-12-28 09:04:00 -08:00
Hsiao-Wei Wang 6b84dae09e Fix #361: pass `poc_commitment` to `validate_proof_of_possession` (#364)
* Fix #361
2018-12-27 18:11:38 +00:00
terence tsao 44c389bfe3 crosslink rewards typo (#367) 2018-12-27 18:01:20 +00:00
Nishant Das 8c12896fa0 Cleanup merkle_root
Add docstring and fix spacing.
2018-12-27 17:58:24 +00:00
Hsiao-Wei Wang 2c9cefa6a7
`Use `current_` instead of `this_` 2018-12-26 15:48:20 +08:00
terence tsao a2422de686
Potential bug for crosslinks? 2018-12-23 09:34:46 -08:00
vbuterin 4938481428 Added hash-and-bit data structure as per #286 (#355)
* Added hash-and-bit data structure as per #286
2018-12-23 10:48:11 +00:00
Hsiao-Wei Wang 0ee724a4ab
Merge pull request #356 from terenc3t/patch-22
updated SSZ implementation list
2018-12-23 12:04:31 +08:00
Hsiao-Wei Wang 985a3fe958
Merge pull request #351 from dangerousfood/vrc-con-update
Update VRC contract for Vyper v0.1.0-beta.6
2018-12-23 12:03:34 +08:00
terence tsao f21da324ef
updated SSZ implementation list 2018-12-22 15:13:54 -08:00
Danny Ryan f8652fa25b
Merge pull request #347 from ethereum/vbuterin-patch-15
Changes to inactivity leak
2018-12-22 07:13:41 -06:00
Danny Ryan f84b7b5f31
Merge pull request #341 from ethereum/target-committee-size
change TARGET_COMMITTEE_SIZE to 128
2018-12-22 07:12:21 -06:00
Danny Ryan a60ab53647
PR feedback 2018-12-22 07:11:58 -06:00
Danny Ryan d0b5133912
Merge pull request #349 from ethereum/vbuterin-patch-17
Proof of custody placeholders
2018-12-22 07:08:18 -06:00
vbuterin 99817aeb0e
Typo fix: lastest -> last 2018-12-21 17:23:42 -05:00
Danny Ryan 6a73a056f0
Update specs/core/0_beacon-chain.md
Co-Authored-By: vbuterin <v@buterin.com>
2018-12-21 17:22:42 -05:00
Joseph Delong 1068076822 update vrc cotnract for vyper v0.1.0-beta.6 2018-12-21 16:18:41 -06:00
Danny Ryan fa8be783ad
Update specs/core/0_beacon-chain.md
Co-Authored-By: vbuterin <v@buterin.com>
2018-12-21 17:12:38 -05:00
vbuterin 4f94f7579c
Moved notes to the end of the section to make Danny happy 2018-12-21 11:29:15 -05:00
vbuterin 5fc8f6cfca
Fixed deposit inclusion and positioning of state variables 2018-12-21 11:26:40 -05:00
Justin c8efdc7431
Add placeholder array in state for VDFs
Added `latest_vdf_outputs` in `state` initialised to an array of `ZERO_HASH` of length `LATEST_RANDAO_MIXES_LENGTH // EPOCH_LENGTH`. (There's one VDF output per epoch. The VDF input is the RANDAO mix at the epoch boundary.)

 Further changes to activate VDFs (in a future phase):

* Add a new beacon "VDF output and proof" transaction, e.g. with `MAX_VDF_OUTPUT_AND_PROOF := 1`.
* Adjust the `MAX_SEED_LOOKAHEAD` constant, e.g. to `2**4 * EPOCH_LENGTH`. (The `2**4` parameter is essentially `A_max`.)
* Add a `process_vdf_output_and_proof` helper function in the per-block processing:
    * Verify the VDF input hasn't already been processed (check the corresponding `state.latest_vdf_outputs` entry is not `ZERO_HASH`.)
    * Verify the proof is correct, i.e. matches the VDF input and output
    * Save the VDF output to `state.latest_vdf_outputs`
* In the per-epoch processing set the corresponding entry in `state.latest_vdf_outputs` to `ZERO_HASH`.
* Use a VDF output for the shuffling seed.
2018-12-21 15:26:13 +00:00
Hsiao-Wei Wang 6667edb015
Update specs/core/0_beacon-chain.md
Co-Authored-By: vbuterin <v@buterin.com>
2018-12-21 09:08:01 -05:00
vbuterin 6eb4e59b8c
slots -> epochs 2018-12-21 09:07:04 -05:00
vbuterin 8e30f1b63e
Set zero balance TTL back to 2**22 2018-12-21 09:06:30 -05:00
Hsiao-Wei Wang 1d1db908e2
Fix grammar 2018-12-21 16:43:59 +08:00
Hsiao-Wei Wang ac0b8aac07
Add initial setting of proof of custody placeholders 2018-12-21 16:41:48 +08:00
Hsiao-Wei Wang e639f365a6
Merge pull request #344 from ethereum/hwwhww/chunk_size
phase1: Adjust `CHUNK_SIZE`
2018-12-21 11:04:36 +08:00
vbuterin 985c8a2c30
Proof of custody placeholders
Replacing #145
2018-12-20 16:01:00 -05:00
vbuterin ac5db1da8d
Doubled sqrt e drop time. 2018-12-20 12:51:34 -05:00
vbuterin 53dd49167b
Changes to inactivity leak
* Fixes parameters and makes clear that the inactivity leak is on a per-epoch basis (before the leak was technically 64 times too weak as it was calculated per-slot but applied per-epoch)
* Adds a `// 2` to the inactivity leak to compensate for it being applied twice
* Changes how it is calculated (no inactivity leak for not being part of the head, only basic leak)
* Separates out early inclusion incentives into a separate incentive component rather than being multiplicative with everything else
2018-12-20 12:41:17 -05:00
Danny Ryan eaab06f2dd
Merge pull request #298 from ethereum/update_vyper_contract
deposit contract: reduce on-chain computation
2018-12-20 09:24:32 -06:00
terence tsao 96633781fb
simplify total_attesting_balance 2018-12-20 06:37:03 -08:00
Danny Ryan e780be349e
Merge pull request #345 from ChihChengLiang/patch-2
Fix typo in get_new_shuffling
2018-12-20 07:52:30 -06:00
Danny Ryan c90ab16701
Merge pull request #340 from ethereum/vbuterin-patch-15
Remove MIN_VALIDATOR_REGISTRY_CHANGE_INTERVAL
2018-12-20 07:51:58 -06:00
Chih Cheng Liang d3cdd3fcc0
Fix typo in get_new_shuffling 2018-12-20 19:36:35 +08:00
Hsiao-Wei Wang e4e923fbba
Adjust `CHUNK_SIZE` 2018-12-20 14:36:33 +08:00
terence tsao c177ce23b3
typo on attesting_validator? 2018-12-19 21:56:43 -08:00
Akhila Raju bf753a6120
Remove line repeat in initiate_validator_exit 2018-12-19 19:56:26 -06:00
Akhila Raju 09e31acda5
Remove line repeat in activate_validator 2018-12-19 19:53:28 -06:00
Danny Ryan 0809ca0d62
fix 'CYCLE_LENGTH' -> 'EPOCH_LENGTH' 2018-12-19 19:35:55 -06:00
Danny Ryan 55ac9ac313
change TARGET_COMMITTEE_SIZE to 128 2018-12-19 15:09:17 -06:00
vbuterin 56bc4412bc
Remove MIN_VALIDATOR_REGISTRY_CHANGE_INTERVAL
Slight simplification. Only substantive change is that if the validator registry stays constant, we don't reshuffle 3 epochs after the last reshuffling (ie. before the reshufflings happened after 1, 2, 3, 4, 8, 16... epochs, now it's just 1, 2, 4, 8, 16...)
2018-12-19 14:09:50 -05:00
Vitalik Buterin a9328157a8
Don't lexicographically sort 2018-12-19 13:48:04 -05:00
Hsiao-Wei Wang 9b9114fac2
Merge branch 'master' into update_vyper_contract 2018-12-19 23:39:59 +08:00
Danny Ryan 105e669391
Merge pull request #327 from ethereum/vbuterin-patch-18
Keep randao mixes in the state
2018-12-19 09:03:25 -06:00
Anirudha Bose 257c83cc23
Fix typos in the beacon chain spec 2018-12-19 12:47:37 +01:00
Danny Ryan 36e26c86a3
fix assert conditions in get_block_hash 2018-12-18 12:53:48 -06:00
Danny Ryan 0de7240452
Merge branch 'master' into vbuterin-patch-18 2018-12-18 12:50:06 -06:00
Danny Ryan 20006c674b
Merge branch 'master' into hwwhww-patch-2 2018-12-18 12:45:50 -06:00
Danny Ryan 8548f03d5a
Merge pull request #317 from ethereum/vbuterin-patch-15
Put validator balances into a separate list in the state
2018-12-18 12:41:10 -06:00
Danny Ryan f7afd679da
fix comment 2018-12-18 12:37:25 -06:00
Danny Ryan 5943fd507f
fix remaining index error 2018-12-18 12:27:33 -06:00
Hsiao-Wei Wang bb1559a86f
PR feedback 2018-12-19 01:19:47 +08:00
Danny Ryan 0bf1acc1eb
Merge pull request #333 from burnburn/casper_ref
Make Casper ref normative
2018-12-18 10:05:52 -06:00
Danny Ryan 8bf1a542fe
Merge pull request #288 from ethereum/prev-balance-note
per-epoch Balance difference consensus safety note
2018-12-18 08:52:00 -06:00
Dan Burnett 5a0d8c8f42
move to Informative 2018-12-18 09:41:59 -05:00
Hsiao-Wei Wang 49f3746dc7
fix 2018-12-18 18:58:59 +08:00
vbuterin 2611180119
Fixes as per Danny's comments 2018-12-18 05:33:03 -05:00
Hsiao-Wei Wang edf335ebf0
Fix on startup functions 2018-12-18 11:58:28 +08:00
Dan Burnett cc4e066029
formatting change 2018-12-17 15:19:58 -05:00
Dan Burnett d505aa28fe
make Casper FFG normative 2018-12-17 15:15:37 -05:00
vbuterin cc5cef52cb
Separated block roots and randao mixes length, and fixed per-slot randao updates 2018-12-17 14:04:04 -05:00
Danny Ryan 49ce718cc2
Update specs/core/0_beacon-chain.md
Co-Authored-By: vbuterin <v@buterin.com>
2018-12-17 13:53:42 -05:00
Danny Ryan e16c98b854
Update specs/core/0_beacon-chain.md
Co-Authored-By: vbuterin <v@buterin.com>
2018-12-17 13:53:35 -05:00
Danny Ryan eee26d7b69
Update specs/core/0_beacon-chain.md
Co-Authored-By: vbuterin <v@buterin.com>
2018-12-17 13:53:17 -05:00
Danny Ryan 9c620d3853
Update specs/core/0_beacon-chain.md
Co-Authored-By: vbuterin <v@buterin.com>
2018-12-17 13:53:04 -05:00
vbuterin 7f66f06871
Fixed one more outdated-style balance query 2018-12-17 10:43:05 -05:00
vbuterin 2fa7d254dd
Merge branch 'master' into vbuterin-patch-15 2018-12-17 10:41:23 -05:00
Danny Ryan 2c48bab3d8
Update specs/core/0_beacon-chain.md
Co-Authored-By: vbuterin <v@buterin.com>
2018-12-17 10:40:41 -05:00
Danny Ryan 110fe75a70
Update specs/core/0_beacon-chain.md
Co-Authored-By: vbuterin <v@buterin.com>
2018-12-17 10:40:31 -05:00
Danny Ryan fbabeff838
Update specs/core/0_beacon-chain.md
Co-Authored-By: vbuterin <v@buterin.com>
2018-12-17 10:40:21 -05:00
Danny Ryan f4fa55842b
fix bls_signature toc 2018-12-17 08:48:06 -06:00
vbuterin b402a7c1d6
Made a function multiline 2018-12-17 09:12:51 -05:00
Danny Ryan eccfc912b5
Update specs/core/0_beacon-chain.md
Co-Authored-By: vbuterin <v@buterin.com>
2018-12-17 09:11:39 -05:00
vbuterin c0d65cc334
Changed get_effective_balance definition to use state+index 2018-12-17 09:10:44 -05:00
Danny Ryan e9f986971e
Update specs/core/0_beacon-chain.md
Co-Authored-By: vbuterin <v@buterin.com>
2018-12-17 09:08:13 -05:00
vbuterin 365437d4c2
Forgot to update randao mixes in one place 2018-12-17 04:46:28 -05:00
vbuterin d1aa3b4cd6
Editing randao_mixes in place instead of as a queue
Saves having to re-Merkelize an entire 8192-item list every block.
2018-12-17 04:44:49 -05:00
vbuterin 416bbf9cea
Edit latest_block_roots in place instead of as a queue
Faster editing that way; otherwise every block will require completely reconstructing a 8192-sized Merkle tree.
2018-12-17 04:40:27 -05:00
vbuterin 4aa6e4de7b
Merge pull request #328 from ethereum/vbuterin-patch-19
Remove clamp
2018-12-17 04:17:02 -05:00
vbuterin 3725dd5cb1
Merge pull request #316 from ethereum/vbuterin-patch-13
Edit BLS spec as per issue #300
2018-12-16 04:06:57 -05:00
vbuterin 9e6c1a6244
Remove clamp
Removed the use of `clamp` from the spec, as there's no point in a helper function that's used exactly once; it only increases the amount people have to jump around the spec to understand what's going on.
2018-12-15 06:44:18 -05:00
vbuterin 425f7d51c9
Keep randao mixes in the state
Response to #295 

Also a simplification, as two special cases get replaced: `state.randao_mix` -> `state.latest_randao_mixes[-1]`, and `state.next_seed` -> `state.latest_randao_mixes[-CYCLE_LENGTH-1]`.
2018-12-15 05:10:31 -05:00
vbuterin 829911c0fd
Swapped order of aggregate and verify 2018-12-14 19:55:05 -05:00
Danny Ryan 62b95fbe33
fix process_deposit function signature 2018-12-14 15:21:32 -06:00
Danny Ryan 179352dbfe
remove ProofOfPossessionData 2018-12-14 15:20:21 -06:00
Danny Ryan 7b4c4f299d
add bls_aggregate_pubkeys ref in beacon chain spec 2018-12-14 09:39:14 -06:00
Danny Ryan 7306851f0b
Merge branch 'master' into vbuterin-patch-13 2018-12-14 09:31:55 -06:00
Danny Ryan c448db46ea
Merge pull request #315 from ethereum/more-ssz-objects
More ssz objects pt 1
2018-12-14 09:30:19 -06:00
Danny Ryan 221874efcb
pr feedback 2018-12-14 09:29:49 -06:00
Danny Ryan 68a76ba727
Merge pull request #313 from ethereum/slashable-functions
Cleanup casper slashing
2018-12-14 08:58:01 -06:00
vbuterin c43724132b
Clarify block hash -> block root 2018-12-13 23:01:32 -05:00
vbuterin 964395c362
Some bugfixes 2018-12-13 19:40:00 -05:00
vbuterin 2b9a0e999c
Separate validator balances 2018-12-13 19:28:59 -05:00
vbuterin add628d26b
Edit BLS spec as per issue #300
See https://github.com/ethereum/eth2.0-specs/issues/300
2018-12-13 19:06:07 -05:00
Danny Ryan 96aade9a2c
add proofofpossessiondata ssz object 2018-12-13 14:03:22 -06:00
Danny Ryan f30d404856
add ValidatorRegistryDeltaBlock ssz object 2018-12-13 13:50:50 -06:00
Danny Ryan 9e74043a17 move ejectiosn to per-epoch. fix a couple bugs in validator status change functions (#314) 2018-12-13 19:45:08 +00:00
Danny Ryan cd9e7ecaeb
minor fix 2018-12-13 12:18:29 -06:00
Danny Ryan 697d3c5eb5
add doc string for new slashing helper funtions 2018-12-13 12:17:39 -06:00
Danny Ryan 7c833fafc5
clean up casper slashing with helper functions etc 2018-12-13 12:09:39 -06:00
Raul Jordan 923df80b03 replace shard_block_hash with shard_block_root 2018-12-13 11:26:10 -06:00
terence tsao 9170efee1b
removed old comments 2018-12-13 08:27:22 -08:00
Hsiao-Wei Wang 1ea887c964 Deposits: define `DepositData` and rename `DepositParameters` to `DepositInput` (#310) 2018-12-13 15:36:57 +00:00
terence tsao ddb91adecf
quick fix on typo 2018-12-13 06:51:47 -08:00
Gregory Markou b554204688 clarified language around start_up (#303) 2018-12-13 13:08:51 +00:00
Justin 6b6a04c884
Bugfix (missing `state.`) 2018-12-13 10:03:50 +00:00
Hsiao-Wei Wang c1a3b29145 Fix `verify_slashable_vote_data`: use `get_domain` (#306) 2018-12-13 09:55:37 +00:00
Hsiao-Wei Wang 6fa12f6603
Merge pull request #301 from ethereum/vote_rename
Some renames about vote and fix `verify_slashable_vote_data` (`verify_casper_votes`)
2018-12-13 13:58:10 +08:00
Hsiao-Wei Wang d5a5e1815c
Rename `LATEST_BLOCK_ROOT_COUNT` -> `LATEST_BLOCK_ROOTS_LENGTH` 2018-12-13 13:55:34 +08:00
Hsiao-Wei Wang 9eeb863ec6
Refactor `verify_slashable_vote_data` 2018-12-13 03:11:53 +08:00
Hsiao-Wei Wang ab7549e52e
Move `verify_slashable_vote_data` to the last verification of Casper slashings 2018-12-13 03:04:10 +08:00
Hsiao-Wei Wang d2fda68ccb
Fix ToC 2018-12-13 03:00:53 +08:00