Dustin Brody
e7de8aae20
fix/restore 0.11.1 BeaconState genesis interop: (a) use GENESIS_FORK_VERSION properly in BeaconState init; (b) use GENESIS_FORK_VERSION to be compatible with zcli/zrnt initial eth1 deposits; (c) let List[foo] work with 64-bit ints, so BeaconState.validators SSZ-serializes properly; and (d) update test_interop to use new spec/crypto API
2020-04-07 13:16:55 +03:00
Dustin Brody
60df05a420
mark several v0.10.1 spec references as v0.11.1-compatible
2020-04-04 13:43:04 +00:00
tersec
ea59f2ecf2
comments-only changes: update a bunch of v0.10.1 spec references to v0.11.0 and explain rationale for extended validation design in code ( #847 )
2020-04-01 11:41:39 +00:00
tersec
6eb4f1f39d
initial attestation aggregation ( #769 )
...
* initial attestation aggregation
* fix usage of committee index, vs index in committee; uniformly set trailing/following distance; document how the only-broadcast-if mechanism works better and what aggregation already happens, not otherwise sufficiently clear; use correct BlockSlot across epoch boundaries
* address inconsistent notion of which slot in past to target for aggregate broadcast; follow 0.11.x aggregate broadcast p2p interface topic
* Fix get_slot_signature(...) call after get_domain(...) change required genesis_validators_root
* mark all spec references which aren't dealt with in other PRs as v0.11.1
* update two more spec refs to v0.11.1
2020-04-01 09:59:55 +00:00
tersec
cd388bc9bb
extended validation ( #812 )
...
* initial extended validation setup
* flesh out all TODO items for attestation and beaconblock verification
* fix finalization and add chronicles debugging messages
* directly use blockPool.headState rather than pointlessly updating it and document this constraint
* fix logic relating to first-attestation checking; support validating blocks across multiple forks
2020-03-31 18:39:02 +00:00
tersec
daabb1b5b2
complete all (non-semantic, comment-only) 0.11.0 -> 0.11.1 beacon chain spec updates, mark all beacon chain v0.11.0 spec references as v0.11.1, and remove now unnecessary/unused UpdateFlags vars from 4 test fixtures ( #841 )
2020-03-30 23:40:24 +00:00
tersec
f5f939bd31
0.11.1 beacon chain spec update ( #836 )
...
* initial 0.11.1 spec commit; no test regressions and finalizes in eth2_network_simulation
* with BLS 0.10/0.11 available, stop skipping attester slashing, proposer slashing, and voluntary exist operations fixture tests
* switch param orders to group state.{fork, genesis_validators_root}; bump spec/datatypes spec version for network purposes
* mark attestation construction and broadcast and some minimal/mainnet constants as 0.11.1-compatible; remove phase 1 sharding constants from minimal which don't exist in that preset
2020-03-30 11:31:44 +00:00
Zahary Karadjov
5a2a52869e
Add a RPC proc similar to /spec/eth2_config
2020-03-22 19:00:09 +02:00
Zahary Karadjov
adcec61081
Initial implementation of a JSON-RPC service
2020-03-22 19:00:09 +02:00
tersec
53e4b0a26c
complete (except for get_domain(...)) 0.11.0 beacon chain spec update ( #822 )
...
* complete (except for get_domain(...)) 0.11.0 beacon chain spec update
* mark compute_start_slot_at_epoch(...), is_active_validator(...), compute_signing_root(...), and get_seed(...) as 0.11.0
2020-03-22 16:03:07 +00:00
Jacek Sieka
689bcf71c4
clean up block creation
...
* consistently use state at new block slot to produce block
* factor out signature funcs
* fix missing block application test
2020-03-22 11:15:07 +00:00
Mamy Ratsimbazafy
ccace9a034
Fix shortlog crypto ( #818 )
...
* fix shortlogs of crypto types
* Valid signature without a "real: " prefix tag
* remove 0x prefix
2020-03-19 17:18:48 +01:00
Dustin Brody
f7ecd09e95
mark aggregate(...), AttesterSlashing, IndexedAttestation, AttestationData, Deposit, DepositData, VoluntaryExit, BeaconBlock, BeaconBlockHeader, BeaconState, HistoricalBatch, Fork, SigningRoot, SignedVoluntaryExit, SignedBeaconBlock, SignedBeaconBlockHeader, get_current_epoch(...), and get_randao_mix(...) as 0.11.0
2020-03-17 12:06:56 +02:00
Dustin Brody
cae1c0fd1a
address beacon_node TODO regarding missing proposer index; mark initiate_validator_exit(...), is_eligible_for_activation_queue(...), Attestation, DepositMessage, BeaconBlockBody, PendingAttestation, Eth1Data, and integer_squareroot(...) as 0.11.0
2020-03-17 12:06:56 +02:00
Dustin Brody
ebcde664e5
mark decrease_balance(...), get_validator_churn_limit(...), network spec version, Checkpoint, compute_epoch_at_slot(...), get_active_validator_indices(...), and get_committee_count_at_slot(...) as 0.11.0
2020-03-17 12:06:56 +02:00
Dustin Brody
313109c743
align process_block(...) name with spec; fix beacon chain proposer index generation when some validators aren't active to fix the two regressing 0.11.0 block sanity tests
2020-03-17 12:06:56 +02:00
Dustin Brody
6068dd960b
initial 0.11.0 spec version update
2020-03-17 12:06:56 +02:00
Mamy André-Ratsimbazafy
2aae54a15f
Fix serialization of deposits
2020-03-13 12:20:41 +00:00
Mamy André-Ratsimbazafy
c1c7435808
Skip tests:
...
- EF - attester slashings - 2 tests
- EF - sanity blocks - 1 test
- NBC - attestation - 1 test
2020-03-13 12:20:41 +00:00
Mamy André-Ratsimbazafy
28dc8a6a29
Fix mock signatures/validator keys and stack smashing
2020-03-13 12:20:41 +00:00
Mamy André-Ratsimbazafy
14bc9e60ca
"init" should handle fake/invalid pubkeys and signatures
2020-03-13 12:20:41 +00:00
Mamy André-Ratsimbazafy
3c140d0c3d
Try to solve the stack smashing / discriminant changes object branch
2020-03-13 12:20:41 +00:00
Mamy André-Ratsimbazafy
31bd13a5d3
init for mainchain_monitor
2020-03-13 12:20:41 +00:00
Mamy André-Ratsimbazafy
bfd4df912e
Update to BLS v0.10.1
2020-03-13 12:20:41 +00:00
tersec
a327c82820
Revert "finalizing state_transition ( #792 )"
...
This reverts commit 91d75bdfdd
.
2020-03-10 16:44:42 +00:00
Joao Gabriel Carvalho
91d75bdfdd
finalizing state_transition ( #792 )
2020-03-10 12:19:00 +01:00
Jacek Sieka
7902d070cd
prefer endians2
2020-03-05 18:13:28 +02:00
Jacek Sieka
9a3db7a81f
[WIP] Fake bls at runtime ( #735 )
...
* Initial implementation of runtime bls skipping.
Add libnfuzz skipBLSValidation handling, check that it propagates.
* Rename skipBLSValidation -> skipBlsValidation, start skipStateRootValidation
* Replace skipValidation flags with more granular flags.
Also added skipBlockParentRootValidation flag
Mainly replaced with skipBlsValidation but also StateRoot or
BlockParentRootValidation flags where appropriate.
* Adjust interop test to pass when skipping merkle validation.
* Stop skipping validation for mainchain_monitor.
* Remove comment.
* Also skipMerkleValidation for test_beacon_chain_db.
2020-03-05 13:52:10 +01:00
Dustin Brody
3d99c7b28e
mark some spec functions .used. to avoid warnings; misc cleanups
2020-02-25 09:17:06 +00:00
Dustin Brody
425b0e13da
remove potential error condition in getAttestationTopic; subscribe to all topics in parallel; add test cases for larger-than-ATTESTATION_SUBNET_COUNT committee indexes
2020-02-21 19:44:03 +00:00
Dustin Brody
62584b633e
update relevant portions of attestation aggregation spec version; tweak inspector
2020-02-21 19:44:03 +00:00
Dustin Brody
a8567cafb5
mark out where/how AttestationData and Attestation construction are honest validator-compliant
2020-02-21 19:44:03 +00:00
Dustin Brody
32872c7ee6
bump spec version to 0.10.1 (more accurate than 0.10.0); fix inspector building
2020-02-21 19:44:03 +00:00
Dustin Brody
6c87af9aab
split attestation beacon topic per honest validator spec
2020-02-21 19:44:03 +00:00
Dustin Brody
bced5ca656
implement is_proposer(...)
2020-02-21 19:44:03 +00:00
Dustin Brody
4782ae06e6
implement get_committee_assignment(...) by spec transcription
2020-02-21 19:44:03 +00:00
Jacek Sieka
521b0ed6ba
Clean 20200205 ( #729 )
...
* beacon node code cleanup
* rudimentary error checking on mainnet monitor
* start client even when sending deposit
* work around missing block number exception
* connect to testnet with web3 url
* pretty-print digests in json
2020-02-07 08:13:38 +01:00
Dustin Brody
1ffc2df23d
add a couple new deposit tests; fix the false-positive BLS verifications while keeping all but two tests working, despite mismatched 0.9/0.10 BLS standards; better-factor the skipping of BLS validation and Merkle tree validation
2020-02-04 18:39:38 +00:00
Dustin Brody
e4922cb177
implement compute_signing_root() and mark some functions as 0.10.1-compatible
2020-02-04 12:24:30 +00:00
Dustin Brody
45dd12cf3f
update process_deposit() to actually check is_valid_merkle_branch() unless skipValidation specified
2020-01-30 09:31:08 +00:00
Dustin Brody
60b1775879
update check_attestation/process_attestation() to 0.10.1 and fill in missing check
2020-01-28 12:07:33 +02:00
Dustin Brody
3efbe36c30
additional 0.10.1 updates where already-implemented code is already done
2020-01-27 12:50:54 +00:00
Dustin Brody
dab107fa1e
more 0.10.1 updates
2020-01-27 12:50:54 +00:00
Mamy Ratsimbazafy
1ba2cebd85
v0.10.1 (test vectors + unchanged parts) ( #696 )
...
* update to 0.10.1
* SSZ Generic and nbench uses the v0.10.1 fixtures
* Tests + spec links: v0.10.0 -> v0.10.1
* Add v0.10.1 TODO in get_latest_attesting_balance (forkchoice)
* SSZ Bytes are now ByteList
* Remove nim-result submodules that was leftover/added by mistake in the branch
2020-01-27 10:56:32 +00:00
Jacek Sieka
270c25c8b8
drop rlpx support ( #679 )
2020-01-24 09:32:52 +01:00
Jacek Sieka
7dc2434e0d
clean up attestation logging
2020-01-23 18:48:26 +01:00
Dustin Brody
50f633209c
mark a couple dozen 0.9.2/0.9.4 spec locations as still consistent with 0.10.0; no functional changes
2020-01-22 13:03:45 +00:00
Jacek Sieka
6cfa28e1f5
fix finalization cleanup
...
* add block pool finalization test
2020-01-21 15:53:53 +02:00
Zahary Karadjov
74fc34eef2
Restore some constants to pass the constants & presets test
2020-01-21 01:26:57 +02:00
Zahary Karadjov
095b271bd4
Implement a loader for custom const presets
...
The loader has been tested with the presets published by Lighthouse.
You can try connecting to one of their testnets by running:
cd nim-beacon-chain
./connect-to-testnet lighthouse/testnet0
2020-01-21 01:26:57 +02:00
Jacek Sieka
2a67ac3c05
trie -> kv store
...
* simplify data storage to key-value, tries are not relevant for NBC
* locked-down version of lmdb dependency
* easier to build / maintain on various platforms
2020-01-20 13:39:37 +00:00
Jacek Sieka
d853d7c024
remove SigKey.init (unused, fixes #664 )
2020-01-18 10:22:17 +01:00
Dustin Brody
c301e5d42f
mark 49 0.9.2/0.9.4 spec functions/data types as 0.10.0
2020-01-15 12:34:16 +00:00
Jacek Sieka
860be026e1
fix block pool init head selection
...
the head state is not necessarily saved in the database, so we need to
make sure we update things to the correct place
2020-01-15 12:17:49 +00:00
Mamy André-Ratsimbazafy
b49003988a
Add Epoch Processing to nbench
2020-01-15 10:03:56 +00:00
Dustin Brody
8eaebf7163
update to spec version 0.10.0
2020-01-14 18:17:16 +00:00
Dustin Brody
46de726e3d
mark all compatible 0.9.3 functions and data structures as 0.9.4
2019-12-20 17:24:42 +00:00
Mamy Ratsimbazafy
106352aff3
Nbench - Flexible benchmarking of Nimbus internals ( #641 )
...
* nbench PoC
* Remove the yaml files from the example scenarios
* update README with current status
* Add an alternative implementation that uses defer
* Forgot to add the old proc body
* slots-processing
* allow benching state_transition failures
* Add Attestations processing (workaround confutils bug:
- https://github.com/status-im/nim-confutils/issues/10
- https://github.com/status-im/nim-confutils/issues/11
- https://github.com/status-im/nim-confutils/issues/12
* Add CLI command in the readme
* Filter report and add notes about CPU cycles
* Report averages
* Add debugecho style time/cycle print
* Report when we skip BLS and state root verification
* Update to 0.9.3
* Generalize scenario parsing
* Support all block processing scenarios
* parallel bench runner PoC
* gitBetter load issues reporting (the load issues were invalid signature and expected to fail)
2019-12-20 17:14:43 +01:00
Dustin Brody
417f96213d
fix genesis interop by fixing deposit signature handling; add TRACE-level compilation to CI
2019-12-20 15:26:48 +00:00
Jacek Sieka
746659bdc6
bump stew, fix warnings ( #655 )
2019-12-20 14:25:33 +01:00
Dustin Brody
ea4afd7454
mark 19 more 0.9.2-compatible entities as 0.9.3-compatible
2019-12-19 11:46:30 +00:00
Dustin Brody
350a6c071a
mark a couple compatible dozen 0.9.2 functions/data structures as 0.9.3
2019-12-18 16:13:39 +00:00
Dustin Brody
0328cd49bf
mark several more functions and data structures as 0.9.3
2019-12-18 10:00:17 +00:00
Dustin Brody
1610981be6
mark several more spec-referencing code/data parts as 0.9.3
2019-12-17 16:51:46 +00:00
Dustin Brody
27bf8908a9
mark a couple dozen functions and data structures as 0.9.3; fix TRACE-level compiling; stop downloading 0.9.2 test vectors; update cosmetic/display spec versions in test suite
2019-12-17 16:51:46 +00:00
Dustin Brody
c824416f56
initial 0.9.3 spec update
2019-12-17 00:06:03 +02:00
Dustin Brody
c4daa726b5
fix AggregateAndProof definition
2019-12-13 09:04:30 +00:00
Dustin Brody
294db6aaca
initially implement specified attestation aggregation functions and data structures
2019-12-13 09:04:30 +00:00
Jacek Sieka
a3145f0f5c
cleanups
...
* move stuff out of beaconnode
* fix use-after-free in query
2019-12-10 14:47:52 +00:00
Zahary Karadjov
889031453f
The beacon node can be compiled with the LibP2P native back-end
...
This hasn't been tested yet even in local sim.
2019-12-10 15:02:16 +02:00
Jacek Sieka
eea523a89e
logging fixes
...
* don't log out-of-sync when there's no work to do
* small logging fixes
2019-12-10 10:18:30 +00:00
Zahary Karadjov
8ab0248209
Revert "tighten a few imports"
...
This reverts commit b24a9200d9
.
2019-12-10 02:18:47 +02:00
Jacek Sieka
b24a9200d9
tighten a few imports
2019-12-09 12:58:28 +00:00
Dustin Brody
c762c0232d
render get_beacon_proposer_index(...) return value an option and remove overly aggressive assertion formerly causing crashes when missing validators ( #617 )
...
* render get_beacon_proposer_index(...) return value an option and remove overly aggressive assertion formerly causing crashes when missing validators
* follow addBlock(...) after refactoring
* [skip ci] fix typo
2019-12-04 11:49:59 +01:00
kdeme
3b3a2b10f1
First attempt to have some fuzz tests exported for the fuzzing framework
2019-12-03 14:33:47 +02:00
Dustin Brody
e88e559caf
render visible gradual validator emptying on catchup
2019-12-02 18:24:30 +02:00
Jacek Sieka
2a728d9468
fix stack overflow in isAncestor recursion
2019-11-28 17:36:07 +02:00
Dustin Brody
bde20436e8
~50% speedup by fast-pathing Eth2Digest merkle hashing
2019-11-26 15:23:27 +00:00
Zahary Karadjov
8de4d38e4e
More tracing
2019-11-26 02:45:25 +02:00
Zahary Karadjov
957645d752
Fix the bulds with json logging enabled
2019-11-26 02:45:25 +02:00
Yuriy Glukhov
777b3f4e29
State/block pruning
2019-11-26 02:45:25 +02:00
Dustin Brody
1494bcc262
replace links to Apache and MIT licenses with HTTPS versions ( #592 )
2019-11-25 16:30:02 +01:00
Dustin Brody
b82328b148
convert hash_tree_roots_prefix(...) to an iterator
2019-11-25 14:48:59 +00:00
Dustin Brody
f6de87b80e
remove O(n^2) eth1 deposit processing and scaffolding comparing it with O(n) deposit processing; re-enable now-viable-to-run genesis state initialization tests with around 16,384 validators
2019-11-25 14:48:59 +00:00
Dustin Brody
fa2a703a17
switch more funcs and procs from global to module scope; create scaffolding for non-O(n^2) eth1 deposit processing with assertions for equivalent functionality; fix a few more shellcheck warnings
2019-11-25 14:48:59 +00:00
Dustin Brody
a8de94ad05
add validator_leaving logging at debug chronicles level for all call paths to initiate_validator_exit(...)
2019-11-25 09:08:15 +00:00
Dustin Brody
8d9fdb0afd
miscellanous cleanups and removing a few funcs/procs from unnecessary global scopes
2019-11-25 09:08:15 +00:00
Mamy Ratsimbazafy
1938379bcd
Automated beacon constant checks ( #583 )
...
* Fix SSZ bitlist deserialization super silly bug
* Add an automated sanity checks of the beacon chain constants
* Remove SSZ consensus skipping procs [skip ci]
* Add phase 1 domains
* Fix mainnet constants
* Add missing phase 1 constants on minimal (they are not needed somehow on mainnet)
* Rebase artifact: constants were defined twice
2019-11-22 20:56:39 +01:00
Dustin Brody
edfd65fd5d
stop download 0.9.1 test vectors; finish 0.9.2 update, primarily via fixing preset constants; remove a couple 0.19.6 shims
2019-11-22 16:41:43 +00:00
Dustin Brody
f5b8931fad
switch assert(...) to doAssert(...) and minor cleanup
2019-11-22 16:39:05 +00:00
Dustin Brody
41fa377638
mark all non-changed 0.9.1 items as 0.9.2 ( #576 )
2019-11-22 09:29:04 +01:00
Jacek Sieka
7c6d87051a
simplify validator api ( #573 )
...
* avoid passing whole state to validator api (easier when it goes
out-of-process)
* clean up some cruft
2019-11-21 10:57:59 +01:00
Dustin Brody
c0f009908c
re-enable test_interop based on zcli with 0.9.1 specs and update initialize_beacon_state_from_eth1(...) to 0.9.1 ( #569 )
...
* re-enable test_interop based on zcli with 0.9.1 specs and update initialize_beacon_state_from_eth1(...) to 0.9.1
* switch many procs to funcs
* fix import os.nim instead; ospaths is deprecated [Deprecated] warnings
2019-11-21 09:15:10 +00:00
Mamy Ratsimbazafy
bb0979f232
Ssz fixes ( #566 )
...
* SSZ signature from EF are always opaque blobs (security issue - https://github.com/status-im/nim-beacon-chain/issues/555 )
Enable
- Attestation
- Beaconstate (minimal only)
- Deposit
- DepositData
- ProposerSlashing
Updates #518
* mv debug_ssz to helpers
* Small reorg of the list types
* Fix IndexedAttestation, AttesterSlashing and BeaconBlock
* Deactivate on mainnet: AttesterSlashing, BeaconBlockBody, IndexedAttestation, Attestation, BeaconBlock
* Fix Validators on minimal and mainnet
2019-11-19 12:04:51 +01:00
Dustin Brody
2749cb14a6
convert mostly-uncompiled verify_merkle_branch(...) calls to newer is_valid_merkle_branch(...) name; re-enable several lines of deposit testing code and outline roadmap for completion
2019-11-18 17:35:58 +00:00
Dustin Brody
6f87c8fd89
verify that state_sim is justifying and finalizing; fix 3 more warnings; rename crosslink_committee_cache to beacon_committee_cache; fix O(n^2) usage of get_base_reward(...)
2019-11-18 17:35:58 +00:00
Dustin Brody
c7c439ac61
use bounded List[] SSZ type for more hashing consistency with spec
2019-11-18 09:35:17 +01:00
Jacek Sieka
14712bbbdc
random warning fixes
2019-11-15 12:05:18 +01:00
Dustin Brody
7e70d16da9
remove BeaconStateNew and associated testing scaffolding/infrastructure
2019-11-14 20:03:08 +01:00
Dustin Brody
96dcb1cf95
Remove shard-relating code
2019-11-14 19:48:12 +01:00