Commit Graph

197 Commits

Author SHA1 Message Date
Dustin Brody 5d0e1c026d remove Validator.{custody_commitment,latest_custody_reseed_slot,penultimate_custody_reseed_slot} 2019-01-28 20:34:44 -08:00
Dustin Brody ad3de5fde9 Uint24 -> ValidatorIndex; Fork.pre_fork_version -> Fork.previous_version; Fork.post_fork_version -> Fork.current_version 2019-01-28 20:15:00 -08:00
Dustin Brody 4574178836 epochs replace slots as main first-class entity; several mechanical renamings (ForkData -> Fork; .fork_data -> .fork; remove stub custody types/code; some type aliasing to keep slots and epochs more enforceably separate; fix test_state_transition.nim assumption that GENESIS_SLOT == 0 2019-01-28 19:22:22 -08:00
Dustin Brody b46183047f remove BeaconState.shard_committees_at_slots in favor of crosslink committees; validator_registry_latest_change_slot -> validator_registry_update_slot mechanical renaming 2019-01-28 23:43:55 +02:00
Dustin Brody f85088651c Revert "remove BeaconState.shard_committees_at_slots in favor of crosslink committees; validator_registry_latest_change_slot -> validator_registry_update_slot mechanical renaming"
This reverts commit 2222a8e222.
2019-01-26 11:17:22 -08:00
Dustin Brody 2222a8e222 remove BeaconState.shard_committees_at_slots in favor of crosslink committees; validator_registry_latest_change_slot -> validator_registry_update_slot mechanical renaming 2019-01-26 11:15:33 -08:00
Bruno Škvorc 7071021dc5
Typo fix 2019-01-25 23:13:41 +01:00
Jacek Sieka e0a257406e
clean up and add some logging (#70) 2019-01-25 11:35:22 -06:00
zah a0712e691a Replace the usage of cligen with confutils (#68) 2019-01-23 12:45:15 -06:00
Dustin Brody 53952dd0c9
Merge pull request #66 from status-im/wcc
Spec update
2019-01-23 18:34:00 +00:00
Dustin Brody 3877ef263c remove return to gain better error messages 2019-01-23 09:53:51 -08:00
Jacek Sieka 63f7302a41
Update beacon_chain/spec/beaconstate.nim
Co-Authored-By: tersec <tersec@users.noreply.github.com>
2019-01-23 17:51:59 +00:00
Dustin Brody a11dcdfe64 switch from get_shuffling_prev to get_shuffling; remove some also-removed-in-spec calls and temporarily/ugly-bridge a still-useful reference to shard committees until they're completely removed 2019-01-22 17:50:51 -08:00
Dustin Brody 21b8bd7f71 new shuffling routine and adjust tests for it 2019-01-22 14:36:31 -08:00
Dustin Brody d728f113ac move existing shuffling routine out of way and keep existing references to it 2019-01-22 11:17:34 -08:00
Jacek Sieka 523a990adc
ssz: switch to little-endian
https://github.com/ethereum/eth2.0-specs/pull/139
2019-01-22 11:56:01 -06:00
Zahary Karadjov a9c026b957 More logging close to the code that fails often 2019-01-21 21:43:08 +02:00
Dustin Brody eed9ea8f0a Spec updates (#64)
* s/CrosslinkRecord/Crosslink/

* {MIN,MAX}_DEPOSIT to {MIN,MAX}_DEPOSIT_AMOUNT; rm SHARD_PERSISTENT_COMMITTEE_CHANGE_PERIOD; per https://github.com/ethereum/eth2.0-specs/issues/378 and 35adc9c61a rm persistent_committees, persistent_committee_reassignments, and ShardReassignmentRecord

* complete switchover from status/ValidatorStatusCodes to status_flags/INITIATED_EXIT/WITHDRAWABLE validator representation
2019-01-21 19:26:58 +01:00
Dustin Brody 476052b314 deposit root to Eth1Data transition 2019-01-18 12:47:30 +02:00
Dustin Brody c788d72857 s/POW_RECEIPT_ROOT_VOTING_PERIOD/ETH1_DATA_VOTING_PERIOD/; rm COLLECTIVE_PENALTY_CALCULATION_PERIOD, ACTIVE_PENDING_EXIT, EXITED_WITH_PENALTY 2019-01-18 12:47:30 +02:00
Dustin Brody 1fe5ba07b8 update initiate_validator_exit and exit_validator helper functions to current spec; remove spec-removed EXITED_WITHOUT_PENALTY 2019-01-18 12:47:30 +02:00
Dustin Brody 9dcf37aad6 adjust get_shuffling and get_active_validator_indices to use slot, per spec 2019-01-18 12:47:30 +02:00
Dustin Brody f30b4f822e ValidatorRecord -> Validator 2019-01-18 12:47:30 +02:00
Dustin Brody 38c2cc72fa poc -> custody mechanical name changes 2019-01-18 12:47:30 +02:00
Zahary Karadjov d753332c54 Fix the build of the validator_keygen 2019-01-17 14:38:27 +02:00
Zahary Karadjov 43ae45fe7e Add --logLevel command-line flag; Fix running the start.sh script from the beacon-chain repo 2019-01-17 14:38:27 +02:00
Yuriy Glukhov 7e4d264887 Back the db by rocksdb backend 2019-01-17 14:38:16 +02:00
Dustin Brody ce72c1b4bc re-disable assertion creationg failures in research/state_sim; hadn't been set up to run before, either 2019-01-17 00:14:55 -08:00
Dustin Brody 6f103a7bcd switch to new penalty calculation infrastructure 2019-01-16 06:50:54 -08:00
Dustin Brody 7e3aa4dda2 initial process_penalties_and_exits 2019-01-16 05:39:34 -08:00
Dustin Brody 44edf400d2 rm PENDING_ACTIVATION 2019-01-16 05:24:58 -08:00
Dustin Brody 2ff973e46f add some helper functions from new spec; fix some comments; more plumbing; start removing some of the status-code refs in favor of the new status bitfield 2019-01-16 04:57:49 -08:00
Dustin Brody bc65693eae stop routing through update_validator_status 2019-01-16 04:20:44 -08:00
Dustin Brody 5823091501 some more fields, plumbing, comment fixes 2019-01-16 03:39:16 -08:00
Dustin Brody cb1096c581 add some helper functions, change epoch processing, add some new constants 2019-01-16 03:07:41 -08:00
Dustin Brody d101c117fd stage a few more working changes from the bunch 2019-01-16 02:42:40 -08:00
Dustin Brody 1bf876f5c1 mechanical renamings 2019-01-16 02:21:06 -08:00
Zahary Karadjov 7608fd76a3 Make the code compile in Nim 0.19.0 2019-01-12 13:57:50 +02:00
mratsim c3d6961eed Remove rebase hash leftovers 2019-01-12 13:57:50 +02:00
mratsim 0a080e4f27 Remove the vote count closure, unlike the spec we use a count table 2019-01-12 13:57:50 +02:00
mratsim 423f632606 Fork choice compiles (but untested) 2019-01-12 13:57:50 +02:00
mratsim f0e3de6b19 Depart from spec "attestation_targets" 2019-01-12 13:57:50 +02:00
mratsim 4a6e694268 Add BeaconChainDB 2019-01-12 13:57:50 +02:00
mratsim 8a68bbb26c Integrate fork choice helpers into skeleton 2019-01-12 13:57:50 +02:00
mratsim e3d8bc9695 Sync with latest specs
get_parent - https://github.com/ethereum/eth2.0-specs/pull/250
AttestationData - ac600d39

https://github.com/ethereum/eth2.0-specs/issues/285 and 5b35b6c2
2019-01-12 13:57:50 +02:00
mratsim 4c3cae5519 Move fork choice research out of beacon chain 2019-01-12 13:57:50 +02:00
mratsim 12c6e2f46b Implement spec helpers for lmd ghost 2019-01-12 13:57:50 +02:00
Zahary Karadjov a586087472 Stable network simulation 2019-01-09 10:45:33 +02:00
Zahary Karadjov 1c30214e9a Reach block 64 in the network simulation
* Slightly better logging
* Handling of incoming blocks and missing blocks
2019-01-07 14:59:52 +02:00
Zahary Karadjov 8f9a5441f1 More reliable network simulation
You'll need the latest versions of nim-eth-p2p, nim-serialization
and nim-json-serialization.

Before starting the simulation script, make sure to delete any previous
json files from the simulation folder:

```
rm tests/simulation/*.json
tests/simulation/start.sh
```

This should survive the creation of few blocks before diying with a
block validation error.
2019-01-05 14:35:47 +02:00
Jacek Sieka a0aa230c45 spec updates
* skip validation in a few more cases
* more renames
* add attestations to state sim
2018-12-28 02:32:41 +02:00
Jacek Sieka 12a819c110
spec updates (#48)
* spec updates
* balances move out to separate seq
* bunch of placeholders for proof-of-custody / phase1
* fix inclusion distance adjustment
* modify state in-place in `updateState` (tests spent over 80% time
copying state! now it's down to 25-50)
* document several conditions and conversations
* some renames here and there to follow spec
2018-12-27 14:14:37 -06:00
Dustin Brody 68644517da initial rough commit of a work/attestation pool (#46)
* initial rough commit of a work/attestation pool

* add kludgy participation_bitfield handling, some error handling, and document future improvments from spec update #47

* rename addAttestation to add for Nim consistency
2018-12-26 13:17:30 +01:00
Jacek Sieka eb369cee4e spec updates
* first attestation created!
* add hash_tree_root_final that returns an Eth2Digest
* hits the first real blocking spec bug :(
2018-12-24 10:08:11 +01:00
Jacek Sieka 04314589ff
spec updates (#45)
* spec updates

* random small updates
* ssz no longer sorts by field, fix enum serialization
* rewire block processing a little to avoid a few state copies
* add a state simulation tool that writes out jsons
2018-12-21 16:37:46 -06:00
Zahary Karadjov abb199d6dc Chain creation and network simulation start script 2018-12-19 15:39:00 +02:00
Jacek Sieka 0b0c66ebd9 spec updates
* spec-following renames
* more documentation
* simplify casper slashing
* fix block creation flow / logic
2018-12-19 14:48:25 +02:00
Jacek Sieka 400ac83aa0
BLSVerify > bls_verify 2018-12-17 13:36:17 -06:00
Jacek Sieka 142aa8ca8e ssz: finish implementation (#42)
* ssz: finish implementation

* add object support, simplify implementation
* fix extra round of hashing in tree_hash_root

* ssz: cleanups

* work around Nim range bug for Uint24, cleanups
2018-12-17 19:03:53 +01:00
Dustin Brody 5dc06f4496 switch some proc to func, add some infrastructure, update based on spec name changes (#40)
* switch some proc to func, add some infrastructure, update based on spec name changes

* typo
2018-12-15 10:32:36 -06:00
Danny Ryan aa5129b90e simplify randao layers tests 2018-12-15 01:17:59 +02:00
Danny Ryan b1114a94de fix double incrementing of proposer.randao_layers 2018-12-15 01:17:59 +02:00
Jacek Sieka 35ac0c4ddc
spec updates (#39)
* some minor renames
* fix some leftover block slot references (replaced by state slot)
* fix some more uint underflows
* update epoch calculations (reward et al)
* now works past 100 epochs at least with empty blocks (very slow)
2018-12-14 10:12:39 -06:00
Jacek Sieka 44bb13ae46
spec updates (#37)
* use repeat_hash from spec in randao
* add some logging to state processing
* export crypto string converters in spec insulation layer
* enable block signature verification
* ssz: add support for arrays, remove custom data type code
* correctly handle previous and new block
* add trivial block processing tests
* prefer iterative repeat_hash
* state transition mostly done
* handle most specials and slashings
2018-12-13 10:00:55 -06:00
Yuriy Glukhov a7ee8a71bb Sign block proposal and attestation 2018-12-13 12:58:05 +02:00
Dustin Brody 34f7254c61 fix build 2018-12-12 16:10:46 -08:00
Dustin Brody 4b1197bc17 fix one compile error 2018-12-12 13:44:18 -08:00
tersec d48f056be9
Merge pull request #33 from status-im/gossip_sub
Faux implementation of GossipSub based on RLPx
2018-12-12 21:36:43 +00:00
Yuriy Glukhov 5776393539 Fixed compilation error with newer nim 2018-12-12 12:36:20 +01:00
Jacek Sieka 5b35b6c2dc
hash -> root
ethereum/eth2.0-specs#285
2018-12-11 15:53:18 -06:00
Jacek Sieka 7ea51d5b0b
spec updates (#34)
* spec updates

* make several constants uint64 to help minimize casting
* document data type woes - will have to revisit these
* change comment style on fields and constants to make room for better
comments
* add BLSVerify and BLSAddPbkeys facades to insulate spec code from
milagro
* fix proof of possession type
* drop explicitly ordered container fields from ssz - there's an issue
open to sort this out before committing it to the spec
2018-12-11 11:55:45 -06:00
Zahary Karadjov c71f89e211 Faux implementation of GossipSub based on RLPx 2018-12-10 14:06:54 +02:00
Yuriy Glukhov 10ed2bd5b9 Comments addressed, cosmetics 2018-12-09 11:17:54 +02:00
Yuriy Glukhov 61f81fb0c4 Some bits of randao 2018-12-09 11:17:54 +02:00
Jacek Sieka e8ec26debb
spec updates
* bunch of renames
* bunch of new constants
* more long variable names!
2018-12-05 20:07:04 -06:00
Jacek Sieka eba4f18f71
Merge remote-tracking branch 'origin/master' into epoch-state-2 2018-12-05 11:58:01 -06:00
Yuriy Glukhov f12b679880 addLocalValidators impl 2018-12-05 18:58:28 +02:00
Jacek Sieka 94756cc5a2
add is_power_of_2 implementation 2018-12-05 07:19:57 -06:00
Jacek Sieka 4b41010610
add more epoch processing
* document several parts
* almost complete epoch state processing
2018-12-04 12:45:30 -06:00
Jacek Sieka ac600d398b
spec updates
* lots of renames
* add some epoch processing
2018-12-03 15:41:24 -06:00
tersec 0141c84fe5 data type updates from spec (#25)
* data type updates from spec
2018-12-03 11:46:22 -06:00
Jacek Sieka 6669e698b5
spec updates
* more work on block processing
* fix some unsigned issues
* fix ssz issue when last chunk is not full
* work around empty const seq compiler bug
* XXX -> TODO
2018-11-29 16:16:07 -06:00
Jacek Sieka a661e5afd8
call out inefficiencies and quirks for future consideration 2018-11-29 12:18:12 -06:00
Jacek Sieka 4d6b068697
beacon state updates
* add `on_startup` genesis state constructor
* update state transition to use ssz
* update validator adder
2018-11-28 23:38:44 -06:00
Zahary Karadjov e4d1bebf4d Get the code to compiling state 2018-11-29 03:17:57 +02:00
Zahary Karadjov 32ebcb007a Add more flesh to the skeleton :) 2018-11-28 22:55:31 +02:00
Zahary Karadjov 4920c0a357 work-in-progress beacon node skeleton (not compiling at the moment) 2018-11-28 22:55:04 +02:00
Jacek Sieka 53f819689e
fix import 2018-11-28 14:01:30 -06:00
Jacek Sieka b01c51b3e2
move spec stuff to spec directory
helps maintain sanity in the face of spec changes
2018-11-28 13:49:03 -06:00
Dustin Brody e63b452181 assorted fixes; some of algorithms aren't 100% updated yet, but want to get data structures in place 2018-11-27 20:23:27 -08:00
Jacek Sieka 548b6922ba
introduce Eth2Hash, Eth2Digest and friends (#22, fixes #3)
* introduce Eth2Hash, Eth2Digest and friends
2018-11-27 17:10:09 -06:00
Zahary Karadjov 2137b084b2 work-around a generics compilation issue 2018-11-26 18:41:03 +02:00
Jacek Sieka da22f2065f
docs & comments
* link to resources for shuffling
* describe get_beacon_proposer
* hints for solving init issue
2018-11-26 09:44:49 -06:00
Jacek Sieka d1839dad9a
more small fixes
* move consts to top
* move some functions to validator.nim
* add some validator functoin smoke tests
2018-11-23 16:44:43 -06:00
Jacek Sieka 3ce94623e3
spec updates 2018-11-23 13:42:47 -06:00
Mamy Ratsimbazafy 9989f2fe56
"Stub" hashSSZ function for BeaconBlock (#18)
* FIx hash_ssz in the generic case

* Add a stub hash function for BeaconBlocks
2018-11-22 11:17:05 +01:00
tersec 0fe8c6762c update data structures (#17) 2018-11-20 18:52:14 -06:00
Jacek Sieka 7e243d57cd
ssz: documentation updates, fix fromBytesSSZ type constraint 2018-11-20 11:35:11 -06:00
Jacek Sieka 6df3ec952b
hash_ssz: simplify per latest spec update
* update per https://github.com/ethereum/eth2.0-specs/pull/140
* join with ssz to form a single ssz module (like spec)
2018-11-20 10:43:09 -06:00
Yuriy Glukhov 7e630bf8bf Fixed compilation errors. Reenabled test 2018-11-19 19:09:39 +02:00