Commit Graph

425 Commits

Author SHA1 Message Date
Paul Hauner
b2fb2afb28
Revert "Move PublicKey to store uncomp. bytes."
This reverts commit bfa2e71b46.
2019-03-13 16:51:37 +11:00
Paul Hauner
587be831b5
Add method for dropping pubkey cache. Add bench. 2019-03-13 16:49:32 +11:00
Paul Hauner
6cd3c4bd1a
Add a cache for public keys to BeaconState
This allows for a fast lookup of "is this public key already in the
validator registry".
2019-03-13 16:40:28 +11:00
Paul Hauner
bfa2e71b46
Move PublicKey to store uncompressed bytes.
This is an optimisation that allows for faster hashing of a public key,
however it adds a penalty to SSZ encoding because we need to go
decompressed -> PublicKey -> compressed.

The spec presently uses compressed bytes to store public keys, however
I'm hoping it will change.
2019-03-13 14:41:43 +11:00
Age Manning
af7128062a
Merge pull request #298 from sigp/optimise-slasher-builder
Optimize TestingAttesterSlashingBuilder
2019-03-13 13:18:06 +11:00
Paul Hauner
f68f52e206
Fix issues with previous cherry pick 2019-03-13 12:22:15 +11:00
Michael Sproul
6101036c8e
Re-apply removal of duplicated ssz_tests
Also, re-apply: "use cfg(test) for test macros"
2019-03-13 12:18:27 +11:00
Paul Hauner
243ef2db80
Merge pull request #258 from sigp/ssz-fuzzing
Basic Fuzz Tests
2019-03-13 14:05:41 +13:00
Paul Hauner
123650efbb
Merge pull request #290 from mjkeating/tree_hash_spec_update
Updated TreeHash logic as per revised spec
2019-03-13 14:04:42 +13:00
Paul Hauner
6f5593ef2b
Optimize TestingAttesterSlashingBuilder 2019-03-13 10:24:02 +11:00
pawanjay176
2b7aa269c3 Add OptimizedLMDGhost fork choice rule and tests 2019-03-13 00:22:15 +05:30
Paul Hauner
2be0373f01
Add comments to new functions/structs. 2019-03-12 18:26:41 +11:00
Paul Hauner
f949919b9b
Add comments to epoch_processing 2019-03-12 18:02:53 +11:00
Paul Hauner
dc221f3220
Make attester/proposer slashing builders test-only
They didn't do anything useful or safe for production.
2019-03-12 17:30:00 +11:00
Paul Hauner
9057b436f3
Run rustfmt 2019-03-12 17:19:35 +11:00
Paul Hauner
fbfa233d36
Add debug messages to TestingBeaconStateBuilder 2019-03-12 17:16:12 +11:00
Paul Hauner
1b252c3f82
Implement new uncompressed bytes for PublicKey 2019-03-12 17:15:45 +11:00
Kirk Baird
c92f867cd8
Upgrade to signature scheme 0.6.0 2019-03-12 16:01:09 +11:00
Paul Hauner
efd56ebe37
Ignore file-exists error. 2019-03-12 14:42:31 +11:00
Paul Hauner
cce88c9923
Improve DX for loading validator keys from file 2019-03-12 14:39:16 +11:00
Paul Hauner
f34ae86cde
Add support for loading keypairs from file 2019-03-12 12:46:44 +11:00
Paul Hauner
9de6a0c733
Rename benching files 2019-03-12 09:57:00 +11:00
Paul Hauner
e81f1c31c9
Fix proof-of-possession issues.
These were introduced in an earlier commit
2019-03-11 19:47:33 +11:00
Paul Hauner
292991810d
Move state processing benches around 2019-03-11 19:46:22 +11:00
Paul Hauner
85e7dd8b5a
Merge branch 'timing-report' of github.com:sigp/lighthouse into timing-report 2019-03-11 19:03:22 +11:00
Paul Hauner
7e79a2b3d3
Improve PublicKey Hash impl efficiency
Instead of SSZ-encoding, we just use the AMCL tobytes method.
2019-03-11 19:01:44 +11:00
Paul Hauner
5e5cfb782e
Add concurrency to TestBeaconStateBuilder
Specifically to generating the initial validator objects.
2019-03-11 18:58:49 +11:00
Kirk Baird
25b08f0096
Run cargo fmt 2019-03-11 15:22:15 +11:00
Kirk Baird
2b991854ab Merge branch 'timing-report' of github.com:sigp/lighthouse into timing-report
Signed-off-by: Kirk Baird <baird.k@outlook.com>
2019-03-11 15:19:09 +11:00
Kirk Baird
191759dad0
Modify create_proof_of_possession, and verifying proof_of_possession in process_deposits 2019-03-11 15:18:45 +11:00
Paul Hauner
36085f63e9
Rename state trans benches 2019-03-11 14:52:21 +11:00
Kirk Baird
9c225936b6 Merge branch 'timing-report' of github.com:sigp/lighthouse into timing-report
Signed-off-by: Kirk Baird <baird.k@outlook.com>
2019-03-11 11:55:41 +11:00
Kirk Baird
df52669888
Add changes of create_proof_of_possession to pull 2019-03-11 11:55:09 +11:00
Paul Hauner
41844841c6
Update project tests to use new genesis structure 2019-03-11 11:52:16 +11:00
Paul Hauner
827365cfb0
Update fork_choice tests to use new state builder. 2019-03-11 11:33:35 +11:00
Paul Hauner
0b7082e2b9
Move benching_utils structs into types 2019-03-11 11:17:27 +11:00
Paul Hauner
6ae99a1462
Ensure drop times aren't included in benchmarks
Also moves to the new `iter_batched` method on criterion (instead of
`iter_with_setup`.
2019-03-11 10:56:31 +11:00
Paul Hauner
a44d80006a
Improve allocation in get_attestation_participants 2019-03-10 21:07:09 +11:00
Paul Hauner
53456a6c79
Remove last inclusion_slot(..) call 2019-03-10 21:06:40 +11:00
Paul Hauner
21d75ef0bd
Add tree hash benches 2019-03-10 18:31:14 +11:00
Paul Hauner
f27b62d410
Add optimisation for epoch processing 2019-03-10 17:49:06 +11:00
Paul Hauner
9cc8e2598f
Organise epoch benching file 2019-03-10 17:48:26 +11:00
Paul Hauner
89fc386264
Add extra checks for epoch benches finalization 2019-03-10 13:38:57 +11:00
Paul Hauner
e99da31da8
Tidy BeaconStateBuilder struct 2019-03-10 12:56:57 +11:00
Paul Hauner
c33e299176
Ensure epoch processing benches get new eth1 data 2019-03-10 12:56:37 +11:00
Paul Hauner
3f98849362
Optimise attester slashing processing. 2019-03-10 08:55:45 +11:00
Paul Hauner
e7fba3a473
Process transfers in parallel. 2019-03-10 08:36:49 +11:00
Paul Hauner
1ca99b8c4c
Optimise deposits processing. 2019-03-10 08:33:17 +11:00
Paul Hauner
5f3da0732f
Fix attestations bug in block builder.
It was previously producing too many attestations in some scenarios.
2019-03-10 08:31:40 +11:00
Paul Hauner
90d00773cb
Add slashings back into per-block processing.
I thought they would invalidate the attestations but I was wrong.
2019-03-10 08:30:36 +11:00
Paul Hauner
c1e386a0b1
Add deposits, transfers and exits to benches 2019-03-09 22:10:47 +11:00
Paul Hauner
6250c81bb9
Fix bug in attestation verification
We were ensuring that a validator was present on the aggregation
bitfield before adding their signature to the agg pub
2019-03-09 20:09:17 +11:00
Paul Hauner
62ab782ee2
Add TestingAttestationBuilder 2019-03-09 20:09:02 +11:00
Paul Hauner
4bf2490163
Re-organise types::test_utils dir 2019-03-09 18:59:32 +11:00
Paul Hauner
f8ec1e0cfa
Add slashings and attestations to per block benching 2019-03-09 18:56:01 +11:00
Paul Hauner
73ebb4bc2e
Add incomplete per-block processing benchmarks
Still needs to fill block with operations
2019-03-09 14:11:49 +11:00
mjkeating
7db2b51876 ran cargo fmt 2019-03-08 16:37:01 -08:00
Paul Hauner
ca5d9658ce
Move epoch processing benches into separate file 2019-03-09 10:45:28 +11:00
Paul Hauner
63743a962c
Add per-epoch benchmarks, optimise function. 2019-03-09 10:38:53 +11:00
mjkeating
d4f3bab68d Updated TreeHash logic as per revised spec 2019-03-08 15:24:07 -08:00
Paul Hauner
ddac7540bc
Allow test_harness to load validators from file. 2019-03-08 16:10:21 +11:00
Paul Hauner
4b21252ce4
Refactor BeaconChain and BeaconState genesis
Now it more easily supports using pre-build validator registries.
2019-03-08 15:33:45 +11:00
Paul Hauner
5c1458ba46
Add bls serde_vistors file 2019-03-08 13:19:37 +11:00
Paul Hauner
2f484db82c
Expose Signature in types crate 2019-03-08 13:16:33 +11:00
Paul Hauner
7ddbdc15bb
Impl serde deser for types::Deposit 2019-03-08 13:16:18 +11:00
Paul Hauner
3b6431b4b4
Impl serde ser and deser for bls keypairs 2019-03-08 13:15:41 +11:00
Paul Hauner
f479beb87e
Implement deposit merkle root verification.
It is currently disabled, but it's there for later.
2019-03-08 09:26:03 +11:00
Kirk Baird
08b803b6e7
Modifications to fuzz tests 2019-03-07 17:50:00 +11:00
Paul Hauner
1ef2652cac
Add transfer processing to BeaconChain 2019-03-07 17:23:11 +11:00
Paul Hauner
15e4aabd8a
Add deposit processing, fix clippy lints 2019-03-07 16:15:38 +11:00
Paul Hauner
195cb16a41
Update test_harness for spec v0.4.0 2019-03-07 14:29:21 +11:00
Paul Hauner
db3b6cba6d
Introduce Fork struct to block_producer
It's a pretty crappy solution, IMO. It shouldn't really belong in
"duties" but this gets the job done for now.
2019-03-07 13:54:56 +11:00
Paul Hauner
20ac1bf1f0
Remove unused files
They were accidentally introduced by a merge
2019-03-07 13:53:17 +11:00
Paul Hauner
5a21e19a31
Fix all compile errors from v0.4.0 update 2019-03-07 12:53:15 +11:00
Paul Hauner
e448882102
Re-add canonical_root methods to block & state
Turns out they were pretty useful
2019-03-07 12:25:00 +11:00
Paul Hauner
dad140a338
Fix attester and proposer compile issues
- Updated to use new signed roots (`SignedRoot`, `TreeHash`)
- Added a temporary domain value

Note: these changes are not a fully v0.4.0 upgrade.
2019-03-07 12:11:17 +11:00
Paul Hauner
93ce7b59e7
Merge branch 'master' into v0.4.0-types 2019-03-07 12:03:27 +11:00
Paul Hauner
e6526c9895
Refactor winning root logic 2019-03-07 11:32:53 +11:00
Paul Hauner
c8417ae009
Merge pull request #284 from michaelsproul/merkle-proofs
Implement library for verifying Merkle proofs
2019-03-07 12:30:04 +13:00
Paul Hauner
5a225d2983
Update per-slot processing to v0.4.0 2019-03-07 08:37:13 +11:00
Paul Hauner
8a25fd48cf
Fix per_epoch_processing so it compiles again 2019-03-06 18:57:41 +11:00
Paul Hauner
17210faf3a
Start reorg of per_epoch_processing 2019-03-06 17:14:54 +11:00
Paul Hauner
521d48d37c
Break per-block-processing into smaller fns
Will enable benchmarking of each individual fn
2019-03-06 17:03:18 +11:00
Michael Sproul
7bb5e1c151
Implement library for verifying Merkle proofs. 2019-03-06 16:59:36 +11:00
Paul Hauner
599948b26b
Add comments to block_processing code 2019-03-06 16:24:56 +11:00
Paul Hauner
40f74c9b26
First compiling version of per-block-proc refactor 2019-03-06 15:22:45 +11:00
Paul Hauner
a15ed0acd3
Start new Error structure in state_processing 2019-03-06 10:22:19 +11:00
Paul Hauner
0be8e57fd3
Further v0.4.0 updates to types crate 2019-03-06 10:21:55 +11:00
Michael Sproul
6253167cac
Update ethereum-types to 0.5 2019-03-06 10:08:35 +11:00
Paul Hauner
96ec53c6a8
Update beacon_state.rs to spec v0.4.0 2019-03-05 18:22:37 +11:00
Paul Hauner
38a1b94f61
Fix compile issues in types crate 2019-03-05 17:38:17 +11:00
Paul Hauner
e0ccde1ce3
Remove unused function from @agemanning 2019-03-05 17:37:09 +11:00
Michael Sproul
33a3161905
Remove SSZ round-trip test duplication
Closes #244
2019-03-05 17:29:08 +11:00
Michael Sproul
d519bc1388
Use cfg(test) for test macros 2019-03-05 17:29:08 +11:00
Paul Hauner
0f7d2c168c
Fix compile errors in beacon_state.rs 2019-03-05 17:19:36 +11:00
Paul Hauner
262e9cf0bc
Additional spec updates 2019-03-05 09:51:29 +11:00
Paul Hauner
663d39739f
Do project-wide s/epoch_length/slots_per_epoch/g 2019-03-04 17:51:54 +11:00
Paul Hauner
a1af65ce1a
Update ChainSpec to v0.4.0 2019-03-04 17:48:19 +11:00
Paul Hauner
7f10d41121
Remove old spec types
They have been made obsolete
2019-03-04 17:17:07 +11:00
Paul Hauner
9769ca4665
Update all struct definitions
Does not compile
2019-03-04 17:13:50 +11:00