2019-12-09 11:39:44 +00:00
|
|
|
# This file is automatically @generated by Cargo.
|
|
|
|
# It is not intended for manual editing.
|
2021-06-30 04:56:22 +00:00
|
|
|
version = 3
|
|
|
|
|
2019-12-09 11:39:44 +00:00
|
|
|
[[package]]
|
|
|
|
name = "account_manager"
|
2020-11-18 00:44:28 +00:00
|
|
|
version = "0.3.5"
|
2019-12-09 11:39:44 +00:00
|
|
|
dependencies = [
|
2020-07-22 09:34:55 +00:00
|
|
|
"account_utils",
|
2020-05-10 09:56:31 +00:00
|
|
|
"bls",
|
|
|
|
"clap",
|
|
|
|
"clap_utils",
|
2020-09-29 00:02:44 +00:00
|
|
|
"directory",
|
2020-05-10 09:56:31 +00:00
|
|
|
"environment",
|
2020-10-29 23:25:19 +00:00
|
|
|
"eth2",
|
Wallet-based, encrypted key management (#1138)
* Update hashmap hashset to stable futures
* Adds panic test to hashset delay
* Port remote_beacon_node to stable futures
* Fix lcli merge conflicts
* Non rpc stuff compiles
* Remove padding
* Add error enum, zeroize more things
* Fix comment
* protocol.rs compiles
* Port websockets, timer and notifier to stable futures (#1035)
* Fix lcli
* Port timer to stable futures
* Fix timer
* Port websocket_server to stable futures
* Port notifier to stable futures
* Add TODOS
* Port remote_beacon_node to stable futures
* Partial eth2-libp2p stable future upgrade
* Finished first round of fighting RPC types
* Further progress towards porting eth2-libp2p adds caching to discovery
* Update behaviour
* Add keystore builder
* Remove keystore stuff from val client
* Add more tests, comments
* RPC handler to stable futures
* Update RPC to master libp2p
* Add more comments, test vectors
* Network service additions
* Progress on improving JSON validation
* More JSON verification
* Start moving JSON into own mod
* Remove old code
* Add more tests, reader/writers
* Tidy
* Move keystore into own file
* Move more logic into keystore file
* Tidy
* Tidy
* Fix the fallback transport construction (#1102)
* Allow for odd-character hex
* Correct warning
* Remove hashmap delay
* Compiling version of eth2-libp2p
* Update all crates versions
* Fix conversion function and add tests (#1113)
* Add more json missing field checks
* Use scrypt by default
* Tidy, address comments
* Test path and uuid in vectors
* Fix comment
* Add checks for kdf params
* Enforce empty kdf message
* Port validator_client to stable futures (#1114)
* Add PH & MS slot clock changes
* Account for genesis time
* Add progress on duties refactor
* Add simple is_aggregator bool to val subscription
* Start work on attestation_verification.rs
* Add progress on ObservedAttestations
* Progress with ObservedAttestations
* Fix tests
* Add observed attestations to the beacon chain
* Add attestation observation to processing code
* Add progress on attestation verification
* Add first draft of ObservedAttesters
* Add more tests
* Add observed attesters to beacon chain
* Add observers to attestation processing
* Add more attestation verification
* Create ObservedAggregators map
* Remove commented-out code
* Add observed aggregators into chain
* Add progress
* Finish adding features to attestation verification
* Ensure beacon chain compiles
* Link attn verification into chain
* Integrate new attn verification in chain
* Remove old attestation processing code
* Start trying to fix beacon_chain tests
* Split adding into pools into two functions
* Add aggregation to harness
* Get test harness working again
* Adjust the number of aggregators for test harness
* Fix edge-case in harness
* Integrate new attn processing in network
* Fix compile bug in validator_client
* Update validator API endpoints
* Fix aggreagation in test harness
* Fix enum thing
* Fix attestation observation bug:
* Patch failing API tests
* Start adding comments to attestation verification
* Remove unused attestation field
* Unify "is block known" logic
* Update comments
* Supress fork choice errors for network processing
* Add todos
* Tidy
* Add gossip attn tests
* Disallow test harness to produce old attns
* Comment out in-progress tests
* Partially address pruning tests
* Fix failing store test
* Add aggregate tests
* Add comments about which spec conditions we check
* Dont re-aggregate
* Split apart test harness attn production
* Fix compile error in network
* Make progress on commented-out test
* Fix skipping attestation test
* Add fork choice verification tests
* Tidy attn tests, remove dead code
* Remove some accidentally added code
* Fix clippy lint
* Rename test file
* Add block tests, add cheap block proposer check
* Rename block testing file
* Add observed_block_producers
* Tidy
* Switch around block signature verification
* Finish block testing
* Remove gossip from signature tests
* First pass of self review
* Fix deviation in spec
* Update test spec tags
* Start moving over to hashset
* Finish moving observed attesters to hashmap
* Move aggregation pool over to hashmap
* Make fc attn borrow again
* Fix rest_api compile error
* Fix missing comments
* Fix monster test
* Uncomment increasing slots test
* Address remaining comments
* Remove unsafe, use cfg test
* Remove cfg test flag
* Fix dodgy comment
* Revert "Update hashmap hashset to stable futures"
This reverts commit d432378a3cc5cd67fc29c0b15b96b886c1323554.
* Revert "Adds panic test to hashset delay"
This reverts commit 281502396fc5b90d9c421a309c2c056982c9525b.
* Ported attestation_service
* Ported duties_service
* Ported fork_service
* More ports
* Port block_service
* Minor fixes
* VC compiles
* Update TODOS
* Borrow self where possible
* Ignore aggregates that are already known.
* Unify aggregator modulo logic
* Fix typo in logs
* Refactor validator subscription logic
* Avoid reproducing selection proof
* Skip HTTP call if no subscriptions
* Rename DutyAndState -> DutyAndProof
* Tidy logs
* Print root as dbg
* Fix compile errors in tests
* Fix compile error in test
* Re-Fix attestation and duties service
* Minor fixes
Co-authored-by: Paul Hauner <paul@paulhauner.com>
* Expose json_keystore mod
* First commits on path derivation
* Progress with implementation
* More progress
* Passing intermediate test vectors
* Tidy, add comments
* Add DerivedKey structs
* Move key derivation into own crate
* Add zeroize structs
* Return error for empty seed
* Add tests
* Tidy
* First commits on path derivation
* Progress with implementation
* Move key derivation into own crate
* Start defining JSON wallet
* Add progress
* Split out encrypt/decrypt
* First commits on path derivation
* Progress with implementation
* More progress
* Passing intermediate test vectors
* Tidy, add comments
* Add DerivedKey structs
* Move key derivation into own crate
* Add zeroize structs
* Return error for empty seed
* Add tests
* Tidy
* Add progress
* Replace some password usage with slice
* First commits on path derivation
* Progress with implementation
* More progress
* Passing intermediate test vectors
* Tidy, add comments
* Add DerivedKey structs
* Move key derivation into own crate
* Add zeroize structs
* Return error for empty seed
* Add tests
* Tidy
* Add progress
* Expose PlainText struct
* First commits on path derivation
* Progress with implementation
* More progress
* Passing intermediate test vectors
* Tidy, add comments
* Add DerivedKey structs
* Move key derivation into own crate
* Add zeroize structs
* Return error for empty seed
* Add tests
* Tidy
* Add builder
* Expose consts, remove Password
* Minor progress
* Expose SALT_SIZE
* First compiling version
* Add test vectors
* Network crate update to stable futures
* Move dbg assert statement
* Port account_manager to stable futures (#1121)
* Port account_manager to stable futures
* Run async fns in tokio environment
* Port rest_api crate to stable futures (#1118)
* Port rest_api lib to stable futures
* Reduce tokio features
* Update notifier to stable futures
* Builder update
* Further updates
* Add mnemonic, tidy
* Convert self referential async functions
* Tidy
* Add testing
* Add first attempt at validator_dir
* Present pubkey field
* stable futures fixes (#1124)
* Fix eth1 update functions
* Fix genesis and client
* Fix beacon node lib
* Return appropriate runtimes from environment
* Fix test rig
* Refactor eth1 service update
* Upgrade simulator to stable futures
* Lighthouse compiles on stable futures
* Add first pass of wallet manager
* Progress with CLI
* Remove println debugging statement
* Tidy output
* Tidy 600 perms
* Update libp2p service, start rpc test upgrade
* Add validator creation flow
* Update network crate for new libp2p
* Start tidying, adding comments
* Update tokio::codec to futures_codec (#1128)
* Further work towards RPC corrections
* Correct http timeout and network service select
* Add wallet mgr testing
* Shift LockedWallet into own file
* Add comments to fs
* Start integration into VC
* Use tokio runtime for libp2p
* Revert "Update tokio::codec to futures_codec (#1128)"
This reverts commit e57aea924acf5cbabdcea18895ac07e38a425ed7.
* Upgrade RPC libp2p tests
* Upgrade secio fallback test
* Add lcli keypair upgrade command
* Upgrade gossipsub examples
* Clean up RPC protocol
* Test fixes (#1133)
* Correct websocket timeout and run on os thread
* Fix network test
* Add --secrets-dir to VC
* Remove --legacy-keys from VC
* Clean up PR
* Correct tokio tcp move attestation service tests
* Upgrade attestation service tests
* Fix sim
* Correct network test
* Correct genesis test
* Start docs
* Add progress for validator generation
* Tidy error messages
* Test corrections
* Log info when block is received
* Modify logs and update attester service events
* Stable futures: fixes to vc, eth1 and account manager (#1142)
* Add local testnet scripts
* Remove whiteblock script
* Rename local testnet script
* Move spawns onto handle
* Fix VC panic
* Initial fix to block production issue
* Tidy block producer fix
* Tidy further
* Add local testnet clean script
* Run cargo fmt
* Tidy duties service
* Tidy fork service
* Tidy ForkService
* Tidy AttestationService
* Tidy notifier
* Ensure await is not suppressed in eth1
* Ensure await is not suppressed in account_manager
* Use .ok() instead of .unwrap_or(())
* RPC decoding test for proto
* Update discv5 and eth2-libp2p deps
* Run cargo fmt
* Pre-build keystores for sim
* Fix lcli double runtime issue (#1144)
* Handle stream termination and dialing peer errors
* Correct peer_info variant types
* Add progress on new deposit flow
* Remove unnecessary warnings
* Handle subnet unsubscription removal and improve logigng
* Add logs around ping
* Upgrade discv5 and improve logging
* Handle peer connection status for multiple connections
* Improve network service logging
* Add more incomplete progress
* Improve logging around peer manager
* Upgrade swarm poll centralise peer management
* Identify clients on error
* Fix `remove_peer` in sync (#1150)
* remove_peer removes from all chains
* Remove logs
* Fix early return from loop
* Improved logging, fix panic
* Partially correct tests
* Add deposit command
* Remove old validator directory
* Start adding AM tests
* Stable futures: Vc sync (#1149)
* Improve syncing heuristic
* Add comments
* Use safer method for tolerance
* Fix tests
* Binary testing progress
* Progress with CLI tests
* Use constants for flags
* More account manager testing
* Improve CLI tests
* Move upgrade-legacy-keypairs into account man
* Use rayon for VC key generation
* Add comments to `validator_dir`
* Add testing to validator_dir
* Add fix to eth1-sim
* Check errors in eth1-sim
* Fix mutability issue
* Ensure password file ends in .pass
* Add more tests to wallet manager
* Tidy deposit
* Tidy account manager
* Tidy account manager
* Remove panic
* Generate keypairs earlier in sim
* Tidy eth1-sime
* Try to fix eth1 sim
* Address review comments
* Fix typo in CLI command
* Update docs
* Disable eth1 sim
* Remove eth1 sim completely
Co-authored-by: Age Manning <Age@AgeManning.com>
Co-authored-by: pawanjay176 <pawandhananjay@gmail.com>
2020-05-18 09:01:45 +00:00
|
|
|
"eth2_keystore",
|
2020-12-08 05:41:10 +00:00
|
|
|
"eth2_network_config",
|
Wallet-based, encrypted key management (#1138)
* Update hashmap hashset to stable futures
* Adds panic test to hashset delay
* Port remote_beacon_node to stable futures
* Fix lcli merge conflicts
* Non rpc stuff compiles
* Remove padding
* Add error enum, zeroize more things
* Fix comment
* protocol.rs compiles
* Port websockets, timer and notifier to stable futures (#1035)
* Fix lcli
* Port timer to stable futures
* Fix timer
* Port websocket_server to stable futures
* Port notifier to stable futures
* Add TODOS
* Port remote_beacon_node to stable futures
* Partial eth2-libp2p stable future upgrade
* Finished first round of fighting RPC types
* Further progress towards porting eth2-libp2p adds caching to discovery
* Update behaviour
* Add keystore builder
* Remove keystore stuff from val client
* Add more tests, comments
* RPC handler to stable futures
* Update RPC to master libp2p
* Add more comments, test vectors
* Network service additions
* Progress on improving JSON validation
* More JSON verification
* Start moving JSON into own mod
* Remove old code
* Add more tests, reader/writers
* Tidy
* Move keystore into own file
* Move more logic into keystore file
* Tidy
* Tidy
* Fix the fallback transport construction (#1102)
* Allow for odd-character hex
* Correct warning
* Remove hashmap delay
* Compiling version of eth2-libp2p
* Update all crates versions
* Fix conversion function and add tests (#1113)
* Add more json missing field checks
* Use scrypt by default
* Tidy, address comments
* Test path and uuid in vectors
* Fix comment
* Add checks for kdf params
* Enforce empty kdf message
* Port validator_client to stable futures (#1114)
* Add PH & MS slot clock changes
* Account for genesis time
* Add progress on duties refactor
* Add simple is_aggregator bool to val subscription
* Start work on attestation_verification.rs
* Add progress on ObservedAttestations
* Progress with ObservedAttestations
* Fix tests
* Add observed attestations to the beacon chain
* Add attestation observation to processing code
* Add progress on attestation verification
* Add first draft of ObservedAttesters
* Add more tests
* Add observed attesters to beacon chain
* Add observers to attestation processing
* Add more attestation verification
* Create ObservedAggregators map
* Remove commented-out code
* Add observed aggregators into chain
* Add progress
* Finish adding features to attestation verification
* Ensure beacon chain compiles
* Link attn verification into chain
* Integrate new attn verification in chain
* Remove old attestation processing code
* Start trying to fix beacon_chain tests
* Split adding into pools into two functions
* Add aggregation to harness
* Get test harness working again
* Adjust the number of aggregators for test harness
* Fix edge-case in harness
* Integrate new attn processing in network
* Fix compile bug in validator_client
* Update validator API endpoints
* Fix aggreagation in test harness
* Fix enum thing
* Fix attestation observation bug:
* Patch failing API tests
* Start adding comments to attestation verification
* Remove unused attestation field
* Unify "is block known" logic
* Update comments
* Supress fork choice errors for network processing
* Add todos
* Tidy
* Add gossip attn tests
* Disallow test harness to produce old attns
* Comment out in-progress tests
* Partially address pruning tests
* Fix failing store test
* Add aggregate tests
* Add comments about which spec conditions we check
* Dont re-aggregate
* Split apart test harness attn production
* Fix compile error in network
* Make progress on commented-out test
* Fix skipping attestation test
* Add fork choice verification tests
* Tidy attn tests, remove dead code
* Remove some accidentally added code
* Fix clippy lint
* Rename test file
* Add block tests, add cheap block proposer check
* Rename block testing file
* Add observed_block_producers
* Tidy
* Switch around block signature verification
* Finish block testing
* Remove gossip from signature tests
* First pass of self review
* Fix deviation in spec
* Update test spec tags
* Start moving over to hashset
* Finish moving observed attesters to hashmap
* Move aggregation pool over to hashmap
* Make fc attn borrow again
* Fix rest_api compile error
* Fix missing comments
* Fix monster test
* Uncomment increasing slots test
* Address remaining comments
* Remove unsafe, use cfg test
* Remove cfg test flag
* Fix dodgy comment
* Revert "Update hashmap hashset to stable futures"
This reverts commit d432378a3cc5cd67fc29c0b15b96b886c1323554.
* Revert "Adds panic test to hashset delay"
This reverts commit 281502396fc5b90d9c421a309c2c056982c9525b.
* Ported attestation_service
* Ported duties_service
* Ported fork_service
* More ports
* Port block_service
* Minor fixes
* VC compiles
* Update TODOS
* Borrow self where possible
* Ignore aggregates that are already known.
* Unify aggregator modulo logic
* Fix typo in logs
* Refactor validator subscription logic
* Avoid reproducing selection proof
* Skip HTTP call if no subscriptions
* Rename DutyAndState -> DutyAndProof
* Tidy logs
* Print root as dbg
* Fix compile errors in tests
* Fix compile error in test
* Re-Fix attestation and duties service
* Minor fixes
Co-authored-by: Paul Hauner <paul@paulhauner.com>
* Expose json_keystore mod
* First commits on path derivation
* Progress with implementation
* More progress
* Passing intermediate test vectors
* Tidy, add comments
* Add DerivedKey structs
* Move key derivation into own crate
* Add zeroize structs
* Return error for empty seed
* Add tests
* Tidy
* First commits on path derivation
* Progress with implementation
* Move key derivation into own crate
* Start defining JSON wallet
* Add progress
* Split out encrypt/decrypt
* First commits on path derivation
* Progress with implementation
* More progress
* Passing intermediate test vectors
* Tidy, add comments
* Add DerivedKey structs
* Move key derivation into own crate
* Add zeroize structs
* Return error for empty seed
* Add tests
* Tidy
* Add progress
* Replace some password usage with slice
* First commits on path derivation
* Progress with implementation
* More progress
* Passing intermediate test vectors
* Tidy, add comments
* Add DerivedKey structs
* Move key derivation into own crate
* Add zeroize structs
* Return error for empty seed
* Add tests
* Tidy
* Add progress
* Expose PlainText struct
* First commits on path derivation
* Progress with implementation
* More progress
* Passing intermediate test vectors
* Tidy, add comments
* Add DerivedKey structs
* Move key derivation into own crate
* Add zeroize structs
* Return error for empty seed
* Add tests
* Tidy
* Add builder
* Expose consts, remove Password
* Minor progress
* Expose SALT_SIZE
* First compiling version
* Add test vectors
* Network crate update to stable futures
* Move dbg assert statement
* Port account_manager to stable futures (#1121)
* Port account_manager to stable futures
* Run async fns in tokio environment
* Port rest_api crate to stable futures (#1118)
* Port rest_api lib to stable futures
* Reduce tokio features
* Update notifier to stable futures
* Builder update
* Further updates
* Add mnemonic, tidy
* Convert self referential async functions
* Tidy
* Add testing
* Add first attempt at validator_dir
* Present pubkey field
* stable futures fixes (#1124)
* Fix eth1 update functions
* Fix genesis and client
* Fix beacon node lib
* Return appropriate runtimes from environment
* Fix test rig
* Refactor eth1 service update
* Upgrade simulator to stable futures
* Lighthouse compiles on stable futures
* Add first pass of wallet manager
* Progress with CLI
* Remove println debugging statement
* Tidy output
* Tidy 600 perms
* Update libp2p service, start rpc test upgrade
* Add validator creation flow
* Update network crate for new libp2p
* Start tidying, adding comments
* Update tokio::codec to futures_codec (#1128)
* Further work towards RPC corrections
* Correct http timeout and network service select
* Add wallet mgr testing
* Shift LockedWallet into own file
* Add comments to fs
* Start integration into VC
* Use tokio runtime for libp2p
* Revert "Update tokio::codec to futures_codec (#1128)"
This reverts commit e57aea924acf5cbabdcea18895ac07e38a425ed7.
* Upgrade RPC libp2p tests
* Upgrade secio fallback test
* Add lcli keypair upgrade command
* Upgrade gossipsub examples
* Clean up RPC protocol
* Test fixes (#1133)
* Correct websocket timeout and run on os thread
* Fix network test
* Add --secrets-dir to VC
* Remove --legacy-keys from VC
* Clean up PR
* Correct tokio tcp move attestation service tests
* Upgrade attestation service tests
* Fix sim
* Correct network test
* Correct genesis test
* Start docs
* Add progress for validator generation
* Tidy error messages
* Test corrections
* Log info when block is received
* Modify logs and update attester service events
* Stable futures: fixes to vc, eth1 and account manager (#1142)
* Add local testnet scripts
* Remove whiteblock script
* Rename local testnet script
* Move spawns onto handle
* Fix VC panic
* Initial fix to block production issue
* Tidy block producer fix
* Tidy further
* Add local testnet clean script
* Run cargo fmt
* Tidy duties service
* Tidy fork service
* Tidy ForkService
* Tidy AttestationService
* Tidy notifier
* Ensure await is not suppressed in eth1
* Ensure await is not suppressed in account_manager
* Use .ok() instead of .unwrap_or(())
* RPC decoding test for proto
* Update discv5 and eth2-libp2p deps
* Run cargo fmt
* Pre-build keystores for sim
* Fix lcli double runtime issue (#1144)
* Handle stream termination and dialing peer errors
* Correct peer_info variant types
* Add progress on new deposit flow
* Remove unnecessary warnings
* Handle subnet unsubscription removal and improve logigng
* Add logs around ping
* Upgrade discv5 and improve logging
* Handle peer connection status for multiple connections
* Improve network service logging
* Add more incomplete progress
* Improve logging around peer manager
* Upgrade swarm poll centralise peer management
* Identify clients on error
* Fix `remove_peer` in sync (#1150)
* remove_peer removes from all chains
* Remove logs
* Fix early return from loop
* Improved logging, fix panic
* Partially correct tests
* Add deposit command
* Remove old validator directory
* Start adding AM tests
* Stable futures: Vc sync (#1149)
* Improve syncing heuristic
* Add comments
* Use safer method for tolerance
* Fix tests
* Binary testing progress
* Progress with CLI tests
* Use constants for flags
* More account manager testing
* Improve CLI tests
* Move upgrade-legacy-keypairs into account man
* Use rayon for VC key generation
* Add comments to `validator_dir`
* Add testing to validator_dir
* Add fix to eth1-sim
* Check errors in eth1-sim
* Fix mutability issue
* Ensure password file ends in .pass
* Add more tests to wallet manager
* Tidy deposit
* Tidy account manager
* Tidy account manager
* Remove panic
* Generate keypairs earlier in sim
* Tidy eth1-sime
* Try to fix eth1 sim
* Address review comments
* Fix typo in CLI command
* Update docs
* Disable eth1 sim
* Remove eth1 sim completely
Co-authored-by: Age Manning <Age@AgeManning.com>
Co-authored-by: pawanjay176 <pawandhananjay@gmail.com>
2020-05-18 09:01:45 +00:00
|
|
|
"eth2_wallet",
|
|
|
|
"eth2_wallet_manager",
|
2021-05-19 23:05:16 +00:00
|
|
|
"filesystem",
|
2020-10-29 23:25:19 +00:00
|
|
|
"safe_arith",
|
2021-05-04 01:59:51 +00:00
|
|
|
"sensitive_url",
|
2020-10-02 01:42:27 +00:00
|
|
|
"slashing_protection",
|
2020-10-29 23:25:19 +00:00
|
|
|
"slot_clock",
|
|
|
|
"tempfile",
|
2021-08-17 01:00:24 +00:00
|
|
|
"tokio",
|
2020-05-10 09:56:31 +00:00
|
|
|
"types",
|
Wallet-based, encrypted key management (#1138)
* Update hashmap hashset to stable futures
* Adds panic test to hashset delay
* Port remote_beacon_node to stable futures
* Fix lcli merge conflicts
* Non rpc stuff compiles
* Remove padding
* Add error enum, zeroize more things
* Fix comment
* protocol.rs compiles
* Port websockets, timer and notifier to stable futures (#1035)
* Fix lcli
* Port timer to stable futures
* Fix timer
* Port websocket_server to stable futures
* Port notifier to stable futures
* Add TODOS
* Port remote_beacon_node to stable futures
* Partial eth2-libp2p stable future upgrade
* Finished first round of fighting RPC types
* Further progress towards porting eth2-libp2p adds caching to discovery
* Update behaviour
* Add keystore builder
* Remove keystore stuff from val client
* Add more tests, comments
* RPC handler to stable futures
* Update RPC to master libp2p
* Add more comments, test vectors
* Network service additions
* Progress on improving JSON validation
* More JSON verification
* Start moving JSON into own mod
* Remove old code
* Add more tests, reader/writers
* Tidy
* Move keystore into own file
* Move more logic into keystore file
* Tidy
* Tidy
* Fix the fallback transport construction (#1102)
* Allow for odd-character hex
* Correct warning
* Remove hashmap delay
* Compiling version of eth2-libp2p
* Update all crates versions
* Fix conversion function and add tests (#1113)
* Add more json missing field checks
* Use scrypt by default
* Tidy, address comments
* Test path and uuid in vectors
* Fix comment
* Add checks for kdf params
* Enforce empty kdf message
* Port validator_client to stable futures (#1114)
* Add PH & MS slot clock changes
* Account for genesis time
* Add progress on duties refactor
* Add simple is_aggregator bool to val subscription
* Start work on attestation_verification.rs
* Add progress on ObservedAttestations
* Progress with ObservedAttestations
* Fix tests
* Add observed attestations to the beacon chain
* Add attestation observation to processing code
* Add progress on attestation verification
* Add first draft of ObservedAttesters
* Add more tests
* Add observed attesters to beacon chain
* Add observers to attestation processing
* Add more attestation verification
* Create ObservedAggregators map
* Remove commented-out code
* Add observed aggregators into chain
* Add progress
* Finish adding features to attestation verification
* Ensure beacon chain compiles
* Link attn verification into chain
* Integrate new attn verification in chain
* Remove old attestation processing code
* Start trying to fix beacon_chain tests
* Split adding into pools into two functions
* Add aggregation to harness
* Get test harness working again
* Adjust the number of aggregators for test harness
* Fix edge-case in harness
* Integrate new attn processing in network
* Fix compile bug in validator_client
* Update validator API endpoints
* Fix aggreagation in test harness
* Fix enum thing
* Fix attestation observation bug:
* Patch failing API tests
* Start adding comments to attestation verification
* Remove unused attestation field
* Unify "is block known" logic
* Update comments
* Supress fork choice errors for network processing
* Add todos
* Tidy
* Add gossip attn tests
* Disallow test harness to produce old attns
* Comment out in-progress tests
* Partially address pruning tests
* Fix failing store test
* Add aggregate tests
* Add comments about which spec conditions we check
* Dont re-aggregate
* Split apart test harness attn production
* Fix compile error in network
* Make progress on commented-out test
* Fix skipping attestation test
* Add fork choice verification tests
* Tidy attn tests, remove dead code
* Remove some accidentally added code
* Fix clippy lint
* Rename test file
* Add block tests, add cheap block proposer check
* Rename block testing file
* Add observed_block_producers
* Tidy
* Switch around block signature verification
* Finish block testing
* Remove gossip from signature tests
* First pass of self review
* Fix deviation in spec
* Update test spec tags
* Start moving over to hashset
* Finish moving observed attesters to hashmap
* Move aggregation pool over to hashmap
* Make fc attn borrow again
* Fix rest_api compile error
* Fix missing comments
* Fix monster test
* Uncomment increasing slots test
* Address remaining comments
* Remove unsafe, use cfg test
* Remove cfg test flag
* Fix dodgy comment
* Revert "Update hashmap hashset to stable futures"
This reverts commit d432378a3cc5cd67fc29c0b15b96b886c1323554.
* Revert "Adds panic test to hashset delay"
This reverts commit 281502396fc5b90d9c421a309c2c056982c9525b.
* Ported attestation_service
* Ported duties_service
* Ported fork_service
* More ports
* Port block_service
* Minor fixes
* VC compiles
* Update TODOS
* Borrow self where possible
* Ignore aggregates that are already known.
* Unify aggregator modulo logic
* Fix typo in logs
* Refactor validator subscription logic
* Avoid reproducing selection proof
* Skip HTTP call if no subscriptions
* Rename DutyAndState -> DutyAndProof
* Tidy logs
* Print root as dbg
* Fix compile errors in tests
* Fix compile error in test
* Re-Fix attestation and duties service
* Minor fixes
Co-authored-by: Paul Hauner <paul@paulhauner.com>
* Expose json_keystore mod
* First commits on path derivation
* Progress with implementation
* More progress
* Passing intermediate test vectors
* Tidy, add comments
* Add DerivedKey structs
* Move key derivation into own crate
* Add zeroize structs
* Return error for empty seed
* Add tests
* Tidy
* First commits on path derivation
* Progress with implementation
* Move key derivation into own crate
* Start defining JSON wallet
* Add progress
* Split out encrypt/decrypt
* First commits on path derivation
* Progress with implementation
* More progress
* Passing intermediate test vectors
* Tidy, add comments
* Add DerivedKey structs
* Move key derivation into own crate
* Add zeroize structs
* Return error for empty seed
* Add tests
* Tidy
* Add progress
* Replace some password usage with slice
* First commits on path derivation
* Progress with implementation
* More progress
* Passing intermediate test vectors
* Tidy, add comments
* Add DerivedKey structs
* Move key derivation into own crate
* Add zeroize structs
* Return error for empty seed
* Add tests
* Tidy
* Add progress
* Expose PlainText struct
* First commits on path derivation
* Progress with implementation
* More progress
* Passing intermediate test vectors
* Tidy, add comments
* Add DerivedKey structs
* Move key derivation into own crate
* Add zeroize structs
* Return error for empty seed
* Add tests
* Tidy
* Add builder
* Expose consts, remove Password
* Minor progress
* Expose SALT_SIZE
* First compiling version
* Add test vectors
* Network crate update to stable futures
* Move dbg assert statement
* Port account_manager to stable futures (#1121)
* Port account_manager to stable futures
* Run async fns in tokio environment
* Port rest_api crate to stable futures (#1118)
* Port rest_api lib to stable futures
* Reduce tokio features
* Update notifier to stable futures
* Builder update
* Further updates
* Add mnemonic, tidy
* Convert self referential async functions
* Tidy
* Add testing
* Add first attempt at validator_dir
* Present pubkey field
* stable futures fixes (#1124)
* Fix eth1 update functions
* Fix genesis and client
* Fix beacon node lib
* Return appropriate runtimes from environment
* Fix test rig
* Refactor eth1 service update
* Upgrade simulator to stable futures
* Lighthouse compiles on stable futures
* Add first pass of wallet manager
* Progress with CLI
* Remove println debugging statement
* Tidy output
* Tidy 600 perms
* Update libp2p service, start rpc test upgrade
* Add validator creation flow
* Update network crate for new libp2p
* Start tidying, adding comments
* Update tokio::codec to futures_codec (#1128)
* Further work towards RPC corrections
* Correct http timeout and network service select
* Add wallet mgr testing
* Shift LockedWallet into own file
* Add comments to fs
* Start integration into VC
* Use tokio runtime for libp2p
* Revert "Update tokio::codec to futures_codec (#1128)"
This reverts commit e57aea924acf5cbabdcea18895ac07e38a425ed7.
* Upgrade RPC libp2p tests
* Upgrade secio fallback test
* Add lcli keypair upgrade command
* Upgrade gossipsub examples
* Clean up RPC protocol
* Test fixes (#1133)
* Correct websocket timeout and run on os thread
* Fix network test
* Add --secrets-dir to VC
* Remove --legacy-keys from VC
* Clean up PR
* Correct tokio tcp move attestation service tests
* Upgrade attestation service tests
* Fix sim
* Correct network test
* Correct genesis test
* Start docs
* Add progress for validator generation
* Tidy error messages
* Test corrections
* Log info when block is received
* Modify logs and update attester service events
* Stable futures: fixes to vc, eth1 and account manager (#1142)
* Add local testnet scripts
* Remove whiteblock script
* Rename local testnet script
* Move spawns onto handle
* Fix VC panic
* Initial fix to block production issue
* Tidy block producer fix
* Tidy further
* Add local testnet clean script
* Run cargo fmt
* Tidy duties service
* Tidy fork service
* Tidy ForkService
* Tidy AttestationService
* Tidy notifier
* Ensure await is not suppressed in eth1
* Ensure await is not suppressed in account_manager
* Use .ok() instead of .unwrap_or(())
* RPC decoding test for proto
* Update discv5 and eth2-libp2p deps
* Run cargo fmt
* Pre-build keystores for sim
* Fix lcli double runtime issue (#1144)
* Handle stream termination and dialing peer errors
* Correct peer_info variant types
* Add progress on new deposit flow
* Remove unnecessary warnings
* Handle subnet unsubscription removal and improve logigng
* Add logs around ping
* Upgrade discv5 and improve logging
* Handle peer connection status for multiple connections
* Improve network service logging
* Add more incomplete progress
* Improve logging around peer manager
* Upgrade swarm poll centralise peer management
* Identify clients on error
* Fix `remove_peer` in sync (#1150)
* remove_peer removes from all chains
* Remove logs
* Fix early return from loop
* Improved logging, fix panic
* Partially correct tests
* Add deposit command
* Remove old validator directory
* Start adding AM tests
* Stable futures: Vc sync (#1149)
* Improve syncing heuristic
* Add comments
* Use safer method for tolerance
* Fix tests
* Binary testing progress
* Progress with CLI tests
* Use constants for flags
* More account manager testing
* Improve CLI tests
* Move upgrade-legacy-keypairs into account man
* Use rayon for VC key generation
* Add comments to `validator_dir`
* Add testing to validator_dir
* Add fix to eth1-sim
* Check errors in eth1-sim
* Fix mutability issue
* Ensure password file ends in .pass
* Add more tests to wallet manager
* Tidy deposit
* Tidy account manager
* Tidy account manager
* Remove panic
* Generate keypairs earlier in sim
* Tidy eth1-sime
* Try to fix eth1 sim
* Address review comments
* Fix typo in CLI command
* Update docs
* Disable eth1 sim
* Remove eth1 sim completely
Co-authored-by: Age Manning <Age@AgeManning.com>
Co-authored-by: pawanjay176 <pawandhananjay@gmail.com>
2020-05-18 09:01:45 +00:00
|
|
|
"validator_dir",
|
2019-12-09 11:39:44 +00:00
|
|
|
]
|
|
|
|
|
2020-07-22 09:34:55 +00:00
|
|
|
[[package]]
|
|
|
|
name = "account_utils"
|
|
|
|
version = "0.1.0"
|
|
|
|
dependencies = [
|
2020-10-08 21:01:32 +00:00
|
|
|
"directory",
|
2020-07-22 09:34:55 +00:00
|
|
|
"eth2_keystore",
|
|
|
|
"eth2_wallet",
|
2021-05-19 23:05:16 +00:00
|
|
|
"filesystem",
|
2022-04-04 00:26:16 +00:00
|
|
|
"rand 0.8.5",
|
2020-07-29 04:32:50 +00:00
|
|
|
"regex",
|
|
|
|
"rpassword",
|
2020-07-22 09:34:55 +00:00
|
|
|
"serde",
|
|
|
|
"serde_derive",
|
2020-07-29 04:32:50 +00:00
|
|
|
"serde_yaml",
|
|
|
|
"slog",
|
|
|
|
"types",
|
|
|
|
"validator_dir",
|
2020-07-22 09:34:55 +00:00
|
|
|
"zeroize",
|
|
|
|
]
|
|
|
|
|
2020-05-26 20:34:15 +00:00
|
|
|
[[package]]
|
|
|
|
name = "addr2line"
|
2021-11-18 05:08:42 +00:00
|
|
|
version = "0.17.0"
|
2020-05-26 20:34:15 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2021-11-18 05:08:42 +00:00
|
|
|
checksum = "b9ecd88a8c8378ca913a680cd98f0f13ac67383d35993f86c90a70e3f137816b"
|
2020-05-26 20:34:15 +00:00
|
|
|
dependencies = [
|
|
|
|
"gimli",
|
|
|
|
]
|
|
|
|
|
2020-07-06 01:55:56 +00:00
|
|
|
[[package]]
|
|
|
|
name = "adler"
|
2021-03-02 05:59:49 +00:00
|
|
|
version = "1.0.2"
|
2020-07-06 01:55:56 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2021-03-02 05:59:49 +00:00
|
|
|
checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe"
|
2020-07-06 01:55:56 +00:00
|
|
|
|
2019-12-09 11:39:44 +00:00
|
|
|
[[package]]
|
|
|
|
name = "adler32"
|
2020-08-03 09:35:53 +00:00
|
|
|
version = "1.2.0"
|
2019-12-09 11:39:44 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2020-08-03 09:35:53 +00:00
|
|
|
checksum = "aae1277d39aeec15cb388266ecc24b11c80469deae6067e17a1a7aa9e5c1f234"
|
2019-12-09 11:39:44 +00:00
|
|
|
|
2020-06-29 10:25:42 +00:00
|
|
|
[[package]]
|
|
|
|
name = "aead"
|
2021-09-16 04:45:05 +00:00
|
|
|
version = "0.4.3"
|
2020-11-28 05:30:57 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2021-09-16 04:45:05 +00:00
|
|
|
checksum = "0b613b8e1e3cf911a086f53f03bf286f52fd7a7258e4fa606f0ef220d39d8877"
|
2020-11-28 05:30:57 +00:00
|
|
|
dependencies = [
|
2021-07-13 00:48:33 +00:00
|
|
|
"generic-array",
|
2021-06-02 01:07:28 +00:00
|
|
|
]
|
|
|
|
|
2020-11-28 05:30:57 +00:00
|
|
|
[[package]]
|
2021-07-05 00:54:17 +00:00
|
|
|
name = "aes"
|
2021-09-16 04:45:05 +00:00
|
|
|
version = "0.7.5"
|
2020-11-28 05:30:57 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2021-09-16 04:45:05 +00:00
|
|
|
checksum = "9e8b47f52ea9bae42228d07ec09eb676433d7c4ed1ebdf0f1d1c29ed446f1ab8"
|
2020-11-28 05:30:57 +00:00
|
|
|
dependencies = [
|
2021-11-18 05:08:42 +00:00
|
|
|
"cfg-if",
|
2021-08-17 01:00:24 +00:00
|
|
|
"cipher",
|
2022-04-04 00:26:16 +00:00
|
|
|
"cpufeatures",
|
2021-09-16 04:45:05 +00:00
|
|
|
"ctr",
|
2021-07-13 00:48:33 +00:00
|
|
|
"opaque-debug",
|
2020-11-28 05:30:57 +00:00
|
|
|
]
|
|
|
|
|
2021-06-02 01:07:28 +00:00
|
|
|
[[package]]
|
|
|
|
name = "aes-gcm"
|
2021-09-16 04:45:05 +00:00
|
|
|
version = "0.9.4"
|
2021-06-02 01:07:28 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2021-09-16 04:45:05 +00:00
|
|
|
checksum = "df5f85a83a7d8b0442b6aa7b504b8212c1733da07b98aae43d4bc21b2cb3cdf6"
|
2021-06-02 01:07:28 +00:00
|
|
|
dependencies = [
|
2021-06-03 01:11:33 +00:00
|
|
|
"aead",
|
|
|
|
"aes",
|
2021-08-17 01:00:24 +00:00
|
|
|
"cipher",
|
2021-09-16 04:45:05 +00:00
|
|
|
"ctr",
|
2021-06-03 01:11:33 +00:00
|
|
|
"ghash",
|
2021-07-13 00:48:33 +00:00
|
|
|
"subtle",
|
2020-06-29 10:25:42 +00:00
|
|
|
]
|
|
|
|
|
2020-10-09 02:05:30 +00:00
|
|
|
[[package]]
|
|
|
|
name = "ahash"
|
2021-10-17 04:04:36 +00:00
|
|
|
version = "0.7.6"
|
2020-10-09 02:05:30 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2021-10-17 04:04:36 +00:00
|
|
|
checksum = "fcb51a0695d8f838b1ee009b3fbf66bda078cd64590202a864a8f3e8c4315c47"
|
2021-08-17 01:00:24 +00:00
|
|
|
dependencies = [
|
2022-06-18 23:59:43 +00:00
|
|
|
"getrandom 0.2.7",
|
2021-08-17 01:00:24 +00:00
|
|
|
"once_cell",
|
|
|
|
"version_check",
|
|
|
|
]
|
2020-10-09 02:05:30 +00:00
|
|
|
|
2019-12-09 11:39:44 +00:00
|
|
|
[[package]]
|
|
|
|
name = "aho-corasick"
|
2021-05-04 00:44:05 +00:00
|
|
|
version = "0.7.18"
|
2019-12-09 11:39:44 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2021-05-04 00:44:05 +00:00
|
|
|
checksum = "1e37cfd5e7657ada45f742d6e99ca5788580b5c529dc78faf11ece6dc702656f"
|
2019-12-09 11:39:44 +00:00
|
|
|
dependencies = [
|
2020-05-10 09:56:31 +00:00
|
|
|
"memchr",
|
2019-12-09 11:39:44 +00:00
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "amcl"
|
2020-10-28 22:19:38 +00:00
|
|
|
version = "0.3.0"
|
2021-03-16 03:11:51 +00:00
|
|
|
source = "git+https://github.com/sigp/milagro_bls?tag=v1.4.2#16655aa033175a90c10ef02aa144e2835de23aec"
|
2019-12-09 11:39:44 +00:00
|
|
|
|
2020-10-23 04:16:33 +00:00
|
|
|
[[package]]
|
|
|
|
name = "ansi_term"
|
|
|
|
version = "0.12.1"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "d52a9bb7ec0cf484c551830a7ce27bd20d67eac647e1befb56b0be4ee39a55d2"
|
|
|
|
dependencies = [
|
2021-07-09 03:20:24 +00:00
|
|
|
"winapi",
|
2020-10-23 04:16:33 +00:00
|
|
|
]
|
|
|
|
|
2020-05-17 11:16:48 +00:00
|
|
|
[[package]]
|
|
|
|
name = "anyhow"
|
2022-07-05 23:36:42 +00:00
|
|
|
version = "1.0.58"
|
2020-05-17 11:16:48 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2022-07-05 23:36:42 +00:00
|
|
|
checksum = "bb07d2053ccdbe10e2af2995a2f116c1330396493dc1269f6a91d0ae82e19704"
|
2020-05-17 11:16:48 +00:00
|
|
|
|
2020-05-05 23:12:28 +00:00
|
|
|
[[package]]
|
|
|
|
name = "arbitrary"
|
2022-07-05 23:36:42 +00:00
|
|
|
version = "1.1.3"
|
2020-05-05 23:12:28 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2022-07-05 23:36:42 +00:00
|
|
|
checksum = "5a7924531f38b1970ff630f03eb20a2fde69db5c590c93b0f3482e95dcc5fd60"
|
2020-05-05 23:12:28 +00:00
|
|
|
dependencies = [
|
2020-05-10 09:56:31 +00:00
|
|
|
"derive_arbitrary",
|
2020-05-05 23:12:28 +00:00
|
|
|
]
|
|
|
|
|
2019-12-09 11:39:44 +00:00
|
|
|
[[package]]
|
|
|
|
name = "arc-swap"
|
2021-11-18 05:08:42 +00:00
|
|
|
version = "1.5.0"
|
2019-12-09 11:39:44 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2021-11-18 05:08:42 +00:00
|
|
|
checksum = "c5d78ce20460b82d3fa150275ed9d55e21064fc7951177baacf86a145c4a4b1f"
|
2019-12-09 11:39:44 +00:00
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "arrayref"
|
Initial work towards v0.2.0 (#924)
* Remove ping protocol
* Initial renaming of network services
* Correct rebasing relative to latest master
* Start updating types
* Adds HashMapDelay struct to utils
* Initial network restructure
* Network restructure. Adds new types for v0.2.0
* Removes build artefacts
* Shift validation to beacon chain
* Temporarily remove gossip validation
This is to be updated to match current optimisation efforts.
* Adds AggregateAndProof
* Begin rebuilding pubsub encoding/decoding
* Signature hacking
* Shift gossipsup decoding into eth2_libp2p
* Existing EF tests passing with fake_crypto
* Shifts block encoding/decoding into RPC
* Delete outdated API spec
* All release tests passing bar genesis state parsing
* Update and test YamlConfig
* Update to spec v0.10 compatible BLS
* Updates to BLS EF tests
* Add EF test for AggregateVerify
And delete unused hash2curve tests for uncompressed points
* Update EF tests to v0.10.1
* Use optional block root correctly in block proc
* Use genesis fork in deposit domain. All tests pass
* Fast aggregate verify test
* Update REST API docs
* Fix unused import
* Bump spec tags to v0.10.1
* Add `seconds_per_eth1_block` to chainspec
* Update to timestamp based eth1 voting scheme
* Return None from `get_votes_to_consider` if block cache is empty
* Handle overflows in `is_candidate_block`
* Revert to failing tests
* Fix eth1 data sets test
* Choose default vote according to spec
* Fix collect_valid_votes tests
* Fix `get_votes_to_consider` to choose all eligible blocks
* Uncomment winning_vote tests
* Add comments; remove unused code
* Reduce seconds_per_eth1_block for simulation
* Addressed review comments
* Add test for default vote case
* Fix logs
* Remove unused functions
* Meter default eth1 votes
* Fix comments
* Progress on attestation service
* Address review comments; remove unused dependency
* Initial work on removing libp2p lock
* Add LRU caches to store (rollup)
* Update attestation validation for DB changes (WIP)
* Initial version of should_forward_block
* Scaffold
* Progress on attestation validation
Also, consolidate prod+testing slot clocks so that they share much
of the same implementation and can both handle sub-slot time changes.
* Removes lock from libp2p service
* Completed network lock removal
* Finish(?) attestation processing
* Correct network termination future
* Add slot check to block check
* Correct fmt issues
* Remove Drop implementation for network service
* Add first attempt at attestation proc. re-write
* Add version 2 of attestation processing
* Minor fixes
* Add validator pubkey cache
* Make get_indexed_attestation take a committee
* Link signature processing into new attn verification
* First working version
* Ensure pubkey cache is updated
* Add more metrics, slight optimizations
* Clone committee cache during attestation processing
* Update shuffling cache during block processing
* Remove old commented-out code
* Fix shuffling cache insert bug
* Used indexed attestation in fork choice
* Restructure attn processing, add metrics
* Add more detailed metrics
* Tidy, fix failing tests
* Fix failing tests, tidy
* Address reviewers suggestions
* Disable/delete two outdated tests
* Modification of validator for subscriptions
* Add slot signing to validator client
* Further progress on validation subscription
* Adds necessary validator subscription functionality
* Add new Pubkeys struct to signature_sets
* Refactor with functional approach
* Update beacon chain
* Clean up validator <-> beacon node http types
* Add aggregator status to ValidatorDuty
* Impl Clone for manual slot clock
* Fix minor errors
* Further progress validator client subscription
* Initial subscription and aggregation handling
* Remove decompressed member from pubkey bytes
* Progress to modifying val client for attestation aggregation
* First draft of validator client upgrade for aggregate attestations
* Add hashmap for indices lookup
* Add state cache, remove store cache
* Only build the head committee cache
* Removes lock on a network channel
* Partially implement beacon node subscription http api
* Correct compilation issues
* Change `get_attesting_indices` to use Vec
* Fix failing test
* Partial implementation of timer
* Adds timer, removes exit_future, http api to op pool
* Partial multiple aggregate attestation handling
* Permits bulk messages accross gossipsub network channel
* Correct compile issues
* Improve gosispsub messaging and correct rest api helpers
* Added global gossipsub subscriptions
* Update validator subscriptions data structs
* Tidy
* Re-structure validator subscriptions
* Initial handling of subscriptions
* Re-structure network service
* Add pubkey cache persistence file
* Add more comments
* Integrate persistence file into builder
* Add pubkey cache tests
* Add HashSetDelay and introduce into attestation service
* Handles validator subscriptions
* Add data_dir to beacon chain builder
* Remove Option in pubkey cache persistence file
* Ensure consistency between datadir/data_dir
* Fix failing network test
* Peer subnet discovery gets queued for future subscriptions
* Reorganise attestation service functions
* Initial wiring of attestation service
* First draft of attestation service timing logic
* Correct minor typos
* Tidy
* Fix todos
* Improve tests
* Add PeerInfo to connected peers mapping
* Fix compile error
* Fix compile error from merge
* Split up block processing metrics
* Tidy
* Refactor get_pubkey_from_state
* Remove commented-out code
* Rename state_cache -> checkpoint_cache
* Rename Checkpoint -> Snapshot
* Tidy, add comments
* Tidy up find_head function
* Change some checkpoint -> snapshot
* Add tests
* Expose max_len
* Remove dead code
* Tidy
* Fix bug
* Add sync-speed metric
* Add first attempt at VerifiableBlock
* Start integrating into beacon chain
* Integrate VerifiableBlock
* Rename VerifableBlock -> PartialBlockVerification
* Add start of typed methods
* Add progress
* Add further progress
* Rename structs
* Add full block verification to block_processing.rs
* Further beacon chain integration
* Update checks for gossip
* Add todo
* Start adding segement verification
* Add passing chain segement test
* Initial integration with batch sync
* Minor changes
* Tidy, add more error checking
* Start adding chain_segment tests
* Finish invalid signature tests
* Include single and gossip verified blocks in tests
* Add gossip verification tests
* Start adding docs
* Finish adding comments to block_processing.rs
* Rename block_processing.rs -> block_verification
* Start removing old block processing code
* Fixes beacon_chain compilation
* Fix project-wide compile errors
* Remove old code
* Correct code to pass all tests
* Fix bug with beacon proposer index
* Fix shim for BlockProcessingError
* Only process one epoch at a time
* Fix loop in chain segment processing
* Correct tests from master merge
* Add caching for state.eth1_data_votes
* Add BeaconChain::validator_pubkey
* Revert "Add caching for state.eth1_data_votes"
This reverts commit cd73dcd6434fb8d8e6bf30c5356355598ea7b78e.
Co-authored-by: Grant Wuerker <gwuerker@gmail.com>
Co-authored-by: Michael Sproul <michael@sigmaprime.io>
Co-authored-by: Michael Sproul <micsproul@gmail.com>
Co-authored-by: pawan <pawandhananjay@gmail.com>
Co-authored-by: Paul Hauner <paul@paulhauner.com>
2020-03-17 06:24:44 +00:00
|
|
|
version = "0.3.6"
|
2019-12-09 11:39:44 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2020-05-10 09:56:31 +00:00
|
|
|
checksum = "a4c527152e37cf757a3f78aae5a06fbeefdb07ccc535c980a3208ee3060dd544"
|
2019-12-09 11:39:44 +00:00
|
|
|
|
2021-07-05 00:54:17 +00:00
|
|
|
[[package]]
|
|
|
|
name = "arrayvec"
|
2021-11-18 05:08:42 +00:00
|
|
|
version = "0.7.2"
|
2021-07-05 00:54:17 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2021-11-18 05:08:42 +00:00
|
|
|
checksum = "8da52d66c7071e2e3fa2a1e5c6d088fec47b593032b254f5e980de8ea54454d6"
|
2021-07-05 00:54:17 +00:00
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "asn1_der"
|
2021-10-11 00:10:35 +00:00
|
|
|
version = "0.7.5"
|
2021-07-05 00:54:17 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2021-10-11 00:10:35 +00:00
|
|
|
checksum = "e22d1f4b888c298a027c99dc9048015fac177587de20fc30232a057dfbe24a21"
|
2021-07-05 00:54:17 +00:00
|
|
|
|
2020-11-19 04:04:52 +00:00
|
|
|
[[package]]
|
|
|
|
name = "async-trait"
|
2022-06-18 23:59:43 +00:00
|
|
|
version = "0.1.56"
|
2020-11-19 04:04:52 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2022-06-18 23:59:43 +00:00
|
|
|
checksum = "96cf8829f67d2eab0b2dfa42c5d0ef737e0724e4a82b01b3e292456202b19716"
|
2020-11-19 04:04:52 +00:00
|
|
|
dependencies = [
|
|
|
|
"proc-macro2",
|
|
|
|
"quote",
|
|
|
|
"syn",
|
|
|
|
]
|
|
|
|
|
2022-07-18 01:51:36 +00:00
|
|
|
[[package]]
|
|
|
|
name = "async_io_stream"
|
|
|
|
version = "0.3.3"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "b6d7b9decdf35d8908a7e3ef02f64c5e9b1695e230154c0e8de3969142d9b94c"
|
|
|
|
dependencies = [
|
|
|
|
"futures",
|
|
|
|
"pharos",
|
|
|
|
"rustc_version 0.4.0",
|
|
|
|
]
|
|
|
|
|
2021-02-10 23:29:49 +00:00
|
|
|
[[package]]
|
|
|
|
name = "asynchronous-codec"
|
2021-03-02 05:59:49 +00:00
|
|
|
version = "0.6.0"
|
2021-02-10 23:29:49 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2021-03-02 05:59:49 +00:00
|
|
|
checksum = "f0de5164e5edbf51c45fb8c2d9664ae1c095cce1b265ecf7569093c0d66ef690"
|
2021-02-10 23:29:49 +00:00
|
|
|
dependencies = [
|
2021-10-29 01:59:29 +00:00
|
|
|
"bytes",
|
2021-02-10 23:29:49 +00:00
|
|
|
"futures-sink",
|
|
|
|
"futures-util",
|
|
|
|
"memchr",
|
2022-06-18 23:59:43 +00:00
|
|
|
"pin-project-lite 0.2.9",
|
2021-02-10 23:29:49 +00:00
|
|
|
]
|
|
|
|
|
2020-10-02 08:47:00 +00:00
|
|
|
[[package]]
|
|
|
|
name = "attohttpc"
|
|
|
|
version = "0.10.1"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "baf13118df3e3dce4b5ac930641343b91b656e4e72c8f8325838b01a4b1c9d45"
|
|
|
|
dependencies = [
|
2021-02-10 23:29:49 +00:00
|
|
|
"http",
|
2020-12-09 01:34:58 +00:00
|
|
|
"log",
|
|
|
|
"url",
|
2020-10-02 08:47:00 +00:00
|
|
|
]
|
|
|
|
|
2019-12-09 11:39:44 +00:00
|
|
|
[[package]]
|
|
|
|
name = "atty"
|
2020-01-08 03:18:06 +00:00
|
|
|
version = "0.2.14"
|
2019-12-09 11:39:44 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2020-05-10 09:56:31 +00:00
|
|
|
checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8"
|
2019-12-09 11:39:44 +00:00
|
|
|
dependencies = [
|
2020-05-10 09:56:31 +00:00
|
|
|
"hermit-abi",
|
|
|
|
"libc",
|
2021-07-09 03:20:24 +00:00
|
|
|
"winapi",
|
2019-12-09 11:39:44 +00:00
|
|
|
]
|
|
|
|
|
2022-07-18 01:51:36 +00:00
|
|
|
[[package]]
|
|
|
|
name = "auto_impl"
|
|
|
|
version = "0.5.0"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "7862e21c893d65a1650125d157eaeec691439379a1cee17ee49031b79236ada4"
|
|
|
|
dependencies = [
|
|
|
|
"proc-macro-error",
|
|
|
|
"proc-macro2",
|
|
|
|
"quote",
|
|
|
|
"syn",
|
|
|
|
]
|
|
|
|
|
2019-12-09 11:39:44 +00:00
|
|
|
[[package]]
|
|
|
|
name = "autocfg"
|
2022-02-10 04:12:03 +00:00
|
|
|
version = "0.1.8"
|
2019-12-09 11:39:44 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2022-02-10 04:12:03 +00:00
|
|
|
checksum = "0dde43e75fd43e8a1bf86103336bc699aa8d17ad1be60c76c0bdfd4828e19b78"
|
|
|
|
dependencies = [
|
|
|
|
"autocfg 1.1.0",
|
|
|
|
]
|
2019-12-09 11:39:44 +00:00
|
|
|
|
2020-01-15 03:48:09 +00:00
|
|
|
[[package]]
|
|
|
|
name = "autocfg"
|
2022-02-10 04:12:03 +00:00
|
|
|
version = "1.1.0"
|
2020-01-15 03:48:09 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2022-02-10 04:12:03 +00:00
|
|
|
checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa"
|
2020-01-15 03:48:09 +00:00
|
|
|
|
2019-12-09 11:39:44 +00:00
|
|
|
[[package]]
|
|
|
|
name = "backtrace"
|
2022-06-18 23:59:43 +00:00
|
|
|
version = "0.3.65"
|
2019-12-09 11:39:44 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2022-06-18 23:59:43 +00:00
|
|
|
checksum = "11a17d453482a265fd5f8479f2a3f405566e6ca627837aaddb85af8b1ab8ef61"
|
2019-12-09 11:39:44 +00:00
|
|
|
dependencies = [
|
2020-05-26 20:34:15 +00:00
|
|
|
"addr2line",
|
2021-05-04 00:44:05 +00:00
|
|
|
"cc",
|
2021-11-18 05:08:42 +00:00
|
|
|
"cfg-if",
|
2020-05-10 09:56:31 +00:00
|
|
|
"libc",
|
2021-05-04 00:44:05 +00:00
|
|
|
"miniz_oxide",
|
2020-05-26 20:34:15 +00:00
|
|
|
"object",
|
2020-05-10 09:56:31 +00:00
|
|
|
"rustc-demangle",
|
2019-12-09 11:39:44 +00:00
|
|
|
]
|
|
|
|
|
Separate execution payloads in the DB (#3157)
## Proposed Changes
Reduce post-merge disk usage by not storing finalized execution payloads in Lighthouse's database.
:warning: **This is achieved in a backwards-incompatible way for networks that have already merged** :warning:. Kiln users and shadow fork enjoyers will be unable to downgrade after running the code from this PR. The upgrade migration may take several minutes to run, and can't be aborted after it begins.
The main changes are:
- New column in the database called `ExecPayload`, keyed by beacon block root.
- The `BeaconBlock` column now stores blinded blocks only.
- Lots of places that previously used full blocks now use blinded blocks, e.g. analytics APIs, block replay in the DB, etc.
- On finalization:
- `prune_abanonded_forks` deletes non-canonical payloads whilst deleting non-canonical blocks.
- `migrate_db` deletes finalized canonical payloads whilst deleting finalized states.
- Conversions between blinded and full blocks are implemented in a compositional way, duplicating some work from Sean's PR #3134.
- The execution layer has a new `get_payload_by_block_hash` method that reconstructs a payload using the EE's `eth_getBlockByHash` call.
- I've tested manually that it works on Kiln, using Geth and Nethermind.
- This isn't necessarily the most efficient method, and new engine APIs are being discussed to improve this: https://github.com/ethereum/execution-apis/pull/146.
- We're depending on the `ethers` master branch, due to lots of recent changes. We're also using a workaround for https://github.com/gakonst/ethers-rs/issues/1134.
- Payload reconstruction is used in the HTTP API via `BeaconChain::get_block`, which is now `async`. Due to the `async` fn, the `blocking_json` wrapper has been removed.
- Payload reconstruction is used in network RPC to serve blocks-by-{root,range} responses. Here the `async` adjustment is messier, although I think I've managed to come up with a reasonable compromise: the handlers take the `SendOnDrop` by value so that they can drop it on _task completion_ (after the `fn` returns). Still, this is introducing disk reads onto core executor threads, which may have a negative performance impact (thoughts appreciated).
## Additional Info
- [x] For performance it would be great to remove the cloning of full blocks when converting them to blinded blocks to write to disk. I'm going to experiment with a `put_block` API that takes the block by value, breaks it into a blinded block and a payload, stores the blinded block, and then re-assembles the full block for the caller.
- [x] We should measure the latency of blocks-by-root and blocks-by-range responses.
- [x] We should add integration tests that stress the payload reconstruction (basic tests done, issue for more extensive tests: https://github.com/sigp/lighthouse/issues/3159)
- [x] We should (manually) test the schema v9 migration from several prior versions, particularly as blocks have changed on disk and some migrations rely on being able to load blocks.
Co-authored-by: Paul Hauner <paul@paulhauner.com>
2022-05-12 00:42:17 +00:00
|
|
|
[[package]]
|
|
|
|
name = "base16ct"
|
|
|
|
version = "0.1.1"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "349a06037c7bf932dd7e7d1f653678b2038b9ad46a74102f1fc7bd7872678cce"
|
|
|
|
|
2020-10-05 08:22:19 +00:00
|
|
|
[[package]]
|
|
|
|
name = "base64"
|
|
|
|
version = "0.13.0"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "904dfeac50f3cdaba28fc6f57fdcddb75f49ed61346676a78c4ffe55877802fd"
|
|
|
|
|
Separate execution payloads in the DB (#3157)
## Proposed Changes
Reduce post-merge disk usage by not storing finalized execution payloads in Lighthouse's database.
:warning: **This is achieved in a backwards-incompatible way for networks that have already merged** :warning:. Kiln users and shadow fork enjoyers will be unable to downgrade after running the code from this PR. The upgrade migration may take several minutes to run, and can't be aborted after it begins.
The main changes are:
- New column in the database called `ExecPayload`, keyed by beacon block root.
- The `BeaconBlock` column now stores blinded blocks only.
- Lots of places that previously used full blocks now use blinded blocks, e.g. analytics APIs, block replay in the DB, etc.
- On finalization:
- `prune_abanonded_forks` deletes non-canonical payloads whilst deleting non-canonical blocks.
- `migrate_db` deletes finalized canonical payloads whilst deleting finalized states.
- Conversions between blinded and full blocks are implemented in a compositional way, duplicating some work from Sean's PR #3134.
- The execution layer has a new `get_payload_by_block_hash` method that reconstructs a payload using the EE's `eth_getBlockByHash` call.
- I've tested manually that it works on Kiln, using Geth and Nethermind.
- This isn't necessarily the most efficient method, and new engine APIs are being discussed to improve this: https://github.com/ethereum/execution-apis/pull/146.
- We're depending on the `ethers` master branch, due to lots of recent changes. We're also using a workaround for https://github.com/gakonst/ethers-rs/issues/1134.
- Payload reconstruction is used in the HTTP API via `BeaconChain::get_block`, which is now `async`. Due to the `async` fn, the `blocking_json` wrapper has been removed.
- Payload reconstruction is used in network RPC to serve blocks-by-{root,range} responses. Here the `async` adjustment is messier, although I think I've managed to come up with a reasonable compromise: the handlers take the `SendOnDrop` by value so that they can drop it on _task completion_ (after the `fn` returns). Still, this is introducing disk reads onto core executor threads, which may have a negative performance impact (thoughts appreciated).
## Additional Info
- [x] For performance it would be great to remove the cloning of full blocks when converting them to blinded blocks to write to disk. I'm going to experiment with a `put_block` API that takes the block by value, breaks it into a blinded block and a payload, stores the blinded block, and then re-assembles the full block for the caller.
- [x] We should measure the latency of blocks-by-root and blocks-by-range responses.
- [x] We should add integration tests that stress the payload reconstruction (basic tests done, issue for more extensive tests: https://github.com/sigp/lighthouse/issues/3159)
- [x] We should (manually) test the schema v9 migration from several prior versions, particularly as blocks have changed on disk and some migrations rely on being able to load blocks.
Co-authored-by: Paul Hauner <paul@paulhauner.com>
2022-05-12 00:42:17 +00:00
|
|
|
[[package]]
|
|
|
|
name = "base64ct"
|
2022-07-05 23:36:42 +00:00
|
|
|
version = "1.5.1"
|
Separate execution payloads in the DB (#3157)
## Proposed Changes
Reduce post-merge disk usage by not storing finalized execution payloads in Lighthouse's database.
:warning: **This is achieved in a backwards-incompatible way for networks that have already merged** :warning:. Kiln users and shadow fork enjoyers will be unable to downgrade after running the code from this PR. The upgrade migration may take several minutes to run, and can't be aborted after it begins.
The main changes are:
- New column in the database called `ExecPayload`, keyed by beacon block root.
- The `BeaconBlock` column now stores blinded blocks only.
- Lots of places that previously used full blocks now use blinded blocks, e.g. analytics APIs, block replay in the DB, etc.
- On finalization:
- `prune_abanonded_forks` deletes non-canonical payloads whilst deleting non-canonical blocks.
- `migrate_db` deletes finalized canonical payloads whilst deleting finalized states.
- Conversions between blinded and full blocks are implemented in a compositional way, duplicating some work from Sean's PR #3134.
- The execution layer has a new `get_payload_by_block_hash` method that reconstructs a payload using the EE's `eth_getBlockByHash` call.
- I've tested manually that it works on Kiln, using Geth and Nethermind.
- This isn't necessarily the most efficient method, and new engine APIs are being discussed to improve this: https://github.com/ethereum/execution-apis/pull/146.
- We're depending on the `ethers` master branch, due to lots of recent changes. We're also using a workaround for https://github.com/gakonst/ethers-rs/issues/1134.
- Payload reconstruction is used in the HTTP API via `BeaconChain::get_block`, which is now `async`. Due to the `async` fn, the `blocking_json` wrapper has been removed.
- Payload reconstruction is used in network RPC to serve blocks-by-{root,range} responses. Here the `async` adjustment is messier, although I think I've managed to come up with a reasonable compromise: the handlers take the `SendOnDrop` by value so that they can drop it on _task completion_ (after the `fn` returns). Still, this is introducing disk reads onto core executor threads, which may have a negative performance impact (thoughts appreciated).
## Additional Info
- [x] For performance it would be great to remove the cloning of full blocks when converting them to blinded blocks to write to disk. I'm going to experiment with a `put_block` API that takes the block by value, breaks it into a blinded block and a payload, stores the blinded block, and then re-assembles the full block for the caller.
- [x] We should measure the latency of blocks-by-root and blocks-by-range responses.
- [x] We should add integration tests that stress the payload reconstruction (basic tests done, issue for more extensive tests: https://github.com/sigp/lighthouse/issues/3159)
- [x] We should (manually) test the schema v9 migration from several prior versions, particularly as blocks have changed on disk and some migrations rely on being able to load blocks.
Co-authored-by: Paul Hauner <paul@paulhauner.com>
2022-05-12 00:42:17 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2022-07-05 23:36:42 +00:00
|
|
|
checksum = "3bdca834647821e0b13d9539a8634eb62d3501b6b6c2cec1722786ee6671b851"
|
Separate execution payloads in the DB (#3157)
## Proposed Changes
Reduce post-merge disk usage by not storing finalized execution payloads in Lighthouse's database.
:warning: **This is achieved in a backwards-incompatible way for networks that have already merged** :warning:. Kiln users and shadow fork enjoyers will be unable to downgrade after running the code from this PR. The upgrade migration may take several minutes to run, and can't be aborted after it begins.
The main changes are:
- New column in the database called `ExecPayload`, keyed by beacon block root.
- The `BeaconBlock` column now stores blinded blocks only.
- Lots of places that previously used full blocks now use blinded blocks, e.g. analytics APIs, block replay in the DB, etc.
- On finalization:
- `prune_abanonded_forks` deletes non-canonical payloads whilst deleting non-canonical blocks.
- `migrate_db` deletes finalized canonical payloads whilst deleting finalized states.
- Conversions between blinded and full blocks are implemented in a compositional way, duplicating some work from Sean's PR #3134.
- The execution layer has a new `get_payload_by_block_hash` method that reconstructs a payload using the EE's `eth_getBlockByHash` call.
- I've tested manually that it works on Kiln, using Geth and Nethermind.
- This isn't necessarily the most efficient method, and new engine APIs are being discussed to improve this: https://github.com/ethereum/execution-apis/pull/146.
- We're depending on the `ethers` master branch, due to lots of recent changes. We're also using a workaround for https://github.com/gakonst/ethers-rs/issues/1134.
- Payload reconstruction is used in the HTTP API via `BeaconChain::get_block`, which is now `async`. Due to the `async` fn, the `blocking_json` wrapper has been removed.
- Payload reconstruction is used in network RPC to serve blocks-by-{root,range} responses. Here the `async` adjustment is messier, although I think I've managed to come up with a reasonable compromise: the handlers take the `SendOnDrop` by value so that they can drop it on _task completion_ (after the `fn` returns). Still, this is introducing disk reads onto core executor threads, which may have a negative performance impact (thoughts appreciated).
## Additional Info
- [x] For performance it would be great to remove the cloning of full blocks when converting them to blinded blocks to write to disk. I'm going to experiment with a `put_block` API that takes the block by value, breaks it into a blinded block and a payload, stores the blinded block, and then re-assembles the full block for the caller.
- [x] We should measure the latency of blocks-by-root and blocks-by-range responses.
- [x] We should add integration tests that stress the payload reconstruction (basic tests done, issue for more extensive tests: https://github.com/sigp/lighthouse/issues/3159)
- [x] We should (manually) test the schema v9 migration from several prior versions, particularly as blocks have changed on disk and some migrations rely on being able to load blocks.
Co-authored-by: Paul Hauner <paul@paulhauner.com>
2022-05-12 00:42:17 +00:00
|
|
|
|
2019-12-09 11:39:44 +00:00
|
|
|
[[package]]
|
|
|
|
name = "beacon_chain"
|
2020-08-06 03:43:05 +00:00
|
|
|
version = "0.2.0"
|
2019-12-09 11:39:44 +00:00
|
|
|
dependencies = [
|
Separate execution payloads in the DB (#3157)
## Proposed Changes
Reduce post-merge disk usage by not storing finalized execution payloads in Lighthouse's database.
:warning: **This is achieved in a backwards-incompatible way for networks that have already merged** :warning:. Kiln users and shadow fork enjoyers will be unable to downgrade after running the code from this PR. The upgrade migration may take several minutes to run, and can't be aborted after it begins.
The main changes are:
- New column in the database called `ExecPayload`, keyed by beacon block root.
- The `BeaconBlock` column now stores blinded blocks only.
- Lots of places that previously used full blocks now use blinded blocks, e.g. analytics APIs, block replay in the DB, etc.
- On finalization:
- `prune_abanonded_forks` deletes non-canonical payloads whilst deleting non-canonical blocks.
- `migrate_db` deletes finalized canonical payloads whilst deleting finalized states.
- Conversions between blinded and full blocks are implemented in a compositional way, duplicating some work from Sean's PR #3134.
- The execution layer has a new `get_payload_by_block_hash` method that reconstructs a payload using the EE's `eth_getBlockByHash` call.
- I've tested manually that it works on Kiln, using Geth and Nethermind.
- This isn't necessarily the most efficient method, and new engine APIs are being discussed to improve this: https://github.com/ethereum/execution-apis/pull/146.
- We're depending on the `ethers` master branch, due to lots of recent changes. We're also using a workaround for https://github.com/gakonst/ethers-rs/issues/1134.
- Payload reconstruction is used in the HTTP API via `BeaconChain::get_block`, which is now `async`. Due to the `async` fn, the `blocking_json` wrapper has been removed.
- Payload reconstruction is used in network RPC to serve blocks-by-{root,range} responses. Here the `async` adjustment is messier, although I think I've managed to come up with a reasonable compromise: the handlers take the `SendOnDrop` by value so that they can drop it on _task completion_ (after the `fn` returns). Still, this is introducing disk reads onto core executor threads, which may have a negative performance impact (thoughts appreciated).
## Additional Info
- [x] For performance it would be great to remove the cloning of full blocks when converting them to blinded blocks to write to disk. I'm going to experiment with a `put_block` API that takes the block by value, breaks it into a blinded block and a payload, stores the blinded block, and then re-assembles the full block for the caller.
- [x] We should measure the latency of blocks-by-root and blocks-by-range responses.
- [x] We should add integration tests that stress the payload reconstruction (basic tests done, issue for more extensive tests: https://github.com/sigp/lighthouse/issues/3159)
- [x] We should (manually) test the schema v9 migration from several prior versions, particularly as blocks have changed on disk and some migrations rely on being able to load blocks.
Co-authored-by: Paul Hauner <paul@paulhauner.com>
2022-05-12 00:42:17 +00:00
|
|
|
"bitvec 0.20.4",
|
2020-05-10 09:56:31 +00:00
|
|
|
"bls",
|
2020-06-18 11:06:34 +00:00
|
|
|
"derivative",
|
2020-05-10 09:56:31 +00:00
|
|
|
"environment",
|
|
|
|
"eth1",
|
2020-11-02 00:37:30 +00:00
|
|
|
"eth2",
|
2022-04-04 00:26:16 +00:00
|
|
|
"eth2_hashing",
|
2021-11-29 03:57:54 +00:00
|
|
|
"eth2_ssz",
|
2022-03-31 07:52:23 +00:00
|
|
|
"eth2_ssz_derive",
|
2021-11-29 03:57:54 +00:00
|
|
|
"eth2_ssz_types",
|
2021-11-16 00:46:12 +00:00
|
|
|
"execution_layer",
|
2022-05-16 08:35:59 +00:00
|
|
|
"exit-future",
|
v0.12 fork choice update (#1229)
* Incomplete scraps
* Add progress on new fork choice impl
* Further progress
* First complete compiling version
* Remove chain reference
* Add new lmd_ghost crate
* Start integrating into beacon chain
* Update `milagro_bls` to new release (#1183)
* Update milagro_bls to new release
Signed-off-by: Kirk Baird <baird.k@outlook.com>
* Tidy up fake cryptos
Signed-off-by: Kirk Baird <baird.k@outlook.com>
* move SecretHash to bls and put plaintext back
Signed-off-by: Kirk Baird <baird.k@outlook.com>
* Update state processing for v0.12
* Fix EF test runners for v0.12
* Fix some tests
* Fix broken attestation verification test
* More test fixes
* Rough beacon chain impl working
* Remove fork_choice_2
* Remove checkpoint manager
* Half finished ssz impl
* Add missed file
* Add persistence
* Tidy, fix some compile errors
* Remove RwLock from ProtoArrayForkChoice
* Fix store-based compile errors
* Add comments, tidy
* Move function out of ForkChoice struct
* Start testing
* More testing
* Fix compile error
* Tidy beacon_chain::fork_choice
* Queue attestations from the current slot
* Allow fork choice to handle prior-to-genesis start
* Improve error granularity
* Test attestation dequeuing
* Process attestations during block
* Store target root in fork choice
* Move fork choice verification into new crate
* Update tests
* Consensus updates for v0.12 (#1228)
* Update state processing for v0.12
* Fix EF test runners for v0.12
* Fix some tests
* Fix broken attestation verification test
* More test fixes
* Fix typo found in review
* Add `Block` struct to ProtoArray
* Start fixing get_ancestor
* Add rough progress on testing
* Get fork choice tests working
* Progress with testing
* Fix partialeq impl
* Move slot clock from fc_store
* Improve testing
* Add testing for best justified
* Add clone back to SystemTimeSlotClock
* Add balances test
* Start adding balances cache again
* Wire-in balances cache
* Improve tests
* Remove commented-out tests
* Remove beacon_chain::ForkChoice
* Rename crates
* Update wider codebase to new fork_choice layout
* Move advance_slot in test harness
* Tidy ForkChoice::update_time
* Fix verification tests
* Fix compile error with iter::once
* Fix fork choice tests
* Ensure block attestations are processed
* Fix failing beacon_chain tests
* Add first invalid block check
* Add finalized block check
* Progress with testing, new store builder
* Add fixes to get_ancestor
* Fix old genesis justification test
* Fix remaining fork choice tests
* Change root iteration method
* Move on_verified_block
* Remove unused method
* Start adding attestation verification tests
* Add invalid ffg target test
* Add target epoch test
* Add queued attestation test
* Remove old fork choice verification tests
* Tidy, add test
* Move fork choice lock drop
* Rename BeaconForkChoiceStore
* Add comments, tidy BeaconForkChoiceStore
* Update metrics, rename fork_choice_store.rs
* Remove genesis_block_root from ForkChoice
* Tidy
* Update fork_choice comments
* Tidy, add comments
* Tidy, simplify ForkChoice, fix compile issue
* Tidy, removed dead file
* Increase http request timeout
* Fix failing rest_api test
* Set HTTP timeout back to 5s
* Apply fix to get_ancestor
* Address Michael's comments
* Fix typo
* Revert "Fix broken attestation verification test"
This reverts commit 722cdc903b12611de27916a57eeecfa3224f2279.
Co-authored-by: Kirk Baird <baird.k@outlook.com>
Co-authored-by: Michael Sproul <michael@sigmaprime.io>
2020-06-17 01:10:22 +00:00
|
|
|
"fork_choice",
|
2021-07-09 03:20:24 +00:00
|
|
|
"futures",
|
2020-05-10 09:56:31 +00:00
|
|
|
"genesis",
|
Separate execution payloads in the DB (#3157)
## Proposed Changes
Reduce post-merge disk usage by not storing finalized execution payloads in Lighthouse's database.
:warning: **This is achieved in a backwards-incompatible way for networks that have already merged** :warning:. Kiln users and shadow fork enjoyers will be unable to downgrade after running the code from this PR. The upgrade migration may take several minutes to run, and can't be aborted after it begins.
The main changes are:
- New column in the database called `ExecPayload`, keyed by beacon block root.
- The `BeaconBlock` column now stores blinded blocks only.
- Lots of places that previously used full blocks now use blinded blocks, e.g. analytics APIs, block replay in the DB, etc.
- On finalization:
- `prune_abanonded_forks` deletes non-canonical payloads whilst deleting non-canonical blocks.
- `migrate_db` deletes finalized canonical payloads whilst deleting finalized states.
- Conversions between blinded and full blocks are implemented in a compositional way, duplicating some work from Sean's PR #3134.
- The execution layer has a new `get_payload_by_block_hash` method that reconstructs a payload using the EE's `eth_getBlockByHash` call.
- I've tested manually that it works on Kiln, using Geth and Nethermind.
- This isn't necessarily the most efficient method, and new engine APIs are being discussed to improve this: https://github.com/ethereum/execution-apis/pull/146.
- We're depending on the `ethers` master branch, due to lots of recent changes. We're also using a workaround for https://github.com/gakonst/ethers-rs/issues/1134.
- Payload reconstruction is used in the HTTP API via `BeaconChain::get_block`, which is now `async`. Due to the `async` fn, the `blocking_json` wrapper has been removed.
- Payload reconstruction is used in network RPC to serve blocks-by-{root,range} responses. Here the `async` adjustment is messier, although I think I've managed to come up with a reasonable compromise: the handlers take the `SendOnDrop` by value so that they can drop it on _task completion_ (after the `fn` returns). Still, this is introducing disk reads onto core executor threads, which may have a negative performance impact (thoughts appreciated).
## Additional Info
- [x] For performance it would be great to remove the cloning of full blocks when converting them to blinded blocks to write to disk. I'm going to experiment with a `put_block` API that takes the block by value, breaks it into a blinded block and a payload, stores the blinded block, and then re-assembles the full block for the caller.
- [x] We should measure the latency of blocks-by-root and blocks-by-range responses.
- [x] We should add integration tests that stress the payload reconstruction (basic tests done, issue for more extensive tests: https://github.com/sigp/lighthouse/issues/3159)
- [x] We should (manually) test the schema v9 migration from several prior versions, particularly as blocks have changed on disk and some migrations rely on being able to load blocks.
Co-authored-by: Paul Hauner <paul@paulhauner.com>
2022-05-12 00:42:17 +00:00
|
|
|
"hex",
|
2020-07-25 02:03:18 +00:00
|
|
|
"int_to_bytes",
|
2021-08-17 01:00:24 +00:00
|
|
|
"itertools",
|
2020-05-10 09:56:31 +00:00
|
|
|
"lazy_static",
|
|
|
|
"lighthouse_metrics",
|
2021-10-06 00:46:07 +00:00
|
|
|
"logging",
|
2020-07-29 03:40:22 +00:00
|
|
|
"lru",
|
2020-08-26 09:24:55 +00:00
|
|
|
"maplit",
|
2020-05-10 09:56:31 +00:00
|
|
|
"merkle_proof",
|
|
|
|
"operation_pool",
|
2022-06-18 23:59:43 +00:00
|
|
|
"parking_lot 0.12.1",
|
v0.12 fork choice update (#1229)
* Incomplete scraps
* Add progress on new fork choice impl
* Further progress
* First complete compiling version
* Remove chain reference
* Add new lmd_ghost crate
* Start integrating into beacon chain
* Update `milagro_bls` to new release (#1183)
* Update milagro_bls to new release
Signed-off-by: Kirk Baird <baird.k@outlook.com>
* Tidy up fake cryptos
Signed-off-by: Kirk Baird <baird.k@outlook.com>
* move SecretHash to bls and put plaintext back
Signed-off-by: Kirk Baird <baird.k@outlook.com>
* Update state processing for v0.12
* Fix EF test runners for v0.12
* Fix some tests
* Fix broken attestation verification test
* More test fixes
* Rough beacon chain impl working
* Remove fork_choice_2
* Remove checkpoint manager
* Half finished ssz impl
* Add missed file
* Add persistence
* Tidy, fix some compile errors
* Remove RwLock from ProtoArrayForkChoice
* Fix store-based compile errors
* Add comments, tidy
* Move function out of ForkChoice struct
* Start testing
* More testing
* Fix compile error
* Tidy beacon_chain::fork_choice
* Queue attestations from the current slot
* Allow fork choice to handle prior-to-genesis start
* Improve error granularity
* Test attestation dequeuing
* Process attestations during block
* Store target root in fork choice
* Move fork choice verification into new crate
* Update tests
* Consensus updates for v0.12 (#1228)
* Update state processing for v0.12
* Fix EF test runners for v0.12
* Fix some tests
* Fix broken attestation verification test
* More test fixes
* Fix typo found in review
* Add `Block` struct to ProtoArray
* Start fixing get_ancestor
* Add rough progress on testing
* Get fork choice tests working
* Progress with testing
* Fix partialeq impl
* Move slot clock from fc_store
* Improve testing
* Add testing for best justified
* Add clone back to SystemTimeSlotClock
* Add balances test
* Start adding balances cache again
* Wire-in balances cache
* Improve tests
* Remove commented-out tests
* Remove beacon_chain::ForkChoice
* Rename crates
* Update wider codebase to new fork_choice layout
* Move advance_slot in test harness
* Tidy ForkChoice::update_time
* Fix verification tests
* Fix compile error with iter::once
* Fix fork choice tests
* Ensure block attestations are processed
* Fix failing beacon_chain tests
* Add first invalid block check
* Add finalized block check
* Progress with testing, new store builder
* Add fixes to get_ancestor
* Fix old genesis justification test
* Fix remaining fork choice tests
* Change root iteration method
* Move on_verified_block
* Remove unused method
* Start adding attestation verification tests
* Add invalid ffg target test
* Add target epoch test
* Add queued attestation test
* Remove old fork choice verification tests
* Tidy, add test
* Move fork choice lock drop
* Rename BeaconForkChoiceStore
* Add comments, tidy BeaconForkChoiceStore
* Update metrics, rename fork_choice_store.rs
* Remove genesis_block_root from ForkChoice
* Tidy
* Update fork_choice comments
* Tidy, add comments
* Tidy, simplify ForkChoice, fix compile issue
* Tidy, removed dead file
* Increase http request timeout
* Fix failing rest_api test
* Set HTTP timeout back to 5s
* Apply fix to get_ancestor
* Address Michael's comments
* Fix typo
* Revert "Fix broken attestation verification test"
This reverts commit 722cdc903b12611de27916a57eeecfa3224f2279.
Co-authored-by: Kirk Baird <baird.k@outlook.com>
Co-authored-by: Michael Sproul <michael@sigmaprime.io>
2020-06-17 01:10:22 +00:00
|
|
|
"proto_array",
|
2022-04-04 00:26:16 +00:00
|
|
|
"rand 0.8.5",
|
2020-05-10 09:56:31 +00:00
|
|
|
"rayon",
|
|
|
|
"safe_arith",
|
2021-11-16 00:46:12 +00:00
|
|
|
"sensitive_url",
|
2020-05-10 09:56:31 +00:00
|
|
|
"serde",
|
|
|
|
"serde_derive",
|
2022-03-09 00:42:05 +00:00
|
|
|
"serde_json",
|
2020-11-23 03:43:22 +00:00
|
|
|
"slasher",
|
2020-05-10 09:56:31 +00:00
|
|
|
"slog",
|
2021-09-14 06:48:26 +00:00
|
|
|
"sloggers",
|
2020-05-10 09:56:31 +00:00
|
|
|
"slot_clock",
|
2020-12-09 01:34:58 +00:00
|
|
|
"smallvec",
|
2020-05-10 09:56:31 +00:00
|
|
|
"state_processing",
|
|
|
|
"store",
|
2021-01-19 06:33:58 +00:00
|
|
|
"strum",
|
2021-12-13 20:43:22 +00:00
|
|
|
"superstruct",
|
2020-10-05 07:45:54 +00:00
|
|
|
"task_executor",
|
2020-05-10 09:56:31 +00:00
|
|
|
"tempfile",
|
2021-08-17 01:00:24 +00:00
|
|
|
"tokio",
|
2021-11-29 03:57:54 +00:00
|
|
|
"tree_hash",
|
2020-05-10 09:56:31 +00:00
|
|
|
"types",
|
2019-12-09 11:39:44 +00:00
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "beacon_node"
|
2022-07-21 22:02:36 +00:00
|
|
|
version = "2.4.0"
|
2019-12-09 11:39:44 +00:00
|
|
|
dependencies = [
|
2020-05-10 09:56:31 +00:00
|
|
|
"beacon_chain",
|
|
|
|
"clap",
|
|
|
|
"clap_utils",
|
|
|
|
"client",
|
2020-09-29 00:02:44 +00:00
|
|
|
"directory",
|
2021-07-05 00:54:17 +00:00
|
|
|
"dirs",
|
2020-05-10 09:56:31 +00:00
|
|
|
"environment",
|
|
|
|
"eth2_config",
|
2020-12-08 05:41:10 +00:00
|
|
|
"eth2_network_config",
|
2022-03-08 06:46:24 +00:00
|
|
|
"execution_layer",
|
2021-07-09 03:20:24 +00:00
|
|
|
"futures",
|
2020-05-10 09:56:31 +00:00
|
|
|
"genesis",
|
2020-10-28 22:19:38 +00:00
|
|
|
"hex",
|
2021-10-12 03:35:49 +00:00
|
|
|
"http_api",
|
2021-07-09 03:20:24 +00:00
|
|
|
"hyper",
|
Rename eth2_libp2p to lighthouse_network (#2702)
## Description
The `eth2_libp2p` crate was originally named and designed to incorporate a simple libp2p integration into lighthouse. Since its origins the crates purpose has expanded dramatically. It now houses a lot more sophistication that is specific to lighthouse and no longer just a libp2p integration.
As of this writing it currently houses the following high-level lighthouse-specific logic:
- Lighthouse's implementation of the eth2 RPC protocol and specific encodings/decodings
- Integration and handling of ENRs with respect to libp2p and eth2
- Lighthouse's discovery logic, its integration with discv5 and logic about searching and handling peers.
- Lighthouse's peer manager - This is a large module handling various aspects of Lighthouse's network, such as peer scoring, handling pings and metadata, connection maintenance and recording, etc.
- Lighthouse's peer database - This is a collection of information stored for each individual peer which is specific to lighthouse. We store connection state, sync state, last seen ips and scores etc. The data stored for each peer is designed for various elements of the lighthouse code base such as syncing and the http api.
- Gossipsub scoring - This stores a collection of gossipsub 1.1 scoring mechanisms that are continuously analyssed and updated based on the ethereum 2 networks and how Lighthouse performs on these networks.
- Lighthouse specific types for managing gossipsub topics, sync status and ENR fields
- Lighthouse's network HTTP API metrics - A collection of metrics for lighthouse network monitoring
- Lighthouse's custom configuration of all networking protocols, RPC, gossipsub, discovery, identify and libp2p.
Therefore it makes sense to rename the crate to be more akin to its current purposes, simply that it manages the majority of Lighthouse's network stack. This PR renames this crate to `lighthouse_network`
Co-authored-by: Paul Hauner <paul@paulhauner.com>
2021-10-19 00:30:39 +00:00
|
|
|
"lighthouse_network",
|
2020-08-04 07:44:53 +00:00
|
|
|
"lighthouse_version",
|
2021-05-26 05:58:41 +00:00
|
|
|
"monitoring_api",
|
2020-05-10 09:56:31 +00:00
|
|
|
"node_test_rig",
|
2021-05-04 01:59:51 +00:00
|
|
|
"sensitive_url",
|
2020-05-10 09:56:31 +00:00
|
|
|
"serde",
|
2020-11-23 03:43:22 +00:00
|
|
|
"slasher",
|
2020-05-10 09:56:31 +00:00
|
|
|
"slog",
|
|
|
|
"store",
|
2020-10-05 07:45:54 +00:00
|
|
|
"task_executor",
|
2020-05-10 09:56:31 +00:00
|
|
|
"types",
|
2022-02-17 21:47:06 +00:00
|
|
|
"unused_port",
|
2019-12-09 11:39:44 +00:00
|
|
|
]
|
|
|
|
|
2020-10-05 10:50:43 +00:00
|
|
|
[[package]]
|
|
|
|
name = "bincode"
|
2021-05-04 00:44:05 +00:00
|
|
|
version = "1.3.3"
|
2020-10-05 10:50:43 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2021-05-04 00:44:05 +00:00
|
|
|
checksum = "b1f45e9417d87227c7a56d22e471c6206462cba514c7590c09aff4cf6d1ddcad"
|
2020-10-05 10:50:43 +00:00
|
|
|
dependencies = [
|
|
|
|
"serde",
|
|
|
|
]
|
|
|
|
|
2021-12-21 08:23:17 +00:00
|
|
|
[[package]]
|
|
|
|
name = "bindgen"
|
2021-12-22 06:17:14 +00:00
|
|
|
version = "0.59.2"
|
2021-12-21 08:23:17 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2021-12-22 06:17:14 +00:00
|
|
|
checksum = "2bd2a9a458e8f4304c52c43ebb0cfbd520289f8379a52e329a38afda99bf8eb8"
|
2021-12-21 08:23:17 +00:00
|
|
|
dependencies = [
|
|
|
|
"bitflags",
|
|
|
|
"cexpr",
|
|
|
|
"clang-sys",
|
|
|
|
"lazy_static",
|
|
|
|
"lazycell",
|
|
|
|
"peeking_take_while",
|
|
|
|
"proc-macro2",
|
|
|
|
"quote",
|
|
|
|
"regex",
|
|
|
|
"rustc-hash",
|
|
|
|
"shlex",
|
|
|
|
]
|
|
|
|
|
2019-12-09 11:39:44 +00:00
|
|
|
[[package]]
|
|
|
|
name = "bitflags"
|
2022-04-04 00:26:16 +00:00
|
|
|
version = "1.3.2"
|
2020-10-23 04:16:33 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2022-04-04 00:26:16 +00:00
|
|
|
checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
|
2020-10-23 04:16:33 +00:00
|
|
|
|
2020-10-05 08:22:19 +00:00
|
|
|
[[package]]
|
|
|
|
name = "bitvec"
|
2021-07-05 00:54:17 +00:00
|
|
|
version = "0.20.4"
|
2020-10-05 08:22:19 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2021-07-05 00:54:17 +00:00
|
|
|
checksum = "7774144344a4faa177370406a7ff5f1da24303817368584c6206c8303eb07848"
|
2020-10-05 08:22:19 +00:00
|
|
|
dependencies = [
|
Separate execution payloads in the DB (#3157)
## Proposed Changes
Reduce post-merge disk usage by not storing finalized execution payloads in Lighthouse's database.
:warning: **This is achieved in a backwards-incompatible way for networks that have already merged** :warning:. Kiln users and shadow fork enjoyers will be unable to downgrade after running the code from this PR. The upgrade migration may take several minutes to run, and can't be aborted after it begins.
The main changes are:
- New column in the database called `ExecPayload`, keyed by beacon block root.
- The `BeaconBlock` column now stores blinded blocks only.
- Lots of places that previously used full blocks now use blinded blocks, e.g. analytics APIs, block replay in the DB, etc.
- On finalization:
- `prune_abanonded_forks` deletes non-canonical payloads whilst deleting non-canonical blocks.
- `migrate_db` deletes finalized canonical payloads whilst deleting finalized states.
- Conversions between blinded and full blocks are implemented in a compositional way, duplicating some work from Sean's PR #3134.
- The execution layer has a new `get_payload_by_block_hash` method that reconstructs a payload using the EE's `eth_getBlockByHash` call.
- I've tested manually that it works on Kiln, using Geth and Nethermind.
- This isn't necessarily the most efficient method, and new engine APIs are being discussed to improve this: https://github.com/ethereum/execution-apis/pull/146.
- We're depending on the `ethers` master branch, due to lots of recent changes. We're also using a workaround for https://github.com/gakonst/ethers-rs/issues/1134.
- Payload reconstruction is used in the HTTP API via `BeaconChain::get_block`, which is now `async`. Due to the `async` fn, the `blocking_json` wrapper has been removed.
- Payload reconstruction is used in network RPC to serve blocks-by-{root,range} responses. Here the `async` adjustment is messier, although I think I've managed to come up with a reasonable compromise: the handlers take the `SendOnDrop` by value so that they can drop it on _task completion_ (after the `fn` returns). Still, this is introducing disk reads onto core executor threads, which may have a negative performance impact (thoughts appreciated).
## Additional Info
- [x] For performance it would be great to remove the cloning of full blocks when converting them to blinded blocks to write to disk. I'm going to experiment with a `put_block` API that takes the block by value, breaks it into a blinded block and a payload, stores the blinded block, and then re-assembles the full block for the caller.
- [x] We should measure the latency of blocks-by-root and blocks-by-range responses.
- [x] We should add integration tests that stress the payload reconstruction (basic tests done, issue for more extensive tests: https://github.com/sigp/lighthouse/issues/3159)
- [x] We should (manually) test the schema v9 migration from several prior versions, particularly as blocks have changed on disk and some migrations rely on being able to load blocks.
Co-authored-by: Paul Hauner <paul@paulhauner.com>
2022-05-12 00:42:17 +00:00
|
|
|
"funty 1.1.0",
|
|
|
|
"radium 0.6.2",
|
2020-10-05 08:22:19 +00:00
|
|
|
"tap",
|
Separate execution payloads in the DB (#3157)
## Proposed Changes
Reduce post-merge disk usage by not storing finalized execution payloads in Lighthouse's database.
:warning: **This is achieved in a backwards-incompatible way for networks that have already merged** :warning:. Kiln users and shadow fork enjoyers will be unable to downgrade after running the code from this PR. The upgrade migration may take several minutes to run, and can't be aborted after it begins.
The main changes are:
- New column in the database called `ExecPayload`, keyed by beacon block root.
- The `BeaconBlock` column now stores blinded blocks only.
- Lots of places that previously used full blocks now use blinded blocks, e.g. analytics APIs, block replay in the DB, etc.
- On finalization:
- `prune_abanonded_forks` deletes non-canonical payloads whilst deleting non-canonical blocks.
- `migrate_db` deletes finalized canonical payloads whilst deleting finalized states.
- Conversions between blinded and full blocks are implemented in a compositional way, duplicating some work from Sean's PR #3134.
- The execution layer has a new `get_payload_by_block_hash` method that reconstructs a payload using the EE's `eth_getBlockByHash` call.
- I've tested manually that it works on Kiln, using Geth and Nethermind.
- This isn't necessarily the most efficient method, and new engine APIs are being discussed to improve this: https://github.com/ethereum/execution-apis/pull/146.
- We're depending on the `ethers` master branch, due to lots of recent changes. We're also using a workaround for https://github.com/gakonst/ethers-rs/issues/1134.
- Payload reconstruction is used in the HTTP API via `BeaconChain::get_block`, which is now `async`. Due to the `async` fn, the `blocking_json` wrapper has been removed.
- Payload reconstruction is used in network RPC to serve blocks-by-{root,range} responses. Here the `async` adjustment is messier, although I think I've managed to come up with a reasonable compromise: the handlers take the `SendOnDrop` by value so that they can drop it on _task completion_ (after the `fn` returns). Still, this is introducing disk reads onto core executor threads, which may have a negative performance impact (thoughts appreciated).
## Additional Info
- [x] For performance it would be great to remove the cloning of full blocks when converting them to blinded blocks to write to disk. I'm going to experiment with a `put_block` API that takes the block by value, breaks it into a blinded block and a payload, stores the blinded block, and then re-assembles the full block for the caller.
- [x] We should measure the latency of blocks-by-root and blocks-by-range responses.
- [x] We should add integration tests that stress the payload reconstruction (basic tests done, issue for more extensive tests: https://github.com/sigp/lighthouse/issues/3159)
- [x] We should (manually) test the schema v9 migration from several prior versions, particularly as blocks have changed on disk and some migrations rely on being able to load blocks.
Co-authored-by: Paul Hauner <paul@paulhauner.com>
2022-05-12 00:42:17 +00:00
|
|
|
"wyz 0.2.0",
|
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "bitvec"
|
|
|
|
version = "1.0.0"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "1489fcb93a5bb47da0462ca93ad252ad6af2145cce58d10d46a83931ba9f016b"
|
|
|
|
dependencies = [
|
|
|
|
"funty 2.0.0",
|
|
|
|
"radium 0.7.0",
|
|
|
|
"tap",
|
|
|
|
"wyz 0.5.0",
|
2020-04-08 06:46:37 +00:00
|
|
|
]
|
2019-12-09 11:39:44 +00:00
|
|
|
|
|
|
|
[[package]]
|
2020-06-29 10:25:42 +00:00
|
|
|
name = "blake2"
|
2022-03-02 05:09:52 +00:00
|
|
|
version = "0.10.4"
|
2019-12-09 11:39:44 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2022-03-02 05:09:52 +00:00
|
|
|
checksum = "b9cf849ee05b2ee5fba5e36f97ff8ec2533916700fc0758d40d92136a42f3388"
|
2019-12-09 11:39:44 +00:00
|
|
|
dependencies = [
|
2022-03-02 05:09:52 +00:00
|
|
|
"digest 0.10.3",
|
2020-07-01 08:01:03 +00:00
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "block-buffer"
|
2020-07-06 01:55:56 +00:00
|
|
|
version = "0.9.0"
|
2020-07-01 08:01:03 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2020-07-06 01:55:56 +00:00
|
|
|
checksum = "4152116fd6e9dadb291ae18fc1ec3575ed6d84c29642d97890f4b4a3417297e4"
|
2020-07-01 08:01:03 +00:00
|
|
|
dependencies = [
|
2021-07-13 00:48:33 +00:00
|
|
|
"block-padding",
|
|
|
|
"generic-array",
|
2019-12-09 11:39:44 +00:00
|
|
|
]
|
|
|
|
|
2021-12-22 06:17:14 +00:00
|
|
|
[[package]]
|
|
|
|
name = "block-buffer"
|
2022-02-10 04:12:03 +00:00
|
|
|
version = "0.10.2"
|
2021-12-22 06:17:14 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2022-02-10 04:12:03 +00:00
|
|
|
checksum = "0bf7fe51849ea569fd452f37822f606a5cabb684dc918707a0193fd4664ff324"
|
2021-12-22 06:17:14 +00:00
|
|
|
dependencies = [
|
|
|
|
"generic-array",
|
|
|
|
]
|
|
|
|
|
2020-08-27 07:04:12 +00:00
|
|
|
[[package]]
|
|
|
|
name = "block-padding"
|
|
|
|
version = "0.2.1"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "8d696c370c750c948ada61c69a0ee2cbbb9c50b1019ddb86d9317157a99c2cae"
|
|
|
|
|
2019-12-09 11:39:44 +00:00
|
|
|
[[package]]
|
|
|
|
name = "bls"
|
Initial work towards v0.2.0 (#924)
* Remove ping protocol
* Initial renaming of network services
* Correct rebasing relative to latest master
* Start updating types
* Adds HashMapDelay struct to utils
* Initial network restructure
* Network restructure. Adds new types for v0.2.0
* Removes build artefacts
* Shift validation to beacon chain
* Temporarily remove gossip validation
This is to be updated to match current optimisation efforts.
* Adds AggregateAndProof
* Begin rebuilding pubsub encoding/decoding
* Signature hacking
* Shift gossipsup decoding into eth2_libp2p
* Existing EF tests passing with fake_crypto
* Shifts block encoding/decoding into RPC
* Delete outdated API spec
* All release tests passing bar genesis state parsing
* Update and test YamlConfig
* Update to spec v0.10 compatible BLS
* Updates to BLS EF tests
* Add EF test for AggregateVerify
And delete unused hash2curve tests for uncompressed points
* Update EF tests to v0.10.1
* Use optional block root correctly in block proc
* Use genesis fork in deposit domain. All tests pass
* Fast aggregate verify test
* Update REST API docs
* Fix unused import
* Bump spec tags to v0.10.1
* Add `seconds_per_eth1_block` to chainspec
* Update to timestamp based eth1 voting scheme
* Return None from `get_votes_to_consider` if block cache is empty
* Handle overflows in `is_candidate_block`
* Revert to failing tests
* Fix eth1 data sets test
* Choose default vote according to spec
* Fix collect_valid_votes tests
* Fix `get_votes_to_consider` to choose all eligible blocks
* Uncomment winning_vote tests
* Add comments; remove unused code
* Reduce seconds_per_eth1_block for simulation
* Addressed review comments
* Add test for default vote case
* Fix logs
* Remove unused functions
* Meter default eth1 votes
* Fix comments
* Progress on attestation service
* Address review comments; remove unused dependency
* Initial work on removing libp2p lock
* Add LRU caches to store (rollup)
* Update attestation validation for DB changes (WIP)
* Initial version of should_forward_block
* Scaffold
* Progress on attestation validation
Also, consolidate prod+testing slot clocks so that they share much
of the same implementation and can both handle sub-slot time changes.
* Removes lock from libp2p service
* Completed network lock removal
* Finish(?) attestation processing
* Correct network termination future
* Add slot check to block check
* Correct fmt issues
* Remove Drop implementation for network service
* Add first attempt at attestation proc. re-write
* Add version 2 of attestation processing
* Minor fixes
* Add validator pubkey cache
* Make get_indexed_attestation take a committee
* Link signature processing into new attn verification
* First working version
* Ensure pubkey cache is updated
* Add more metrics, slight optimizations
* Clone committee cache during attestation processing
* Update shuffling cache during block processing
* Remove old commented-out code
* Fix shuffling cache insert bug
* Used indexed attestation in fork choice
* Restructure attn processing, add metrics
* Add more detailed metrics
* Tidy, fix failing tests
* Fix failing tests, tidy
* Address reviewers suggestions
* Disable/delete two outdated tests
* Modification of validator for subscriptions
* Add slot signing to validator client
* Further progress on validation subscription
* Adds necessary validator subscription functionality
* Add new Pubkeys struct to signature_sets
* Refactor with functional approach
* Update beacon chain
* Clean up validator <-> beacon node http types
* Add aggregator status to ValidatorDuty
* Impl Clone for manual slot clock
* Fix minor errors
* Further progress validator client subscription
* Initial subscription and aggregation handling
* Remove decompressed member from pubkey bytes
* Progress to modifying val client for attestation aggregation
* First draft of validator client upgrade for aggregate attestations
* Add hashmap for indices lookup
* Add state cache, remove store cache
* Only build the head committee cache
* Removes lock on a network channel
* Partially implement beacon node subscription http api
* Correct compilation issues
* Change `get_attesting_indices` to use Vec
* Fix failing test
* Partial implementation of timer
* Adds timer, removes exit_future, http api to op pool
* Partial multiple aggregate attestation handling
* Permits bulk messages accross gossipsub network channel
* Correct compile issues
* Improve gosispsub messaging and correct rest api helpers
* Added global gossipsub subscriptions
* Update validator subscriptions data structs
* Tidy
* Re-structure validator subscriptions
* Initial handling of subscriptions
* Re-structure network service
* Add pubkey cache persistence file
* Add more comments
* Integrate persistence file into builder
* Add pubkey cache tests
* Add HashSetDelay and introduce into attestation service
* Handles validator subscriptions
* Add data_dir to beacon chain builder
* Remove Option in pubkey cache persistence file
* Ensure consistency between datadir/data_dir
* Fix failing network test
* Peer subnet discovery gets queued for future subscriptions
* Reorganise attestation service functions
* Initial wiring of attestation service
* First draft of attestation service timing logic
* Correct minor typos
* Tidy
* Fix todos
* Improve tests
* Add PeerInfo to connected peers mapping
* Fix compile error
* Fix compile error from merge
* Split up block processing metrics
* Tidy
* Refactor get_pubkey_from_state
* Remove commented-out code
* Rename state_cache -> checkpoint_cache
* Rename Checkpoint -> Snapshot
* Tidy, add comments
* Tidy up find_head function
* Change some checkpoint -> snapshot
* Add tests
* Expose max_len
* Remove dead code
* Tidy
* Fix bug
* Add sync-speed metric
* Add first attempt at VerifiableBlock
* Start integrating into beacon chain
* Integrate VerifiableBlock
* Rename VerifableBlock -> PartialBlockVerification
* Add start of typed methods
* Add progress
* Add further progress
* Rename structs
* Add full block verification to block_processing.rs
* Further beacon chain integration
* Update checks for gossip
* Add todo
* Start adding segement verification
* Add passing chain segement test
* Initial integration with batch sync
* Minor changes
* Tidy, add more error checking
* Start adding chain_segment tests
* Finish invalid signature tests
* Include single and gossip verified blocks in tests
* Add gossip verification tests
* Start adding docs
* Finish adding comments to block_processing.rs
* Rename block_processing.rs -> block_verification
* Start removing old block processing code
* Fixes beacon_chain compilation
* Fix project-wide compile errors
* Remove old code
* Correct code to pass all tests
* Fix bug with beacon proposer index
* Fix shim for BlockProcessingError
* Only process one epoch at a time
* Fix loop in chain segment processing
* Correct tests from master merge
* Add caching for state.eth1_data_votes
* Add BeaconChain::validator_pubkey
* Revert "Add caching for state.eth1_data_votes"
This reverts commit cd73dcd6434fb8d8e6bf30c5356355598ea7b78e.
Co-authored-by: Grant Wuerker <gwuerker@gmail.com>
Co-authored-by: Michael Sproul <michael@sigmaprime.io>
Co-authored-by: Michael Sproul <micsproul@gmail.com>
Co-authored-by: pawan <pawandhananjay@gmail.com>
Co-authored-by: Paul Hauner <paul@paulhauner.com>
2020-03-17 06:24:44 +00:00
|
|
|
version = "0.2.0"
|
2019-12-09 11:39:44 +00:00
|
|
|
dependencies = [
|
2021-10-14 02:58:11 +00:00
|
|
|
"arbitrary",
|
2020-07-25 02:03:18 +00:00
|
|
|
"blst",
|
2022-04-04 00:26:16 +00:00
|
|
|
"eth2_hashing",
|
2021-11-29 22:32:53 +00:00
|
|
|
"eth2_serde_utils",
|
2021-11-29 03:57:54 +00:00
|
|
|
"eth2_ssz",
|
Separate execution payloads in the DB (#3157)
## Proposed Changes
Reduce post-merge disk usage by not storing finalized execution payloads in Lighthouse's database.
:warning: **This is achieved in a backwards-incompatible way for networks that have already merged** :warning:. Kiln users and shadow fork enjoyers will be unable to downgrade after running the code from this PR. The upgrade migration may take several minutes to run, and can't be aborted after it begins.
The main changes are:
- New column in the database called `ExecPayload`, keyed by beacon block root.
- The `BeaconBlock` column now stores blinded blocks only.
- Lots of places that previously used full blocks now use blinded blocks, e.g. analytics APIs, block replay in the DB, etc.
- On finalization:
- `prune_abanonded_forks` deletes non-canonical payloads whilst deleting non-canonical blocks.
- `migrate_db` deletes finalized canonical payloads whilst deleting finalized states.
- Conversions between blinded and full blocks are implemented in a compositional way, duplicating some work from Sean's PR #3134.
- The execution layer has a new `get_payload_by_block_hash` method that reconstructs a payload using the EE's `eth_getBlockByHash` call.
- I've tested manually that it works on Kiln, using Geth and Nethermind.
- This isn't necessarily the most efficient method, and new engine APIs are being discussed to improve this: https://github.com/ethereum/execution-apis/pull/146.
- We're depending on the `ethers` master branch, due to lots of recent changes. We're also using a workaround for https://github.com/gakonst/ethers-rs/issues/1134.
- Payload reconstruction is used in the HTTP API via `BeaconChain::get_block`, which is now `async`. Due to the `async` fn, the `blocking_json` wrapper has been removed.
- Payload reconstruction is used in network RPC to serve blocks-by-{root,range} responses. Here the `async` adjustment is messier, although I think I've managed to come up with a reasonable compromise: the handlers take the `SendOnDrop` by value so that they can drop it on _task completion_ (after the `fn` returns). Still, this is introducing disk reads onto core executor threads, which may have a negative performance impact (thoughts appreciated).
## Additional Info
- [x] For performance it would be great to remove the cloning of full blocks when converting them to blinded blocks to write to disk. I'm going to experiment with a `put_block` API that takes the block by value, breaks it into a blinded block and a payload, stores the blinded block, and then re-assembles the full block for the caller.
- [x] We should measure the latency of blocks-by-root and blocks-by-range responses.
- [x] We should add integration tests that stress the payload reconstruction (basic tests done, issue for more extensive tests: https://github.com/sigp/lighthouse/issues/3159)
- [x] We should (manually) test the schema v9 migration from several prior versions, particularly as blocks have changed on disk and some migrations rely on being able to load blocks.
Co-authored-by: Paul Hauner <paul@paulhauner.com>
2022-05-12 00:42:17 +00:00
|
|
|
"ethereum-types 0.12.1",
|
2020-10-28 22:19:38 +00:00
|
|
|
"hex",
|
2020-05-10 09:56:31 +00:00
|
|
|
"milagro_bls",
|
|
|
|
"rand 0.7.3",
|
|
|
|
"serde",
|
|
|
|
"serde_derive",
|
2021-11-29 03:57:54 +00:00
|
|
|
"tree_hash",
|
2020-05-19 01:23:08 +00:00
|
|
|
"zeroize",
|
2019-12-09 11:39:44 +00:00
|
|
|
]
|
|
|
|
|
2020-07-25 02:03:18 +00:00
|
|
|
[[package]]
|
|
|
|
name = "blst"
|
2022-07-05 23:36:42 +00:00
|
|
|
version = "0.3.10"
|
2020-11-28 06:41:32 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2022-07-05 23:36:42 +00:00
|
|
|
checksum = "6a30d0edd9dd1c60ddb42b80341c7852f6f985279a5c1a83659dcb65899dec99"
|
2020-07-25 02:03:18 +00:00
|
|
|
dependencies = [
|
|
|
|
"cc",
|
|
|
|
"glob",
|
|
|
|
"threadpool",
|
2022-06-18 23:59:43 +00:00
|
|
|
"which",
|
2020-11-28 06:41:32 +00:00
|
|
|
"zeroize",
|
2020-07-25 02:03:18 +00:00
|
|
|
]
|
|
|
|
|
2020-06-19 06:30:07 +00:00
|
|
|
[[package]]
|
|
|
|
name = "boot_node"
|
2022-07-21 22:02:36 +00:00
|
|
|
version = "2.4.0"
|
2020-06-19 06:30:07 +00:00
|
|
|
dependencies = [
|
2020-08-21 12:00:01 +00:00
|
|
|
"beacon_node",
|
2020-06-19 06:30:07 +00:00
|
|
|
"clap",
|
2021-11-08 01:37:58 +00:00
|
|
|
"clap_utils",
|
2021-11-16 00:46:12 +00:00
|
|
|
"eth2_network_config",
|
2021-11-29 03:57:54 +00:00
|
|
|
"eth2_ssz",
|
2020-10-28 22:19:38 +00:00
|
|
|
"hex",
|
Rename eth2_libp2p to lighthouse_network (#2702)
## Description
The `eth2_libp2p` crate was originally named and designed to incorporate a simple libp2p integration into lighthouse. Since its origins the crates purpose has expanded dramatically. It now houses a lot more sophistication that is specific to lighthouse and no longer just a libp2p integration.
As of this writing it currently houses the following high-level lighthouse-specific logic:
- Lighthouse's implementation of the eth2 RPC protocol and specific encodings/decodings
- Integration and handling of ENRs with respect to libp2p and eth2
- Lighthouse's discovery logic, its integration with discv5 and logic about searching and handling peers.
- Lighthouse's peer manager - This is a large module handling various aspects of Lighthouse's network, such as peer scoring, handling pings and metadata, connection maintenance and recording, etc.
- Lighthouse's peer database - This is a collection of information stored for each individual peer which is specific to lighthouse. We store connection state, sync state, last seen ips and scores etc. The data stored for each peer is designed for various elements of the lighthouse code base such as syncing and the http api.
- Gossipsub scoring - This stores a collection of gossipsub 1.1 scoring mechanisms that are continuously analyssed and updated based on the ethereum 2 networks and how Lighthouse performs on these networks.
- Lighthouse specific types for managing gossipsub topics, sync status and ENR fields
- Lighthouse's network HTTP API metrics - A collection of metrics for lighthouse network monitoring
- Lighthouse's custom configuration of all networking protocols, RPC, gossipsub, discovery, identify and libp2p.
Therefore it makes sense to rename the crate to be more akin to its current purposes, simply that it manages the majority of Lighthouse's network stack. This PR renames this crate to `lighthouse_network`
Co-authored-by: Paul Hauner <paul@paulhauner.com>
2021-10-19 00:30:39 +00:00
|
|
|
"lighthouse_network",
|
2020-12-09 01:34:58 +00:00
|
|
|
"log",
|
2020-06-19 06:30:07 +00:00
|
|
|
"logging",
|
2021-11-08 01:37:58 +00:00
|
|
|
"serde",
|
|
|
|
"serde_derive",
|
|
|
|
"serde_json",
|
2022-03-01 22:56:47 +00:00
|
|
|
"serde_yaml",
|
2020-06-19 06:30:07 +00:00
|
|
|
"slog",
|
|
|
|
"slog-async",
|
|
|
|
"slog-scope",
|
|
|
|
"slog-stdlog",
|
|
|
|
"slog-term",
|
2021-08-17 01:00:24 +00:00
|
|
|
"tokio",
|
2020-09-29 08:28:29 +00:00
|
|
|
"types",
|
2020-06-19 06:30:07 +00:00
|
|
|
]
|
|
|
|
|
2020-11-13 06:06:35 +00:00
|
|
|
[[package]]
|
|
|
|
name = "bs58"
|
|
|
|
version = "0.4.0"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "771fe0050b883fcc3ea2359b1a96bcfbc090b7116eae7c3c512c7a083fdf23d3"
|
|
|
|
|
2019-12-09 11:39:44 +00:00
|
|
|
[[package]]
|
|
|
|
name = "bstr"
|
2021-10-01 01:23:55 +00:00
|
|
|
version = "0.2.17"
|
2019-12-09 11:39:44 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2021-10-01 01:23:55 +00:00
|
|
|
checksum = "ba3569f383e8f1598449f1a423e72e99569137b47740b1da11ef19af3d5c3223"
|
2019-12-09 11:39:44 +00:00
|
|
|
dependencies = [
|
2020-05-10 09:56:31 +00:00
|
|
|
"lazy_static",
|
|
|
|
"memchr",
|
|
|
|
"regex-automata",
|
|
|
|
"serde",
|
2019-12-09 11:39:44 +00:00
|
|
|
]
|
|
|
|
|
2020-09-29 03:46:54 +00:00
|
|
|
[[package]]
|
|
|
|
name = "buf_redux"
|
|
|
|
version = "0.8.4"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "b953a6887648bb07a535631f2bc00fbdb2a2216f135552cb3f534ed136b9c07f"
|
|
|
|
dependencies = [
|
|
|
|
"memchr",
|
|
|
|
"safemem",
|
|
|
|
]
|
|
|
|
|
2022-07-01 01:15:19 +00:00
|
|
|
[[package]]
|
|
|
|
name = "builder_client"
|
|
|
|
version = "0.1.0"
|
|
|
|
dependencies = [
|
|
|
|
"eth2",
|
|
|
|
"reqwest",
|
|
|
|
"sensitive_url",
|
|
|
|
"serde",
|
|
|
|
"serde_json",
|
|
|
|
]
|
|
|
|
|
2019-12-09 11:39:44 +00:00
|
|
|
[[package]]
|
|
|
|
name = "bumpalo"
|
2022-06-18 23:59:43 +00:00
|
|
|
version = "3.10.0"
|
2019-12-09 11:39:44 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2022-06-18 23:59:43 +00:00
|
|
|
checksum = "37ccbd214614c6783386c1af30caf03192f17891059cecc394b4fb119e363de3"
|
2019-12-09 11:39:44 +00:00
|
|
|
|
2021-07-09 03:20:24 +00:00
|
|
|
[[package]]
|
|
|
|
name = "byte-slice-cast"
|
2022-03-14 23:11:40 +00:00
|
|
|
version = "1.2.1"
|
2021-07-09 03:20:24 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2022-03-14 23:11:40 +00:00
|
|
|
checksum = "87c5fdd0166095e1d463fc6cc01aa8ce547ad77a4e84d42eb6762b084e28067e"
|
2021-07-09 03:20:24 +00:00
|
|
|
|
2019-12-09 11:39:44 +00:00
|
|
|
[[package]]
|
|
|
|
name = "byteorder"
|
2021-05-04 00:44:05 +00:00
|
|
|
version = "1.4.3"
|
2019-12-09 11:39:44 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2021-05-04 00:44:05 +00:00
|
|
|
checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610"
|
2019-12-09 11:39:44 +00:00
|
|
|
|
2021-02-10 23:29:49 +00:00
|
|
|
[[package]]
|
|
|
|
name = "bytes"
|
2021-09-16 04:45:05 +00:00
|
|
|
version = "1.1.0"
|
2021-02-10 23:29:49 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2021-09-16 04:45:05 +00:00
|
|
|
checksum = "c4872d67bab6358e59559027aa3b9157c53d9358c51423c17554809a8858e0f8"
|
Separate execution payloads in the DB (#3157)
## Proposed Changes
Reduce post-merge disk usage by not storing finalized execution payloads in Lighthouse's database.
:warning: **This is achieved in a backwards-incompatible way for networks that have already merged** :warning:. Kiln users and shadow fork enjoyers will be unable to downgrade after running the code from this PR. The upgrade migration may take several minutes to run, and can't be aborted after it begins.
The main changes are:
- New column in the database called `ExecPayload`, keyed by beacon block root.
- The `BeaconBlock` column now stores blinded blocks only.
- Lots of places that previously used full blocks now use blinded blocks, e.g. analytics APIs, block replay in the DB, etc.
- On finalization:
- `prune_abanonded_forks` deletes non-canonical payloads whilst deleting non-canonical blocks.
- `migrate_db` deletes finalized canonical payloads whilst deleting finalized states.
- Conversions between blinded and full blocks are implemented in a compositional way, duplicating some work from Sean's PR #3134.
- The execution layer has a new `get_payload_by_block_hash` method that reconstructs a payload using the EE's `eth_getBlockByHash` call.
- I've tested manually that it works on Kiln, using Geth and Nethermind.
- This isn't necessarily the most efficient method, and new engine APIs are being discussed to improve this: https://github.com/ethereum/execution-apis/pull/146.
- We're depending on the `ethers` master branch, due to lots of recent changes. We're also using a workaround for https://github.com/gakonst/ethers-rs/issues/1134.
- Payload reconstruction is used in the HTTP API via `BeaconChain::get_block`, which is now `async`. Due to the `async` fn, the `blocking_json` wrapper has been removed.
- Payload reconstruction is used in network RPC to serve blocks-by-{root,range} responses. Here the `async` adjustment is messier, although I think I've managed to come up with a reasonable compromise: the handlers take the `SendOnDrop` by value so that they can drop it on _task completion_ (after the `fn` returns). Still, this is introducing disk reads onto core executor threads, which may have a negative performance impact (thoughts appreciated).
## Additional Info
- [x] For performance it would be great to remove the cloning of full blocks when converting them to blinded blocks to write to disk. I'm going to experiment with a `put_block` API that takes the block by value, breaks it into a blinded block and a payload, stores the blinded block, and then re-assembles the full block for the caller.
- [x] We should measure the latency of blocks-by-root and blocks-by-range responses.
- [x] We should add integration tests that stress the payload reconstruction (basic tests done, issue for more extensive tests: https://github.com/sigp/lighthouse/issues/3159)
- [x] We should (manually) test the schema v9 migration from several prior versions, particularly as blocks have changed on disk and some migrations rely on being able to load blocks.
Co-authored-by: Paul Hauner <paul@paulhauner.com>
2022-05-12 00:42:17 +00:00
|
|
|
dependencies = [
|
|
|
|
"serde",
|
|
|
|
]
|
2021-02-10 23:29:49 +00:00
|
|
|
|
2020-09-11 01:43:13 +00:00
|
|
|
[[package]]
|
|
|
|
name = "bzip2"
|
2021-07-05 00:54:17 +00:00
|
|
|
version = "0.4.3"
|
2020-09-11 01:43:13 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2021-07-05 00:54:17 +00:00
|
|
|
checksum = "6afcd980b5f3a45017c57e57a2fcccbb351cc43a356ce117ef760ef8052b89b0"
|
2020-09-11 01:43:13 +00:00
|
|
|
dependencies = [
|
|
|
|
"bzip2-sys",
|
|
|
|
"libc",
|
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "bzip2-sys"
|
2021-07-05 00:54:17 +00:00
|
|
|
version = "0.1.11+1.0.8"
|
2020-09-11 01:43:13 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2021-07-05 00:54:17 +00:00
|
|
|
checksum = "736a955f3fa7875102d57c82b8cac37ec45224a07fd32d58f9f7a186b6cd4cdc"
|
2020-09-11 01:43:13 +00:00
|
|
|
dependencies = [
|
|
|
|
"cc",
|
|
|
|
"libc",
|
|
|
|
"pkg-config",
|
|
|
|
]
|
|
|
|
|
2019-12-09 11:39:44 +00:00
|
|
|
[[package]]
|
|
|
|
name = "cached_tree_hash"
|
|
|
|
version = "0.1.0"
|
|
|
|
dependencies = [
|
2022-04-04 00:26:16 +00:00
|
|
|
"eth2_hashing",
|
2021-11-29 03:57:54 +00:00
|
|
|
"eth2_ssz",
|
2022-03-31 07:52:23 +00:00
|
|
|
"eth2_ssz_derive",
|
2021-11-29 03:57:54 +00:00
|
|
|
"eth2_ssz_types",
|
Separate execution payloads in the DB (#3157)
## Proposed Changes
Reduce post-merge disk usage by not storing finalized execution payloads in Lighthouse's database.
:warning: **This is achieved in a backwards-incompatible way for networks that have already merged** :warning:. Kiln users and shadow fork enjoyers will be unable to downgrade after running the code from this PR. The upgrade migration may take several minutes to run, and can't be aborted after it begins.
The main changes are:
- New column in the database called `ExecPayload`, keyed by beacon block root.
- The `BeaconBlock` column now stores blinded blocks only.
- Lots of places that previously used full blocks now use blinded blocks, e.g. analytics APIs, block replay in the DB, etc.
- On finalization:
- `prune_abanonded_forks` deletes non-canonical payloads whilst deleting non-canonical blocks.
- `migrate_db` deletes finalized canonical payloads whilst deleting finalized states.
- Conversions between blinded and full blocks are implemented in a compositional way, duplicating some work from Sean's PR #3134.
- The execution layer has a new `get_payload_by_block_hash` method that reconstructs a payload using the EE's `eth_getBlockByHash` call.
- I've tested manually that it works on Kiln, using Geth and Nethermind.
- This isn't necessarily the most efficient method, and new engine APIs are being discussed to improve this: https://github.com/ethereum/execution-apis/pull/146.
- We're depending on the `ethers` master branch, due to lots of recent changes. We're also using a workaround for https://github.com/gakonst/ethers-rs/issues/1134.
- Payload reconstruction is used in the HTTP API via `BeaconChain::get_block`, which is now `async`. Due to the `async` fn, the `blocking_json` wrapper has been removed.
- Payload reconstruction is used in network RPC to serve blocks-by-{root,range} responses. Here the `async` adjustment is messier, although I think I've managed to come up with a reasonable compromise: the handlers take the `SendOnDrop` by value so that they can drop it on _task completion_ (after the `fn` returns). Still, this is introducing disk reads onto core executor threads, which may have a negative performance impact (thoughts appreciated).
## Additional Info
- [x] For performance it would be great to remove the cloning of full blocks when converting them to blinded blocks to write to disk. I'm going to experiment with a `put_block` API that takes the block by value, breaks it into a blinded block and a payload, stores the blinded block, and then re-assembles the full block for the caller.
- [x] We should measure the latency of blocks-by-root and blocks-by-range responses.
- [x] We should add integration tests that stress the payload reconstruction (basic tests done, issue for more extensive tests: https://github.com/sigp/lighthouse/issues/3159)
- [x] We should (manually) test the schema v9 migration from several prior versions, particularly as blocks have changed on disk and some migrations rely on being able to load blocks.
Co-authored-by: Paul Hauner <paul@paulhauner.com>
2022-05-12 00:42:17 +00:00
|
|
|
"ethereum-types 0.12.1",
|
2022-06-18 23:59:43 +00:00
|
|
|
"quickcheck",
|
2020-05-10 09:56:31 +00:00
|
|
|
"quickcheck_macros",
|
2020-12-09 01:34:58 +00:00
|
|
|
"smallvec",
|
2021-11-29 03:57:54 +00:00
|
|
|
"tree_hash",
|
2019-12-09 11:39:44 +00:00
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "cast"
|
2021-06-03 01:11:33 +00:00
|
|
|
version = "0.2.7"
|
2019-12-09 11:39:44 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2021-06-03 01:11:33 +00:00
|
|
|
checksum = "4c24dab4283a142afa2fdca129b80ad2c6284e073930f964c3a1293c225ee39a"
|
2019-12-09 11:39:44 +00:00
|
|
|
dependencies = [
|
2021-06-03 01:11:33 +00:00
|
|
|
"rustc_version 0.4.0",
|
2019-12-09 11:39:44 +00:00
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "cc"
|
2022-02-17 21:47:06 +00:00
|
|
|
version = "1.0.73"
|
2019-12-09 11:39:44 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2022-02-17 21:47:06 +00:00
|
|
|
checksum = "2fff2a6927b3bb87f9595d67196a70493f627687a71d87a0d692242c33f58c11"
|
2019-12-09 11:39:44 +00:00
|
|
|
|
2021-12-21 08:23:17 +00:00
|
|
|
[[package]]
|
|
|
|
name = "cexpr"
|
2021-12-22 06:17:14 +00:00
|
|
|
version = "0.6.0"
|
2021-12-21 08:23:17 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2021-12-22 06:17:14 +00:00
|
|
|
checksum = "6fac387a98bb7c37292057cffc56d62ecb629900026402633ae9160df93a8766"
|
2021-12-21 08:23:17 +00:00
|
|
|
dependencies = [
|
2022-03-31 07:52:23 +00:00
|
|
|
"nom 7.1.1",
|
2021-12-21 08:23:17 +00:00
|
|
|
]
|
|
|
|
|
2020-10-23 04:16:33 +00:00
|
|
|
[[package]]
|
|
|
|
name = "cfg-if"
|
|
|
|
version = "1.0.0"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
|
|
|
|
|
2020-05-17 11:16:48 +00:00
|
|
|
[[package]]
|
2020-06-29 10:25:42 +00:00
|
|
|
name = "chacha20"
|
2022-02-10 04:12:03 +00:00
|
|
|
version = "0.8.1"
|
2020-05-17 11:16:48 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2022-02-10 04:12:03 +00:00
|
|
|
checksum = "01b72a433d0cf2aef113ba70f62634c56fddb0f244e6377185c56a7cadbd8f91"
|
2020-05-17 11:16:48 +00:00
|
|
|
dependencies = [
|
2021-11-18 05:08:42 +00:00
|
|
|
"cfg-if",
|
2021-08-17 01:00:24 +00:00
|
|
|
"cipher",
|
2022-04-04 00:26:16 +00:00
|
|
|
"cpufeatures",
|
2020-06-29 10:25:42 +00:00
|
|
|
"zeroize",
|
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "chacha20poly1305"
|
2022-02-10 04:12:03 +00:00
|
|
|
version = "0.9.0"
|
2020-06-29 10:25:42 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2022-02-10 04:12:03 +00:00
|
|
|
checksum = "3b84ed6d1d5f7aa9bdde921a5090e0ca4d934d250ea3b402a5fab3a994e28a2a"
|
2020-06-29 10:25:42 +00:00
|
|
|
dependencies = [
|
2021-06-03 01:11:33 +00:00
|
|
|
"aead",
|
2020-06-29 10:25:42 +00:00
|
|
|
"chacha20",
|
2021-08-17 01:00:24 +00:00
|
|
|
"cipher",
|
2020-06-29 10:25:42 +00:00
|
|
|
"poly1305",
|
|
|
|
"zeroize",
|
2020-05-17 11:16:48 +00:00
|
|
|
]
|
|
|
|
|
2019-12-09 11:39:44 +00:00
|
|
|
[[package]]
|
|
|
|
name = "chrono"
|
2020-10-05 07:45:54 +00:00
|
|
|
version = "0.4.19"
|
2019-12-09 11:39:44 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2020-10-05 07:45:54 +00:00
|
|
|
checksum = "670ad68c9088c2a963aaa298cb369688cf3f9465ce5e2d4ca10e6e0098a1ce73"
|
2019-12-09 11:39:44 +00:00
|
|
|
dependencies = [
|
2020-09-26 06:35:45 +00:00
|
|
|
"libc",
|
2020-05-10 09:56:31 +00:00
|
|
|
"num-integer",
|
|
|
|
"num-traits",
|
2022-06-18 23:59:43 +00:00
|
|
|
"time 0.1.44",
|
2021-07-09 03:20:24 +00:00
|
|
|
"winapi",
|
2019-12-09 11:39:44 +00:00
|
|
|
]
|
|
|
|
|
2021-07-05 00:54:17 +00:00
|
|
|
[[package]]
|
|
|
|
name = "cipher"
|
|
|
|
version = "0.3.0"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "7ee52072ec15386f770805afd189a01c8841be8696bed250fa2f13c4c0d6dfb7"
|
|
|
|
dependencies = [
|
2021-07-13 00:48:33 +00:00
|
|
|
"generic-array",
|
2021-07-05 00:54:17 +00:00
|
|
|
]
|
|
|
|
|
2021-12-21 08:23:17 +00:00
|
|
|
[[package]]
|
|
|
|
name = "clang-sys"
|
2022-06-18 23:59:43 +00:00
|
|
|
version = "1.3.3"
|
2021-12-21 08:23:17 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2022-06-18 23:59:43 +00:00
|
|
|
checksum = "5a050e2153c5be08febd6734e29298e844fdb0fa21aeddd63b4eb7baa106c69b"
|
2021-12-21 08:23:17 +00:00
|
|
|
dependencies = [
|
|
|
|
"glob",
|
|
|
|
"libc",
|
|
|
|
"libloading",
|
|
|
|
]
|
|
|
|
|
2019-12-09 11:39:44 +00:00
|
|
|
[[package]]
|
|
|
|
name = "clap"
|
2021-12-22 06:17:14 +00:00
|
|
|
version = "2.34.0"
|
2019-12-09 11:39:44 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2021-12-22 06:17:14 +00:00
|
|
|
checksum = "a0610544180c38b88101fecf2dd634b174a62eef6946f84dfc6a7127512b381c"
|
2019-12-09 11:39:44 +00:00
|
|
|
dependencies = [
|
2021-12-22 06:17:14 +00:00
|
|
|
"ansi_term",
|
2020-05-10 09:56:31 +00:00
|
|
|
"atty",
|
2020-12-09 01:34:58 +00:00
|
|
|
"bitflags",
|
2021-07-09 06:15:32 +00:00
|
|
|
"strsim 0.8.0",
|
2020-05-10 09:56:31 +00:00
|
|
|
"textwrap",
|
|
|
|
"unicode-width",
|
|
|
|
"vec_map",
|
2019-12-09 11:39:44 +00:00
|
|
|
]
|
|
|
|
|
2020-04-19 02:20:43 +00:00
|
|
|
[[package]]
|
|
|
|
name = "clap_utils"
|
|
|
|
version = "0.1.0"
|
|
|
|
dependencies = [
|
2020-05-10 09:56:31 +00:00
|
|
|
"clap",
|
2021-07-05 00:54:17 +00:00
|
|
|
"dirs",
|
2020-12-08 05:41:10 +00:00
|
|
|
"eth2_network_config",
|
2021-11-29 03:57:54 +00:00
|
|
|
"eth2_ssz",
|
Separate execution payloads in the DB (#3157)
## Proposed Changes
Reduce post-merge disk usage by not storing finalized execution payloads in Lighthouse's database.
:warning: **This is achieved in a backwards-incompatible way for networks that have already merged** :warning:. Kiln users and shadow fork enjoyers will be unable to downgrade after running the code from this PR. The upgrade migration may take several minutes to run, and can't be aborted after it begins.
The main changes are:
- New column in the database called `ExecPayload`, keyed by beacon block root.
- The `BeaconBlock` column now stores blinded blocks only.
- Lots of places that previously used full blocks now use blinded blocks, e.g. analytics APIs, block replay in the DB, etc.
- On finalization:
- `prune_abanonded_forks` deletes non-canonical payloads whilst deleting non-canonical blocks.
- `migrate_db` deletes finalized canonical payloads whilst deleting finalized states.
- Conversions between blinded and full blocks are implemented in a compositional way, duplicating some work from Sean's PR #3134.
- The execution layer has a new `get_payload_by_block_hash` method that reconstructs a payload using the EE's `eth_getBlockByHash` call.
- I've tested manually that it works on Kiln, using Geth and Nethermind.
- This isn't necessarily the most efficient method, and new engine APIs are being discussed to improve this: https://github.com/ethereum/execution-apis/pull/146.
- We're depending on the `ethers` master branch, due to lots of recent changes. We're also using a workaround for https://github.com/gakonst/ethers-rs/issues/1134.
- Payload reconstruction is used in the HTTP API via `BeaconChain::get_block`, which is now `async`. Due to the `async` fn, the `blocking_json` wrapper has been removed.
- Payload reconstruction is used in network RPC to serve blocks-by-{root,range} responses. Here the `async` adjustment is messier, although I think I've managed to come up with a reasonable compromise: the handlers take the `SendOnDrop` by value so that they can drop it on _task completion_ (after the `fn` returns). Still, this is introducing disk reads onto core executor threads, which may have a negative performance impact (thoughts appreciated).
## Additional Info
- [x] For performance it would be great to remove the cloning of full blocks when converting them to blinded blocks to write to disk. I'm going to experiment with a `put_block` API that takes the block by value, breaks it into a blinded block and a payload, stores the blinded block, and then re-assembles the full block for the caller.
- [x] We should measure the latency of blocks-by-root and blocks-by-range responses.
- [x] We should add integration tests that stress the payload reconstruction (basic tests done, issue for more extensive tests: https://github.com/sigp/lighthouse/issues/3159)
- [x] We should (manually) test the schema v9 migration from several prior versions, particularly as blocks have changed on disk and some migrations rely on being able to load blocks.
Co-authored-by: Paul Hauner <paul@paulhauner.com>
2022-05-12 00:42:17 +00:00
|
|
|
"ethereum-types 0.12.1",
|
2020-10-28 22:19:38 +00:00
|
|
|
"hex",
|
2022-03-01 22:56:47 +00:00
|
|
|
"serde",
|
|
|
|
"serde_json",
|
|
|
|
"serde_yaml",
|
|
|
|
"types",
|
2020-04-19 02:20:43 +00:00
|
|
|
]
|
|
|
|
|
2019-12-09 11:39:44 +00:00
|
|
|
[[package]]
|
|
|
|
name = "client"
|
2020-08-06 03:43:05 +00:00
|
|
|
version = "0.2.0"
|
2019-12-09 11:39:44 +00:00
|
|
|
dependencies = [
|
2020-05-10 09:56:31 +00:00
|
|
|
"beacon_chain",
|
2020-09-29 00:02:44 +00:00
|
|
|
"directory",
|
2021-07-05 00:54:17 +00:00
|
|
|
"dirs",
|
2020-05-10 09:56:31 +00:00
|
|
|
"environment",
|
|
|
|
"error-chain",
|
|
|
|
"eth1",
|
2021-09-22 00:37:28 +00:00
|
|
|
"eth2",
|
2020-05-10 09:56:31 +00:00
|
|
|
"eth2_config",
|
2021-11-16 00:46:12 +00:00
|
|
|
"execution_layer",
|
2020-05-10 09:56:31 +00:00
|
|
|
"genesis",
|
2020-09-29 03:46:54 +00:00
|
|
|
"http_api",
|
|
|
|
"http_metrics",
|
2020-05-10 09:56:31 +00:00
|
|
|
"lazy_static",
|
|
|
|
"lighthouse_metrics",
|
Rename eth2_libp2p to lighthouse_network (#2702)
## Description
The `eth2_libp2p` crate was originally named and designed to incorporate a simple libp2p integration into lighthouse. Since its origins the crates purpose has expanded dramatically. It now houses a lot more sophistication that is specific to lighthouse and no longer just a libp2p integration.
As of this writing it currently houses the following high-level lighthouse-specific logic:
- Lighthouse's implementation of the eth2 RPC protocol and specific encodings/decodings
- Integration and handling of ENRs with respect to libp2p and eth2
- Lighthouse's discovery logic, its integration with discv5 and logic about searching and handling peers.
- Lighthouse's peer manager - This is a large module handling various aspects of Lighthouse's network, such as peer scoring, handling pings and metadata, connection maintenance and recording, etc.
- Lighthouse's peer database - This is a collection of information stored for each individual peer which is specific to lighthouse. We store connection state, sync state, last seen ips and scores etc. The data stored for each peer is designed for various elements of the lighthouse code base such as syncing and the http api.
- Gossipsub scoring - This stores a collection of gossipsub 1.1 scoring mechanisms that are continuously analyssed and updated based on the ethereum 2 networks and how Lighthouse performs on these networks.
- Lighthouse specific types for managing gossipsub topics, sync status and ENR fields
- Lighthouse's network HTTP API metrics - A collection of metrics for lighthouse network monitoring
- Lighthouse's custom configuration of all networking protocols, RPC, gossipsub, discovery, identify and libp2p.
Therefore it makes sense to rename the crate to be more akin to its current purposes, simply that it manages the majority of Lighthouse's network stack. This PR renames this crate to `lighthouse_network`
Co-authored-by: Paul Hauner <paul@paulhauner.com>
2021-10-19 00:30:39 +00:00
|
|
|
"lighthouse_network",
|
2021-05-26 05:58:41 +00:00
|
|
|
"monitoring_api",
|
2020-05-10 09:56:31 +00:00
|
|
|
"network",
|
2022-06-18 23:59:43 +00:00
|
|
|
"parking_lot 0.12.1",
|
2021-09-22 00:37:28 +00:00
|
|
|
"sensitive_url",
|
2020-05-10 09:56:31 +00:00
|
|
|
"serde",
|
|
|
|
"serde_derive",
|
2022-06-29 09:07:09 +00:00
|
|
|
"serde_yaml",
|
2020-11-23 03:43:22 +00:00
|
|
|
"slasher",
|
2020-12-16 03:44:01 +00:00
|
|
|
"slasher_service",
|
2020-05-10 09:56:31 +00:00
|
|
|
"slog",
|
|
|
|
"slot_clock",
|
|
|
|
"store",
|
2020-10-05 07:45:54 +00:00
|
|
|
"task_executor",
|
2022-07-05 23:36:42 +00:00
|
|
|
"time 0.3.11",
|
2020-05-10 09:56:31 +00:00
|
|
|
"timer",
|
2021-08-17 01:00:24 +00:00
|
|
|
"tokio",
|
2020-05-10 09:56:31 +00:00
|
|
|
"types",
|
2019-12-09 11:39:44 +00:00
|
|
|
]
|
|
|
|
|
2020-06-06 06:39:42 +00:00
|
|
|
[[package]]
|
|
|
|
name = "cmake"
|
2022-01-11 01:35:56 +00:00
|
|
|
version = "0.1.48"
|
2020-06-06 06:39:42 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2022-01-11 01:35:56 +00:00
|
|
|
checksum = "e8ad8cef104ac57b68b89df3208164d228503abbdce70f6880ffa3d970e7443a"
|
2020-06-06 06:39:42 +00:00
|
|
|
dependencies = [
|
|
|
|
"cc",
|
|
|
|
]
|
|
|
|
|
2019-12-09 11:39:44 +00:00
|
|
|
[[package]]
|
|
|
|
name = "compare_fields"
|
Initial work towards v0.2.0 (#924)
* Remove ping protocol
* Initial renaming of network services
* Correct rebasing relative to latest master
* Start updating types
* Adds HashMapDelay struct to utils
* Initial network restructure
* Network restructure. Adds new types for v0.2.0
* Removes build artefacts
* Shift validation to beacon chain
* Temporarily remove gossip validation
This is to be updated to match current optimisation efforts.
* Adds AggregateAndProof
* Begin rebuilding pubsub encoding/decoding
* Signature hacking
* Shift gossipsup decoding into eth2_libp2p
* Existing EF tests passing with fake_crypto
* Shifts block encoding/decoding into RPC
* Delete outdated API spec
* All release tests passing bar genesis state parsing
* Update and test YamlConfig
* Update to spec v0.10 compatible BLS
* Updates to BLS EF tests
* Add EF test for AggregateVerify
And delete unused hash2curve tests for uncompressed points
* Update EF tests to v0.10.1
* Use optional block root correctly in block proc
* Use genesis fork in deposit domain. All tests pass
* Fast aggregate verify test
* Update REST API docs
* Fix unused import
* Bump spec tags to v0.10.1
* Add `seconds_per_eth1_block` to chainspec
* Update to timestamp based eth1 voting scheme
* Return None from `get_votes_to_consider` if block cache is empty
* Handle overflows in `is_candidate_block`
* Revert to failing tests
* Fix eth1 data sets test
* Choose default vote according to spec
* Fix collect_valid_votes tests
* Fix `get_votes_to_consider` to choose all eligible blocks
* Uncomment winning_vote tests
* Add comments; remove unused code
* Reduce seconds_per_eth1_block for simulation
* Addressed review comments
* Add test for default vote case
* Fix logs
* Remove unused functions
* Meter default eth1 votes
* Fix comments
* Progress on attestation service
* Address review comments; remove unused dependency
* Initial work on removing libp2p lock
* Add LRU caches to store (rollup)
* Update attestation validation for DB changes (WIP)
* Initial version of should_forward_block
* Scaffold
* Progress on attestation validation
Also, consolidate prod+testing slot clocks so that they share much
of the same implementation and can both handle sub-slot time changes.
* Removes lock from libp2p service
* Completed network lock removal
* Finish(?) attestation processing
* Correct network termination future
* Add slot check to block check
* Correct fmt issues
* Remove Drop implementation for network service
* Add first attempt at attestation proc. re-write
* Add version 2 of attestation processing
* Minor fixes
* Add validator pubkey cache
* Make get_indexed_attestation take a committee
* Link signature processing into new attn verification
* First working version
* Ensure pubkey cache is updated
* Add more metrics, slight optimizations
* Clone committee cache during attestation processing
* Update shuffling cache during block processing
* Remove old commented-out code
* Fix shuffling cache insert bug
* Used indexed attestation in fork choice
* Restructure attn processing, add metrics
* Add more detailed metrics
* Tidy, fix failing tests
* Fix failing tests, tidy
* Address reviewers suggestions
* Disable/delete two outdated tests
* Modification of validator for subscriptions
* Add slot signing to validator client
* Further progress on validation subscription
* Adds necessary validator subscription functionality
* Add new Pubkeys struct to signature_sets
* Refactor with functional approach
* Update beacon chain
* Clean up validator <-> beacon node http types
* Add aggregator status to ValidatorDuty
* Impl Clone for manual slot clock
* Fix minor errors
* Further progress validator client subscription
* Initial subscription and aggregation handling
* Remove decompressed member from pubkey bytes
* Progress to modifying val client for attestation aggregation
* First draft of validator client upgrade for aggregate attestations
* Add hashmap for indices lookup
* Add state cache, remove store cache
* Only build the head committee cache
* Removes lock on a network channel
* Partially implement beacon node subscription http api
* Correct compilation issues
* Change `get_attesting_indices` to use Vec
* Fix failing test
* Partial implementation of timer
* Adds timer, removes exit_future, http api to op pool
* Partial multiple aggregate attestation handling
* Permits bulk messages accross gossipsub network channel
* Correct compile issues
* Improve gosispsub messaging and correct rest api helpers
* Added global gossipsub subscriptions
* Update validator subscriptions data structs
* Tidy
* Re-structure validator subscriptions
* Initial handling of subscriptions
* Re-structure network service
* Add pubkey cache persistence file
* Add more comments
* Integrate persistence file into builder
* Add pubkey cache tests
* Add HashSetDelay and introduce into attestation service
* Handles validator subscriptions
* Add data_dir to beacon chain builder
* Remove Option in pubkey cache persistence file
* Ensure consistency between datadir/data_dir
* Fix failing network test
* Peer subnet discovery gets queued for future subscriptions
* Reorganise attestation service functions
* Initial wiring of attestation service
* First draft of attestation service timing logic
* Correct minor typos
* Tidy
* Fix todos
* Improve tests
* Add PeerInfo to connected peers mapping
* Fix compile error
* Fix compile error from merge
* Split up block processing metrics
* Tidy
* Refactor get_pubkey_from_state
* Remove commented-out code
* Rename state_cache -> checkpoint_cache
* Rename Checkpoint -> Snapshot
* Tidy, add comments
* Tidy up find_head function
* Change some checkpoint -> snapshot
* Add tests
* Expose max_len
* Remove dead code
* Tidy
* Fix bug
* Add sync-speed metric
* Add first attempt at VerifiableBlock
* Start integrating into beacon chain
* Integrate VerifiableBlock
* Rename VerifableBlock -> PartialBlockVerification
* Add start of typed methods
* Add progress
* Add further progress
* Rename structs
* Add full block verification to block_processing.rs
* Further beacon chain integration
* Update checks for gossip
* Add todo
* Start adding segement verification
* Add passing chain segement test
* Initial integration with batch sync
* Minor changes
* Tidy, add more error checking
* Start adding chain_segment tests
* Finish invalid signature tests
* Include single and gossip verified blocks in tests
* Add gossip verification tests
* Start adding docs
* Finish adding comments to block_processing.rs
* Rename block_processing.rs -> block_verification
* Start removing old block processing code
* Fixes beacon_chain compilation
* Fix project-wide compile errors
* Remove old code
* Correct code to pass all tests
* Fix bug with beacon proposer index
* Fix shim for BlockProcessingError
* Only process one epoch at a time
* Fix loop in chain segment processing
* Correct tests from master merge
* Add caching for state.eth1_data_votes
* Add BeaconChain::validator_pubkey
* Revert "Add caching for state.eth1_data_votes"
This reverts commit cd73dcd6434fb8d8e6bf30c5356355598ea7b78e.
Co-authored-by: Grant Wuerker <gwuerker@gmail.com>
Co-authored-by: Michael Sproul <michael@sigmaprime.io>
Co-authored-by: Michael Sproul <micsproul@gmail.com>
Co-authored-by: pawan <pawandhananjay@gmail.com>
Co-authored-by: Paul Hauner <paul@paulhauner.com>
2020-03-17 06:24:44 +00:00
|
|
|
version = "0.2.0"
|
2019-12-09 11:39:44 +00:00
|
|
|
dependencies = [
|
2020-05-10 09:56:31 +00:00
|
|
|
"compare_fields_derive",
|
2019-12-09 11:39:44 +00:00
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "compare_fields_derive"
|
Initial work towards v0.2.0 (#924)
* Remove ping protocol
* Initial renaming of network services
* Correct rebasing relative to latest master
* Start updating types
* Adds HashMapDelay struct to utils
* Initial network restructure
* Network restructure. Adds new types for v0.2.0
* Removes build artefacts
* Shift validation to beacon chain
* Temporarily remove gossip validation
This is to be updated to match current optimisation efforts.
* Adds AggregateAndProof
* Begin rebuilding pubsub encoding/decoding
* Signature hacking
* Shift gossipsup decoding into eth2_libp2p
* Existing EF tests passing with fake_crypto
* Shifts block encoding/decoding into RPC
* Delete outdated API spec
* All release tests passing bar genesis state parsing
* Update and test YamlConfig
* Update to spec v0.10 compatible BLS
* Updates to BLS EF tests
* Add EF test for AggregateVerify
And delete unused hash2curve tests for uncompressed points
* Update EF tests to v0.10.1
* Use optional block root correctly in block proc
* Use genesis fork in deposit domain. All tests pass
* Fast aggregate verify test
* Update REST API docs
* Fix unused import
* Bump spec tags to v0.10.1
* Add `seconds_per_eth1_block` to chainspec
* Update to timestamp based eth1 voting scheme
* Return None from `get_votes_to_consider` if block cache is empty
* Handle overflows in `is_candidate_block`
* Revert to failing tests
* Fix eth1 data sets test
* Choose default vote according to spec
* Fix collect_valid_votes tests
* Fix `get_votes_to_consider` to choose all eligible blocks
* Uncomment winning_vote tests
* Add comments; remove unused code
* Reduce seconds_per_eth1_block for simulation
* Addressed review comments
* Add test for default vote case
* Fix logs
* Remove unused functions
* Meter default eth1 votes
* Fix comments
* Progress on attestation service
* Address review comments; remove unused dependency
* Initial work on removing libp2p lock
* Add LRU caches to store (rollup)
* Update attestation validation for DB changes (WIP)
* Initial version of should_forward_block
* Scaffold
* Progress on attestation validation
Also, consolidate prod+testing slot clocks so that they share much
of the same implementation and can both handle sub-slot time changes.
* Removes lock from libp2p service
* Completed network lock removal
* Finish(?) attestation processing
* Correct network termination future
* Add slot check to block check
* Correct fmt issues
* Remove Drop implementation for network service
* Add first attempt at attestation proc. re-write
* Add version 2 of attestation processing
* Minor fixes
* Add validator pubkey cache
* Make get_indexed_attestation take a committee
* Link signature processing into new attn verification
* First working version
* Ensure pubkey cache is updated
* Add more metrics, slight optimizations
* Clone committee cache during attestation processing
* Update shuffling cache during block processing
* Remove old commented-out code
* Fix shuffling cache insert bug
* Used indexed attestation in fork choice
* Restructure attn processing, add metrics
* Add more detailed metrics
* Tidy, fix failing tests
* Fix failing tests, tidy
* Address reviewers suggestions
* Disable/delete two outdated tests
* Modification of validator for subscriptions
* Add slot signing to validator client
* Further progress on validation subscription
* Adds necessary validator subscription functionality
* Add new Pubkeys struct to signature_sets
* Refactor with functional approach
* Update beacon chain
* Clean up validator <-> beacon node http types
* Add aggregator status to ValidatorDuty
* Impl Clone for manual slot clock
* Fix minor errors
* Further progress validator client subscription
* Initial subscription and aggregation handling
* Remove decompressed member from pubkey bytes
* Progress to modifying val client for attestation aggregation
* First draft of validator client upgrade for aggregate attestations
* Add hashmap for indices lookup
* Add state cache, remove store cache
* Only build the head committee cache
* Removes lock on a network channel
* Partially implement beacon node subscription http api
* Correct compilation issues
* Change `get_attesting_indices` to use Vec
* Fix failing test
* Partial implementation of timer
* Adds timer, removes exit_future, http api to op pool
* Partial multiple aggregate attestation handling
* Permits bulk messages accross gossipsub network channel
* Correct compile issues
* Improve gosispsub messaging and correct rest api helpers
* Added global gossipsub subscriptions
* Update validator subscriptions data structs
* Tidy
* Re-structure validator subscriptions
* Initial handling of subscriptions
* Re-structure network service
* Add pubkey cache persistence file
* Add more comments
* Integrate persistence file into builder
* Add pubkey cache tests
* Add HashSetDelay and introduce into attestation service
* Handles validator subscriptions
* Add data_dir to beacon chain builder
* Remove Option in pubkey cache persistence file
* Ensure consistency between datadir/data_dir
* Fix failing network test
* Peer subnet discovery gets queued for future subscriptions
* Reorganise attestation service functions
* Initial wiring of attestation service
* First draft of attestation service timing logic
* Correct minor typos
* Tidy
* Fix todos
* Improve tests
* Add PeerInfo to connected peers mapping
* Fix compile error
* Fix compile error from merge
* Split up block processing metrics
* Tidy
* Refactor get_pubkey_from_state
* Remove commented-out code
* Rename state_cache -> checkpoint_cache
* Rename Checkpoint -> Snapshot
* Tidy, add comments
* Tidy up find_head function
* Change some checkpoint -> snapshot
* Add tests
* Expose max_len
* Remove dead code
* Tidy
* Fix bug
* Add sync-speed metric
* Add first attempt at VerifiableBlock
* Start integrating into beacon chain
* Integrate VerifiableBlock
* Rename VerifableBlock -> PartialBlockVerification
* Add start of typed methods
* Add progress
* Add further progress
* Rename structs
* Add full block verification to block_processing.rs
* Further beacon chain integration
* Update checks for gossip
* Add todo
* Start adding segement verification
* Add passing chain segement test
* Initial integration with batch sync
* Minor changes
* Tidy, add more error checking
* Start adding chain_segment tests
* Finish invalid signature tests
* Include single and gossip verified blocks in tests
* Add gossip verification tests
* Start adding docs
* Finish adding comments to block_processing.rs
* Rename block_processing.rs -> block_verification
* Start removing old block processing code
* Fixes beacon_chain compilation
* Fix project-wide compile errors
* Remove old code
* Correct code to pass all tests
* Fix bug with beacon proposer index
* Fix shim for BlockProcessingError
* Only process one epoch at a time
* Fix loop in chain segment processing
* Correct tests from master merge
* Add caching for state.eth1_data_votes
* Add BeaconChain::validator_pubkey
* Revert "Add caching for state.eth1_data_votes"
This reverts commit cd73dcd6434fb8d8e6bf30c5356355598ea7b78e.
Co-authored-by: Grant Wuerker <gwuerker@gmail.com>
Co-authored-by: Michael Sproul <michael@sigmaprime.io>
Co-authored-by: Michael Sproul <micsproul@gmail.com>
Co-authored-by: pawan <pawandhananjay@gmail.com>
Co-authored-by: Paul Hauner <paul@paulhauner.com>
2020-03-17 06:24:44 +00:00
|
|
|
version = "0.2.0"
|
2019-12-09 11:39:44 +00:00
|
|
|
dependencies = [
|
2020-05-17 11:16:48 +00:00
|
|
|
"quote",
|
|
|
|
"syn",
|
2019-12-09 11:39:44 +00:00
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "console_error_panic_hook"
|
2021-10-14 02:58:11 +00:00
|
|
|
version = "0.1.7"
|
2019-12-09 11:39:44 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2021-10-14 02:58:11 +00:00
|
|
|
checksum = "a06aeb73f470f66dcdbf7223caeebb85984942f22f1adb2a088cf9668146bbbc"
|
2019-12-09 11:39:44 +00:00
|
|
|
dependencies = [
|
2021-11-18 05:08:42 +00:00
|
|
|
"cfg-if",
|
2020-05-10 09:56:31 +00:00
|
|
|
"wasm-bindgen",
|
2019-12-09 11:39:44 +00:00
|
|
|
]
|
|
|
|
|
2020-10-23 04:16:33 +00:00
|
|
|
[[package]]
|
|
|
|
name = "const-oid"
|
2021-07-05 00:54:17 +00:00
|
|
|
version = "0.5.2"
|
2020-10-23 04:16:33 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2021-07-05 00:54:17 +00:00
|
|
|
checksum = "279bc8fc53f788a75c7804af68237d1fce02cde1e275a886a4b320604dc2aeda"
|
2020-10-23 04:16:33 +00:00
|
|
|
|
Separate execution payloads in the DB (#3157)
## Proposed Changes
Reduce post-merge disk usage by not storing finalized execution payloads in Lighthouse's database.
:warning: **This is achieved in a backwards-incompatible way for networks that have already merged** :warning:. Kiln users and shadow fork enjoyers will be unable to downgrade after running the code from this PR. The upgrade migration may take several minutes to run, and can't be aborted after it begins.
The main changes are:
- New column in the database called `ExecPayload`, keyed by beacon block root.
- The `BeaconBlock` column now stores blinded blocks only.
- Lots of places that previously used full blocks now use blinded blocks, e.g. analytics APIs, block replay in the DB, etc.
- On finalization:
- `prune_abanonded_forks` deletes non-canonical payloads whilst deleting non-canonical blocks.
- `migrate_db` deletes finalized canonical payloads whilst deleting finalized states.
- Conversions between blinded and full blocks are implemented in a compositional way, duplicating some work from Sean's PR #3134.
- The execution layer has a new `get_payload_by_block_hash` method that reconstructs a payload using the EE's `eth_getBlockByHash` call.
- I've tested manually that it works on Kiln, using Geth and Nethermind.
- This isn't necessarily the most efficient method, and new engine APIs are being discussed to improve this: https://github.com/ethereum/execution-apis/pull/146.
- We're depending on the `ethers` master branch, due to lots of recent changes. We're also using a workaround for https://github.com/gakonst/ethers-rs/issues/1134.
- Payload reconstruction is used in the HTTP API via `BeaconChain::get_block`, which is now `async`. Due to the `async` fn, the `blocking_json` wrapper has been removed.
- Payload reconstruction is used in network RPC to serve blocks-by-{root,range} responses. Here the `async` adjustment is messier, although I think I've managed to come up with a reasonable compromise: the handlers take the `SendOnDrop` by value so that they can drop it on _task completion_ (after the `fn` returns). Still, this is introducing disk reads onto core executor threads, which may have a negative performance impact (thoughts appreciated).
## Additional Info
- [x] For performance it would be great to remove the cloning of full blocks when converting them to blinded blocks to write to disk. I'm going to experiment with a `put_block` API that takes the block by value, breaks it into a blinded block and a payload, stores the blinded block, and then re-assembles the full block for the caller.
- [x] We should measure the latency of blocks-by-root and blocks-by-range responses.
- [x] We should add integration tests that stress the payload reconstruction (basic tests done, issue for more extensive tests: https://github.com/sigp/lighthouse/issues/3159)
- [x] We should (manually) test the schema v9 migration from several prior versions, particularly as blocks have changed on disk and some migrations rely on being able to load blocks.
Co-authored-by: Paul Hauner <paul@paulhauner.com>
2022-05-12 00:42:17 +00:00
|
|
|
[[package]]
|
|
|
|
name = "const-oid"
|
|
|
|
version = "0.7.1"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "e4c78c047431fee22c1a7bb92e00ad095a02a983affe4d8a72e2a2c62c1b94f3"
|
|
|
|
|
2021-05-04 00:44:05 +00:00
|
|
|
[[package]]
|
|
|
|
name = "convert_case"
|
|
|
|
version = "0.4.0"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "6245d59a3e82a7fc217c5828a6692dbc6dfb63a0c8c90495621f7b9d79704a0e"
|
|
|
|
|
2019-12-09 11:39:44 +00:00
|
|
|
[[package]]
|
|
|
|
name = "core-foundation"
|
2022-02-10 04:12:03 +00:00
|
|
|
version = "0.9.3"
|
2019-12-09 11:39:44 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2022-02-10 04:12:03 +00:00
|
|
|
checksum = "194a7a9e6de53fa55116934067c844d9d749312f75c6f6d0980e8c252f8c2146"
|
2019-12-09 11:39:44 +00:00
|
|
|
dependencies = [
|
2020-05-10 09:56:31 +00:00
|
|
|
"core-foundation-sys",
|
|
|
|
"libc",
|
2019-12-09 11:39:44 +00:00
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "core-foundation-sys"
|
2021-10-14 22:09:38 +00:00
|
|
|
version = "0.8.3"
|
2019-12-09 11:39:44 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2021-10-14 22:09:38 +00:00
|
|
|
checksum = "5827cebf4670468b8772dd191856768aedcb1b0278a04f989f7766351917b9dc"
|
2019-12-09 11:39:44 +00:00
|
|
|
|
2022-02-10 04:12:03 +00:00
|
|
|
[[package]]
|
|
|
|
name = "core2"
|
|
|
|
version = "0.4.0"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "b49ba7ef1ad6107f8824dbe97de947cbaac53c44e7f9756a1fba0d37c1eec505"
|
|
|
|
dependencies = [
|
|
|
|
"memchr",
|
|
|
|
]
|
|
|
|
|
2021-09-16 04:45:05 +00:00
|
|
|
[[package]]
|
|
|
|
name = "cpufeatures"
|
2022-03-31 07:52:23 +00:00
|
|
|
version = "0.2.2"
|
2021-09-16 04:45:05 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2022-03-31 07:52:23 +00:00
|
|
|
checksum = "59a6001667ab124aebae2a495118e11d30984c3a653e99d86d58971708cf5e4b"
|
2021-09-16 04:45:05 +00:00
|
|
|
dependencies = [
|
|
|
|
"libc",
|
|
|
|
]
|
|
|
|
|
2019-12-09 11:39:44 +00:00
|
|
|
[[package]]
|
|
|
|
name = "crc32fast"
|
2022-02-10 04:12:03 +00:00
|
|
|
version = "1.3.2"
|
2019-12-09 11:39:44 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2022-02-10 04:12:03 +00:00
|
|
|
checksum = "b540bd8bc810d3885c6ea91e2018302f68baba2129ab3e88f32389ee9370880d"
|
2019-12-09 11:39:44 +00:00
|
|
|
dependencies = [
|
2021-11-18 05:08:42 +00:00
|
|
|
"cfg-if",
|
2019-12-09 11:39:44 +00:00
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "criterion"
|
2021-08-17 01:00:24 +00:00
|
|
|
version = "0.3.5"
|
2019-12-09 11:39:44 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2021-08-17 01:00:24 +00:00
|
|
|
checksum = "1604dafd25fba2fe2d5895a9da139f8dc9b319a5fe5354ca137cbbce4e178d10"
|
2019-12-09 11:39:44 +00:00
|
|
|
dependencies = [
|
2020-05-10 09:56:31 +00:00
|
|
|
"atty",
|
|
|
|
"cast",
|
|
|
|
"clap",
|
|
|
|
"criterion-plot",
|
|
|
|
"csv",
|
2021-08-17 01:00:24 +00:00
|
|
|
"itertools",
|
2020-05-10 09:56:31 +00:00
|
|
|
"lazy_static",
|
|
|
|
"num-traits",
|
|
|
|
"oorandom",
|
|
|
|
"plotters",
|
|
|
|
"rayon",
|
|
|
|
"regex",
|
|
|
|
"serde",
|
2020-07-06 01:55:56 +00:00
|
|
|
"serde_cbor",
|
2020-05-10 09:56:31 +00:00
|
|
|
"serde_derive",
|
|
|
|
"serde_json",
|
|
|
|
"tinytemplate",
|
|
|
|
"walkdir",
|
2019-12-09 11:39:44 +00:00
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "criterion-plot"
|
2021-08-17 01:00:24 +00:00
|
|
|
version = "0.4.4"
|
2019-12-09 11:39:44 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2021-08-17 01:00:24 +00:00
|
|
|
checksum = "d00996de9f2f7559f7f4dc286073197f83e92256a59ed395f9aac01fe717da57"
|
2019-12-09 11:39:44 +00:00
|
|
|
dependencies = [
|
2020-05-10 09:56:31 +00:00
|
|
|
"cast",
|
2021-08-17 01:00:24 +00:00
|
|
|
"itertools",
|
2019-12-09 11:39:44 +00:00
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
Initial work towards v0.2.0 (#924)
* Remove ping protocol
* Initial renaming of network services
* Correct rebasing relative to latest master
* Start updating types
* Adds HashMapDelay struct to utils
* Initial network restructure
* Network restructure. Adds new types for v0.2.0
* Removes build artefacts
* Shift validation to beacon chain
* Temporarily remove gossip validation
This is to be updated to match current optimisation efforts.
* Adds AggregateAndProof
* Begin rebuilding pubsub encoding/decoding
* Signature hacking
* Shift gossipsup decoding into eth2_libp2p
* Existing EF tests passing with fake_crypto
* Shifts block encoding/decoding into RPC
* Delete outdated API spec
* All release tests passing bar genesis state parsing
* Update and test YamlConfig
* Update to spec v0.10 compatible BLS
* Updates to BLS EF tests
* Add EF test for AggregateVerify
And delete unused hash2curve tests for uncompressed points
* Update EF tests to v0.10.1
* Use optional block root correctly in block proc
* Use genesis fork in deposit domain. All tests pass
* Fast aggregate verify test
* Update REST API docs
* Fix unused import
* Bump spec tags to v0.10.1
* Add `seconds_per_eth1_block` to chainspec
* Update to timestamp based eth1 voting scheme
* Return None from `get_votes_to_consider` if block cache is empty
* Handle overflows in `is_candidate_block`
* Revert to failing tests
* Fix eth1 data sets test
* Choose default vote according to spec
* Fix collect_valid_votes tests
* Fix `get_votes_to_consider` to choose all eligible blocks
* Uncomment winning_vote tests
* Add comments; remove unused code
* Reduce seconds_per_eth1_block for simulation
* Addressed review comments
* Add test for default vote case
* Fix logs
* Remove unused functions
* Meter default eth1 votes
* Fix comments
* Progress on attestation service
* Address review comments; remove unused dependency
* Initial work on removing libp2p lock
* Add LRU caches to store (rollup)
* Update attestation validation for DB changes (WIP)
* Initial version of should_forward_block
* Scaffold
* Progress on attestation validation
Also, consolidate prod+testing slot clocks so that they share much
of the same implementation and can both handle sub-slot time changes.
* Removes lock from libp2p service
* Completed network lock removal
* Finish(?) attestation processing
* Correct network termination future
* Add slot check to block check
* Correct fmt issues
* Remove Drop implementation for network service
* Add first attempt at attestation proc. re-write
* Add version 2 of attestation processing
* Minor fixes
* Add validator pubkey cache
* Make get_indexed_attestation take a committee
* Link signature processing into new attn verification
* First working version
* Ensure pubkey cache is updated
* Add more metrics, slight optimizations
* Clone committee cache during attestation processing
* Update shuffling cache during block processing
* Remove old commented-out code
* Fix shuffling cache insert bug
* Used indexed attestation in fork choice
* Restructure attn processing, add metrics
* Add more detailed metrics
* Tidy, fix failing tests
* Fix failing tests, tidy
* Address reviewers suggestions
* Disable/delete two outdated tests
* Modification of validator for subscriptions
* Add slot signing to validator client
* Further progress on validation subscription
* Adds necessary validator subscription functionality
* Add new Pubkeys struct to signature_sets
* Refactor with functional approach
* Update beacon chain
* Clean up validator <-> beacon node http types
* Add aggregator status to ValidatorDuty
* Impl Clone for manual slot clock
* Fix minor errors
* Further progress validator client subscription
* Initial subscription and aggregation handling
* Remove decompressed member from pubkey bytes
* Progress to modifying val client for attestation aggregation
* First draft of validator client upgrade for aggregate attestations
* Add hashmap for indices lookup
* Add state cache, remove store cache
* Only build the head committee cache
* Removes lock on a network channel
* Partially implement beacon node subscription http api
* Correct compilation issues
* Change `get_attesting_indices` to use Vec
* Fix failing test
* Partial implementation of timer
* Adds timer, removes exit_future, http api to op pool
* Partial multiple aggregate attestation handling
* Permits bulk messages accross gossipsub network channel
* Correct compile issues
* Improve gosispsub messaging and correct rest api helpers
* Added global gossipsub subscriptions
* Update validator subscriptions data structs
* Tidy
* Re-structure validator subscriptions
* Initial handling of subscriptions
* Re-structure network service
* Add pubkey cache persistence file
* Add more comments
* Integrate persistence file into builder
* Add pubkey cache tests
* Add HashSetDelay and introduce into attestation service
* Handles validator subscriptions
* Add data_dir to beacon chain builder
* Remove Option in pubkey cache persistence file
* Ensure consistency between datadir/data_dir
* Fix failing network test
* Peer subnet discovery gets queued for future subscriptions
* Reorganise attestation service functions
* Initial wiring of attestation service
* First draft of attestation service timing logic
* Correct minor typos
* Tidy
* Fix todos
* Improve tests
* Add PeerInfo to connected peers mapping
* Fix compile error
* Fix compile error from merge
* Split up block processing metrics
* Tidy
* Refactor get_pubkey_from_state
* Remove commented-out code
* Rename state_cache -> checkpoint_cache
* Rename Checkpoint -> Snapshot
* Tidy, add comments
* Tidy up find_head function
* Change some checkpoint -> snapshot
* Add tests
* Expose max_len
* Remove dead code
* Tidy
* Fix bug
* Add sync-speed metric
* Add first attempt at VerifiableBlock
* Start integrating into beacon chain
* Integrate VerifiableBlock
* Rename VerifableBlock -> PartialBlockVerification
* Add start of typed methods
* Add progress
* Add further progress
* Rename structs
* Add full block verification to block_processing.rs
* Further beacon chain integration
* Update checks for gossip
* Add todo
* Start adding segement verification
* Add passing chain segement test
* Initial integration with batch sync
* Minor changes
* Tidy, add more error checking
* Start adding chain_segment tests
* Finish invalid signature tests
* Include single and gossip verified blocks in tests
* Add gossip verification tests
* Start adding docs
* Finish adding comments to block_processing.rs
* Rename block_processing.rs -> block_verification
* Start removing old block processing code
* Fixes beacon_chain compilation
* Fix project-wide compile errors
* Remove old code
* Correct code to pass all tests
* Fix bug with beacon proposer index
* Fix shim for BlockProcessingError
* Only process one epoch at a time
* Fix loop in chain segment processing
* Correct tests from master merge
* Add caching for state.eth1_data_votes
* Add BeaconChain::validator_pubkey
* Revert "Add caching for state.eth1_data_votes"
This reverts commit cd73dcd6434fb8d8e6bf30c5356355598ea7b78e.
Co-authored-by: Grant Wuerker <gwuerker@gmail.com>
Co-authored-by: Michael Sproul <michael@sigmaprime.io>
Co-authored-by: Michael Sproul <micsproul@gmail.com>
Co-authored-by: pawan <pawandhananjay@gmail.com>
Co-authored-by: Paul Hauner <paul@paulhauner.com>
2020-03-17 06:24:44 +00:00
|
|
|
name = "crossbeam-channel"
|
2022-06-18 23:59:43 +00:00
|
|
|
version = "0.5.5"
|
2019-12-09 11:39:44 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2022-06-18 23:59:43 +00:00
|
|
|
checksum = "4c02a4d71819009c192cf4872265391563fd6a84c81ff2c0f2a7026ca4c1d85c"
|
2019-12-09 11:39:44 +00:00
|
|
|
dependencies = [
|
2021-11-18 05:08:42 +00:00
|
|
|
"cfg-if",
|
2021-02-10 23:29:49 +00:00
|
|
|
"crossbeam-utils",
|
2019-12-09 11:39:44 +00:00
|
|
|
]
|
|
|
|
|
2020-10-23 04:16:33 +00:00
|
|
|
[[package]]
|
|
|
|
name = "crossbeam-deque"
|
2021-08-17 01:00:24 +00:00
|
|
|
version = "0.8.1"
|
2020-10-23 04:16:33 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2021-08-17 01:00:24 +00:00
|
|
|
checksum = "6455c0ca19f0d2fbf751b908d5c55c1f5cbc65e03c4225427254b46890bdde1e"
|
2020-10-23 04:16:33 +00:00
|
|
|
dependencies = [
|
2021-11-18 05:08:42 +00:00
|
|
|
"cfg-if",
|
2020-12-09 01:34:58 +00:00
|
|
|
"crossbeam-epoch",
|
2021-02-10 23:29:49 +00:00
|
|
|
"crossbeam-utils",
|
2020-10-23 04:16:33 +00:00
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "crossbeam-epoch"
|
2022-06-18 23:59:43 +00:00
|
|
|
version = "0.9.9"
|
2020-10-23 04:16:33 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2022-06-18 23:59:43 +00:00
|
|
|
checksum = "07db9d94cbd326813772c968ccd25999e5f8ae22f4f8d1b11effa37ef6ce281d"
|
2020-10-23 04:16:33 +00:00
|
|
|
dependencies = [
|
2022-03-31 07:52:23 +00:00
|
|
|
"autocfg 1.1.0",
|
2021-11-18 05:08:42 +00:00
|
|
|
"cfg-if",
|
2021-02-10 23:29:49 +00:00
|
|
|
"crossbeam-utils",
|
2020-12-09 01:34:58 +00:00
|
|
|
"memoffset",
|
2022-06-18 23:59:43 +00:00
|
|
|
"once_cell",
|
2020-10-23 04:16:33 +00:00
|
|
|
"scopeguard",
|
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "crossbeam-utils"
|
2022-07-05 23:36:42 +00:00
|
|
|
version = "0.8.10"
|
2020-10-23 04:16:33 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2022-07-05 23:36:42 +00:00
|
|
|
checksum = "7d82ee10ce34d7bc12c2122495e7593a9c41347ecdd64185af4ecf72cb1a7f83"
|
2020-10-23 04:16:33 +00:00
|
|
|
dependencies = [
|
2021-11-18 05:08:42 +00:00
|
|
|
"cfg-if",
|
2022-06-18 23:59:43 +00:00
|
|
|
"once_cell",
|
2019-12-09 11:39:44 +00:00
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "crunchy"
|
|
|
|
version = "0.2.2"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2020-05-10 09:56:31 +00:00
|
|
|
checksum = "7a81dae078cea95a014a339291cec439d2f232ebe854a9d672b796c6afafa9b7"
|
2019-12-09 11:39:44 +00:00
|
|
|
|
Separate execution payloads in the DB (#3157)
## Proposed Changes
Reduce post-merge disk usage by not storing finalized execution payloads in Lighthouse's database.
:warning: **This is achieved in a backwards-incompatible way for networks that have already merged** :warning:. Kiln users and shadow fork enjoyers will be unable to downgrade after running the code from this PR. The upgrade migration may take several minutes to run, and can't be aborted after it begins.
The main changes are:
- New column in the database called `ExecPayload`, keyed by beacon block root.
- The `BeaconBlock` column now stores blinded blocks only.
- Lots of places that previously used full blocks now use blinded blocks, e.g. analytics APIs, block replay in the DB, etc.
- On finalization:
- `prune_abanonded_forks` deletes non-canonical payloads whilst deleting non-canonical blocks.
- `migrate_db` deletes finalized canonical payloads whilst deleting finalized states.
- Conversions between blinded and full blocks are implemented in a compositional way, duplicating some work from Sean's PR #3134.
- The execution layer has a new `get_payload_by_block_hash` method that reconstructs a payload using the EE's `eth_getBlockByHash` call.
- I've tested manually that it works on Kiln, using Geth and Nethermind.
- This isn't necessarily the most efficient method, and new engine APIs are being discussed to improve this: https://github.com/ethereum/execution-apis/pull/146.
- We're depending on the `ethers` master branch, due to lots of recent changes. We're also using a workaround for https://github.com/gakonst/ethers-rs/issues/1134.
- Payload reconstruction is used in the HTTP API via `BeaconChain::get_block`, which is now `async`. Due to the `async` fn, the `blocking_json` wrapper has been removed.
- Payload reconstruction is used in network RPC to serve blocks-by-{root,range} responses. Here the `async` adjustment is messier, although I think I've managed to come up with a reasonable compromise: the handlers take the `SendOnDrop` by value so that they can drop it on _task completion_ (after the `fn` returns). Still, this is introducing disk reads onto core executor threads, which may have a negative performance impact (thoughts appreciated).
## Additional Info
- [x] For performance it would be great to remove the cloning of full blocks when converting them to blinded blocks to write to disk. I'm going to experiment with a `put_block` API that takes the block by value, breaks it into a blinded block and a payload, stores the blinded block, and then re-assembles the full block for the caller.
- [x] We should measure the latency of blocks-by-root and blocks-by-range responses.
- [x] We should add integration tests that stress the payload reconstruction (basic tests done, issue for more extensive tests: https://github.com/sigp/lighthouse/issues/3159)
- [x] We should (manually) test the schema v9 migration from several prior versions, particularly as blocks have changed on disk and some migrations rely on being able to load blocks.
Co-authored-by: Paul Hauner <paul@paulhauner.com>
2022-05-12 00:42:17 +00:00
|
|
|
[[package]]
|
|
|
|
name = "crypto-bigint"
|
|
|
|
version = "0.3.2"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "03c6a1d5fa1de37e071642dfa44ec552ca5b299adb128fab16138e24b548fd21"
|
|
|
|
dependencies = [
|
|
|
|
"generic-array",
|
|
|
|
"rand_core 0.6.3",
|
|
|
|
"subtle",
|
|
|
|
"zeroize",
|
|
|
|
]
|
|
|
|
|
2021-12-22 06:17:14 +00:00
|
|
|
[[package]]
|
|
|
|
name = "crypto-common"
|
2022-07-05 23:36:42 +00:00
|
|
|
version = "0.1.4"
|
2021-12-22 06:17:14 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2022-07-05 23:36:42 +00:00
|
|
|
checksum = "5999502d32b9c48d492abe66392408144895020ec4709e549e840799f3bb74c0"
|
2021-12-22 06:17:14 +00:00
|
|
|
dependencies = [
|
|
|
|
"generic-array",
|
2022-03-02 05:09:52 +00:00
|
|
|
"typenum",
|
2021-12-22 06:17:14 +00:00
|
|
|
]
|
|
|
|
|
2020-07-01 08:01:03 +00:00
|
|
|
[[package]]
|
|
|
|
name = "crypto-mac"
|
|
|
|
version = "0.8.0"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "b584a330336237c1eecd3e94266efb216c56ed91225d634cb2991c5f3fd1aeab"
|
|
|
|
dependencies = [
|
2021-07-13 00:48:33 +00:00
|
|
|
"generic-array",
|
|
|
|
"subtle",
|
2020-07-01 08:01:03 +00:00
|
|
|
]
|
|
|
|
|
2020-11-28 05:30:57 +00:00
|
|
|
[[package]]
|
|
|
|
name = "crypto-mac"
|
2021-08-17 01:00:24 +00:00
|
|
|
version = "0.11.1"
|
2021-07-05 00:54:17 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2021-08-17 01:00:24 +00:00
|
|
|
checksum = "b1d1a86f49236c215f271d40892d5fc950490551400b02ef360692c29815c714"
|
2021-07-05 00:54:17 +00:00
|
|
|
dependencies = [
|
2021-07-13 00:48:33 +00:00
|
|
|
"generic-array",
|
|
|
|
"subtle",
|
2021-07-05 00:54:17 +00:00
|
|
|
]
|
|
|
|
|
2019-12-09 11:39:44 +00:00
|
|
|
[[package]]
|
|
|
|
name = "csv"
|
2021-03-08 06:27:49 +00:00
|
|
|
version = "1.1.6"
|
2019-12-09 11:39:44 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2021-03-08 06:27:49 +00:00
|
|
|
checksum = "22813a6dc45b335f9bade10bf7271dc477e81113e89eb251a0bc2a8a81c536e1"
|
2019-12-09 11:39:44 +00:00
|
|
|
dependencies = [
|
2020-05-10 09:56:31 +00:00
|
|
|
"bstr",
|
|
|
|
"csv-core",
|
2021-12-22 06:17:14 +00:00
|
|
|
"itoa 0.4.8",
|
2020-05-10 09:56:31 +00:00
|
|
|
"ryu",
|
|
|
|
"serde",
|
2019-12-09 11:39:44 +00:00
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "csv-core"
|
Initial work towards v0.2.0 (#924)
* Remove ping protocol
* Initial renaming of network services
* Correct rebasing relative to latest master
* Start updating types
* Adds HashMapDelay struct to utils
* Initial network restructure
* Network restructure. Adds new types for v0.2.0
* Removes build artefacts
* Shift validation to beacon chain
* Temporarily remove gossip validation
This is to be updated to match current optimisation efforts.
* Adds AggregateAndProof
* Begin rebuilding pubsub encoding/decoding
* Signature hacking
* Shift gossipsup decoding into eth2_libp2p
* Existing EF tests passing with fake_crypto
* Shifts block encoding/decoding into RPC
* Delete outdated API spec
* All release tests passing bar genesis state parsing
* Update and test YamlConfig
* Update to spec v0.10 compatible BLS
* Updates to BLS EF tests
* Add EF test for AggregateVerify
And delete unused hash2curve tests for uncompressed points
* Update EF tests to v0.10.1
* Use optional block root correctly in block proc
* Use genesis fork in deposit domain. All tests pass
* Fast aggregate verify test
* Update REST API docs
* Fix unused import
* Bump spec tags to v0.10.1
* Add `seconds_per_eth1_block` to chainspec
* Update to timestamp based eth1 voting scheme
* Return None from `get_votes_to_consider` if block cache is empty
* Handle overflows in `is_candidate_block`
* Revert to failing tests
* Fix eth1 data sets test
* Choose default vote according to spec
* Fix collect_valid_votes tests
* Fix `get_votes_to_consider` to choose all eligible blocks
* Uncomment winning_vote tests
* Add comments; remove unused code
* Reduce seconds_per_eth1_block for simulation
* Addressed review comments
* Add test for default vote case
* Fix logs
* Remove unused functions
* Meter default eth1 votes
* Fix comments
* Progress on attestation service
* Address review comments; remove unused dependency
* Initial work on removing libp2p lock
* Add LRU caches to store (rollup)
* Update attestation validation for DB changes (WIP)
* Initial version of should_forward_block
* Scaffold
* Progress on attestation validation
Also, consolidate prod+testing slot clocks so that they share much
of the same implementation and can both handle sub-slot time changes.
* Removes lock from libp2p service
* Completed network lock removal
* Finish(?) attestation processing
* Correct network termination future
* Add slot check to block check
* Correct fmt issues
* Remove Drop implementation for network service
* Add first attempt at attestation proc. re-write
* Add version 2 of attestation processing
* Minor fixes
* Add validator pubkey cache
* Make get_indexed_attestation take a committee
* Link signature processing into new attn verification
* First working version
* Ensure pubkey cache is updated
* Add more metrics, slight optimizations
* Clone committee cache during attestation processing
* Update shuffling cache during block processing
* Remove old commented-out code
* Fix shuffling cache insert bug
* Used indexed attestation in fork choice
* Restructure attn processing, add metrics
* Add more detailed metrics
* Tidy, fix failing tests
* Fix failing tests, tidy
* Address reviewers suggestions
* Disable/delete two outdated tests
* Modification of validator for subscriptions
* Add slot signing to validator client
* Further progress on validation subscription
* Adds necessary validator subscription functionality
* Add new Pubkeys struct to signature_sets
* Refactor with functional approach
* Update beacon chain
* Clean up validator <-> beacon node http types
* Add aggregator status to ValidatorDuty
* Impl Clone for manual slot clock
* Fix minor errors
* Further progress validator client subscription
* Initial subscription and aggregation handling
* Remove decompressed member from pubkey bytes
* Progress to modifying val client for attestation aggregation
* First draft of validator client upgrade for aggregate attestations
* Add hashmap for indices lookup
* Add state cache, remove store cache
* Only build the head committee cache
* Removes lock on a network channel
* Partially implement beacon node subscription http api
* Correct compilation issues
* Change `get_attesting_indices` to use Vec
* Fix failing test
* Partial implementation of timer
* Adds timer, removes exit_future, http api to op pool
* Partial multiple aggregate attestation handling
* Permits bulk messages accross gossipsub network channel
* Correct compile issues
* Improve gosispsub messaging and correct rest api helpers
* Added global gossipsub subscriptions
* Update validator subscriptions data structs
* Tidy
* Re-structure validator subscriptions
* Initial handling of subscriptions
* Re-structure network service
* Add pubkey cache persistence file
* Add more comments
* Integrate persistence file into builder
* Add pubkey cache tests
* Add HashSetDelay and introduce into attestation service
* Handles validator subscriptions
* Add data_dir to beacon chain builder
* Remove Option in pubkey cache persistence file
* Ensure consistency between datadir/data_dir
* Fix failing network test
* Peer subnet discovery gets queued for future subscriptions
* Reorganise attestation service functions
* Initial wiring of attestation service
* First draft of attestation service timing logic
* Correct minor typos
* Tidy
* Fix todos
* Improve tests
* Add PeerInfo to connected peers mapping
* Fix compile error
* Fix compile error from merge
* Split up block processing metrics
* Tidy
* Refactor get_pubkey_from_state
* Remove commented-out code
* Rename state_cache -> checkpoint_cache
* Rename Checkpoint -> Snapshot
* Tidy, add comments
* Tidy up find_head function
* Change some checkpoint -> snapshot
* Add tests
* Expose max_len
* Remove dead code
* Tidy
* Fix bug
* Add sync-speed metric
* Add first attempt at VerifiableBlock
* Start integrating into beacon chain
* Integrate VerifiableBlock
* Rename VerifableBlock -> PartialBlockVerification
* Add start of typed methods
* Add progress
* Add further progress
* Rename structs
* Add full block verification to block_processing.rs
* Further beacon chain integration
* Update checks for gossip
* Add todo
* Start adding segement verification
* Add passing chain segement test
* Initial integration with batch sync
* Minor changes
* Tidy, add more error checking
* Start adding chain_segment tests
* Finish invalid signature tests
* Include single and gossip verified blocks in tests
* Add gossip verification tests
* Start adding docs
* Finish adding comments to block_processing.rs
* Rename block_processing.rs -> block_verification
* Start removing old block processing code
* Fixes beacon_chain compilation
* Fix project-wide compile errors
* Remove old code
* Correct code to pass all tests
* Fix bug with beacon proposer index
* Fix shim for BlockProcessingError
* Only process one epoch at a time
* Fix loop in chain segment processing
* Correct tests from master merge
* Add caching for state.eth1_data_votes
* Add BeaconChain::validator_pubkey
* Revert "Add caching for state.eth1_data_votes"
This reverts commit cd73dcd6434fb8d8e6bf30c5356355598ea7b78e.
Co-authored-by: Grant Wuerker <gwuerker@gmail.com>
Co-authored-by: Michael Sproul <michael@sigmaprime.io>
Co-authored-by: Michael Sproul <micsproul@gmail.com>
Co-authored-by: pawan <pawandhananjay@gmail.com>
Co-authored-by: Paul Hauner <paul@paulhauner.com>
2020-03-17 06:24:44 +00:00
|
|
|
version = "0.1.10"
|
2019-12-09 11:39:44 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2020-05-10 09:56:31 +00:00
|
|
|
checksum = "2b2466559f260f48ad25fe6317b3c8dac77b5bdb5763ac7d9d6103530663bc90"
|
2019-12-09 11:39:44 +00:00
|
|
|
dependencies = [
|
2020-05-10 09:56:31 +00:00
|
|
|
"memchr",
|
2019-12-09 11:39:44 +00:00
|
|
|
]
|
|
|
|
|
2021-08-17 01:00:24 +00:00
|
|
|
[[package]]
|
|
|
|
name = "ctr"
|
|
|
|
version = "0.8.0"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "049bb91fb4aaf0e3c7efa6cd5ef877dbbbd15b39dad06d9948de4ec8a75761ea"
|
|
|
|
dependencies = [
|
|
|
|
"cipher",
|
2020-11-28 05:30:57 +00:00
|
|
|
]
|
|
|
|
|
2019-12-09 11:39:44 +00:00
|
|
|
[[package]]
|
|
|
|
name = "ctrlc"
|
2022-06-18 23:59:43 +00:00
|
|
|
version = "3.2.2"
|
2019-12-09 11:39:44 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2022-06-18 23:59:43 +00:00
|
|
|
checksum = "b37feaa84e6861e00a1f5e5aa8da3ee56d605c9992d33e082786754828e20865"
|
2019-12-09 11:39:44 +00:00
|
|
|
dependencies = [
|
2022-06-18 23:59:43 +00:00
|
|
|
"nix 0.24.1",
|
2021-07-09 03:20:24 +00:00
|
|
|
"winapi",
|
2019-12-09 11:39:44 +00:00
|
|
|
]
|
|
|
|
|
2020-08-21 12:00:01 +00:00
|
|
|
[[package]]
|
|
|
|
name = "curve25519-dalek"
|
2021-08-17 01:00:24 +00:00
|
|
|
version = "3.2.0"
|
2020-08-21 12:00:01 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2021-08-17 01:00:24 +00:00
|
|
|
checksum = "0b9fdf9972b2bd6af2d913799d9ebc165ea4d2e65878e329d9c6b372c4491b61"
|
2020-08-21 12:00:01 +00:00
|
|
|
dependencies = [
|
|
|
|
"byteorder",
|
2021-12-22 06:17:14 +00:00
|
|
|
"digest 0.9.0",
|
2020-08-21 12:00:01 +00:00
|
|
|
"rand_core 0.5.1",
|
2021-07-13 00:48:33 +00:00
|
|
|
"subtle",
|
2020-08-21 12:00:01 +00:00
|
|
|
"zeroize",
|
|
|
|
]
|
|
|
|
|
2022-02-10 04:12:03 +00:00
|
|
|
[[package]]
|
|
|
|
name = "curve25519-dalek"
|
|
|
|
version = "4.0.0-pre.1"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "4033478fbf70d6acf2655ac70da91ee65852d69daf7a67bf7a2f518fb47aafcf"
|
|
|
|
dependencies = [
|
|
|
|
"byteorder",
|
|
|
|
"digest 0.9.0",
|
|
|
|
"rand_core 0.6.3",
|
|
|
|
"subtle",
|
|
|
|
"zeroize",
|
|
|
|
]
|
|
|
|
|
Implement SSZ union type (#2579)
## Issue Addressed
NA
## Proposed Changes
Implements the "union" type from the SSZ spec for `ssz`, `ssz_derive`, `tree_hash` and `tree_hash_derive` so it may be derived for `enums`:
https://github.com/ethereum/consensus-specs/blob/v1.1.0-beta.3/ssz/simple-serialize.md#union
The union type is required for the merge, since the `Transaction` type is defined as a single-variant union `Union[OpaqueTransaction]`.
### Crate Updates
This PR will (hopefully) cause CI to publish new versions for the following crates:
- `eth2_ssz_derive`: `0.2.1` -> `0.3.0`
- `eth2_ssz`: `0.3.0` -> `0.4.0`
- `eth2_ssz_types`: `0.2.0` -> `0.2.1`
- `tree_hash`: `0.3.0` -> `0.4.0`
- `tree_hash_derive`: `0.3.0` -> `0.4.0`
These these crates depend on each other, I've had to add a workspace-level `[patch]` for these crates. A follow-up PR will need to remove this patch, ones the new versions are published.
### Union Behaviors
We already had SSZ `Encode` and `TreeHash` derive for enums, however it just did a "transparent" pass-through of the inner value. Since the "union" decoding from the spec is in conflict with the transparent method, I've required that all `enum` have exactly one of the following enum-level attributes:
#### SSZ
- `#[ssz(enum_behaviour = "union")]`
- matches the spec used for the merge
- `#[ssz(enum_behaviour = "transparent")]`
- maintains existing functionality
- not supported for `Decode` (never was)
#### TreeHash
- `#[tree_hash(enum_behaviour = "union")]`
- matches the spec used for the merge
- `#[tree_hash(enum_behaviour = "transparent")]`
- maintains existing functionality
This means that we can maintain the existing transparent behaviour, but all existing users will get a compile-time error until they explicitly opt-in to being transparent.
### Legacy Option Encoding
Before this PR, we already had a union-esque encoding for `Option<T>`. However, this was with the *old* SSZ spec where the union selector was 4 bytes. During merge specification, the spec was changed to use 1 byte for the selector.
Whilst the 4-byte `Option` encoding was never used in the spec, we used it in our database. Writing a migrate script for all occurrences of `Option` in the database would be painful, especially since it's used in the `CommitteeCache`. To avoid the migrate script, I added a serde-esque `#[ssz(with = "module")]` field-level attribute to `ssz_derive` so that we can opt into the 4-byte encoding on a field-by-field basis.
The `ssz::legacy::four_byte_impl!` macro allows a one-liner to define the module required for the `#[ssz(with = "module")]` for some `Option<T> where T: Encode + Decode`.
Notably, **I have removed `Encode` and `Decode` impls for `Option`**. I've done this to force a break on downstream users. Like I mentioned, `Option` isn't used in the spec so I don't think it'll be *that* annoying. I think it's nicer than quietly having two different union implementations or quietly breaking the existing `Option` impl.
### Crate Publish Ordering
I've modified the order in which CI publishes crates to ensure that we don't publish a crate without ensuring we already published a crate that it depends upon.
## TODO
- [ ] Queue a follow-up `[patch]`-removing PR.
2021-09-25 05:58:36 +00:00
|
|
|
[[package]]
|
|
|
|
name = "darling"
|
2022-06-18 23:59:43 +00:00
|
|
|
version = "0.13.4"
|
Implement SSZ union type (#2579)
## Issue Addressed
NA
## Proposed Changes
Implements the "union" type from the SSZ spec for `ssz`, `ssz_derive`, `tree_hash` and `tree_hash_derive` so it may be derived for `enums`:
https://github.com/ethereum/consensus-specs/blob/v1.1.0-beta.3/ssz/simple-serialize.md#union
The union type is required for the merge, since the `Transaction` type is defined as a single-variant union `Union[OpaqueTransaction]`.
### Crate Updates
This PR will (hopefully) cause CI to publish new versions for the following crates:
- `eth2_ssz_derive`: `0.2.1` -> `0.3.0`
- `eth2_ssz`: `0.3.0` -> `0.4.0`
- `eth2_ssz_types`: `0.2.0` -> `0.2.1`
- `tree_hash`: `0.3.0` -> `0.4.0`
- `tree_hash_derive`: `0.3.0` -> `0.4.0`
These these crates depend on each other, I've had to add a workspace-level `[patch]` for these crates. A follow-up PR will need to remove this patch, ones the new versions are published.
### Union Behaviors
We already had SSZ `Encode` and `TreeHash` derive for enums, however it just did a "transparent" pass-through of the inner value. Since the "union" decoding from the spec is in conflict with the transparent method, I've required that all `enum` have exactly one of the following enum-level attributes:
#### SSZ
- `#[ssz(enum_behaviour = "union")]`
- matches the spec used for the merge
- `#[ssz(enum_behaviour = "transparent")]`
- maintains existing functionality
- not supported for `Decode` (never was)
#### TreeHash
- `#[tree_hash(enum_behaviour = "union")]`
- matches the spec used for the merge
- `#[tree_hash(enum_behaviour = "transparent")]`
- maintains existing functionality
This means that we can maintain the existing transparent behaviour, but all existing users will get a compile-time error until they explicitly opt-in to being transparent.
### Legacy Option Encoding
Before this PR, we already had a union-esque encoding for `Option<T>`. However, this was with the *old* SSZ spec where the union selector was 4 bytes. During merge specification, the spec was changed to use 1 byte for the selector.
Whilst the 4-byte `Option` encoding was never used in the spec, we used it in our database. Writing a migrate script for all occurrences of `Option` in the database would be painful, especially since it's used in the `CommitteeCache`. To avoid the migrate script, I added a serde-esque `#[ssz(with = "module")]` field-level attribute to `ssz_derive` so that we can opt into the 4-byte encoding on a field-by-field basis.
The `ssz::legacy::four_byte_impl!` macro allows a one-liner to define the module required for the `#[ssz(with = "module")]` for some `Option<T> where T: Encode + Decode`.
Notably, **I have removed `Encode` and `Decode` impls for `Option`**. I've done this to force a break on downstream users. Like I mentioned, `Option` isn't used in the spec so I don't think it'll be *that* annoying. I think it's nicer than quietly having two different union implementations or quietly breaking the existing `Option` impl.
### Crate Publish Ordering
I've modified the order in which CI publishes crates to ensure that we don't publish a crate without ensuring we already published a crate that it depends upon.
## TODO
- [ ] Queue a follow-up `[patch]`-removing PR.
2021-09-25 05:58:36 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2022-06-18 23:59:43 +00:00
|
|
|
checksum = "a01d95850c592940db9b8194bc39f4bc0e89dee5c4265e4b1807c34a9aba453c"
|
Implement SSZ union type (#2579)
## Issue Addressed
NA
## Proposed Changes
Implements the "union" type from the SSZ spec for `ssz`, `ssz_derive`, `tree_hash` and `tree_hash_derive` so it may be derived for `enums`:
https://github.com/ethereum/consensus-specs/blob/v1.1.0-beta.3/ssz/simple-serialize.md#union
The union type is required for the merge, since the `Transaction` type is defined as a single-variant union `Union[OpaqueTransaction]`.
### Crate Updates
This PR will (hopefully) cause CI to publish new versions for the following crates:
- `eth2_ssz_derive`: `0.2.1` -> `0.3.0`
- `eth2_ssz`: `0.3.0` -> `0.4.0`
- `eth2_ssz_types`: `0.2.0` -> `0.2.1`
- `tree_hash`: `0.3.0` -> `0.4.0`
- `tree_hash_derive`: `0.3.0` -> `0.4.0`
These these crates depend on each other, I've had to add a workspace-level `[patch]` for these crates. A follow-up PR will need to remove this patch, ones the new versions are published.
### Union Behaviors
We already had SSZ `Encode` and `TreeHash` derive for enums, however it just did a "transparent" pass-through of the inner value. Since the "union" decoding from the spec is in conflict with the transparent method, I've required that all `enum` have exactly one of the following enum-level attributes:
#### SSZ
- `#[ssz(enum_behaviour = "union")]`
- matches the spec used for the merge
- `#[ssz(enum_behaviour = "transparent")]`
- maintains existing functionality
- not supported for `Decode` (never was)
#### TreeHash
- `#[tree_hash(enum_behaviour = "union")]`
- matches the spec used for the merge
- `#[tree_hash(enum_behaviour = "transparent")]`
- maintains existing functionality
This means that we can maintain the existing transparent behaviour, but all existing users will get a compile-time error until they explicitly opt-in to being transparent.
### Legacy Option Encoding
Before this PR, we already had a union-esque encoding for `Option<T>`. However, this was with the *old* SSZ spec where the union selector was 4 bytes. During merge specification, the spec was changed to use 1 byte for the selector.
Whilst the 4-byte `Option` encoding was never used in the spec, we used it in our database. Writing a migrate script for all occurrences of `Option` in the database would be painful, especially since it's used in the `CommitteeCache`. To avoid the migrate script, I added a serde-esque `#[ssz(with = "module")]` field-level attribute to `ssz_derive` so that we can opt into the 4-byte encoding on a field-by-field basis.
The `ssz::legacy::four_byte_impl!` macro allows a one-liner to define the module required for the `#[ssz(with = "module")]` for some `Option<T> where T: Encode + Decode`.
Notably, **I have removed `Encode` and `Decode` impls for `Option`**. I've done this to force a break on downstream users. Like I mentioned, `Option` isn't used in the spec so I don't think it'll be *that* annoying. I think it's nicer than quietly having two different union implementations or quietly breaking the existing `Option` impl.
### Crate Publish Ordering
I've modified the order in which CI publishes crates to ensure that we don't publish a crate without ensuring we already published a crate that it depends upon.
## TODO
- [ ] Queue a follow-up `[patch]`-removing PR.
2021-09-25 05:58:36 +00:00
|
|
|
dependencies = [
|
2021-12-13 20:43:22 +00:00
|
|
|
"darling_core",
|
|
|
|
"darling_macro",
|
2021-07-09 06:15:32 +00:00
|
|
|
]
|
|
|
|
|
Implement SSZ union type (#2579)
## Issue Addressed
NA
## Proposed Changes
Implements the "union" type from the SSZ spec for `ssz`, `ssz_derive`, `tree_hash` and `tree_hash_derive` so it may be derived for `enums`:
https://github.com/ethereum/consensus-specs/blob/v1.1.0-beta.3/ssz/simple-serialize.md#union
The union type is required for the merge, since the `Transaction` type is defined as a single-variant union `Union[OpaqueTransaction]`.
### Crate Updates
This PR will (hopefully) cause CI to publish new versions for the following crates:
- `eth2_ssz_derive`: `0.2.1` -> `0.3.0`
- `eth2_ssz`: `0.3.0` -> `0.4.0`
- `eth2_ssz_types`: `0.2.0` -> `0.2.1`
- `tree_hash`: `0.3.0` -> `0.4.0`
- `tree_hash_derive`: `0.3.0` -> `0.4.0`
These these crates depend on each other, I've had to add a workspace-level `[patch]` for these crates. A follow-up PR will need to remove this patch, ones the new versions are published.
### Union Behaviors
We already had SSZ `Encode` and `TreeHash` derive for enums, however it just did a "transparent" pass-through of the inner value. Since the "union" decoding from the spec is in conflict with the transparent method, I've required that all `enum` have exactly one of the following enum-level attributes:
#### SSZ
- `#[ssz(enum_behaviour = "union")]`
- matches the spec used for the merge
- `#[ssz(enum_behaviour = "transparent")]`
- maintains existing functionality
- not supported for `Decode` (never was)
#### TreeHash
- `#[tree_hash(enum_behaviour = "union")]`
- matches the spec used for the merge
- `#[tree_hash(enum_behaviour = "transparent")]`
- maintains existing functionality
This means that we can maintain the existing transparent behaviour, but all existing users will get a compile-time error until they explicitly opt-in to being transparent.
### Legacy Option Encoding
Before this PR, we already had a union-esque encoding for `Option<T>`. However, this was with the *old* SSZ spec where the union selector was 4 bytes. During merge specification, the spec was changed to use 1 byte for the selector.
Whilst the 4-byte `Option` encoding was never used in the spec, we used it in our database. Writing a migrate script for all occurrences of `Option` in the database would be painful, especially since it's used in the `CommitteeCache`. To avoid the migrate script, I added a serde-esque `#[ssz(with = "module")]` field-level attribute to `ssz_derive` so that we can opt into the 4-byte encoding on a field-by-field basis.
The `ssz::legacy::four_byte_impl!` macro allows a one-liner to define the module required for the `#[ssz(with = "module")]` for some `Option<T> where T: Encode + Decode`.
Notably, **I have removed `Encode` and `Decode` impls for `Option`**. I've done this to force a break on downstream users. Like I mentioned, `Option` isn't used in the spec so I don't think it'll be *that* annoying. I think it's nicer than quietly having two different union implementations or quietly breaking the existing `Option` impl.
### Crate Publish Ordering
I've modified the order in which CI publishes crates to ensure that we don't publish a crate without ensuring we already published a crate that it depends upon.
## TODO
- [ ] Queue a follow-up `[patch]`-removing PR.
2021-09-25 05:58:36 +00:00
|
|
|
[[package]]
|
|
|
|
name = "darling_core"
|
2022-06-18 23:59:43 +00:00
|
|
|
version = "0.13.4"
|
Implement SSZ union type (#2579)
## Issue Addressed
NA
## Proposed Changes
Implements the "union" type from the SSZ spec for `ssz`, `ssz_derive`, `tree_hash` and `tree_hash_derive` so it may be derived for `enums`:
https://github.com/ethereum/consensus-specs/blob/v1.1.0-beta.3/ssz/simple-serialize.md#union
The union type is required for the merge, since the `Transaction` type is defined as a single-variant union `Union[OpaqueTransaction]`.
### Crate Updates
This PR will (hopefully) cause CI to publish new versions for the following crates:
- `eth2_ssz_derive`: `0.2.1` -> `0.3.0`
- `eth2_ssz`: `0.3.0` -> `0.4.0`
- `eth2_ssz_types`: `0.2.0` -> `0.2.1`
- `tree_hash`: `0.3.0` -> `0.4.0`
- `tree_hash_derive`: `0.3.0` -> `0.4.0`
These these crates depend on each other, I've had to add a workspace-level `[patch]` for these crates. A follow-up PR will need to remove this patch, ones the new versions are published.
### Union Behaviors
We already had SSZ `Encode` and `TreeHash` derive for enums, however it just did a "transparent" pass-through of the inner value. Since the "union" decoding from the spec is in conflict with the transparent method, I've required that all `enum` have exactly one of the following enum-level attributes:
#### SSZ
- `#[ssz(enum_behaviour = "union")]`
- matches the spec used for the merge
- `#[ssz(enum_behaviour = "transparent")]`
- maintains existing functionality
- not supported for `Decode` (never was)
#### TreeHash
- `#[tree_hash(enum_behaviour = "union")]`
- matches the spec used for the merge
- `#[tree_hash(enum_behaviour = "transparent")]`
- maintains existing functionality
This means that we can maintain the existing transparent behaviour, but all existing users will get a compile-time error until they explicitly opt-in to being transparent.
### Legacy Option Encoding
Before this PR, we already had a union-esque encoding for `Option<T>`. However, this was with the *old* SSZ spec where the union selector was 4 bytes. During merge specification, the spec was changed to use 1 byte for the selector.
Whilst the 4-byte `Option` encoding was never used in the spec, we used it in our database. Writing a migrate script for all occurrences of `Option` in the database would be painful, especially since it's used in the `CommitteeCache`. To avoid the migrate script, I added a serde-esque `#[ssz(with = "module")]` field-level attribute to `ssz_derive` so that we can opt into the 4-byte encoding on a field-by-field basis.
The `ssz::legacy::four_byte_impl!` macro allows a one-liner to define the module required for the `#[ssz(with = "module")]` for some `Option<T> where T: Encode + Decode`.
Notably, **I have removed `Encode` and `Decode` impls for `Option`**. I've done this to force a break on downstream users. Like I mentioned, `Option` isn't used in the spec so I don't think it'll be *that* annoying. I think it's nicer than quietly having two different union implementations or quietly breaking the existing `Option` impl.
### Crate Publish Ordering
I've modified the order in which CI publishes crates to ensure that we don't publish a crate without ensuring we already published a crate that it depends upon.
## TODO
- [ ] Queue a follow-up `[patch]`-removing PR.
2021-09-25 05:58:36 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2022-06-18 23:59:43 +00:00
|
|
|
checksum = "859d65a907b6852c9361e3185c862aae7fafd2887876799fa55f5f99dc40d610"
|
Implement SSZ union type (#2579)
## Issue Addressed
NA
## Proposed Changes
Implements the "union" type from the SSZ spec for `ssz`, `ssz_derive`, `tree_hash` and `tree_hash_derive` so it may be derived for `enums`:
https://github.com/ethereum/consensus-specs/blob/v1.1.0-beta.3/ssz/simple-serialize.md#union
The union type is required for the merge, since the `Transaction` type is defined as a single-variant union `Union[OpaqueTransaction]`.
### Crate Updates
This PR will (hopefully) cause CI to publish new versions for the following crates:
- `eth2_ssz_derive`: `0.2.1` -> `0.3.0`
- `eth2_ssz`: `0.3.0` -> `0.4.0`
- `eth2_ssz_types`: `0.2.0` -> `0.2.1`
- `tree_hash`: `0.3.0` -> `0.4.0`
- `tree_hash_derive`: `0.3.0` -> `0.4.0`
These these crates depend on each other, I've had to add a workspace-level `[patch]` for these crates. A follow-up PR will need to remove this patch, ones the new versions are published.
### Union Behaviors
We already had SSZ `Encode` and `TreeHash` derive for enums, however it just did a "transparent" pass-through of the inner value. Since the "union" decoding from the spec is in conflict with the transparent method, I've required that all `enum` have exactly one of the following enum-level attributes:
#### SSZ
- `#[ssz(enum_behaviour = "union")]`
- matches the spec used for the merge
- `#[ssz(enum_behaviour = "transparent")]`
- maintains existing functionality
- not supported for `Decode` (never was)
#### TreeHash
- `#[tree_hash(enum_behaviour = "union")]`
- matches the spec used for the merge
- `#[tree_hash(enum_behaviour = "transparent")]`
- maintains existing functionality
This means that we can maintain the existing transparent behaviour, but all existing users will get a compile-time error until they explicitly opt-in to being transparent.
### Legacy Option Encoding
Before this PR, we already had a union-esque encoding for `Option<T>`. However, this was with the *old* SSZ spec where the union selector was 4 bytes. During merge specification, the spec was changed to use 1 byte for the selector.
Whilst the 4-byte `Option` encoding was never used in the spec, we used it in our database. Writing a migrate script for all occurrences of `Option` in the database would be painful, especially since it's used in the `CommitteeCache`. To avoid the migrate script, I added a serde-esque `#[ssz(with = "module")]` field-level attribute to `ssz_derive` so that we can opt into the 4-byte encoding on a field-by-field basis.
The `ssz::legacy::four_byte_impl!` macro allows a one-liner to define the module required for the `#[ssz(with = "module")]` for some `Option<T> where T: Encode + Decode`.
Notably, **I have removed `Encode` and `Decode` impls for `Option`**. I've done this to force a break on downstream users. Like I mentioned, `Option` isn't used in the spec so I don't think it'll be *that* annoying. I think it's nicer than quietly having two different union implementations or quietly breaking the existing `Option` impl.
### Crate Publish Ordering
I've modified the order in which CI publishes crates to ensure that we don't publish a crate without ensuring we already published a crate that it depends upon.
## TODO
- [ ] Queue a follow-up `[patch]`-removing PR.
2021-09-25 05:58:36 +00:00
|
|
|
dependencies = [
|
|
|
|
"fnv",
|
|
|
|
"ident_case",
|
|
|
|
"proc-macro2",
|
|
|
|
"quote",
|
|
|
|
"strsim 0.10.0",
|
|
|
|
"syn",
|
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "darling_macro"
|
2022-06-18 23:59:43 +00:00
|
|
|
version = "0.13.4"
|
Implement SSZ union type (#2579)
## Issue Addressed
NA
## Proposed Changes
Implements the "union" type from the SSZ spec for `ssz`, `ssz_derive`, `tree_hash` and `tree_hash_derive` so it may be derived for `enums`:
https://github.com/ethereum/consensus-specs/blob/v1.1.0-beta.3/ssz/simple-serialize.md#union
The union type is required for the merge, since the `Transaction` type is defined as a single-variant union `Union[OpaqueTransaction]`.
### Crate Updates
This PR will (hopefully) cause CI to publish new versions for the following crates:
- `eth2_ssz_derive`: `0.2.1` -> `0.3.0`
- `eth2_ssz`: `0.3.0` -> `0.4.0`
- `eth2_ssz_types`: `0.2.0` -> `0.2.1`
- `tree_hash`: `0.3.0` -> `0.4.0`
- `tree_hash_derive`: `0.3.0` -> `0.4.0`
These these crates depend on each other, I've had to add a workspace-level `[patch]` for these crates. A follow-up PR will need to remove this patch, ones the new versions are published.
### Union Behaviors
We already had SSZ `Encode` and `TreeHash` derive for enums, however it just did a "transparent" pass-through of the inner value. Since the "union" decoding from the spec is in conflict with the transparent method, I've required that all `enum` have exactly one of the following enum-level attributes:
#### SSZ
- `#[ssz(enum_behaviour = "union")]`
- matches the spec used for the merge
- `#[ssz(enum_behaviour = "transparent")]`
- maintains existing functionality
- not supported for `Decode` (never was)
#### TreeHash
- `#[tree_hash(enum_behaviour = "union")]`
- matches the spec used for the merge
- `#[tree_hash(enum_behaviour = "transparent")]`
- maintains existing functionality
This means that we can maintain the existing transparent behaviour, but all existing users will get a compile-time error until they explicitly opt-in to being transparent.
### Legacy Option Encoding
Before this PR, we already had a union-esque encoding for `Option<T>`. However, this was with the *old* SSZ spec where the union selector was 4 bytes. During merge specification, the spec was changed to use 1 byte for the selector.
Whilst the 4-byte `Option` encoding was never used in the spec, we used it in our database. Writing a migrate script for all occurrences of `Option` in the database would be painful, especially since it's used in the `CommitteeCache`. To avoid the migrate script, I added a serde-esque `#[ssz(with = "module")]` field-level attribute to `ssz_derive` so that we can opt into the 4-byte encoding on a field-by-field basis.
The `ssz::legacy::four_byte_impl!` macro allows a one-liner to define the module required for the `#[ssz(with = "module")]` for some `Option<T> where T: Encode + Decode`.
Notably, **I have removed `Encode` and `Decode` impls for `Option`**. I've done this to force a break on downstream users. Like I mentioned, `Option` isn't used in the spec so I don't think it'll be *that* annoying. I think it's nicer than quietly having two different union implementations or quietly breaking the existing `Option` impl.
### Crate Publish Ordering
I've modified the order in which CI publishes crates to ensure that we don't publish a crate without ensuring we already published a crate that it depends upon.
## TODO
- [ ] Queue a follow-up `[patch]`-removing PR.
2021-09-25 05:58:36 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2022-06-18 23:59:43 +00:00
|
|
|
checksum = "9c972679f83bdf9c42bd905396b6c3588a843a17f0f16dfcfa3e2c5d57441835"
|
Implement SSZ union type (#2579)
## Issue Addressed
NA
## Proposed Changes
Implements the "union" type from the SSZ spec for `ssz`, `ssz_derive`, `tree_hash` and `tree_hash_derive` so it may be derived for `enums`:
https://github.com/ethereum/consensus-specs/blob/v1.1.0-beta.3/ssz/simple-serialize.md#union
The union type is required for the merge, since the `Transaction` type is defined as a single-variant union `Union[OpaqueTransaction]`.
### Crate Updates
This PR will (hopefully) cause CI to publish new versions for the following crates:
- `eth2_ssz_derive`: `0.2.1` -> `0.3.0`
- `eth2_ssz`: `0.3.0` -> `0.4.0`
- `eth2_ssz_types`: `0.2.0` -> `0.2.1`
- `tree_hash`: `0.3.0` -> `0.4.0`
- `tree_hash_derive`: `0.3.0` -> `0.4.0`
These these crates depend on each other, I've had to add a workspace-level `[patch]` for these crates. A follow-up PR will need to remove this patch, ones the new versions are published.
### Union Behaviors
We already had SSZ `Encode` and `TreeHash` derive for enums, however it just did a "transparent" pass-through of the inner value. Since the "union" decoding from the spec is in conflict with the transparent method, I've required that all `enum` have exactly one of the following enum-level attributes:
#### SSZ
- `#[ssz(enum_behaviour = "union")]`
- matches the spec used for the merge
- `#[ssz(enum_behaviour = "transparent")]`
- maintains existing functionality
- not supported for `Decode` (never was)
#### TreeHash
- `#[tree_hash(enum_behaviour = "union")]`
- matches the spec used for the merge
- `#[tree_hash(enum_behaviour = "transparent")]`
- maintains existing functionality
This means that we can maintain the existing transparent behaviour, but all existing users will get a compile-time error until they explicitly opt-in to being transparent.
### Legacy Option Encoding
Before this PR, we already had a union-esque encoding for `Option<T>`. However, this was with the *old* SSZ spec where the union selector was 4 bytes. During merge specification, the spec was changed to use 1 byte for the selector.
Whilst the 4-byte `Option` encoding was never used in the spec, we used it in our database. Writing a migrate script for all occurrences of `Option` in the database would be painful, especially since it's used in the `CommitteeCache`. To avoid the migrate script, I added a serde-esque `#[ssz(with = "module")]` field-level attribute to `ssz_derive` so that we can opt into the 4-byte encoding on a field-by-field basis.
The `ssz::legacy::four_byte_impl!` macro allows a one-liner to define the module required for the `#[ssz(with = "module")]` for some `Option<T> where T: Encode + Decode`.
Notably, **I have removed `Encode` and `Decode` impls for `Option`**. I've done this to force a break on downstream users. Like I mentioned, `Option` isn't used in the spec so I don't think it'll be *that* annoying. I think it's nicer than quietly having two different union implementations or quietly breaking the existing `Option` impl.
### Crate Publish Ordering
I've modified the order in which CI publishes crates to ensure that we don't publish a crate without ensuring we already published a crate that it depends upon.
## TODO
- [ ] Queue a follow-up `[patch]`-removing PR.
2021-09-25 05:58:36 +00:00
|
|
|
dependencies = [
|
2021-12-13 20:43:22 +00:00
|
|
|
"darling_core",
|
2021-07-09 06:15:32 +00:00
|
|
|
"quote",
|
|
|
|
"syn",
|
|
|
|
]
|
|
|
|
|
2020-05-29 02:03:30 +00:00
|
|
|
[[package]]
|
|
|
|
name = "darwin-libproc"
|
2022-04-04 00:26:16 +00:00
|
|
|
version = "0.1.2"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "9fb90051930c9a0f09e585762152048e23ac74d20c10590ef7cf01c0343c3046"
|
2020-05-29 02:03:30 +00:00
|
|
|
dependencies = [
|
|
|
|
"darwin-libproc-sys",
|
|
|
|
"libc",
|
|
|
|
"memchr",
|
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "darwin-libproc-sys"
|
2022-04-04 00:26:16 +00:00
|
|
|
version = "0.1.2"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "57cebb5bde66eecdd30ddc4b9cd208238b15db4982ccc72db59d699ea10867c1"
|
|
|
|
dependencies = [
|
|
|
|
"libc",
|
|
|
|
]
|
2020-05-29 02:03:30 +00:00
|
|
|
|
2019-12-09 11:39:44 +00:00
|
|
|
[[package]]
|
|
|
|
name = "data-encoding"
|
2021-03-02 05:59:49 +00:00
|
|
|
version = "2.3.2"
|
2019-12-09 11:39:44 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2021-03-02 05:59:49 +00:00
|
|
|
checksum = "3ee2393c4a91429dffb4bedf19f4d6abf27d8a732c8ce4980305d782e5426d57"
|
2019-12-09 11:39:44 +00:00
|
|
|
|
2022-04-01 00:58:59 +00:00
|
|
|
[[package]]
|
|
|
|
name = "database_manager"
|
|
|
|
version = "0.1.0"
|
|
|
|
dependencies = [
|
|
|
|
"beacon_chain",
|
|
|
|
"beacon_node",
|
|
|
|
"clap",
|
|
|
|
"clap_utils",
|
|
|
|
"environment",
|
|
|
|
"logging",
|
|
|
|
"slog",
|
|
|
|
"sloggers",
|
|
|
|
"store",
|
|
|
|
"strum",
|
|
|
|
"tempfile",
|
|
|
|
"types",
|
|
|
|
]
|
|
|
|
|
2019-12-09 11:39:44 +00:00
|
|
|
[[package]]
|
|
|
|
name = "db-key"
|
|
|
|
version = "0.0.5"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2020-05-10 09:56:31 +00:00
|
|
|
checksum = "b72465f46d518f6015d9cf07f7f3013a95dd6b9c2747c3d65ae0cce43929d14f"
|
2019-12-09 11:39:44 +00:00
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "deposit_contract"
|
Initial work towards v0.2.0 (#924)
* Remove ping protocol
* Initial renaming of network services
* Correct rebasing relative to latest master
* Start updating types
* Adds HashMapDelay struct to utils
* Initial network restructure
* Network restructure. Adds new types for v0.2.0
* Removes build artefacts
* Shift validation to beacon chain
* Temporarily remove gossip validation
This is to be updated to match current optimisation efforts.
* Adds AggregateAndProof
* Begin rebuilding pubsub encoding/decoding
* Signature hacking
* Shift gossipsup decoding into eth2_libp2p
* Existing EF tests passing with fake_crypto
* Shifts block encoding/decoding into RPC
* Delete outdated API spec
* All release tests passing bar genesis state parsing
* Update and test YamlConfig
* Update to spec v0.10 compatible BLS
* Updates to BLS EF tests
* Add EF test for AggregateVerify
And delete unused hash2curve tests for uncompressed points
* Update EF tests to v0.10.1
* Use optional block root correctly in block proc
* Use genesis fork in deposit domain. All tests pass
* Fast aggregate verify test
* Update REST API docs
* Fix unused import
* Bump spec tags to v0.10.1
* Add `seconds_per_eth1_block` to chainspec
* Update to timestamp based eth1 voting scheme
* Return None from `get_votes_to_consider` if block cache is empty
* Handle overflows in `is_candidate_block`
* Revert to failing tests
* Fix eth1 data sets test
* Choose default vote according to spec
* Fix collect_valid_votes tests
* Fix `get_votes_to_consider` to choose all eligible blocks
* Uncomment winning_vote tests
* Add comments; remove unused code
* Reduce seconds_per_eth1_block for simulation
* Addressed review comments
* Add test for default vote case
* Fix logs
* Remove unused functions
* Meter default eth1 votes
* Fix comments
* Progress on attestation service
* Address review comments; remove unused dependency
* Initial work on removing libp2p lock
* Add LRU caches to store (rollup)
* Update attestation validation for DB changes (WIP)
* Initial version of should_forward_block
* Scaffold
* Progress on attestation validation
Also, consolidate prod+testing slot clocks so that they share much
of the same implementation and can both handle sub-slot time changes.
* Removes lock from libp2p service
* Completed network lock removal
* Finish(?) attestation processing
* Correct network termination future
* Add slot check to block check
* Correct fmt issues
* Remove Drop implementation for network service
* Add first attempt at attestation proc. re-write
* Add version 2 of attestation processing
* Minor fixes
* Add validator pubkey cache
* Make get_indexed_attestation take a committee
* Link signature processing into new attn verification
* First working version
* Ensure pubkey cache is updated
* Add more metrics, slight optimizations
* Clone committee cache during attestation processing
* Update shuffling cache during block processing
* Remove old commented-out code
* Fix shuffling cache insert bug
* Used indexed attestation in fork choice
* Restructure attn processing, add metrics
* Add more detailed metrics
* Tidy, fix failing tests
* Fix failing tests, tidy
* Address reviewers suggestions
* Disable/delete two outdated tests
* Modification of validator for subscriptions
* Add slot signing to validator client
* Further progress on validation subscription
* Adds necessary validator subscription functionality
* Add new Pubkeys struct to signature_sets
* Refactor with functional approach
* Update beacon chain
* Clean up validator <-> beacon node http types
* Add aggregator status to ValidatorDuty
* Impl Clone for manual slot clock
* Fix minor errors
* Further progress validator client subscription
* Initial subscription and aggregation handling
* Remove decompressed member from pubkey bytes
* Progress to modifying val client for attestation aggregation
* First draft of validator client upgrade for aggregate attestations
* Add hashmap for indices lookup
* Add state cache, remove store cache
* Only build the head committee cache
* Removes lock on a network channel
* Partially implement beacon node subscription http api
* Correct compilation issues
* Change `get_attesting_indices` to use Vec
* Fix failing test
* Partial implementation of timer
* Adds timer, removes exit_future, http api to op pool
* Partial multiple aggregate attestation handling
* Permits bulk messages accross gossipsub network channel
* Correct compile issues
* Improve gosispsub messaging and correct rest api helpers
* Added global gossipsub subscriptions
* Update validator subscriptions data structs
* Tidy
* Re-structure validator subscriptions
* Initial handling of subscriptions
* Re-structure network service
* Add pubkey cache persistence file
* Add more comments
* Integrate persistence file into builder
* Add pubkey cache tests
* Add HashSetDelay and introduce into attestation service
* Handles validator subscriptions
* Add data_dir to beacon chain builder
* Remove Option in pubkey cache persistence file
* Ensure consistency between datadir/data_dir
* Fix failing network test
* Peer subnet discovery gets queued for future subscriptions
* Reorganise attestation service functions
* Initial wiring of attestation service
* First draft of attestation service timing logic
* Correct minor typos
* Tidy
* Fix todos
* Improve tests
* Add PeerInfo to connected peers mapping
* Fix compile error
* Fix compile error from merge
* Split up block processing metrics
* Tidy
* Refactor get_pubkey_from_state
* Remove commented-out code
* Rename state_cache -> checkpoint_cache
* Rename Checkpoint -> Snapshot
* Tidy, add comments
* Tidy up find_head function
* Change some checkpoint -> snapshot
* Add tests
* Expose max_len
* Remove dead code
* Tidy
* Fix bug
* Add sync-speed metric
* Add first attempt at VerifiableBlock
* Start integrating into beacon chain
* Integrate VerifiableBlock
* Rename VerifableBlock -> PartialBlockVerification
* Add start of typed methods
* Add progress
* Add further progress
* Rename structs
* Add full block verification to block_processing.rs
* Further beacon chain integration
* Update checks for gossip
* Add todo
* Start adding segement verification
* Add passing chain segement test
* Initial integration with batch sync
* Minor changes
* Tidy, add more error checking
* Start adding chain_segment tests
* Finish invalid signature tests
* Include single and gossip verified blocks in tests
* Add gossip verification tests
* Start adding docs
* Finish adding comments to block_processing.rs
* Rename block_processing.rs -> block_verification
* Start removing old block processing code
* Fixes beacon_chain compilation
* Fix project-wide compile errors
* Remove old code
* Correct code to pass all tests
* Fix bug with beacon proposer index
* Fix shim for BlockProcessingError
* Only process one epoch at a time
* Fix loop in chain segment processing
* Correct tests from master merge
* Add caching for state.eth1_data_votes
* Add BeaconChain::validator_pubkey
* Revert "Add caching for state.eth1_data_votes"
This reverts commit cd73dcd6434fb8d8e6bf30c5356355598ea7b78e.
Co-authored-by: Grant Wuerker <gwuerker@gmail.com>
Co-authored-by: Michael Sproul <michael@sigmaprime.io>
Co-authored-by: Michael Sproul <micsproul@gmail.com>
Co-authored-by: pawan <pawandhananjay@gmail.com>
Co-authored-by: Paul Hauner <paul@paulhauner.com>
2020-03-17 06:24:44 +00:00
|
|
|
version = "0.2.0"
|
2019-12-09 11:39:44 +00:00
|
|
|
dependencies = [
|
2021-11-29 03:57:54 +00:00
|
|
|
"eth2_ssz",
|
Separate execution payloads in the DB (#3157)
## Proposed Changes
Reduce post-merge disk usage by not storing finalized execution payloads in Lighthouse's database.
:warning: **This is achieved in a backwards-incompatible way for networks that have already merged** :warning:. Kiln users and shadow fork enjoyers will be unable to downgrade after running the code from this PR. The upgrade migration may take several minutes to run, and can't be aborted after it begins.
The main changes are:
- New column in the database called `ExecPayload`, keyed by beacon block root.
- The `BeaconBlock` column now stores blinded blocks only.
- Lots of places that previously used full blocks now use blinded blocks, e.g. analytics APIs, block replay in the DB, etc.
- On finalization:
- `prune_abanonded_forks` deletes non-canonical payloads whilst deleting non-canonical blocks.
- `migrate_db` deletes finalized canonical payloads whilst deleting finalized states.
- Conversions between blinded and full blocks are implemented in a compositional way, duplicating some work from Sean's PR #3134.
- The execution layer has a new `get_payload_by_block_hash` method that reconstructs a payload using the EE's `eth_getBlockByHash` call.
- I've tested manually that it works on Kiln, using Geth and Nethermind.
- This isn't necessarily the most efficient method, and new engine APIs are being discussed to improve this: https://github.com/ethereum/execution-apis/pull/146.
- We're depending on the `ethers` master branch, due to lots of recent changes. We're also using a workaround for https://github.com/gakonst/ethers-rs/issues/1134.
- Payload reconstruction is used in the HTTP API via `BeaconChain::get_block`, which is now `async`. Due to the `async` fn, the `blocking_json` wrapper has been removed.
- Payload reconstruction is used in network RPC to serve blocks-by-{root,range} responses. Here the `async` adjustment is messier, although I think I've managed to come up with a reasonable compromise: the handlers take the `SendOnDrop` by value so that they can drop it on _task completion_ (after the `fn` returns). Still, this is introducing disk reads onto core executor threads, which may have a negative performance impact (thoughts appreciated).
## Additional Info
- [x] For performance it would be great to remove the cloning of full blocks when converting them to blinded blocks to write to disk. I'm going to experiment with a `put_block` API that takes the block by value, breaks it into a blinded block and a payload, stores the blinded block, and then re-assembles the full block for the caller.
- [x] We should measure the latency of blocks-by-root and blocks-by-range responses.
- [x] We should add integration tests that stress the payload reconstruction (basic tests done, issue for more extensive tests: https://github.com/sigp/lighthouse/issues/3159)
- [x] We should (manually) test the schema v9 migration from several prior versions, particularly as blocks have changed on disk and some migrations rely on being able to load blocks.
Co-authored-by: Paul Hauner <paul@paulhauner.com>
2022-05-12 00:42:17 +00:00
|
|
|
"ethabi 16.0.0",
|
2020-10-28 22:19:38 +00:00
|
|
|
"hex",
|
2020-05-10 09:56:31 +00:00
|
|
|
"reqwest",
|
|
|
|
"serde_json",
|
2022-01-11 01:35:56 +00:00
|
|
|
"sha2 0.9.9",
|
2021-11-29 03:57:54 +00:00
|
|
|
"tree_hash",
|
2020-05-10 09:56:31 +00:00
|
|
|
"types",
|
2019-12-09 11:39:44 +00:00
|
|
|
]
|
|
|
|
|
2021-02-10 23:29:49 +00:00
|
|
|
[[package]]
|
|
|
|
name = "der"
|
2021-07-05 00:54:17 +00:00
|
|
|
version = "0.3.5"
|
2021-02-10 23:29:49 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2021-07-05 00:54:17 +00:00
|
|
|
checksum = "2eeb9d92785d1facb50567852ce75d0858630630e7eabea59cf7eb7474051087"
|
2021-02-10 23:29:49 +00:00
|
|
|
dependencies = [
|
Separate execution payloads in the DB (#3157)
## Proposed Changes
Reduce post-merge disk usage by not storing finalized execution payloads in Lighthouse's database.
:warning: **This is achieved in a backwards-incompatible way for networks that have already merged** :warning:. Kiln users and shadow fork enjoyers will be unable to downgrade after running the code from this PR. The upgrade migration may take several minutes to run, and can't be aborted after it begins.
The main changes are:
- New column in the database called `ExecPayload`, keyed by beacon block root.
- The `BeaconBlock` column now stores blinded blocks only.
- Lots of places that previously used full blocks now use blinded blocks, e.g. analytics APIs, block replay in the DB, etc.
- On finalization:
- `prune_abanonded_forks` deletes non-canonical payloads whilst deleting non-canonical blocks.
- `migrate_db` deletes finalized canonical payloads whilst deleting finalized states.
- Conversions between blinded and full blocks are implemented in a compositional way, duplicating some work from Sean's PR #3134.
- The execution layer has a new `get_payload_by_block_hash` method that reconstructs a payload using the EE's `eth_getBlockByHash` call.
- I've tested manually that it works on Kiln, using Geth and Nethermind.
- This isn't necessarily the most efficient method, and new engine APIs are being discussed to improve this: https://github.com/ethereum/execution-apis/pull/146.
- We're depending on the `ethers` master branch, due to lots of recent changes. We're also using a workaround for https://github.com/gakonst/ethers-rs/issues/1134.
- Payload reconstruction is used in the HTTP API via `BeaconChain::get_block`, which is now `async`. Due to the `async` fn, the `blocking_json` wrapper has been removed.
- Payload reconstruction is used in network RPC to serve blocks-by-{root,range} responses. Here the `async` adjustment is messier, although I think I've managed to come up with a reasonable compromise: the handlers take the `SendOnDrop` by value so that they can drop it on _task completion_ (after the `fn` returns). Still, this is introducing disk reads onto core executor threads, which may have a negative performance impact (thoughts appreciated).
## Additional Info
- [x] For performance it would be great to remove the cloning of full blocks when converting them to blinded blocks to write to disk. I'm going to experiment with a `put_block` API that takes the block by value, breaks it into a blinded block and a payload, stores the blinded block, and then re-assembles the full block for the caller.
- [x] We should measure the latency of blocks-by-root and blocks-by-range responses.
- [x] We should add integration tests that stress the payload reconstruction (basic tests done, issue for more extensive tests: https://github.com/sigp/lighthouse/issues/3159)
- [x] We should (manually) test the schema v9 migration from several prior versions, particularly as blocks have changed on disk and some migrations rely on being able to load blocks.
Co-authored-by: Paul Hauner <paul@paulhauner.com>
2022-05-12 00:42:17 +00:00
|
|
|
"const-oid 0.5.2",
|
2021-07-05 00:54:17 +00:00
|
|
|
"typenum",
|
2021-02-10 23:29:49 +00:00
|
|
|
]
|
|
|
|
|
Separate execution payloads in the DB (#3157)
## Proposed Changes
Reduce post-merge disk usage by not storing finalized execution payloads in Lighthouse's database.
:warning: **This is achieved in a backwards-incompatible way for networks that have already merged** :warning:. Kiln users and shadow fork enjoyers will be unable to downgrade after running the code from this PR. The upgrade migration may take several minutes to run, and can't be aborted after it begins.
The main changes are:
- New column in the database called `ExecPayload`, keyed by beacon block root.
- The `BeaconBlock` column now stores blinded blocks only.
- Lots of places that previously used full blocks now use blinded blocks, e.g. analytics APIs, block replay in the DB, etc.
- On finalization:
- `prune_abanonded_forks` deletes non-canonical payloads whilst deleting non-canonical blocks.
- `migrate_db` deletes finalized canonical payloads whilst deleting finalized states.
- Conversions between blinded and full blocks are implemented in a compositional way, duplicating some work from Sean's PR #3134.
- The execution layer has a new `get_payload_by_block_hash` method that reconstructs a payload using the EE's `eth_getBlockByHash` call.
- I've tested manually that it works on Kiln, using Geth and Nethermind.
- This isn't necessarily the most efficient method, and new engine APIs are being discussed to improve this: https://github.com/ethereum/execution-apis/pull/146.
- We're depending on the `ethers` master branch, due to lots of recent changes. We're also using a workaround for https://github.com/gakonst/ethers-rs/issues/1134.
- Payload reconstruction is used in the HTTP API via `BeaconChain::get_block`, which is now `async`. Due to the `async` fn, the `blocking_json` wrapper has been removed.
- Payload reconstruction is used in network RPC to serve blocks-by-{root,range} responses. Here the `async` adjustment is messier, although I think I've managed to come up with a reasonable compromise: the handlers take the `SendOnDrop` by value so that they can drop it on _task completion_ (after the `fn` returns). Still, this is introducing disk reads onto core executor threads, which may have a negative performance impact (thoughts appreciated).
## Additional Info
- [x] For performance it would be great to remove the cloning of full blocks when converting them to blinded blocks to write to disk. I'm going to experiment with a `put_block` API that takes the block by value, breaks it into a blinded block and a payload, stores the blinded block, and then re-assembles the full block for the caller.
- [x] We should measure the latency of blocks-by-root and blocks-by-range responses.
- [x] We should add integration tests that stress the payload reconstruction (basic tests done, issue for more extensive tests: https://github.com/sigp/lighthouse/issues/3159)
- [x] We should (manually) test the schema v9 migration from several prior versions, particularly as blocks have changed on disk and some migrations rely on being able to load blocks.
Co-authored-by: Paul Hauner <paul@paulhauner.com>
2022-05-12 00:42:17 +00:00
|
|
|
[[package]]
|
|
|
|
name = "der"
|
|
|
|
version = "0.5.1"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "6919815d73839e7ad218de758883aae3a257ba6759ce7a9992501efbb53d705c"
|
|
|
|
dependencies = [
|
|
|
|
"const-oid 0.7.1",
|
|
|
|
]
|
|
|
|
|
2020-06-18 11:06:34 +00:00
|
|
|
[[package]]
|
|
|
|
name = "derivative"
|
2021-03-02 05:59:49 +00:00
|
|
|
version = "2.2.0"
|
2020-06-18 11:06:34 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2021-03-02 05:59:49 +00:00
|
|
|
checksum = "fcc3dd5e9e9c0b295d6e1e4d811fb6f157d5ffd784b8d202fc62eac8035a770b"
|
2020-06-18 11:06:34 +00:00
|
|
|
dependencies = [
|
|
|
|
"proc-macro2",
|
|
|
|
"quote",
|
|
|
|
"syn",
|
|
|
|
]
|
|
|
|
|
2019-12-09 11:39:44 +00:00
|
|
|
[[package]]
|
2020-05-05 23:12:28 +00:00
|
|
|
name = "derive_arbitrary"
|
2022-07-05 23:36:42 +00:00
|
|
|
version = "1.1.3"
|
2019-12-09 11:39:44 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2022-07-05 23:36:42 +00:00
|
|
|
checksum = "c9a577516173adb681466d517d39bd468293bc2c2a16439375ef0f35bba45f3d"
|
2019-12-09 11:39:44 +00:00
|
|
|
dependencies = [
|
2020-05-17 11:16:48 +00:00
|
|
|
"proc-macro2",
|
|
|
|
"quote",
|
|
|
|
"syn",
|
2019-12-09 11:39:44 +00:00
|
|
|
]
|
|
|
|
|
2020-04-19 02:20:43 +00:00
|
|
|
[[package]]
|
|
|
|
name = "derive_more"
|
2021-12-13 20:43:22 +00:00
|
|
|
version = "0.99.17"
|
2020-04-19 02:20:43 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2021-12-13 20:43:22 +00:00
|
|
|
checksum = "4fb810d30a7c1953f91334de7244731fc3f3c10d7fe163338a35b9f640960321"
|
2020-04-19 02:20:43 +00:00
|
|
|
dependencies = [
|
2021-05-04 00:44:05 +00:00
|
|
|
"convert_case",
|
2020-05-17 11:16:48 +00:00
|
|
|
"proc-macro2",
|
|
|
|
"quote",
|
2021-12-13 20:43:22 +00:00
|
|
|
"rustc_version 0.4.0",
|
2020-05-17 11:16:48 +00:00
|
|
|
"syn",
|
2020-04-19 02:20:43 +00:00
|
|
|
]
|
|
|
|
|
2020-07-01 08:01:03 +00:00
|
|
|
[[package]]
|
|
|
|
name = "digest"
|
|
|
|
version = "0.9.0"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "d3dd60d1080a57a05ab032377049e0591415d2b31afd7028356dbf3cc6dcb066"
|
|
|
|
dependencies = [
|
2021-07-13 00:48:33 +00:00
|
|
|
"generic-array",
|
2019-12-09 11:39:44 +00:00
|
|
|
]
|
|
|
|
|
2021-12-22 06:17:14 +00:00
|
|
|
[[package]]
|
|
|
|
name = "digest"
|
2022-03-02 05:09:52 +00:00
|
|
|
version = "0.10.3"
|
2021-12-22 06:17:14 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2022-03-02 05:09:52 +00:00
|
|
|
checksum = "f2fb860ca6fafa5552fb6d0e816a69c8e49f0908bf524e30a90d97c85892d506"
|
2021-12-22 06:17:14 +00:00
|
|
|
dependencies = [
|
2022-02-10 04:12:03 +00:00
|
|
|
"block-buffer 0.10.2",
|
2021-12-22 06:17:14 +00:00
|
|
|
"crypto-common",
|
2022-02-10 04:12:03 +00:00
|
|
|
"subtle",
|
2021-12-22 06:17:14 +00:00
|
|
|
]
|
|
|
|
|
2020-09-29 00:02:44 +00:00
|
|
|
[[package]]
|
|
|
|
name = "directory"
|
|
|
|
version = "0.1.0"
|
|
|
|
dependencies = [
|
|
|
|
"clap",
|
|
|
|
"clap_utils",
|
2020-12-08 05:41:10 +00:00
|
|
|
"eth2_network_config",
|
2020-09-29 00:02:44 +00:00
|
|
|
]
|
|
|
|
|
2019-12-09 11:39:44 +00:00
|
|
|
[[package]]
|
|
|
|
name = "dirs"
|
2021-05-04 00:44:05 +00:00
|
|
|
version = "3.0.2"
|
2019-12-09 11:39:44 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2021-05-04 00:44:05 +00:00
|
|
|
checksum = "30baa043103c9d0c2a57cf537cc2f35623889dc0d405e6c3cccfadbc81c71309"
|
2019-12-09 11:39:44 +00:00
|
|
|
dependencies = [
|
2020-05-10 09:56:31 +00:00
|
|
|
"dirs-sys",
|
2019-12-09 11:39:44 +00:00
|
|
|
]
|
|
|
|
|
2020-10-05 08:22:19 +00:00
|
|
|
[[package]]
|
2021-03-02 05:59:49 +00:00
|
|
|
name = "dirs-next"
|
|
|
|
version = "2.0.0"
|
2020-10-05 08:22:19 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2021-03-02 05:59:49 +00:00
|
|
|
checksum = "b98cf8ebf19c3d1b223e151f99a4f9f0690dca41414773390fc824184ac833e1"
|
2020-10-05 08:22:19 +00:00
|
|
|
dependencies = [
|
2021-11-18 05:08:42 +00:00
|
|
|
"cfg-if",
|
2021-03-02 05:59:49 +00:00
|
|
|
"dirs-sys-next",
|
2020-10-05 08:22:19 +00:00
|
|
|
]
|
|
|
|
|
2019-12-09 11:39:44 +00:00
|
|
|
[[package]]
|
|
|
|
name = "dirs-sys"
|
2022-03-31 07:52:23 +00:00
|
|
|
version = "0.3.7"
|
2019-12-09 11:39:44 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2022-03-31 07:52:23 +00:00
|
|
|
checksum = "1b1d1d91c932ef41c0f2663aa8b0ca0342d444d842c06914aa0a7e352d0bada6"
|
2019-12-09 11:39:44 +00:00
|
|
|
dependencies = [
|
2020-05-10 09:56:31 +00:00
|
|
|
"libc",
|
2021-07-05 00:54:17 +00:00
|
|
|
"redox_users",
|
2021-07-09 03:20:24 +00:00
|
|
|
"winapi",
|
2021-03-02 05:59:49 +00:00
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "dirs-sys-next"
|
|
|
|
version = "0.1.2"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "4ebda144c4fe02d1f7ea1a7d9641b6fc6b580adcfa024ae48797ecdeb6825b4d"
|
|
|
|
dependencies = [
|
|
|
|
"libc",
|
2021-07-05 00:54:17 +00:00
|
|
|
"redox_users",
|
2021-07-09 03:20:24 +00:00
|
|
|
"winapi",
|
2019-12-09 11:39:44 +00:00
|
|
|
]
|
|
|
|
|
Handle early blocks (#2155)
## Issue Addressed
NA
## Problem this PR addresses
There's an issue where Lighthouse is banning a lot of peers due to the following sequence of events:
1. Gossip block 0xabc arrives ~200ms early
- It is propagated across the network, with respect to [`MAXIMUM_GOSSIP_CLOCK_DISPARITY`](https://github.com/ethereum/eth2.0-specs/blob/v1.0.0/specs/phase0/p2p-interface.md#why-is-there-maximum_gossip_clock_disparity-when-validating-slot-ranges-of-messages-in-gossip-subnets).
- However, it is not imported to our database since the block is early.
2. Attestations for 0xabc arrive, but the block was not imported.
- The peer that sent the attestation is down-voted.
- Each unknown-block attestation causes a score loss of 1, the peer is banned at -100.
- When the peer is on an attestation subnet there can be hundreds of attestations, so the peer is banned quickly (before the missed block can be obtained via rpc).
## Potential solutions
I can think of three solutions to this:
1. Wait for attestation-queuing (#635) to arrive and solve this.
- Easy
- Not immediate fix.
- Whilst this would work, I don't think it's a perfect solution for this particular issue, rather (3) is better.
1. Allow importing blocks with a tolerance of `MAXIMUM_GOSSIP_CLOCK_DISPARITY`.
- Easy
- ~~I have implemented this, for now.~~
1. If a block is verified for gossip propagation (i.e., signature verified) and it's within `MAXIMUM_GOSSIP_CLOCK_DISPARITY`, then queue it to be processed at the start of the appropriate slot.
- More difficult
- Feels like the best solution, I will try to implement this.
**This PR takes approach (3).**
## Changes included
- Implement the `block_delay_queue`, based upon a [`DelayQueue`](https://docs.rs/tokio-util/0.6.3/tokio_util/time/delay_queue/struct.DelayQueue.html) which can store blocks until it's time to import them.
- Add a new `DelayedImportBlock` variant to the `beacon_processor::WorkEvent` enum to handle this new event.
- In the `BeaconProcessor`, refactor a `tokio::select!` to a struct with an explicit `Stream` implementation. I experienced some issues with `tokio::select!` in the block delay queue and I also found it hard to debug. I think this explicit implementation is nicer and functionally equivalent (apart from the fact that `tokio::select!` randomly chooses futures to poll, whereas now we're deterministic).
- Add a testing framework to the `beacon_processor` module that tests this new block delay logic. I also tested a handful of other operations in the beacon processor (attns, slashings, exits) since it was super easy to copy-pasta the code from the `http_api` tester.
- To implement these tests I added the concept of an optional `work_journal_tx` to the `BeaconProcessor` which will spit out a log of events. I used this in the tests to ensure that things were happening as I expect.
- The tests are a little racey, but it's hard to avoid that when testing timing-based code. If we see CI failures I can revise. I haven't observed *any* failures due to races on my machine or on CI yet.
- To assist with testing I allowed for directly setting the time on the `ManualSlotClock`.
- I gave the `beacon_processor::Worker` a `Toolbox` for two reasons; (a) it avoids changing tons of function sigs when you want to pass a new object to the worker and (b) it seemed cute.
2021-02-24 03:08:52 +00:00
|
|
|
[[package]]
|
|
|
|
name = "discv5"
|
2021-12-22 06:17:14 +00:00
|
|
|
version = "0.1.0-beta.13"
|
2021-10-14 22:09:38 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2021-12-22 06:17:14 +00:00
|
|
|
checksum = "ed8f54486179d5a7f11e1f5526f49d925a411a96c1141a707bd5f071be2ab630"
|
Handle early blocks (#2155)
## Issue Addressed
NA
## Problem this PR addresses
There's an issue where Lighthouse is banning a lot of peers due to the following sequence of events:
1. Gossip block 0xabc arrives ~200ms early
- It is propagated across the network, with respect to [`MAXIMUM_GOSSIP_CLOCK_DISPARITY`](https://github.com/ethereum/eth2.0-specs/blob/v1.0.0/specs/phase0/p2p-interface.md#why-is-there-maximum_gossip_clock_disparity-when-validating-slot-ranges-of-messages-in-gossip-subnets).
- However, it is not imported to our database since the block is early.
2. Attestations for 0xabc arrive, but the block was not imported.
- The peer that sent the attestation is down-voted.
- Each unknown-block attestation causes a score loss of 1, the peer is banned at -100.
- When the peer is on an attestation subnet there can be hundreds of attestations, so the peer is banned quickly (before the missed block can be obtained via rpc).
## Potential solutions
I can think of three solutions to this:
1. Wait for attestation-queuing (#635) to arrive and solve this.
- Easy
- Not immediate fix.
- Whilst this would work, I don't think it's a perfect solution for this particular issue, rather (3) is better.
1. Allow importing blocks with a tolerance of `MAXIMUM_GOSSIP_CLOCK_DISPARITY`.
- Easy
- ~~I have implemented this, for now.~~
1. If a block is verified for gossip propagation (i.e., signature verified) and it's within `MAXIMUM_GOSSIP_CLOCK_DISPARITY`, then queue it to be processed at the start of the appropriate slot.
- More difficult
- Feels like the best solution, I will try to implement this.
**This PR takes approach (3).**
## Changes included
- Implement the `block_delay_queue`, based upon a [`DelayQueue`](https://docs.rs/tokio-util/0.6.3/tokio_util/time/delay_queue/struct.DelayQueue.html) which can store blocks until it's time to import them.
- Add a new `DelayedImportBlock` variant to the `beacon_processor::WorkEvent` enum to handle this new event.
- In the `BeaconProcessor`, refactor a `tokio::select!` to a struct with an explicit `Stream` implementation. I experienced some issues with `tokio::select!` in the block delay queue and I also found it hard to debug. I think this explicit implementation is nicer and functionally equivalent (apart from the fact that `tokio::select!` randomly chooses futures to poll, whereas now we're deterministic).
- Add a testing framework to the `beacon_processor` module that tests this new block delay logic. I also tested a handful of other operations in the beacon processor (attns, slashings, exits) since it was super easy to copy-pasta the code from the `http_api` tester.
- To implement these tests I added the concept of an optional `work_journal_tx` to the `BeaconProcessor` which will spit out a log of events. I used this in the tests to ensure that things were happening as I expect.
- The tests are a little racey, but it's hard to avoid that when testing timing-based code. If we see CI failures I can revise. I haven't observed *any* failures due to races on my machine or on CI yet.
- To assist with testing I allowed for directly setting the time on the `ManualSlotClock`.
- I gave the `beacon_processor::Worker` a `Toolbox` for two reasons; (a) it avoids changing tons of function sigs when you want to pass a new object to the worker and (b) it seemed cute.
2021-02-24 03:08:52 +00:00
|
|
|
dependencies = [
|
2021-06-03 01:11:33 +00:00
|
|
|
"aes",
|
|
|
|
"aes-gcm",
|
2022-04-04 00:26:16 +00:00
|
|
|
"arrayvec",
|
2022-03-02 05:09:52 +00:00
|
|
|
"digest 0.10.3",
|
Handle early blocks (#2155)
## Issue Addressed
NA
## Problem this PR addresses
There's an issue where Lighthouse is banning a lot of peers due to the following sequence of events:
1. Gossip block 0xabc arrives ~200ms early
- It is propagated across the network, with respect to [`MAXIMUM_GOSSIP_CLOCK_DISPARITY`](https://github.com/ethereum/eth2.0-specs/blob/v1.0.0/specs/phase0/p2p-interface.md#why-is-there-maximum_gossip_clock_disparity-when-validating-slot-ranges-of-messages-in-gossip-subnets).
- However, it is not imported to our database since the block is early.
2. Attestations for 0xabc arrive, but the block was not imported.
- The peer that sent the attestation is down-voted.
- Each unknown-block attestation causes a score loss of 1, the peer is banned at -100.
- When the peer is on an attestation subnet there can be hundreds of attestations, so the peer is banned quickly (before the missed block can be obtained via rpc).
## Potential solutions
I can think of three solutions to this:
1. Wait for attestation-queuing (#635) to arrive and solve this.
- Easy
- Not immediate fix.
- Whilst this would work, I don't think it's a perfect solution for this particular issue, rather (3) is better.
1. Allow importing blocks with a tolerance of `MAXIMUM_GOSSIP_CLOCK_DISPARITY`.
- Easy
- ~~I have implemented this, for now.~~
1. If a block is verified for gossip propagation (i.e., signature verified) and it's within `MAXIMUM_GOSSIP_CLOCK_DISPARITY`, then queue it to be processed at the start of the appropriate slot.
- More difficult
- Feels like the best solution, I will try to implement this.
**This PR takes approach (3).**
## Changes included
- Implement the `block_delay_queue`, based upon a [`DelayQueue`](https://docs.rs/tokio-util/0.6.3/tokio_util/time/delay_queue/struct.DelayQueue.html) which can store blocks until it's time to import them.
- Add a new `DelayedImportBlock` variant to the `beacon_processor::WorkEvent` enum to handle this new event.
- In the `BeaconProcessor`, refactor a `tokio::select!` to a struct with an explicit `Stream` implementation. I experienced some issues with `tokio::select!` in the block delay queue and I also found it hard to debug. I think this explicit implementation is nicer and functionally equivalent (apart from the fact that `tokio::select!` randomly chooses futures to poll, whereas now we're deterministic).
- Add a testing framework to the `beacon_processor` module that tests this new block delay logic. I also tested a handful of other operations in the beacon processor (attns, slashings, exits) since it was super easy to copy-pasta the code from the `http_api` tester.
- To implement these tests I added the concept of an optional `work_journal_tx` to the `BeaconProcessor` which will spit out a log of events. I used this in the tests to ensure that things were happening as I expect.
- The tests are a little racey, but it's hard to avoid that when testing timing-based code. If we see CI failures I can revise. I haven't observed *any* failures due to races on my machine or on CI yet.
- To assist with testing I allowed for directly setting the time on the `ManualSlotClock`.
- I gave the `beacon_processor::Worker` a `Toolbox` for two reasons; (a) it avoids changing tons of function sigs when you want to pass a new object to the worker and (b) it seemed cute.
2021-02-24 03:08:52 +00:00
|
|
|
"enr",
|
|
|
|
"fnv",
|
2021-07-09 03:20:24 +00:00
|
|
|
"futures",
|
2021-09-16 04:45:05 +00:00
|
|
|
"hashlink",
|
Handle early blocks (#2155)
## Issue Addressed
NA
## Problem this PR addresses
There's an issue where Lighthouse is banning a lot of peers due to the following sequence of events:
1. Gossip block 0xabc arrives ~200ms early
- It is propagated across the network, with respect to [`MAXIMUM_GOSSIP_CLOCK_DISPARITY`](https://github.com/ethereum/eth2.0-specs/blob/v1.0.0/specs/phase0/p2p-interface.md#why-is-there-maximum_gossip_clock_disparity-when-validating-slot-ranges-of-messages-in-gossip-subnets).
- However, it is not imported to our database since the block is early.
2. Attestations for 0xabc arrive, but the block was not imported.
- The peer that sent the attestation is down-voted.
- Each unknown-block attestation causes a score loss of 1, the peer is banned at -100.
- When the peer is on an attestation subnet there can be hundreds of attestations, so the peer is banned quickly (before the missed block can be obtained via rpc).
## Potential solutions
I can think of three solutions to this:
1. Wait for attestation-queuing (#635) to arrive and solve this.
- Easy
- Not immediate fix.
- Whilst this would work, I don't think it's a perfect solution for this particular issue, rather (3) is better.
1. Allow importing blocks with a tolerance of `MAXIMUM_GOSSIP_CLOCK_DISPARITY`.
- Easy
- ~~I have implemented this, for now.~~
1. If a block is verified for gossip propagation (i.e., signature verified) and it's within `MAXIMUM_GOSSIP_CLOCK_DISPARITY`, then queue it to be processed at the start of the appropriate slot.
- More difficult
- Feels like the best solution, I will try to implement this.
**This PR takes approach (3).**
## Changes included
- Implement the `block_delay_queue`, based upon a [`DelayQueue`](https://docs.rs/tokio-util/0.6.3/tokio_util/time/delay_queue/struct.DelayQueue.html) which can store blocks until it's time to import them.
- Add a new `DelayedImportBlock` variant to the `beacon_processor::WorkEvent` enum to handle this new event.
- In the `BeaconProcessor`, refactor a `tokio::select!` to a struct with an explicit `Stream` implementation. I experienced some issues with `tokio::select!` in the block delay queue and I also found it hard to debug. I think this explicit implementation is nicer and functionally equivalent (apart from the fact that `tokio::select!` randomly chooses futures to poll, whereas now we're deterministic).
- Add a testing framework to the `beacon_processor` module that tests this new block delay logic. I also tested a handful of other operations in the beacon processor (attns, slashings, exits) since it was super easy to copy-pasta the code from the `http_api` tester.
- To implement these tests I added the concept of an optional `work_journal_tx` to the `BeaconProcessor` which will spit out a log of events. I used this in the tests to ensure that things were happening as I expect.
- The tests are a little racey, but it's hard to avoid that when testing timing-based code. If we see CI failures I can revise. I haven't observed *any* failures due to races on my machine or on CI yet.
- To assist with testing I allowed for directly setting the time on the `ManualSlotClock`.
- I gave the `beacon_processor::Worker` a `Toolbox` for two reasons; (a) it avoids changing tons of function sigs when you want to pass a new object to the worker and (b) it seemed cute.
2021-02-24 03:08:52 +00:00
|
|
|
"hex",
|
|
|
|
"hkdf",
|
2020-11-28 05:30:57 +00:00
|
|
|
"lazy_static",
|
2022-02-10 04:12:03 +00:00
|
|
|
"libp2p-core 0.30.2",
|
2021-07-05 00:54:17 +00:00
|
|
|
"lru",
|
2022-03-02 05:09:52 +00:00
|
|
|
"parking_lot 0.11.2",
|
|
|
|
"rand 0.8.5",
|
2022-04-04 00:26:16 +00:00
|
|
|
"rlp",
|
2022-01-11 01:35:56 +00:00
|
|
|
"sha2 0.9.9",
|
2020-12-09 01:34:58 +00:00
|
|
|
"smallvec",
|
2021-08-17 01:00:24 +00:00
|
|
|
"tokio",
|
2021-02-10 23:29:49 +00:00
|
|
|
"tokio-stream",
|
2022-06-18 23:59:43 +00:00
|
|
|
"tokio-util 0.6.10",
|
2020-10-23 04:16:33 +00:00
|
|
|
"tracing",
|
|
|
|
"tracing-subscriber",
|
2022-04-04 00:26:16 +00:00
|
|
|
"uint",
|
2020-05-17 11:16:48 +00:00
|
|
|
"zeroize",
|
2019-12-09 11:39:44 +00:00
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "dtoa"
|
2022-02-07 23:25:03 +00:00
|
|
|
version = "1.0.2"
|
2019-12-09 11:39:44 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2022-02-07 23:25:03 +00:00
|
|
|
checksum = "5caaa75cbd2b960ff1e5392d2cfb1f44717fffe12fc1f32b7b5d1267f99732a6"
|
2019-12-09 11:39:44 +00:00
|
|
|
|
2020-10-23 04:16:33 +00:00
|
|
|
[[package]]
|
|
|
|
name = "ecdsa"
|
2021-07-05 00:54:17 +00:00
|
|
|
version = "0.11.1"
|
2020-10-23 04:16:33 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2021-07-05 00:54:17 +00:00
|
|
|
checksum = "34d33b390ab82f2e1481e331dbd0530895640179d2128ef9a79cc690b78d1eba"
|
2020-10-23 04:16:33 +00:00
|
|
|
dependencies = [
|
Separate execution payloads in the DB (#3157)
## Proposed Changes
Reduce post-merge disk usage by not storing finalized execution payloads in Lighthouse's database.
:warning: **This is achieved in a backwards-incompatible way for networks that have already merged** :warning:. Kiln users and shadow fork enjoyers will be unable to downgrade after running the code from this PR. The upgrade migration may take several minutes to run, and can't be aborted after it begins.
The main changes are:
- New column in the database called `ExecPayload`, keyed by beacon block root.
- The `BeaconBlock` column now stores blinded blocks only.
- Lots of places that previously used full blocks now use blinded blocks, e.g. analytics APIs, block replay in the DB, etc.
- On finalization:
- `prune_abanonded_forks` deletes non-canonical payloads whilst deleting non-canonical blocks.
- `migrate_db` deletes finalized canonical payloads whilst deleting finalized states.
- Conversions between blinded and full blocks are implemented in a compositional way, duplicating some work from Sean's PR #3134.
- The execution layer has a new `get_payload_by_block_hash` method that reconstructs a payload using the EE's `eth_getBlockByHash` call.
- I've tested manually that it works on Kiln, using Geth and Nethermind.
- This isn't necessarily the most efficient method, and new engine APIs are being discussed to improve this: https://github.com/ethereum/execution-apis/pull/146.
- We're depending on the `ethers` master branch, due to lots of recent changes. We're also using a workaround for https://github.com/gakonst/ethers-rs/issues/1134.
- Payload reconstruction is used in the HTTP API via `BeaconChain::get_block`, which is now `async`. Due to the `async` fn, the `blocking_json` wrapper has been removed.
- Payload reconstruction is used in network RPC to serve blocks-by-{root,range} responses. Here the `async` adjustment is messier, although I think I've managed to come up with a reasonable compromise: the handlers take the `SendOnDrop` by value so that they can drop it on _task completion_ (after the `fn` returns). Still, this is introducing disk reads onto core executor threads, which may have a negative performance impact (thoughts appreciated).
## Additional Info
- [x] For performance it would be great to remove the cloning of full blocks when converting them to blinded blocks to write to disk. I'm going to experiment with a `put_block` API that takes the block by value, breaks it into a blinded block and a payload, stores the blinded block, and then re-assembles the full block for the caller.
- [x] We should measure the latency of blocks-by-root and blocks-by-range responses.
- [x] We should add integration tests that stress the payload reconstruction (basic tests done, issue for more extensive tests: https://github.com/sigp/lighthouse/issues/3159)
- [x] We should (manually) test the schema v9 migration from several prior versions, particularly as blocks have changed on disk and some migrations rely on being able to load blocks.
Co-authored-by: Paul Hauner <paul@paulhauner.com>
2022-05-12 00:42:17 +00:00
|
|
|
"der 0.3.5",
|
|
|
|
"elliptic-curve 0.9.12",
|
2021-07-05 00:54:17 +00:00
|
|
|
"hmac 0.11.0",
|
2020-10-23 04:16:33 +00:00
|
|
|
"signature",
|
|
|
|
]
|
|
|
|
|
Separate execution payloads in the DB (#3157)
## Proposed Changes
Reduce post-merge disk usage by not storing finalized execution payloads in Lighthouse's database.
:warning: **This is achieved in a backwards-incompatible way for networks that have already merged** :warning:. Kiln users and shadow fork enjoyers will be unable to downgrade after running the code from this PR. The upgrade migration may take several minutes to run, and can't be aborted after it begins.
The main changes are:
- New column in the database called `ExecPayload`, keyed by beacon block root.
- The `BeaconBlock` column now stores blinded blocks only.
- Lots of places that previously used full blocks now use blinded blocks, e.g. analytics APIs, block replay in the DB, etc.
- On finalization:
- `prune_abanonded_forks` deletes non-canonical payloads whilst deleting non-canonical blocks.
- `migrate_db` deletes finalized canonical payloads whilst deleting finalized states.
- Conversions between blinded and full blocks are implemented in a compositional way, duplicating some work from Sean's PR #3134.
- The execution layer has a new `get_payload_by_block_hash` method that reconstructs a payload using the EE's `eth_getBlockByHash` call.
- I've tested manually that it works on Kiln, using Geth and Nethermind.
- This isn't necessarily the most efficient method, and new engine APIs are being discussed to improve this: https://github.com/ethereum/execution-apis/pull/146.
- We're depending on the `ethers` master branch, due to lots of recent changes. We're also using a workaround for https://github.com/gakonst/ethers-rs/issues/1134.
- Payload reconstruction is used in the HTTP API via `BeaconChain::get_block`, which is now `async`. Due to the `async` fn, the `blocking_json` wrapper has been removed.
- Payload reconstruction is used in network RPC to serve blocks-by-{root,range} responses. Here the `async` adjustment is messier, although I think I've managed to come up with a reasonable compromise: the handlers take the `SendOnDrop` by value so that they can drop it on _task completion_ (after the `fn` returns). Still, this is introducing disk reads onto core executor threads, which may have a negative performance impact (thoughts appreciated).
## Additional Info
- [x] For performance it would be great to remove the cloning of full blocks when converting them to blinded blocks to write to disk. I'm going to experiment with a `put_block` API that takes the block by value, breaks it into a blinded block and a payload, stores the blinded block, and then re-assembles the full block for the caller.
- [x] We should measure the latency of blocks-by-root and blocks-by-range responses.
- [x] We should add integration tests that stress the payload reconstruction (basic tests done, issue for more extensive tests: https://github.com/sigp/lighthouse/issues/3159)
- [x] We should (manually) test the schema v9 migration from several prior versions, particularly as blocks have changed on disk and some migrations rely on being able to load blocks.
Co-authored-by: Paul Hauner <paul@paulhauner.com>
2022-05-12 00:42:17 +00:00
|
|
|
[[package]]
|
|
|
|
name = "ecdsa"
|
|
|
|
version = "0.13.4"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "d0d69ae62e0ce582d56380743515fefaf1a8c70cec685d9677636d7e30ae9dc9"
|
|
|
|
dependencies = [
|
|
|
|
"der 0.5.1",
|
|
|
|
"elliptic-curve 0.11.12",
|
|
|
|
"rfc6979",
|
|
|
|
"signature",
|
|
|
|
]
|
|
|
|
|
2020-07-21 00:54:47 +00:00
|
|
|
[[package]]
|
|
|
|
name = "ed25519"
|
2022-06-18 23:59:43 +00:00
|
|
|
version = "1.5.2"
|
2020-07-21 00:54:47 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2022-06-18 23:59:43 +00:00
|
|
|
checksum = "1e9c280362032ea4203659fc489832d0204ef09f247a0506f170dafcac08c369"
|
2020-07-21 00:54:47 +00:00
|
|
|
dependencies = [
|
|
|
|
"signature",
|
|
|
|
]
|
|
|
|
|
2019-12-09 11:39:44 +00:00
|
|
|
[[package]]
|
|
|
|
name = "ed25519-dalek"
|
2020-09-22 04:45:15 +00:00
|
|
|
version = "1.0.1"
|
2019-12-09 11:39:44 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2020-09-22 04:45:15 +00:00
|
|
|
checksum = "c762bae6dcaf24c4c84667b8579785430908723d5c889f469d76a41d59cc7a9d"
|
2019-12-09 11:39:44 +00:00
|
|
|
dependencies = [
|
2022-02-10 04:12:03 +00:00
|
|
|
"curve25519-dalek 3.2.0",
|
2020-07-21 00:54:47 +00:00
|
|
|
"ed25519",
|
2020-05-10 09:56:31 +00:00
|
|
|
"rand 0.7.3",
|
2020-07-21 00:54:47 +00:00
|
|
|
"serde",
|
2022-01-11 01:35:56 +00:00
|
|
|
"sha2 0.9.9",
|
2020-07-21 00:54:47 +00:00
|
|
|
"zeroize",
|
2019-12-09 11:39:44 +00:00
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "ef_tests"
|
Initial work towards v0.2.0 (#924)
* Remove ping protocol
* Initial renaming of network services
* Correct rebasing relative to latest master
* Start updating types
* Adds HashMapDelay struct to utils
* Initial network restructure
* Network restructure. Adds new types for v0.2.0
* Removes build artefacts
* Shift validation to beacon chain
* Temporarily remove gossip validation
This is to be updated to match current optimisation efforts.
* Adds AggregateAndProof
* Begin rebuilding pubsub encoding/decoding
* Signature hacking
* Shift gossipsup decoding into eth2_libp2p
* Existing EF tests passing with fake_crypto
* Shifts block encoding/decoding into RPC
* Delete outdated API spec
* All release tests passing bar genesis state parsing
* Update and test YamlConfig
* Update to spec v0.10 compatible BLS
* Updates to BLS EF tests
* Add EF test for AggregateVerify
And delete unused hash2curve tests for uncompressed points
* Update EF tests to v0.10.1
* Use optional block root correctly in block proc
* Use genesis fork in deposit domain. All tests pass
* Fast aggregate verify test
* Update REST API docs
* Fix unused import
* Bump spec tags to v0.10.1
* Add `seconds_per_eth1_block` to chainspec
* Update to timestamp based eth1 voting scheme
* Return None from `get_votes_to_consider` if block cache is empty
* Handle overflows in `is_candidate_block`
* Revert to failing tests
* Fix eth1 data sets test
* Choose default vote according to spec
* Fix collect_valid_votes tests
* Fix `get_votes_to_consider` to choose all eligible blocks
* Uncomment winning_vote tests
* Add comments; remove unused code
* Reduce seconds_per_eth1_block for simulation
* Addressed review comments
* Add test for default vote case
* Fix logs
* Remove unused functions
* Meter default eth1 votes
* Fix comments
* Progress on attestation service
* Address review comments; remove unused dependency
* Initial work on removing libp2p lock
* Add LRU caches to store (rollup)
* Update attestation validation for DB changes (WIP)
* Initial version of should_forward_block
* Scaffold
* Progress on attestation validation
Also, consolidate prod+testing slot clocks so that they share much
of the same implementation and can both handle sub-slot time changes.
* Removes lock from libp2p service
* Completed network lock removal
* Finish(?) attestation processing
* Correct network termination future
* Add slot check to block check
* Correct fmt issues
* Remove Drop implementation for network service
* Add first attempt at attestation proc. re-write
* Add version 2 of attestation processing
* Minor fixes
* Add validator pubkey cache
* Make get_indexed_attestation take a committee
* Link signature processing into new attn verification
* First working version
* Ensure pubkey cache is updated
* Add more metrics, slight optimizations
* Clone committee cache during attestation processing
* Update shuffling cache during block processing
* Remove old commented-out code
* Fix shuffling cache insert bug
* Used indexed attestation in fork choice
* Restructure attn processing, add metrics
* Add more detailed metrics
* Tidy, fix failing tests
* Fix failing tests, tidy
* Address reviewers suggestions
* Disable/delete two outdated tests
* Modification of validator for subscriptions
* Add slot signing to validator client
* Further progress on validation subscription
* Adds necessary validator subscription functionality
* Add new Pubkeys struct to signature_sets
* Refactor with functional approach
* Update beacon chain
* Clean up validator <-> beacon node http types
* Add aggregator status to ValidatorDuty
* Impl Clone for manual slot clock
* Fix minor errors
* Further progress validator client subscription
* Initial subscription and aggregation handling
* Remove decompressed member from pubkey bytes
* Progress to modifying val client for attestation aggregation
* First draft of validator client upgrade for aggregate attestations
* Add hashmap for indices lookup
* Add state cache, remove store cache
* Only build the head committee cache
* Removes lock on a network channel
* Partially implement beacon node subscription http api
* Correct compilation issues
* Change `get_attesting_indices` to use Vec
* Fix failing test
* Partial implementation of timer
* Adds timer, removes exit_future, http api to op pool
* Partial multiple aggregate attestation handling
* Permits bulk messages accross gossipsub network channel
* Correct compile issues
* Improve gosispsub messaging and correct rest api helpers
* Added global gossipsub subscriptions
* Update validator subscriptions data structs
* Tidy
* Re-structure validator subscriptions
* Initial handling of subscriptions
* Re-structure network service
* Add pubkey cache persistence file
* Add more comments
* Integrate persistence file into builder
* Add pubkey cache tests
* Add HashSetDelay and introduce into attestation service
* Handles validator subscriptions
* Add data_dir to beacon chain builder
* Remove Option in pubkey cache persistence file
* Ensure consistency between datadir/data_dir
* Fix failing network test
* Peer subnet discovery gets queued for future subscriptions
* Reorganise attestation service functions
* Initial wiring of attestation service
* First draft of attestation service timing logic
* Correct minor typos
* Tidy
* Fix todos
* Improve tests
* Add PeerInfo to connected peers mapping
* Fix compile error
* Fix compile error from merge
* Split up block processing metrics
* Tidy
* Refactor get_pubkey_from_state
* Remove commented-out code
* Rename state_cache -> checkpoint_cache
* Rename Checkpoint -> Snapshot
* Tidy, add comments
* Tidy up find_head function
* Change some checkpoint -> snapshot
* Add tests
* Expose max_len
* Remove dead code
* Tidy
* Fix bug
* Add sync-speed metric
* Add first attempt at VerifiableBlock
* Start integrating into beacon chain
* Integrate VerifiableBlock
* Rename VerifableBlock -> PartialBlockVerification
* Add start of typed methods
* Add progress
* Add further progress
* Rename structs
* Add full block verification to block_processing.rs
* Further beacon chain integration
* Update checks for gossip
* Add todo
* Start adding segement verification
* Add passing chain segement test
* Initial integration with batch sync
* Minor changes
* Tidy, add more error checking
* Start adding chain_segment tests
* Finish invalid signature tests
* Include single and gossip verified blocks in tests
* Add gossip verification tests
* Start adding docs
* Finish adding comments to block_processing.rs
* Rename block_processing.rs -> block_verification
* Start removing old block processing code
* Fixes beacon_chain compilation
* Fix project-wide compile errors
* Remove old code
* Correct code to pass all tests
* Fix bug with beacon proposer index
* Fix shim for BlockProcessingError
* Only process one epoch at a time
* Fix loop in chain segment processing
* Correct tests from master merge
* Add caching for state.eth1_data_votes
* Add BeaconChain::validator_pubkey
* Revert "Add caching for state.eth1_data_votes"
This reverts commit cd73dcd6434fb8d8e6bf30c5356355598ea7b78e.
Co-authored-by: Grant Wuerker <gwuerker@gmail.com>
Co-authored-by: Michael Sproul <michael@sigmaprime.io>
Co-authored-by: Michael Sproul <micsproul@gmail.com>
Co-authored-by: pawan <pawandhananjay@gmail.com>
Co-authored-by: Paul Hauner <paul@paulhauner.com>
2020-03-17 06:24:44 +00:00
|
|
|
version = "0.2.0"
|
2019-12-09 11:39:44 +00:00
|
|
|
dependencies = [
|
2021-11-08 07:29:04 +00:00
|
|
|
"beacon_chain",
|
2020-05-10 09:56:31 +00:00
|
|
|
"bls",
|
|
|
|
"cached_tree_hash",
|
|
|
|
"compare_fields",
|
2021-07-09 06:15:32 +00:00
|
|
|
"compare_fields_derive",
|
|
|
|
"derivative",
|
2021-11-29 03:57:54 +00:00
|
|
|
"eth2_ssz",
|
2022-03-31 07:52:23 +00:00
|
|
|
"eth2_ssz_derive",
|
Separate execution payloads in the DB (#3157)
## Proposed Changes
Reduce post-merge disk usage by not storing finalized execution payloads in Lighthouse's database.
:warning: **This is achieved in a backwards-incompatible way for networks that have already merged** :warning:. Kiln users and shadow fork enjoyers will be unable to downgrade after running the code from this PR. The upgrade migration may take several minutes to run, and can't be aborted after it begins.
The main changes are:
- New column in the database called `ExecPayload`, keyed by beacon block root.
- The `BeaconBlock` column now stores blinded blocks only.
- Lots of places that previously used full blocks now use blinded blocks, e.g. analytics APIs, block replay in the DB, etc.
- On finalization:
- `prune_abanonded_forks` deletes non-canonical payloads whilst deleting non-canonical blocks.
- `migrate_db` deletes finalized canonical payloads whilst deleting finalized states.
- Conversions between blinded and full blocks are implemented in a compositional way, duplicating some work from Sean's PR #3134.
- The execution layer has a new `get_payload_by_block_hash` method that reconstructs a payload using the EE's `eth_getBlockByHash` call.
- I've tested manually that it works on Kiln, using Geth and Nethermind.
- This isn't necessarily the most efficient method, and new engine APIs are being discussed to improve this: https://github.com/ethereum/execution-apis/pull/146.
- We're depending on the `ethers` master branch, due to lots of recent changes. We're also using a workaround for https://github.com/gakonst/ethers-rs/issues/1134.
- Payload reconstruction is used in the HTTP API via `BeaconChain::get_block`, which is now `async`. Due to the `async` fn, the `blocking_json` wrapper has been removed.
- Payload reconstruction is used in network RPC to serve blocks-by-{root,range} responses. Here the `async` adjustment is messier, although I think I've managed to come up with a reasonable compromise: the handlers take the `SendOnDrop` by value so that they can drop it on _task completion_ (after the `fn` returns). Still, this is introducing disk reads onto core executor threads, which may have a negative performance impact (thoughts appreciated).
## Additional Info
- [x] For performance it would be great to remove the cloning of full blocks when converting them to blinded blocks to write to disk. I'm going to experiment with a `put_block` API that takes the block by value, breaks it into a blinded block and a payload, stores the blinded block, and then re-assembles the full block for the caller.
- [x] We should measure the latency of blocks-by-root and blocks-by-range responses.
- [x] We should add integration tests that stress the payload reconstruction (basic tests done, issue for more extensive tests: https://github.com/sigp/lighthouse/issues/3159)
- [x] We should (manually) test the schema v9 migration from several prior versions, particularly as blocks have changed on disk and some migrations rely on being able to load blocks.
Co-authored-by: Paul Hauner <paul@paulhauner.com>
2022-05-12 00:42:17 +00:00
|
|
|
"ethereum-types 0.12.1",
|
2021-11-16 00:46:12 +00:00
|
|
|
"fork_choice",
|
2021-07-09 06:15:32 +00:00
|
|
|
"fs2",
|
2020-10-28 22:19:38 +00:00
|
|
|
"hex",
|
2020-05-10 09:56:31 +00:00
|
|
|
"rayon",
|
|
|
|
"serde",
|
|
|
|
"serde_derive",
|
|
|
|
"serde_repr",
|
|
|
|
"serde_yaml",
|
2021-07-09 06:15:32 +00:00
|
|
|
"snap",
|
2020-05-10 09:56:31 +00:00
|
|
|
"state_processing",
|
2021-11-08 07:29:04 +00:00
|
|
|
"store",
|
2020-05-10 09:56:31 +00:00
|
|
|
"swap_or_not_shuffle",
|
2021-11-29 03:57:54 +00:00
|
|
|
"tree_hash",
|
2022-03-31 07:52:23 +00:00
|
|
|
"tree_hash_derive",
|
2020-05-10 09:56:31 +00:00
|
|
|
"types",
|
2019-12-09 11:39:44 +00:00
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "either"
|
2022-07-05 23:36:42 +00:00
|
|
|
version = "1.7.0"
|
2019-12-09 11:39:44 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2022-07-05 23:36:42 +00:00
|
|
|
checksum = "3f107b87b6afc2a64fd13cac55fe06d6c8859f12d4b14cbcdd2c67d0976781be"
|
2019-12-09 11:39:44 +00:00
|
|
|
|
2020-10-23 04:16:33 +00:00
|
|
|
[[package]]
|
|
|
|
name = "elliptic-curve"
|
2021-07-05 00:54:17 +00:00
|
|
|
version = "0.9.12"
|
2020-10-23 04:16:33 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2021-07-05 00:54:17 +00:00
|
|
|
checksum = "c13e9b0c3c4170dcc2a12783746c4205d98e18957f57854251eea3f9750fe005"
|
2020-10-23 04:16:33 +00:00
|
|
|
dependencies = [
|
Separate execution payloads in the DB (#3157)
## Proposed Changes
Reduce post-merge disk usage by not storing finalized execution payloads in Lighthouse's database.
:warning: **This is achieved in a backwards-incompatible way for networks that have already merged** :warning:. Kiln users and shadow fork enjoyers will be unable to downgrade after running the code from this PR. The upgrade migration may take several minutes to run, and can't be aborted after it begins.
The main changes are:
- New column in the database called `ExecPayload`, keyed by beacon block root.
- The `BeaconBlock` column now stores blinded blocks only.
- Lots of places that previously used full blocks now use blinded blocks, e.g. analytics APIs, block replay in the DB, etc.
- On finalization:
- `prune_abanonded_forks` deletes non-canonical payloads whilst deleting non-canonical blocks.
- `migrate_db` deletes finalized canonical payloads whilst deleting finalized states.
- Conversions between blinded and full blocks are implemented in a compositional way, duplicating some work from Sean's PR #3134.
- The execution layer has a new `get_payload_by_block_hash` method that reconstructs a payload using the EE's `eth_getBlockByHash` call.
- I've tested manually that it works on Kiln, using Geth and Nethermind.
- This isn't necessarily the most efficient method, and new engine APIs are being discussed to improve this: https://github.com/ethereum/execution-apis/pull/146.
- We're depending on the `ethers` master branch, due to lots of recent changes. We're also using a workaround for https://github.com/gakonst/ethers-rs/issues/1134.
- Payload reconstruction is used in the HTTP API via `BeaconChain::get_block`, which is now `async`. Due to the `async` fn, the `blocking_json` wrapper has been removed.
- Payload reconstruction is used in network RPC to serve blocks-by-{root,range} responses. Here the `async` adjustment is messier, although I think I've managed to come up with a reasonable compromise: the handlers take the `SendOnDrop` by value so that they can drop it on _task completion_ (after the `fn` returns). Still, this is introducing disk reads onto core executor threads, which may have a negative performance impact (thoughts appreciated).
## Additional Info
- [x] For performance it would be great to remove the cloning of full blocks when converting them to blinded blocks to write to disk. I'm going to experiment with a `put_block` API that takes the block by value, breaks it into a blinded block and a payload, stores the blinded block, and then re-assembles the full block for the caller.
- [x] We should measure the latency of blocks-by-root and blocks-by-range responses.
- [x] We should add integration tests that stress the payload reconstruction (basic tests done, issue for more extensive tests: https://github.com/sigp/lighthouse/issues/3159)
- [x] We should (manually) test the schema v9 migration from several prior versions, particularly as blocks have changed on disk and some migrations rely on being able to load blocks.
Co-authored-by: Paul Hauner <paul@paulhauner.com>
2022-05-12 00:42:17 +00:00
|
|
|
"bitvec 0.20.4",
|
|
|
|
"ff 0.9.0",
|
2021-07-13 00:48:33 +00:00
|
|
|
"generic-array",
|
Separate execution payloads in the DB (#3157)
## Proposed Changes
Reduce post-merge disk usage by not storing finalized execution payloads in Lighthouse's database.
:warning: **This is achieved in a backwards-incompatible way for networks that have already merged** :warning:. Kiln users and shadow fork enjoyers will be unable to downgrade after running the code from this PR. The upgrade migration may take several minutes to run, and can't be aborted after it begins.
The main changes are:
- New column in the database called `ExecPayload`, keyed by beacon block root.
- The `BeaconBlock` column now stores blinded blocks only.
- Lots of places that previously used full blocks now use blinded blocks, e.g. analytics APIs, block replay in the DB, etc.
- On finalization:
- `prune_abanonded_forks` deletes non-canonical payloads whilst deleting non-canonical blocks.
- `migrate_db` deletes finalized canonical payloads whilst deleting finalized states.
- Conversions between blinded and full blocks are implemented in a compositional way, duplicating some work from Sean's PR #3134.
- The execution layer has a new `get_payload_by_block_hash` method that reconstructs a payload using the EE's `eth_getBlockByHash` call.
- I've tested manually that it works on Kiln, using Geth and Nethermind.
- This isn't necessarily the most efficient method, and new engine APIs are being discussed to improve this: https://github.com/ethereum/execution-apis/pull/146.
- We're depending on the `ethers` master branch, due to lots of recent changes. We're also using a workaround for https://github.com/gakonst/ethers-rs/issues/1134.
- Payload reconstruction is used in the HTTP API via `BeaconChain::get_block`, which is now `async`. Due to the `async` fn, the `blocking_json` wrapper has been removed.
- Payload reconstruction is used in network RPC to serve blocks-by-{root,range} responses. Here the `async` adjustment is messier, although I think I've managed to come up with a reasonable compromise: the handlers take the `SendOnDrop` by value so that they can drop it on _task completion_ (after the `fn` returns). Still, this is introducing disk reads onto core executor threads, which may have a negative performance impact (thoughts appreciated).
## Additional Info
- [x] For performance it would be great to remove the cloning of full blocks when converting them to blinded blocks to write to disk. I'm going to experiment with a `put_block` API that takes the block by value, breaks it into a blinded block and a payload, stores the blinded block, and then re-assembles the full block for the caller.
- [x] We should measure the latency of blocks-by-root and blocks-by-range responses.
- [x] We should add integration tests that stress the payload reconstruction (basic tests done, issue for more extensive tests: https://github.com/sigp/lighthouse/issues/3159)
- [x] We should (manually) test the schema v9 migration from several prior versions, particularly as blocks have changed on disk and some migrations rely on being able to load blocks.
Co-authored-by: Paul Hauner <paul@paulhauner.com>
2022-05-12 00:42:17 +00:00
|
|
|
"group 0.9.0",
|
|
|
|
"pkcs8 0.6.1",
|
2021-07-05 00:54:17 +00:00
|
|
|
"rand_core 0.6.3",
|
2021-07-13 00:48:33 +00:00
|
|
|
"subtle",
|
2020-10-23 04:16:33 +00:00
|
|
|
"zeroize",
|
|
|
|
]
|
|
|
|
|
Separate execution payloads in the DB (#3157)
## Proposed Changes
Reduce post-merge disk usage by not storing finalized execution payloads in Lighthouse's database.
:warning: **This is achieved in a backwards-incompatible way for networks that have already merged** :warning:. Kiln users and shadow fork enjoyers will be unable to downgrade after running the code from this PR. The upgrade migration may take several minutes to run, and can't be aborted after it begins.
The main changes are:
- New column in the database called `ExecPayload`, keyed by beacon block root.
- The `BeaconBlock` column now stores blinded blocks only.
- Lots of places that previously used full blocks now use blinded blocks, e.g. analytics APIs, block replay in the DB, etc.
- On finalization:
- `prune_abanonded_forks` deletes non-canonical payloads whilst deleting non-canonical blocks.
- `migrate_db` deletes finalized canonical payloads whilst deleting finalized states.
- Conversions between blinded and full blocks are implemented in a compositional way, duplicating some work from Sean's PR #3134.
- The execution layer has a new `get_payload_by_block_hash` method that reconstructs a payload using the EE's `eth_getBlockByHash` call.
- I've tested manually that it works on Kiln, using Geth and Nethermind.
- This isn't necessarily the most efficient method, and new engine APIs are being discussed to improve this: https://github.com/ethereum/execution-apis/pull/146.
- We're depending on the `ethers` master branch, due to lots of recent changes. We're also using a workaround for https://github.com/gakonst/ethers-rs/issues/1134.
- Payload reconstruction is used in the HTTP API via `BeaconChain::get_block`, which is now `async`. Due to the `async` fn, the `blocking_json` wrapper has been removed.
- Payload reconstruction is used in network RPC to serve blocks-by-{root,range} responses. Here the `async` adjustment is messier, although I think I've managed to come up with a reasonable compromise: the handlers take the `SendOnDrop` by value so that they can drop it on _task completion_ (after the `fn` returns). Still, this is introducing disk reads onto core executor threads, which may have a negative performance impact (thoughts appreciated).
## Additional Info
- [x] For performance it would be great to remove the cloning of full blocks when converting them to blinded blocks to write to disk. I'm going to experiment with a `put_block` API that takes the block by value, breaks it into a blinded block and a payload, stores the blinded block, and then re-assembles the full block for the caller.
- [x] We should measure the latency of blocks-by-root and blocks-by-range responses.
- [x] We should add integration tests that stress the payload reconstruction (basic tests done, issue for more extensive tests: https://github.com/sigp/lighthouse/issues/3159)
- [x] We should (manually) test the schema v9 migration from several prior versions, particularly as blocks have changed on disk and some migrations rely on being able to load blocks.
Co-authored-by: Paul Hauner <paul@paulhauner.com>
2022-05-12 00:42:17 +00:00
|
|
|
[[package]]
|
|
|
|
name = "elliptic-curve"
|
|
|
|
version = "0.11.12"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "25b477563c2bfed38a3b7a60964c49e058b2510ad3f12ba3483fd8f62c2306d6"
|
|
|
|
dependencies = [
|
|
|
|
"base16ct",
|
|
|
|
"crypto-bigint",
|
|
|
|
"der 0.5.1",
|
2022-06-18 23:59:43 +00:00
|
|
|
"ff 0.11.1",
|
Separate execution payloads in the DB (#3157)
## Proposed Changes
Reduce post-merge disk usage by not storing finalized execution payloads in Lighthouse's database.
:warning: **This is achieved in a backwards-incompatible way for networks that have already merged** :warning:. Kiln users and shadow fork enjoyers will be unable to downgrade after running the code from this PR. The upgrade migration may take several minutes to run, and can't be aborted after it begins.
The main changes are:
- New column in the database called `ExecPayload`, keyed by beacon block root.
- The `BeaconBlock` column now stores blinded blocks only.
- Lots of places that previously used full blocks now use blinded blocks, e.g. analytics APIs, block replay in the DB, etc.
- On finalization:
- `prune_abanonded_forks` deletes non-canonical payloads whilst deleting non-canonical blocks.
- `migrate_db` deletes finalized canonical payloads whilst deleting finalized states.
- Conversions between blinded and full blocks are implemented in a compositional way, duplicating some work from Sean's PR #3134.
- The execution layer has a new `get_payload_by_block_hash` method that reconstructs a payload using the EE's `eth_getBlockByHash` call.
- I've tested manually that it works on Kiln, using Geth and Nethermind.
- This isn't necessarily the most efficient method, and new engine APIs are being discussed to improve this: https://github.com/ethereum/execution-apis/pull/146.
- We're depending on the `ethers` master branch, due to lots of recent changes. We're also using a workaround for https://github.com/gakonst/ethers-rs/issues/1134.
- Payload reconstruction is used in the HTTP API via `BeaconChain::get_block`, which is now `async`. Due to the `async` fn, the `blocking_json` wrapper has been removed.
- Payload reconstruction is used in network RPC to serve blocks-by-{root,range} responses. Here the `async` adjustment is messier, although I think I've managed to come up with a reasonable compromise: the handlers take the `SendOnDrop` by value so that they can drop it on _task completion_ (after the `fn` returns). Still, this is introducing disk reads onto core executor threads, which may have a negative performance impact (thoughts appreciated).
## Additional Info
- [x] For performance it would be great to remove the cloning of full blocks when converting them to blinded blocks to write to disk. I'm going to experiment with a `put_block` API that takes the block by value, breaks it into a blinded block and a payload, stores the blinded block, and then re-assembles the full block for the caller.
- [x] We should measure the latency of blocks-by-root and blocks-by-range responses.
- [x] We should add integration tests that stress the payload reconstruction (basic tests done, issue for more extensive tests: https://github.com/sigp/lighthouse/issues/3159)
- [x] We should (manually) test the schema v9 migration from several prior versions, particularly as blocks have changed on disk and some migrations rely on being able to load blocks.
Co-authored-by: Paul Hauner <paul@paulhauner.com>
2022-05-12 00:42:17 +00:00
|
|
|
"generic-array",
|
|
|
|
"group 0.11.0",
|
|
|
|
"rand_core 0.6.3",
|
|
|
|
"sec1",
|
|
|
|
"subtle",
|
|
|
|
"zeroize",
|
|
|
|
]
|
|
|
|
|
2019-12-09 11:39:44 +00:00
|
|
|
[[package]]
|
|
|
|
name = "encoding_rs"
|
2022-06-18 23:59:43 +00:00
|
|
|
version = "0.8.31"
|
2019-12-09 11:39:44 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2022-06-18 23:59:43 +00:00
|
|
|
checksum = "9852635589dc9f9ea1b6fe9f05b50ef208c85c834a562f0c6abb1c475736ec2b"
|
2019-12-09 11:39:44 +00:00
|
|
|
dependencies = [
|
2021-11-18 05:08:42 +00:00
|
|
|
"cfg-if",
|
2019-12-09 11:39:44 +00:00
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "enr"
|
2021-07-05 00:54:17 +00:00
|
|
|
version = "0.5.1"
|
2020-05-17 11:16:48 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2021-07-05 00:54:17 +00:00
|
|
|
checksum = "809869a1328bfb586b48c9c0f87761c47c41793a85bcb06f66074a87cafc1bcd"
|
2019-12-09 11:39:44 +00:00
|
|
|
dependencies = [
|
2022-04-04 00:26:16 +00:00
|
|
|
"base64",
|
2021-07-05 00:54:17 +00:00
|
|
|
"bs58",
|
2021-10-29 01:59:29 +00:00
|
|
|
"bytes",
|
2020-05-10 09:56:31 +00:00
|
|
|
"ed25519-dalek",
|
2020-10-28 22:19:38 +00:00
|
|
|
"hex",
|
Separate execution payloads in the DB (#3157)
## Proposed Changes
Reduce post-merge disk usage by not storing finalized execution payloads in Lighthouse's database.
:warning: **This is achieved in a backwards-incompatible way for networks that have already merged** :warning:. Kiln users and shadow fork enjoyers will be unable to downgrade after running the code from this PR. The upgrade migration may take several minutes to run, and can't be aborted after it begins.
The main changes are:
- New column in the database called `ExecPayload`, keyed by beacon block root.
- The `BeaconBlock` column now stores blinded blocks only.
- Lots of places that previously used full blocks now use blinded blocks, e.g. analytics APIs, block replay in the DB, etc.
- On finalization:
- `prune_abanonded_forks` deletes non-canonical payloads whilst deleting non-canonical blocks.
- `migrate_db` deletes finalized canonical payloads whilst deleting finalized states.
- Conversions between blinded and full blocks are implemented in a compositional way, duplicating some work from Sean's PR #3134.
- The execution layer has a new `get_payload_by_block_hash` method that reconstructs a payload using the EE's `eth_getBlockByHash` call.
- I've tested manually that it works on Kiln, using Geth and Nethermind.
- This isn't necessarily the most efficient method, and new engine APIs are being discussed to improve this: https://github.com/ethereum/execution-apis/pull/146.
- We're depending on the `ethers` master branch, due to lots of recent changes. We're also using a workaround for https://github.com/gakonst/ethers-rs/issues/1134.
- Payload reconstruction is used in the HTTP API via `BeaconChain::get_block`, which is now `async`. Due to the `async` fn, the `blocking_json` wrapper has been removed.
- Payload reconstruction is used in network RPC to serve blocks-by-{root,range} responses. Here the `async` adjustment is messier, although I think I've managed to come up with a reasonable compromise: the handlers take the `SendOnDrop` by value so that they can drop it on _task completion_ (after the `fn` returns). Still, this is introducing disk reads onto core executor threads, which may have a negative performance impact (thoughts appreciated).
## Additional Info
- [x] For performance it would be great to remove the cloning of full blocks when converting them to blinded blocks to write to disk. I'm going to experiment with a `put_block` API that takes the block by value, breaks it into a blinded block and a payload, stores the blinded block, and then re-assembles the full block for the caller.
- [x] We should measure the latency of blocks-by-root and blocks-by-range responses.
- [x] We should add integration tests that stress the payload reconstruction (basic tests done, issue for more extensive tests: https://github.com/sigp/lighthouse/issues/3159)
- [x] We should (manually) test the schema v9 migration from several prior versions, particularly as blocks have changed on disk and some migrations rely on being able to load blocks.
Co-authored-by: Paul Hauner <paul@paulhauner.com>
2022-05-12 00:42:17 +00:00
|
|
|
"k256 0.8.1",
|
2020-12-09 01:34:58 +00:00
|
|
|
"log",
|
2022-03-02 05:09:52 +00:00
|
|
|
"rand 0.8.5",
|
2022-04-04 00:26:16 +00:00
|
|
|
"rlp",
|
2020-05-10 09:56:31 +00:00
|
|
|
"serde",
|
Separate execution payloads in the DB (#3157)
## Proposed Changes
Reduce post-merge disk usage by not storing finalized execution payloads in Lighthouse's database.
:warning: **This is achieved in a backwards-incompatible way for networks that have already merged** :warning:. Kiln users and shadow fork enjoyers will be unable to downgrade after running the code from this PR. The upgrade migration may take several minutes to run, and can't be aborted after it begins.
The main changes are:
- New column in the database called `ExecPayload`, keyed by beacon block root.
- The `BeaconBlock` column now stores blinded blocks only.
- Lots of places that previously used full blocks now use blinded blocks, e.g. analytics APIs, block replay in the DB, etc.
- On finalization:
- `prune_abanonded_forks` deletes non-canonical payloads whilst deleting non-canonical blocks.
- `migrate_db` deletes finalized canonical payloads whilst deleting finalized states.
- Conversions between blinded and full blocks are implemented in a compositional way, duplicating some work from Sean's PR #3134.
- The execution layer has a new `get_payload_by_block_hash` method that reconstructs a payload using the EE's `eth_getBlockByHash` call.
- I've tested manually that it works on Kiln, using Geth and Nethermind.
- This isn't necessarily the most efficient method, and new engine APIs are being discussed to improve this: https://github.com/ethereum/execution-apis/pull/146.
- We're depending on the `ethers` master branch, due to lots of recent changes. We're also using a workaround for https://github.com/gakonst/ethers-rs/issues/1134.
- Payload reconstruction is used in the HTTP API via `BeaconChain::get_block`, which is now `async`. Due to the `async` fn, the `blocking_json` wrapper has been removed.
- Payload reconstruction is used in network RPC to serve blocks-by-{root,range} responses. Here the `async` adjustment is messier, although I think I've managed to come up with a reasonable compromise: the handlers take the `SendOnDrop` by value so that they can drop it on _task completion_ (after the `fn` returns). Still, this is introducing disk reads onto core executor threads, which may have a negative performance impact (thoughts appreciated).
## Additional Info
- [x] For performance it would be great to remove the cloning of full blocks when converting them to blinded blocks to write to disk. I'm going to experiment with a `put_block` API that takes the block by value, breaks it into a blinded block and a payload, stores the blinded block, and then re-assembles the full block for the caller.
- [x] We should measure the latency of blocks-by-root and blocks-by-range responses.
- [x] We should add integration tests that stress the payload reconstruction (basic tests done, issue for more extensive tests: https://github.com/sigp/lighthouse/issues/3159)
- [x] We should (manually) test the schema v9 migration from several prior versions, particularly as blocks have changed on disk and some migrations rely on being able to load blocks.
Co-authored-by: Paul Hauner <paul@paulhauner.com>
2022-05-12 00:42:17 +00:00
|
|
|
"sha3 0.9.1",
|
2020-05-17 11:16:48 +00:00
|
|
|
"zeroize",
|
2019-12-09 11:39:44 +00:00
|
|
|
]
|
|
|
|
|
2021-06-03 01:11:33 +00:00
|
|
|
[[package]]
|
|
|
|
name = "enum-as-inner"
|
2022-06-07 02:35:55 +00:00
|
|
|
version = "0.4.0"
|
2021-06-03 01:11:33 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2022-06-07 02:35:55 +00:00
|
|
|
checksum = "21cdad81446a7f7dc43f6a77409efeb9733d2fa65553efef6018ef257c959b73"
|
2021-06-03 01:11:33 +00:00
|
|
|
dependencies = [
|
2022-03-14 23:11:40 +00:00
|
|
|
"heck 0.4.0",
|
2021-06-03 01:11:33 +00:00
|
|
|
"proc-macro2",
|
|
|
|
"quote",
|
|
|
|
"syn",
|
|
|
|
]
|
|
|
|
|
2019-12-09 11:39:44 +00:00
|
|
|
[[package]]
|
|
|
|
name = "env_logger"
|
|
|
|
version = "0.7.1"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2020-05-10 09:56:31 +00:00
|
|
|
checksum = "44533bbbb3bb3c1fa17d9f2e4e38bbbaf8396ba82193c4cb1b6445d711445d36"
|
2020-12-07 08:20:33 +00:00
|
|
|
dependencies = [
|
2020-12-09 01:34:58 +00:00
|
|
|
"log",
|
2020-12-07 08:20:33 +00:00
|
|
|
"regex",
|
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "env_logger"
|
2021-08-17 01:00:24 +00:00
|
|
|
version = "0.9.0"
|
2020-12-07 08:20:33 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2021-08-17 01:00:24 +00:00
|
|
|
checksum = "0b2cf0344971ee6c64c31be0d530793fba457d322dfec2810c453d0ef228f9c3"
|
2019-12-09 11:39:44 +00:00
|
|
|
dependencies = [
|
2020-05-10 09:56:31 +00:00
|
|
|
"atty",
|
|
|
|
"humantime",
|
2020-12-09 01:34:58 +00:00
|
|
|
"log",
|
2020-05-10 09:56:31 +00:00
|
|
|
"regex",
|
|
|
|
"termcolor",
|
2019-12-09 11:39:44 +00:00
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "environment"
|
2020-05-18 05:05:23 +00:00
|
|
|
version = "0.1.2"
|
2019-12-09 11:39:44 +00:00
|
|
|
dependencies = [
|
2020-05-10 09:56:31 +00:00
|
|
|
"ctrlc",
|
|
|
|
"eth2_config",
|
2020-12-08 05:41:10 +00:00
|
|
|
"eth2_network_config",
|
2020-06-04 11:48:05 +00:00
|
|
|
"exit-future",
|
2021-07-09 03:20:24 +00:00
|
|
|
"futures",
|
2020-05-10 09:56:31 +00:00
|
|
|
"logging",
|
|
|
|
"slog",
|
|
|
|
"slog-async",
|
|
|
|
"slog-json",
|
|
|
|
"slog-term",
|
2021-09-14 06:48:26 +00:00
|
|
|
"sloggers",
|
2020-10-05 07:45:54 +00:00
|
|
|
"task_executor",
|
2021-08-17 01:00:24 +00:00
|
|
|
"tokio",
|
2020-05-10 09:56:31 +00:00
|
|
|
"types",
|
2019-12-09 11:39:44 +00:00
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "error-chain"
|
2020-08-03 09:35:53 +00:00
|
|
|
version = "0.12.4"
|
2019-12-09 11:39:44 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2020-08-03 09:35:53 +00:00
|
|
|
checksum = "2d2f06b9cac1506ece98fe3231e3cc9c4410ec3d5b1f24ae1c8946f0742cdefc"
|
2019-12-09 11:39:44 +00:00
|
|
|
dependencies = [
|
2020-05-10 09:56:31 +00:00
|
|
|
"backtrace",
|
2020-12-09 01:34:58 +00:00
|
|
|
"version_check",
|
2019-12-09 11:39:44 +00:00
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "eth1"
|
2020-08-06 03:43:05 +00:00
|
|
|
version = "0.2.0"
|
2019-12-09 11:39:44 +00:00
|
|
|
dependencies = [
|
2020-05-10 09:56:31 +00:00
|
|
|
"environment",
|
|
|
|
"eth1_test_rig",
|
2020-11-02 00:37:30 +00:00
|
|
|
"eth2",
|
2021-11-29 03:57:54 +00:00
|
|
|
"eth2_ssz",
|
2022-03-31 07:52:23 +00:00
|
|
|
"eth2_ssz_derive",
|
2022-06-29 09:07:09 +00:00
|
|
|
"execution_layer",
|
2020-11-27 08:37:44 +00:00
|
|
|
"fallback",
|
2021-07-09 03:20:24 +00:00
|
|
|
"futures",
|
2020-10-28 22:19:38 +00:00
|
|
|
"hex",
|
2020-05-10 09:56:31 +00:00
|
|
|
"lazy_static",
|
|
|
|
"lighthouse_metrics",
|
|
|
|
"merkle_proof",
|
2022-06-18 23:59:43 +00:00
|
|
|
"parking_lot 0.12.1",
|
2020-05-10 09:56:31 +00:00
|
|
|
"reqwest",
|
2021-05-04 01:59:51 +00:00
|
|
|
"sensitive_url",
|
2020-05-10 09:56:31 +00:00
|
|
|
"serde",
|
|
|
|
"serde_json",
|
2022-06-29 09:07:09 +00:00
|
|
|
"serde_yaml",
|
2020-05-10 09:56:31 +00:00
|
|
|
"slog",
|
2021-09-14 06:48:26 +00:00
|
|
|
"sloggers",
|
2020-05-10 09:56:31 +00:00
|
|
|
"state_processing",
|
2020-10-05 07:45:54 +00:00
|
|
|
"task_executor",
|
2021-08-17 01:00:24 +00:00
|
|
|
"tokio",
|
2021-11-29 03:57:54 +00:00
|
|
|
"tree_hash",
|
2020-05-10 09:56:31 +00:00
|
|
|
"types",
|
|
|
|
"web3",
|
2019-12-09 11:39:44 +00:00
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "eth1_test_rig"
|
Initial work towards v0.2.0 (#924)
* Remove ping protocol
* Initial renaming of network services
* Correct rebasing relative to latest master
* Start updating types
* Adds HashMapDelay struct to utils
* Initial network restructure
* Network restructure. Adds new types for v0.2.0
* Removes build artefacts
* Shift validation to beacon chain
* Temporarily remove gossip validation
This is to be updated to match current optimisation efforts.
* Adds AggregateAndProof
* Begin rebuilding pubsub encoding/decoding
* Signature hacking
* Shift gossipsup decoding into eth2_libp2p
* Existing EF tests passing with fake_crypto
* Shifts block encoding/decoding into RPC
* Delete outdated API spec
* All release tests passing bar genesis state parsing
* Update and test YamlConfig
* Update to spec v0.10 compatible BLS
* Updates to BLS EF tests
* Add EF test for AggregateVerify
And delete unused hash2curve tests for uncompressed points
* Update EF tests to v0.10.1
* Use optional block root correctly in block proc
* Use genesis fork in deposit domain. All tests pass
* Fast aggregate verify test
* Update REST API docs
* Fix unused import
* Bump spec tags to v0.10.1
* Add `seconds_per_eth1_block` to chainspec
* Update to timestamp based eth1 voting scheme
* Return None from `get_votes_to_consider` if block cache is empty
* Handle overflows in `is_candidate_block`
* Revert to failing tests
* Fix eth1 data sets test
* Choose default vote according to spec
* Fix collect_valid_votes tests
* Fix `get_votes_to_consider` to choose all eligible blocks
* Uncomment winning_vote tests
* Add comments; remove unused code
* Reduce seconds_per_eth1_block for simulation
* Addressed review comments
* Add test for default vote case
* Fix logs
* Remove unused functions
* Meter default eth1 votes
* Fix comments
* Progress on attestation service
* Address review comments; remove unused dependency
* Initial work on removing libp2p lock
* Add LRU caches to store (rollup)
* Update attestation validation for DB changes (WIP)
* Initial version of should_forward_block
* Scaffold
* Progress on attestation validation
Also, consolidate prod+testing slot clocks so that they share much
of the same implementation and can both handle sub-slot time changes.
* Removes lock from libp2p service
* Completed network lock removal
* Finish(?) attestation processing
* Correct network termination future
* Add slot check to block check
* Correct fmt issues
* Remove Drop implementation for network service
* Add first attempt at attestation proc. re-write
* Add version 2 of attestation processing
* Minor fixes
* Add validator pubkey cache
* Make get_indexed_attestation take a committee
* Link signature processing into new attn verification
* First working version
* Ensure pubkey cache is updated
* Add more metrics, slight optimizations
* Clone committee cache during attestation processing
* Update shuffling cache during block processing
* Remove old commented-out code
* Fix shuffling cache insert bug
* Used indexed attestation in fork choice
* Restructure attn processing, add metrics
* Add more detailed metrics
* Tidy, fix failing tests
* Fix failing tests, tidy
* Address reviewers suggestions
* Disable/delete two outdated tests
* Modification of validator for subscriptions
* Add slot signing to validator client
* Further progress on validation subscription
* Adds necessary validator subscription functionality
* Add new Pubkeys struct to signature_sets
* Refactor with functional approach
* Update beacon chain
* Clean up validator <-> beacon node http types
* Add aggregator status to ValidatorDuty
* Impl Clone for manual slot clock
* Fix minor errors
* Further progress validator client subscription
* Initial subscription and aggregation handling
* Remove decompressed member from pubkey bytes
* Progress to modifying val client for attestation aggregation
* First draft of validator client upgrade for aggregate attestations
* Add hashmap for indices lookup
* Add state cache, remove store cache
* Only build the head committee cache
* Removes lock on a network channel
* Partially implement beacon node subscription http api
* Correct compilation issues
* Change `get_attesting_indices` to use Vec
* Fix failing test
* Partial implementation of timer
* Adds timer, removes exit_future, http api to op pool
* Partial multiple aggregate attestation handling
* Permits bulk messages accross gossipsub network channel
* Correct compile issues
* Improve gosispsub messaging and correct rest api helpers
* Added global gossipsub subscriptions
* Update validator subscriptions data structs
* Tidy
* Re-structure validator subscriptions
* Initial handling of subscriptions
* Re-structure network service
* Add pubkey cache persistence file
* Add more comments
* Integrate persistence file into builder
* Add pubkey cache tests
* Add HashSetDelay and introduce into attestation service
* Handles validator subscriptions
* Add data_dir to beacon chain builder
* Remove Option in pubkey cache persistence file
* Ensure consistency between datadir/data_dir
* Fix failing network test
* Peer subnet discovery gets queued for future subscriptions
* Reorganise attestation service functions
* Initial wiring of attestation service
* First draft of attestation service timing logic
* Correct minor typos
* Tidy
* Fix todos
* Improve tests
* Add PeerInfo to connected peers mapping
* Fix compile error
* Fix compile error from merge
* Split up block processing metrics
* Tidy
* Refactor get_pubkey_from_state
* Remove commented-out code
* Rename state_cache -> checkpoint_cache
* Rename Checkpoint -> Snapshot
* Tidy, add comments
* Tidy up find_head function
* Change some checkpoint -> snapshot
* Add tests
* Expose max_len
* Remove dead code
* Tidy
* Fix bug
* Add sync-speed metric
* Add first attempt at VerifiableBlock
* Start integrating into beacon chain
* Integrate VerifiableBlock
* Rename VerifableBlock -> PartialBlockVerification
* Add start of typed methods
* Add progress
* Add further progress
* Rename structs
* Add full block verification to block_processing.rs
* Further beacon chain integration
* Update checks for gossip
* Add todo
* Start adding segement verification
* Add passing chain segement test
* Initial integration with batch sync
* Minor changes
* Tidy, add more error checking
* Start adding chain_segment tests
* Finish invalid signature tests
* Include single and gossip verified blocks in tests
* Add gossip verification tests
* Start adding docs
* Finish adding comments to block_processing.rs
* Rename block_processing.rs -> block_verification
* Start removing old block processing code
* Fixes beacon_chain compilation
* Fix project-wide compile errors
* Remove old code
* Correct code to pass all tests
* Fix bug with beacon proposer index
* Fix shim for BlockProcessingError
* Only process one epoch at a time
* Fix loop in chain segment processing
* Correct tests from master merge
* Add caching for state.eth1_data_votes
* Add BeaconChain::validator_pubkey
* Revert "Add caching for state.eth1_data_votes"
This reverts commit cd73dcd6434fb8d8e6bf30c5356355598ea7b78e.
Co-authored-by: Grant Wuerker <gwuerker@gmail.com>
Co-authored-by: Michael Sproul <michael@sigmaprime.io>
Co-authored-by: Michael Sproul <micsproul@gmail.com>
Co-authored-by: pawan <pawandhananjay@gmail.com>
Co-authored-by: Paul Hauner <paul@paulhauner.com>
2020-03-17 06:24:44 +00:00
|
|
|
version = "0.2.0"
|
2019-12-09 11:39:44 +00:00
|
|
|
dependencies = [
|
2020-05-10 09:56:31 +00:00
|
|
|
"deposit_contract",
|
|
|
|
"serde_json",
|
2021-08-17 01:00:24 +00:00
|
|
|
"tokio",
|
2020-05-10 09:56:31 +00:00
|
|
|
"types",
|
2022-02-17 21:47:06 +00:00
|
|
|
"unused_port",
|
2020-05-10 09:56:31 +00:00
|
|
|
"web3",
|
2019-12-09 11:39:44 +00:00
|
|
|
]
|
|
|
|
|
2020-09-29 03:46:54 +00:00
|
|
|
[[package]]
|
|
|
|
name = "eth2"
|
|
|
|
version = "0.1.0"
|
|
|
|
dependencies = [
|
2020-10-02 09:42:19 +00:00
|
|
|
"account_utils",
|
2021-10-29 01:59:29 +00:00
|
|
|
"bytes",
|
2020-10-02 09:42:19 +00:00
|
|
|
"eth2_keystore",
|
2021-11-29 22:32:53 +00:00
|
|
|
"eth2_serde_utils",
|
2021-11-29 03:57:54 +00:00
|
|
|
"eth2_ssz",
|
2022-03-31 07:52:23 +00:00
|
|
|
"eth2_ssz_derive",
|
2021-07-09 03:20:24 +00:00
|
|
|
"futures",
|
2020-12-04 00:18:58 +00:00
|
|
|
"futures-util",
|
2022-04-04 00:26:16 +00:00
|
|
|
"libsecp256k1",
|
Rename eth2_libp2p to lighthouse_network (#2702)
## Description
The `eth2_libp2p` crate was originally named and designed to incorporate a simple libp2p integration into lighthouse. Since its origins the crates purpose has expanded dramatically. It now houses a lot more sophistication that is specific to lighthouse and no longer just a libp2p integration.
As of this writing it currently houses the following high-level lighthouse-specific logic:
- Lighthouse's implementation of the eth2 RPC protocol and specific encodings/decodings
- Integration and handling of ENRs with respect to libp2p and eth2
- Lighthouse's discovery logic, its integration with discv5 and logic about searching and handling peers.
- Lighthouse's peer manager - This is a large module handling various aspects of Lighthouse's network, such as peer scoring, handling pings and metadata, connection maintenance and recording, etc.
- Lighthouse's peer database - This is a collection of information stored for each individual peer which is specific to lighthouse. We store connection state, sync state, last seen ips and scores etc. The data stored for each peer is designed for various elements of the lighthouse code base such as syncing and the http api.
- Gossipsub scoring - This stores a collection of gossipsub 1.1 scoring mechanisms that are continuously analyssed and updated based on the ethereum 2 networks and how Lighthouse performs on these networks.
- Lighthouse specific types for managing gossipsub topics, sync status and ENR fields
- Lighthouse's network HTTP API metrics - A collection of metrics for lighthouse network monitoring
- Lighthouse's custom configuration of all networking protocols, RPC, gossipsub, discovery, identify and libp2p.
Therefore it makes sense to rename the crate to be more akin to its current purposes, simply that it manages the majority of Lighthouse's network stack. This PR renames this crate to `lighthouse_network`
Co-authored-by: Paul Hauner <paul@paulhauner.com>
2021-10-19 00:30:39 +00:00
|
|
|
"lighthouse_network",
|
2022-05-18 06:50:50 +00:00
|
|
|
"mime",
|
2020-09-29 03:46:54 +00:00
|
|
|
"procinfo",
|
|
|
|
"proto_array",
|
|
|
|
"psutil",
|
|
|
|
"reqwest",
|
2020-10-02 09:42:19 +00:00
|
|
|
"ring",
|
2021-05-04 01:59:51 +00:00
|
|
|
"sensitive_url",
|
2020-09-29 03:46:54 +00:00
|
|
|
"serde",
|
|
|
|
"serde_json",
|
2022-01-30 23:22:04 +00:00
|
|
|
"slashing_protection",
|
2021-09-22 00:37:28 +00:00
|
|
|
"store",
|
2020-09-29 03:46:54 +00:00
|
|
|
"types",
|
|
|
|
]
|
|
|
|
|
2019-12-09 11:39:44 +00:00
|
|
|
[[package]]
|
|
|
|
name = "eth2_config"
|
Initial work towards v0.2.0 (#924)
* Remove ping protocol
* Initial renaming of network services
* Correct rebasing relative to latest master
* Start updating types
* Adds HashMapDelay struct to utils
* Initial network restructure
* Network restructure. Adds new types for v0.2.0
* Removes build artefacts
* Shift validation to beacon chain
* Temporarily remove gossip validation
This is to be updated to match current optimisation efforts.
* Adds AggregateAndProof
* Begin rebuilding pubsub encoding/decoding
* Signature hacking
* Shift gossipsup decoding into eth2_libp2p
* Existing EF tests passing with fake_crypto
* Shifts block encoding/decoding into RPC
* Delete outdated API spec
* All release tests passing bar genesis state parsing
* Update and test YamlConfig
* Update to spec v0.10 compatible BLS
* Updates to BLS EF tests
* Add EF test for AggregateVerify
And delete unused hash2curve tests for uncompressed points
* Update EF tests to v0.10.1
* Use optional block root correctly in block proc
* Use genesis fork in deposit domain. All tests pass
* Fast aggregate verify test
* Update REST API docs
* Fix unused import
* Bump spec tags to v0.10.1
* Add `seconds_per_eth1_block` to chainspec
* Update to timestamp based eth1 voting scheme
* Return None from `get_votes_to_consider` if block cache is empty
* Handle overflows in `is_candidate_block`
* Revert to failing tests
* Fix eth1 data sets test
* Choose default vote according to spec
* Fix collect_valid_votes tests
* Fix `get_votes_to_consider` to choose all eligible blocks
* Uncomment winning_vote tests
* Add comments; remove unused code
* Reduce seconds_per_eth1_block for simulation
* Addressed review comments
* Add test for default vote case
* Fix logs
* Remove unused functions
* Meter default eth1 votes
* Fix comments
* Progress on attestation service
* Address review comments; remove unused dependency
* Initial work on removing libp2p lock
* Add LRU caches to store (rollup)
* Update attestation validation for DB changes (WIP)
* Initial version of should_forward_block
* Scaffold
* Progress on attestation validation
Also, consolidate prod+testing slot clocks so that they share much
of the same implementation and can both handle sub-slot time changes.
* Removes lock from libp2p service
* Completed network lock removal
* Finish(?) attestation processing
* Correct network termination future
* Add slot check to block check
* Correct fmt issues
* Remove Drop implementation for network service
* Add first attempt at attestation proc. re-write
* Add version 2 of attestation processing
* Minor fixes
* Add validator pubkey cache
* Make get_indexed_attestation take a committee
* Link signature processing into new attn verification
* First working version
* Ensure pubkey cache is updated
* Add more metrics, slight optimizations
* Clone committee cache during attestation processing
* Update shuffling cache during block processing
* Remove old commented-out code
* Fix shuffling cache insert bug
* Used indexed attestation in fork choice
* Restructure attn processing, add metrics
* Add more detailed metrics
* Tidy, fix failing tests
* Fix failing tests, tidy
* Address reviewers suggestions
* Disable/delete two outdated tests
* Modification of validator for subscriptions
* Add slot signing to validator client
* Further progress on validation subscription
* Adds necessary validator subscription functionality
* Add new Pubkeys struct to signature_sets
* Refactor with functional approach
* Update beacon chain
* Clean up validator <-> beacon node http types
* Add aggregator status to ValidatorDuty
* Impl Clone for manual slot clock
* Fix minor errors
* Further progress validator client subscription
* Initial subscription and aggregation handling
* Remove decompressed member from pubkey bytes
* Progress to modifying val client for attestation aggregation
* First draft of validator client upgrade for aggregate attestations
* Add hashmap for indices lookup
* Add state cache, remove store cache
* Only build the head committee cache
* Removes lock on a network channel
* Partially implement beacon node subscription http api
* Correct compilation issues
* Change `get_attesting_indices` to use Vec
* Fix failing test
* Partial implementation of timer
* Adds timer, removes exit_future, http api to op pool
* Partial multiple aggregate attestation handling
* Permits bulk messages accross gossipsub network channel
* Correct compile issues
* Improve gosispsub messaging and correct rest api helpers
* Added global gossipsub subscriptions
* Update validator subscriptions data structs
* Tidy
* Re-structure validator subscriptions
* Initial handling of subscriptions
* Re-structure network service
* Add pubkey cache persistence file
* Add more comments
* Integrate persistence file into builder
* Add pubkey cache tests
* Add HashSetDelay and introduce into attestation service
* Handles validator subscriptions
* Add data_dir to beacon chain builder
* Remove Option in pubkey cache persistence file
* Ensure consistency between datadir/data_dir
* Fix failing network test
* Peer subnet discovery gets queued for future subscriptions
* Reorganise attestation service functions
* Initial wiring of attestation service
* First draft of attestation service timing logic
* Correct minor typos
* Tidy
* Fix todos
* Improve tests
* Add PeerInfo to connected peers mapping
* Fix compile error
* Fix compile error from merge
* Split up block processing metrics
* Tidy
* Refactor get_pubkey_from_state
* Remove commented-out code
* Rename state_cache -> checkpoint_cache
* Rename Checkpoint -> Snapshot
* Tidy, add comments
* Tidy up find_head function
* Change some checkpoint -> snapshot
* Add tests
* Expose max_len
* Remove dead code
* Tidy
* Fix bug
* Add sync-speed metric
* Add first attempt at VerifiableBlock
* Start integrating into beacon chain
* Integrate VerifiableBlock
* Rename VerifableBlock -> PartialBlockVerification
* Add start of typed methods
* Add progress
* Add further progress
* Rename structs
* Add full block verification to block_processing.rs
* Further beacon chain integration
* Update checks for gossip
* Add todo
* Start adding segement verification
* Add passing chain segement test
* Initial integration with batch sync
* Minor changes
* Tidy, add more error checking
* Start adding chain_segment tests
* Finish invalid signature tests
* Include single and gossip verified blocks in tests
* Add gossip verification tests
* Start adding docs
* Finish adding comments to block_processing.rs
* Rename block_processing.rs -> block_verification
* Start removing old block processing code
* Fixes beacon_chain compilation
* Fix project-wide compile errors
* Remove old code
* Correct code to pass all tests
* Fix bug with beacon proposer index
* Fix shim for BlockProcessingError
* Only process one epoch at a time
* Fix loop in chain segment processing
* Correct tests from master merge
* Add caching for state.eth1_data_votes
* Add BeaconChain::validator_pubkey
* Revert "Add caching for state.eth1_data_votes"
This reverts commit cd73dcd6434fb8d8e6bf30c5356355598ea7b78e.
Co-authored-by: Grant Wuerker <gwuerker@gmail.com>
Co-authored-by: Michael Sproul <michael@sigmaprime.io>
Co-authored-by: Michael Sproul <micsproul@gmail.com>
Co-authored-by: pawan <pawandhananjay@gmail.com>
Co-authored-by: Paul Hauner <paul@paulhauner.com>
2020-03-17 06:24:44 +00:00
|
|
|
version = "0.2.0"
|
2019-12-09 11:39:44 +00:00
|
|
|
dependencies = [
|
2021-08-30 23:27:28 +00:00
|
|
|
"paste",
|
2020-05-10 09:56:31 +00:00
|
|
|
"types",
|
2019-12-09 11:39:44 +00:00
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "eth2_hashing"
|
2022-04-04 00:26:16 +00:00
|
|
|
version = "0.3.0"
|
2019-12-09 11:39:44 +00:00
|
|
|
dependencies = [
|
2022-04-04 00:26:16 +00:00
|
|
|
"cpufeatures",
|
2020-05-10 09:56:31 +00:00
|
|
|
"lazy_static",
|
|
|
|
"ring",
|
|
|
|
"rustc-hex",
|
2022-04-04 00:26:16 +00:00
|
|
|
"sha2 0.10.2",
|
2020-05-10 09:56:31 +00:00
|
|
|
"wasm-bindgen-test",
|
2019-12-09 11:39:44 +00:00
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "eth2_interop_keypairs"
|
Initial work towards v0.2.0 (#924)
* Remove ping protocol
* Initial renaming of network services
* Correct rebasing relative to latest master
* Start updating types
* Adds HashMapDelay struct to utils
* Initial network restructure
* Network restructure. Adds new types for v0.2.0
* Removes build artefacts
* Shift validation to beacon chain
* Temporarily remove gossip validation
This is to be updated to match current optimisation efforts.
* Adds AggregateAndProof
* Begin rebuilding pubsub encoding/decoding
* Signature hacking
* Shift gossipsup decoding into eth2_libp2p
* Existing EF tests passing with fake_crypto
* Shifts block encoding/decoding into RPC
* Delete outdated API spec
* All release tests passing bar genesis state parsing
* Update and test YamlConfig
* Update to spec v0.10 compatible BLS
* Updates to BLS EF tests
* Add EF test for AggregateVerify
And delete unused hash2curve tests for uncompressed points
* Update EF tests to v0.10.1
* Use optional block root correctly in block proc
* Use genesis fork in deposit domain. All tests pass
* Fast aggregate verify test
* Update REST API docs
* Fix unused import
* Bump spec tags to v0.10.1
* Add `seconds_per_eth1_block` to chainspec
* Update to timestamp based eth1 voting scheme
* Return None from `get_votes_to_consider` if block cache is empty
* Handle overflows in `is_candidate_block`
* Revert to failing tests
* Fix eth1 data sets test
* Choose default vote according to spec
* Fix collect_valid_votes tests
* Fix `get_votes_to_consider` to choose all eligible blocks
* Uncomment winning_vote tests
* Add comments; remove unused code
* Reduce seconds_per_eth1_block for simulation
* Addressed review comments
* Add test for default vote case
* Fix logs
* Remove unused functions
* Meter default eth1 votes
* Fix comments
* Progress on attestation service
* Address review comments; remove unused dependency
* Initial work on removing libp2p lock
* Add LRU caches to store (rollup)
* Update attestation validation for DB changes (WIP)
* Initial version of should_forward_block
* Scaffold
* Progress on attestation validation
Also, consolidate prod+testing slot clocks so that they share much
of the same implementation and can both handle sub-slot time changes.
* Removes lock from libp2p service
* Completed network lock removal
* Finish(?) attestation processing
* Correct network termination future
* Add slot check to block check
* Correct fmt issues
* Remove Drop implementation for network service
* Add first attempt at attestation proc. re-write
* Add version 2 of attestation processing
* Minor fixes
* Add validator pubkey cache
* Make get_indexed_attestation take a committee
* Link signature processing into new attn verification
* First working version
* Ensure pubkey cache is updated
* Add more metrics, slight optimizations
* Clone committee cache during attestation processing
* Update shuffling cache during block processing
* Remove old commented-out code
* Fix shuffling cache insert bug
* Used indexed attestation in fork choice
* Restructure attn processing, add metrics
* Add more detailed metrics
* Tidy, fix failing tests
* Fix failing tests, tidy
* Address reviewers suggestions
* Disable/delete two outdated tests
* Modification of validator for subscriptions
* Add slot signing to validator client
* Further progress on validation subscription
* Adds necessary validator subscription functionality
* Add new Pubkeys struct to signature_sets
* Refactor with functional approach
* Update beacon chain
* Clean up validator <-> beacon node http types
* Add aggregator status to ValidatorDuty
* Impl Clone for manual slot clock
* Fix minor errors
* Further progress validator client subscription
* Initial subscription and aggregation handling
* Remove decompressed member from pubkey bytes
* Progress to modifying val client for attestation aggregation
* First draft of validator client upgrade for aggregate attestations
* Add hashmap for indices lookup
* Add state cache, remove store cache
* Only build the head committee cache
* Removes lock on a network channel
* Partially implement beacon node subscription http api
* Correct compilation issues
* Change `get_attesting_indices` to use Vec
* Fix failing test
* Partial implementation of timer
* Adds timer, removes exit_future, http api to op pool
* Partial multiple aggregate attestation handling
* Permits bulk messages accross gossipsub network channel
* Correct compile issues
* Improve gosispsub messaging and correct rest api helpers
* Added global gossipsub subscriptions
* Update validator subscriptions data structs
* Tidy
* Re-structure validator subscriptions
* Initial handling of subscriptions
* Re-structure network service
* Add pubkey cache persistence file
* Add more comments
* Integrate persistence file into builder
* Add pubkey cache tests
* Add HashSetDelay and introduce into attestation service
* Handles validator subscriptions
* Add data_dir to beacon chain builder
* Remove Option in pubkey cache persistence file
* Ensure consistency between datadir/data_dir
* Fix failing network test
* Peer subnet discovery gets queued for future subscriptions
* Reorganise attestation service functions
* Initial wiring of attestation service
* First draft of attestation service timing logic
* Correct minor typos
* Tidy
* Fix todos
* Improve tests
* Add PeerInfo to connected peers mapping
* Fix compile error
* Fix compile error from merge
* Split up block processing metrics
* Tidy
* Refactor get_pubkey_from_state
* Remove commented-out code
* Rename state_cache -> checkpoint_cache
* Rename Checkpoint -> Snapshot
* Tidy, add comments
* Tidy up find_head function
* Change some checkpoint -> snapshot
* Add tests
* Expose max_len
* Remove dead code
* Tidy
* Fix bug
* Add sync-speed metric
* Add first attempt at VerifiableBlock
* Start integrating into beacon chain
* Integrate VerifiableBlock
* Rename VerifableBlock -> PartialBlockVerification
* Add start of typed methods
* Add progress
* Add further progress
* Rename structs
* Add full block verification to block_processing.rs
* Further beacon chain integration
* Update checks for gossip
* Add todo
* Start adding segement verification
* Add passing chain segement test
* Initial integration with batch sync
* Minor changes
* Tidy, add more error checking
* Start adding chain_segment tests
* Finish invalid signature tests
* Include single and gossip verified blocks in tests
* Add gossip verification tests
* Start adding docs
* Finish adding comments to block_processing.rs
* Rename block_processing.rs -> block_verification
* Start removing old block processing code
* Fixes beacon_chain compilation
* Fix project-wide compile errors
* Remove old code
* Correct code to pass all tests
* Fix bug with beacon proposer index
* Fix shim for BlockProcessingError
* Only process one epoch at a time
* Fix loop in chain segment processing
* Correct tests from master merge
* Add caching for state.eth1_data_votes
* Add BeaconChain::validator_pubkey
* Revert "Add caching for state.eth1_data_votes"
This reverts commit cd73dcd6434fb8d8e6bf30c5356355598ea7b78e.
Co-authored-by: Grant Wuerker <gwuerker@gmail.com>
Co-authored-by: Michael Sproul <michael@sigmaprime.io>
Co-authored-by: Michael Sproul <micsproul@gmail.com>
Co-authored-by: pawan <pawandhananjay@gmail.com>
Co-authored-by: Paul Hauner <paul@paulhauner.com>
2020-03-17 06:24:44 +00:00
|
|
|
version = "0.2.0"
|
2019-12-09 11:39:44 +00:00
|
|
|
dependencies = [
|
2022-04-04 00:26:16 +00:00
|
|
|
"base64",
|
2020-07-25 02:03:18 +00:00
|
|
|
"bls",
|
2022-04-04 00:26:16 +00:00
|
|
|
"eth2_hashing",
|
2020-10-28 22:19:38 +00:00
|
|
|
"hex",
|
2020-05-10 09:56:31 +00:00
|
|
|
"lazy_static",
|
|
|
|
"num-bigint",
|
|
|
|
"serde",
|
|
|
|
"serde_derive",
|
|
|
|
"serde_yaml",
|
2019-12-09 11:39:44 +00:00
|
|
|
]
|
|
|
|
|
2020-05-11 08:43:43 +00:00
|
|
|
[[package]]
|
|
|
|
name = "eth2_key_derivation"
|
|
|
|
version = "0.1.0"
|
|
|
|
dependencies = [
|
2020-05-29 04:39:33 +00:00
|
|
|
"bls",
|
2020-10-28 22:19:38 +00:00
|
|
|
"hex",
|
2020-05-11 08:43:43 +00:00
|
|
|
"num-bigint-dig",
|
2020-05-12 05:48:39 +00:00
|
|
|
"ring",
|
2022-01-11 01:35:56 +00:00
|
|
|
"sha2 0.9.9",
|
2020-05-17 11:16:48 +00:00
|
|
|
"zeroize",
|
2020-05-11 08:43:43 +00:00
|
|
|
]
|
|
|
|
|
2020-05-11 07:45:06 +00:00
|
|
|
[[package]]
|
|
|
|
name = "eth2_keystore"
|
|
|
|
version = "0.1.0"
|
|
|
|
dependencies = [
|
2021-06-03 01:11:33 +00:00
|
|
|
"aes",
|
2020-05-11 07:45:06 +00:00
|
|
|
"bls",
|
2020-05-29 04:39:33 +00:00
|
|
|
"eth2_key_derivation",
|
2020-10-28 22:19:38 +00:00
|
|
|
"hex",
|
2021-08-17 01:00:24 +00:00
|
|
|
"hmac 0.11.0",
|
|
|
|
"pbkdf2 0.8.0",
|
2022-04-04 00:26:16 +00:00
|
|
|
"rand 0.8.5",
|
2020-12-07 08:20:33 +00:00
|
|
|
"scrypt",
|
2020-05-11 07:45:06 +00:00
|
|
|
"serde",
|
|
|
|
"serde_json",
|
|
|
|
"serde_repr",
|
2022-01-11 01:35:56 +00:00
|
|
|
"sha2 0.9.9",
|
2020-05-11 07:45:06 +00:00
|
|
|
"tempfile",
|
2020-12-03 22:07:09 +00:00
|
|
|
"unicode-normalization",
|
2020-05-17 11:16:48 +00:00
|
|
|
"uuid",
|
|
|
|
"zeroize",
|
2020-05-11 07:45:06 +00:00
|
|
|
]
|
|
|
|
|
2020-12-08 05:41:10 +00:00
|
|
|
[[package]]
|
|
|
|
name = "eth2_network_config"
|
|
|
|
version = "0.2.0"
|
|
|
|
dependencies = [
|
|
|
|
"enr",
|
|
|
|
"eth2_config",
|
2021-11-29 03:57:54 +00:00
|
|
|
"eth2_ssz",
|
2020-12-08 05:41:10 +00:00
|
|
|
"serde_yaml",
|
2021-01-06 06:36:11 +00:00
|
|
|
"tempfile",
|
2020-12-08 05:41:10 +00:00
|
|
|
"types",
|
|
|
|
"zip",
|
|
|
|
]
|
|
|
|
|
2021-09-03 01:10:25 +00:00
|
|
|
[[package]]
|
|
|
|
name = "eth2_serde_utils"
|
2021-11-29 22:32:53 +00:00
|
|
|
version = "0.1.1"
|
2021-09-03 01:10:25 +00:00
|
|
|
dependencies = [
|
Separate execution payloads in the DB (#3157)
## Proposed Changes
Reduce post-merge disk usage by not storing finalized execution payloads in Lighthouse's database.
:warning: **This is achieved in a backwards-incompatible way for networks that have already merged** :warning:. Kiln users and shadow fork enjoyers will be unable to downgrade after running the code from this PR. The upgrade migration may take several minutes to run, and can't be aborted after it begins.
The main changes are:
- New column in the database called `ExecPayload`, keyed by beacon block root.
- The `BeaconBlock` column now stores blinded blocks only.
- Lots of places that previously used full blocks now use blinded blocks, e.g. analytics APIs, block replay in the DB, etc.
- On finalization:
- `prune_abanonded_forks` deletes non-canonical payloads whilst deleting non-canonical blocks.
- `migrate_db` deletes finalized canonical payloads whilst deleting finalized states.
- Conversions between blinded and full blocks are implemented in a compositional way, duplicating some work from Sean's PR #3134.
- The execution layer has a new `get_payload_by_block_hash` method that reconstructs a payload using the EE's `eth_getBlockByHash` call.
- I've tested manually that it works on Kiln, using Geth and Nethermind.
- This isn't necessarily the most efficient method, and new engine APIs are being discussed to improve this: https://github.com/ethereum/execution-apis/pull/146.
- We're depending on the `ethers` master branch, due to lots of recent changes. We're also using a workaround for https://github.com/gakonst/ethers-rs/issues/1134.
- Payload reconstruction is used in the HTTP API via `BeaconChain::get_block`, which is now `async`. Due to the `async` fn, the `blocking_json` wrapper has been removed.
- Payload reconstruction is used in network RPC to serve blocks-by-{root,range} responses. Here the `async` adjustment is messier, although I think I've managed to come up with a reasonable compromise: the handlers take the `SendOnDrop` by value so that they can drop it on _task completion_ (after the `fn` returns). Still, this is introducing disk reads onto core executor threads, which may have a negative performance impact (thoughts appreciated).
## Additional Info
- [x] For performance it would be great to remove the cloning of full blocks when converting them to blinded blocks to write to disk. I'm going to experiment with a `put_block` API that takes the block by value, breaks it into a blinded block and a payload, stores the blinded block, and then re-assembles the full block for the caller.
- [x] We should measure the latency of blocks-by-root and blocks-by-range responses.
- [x] We should add integration tests that stress the payload reconstruction (basic tests done, issue for more extensive tests: https://github.com/sigp/lighthouse/issues/3159)
- [x] We should (manually) test the schema v9 migration from several prior versions, particularly as blocks have changed on disk and some migrations rely on being able to load blocks.
Co-authored-by: Paul Hauner <paul@paulhauner.com>
2022-05-12 00:42:17 +00:00
|
|
|
"ethereum-types 0.12.1",
|
2021-09-03 01:10:25 +00:00
|
|
|
"hex",
|
|
|
|
"serde",
|
|
|
|
"serde_derive",
|
|
|
|
"serde_json",
|
|
|
|
]
|
|
|
|
|
2019-12-09 11:39:44 +00:00
|
|
|
[[package]]
|
|
|
|
name = "eth2_ssz"
|
2021-11-29 03:57:54 +00:00
|
|
|
version = "0.4.1"
|
2019-12-09 11:39:44 +00:00
|
|
|
dependencies = [
|
2022-03-31 07:52:23 +00:00
|
|
|
"eth2_ssz_derive",
|
Separate execution payloads in the DB (#3157)
## Proposed Changes
Reduce post-merge disk usage by not storing finalized execution payloads in Lighthouse's database.
:warning: **This is achieved in a backwards-incompatible way for networks that have already merged** :warning:. Kiln users and shadow fork enjoyers will be unable to downgrade after running the code from this PR. The upgrade migration may take several minutes to run, and can't be aborted after it begins.
The main changes are:
- New column in the database called `ExecPayload`, keyed by beacon block root.
- The `BeaconBlock` column now stores blinded blocks only.
- Lots of places that previously used full blocks now use blinded blocks, e.g. analytics APIs, block replay in the DB, etc.
- On finalization:
- `prune_abanonded_forks` deletes non-canonical payloads whilst deleting non-canonical blocks.
- `migrate_db` deletes finalized canonical payloads whilst deleting finalized states.
- Conversions between blinded and full blocks are implemented in a compositional way, duplicating some work from Sean's PR #3134.
- The execution layer has a new `get_payload_by_block_hash` method that reconstructs a payload using the EE's `eth_getBlockByHash` call.
- I've tested manually that it works on Kiln, using Geth and Nethermind.
- This isn't necessarily the most efficient method, and new engine APIs are being discussed to improve this: https://github.com/ethereum/execution-apis/pull/146.
- We're depending on the `ethers` master branch, due to lots of recent changes. We're also using a workaround for https://github.com/gakonst/ethers-rs/issues/1134.
- Payload reconstruction is used in the HTTP API via `BeaconChain::get_block`, which is now `async`. Due to the `async` fn, the `blocking_json` wrapper has been removed.
- Payload reconstruction is used in network RPC to serve blocks-by-{root,range} responses. Here the `async` adjustment is messier, although I think I've managed to come up with a reasonable compromise: the handlers take the `SendOnDrop` by value so that they can drop it on _task completion_ (after the `fn` returns). Still, this is introducing disk reads onto core executor threads, which may have a negative performance impact (thoughts appreciated).
## Additional Info
- [x] For performance it would be great to remove the cloning of full blocks when converting them to blinded blocks to write to disk. I'm going to experiment with a `put_block` API that takes the block by value, breaks it into a blinded block and a payload, stores the blinded block, and then re-assembles the full block for the caller.
- [x] We should measure the latency of blocks-by-root and blocks-by-range responses.
- [x] We should add integration tests that stress the payload reconstruction (basic tests done, issue for more extensive tests: https://github.com/sigp/lighthouse/issues/3159)
- [x] We should (manually) test the schema v9 migration from several prior versions, particularly as blocks have changed on disk and some migrations rely on being able to load blocks.
Co-authored-by: Paul Hauner <paul@paulhauner.com>
2022-05-12 00:42:17 +00:00
|
|
|
"ethereum-types 0.12.1",
|
2020-12-09 01:34:58 +00:00
|
|
|
"smallvec",
|
2019-12-09 11:39:44 +00:00
|
|
|
]
|
|
|
|
|
2021-11-24 00:28:30 +00:00
|
|
|
[[package]]
|
|
|
|
name = "eth2_ssz_derive"
|
|
|
|
version = "0.3.0"
|
|
|
|
dependencies = [
|
2021-12-13 20:43:22 +00:00
|
|
|
"darling",
|
2021-11-24 00:28:30 +00:00
|
|
|
"proc-macro2",
|
|
|
|
"quote",
|
|
|
|
"syn",
|
|
|
|
]
|
|
|
|
|
2019-12-09 11:39:44 +00:00
|
|
|
[[package]]
|
|
|
|
name = "eth2_ssz_types"
|
2021-11-29 03:57:54 +00:00
|
|
|
version = "0.2.2"
|
2019-12-09 11:39:44 +00:00
|
|
|
dependencies = [
|
2021-10-14 02:58:11 +00:00
|
|
|
"arbitrary",
|
2022-01-14 07:20:54 +00:00
|
|
|
"derivative",
|
2021-11-29 22:32:53 +00:00
|
|
|
"eth2_serde_utils",
|
2021-11-29 03:57:54 +00:00
|
|
|
"eth2_ssz",
|
2020-05-10 09:56:31 +00:00
|
|
|
"serde",
|
|
|
|
"serde_derive",
|
2020-10-29 23:25:21 +00:00
|
|
|
"serde_json",
|
2022-02-17 23:55:04 +00:00
|
|
|
"smallvec",
|
2021-11-29 03:57:54 +00:00
|
|
|
"tree_hash",
|
2022-03-31 07:52:23 +00:00
|
|
|
"tree_hash_derive",
|
2021-11-24 00:28:30 +00:00
|
|
|
"typenum",
|
|
|
|
]
|
|
|
|
|
EIP-2386 (draft): Eth2 wallet (#1117)
* Add test to understand flow of key storage
* First commit
* Committing to save trait stuff
* Working naive design
* Add keystore struct
* Move keystore files into their own module
* Add serde (de)serialize_with magic
* Add keystore test
* Fix tests
* Add comments and minor fixes
* Pass optional params to `to_keystore` function
* Add `path` field to keystore
* Add function to read Keystore from file
* Add test vectors and fix Version serialization
* Checksum params is empty object
* Add public key to Keystore
* Add function for saving keystore into file
* Deleted account_manager main.rs
* Move keystore module to validator_client
* Add save_keystore method to validator_directory
* Add load_keystore function. Minor refactorings
* Fixed dependencies
* Address some review comments
* Add Password newtype; derive Zeroize
* Fix test
* Move keystore into own crate
* Remove padding
* Add error enum, zeroize more things
* Fix comment
* Add keystore builder
* Remove keystore stuff from val client
* Add more tests, comments
* Add more comments, test vectors
* Progress on improving JSON validation
* More JSON verification
* Start moving JSON into own mod
* Remove old code
* Add more tests, reader/writers
* Tidy
* Move keystore into own file
* Move more logic into keystore file
* Tidy
* Tidy
* Allow for odd-character hex
* Add more json missing field checks
* Use scrypt by default
* Tidy, address comments
* Test path and uuid in vectors
* Fix comment
* Add checks for kdf params
* Enforce empty kdf message
* Expose json_keystore mod
* First commits on path derivation
* Progress with implementation
* More progress
* Passing intermediate test vectors
* Tidy, add comments
* Add DerivedKey structs
* Move key derivation into own crate
* Add zeroize structs
* Return error for empty seed
* Add tests
* Tidy
* First commits on path derivation
* Progress with implementation
* Move key derivation into own crate
* Start defining JSON wallet
* Add progress
* Split out encrypt/decrypt
* First commits on path derivation
* Progress with implementation
* More progress
* Passing intermediate test vectors
* Tidy, add comments
* Add DerivedKey structs
* Move key derivation into own crate
* Add zeroize structs
* Return error for empty seed
* Add tests
* Tidy
* Add progress
* Replace some password usage with slice
* First commits on path derivation
* Progress with implementation
* More progress
* Passing intermediate test vectors
* Tidy, add comments
* Add DerivedKey structs
* Move key derivation into own crate
* Add zeroize structs
* Return error for empty seed
* Add tests
* Tidy
* Add progress
* Expose PlainText struct
* First commits on path derivation
* Progress with implementation
* More progress
* Passing intermediate test vectors
* Tidy, add comments
* Add DerivedKey structs
* Move key derivation into own crate
* Add zeroize structs
* Return error for empty seed
* Add tests
* Tidy
* Add builder
* Expose consts, remove Password
* Minor progress
* Expose SALT_SIZE
* First compiling version
* Add test vectors
* Move dbg assert statement
* Add mnemonic, tidy
* Tidy
* Add testing
* Fix broken test
* Address review comments
Co-authored-by: pawan <pawandhananjay@gmail.com>
2020-05-11 22:54:59 +00:00
|
|
|
[[package]]
|
|
|
|
name = "eth2_wallet"
|
|
|
|
version = "0.1.0"
|
|
|
|
dependencies = [
|
|
|
|
"eth2_key_derivation",
|
|
|
|
"eth2_keystore",
|
2020-10-28 22:19:38 +00:00
|
|
|
"hex",
|
2022-04-04 00:26:16 +00:00
|
|
|
"rand 0.8.5",
|
EIP-2386 (draft): Eth2 wallet (#1117)
* Add test to understand flow of key storage
* First commit
* Committing to save trait stuff
* Working naive design
* Add keystore struct
* Move keystore files into their own module
* Add serde (de)serialize_with magic
* Add keystore test
* Fix tests
* Add comments and minor fixes
* Pass optional params to `to_keystore` function
* Add `path` field to keystore
* Add function to read Keystore from file
* Add test vectors and fix Version serialization
* Checksum params is empty object
* Add public key to Keystore
* Add function for saving keystore into file
* Deleted account_manager main.rs
* Move keystore module to validator_client
* Add save_keystore method to validator_directory
* Add load_keystore function. Minor refactorings
* Fixed dependencies
* Address some review comments
* Add Password newtype; derive Zeroize
* Fix test
* Move keystore into own crate
* Remove padding
* Add error enum, zeroize more things
* Fix comment
* Add keystore builder
* Remove keystore stuff from val client
* Add more tests, comments
* Add more comments, test vectors
* Progress on improving JSON validation
* More JSON verification
* Start moving JSON into own mod
* Remove old code
* Add more tests, reader/writers
* Tidy
* Move keystore into own file
* Move more logic into keystore file
* Tidy
* Tidy
* Allow for odd-character hex
* Add more json missing field checks
* Use scrypt by default
* Tidy, address comments
* Test path and uuid in vectors
* Fix comment
* Add checks for kdf params
* Enforce empty kdf message
* Expose json_keystore mod
* First commits on path derivation
* Progress with implementation
* More progress
* Passing intermediate test vectors
* Tidy, add comments
* Add DerivedKey structs
* Move key derivation into own crate
* Add zeroize structs
* Return error for empty seed
* Add tests
* Tidy
* First commits on path derivation
* Progress with implementation
* Move key derivation into own crate
* Start defining JSON wallet
* Add progress
* Split out encrypt/decrypt
* First commits on path derivation
* Progress with implementation
* More progress
* Passing intermediate test vectors
* Tidy, add comments
* Add DerivedKey structs
* Move key derivation into own crate
* Add zeroize structs
* Return error for empty seed
* Add tests
* Tidy
* Add progress
* Replace some password usage with slice
* First commits on path derivation
* Progress with implementation
* More progress
* Passing intermediate test vectors
* Tidy, add comments
* Add DerivedKey structs
* Move key derivation into own crate
* Add zeroize structs
* Return error for empty seed
* Add tests
* Tidy
* Add progress
* Expose PlainText struct
* First commits on path derivation
* Progress with implementation
* More progress
* Passing intermediate test vectors
* Tidy, add comments
* Add DerivedKey structs
* Move key derivation into own crate
* Add zeroize structs
* Return error for empty seed
* Add tests
* Tidy
* Add builder
* Expose consts, remove Password
* Minor progress
* Expose SALT_SIZE
* First compiling version
* Add test vectors
* Move dbg assert statement
* Add mnemonic, tidy
* Tidy
* Add testing
* Fix broken test
* Address review comments
Co-authored-by: pawan <pawandhananjay@gmail.com>
2020-05-11 22:54:59 +00:00
|
|
|
"serde",
|
|
|
|
"serde_json",
|
|
|
|
"serde_repr",
|
|
|
|
"tempfile",
|
|
|
|
"tiny-bip39",
|
2020-05-17 11:16:48 +00:00
|
|
|
"uuid",
|
EIP-2386 (draft): Eth2 wallet (#1117)
* Add test to understand flow of key storage
* First commit
* Committing to save trait stuff
* Working naive design
* Add keystore struct
* Move keystore files into their own module
* Add serde (de)serialize_with magic
* Add keystore test
* Fix tests
* Add comments and minor fixes
* Pass optional params to `to_keystore` function
* Add `path` field to keystore
* Add function to read Keystore from file
* Add test vectors and fix Version serialization
* Checksum params is empty object
* Add public key to Keystore
* Add function for saving keystore into file
* Deleted account_manager main.rs
* Move keystore module to validator_client
* Add save_keystore method to validator_directory
* Add load_keystore function. Minor refactorings
* Fixed dependencies
* Address some review comments
* Add Password newtype; derive Zeroize
* Fix test
* Move keystore into own crate
* Remove padding
* Add error enum, zeroize more things
* Fix comment
* Add keystore builder
* Remove keystore stuff from val client
* Add more tests, comments
* Add more comments, test vectors
* Progress on improving JSON validation
* More JSON verification
* Start moving JSON into own mod
* Remove old code
* Add more tests, reader/writers
* Tidy
* Move keystore into own file
* Move more logic into keystore file
* Tidy
* Tidy
* Allow for odd-character hex
* Add more json missing field checks
* Use scrypt by default
* Tidy, address comments
* Test path and uuid in vectors
* Fix comment
* Add checks for kdf params
* Enforce empty kdf message
* Expose json_keystore mod
* First commits on path derivation
* Progress with implementation
* More progress
* Passing intermediate test vectors
* Tidy, add comments
* Add DerivedKey structs
* Move key derivation into own crate
* Add zeroize structs
* Return error for empty seed
* Add tests
* Tidy
* First commits on path derivation
* Progress with implementation
* Move key derivation into own crate
* Start defining JSON wallet
* Add progress
* Split out encrypt/decrypt
* First commits on path derivation
* Progress with implementation
* More progress
* Passing intermediate test vectors
* Tidy, add comments
* Add DerivedKey structs
* Move key derivation into own crate
* Add zeroize structs
* Return error for empty seed
* Add tests
* Tidy
* Add progress
* Replace some password usage with slice
* First commits on path derivation
* Progress with implementation
* More progress
* Passing intermediate test vectors
* Tidy, add comments
* Add DerivedKey structs
* Move key derivation into own crate
* Add zeroize structs
* Return error for empty seed
* Add tests
* Tidy
* Add progress
* Expose PlainText struct
* First commits on path derivation
* Progress with implementation
* More progress
* Passing intermediate test vectors
* Tidy, add comments
* Add DerivedKey structs
* Move key derivation into own crate
* Add zeroize structs
* Return error for empty seed
* Add tests
* Tidy
* Add builder
* Expose consts, remove Password
* Minor progress
* Expose SALT_SIZE
* First compiling version
* Add test vectors
* Move dbg assert statement
* Add mnemonic, tidy
* Tidy
* Add testing
* Fix broken test
* Address review comments
Co-authored-by: pawan <pawandhananjay@gmail.com>
2020-05-11 22:54:59 +00:00
|
|
|
]
|
|
|
|
|
Wallet-based, encrypted key management (#1138)
* Update hashmap hashset to stable futures
* Adds panic test to hashset delay
* Port remote_beacon_node to stable futures
* Fix lcli merge conflicts
* Non rpc stuff compiles
* Remove padding
* Add error enum, zeroize more things
* Fix comment
* protocol.rs compiles
* Port websockets, timer and notifier to stable futures (#1035)
* Fix lcli
* Port timer to stable futures
* Fix timer
* Port websocket_server to stable futures
* Port notifier to stable futures
* Add TODOS
* Port remote_beacon_node to stable futures
* Partial eth2-libp2p stable future upgrade
* Finished first round of fighting RPC types
* Further progress towards porting eth2-libp2p adds caching to discovery
* Update behaviour
* Add keystore builder
* Remove keystore stuff from val client
* Add more tests, comments
* RPC handler to stable futures
* Update RPC to master libp2p
* Add more comments, test vectors
* Network service additions
* Progress on improving JSON validation
* More JSON verification
* Start moving JSON into own mod
* Remove old code
* Add more tests, reader/writers
* Tidy
* Move keystore into own file
* Move more logic into keystore file
* Tidy
* Tidy
* Fix the fallback transport construction (#1102)
* Allow for odd-character hex
* Correct warning
* Remove hashmap delay
* Compiling version of eth2-libp2p
* Update all crates versions
* Fix conversion function and add tests (#1113)
* Add more json missing field checks
* Use scrypt by default
* Tidy, address comments
* Test path and uuid in vectors
* Fix comment
* Add checks for kdf params
* Enforce empty kdf message
* Port validator_client to stable futures (#1114)
* Add PH & MS slot clock changes
* Account for genesis time
* Add progress on duties refactor
* Add simple is_aggregator bool to val subscription
* Start work on attestation_verification.rs
* Add progress on ObservedAttestations
* Progress with ObservedAttestations
* Fix tests
* Add observed attestations to the beacon chain
* Add attestation observation to processing code
* Add progress on attestation verification
* Add first draft of ObservedAttesters
* Add more tests
* Add observed attesters to beacon chain
* Add observers to attestation processing
* Add more attestation verification
* Create ObservedAggregators map
* Remove commented-out code
* Add observed aggregators into chain
* Add progress
* Finish adding features to attestation verification
* Ensure beacon chain compiles
* Link attn verification into chain
* Integrate new attn verification in chain
* Remove old attestation processing code
* Start trying to fix beacon_chain tests
* Split adding into pools into two functions
* Add aggregation to harness
* Get test harness working again
* Adjust the number of aggregators for test harness
* Fix edge-case in harness
* Integrate new attn processing in network
* Fix compile bug in validator_client
* Update validator API endpoints
* Fix aggreagation in test harness
* Fix enum thing
* Fix attestation observation bug:
* Patch failing API tests
* Start adding comments to attestation verification
* Remove unused attestation field
* Unify "is block known" logic
* Update comments
* Supress fork choice errors for network processing
* Add todos
* Tidy
* Add gossip attn tests
* Disallow test harness to produce old attns
* Comment out in-progress tests
* Partially address pruning tests
* Fix failing store test
* Add aggregate tests
* Add comments about which spec conditions we check
* Dont re-aggregate
* Split apart test harness attn production
* Fix compile error in network
* Make progress on commented-out test
* Fix skipping attestation test
* Add fork choice verification tests
* Tidy attn tests, remove dead code
* Remove some accidentally added code
* Fix clippy lint
* Rename test file
* Add block tests, add cheap block proposer check
* Rename block testing file
* Add observed_block_producers
* Tidy
* Switch around block signature verification
* Finish block testing
* Remove gossip from signature tests
* First pass of self review
* Fix deviation in spec
* Update test spec tags
* Start moving over to hashset
* Finish moving observed attesters to hashmap
* Move aggregation pool over to hashmap
* Make fc attn borrow again
* Fix rest_api compile error
* Fix missing comments
* Fix monster test
* Uncomment increasing slots test
* Address remaining comments
* Remove unsafe, use cfg test
* Remove cfg test flag
* Fix dodgy comment
* Revert "Update hashmap hashset to stable futures"
This reverts commit d432378a3cc5cd67fc29c0b15b96b886c1323554.
* Revert "Adds panic test to hashset delay"
This reverts commit 281502396fc5b90d9c421a309c2c056982c9525b.
* Ported attestation_service
* Ported duties_service
* Ported fork_service
* More ports
* Port block_service
* Minor fixes
* VC compiles
* Update TODOS
* Borrow self where possible
* Ignore aggregates that are already known.
* Unify aggregator modulo logic
* Fix typo in logs
* Refactor validator subscription logic
* Avoid reproducing selection proof
* Skip HTTP call if no subscriptions
* Rename DutyAndState -> DutyAndProof
* Tidy logs
* Print root as dbg
* Fix compile errors in tests
* Fix compile error in test
* Re-Fix attestation and duties service
* Minor fixes
Co-authored-by: Paul Hauner <paul@paulhauner.com>
* Expose json_keystore mod
* First commits on path derivation
* Progress with implementation
* More progress
* Passing intermediate test vectors
* Tidy, add comments
* Add DerivedKey structs
* Move key derivation into own crate
* Add zeroize structs
* Return error for empty seed
* Add tests
* Tidy
* First commits on path derivation
* Progress with implementation
* Move key derivation into own crate
* Start defining JSON wallet
* Add progress
* Split out encrypt/decrypt
* First commits on path derivation
* Progress with implementation
* More progress
* Passing intermediate test vectors
* Tidy, add comments
* Add DerivedKey structs
* Move key derivation into own crate
* Add zeroize structs
* Return error for empty seed
* Add tests
* Tidy
* Add progress
* Replace some password usage with slice
* First commits on path derivation
* Progress with implementation
* More progress
* Passing intermediate test vectors
* Tidy, add comments
* Add DerivedKey structs
* Move key derivation into own crate
* Add zeroize structs
* Return error for empty seed
* Add tests
* Tidy
* Add progress
* Expose PlainText struct
* First commits on path derivation
* Progress with implementation
* More progress
* Passing intermediate test vectors
* Tidy, add comments
* Add DerivedKey structs
* Move key derivation into own crate
* Add zeroize structs
* Return error for empty seed
* Add tests
* Tidy
* Add builder
* Expose consts, remove Password
* Minor progress
* Expose SALT_SIZE
* First compiling version
* Add test vectors
* Network crate update to stable futures
* Move dbg assert statement
* Port account_manager to stable futures (#1121)
* Port account_manager to stable futures
* Run async fns in tokio environment
* Port rest_api crate to stable futures (#1118)
* Port rest_api lib to stable futures
* Reduce tokio features
* Update notifier to stable futures
* Builder update
* Further updates
* Add mnemonic, tidy
* Convert self referential async functions
* Tidy
* Add testing
* Add first attempt at validator_dir
* Present pubkey field
* stable futures fixes (#1124)
* Fix eth1 update functions
* Fix genesis and client
* Fix beacon node lib
* Return appropriate runtimes from environment
* Fix test rig
* Refactor eth1 service update
* Upgrade simulator to stable futures
* Lighthouse compiles on stable futures
* Add first pass of wallet manager
* Progress with CLI
* Remove println debugging statement
* Tidy output
* Tidy 600 perms
* Update libp2p service, start rpc test upgrade
* Add validator creation flow
* Update network crate for new libp2p
* Start tidying, adding comments
* Update tokio::codec to futures_codec (#1128)
* Further work towards RPC corrections
* Correct http timeout and network service select
* Add wallet mgr testing
* Shift LockedWallet into own file
* Add comments to fs
* Start integration into VC
* Use tokio runtime for libp2p
* Revert "Update tokio::codec to futures_codec (#1128)"
This reverts commit e57aea924acf5cbabdcea18895ac07e38a425ed7.
* Upgrade RPC libp2p tests
* Upgrade secio fallback test
* Add lcli keypair upgrade command
* Upgrade gossipsub examples
* Clean up RPC protocol
* Test fixes (#1133)
* Correct websocket timeout and run on os thread
* Fix network test
* Add --secrets-dir to VC
* Remove --legacy-keys from VC
* Clean up PR
* Correct tokio tcp move attestation service tests
* Upgrade attestation service tests
* Fix sim
* Correct network test
* Correct genesis test
* Start docs
* Add progress for validator generation
* Tidy error messages
* Test corrections
* Log info when block is received
* Modify logs and update attester service events
* Stable futures: fixes to vc, eth1 and account manager (#1142)
* Add local testnet scripts
* Remove whiteblock script
* Rename local testnet script
* Move spawns onto handle
* Fix VC panic
* Initial fix to block production issue
* Tidy block producer fix
* Tidy further
* Add local testnet clean script
* Run cargo fmt
* Tidy duties service
* Tidy fork service
* Tidy ForkService
* Tidy AttestationService
* Tidy notifier
* Ensure await is not suppressed in eth1
* Ensure await is not suppressed in account_manager
* Use .ok() instead of .unwrap_or(())
* RPC decoding test for proto
* Update discv5 and eth2-libp2p deps
* Run cargo fmt
* Pre-build keystores for sim
* Fix lcli double runtime issue (#1144)
* Handle stream termination and dialing peer errors
* Correct peer_info variant types
* Add progress on new deposit flow
* Remove unnecessary warnings
* Handle subnet unsubscription removal and improve logigng
* Add logs around ping
* Upgrade discv5 and improve logging
* Handle peer connection status for multiple connections
* Improve network service logging
* Add more incomplete progress
* Improve logging around peer manager
* Upgrade swarm poll centralise peer management
* Identify clients on error
* Fix `remove_peer` in sync (#1150)
* remove_peer removes from all chains
* Remove logs
* Fix early return from loop
* Improved logging, fix panic
* Partially correct tests
* Add deposit command
* Remove old validator directory
* Start adding AM tests
* Stable futures: Vc sync (#1149)
* Improve syncing heuristic
* Add comments
* Use safer method for tolerance
* Fix tests
* Binary testing progress
* Progress with CLI tests
* Use constants for flags
* More account manager testing
* Improve CLI tests
* Move upgrade-legacy-keypairs into account man
* Use rayon for VC key generation
* Add comments to `validator_dir`
* Add testing to validator_dir
* Add fix to eth1-sim
* Check errors in eth1-sim
* Fix mutability issue
* Ensure password file ends in .pass
* Add more tests to wallet manager
* Tidy deposit
* Tidy account manager
* Tidy account manager
* Remove panic
* Generate keypairs earlier in sim
* Tidy eth1-sime
* Try to fix eth1 sim
* Address review comments
* Fix typo in CLI command
* Update docs
* Disable eth1 sim
* Remove eth1 sim completely
Co-authored-by: Age Manning <Age@AgeManning.com>
Co-authored-by: pawanjay176 <pawandhananjay@gmail.com>
2020-05-18 09:01:45 +00:00
|
|
|
[[package]]
|
|
|
|
name = "eth2_wallet_manager"
|
|
|
|
version = "0.1.0"
|
|
|
|
dependencies = [
|
|
|
|
"eth2_wallet",
|
2020-11-26 11:25:46 +00:00
|
|
|
"lockfile",
|
Wallet-based, encrypted key management (#1138)
* Update hashmap hashset to stable futures
* Adds panic test to hashset delay
* Port remote_beacon_node to stable futures
* Fix lcli merge conflicts
* Non rpc stuff compiles
* Remove padding
* Add error enum, zeroize more things
* Fix comment
* protocol.rs compiles
* Port websockets, timer and notifier to stable futures (#1035)
* Fix lcli
* Port timer to stable futures
* Fix timer
* Port websocket_server to stable futures
* Port notifier to stable futures
* Add TODOS
* Port remote_beacon_node to stable futures
* Partial eth2-libp2p stable future upgrade
* Finished first round of fighting RPC types
* Further progress towards porting eth2-libp2p adds caching to discovery
* Update behaviour
* Add keystore builder
* Remove keystore stuff from val client
* Add more tests, comments
* RPC handler to stable futures
* Update RPC to master libp2p
* Add more comments, test vectors
* Network service additions
* Progress on improving JSON validation
* More JSON verification
* Start moving JSON into own mod
* Remove old code
* Add more tests, reader/writers
* Tidy
* Move keystore into own file
* Move more logic into keystore file
* Tidy
* Tidy
* Fix the fallback transport construction (#1102)
* Allow for odd-character hex
* Correct warning
* Remove hashmap delay
* Compiling version of eth2-libp2p
* Update all crates versions
* Fix conversion function and add tests (#1113)
* Add more json missing field checks
* Use scrypt by default
* Tidy, address comments
* Test path and uuid in vectors
* Fix comment
* Add checks for kdf params
* Enforce empty kdf message
* Port validator_client to stable futures (#1114)
* Add PH & MS slot clock changes
* Account for genesis time
* Add progress on duties refactor
* Add simple is_aggregator bool to val subscription
* Start work on attestation_verification.rs
* Add progress on ObservedAttestations
* Progress with ObservedAttestations
* Fix tests
* Add observed attestations to the beacon chain
* Add attestation observation to processing code
* Add progress on attestation verification
* Add first draft of ObservedAttesters
* Add more tests
* Add observed attesters to beacon chain
* Add observers to attestation processing
* Add more attestation verification
* Create ObservedAggregators map
* Remove commented-out code
* Add observed aggregators into chain
* Add progress
* Finish adding features to attestation verification
* Ensure beacon chain compiles
* Link attn verification into chain
* Integrate new attn verification in chain
* Remove old attestation processing code
* Start trying to fix beacon_chain tests
* Split adding into pools into two functions
* Add aggregation to harness
* Get test harness working again
* Adjust the number of aggregators for test harness
* Fix edge-case in harness
* Integrate new attn processing in network
* Fix compile bug in validator_client
* Update validator API endpoints
* Fix aggreagation in test harness
* Fix enum thing
* Fix attestation observation bug:
* Patch failing API tests
* Start adding comments to attestation verification
* Remove unused attestation field
* Unify "is block known" logic
* Update comments
* Supress fork choice errors for network processing
* Add todos
* Tidy
* Add gossip attn tests
* Disallow test harness to produce old attns
* Comment out in-progress tests
* Partially address pruning tests
* Fix failing store test
* Add aggregate tests
* Add comments about which spec conditions we check
* Dont re-aggregate
* Split apart test harness attn production
* Fix compile error in network
* Make progress on commented-out test
* Fix skipping attestation test
* Add fork choice verification tests
* Tidy attn tests, remove dead code
* Remove some accidentally added code
* Fix clippy lint
* Rename test file
* Add block tests, add cheap block proposer check
* Rename block testing file
* Add observed_block_producers
* Tidy
* Switch around block signature verification
* Finish block testing
* Remove gossip from signature tests
* First pass of self review
* Fix deviation in spec
* Update test spec tags
* Start moving over to hashset
* Finish moving observed attesters to hashmap
* Move aggregation pool over to hashmap
* Make fc attn borrow again
* Fix rest_api compile error
* Fix missing comments
* Fix monster test
* Uncomment increasing slots test
* Address remaining comments
* Remove unsafe, use cfg test
* Remove cfg test flag
* Fix dodgy comment
* Revert "Update hashmap hashset to stable futures"
This reverts commit d432378a3cc5cd67fc29c0b15b96b886c1323554.
* Revert "Adds panic test to hashset delay"
This reverts commit 281502396fc5b90d9c421a309c2c056982c9525b.
* Ported attestation_service
* Ported duties_service
* Ported fork_service
* More ports
* Port block_service
* Minor fixes
* VC compiles
* Update TODOS
* Borrow self where possible
* Ignore aggregates that are already known.
* Unify aggregator modulo logic
* Fix typo in logs
* Refactor validator subscription logic
* Avoid reproducing selection proof
* Skip HTTP call if no subscriptions
* Rename DutyAndState -> DutyAndProof
* Tidy logs
* Print root as dbg
* Fix compile errors in tests
* Fix compile error in test
* Re-Fix attestation and duties service
* Minor fixes
Co-authored-by: Paul Hauner <paul@paulhauner.com>
* Expose json_keystore mod
* First commits on path derivation
* Progress with implementation
* More progress
* Passing intermediate test vectors
* Tidy, add comments
* Add DerivedKey structs
* Move key derivation into own crate
* Add zeroize structs
* Return error for empty seed
* Add tests
* Tidy
* First commits on path derivation
* Progress with implementation
* Move key derivation into own crate
* Start defining JSON wallet
* Add progress
* Split out encrypt/decrypt
* First commits on path derivation
* Progress with implementation
* More progress
* Passing intermediate test vectors
* Tidy, add comments
* Add DerivedKey structs
* Move key derivation into own crate
* Add zeroize structs
* Return error for empty seed
* Add tests
* Tidy
* Add progress
* Replace some password usage with slice
* First commits on path derivation
* Progress with implementation
* More progress
* Passing intermediate test vectors
* Tidy, add comments
* Add DerivedKey structs
* Move key derivation into own crate
* Add zeroize structs
* Return error for empty seed
* Add tests
* Tidy
* Add progress
* Expose PlainText struct
* First commits on path derivation
* Progress with implementation
* More progress
* Passing intermediate test vectors
* Tidy, add comments
* Add DerivedKey structs
* Move key derivation into own crate
* Add zeroize structs
* Return error for empty seed
* Add tests
* Tidy
* Add builder
* Expose consts, remove Password
* Minor progress
* Expose SALT_SIZE
* First compiling version
* Add test vectors
* Network crate update to stable futures
* Move dbg assert statement
* Port account_manager to stable futures (#1121)
* Port account_manager to stable futures
* Run async fns in tokio environment
* Port rest_api crate to stable futures (#1118)
* Port rest_api lib to stable futures
* Reduce tokio features
* Update notifier to stable futures
* Builder update
* Further updates
* Add mnemonic, tidy
* Convert self referential async functions
* Tidy
* Add testing
* Add first attempt at validator_dir
* Present pubkey field
* stable futures fixes (#1124)
* Fix eth1 update functions
* Fix genesis and client
* Fix beacon node lib
* Return appropriate runtimes from environment
* Fix test rig
* Refactor eth1 service update
* Upgrade simulator to stable futures
* Lighthouse compiles on stable futures
* Add first pass of wallet manager
* Progress with CLI
* Remove println debugging statement
* Tidy output
* Tidy 600 perms
* Update libp2p service, start rpc test upgrade
* Add validator creation flow
* Update network crate for new libp2p
* Start tidying, adding comments
* Update tokio::codec to futures_codec (#1128)
* Further work towards RPC corrections
* Correct http timeout and network service select
* Add wallet mgr testing
* Shift LockedWallet into own file
* Add comments to fs
* Start integration into VC
* Use tokio runtime for libp2p
* Revert "Update tokio::codec to futures_codec (#1128)"
This reverts commit e57aea924acf5cbabdcea18895ac07e38a425ed7.
* Upgrade RPC libp2p tests
* Upgrade secio fallback test
* Add lcli keypair upgrade command
* Upgrade gossipsub examples
* Clean up RPC protocol
* Test fixes (#1133)
* Correct websocket timeout and run on os thread
* Fix network test
* Add --secrets-dir to VC
* Remove --legacy-keys from VC
* Clean up PR
* Correct tokio tcp move attestation service tests
* Upgrade attestation service tests
* Fix sim
* Correct network test
* Correct genesis test
* Start docs
* Add progress for validator generation
* Tidy error messages
* Test corrections
* Log info when block is received
* Modify logs and update attester service events
* Stable futures: fixes to vc, eth1 and account manager (#1142)
* Add local testnet scripts
* Remove whiteblock script
* Rename local testnet script
* Move spawns onto handle
* Fix VC panic
* Initial fix to block production issue
* Tidy block producer fix
* Tidy further
* Add local testnet clean script
* Run cargo fmt
* Tidy duties service
* Tidy fork service
* Tidy ForkService
* Tidy AttestationService
* Tidy notifier
* Ensure await is not suppressed in eth1
* Ensure await is not suppressed in account_manager
* Use .ok() instead of .unwrap_or(())
* RPC decoding test for proto
* Update discv5 and eth2-libp2p deps
* Run cargo fmt
* Pre-build keystores for sim
* Fix lcli double runtime issue (#1144)
* Handle stream termination and dialing peer errors
* Correct peer_info variant types
* Add progress on new deposit flow
* Remove unnecessary warnings
* Handle subnet unsubscription removal and improve logigng
* Add logs around ping
* Upgrade discv5 and improve logging
* Handle peer connection status for multiple connections
* Improve network service logging
* Add more incomplete progress
* Improve logging around peer manager
* Upgrade swarm poll centralise peer management
* Identify clients on error
* Fix `remove_peer` in sync (#1150)
* remove_peer removes from all chains
* Remove logs
* Fix early return from loop
* Improved logging, fix panic
* Partially correct tests
* Add deposit command
* Remove old validator directory
* Start adding AM tests
* Stable futures: Vc sync (#1149)
* Improve syncing heuristic
* Add comments
* Use safer method for tolerance
* Fix tests
* Binary testing progress
* Progress with CLI tests
* Use constants for flags
* More account manager testing
* Improve CLI tests
* Move upgrade-legacy-keypairs into account man
* Use rayon for VC key generation
* Add comments to `validator_dir`
* Add testing to validator_dir
* Add fix to eth1-sim
* Check errors in eth1-sim
* Fix mutability issue
* Ensure password file ends in .pass
* Add more tests to wallet manager
* Tidy deposit
* Tidy account manager
* Tidy account manager
* Remove panic
* Generate keypairs earlier in sim
* Tidy eth1-sime
* Try to fix eth1 sim
* Address review comments
* Fix typo in CLI command
* Update docs
* Disable eth1 sim
* Remove eth1 sim completely
Co-authored-by: Age Manning <Age@AgeManning.com>
Co-authored-by: pawanjay176 <pawandhananjay@gmail.com>
2020-05-18 09:01:45 +00:00
|
|
|
"tempfile",
|
|
|
|
]
|
|
|
|
|
2019-12-09 11:39:44 +00:00
|
|
|
[[package]]
|
|
|
|
name = "ethabi"
|
2022-04-04 00:26:16 +00:00
|
|
|
version = "16.0.0"
|
2021-07-09 03:20:24 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2022-04-04 00:26:16 +00:00
|
|
|
checksum = "a4c98847055d934070b90e806e12d3936b787d0a115068981c1d8dfd5dfef5a5"
|
2021-07-09 03:20:24 +00:00
|
|
|
dependencies = [
|
Separate execution payloads in the DB (#3157)
## Proposed Changes
Reduce post-merge disk usage by not storing finalized execution payloads in Lighthouse's database.
:warning: **This is achieved in a backwards-incompatible way for networks that have already merged** :warning:. Kiln users and shadow fork enjoyers will be unable to downgrade after running the code from this PR. The upgrade migration may take several minutes to run, and can't be aborted after it begins.
The main changes are:
- New column in the database called `ExecPayload`, keyed by beacon block root.
- The `BeaconBlock` column now stores blinded blocks only.
- Lots of places that previously used full blocks now use blinded blocks, e.g. analytics APIs, block replay in the DB, etc.
- On finalization:
- `prune_abanonded_forks` deletes non-canonical payloads whilst deleting non-canonical blocks.
- `migrate_db` deletes finalized canonical payloads whilst deleting finalized states.
- Conversions between blinded and full blocks are implemented in a compositional way, duplicating some work from Sean's PR #3134.
- The execution layer has a new `get_payload_by_block_hash` method that reconstructs a payload using the EE's `eth_getBlockByHash` call.
- I've tested manually that it works on Kiln, using Geth and Nethermind.
- This isn't necessarily the most efficient method, and new engine APIs are being discussed to improve this: https://github.com/ethereum/execution-apis/pull/146.
- We're depending on the `ethers` master branch, due to lots of recent changes. We're also using a workaround for https://github.com/gakonst/ethers-rs/issues/1134.
- Payload reconstruction is used in the HTTP API via `BeaconChain::get_block`, which is now `async`. Due to the `async` fn, the `blocking_json` wrapper has been removed.
- Payload reconstruction is used in network RPC to serve blocks-by-{root,range} responses. Here the `async` adjustment is messier, although I think I've managed to come up with a reasonable compromise: the handlers take the `SendOnDrop` by value so that they can drop it on _task completion_ (after the `fn` returns). Still, this is introducing disk reads onto core executor threads, which may have a negative performance impact (thoughts appreciated).
## Additional Info
- [x] For performance it would be great to remove the cloning of full blocks when converting them to blinded blocks to write to disk. I'm going to experiment with a `put_block` API that takes the block by value, breaks it into a blinded block and a payload, stores the blinded block, and then re-assembles the full block for the caller.
- [x] We should measure the latency of blocks-by-root and blocks-by-range responses.
- [x] We should add integration tests that stress the payload reconstruction (basic tests done, issue for more extensive tests: https://github.com/sigp/lighthouse/issues/3159)
- [x] We should (manually) test the schema v9 migration from several prior versions, particularly as blocks have changed on disk and some migrations rely on being able to load blocks.
Co-authored-by: Paul Hauner <paul@paulhauner.com>
2022-05-12 00:42:17 +00:00
|
|
|
"ethereum-types 0.12.1",
|
|
|
|
"hex",
|
|
|
|
"serde",
|
|
|
|
"serde_json",
|
|
|
|
"sha3 0.9.1",
|
|
|
|
"thiserror",
|
|
|
|
"uint",
|
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "ethabi"
|
2022-06-18 23:59:43 +00:00
|
|
|
version = "17.1.0"
|
Separate execution payloads in the DB (#3157)
## Proposed Changes
Reduce post-merge disk usage by not storing finalized execution payloads in Lighthouse's database.
:warning: **This is achieved in a backwards-incompatible way for networks that have already merged** :warning:. Kiln users and shadow fork enjoyers will be unable to downgrade after running the code from this PR. The upgrade migration may take several minutes to run, and can't be aborted after it begins.
The main changes are:
- New column in the database called `ExecPayload`, keyed by beacon block root.
- The `BeaconBlock` column now stores blinded blocks only.
- Lots of places that previously used full blocks now use blinded blocks, e.g. analytics APIs, block replay in the DB, etc.
- On finalization:
- `prune_abanonded_forks` deletes non-canonical payloads whilst deleting non-canonical blocks.
- `migrate_db` deletes finalized canonical payloads whilst deleting finalized states.
- Conversions between blinded and full blocks are implemented in a compositional way, duplicating some work from Sean's PR #3134.
- The execution layer has a new `get_payload_by_block_hash` method that reconstructs a payload using the EE's `eth_getBlockByHash` call.
- I've tested manually that it works on Kiln, using Geth and Nethermind.
- This isn't necessarily the most efficient method, and new engine APIs are being discussed to improve this: https://github.com/ethereum/execution-apis/pull/146.
- We're depending on the `ethers` master branch, due to lots of recent changes. We're also using a workaround for https://github.com/gakonst/ethers-rs/issues/1134.
- Payload reconstruction is used in the HTTP API via `BeaconChain::get_block`, which is now `async`. Due to the `async` fn, the `blocking_json` wrapper has been removed.
- Payload reconstruction is used in network RPC to serve blocks-by-{root,range} responses. Here the `async` adjustment is messier, although I think I've managed to come up with a reasonable compromise: the handlers take the `SendOnDrop` by value so that they can drop it on _task completion_ (after the `fn` returns). Still, this is introducing disk reads onto core executor threads, which may have a negative performance impact (thoughts appreciated).
## Additional Info
- [x] For performance it would be great to remove the cloning of full blocks when converting them to blinded blocks to write to disk. I'm going to experiment with a `put_block` API that takes the block by value, breaks it into a blinded block and a payload, stores the blinded block, and then re-assembles the full block for the caller.
- [x] We should measure the latency of blocks-by-root and blocks-by-range responses.
- [x] We should add integration tests that stress the payload reconstruction (basic tests done, issue for more extensive tests: https://github.com/sigp/lighthouse/issues/3159)
- [x] We should (manually) test the schema v9 migration from several prior versions, particularly as blocks have changed on disk and some migrations rely on being able to load blocks.
Co-authored-by: Paul Hauner <paul@paulhauner.com>
2022-05-12 00:42:17 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2022-06-18 23:59:43 +00:00
|
|
|
checksum = "f186de076b3e77b8e6d73c99d1b52edc2a229e604f4b5eb6992c06c11d79d537"
|
Separate execution payloads in the DB (#3157)
## Proposed Changes
Reduce post-merge disk usage by not storing finalized execution payloads in Lighthouse's database.
:warning: **This is achieved in a backwards-incompatible way for networks that have already merged** :warning:. Kiln users and shadow fork enjoyers will be unable to downgrade after running the code from this PR. The upgrade migration may take several minutes to run, and can't be aborted after it begins.
The main changes are:
- New column in the database called `ExecPayload`, keyed by beacon block root.
- The `BeaconBlock` column now stores blinded blocks only.
- Lots of places that previously used full blocks now use blinded blocks, e.g. analytics APIs, block replay in the DB, etc.
- On finalization:
- `prune_abanonded_forks` deletes non-canonical payloads whilst deleting non-canonical blocks.
- `migrate_db` deletes finalized canonical payloads whilst deleting finalized states.
- Conversions between blinded and full blocks are implemented in a compositional way, duplicating some work from Sean's PR #3134.
- The execution layer has a new `get_payload_by_block_hash` method that reconstructs a payload using the EE's `eth_getBlockByHash` call.
- I've tested manually that it works on Kiln, using Geth and Nethermind.
- This isn't necessarily the most efficient method, and new engine APIs are being discussed to improve this: https://github.com/ethereum/execution-apis/pull/146.
- We're depending on the `ethers` master branch, due to lots of recent changes. We're also using a workaround for https://github.com/gakonst/ethers-rs/issues/1134.
- Payload reconstruction is used in the HTTP API via `BeaconChain::get_block`, which is now `async`. Due to the `async` fn, the `blocking_json` wrapper has been removed.
- Payload reconstruction is used in network RPC to serve blocks-by-{root,range} responses. Here the `async` adjustment is messier, although I think I've managed to come up with a reasonable compromise: the handlers take the `SendOnDrop` by value so that they can drop it on _task completion_ (after the `fn` returns). Still, this is introducing disk reads onto core executor threads, which may have a negative performance impact (thoughts appreciated).
## Additional Info
- [x] For performance it would be great to remove the cloning of full blocks when converting them to blinded blocks to write to disk. I'm going to experiment with a `put_block` API that takes the block by value, breaks it into a blinded block and a payload, stores the blinded block, and then re-assembles the full block for the caller.
- [x] We should measure the latency of blocks-by-root and blocks-by-range responses.
- [x] We should add integration tests that stress the payload reconstruction (basic tests done, issue for more extensive tests: https://github.com/sigp/lighthouse/issues/3159)
- [x] We should (manually) test the schema v9 migration from several prior versions, particularly as blocks have changed on disk and some migrations rely on being able to load blocks.
Co-authored-by: Paul Hauner <paul@paulhauner.com>
2022-05-12 00:42:17 +00:00
|
|
|
dependencies = [
|
|
|
|
"ethereum-types 0.13.1",
|
2021-07-09 03:20:24 +00:00
|
|
|
"hex",
|
Separate execution payloads in the DB (#3157)
## Proposed Changes
Reduce post-merge disk usage by not storing finalized execution payloads in Lighthouse's database.
:warning: **This is achieved in a backwards-incompatible way for networks that have already merged** :warning:. Kiln users and shadow fork enjoyers will be unable to downgrade after running the code from this PR. The upgrade migration may take several minutes to run, and can't be aborted after it begins.
The main changes are:
- New column in the database called `ExecPayload`, keyed by beacon block root.
- The `BeaconBlock` column now stores blinded blocks only.
- Lots of places that previously used full blocks now use blinded blocks, e.g. analytics APIs, block replay in the DB, etc.
- On finalization:
- `prune_abanonded_forks` deletes non-canonical payloads whilst deleting non-canonical blocks.
- `migrate_db` deletes finalized canonical payloads whilst deleting finalized states.
- Conversions between blinded and full blocks are implemented in a compositional way, duplicating some work from Sean's PR #3134.
- The execution layer has a new `get_payload_by_block_hash` method that reconstructs a payload using the EE's `eth_getBlockByHash` call.
- I've tested manually that it works on Kiln, using Geth and Nethermind.
- This isn't necessarily the most efficient method, and new engine APIs are being discussed to improve this: https://github.com/ethereum/execution-apis/pull/146.
- We're depending on the `ethers` master branch, due to lots of recent changes. We're also using a workaround for https://github.com/gakonst/ethers-rs/issues/1134.
- Payload reconstruction is used in the HTTP API via `BeaconChain::get_block`, which is now `async`. Due to the `async` fn, the `blocking_json` wrapper has been removed.
- Payload reconstruction is used in network RPC to serve blocks-by-{root,range} responses. Here the `async` adjustment is messier, although I think I've managed to come up with a reasonable compromise: the handlers take the `SendOnDrop` by value so that they can drop it on _task completion_ (after the `fn` returns). Still, this is introducing disk reads onto core executor threads, which may have a negative performance impact (thoughts appreciated).
## Additional Info
- [x] For performance it would be great to remove the cloning of full blocks when converting them to blinded blocks to write to disk. I'm going to experiment with a `put_block` API that takes the block by value, breaks it into a blinded block and a payload, stores the blinded block, and then re-assembles the full block for the caller.
- [x] We should measure the latency of blocks-by-root and blocks-by-range responses.
- [x] We should add integration tests that stress the payload reconstruction (basic tests done, issue for more extensive tests: https://github.com/sigp/lighthouse/issues/3159)
- [x] We should (manually) test the schema v9 migration from several prior versions, particularly as blocks have changed on disk and some migrations rely on being able to load blocks.
Co-authored-by: Paul Hauner <paul@paulhauner.com>
2022-05-12 00:42:17 +00:00
|
|
|
"once_cell",
|
|
|
|
"regex",
|
2021-07-09 03:20:24 +00:00
|
|
|
"serde",
|
|
|
|
"serde_json",
|
Separate execution payloads in the DB (#3157)
## Proposed Changes
Reduce post-merge disk usage by not storing finalized execution payloads in Lighthouse's database.
:warning: **This is achieved in a backwards-incompatible way for networks that have already merged** :warning:. Kiln users and shadow fork enjoyers will be unable to downgrade after running the code from this PR. The upgrade migration may take several minutes to run, and can't be aborted after it begins.
The main changes are:
- New column in the database called `ExecPayload`, keyed by beacon block root.
- The `BeaconBlock` column now stores blinded blocks only.
- Lots of places that previously used full blocks now use blinded blocks, e.g. analytics APIs, block replay in the DB, etc.
- On finalization:
- `prune_abanonded_forks` deletes non-canonical payloads whilst deleting non-canonical blocks.
- `migrate_db` deletes finalized canonical payloads whilst deleting finalized states.
- Conversions between blinded and full blocks are implemented in a compositional way, duplicating some work from Sean's PR #3134.
- The execution layer has a new `get_payload_by_block_hash` method that reconstructs a payload using the EE's `eth_getBlockByHash` call.
- I've tested manually that it works on Kiln, using Geth and Nethermind.
- This isn't necessarily the most efficient method, and new engine APIs are being discussed to improve this: https://github.com/ethereum/execution-apis/pull/146.
- We're depending on the `ethers` master branch, due to lots of recent changes. We're also using a workaround for https://github.com/gakonst/ethers-rs/issues/1134.
- Payload reconstruction is used in the HTTP API via `BeaconChain::get_block`, which is now `async`. Due to the `async` fn, the `blocking_json` wrapper has been removed.
- Payload reconstruction is used in network RPC to serve blocks-by-{root,range} responses. Here the `async` adjustment is messier, although I think I've managed to come up with a reasonable compromise: the handlers take the `SendOnDrop` by value so that they can drop it on _task completion_ (after the `fn` returns). Still, this is introducing disk reads onto core executor threads, which may have a negative performance impact (thoughts appreciated).
## Additional Info
- [x] For performance it would be great to remove the cloning of full blocks when converting them to blinded blocks to write to disk. I'm going to experiment with a `put_block` API that takes the block by value, breaks it into a blinded block and a payload, stores the blinded block, and then re-assembles the full block for the caller.
- [x] We should measure the latency of blocks-by-root and blocks-by-range responses.
- [x] We should add integration tests that stress the payload reconstruction (basic tests done, issue for more extensive tests: https://github.com/sigp/lighthouse/issues/3159)
- [x] We should (manually) test the schema v9 migration from several prior versions, particularly as blocks have changed on disk and some migrations rely on being able to load blocks.
Co-authored-by: Paul Hauner <paul@paulhauner.com>
2022-05-12 00:42:17 +00:00
|
|
|
"sha3 0.10.1",
|
2021-07-09 03:20:24 +00:00
|
|
|
"thiserror",
|
2022-04-04 00:26:16 +00:00
|
|
|
"uint",
|
2021-07-09 03:20:24 +00:00
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "ethbloom"
|
2021-10-05 03:53:18 +00:00
|
|
|
version = "0.11.1"
|
2021-07-09 03:20:24 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2021-10-05 03:53:18 +00:00
|
|
|
checksum = "bfb684ac8fa8f6c5759f788862bb22ec6fe3cb392f6bfd08e3c64b603661e3f8"
|
2021-07-09 03:20:24 +00:00
|
|
|
dependencies = [
|
|
|
|
"crunchy",
|
2022-04-04 00:26:16 +00:00
|
|
|
"fixed-hash",
|
|
|
|
"impl-rlp",
|
2021-07-09 03:20:24 +00:00
|
|
|
"impl-serde",
|
2022-04-04 00:26:16 +00:00
|
|
|
"tiny-keccak",
|
2021-07-09 03:20:24 +00:00
|
|
|
]
|
|
|
|
|
Separate execution payloads in the DB (#3157)
## Proposed Changes
Reduce post-merge disk usage by not storing finalized execution payloads in Lighthouse's database.
:warning: **This is achieved in a backwards-incompatible way for networks that have already merged** :warning:. Kiln users and shadow fork enjoyers will be unable to downgrade after running the code from this PR. The upgrade migration may take several minutes to run, and can't be aborted after it begins.
The main changes are:
- New column in the database called `ExecPayload`, keyed by beacon block root.
- The `BeaconBlock` column now stores blinded blocks only.
- Lots of places that previously used full blocks now use blinded blocks, e.g. analytics APIs, block replay in the DB, etc.
- On finalization:
- `prune_abanonded_forks` deletes non-canonical payloads whilst deleting non-canonical blocks.
- `migrate_db` deletes finalized canonical payloads whilst deleting finalized states.
- Conversions between blinded and full blocks are implemented in a compositional way, duplicating some work from Sean's PR #3134.
- The execution layer has a new `get_payload_by_block_hash` method that reconstructs a payload using the EE's `eth_getBlockByHash` call.
- I've tested manually that it works on Kiln, using Geth and Nethermind.
- This isn't necessarily the most efficient method, and new engine APIs are being discussed to improve this: https://github.com/ethereum/execution-apis/pull/146.
- We're depending on the `ethers` master branch, due to lots of recent changes. We're also using a workaround for https://github.com/gakonst/ethers-rs/issues/1134.
- Payload reconstruction is used in the HTTP API via `BeaconChain::get_block`, which is now `async`. Due to the `async` fn, the `blocking_json` wrapper has been removed.
- Payload reconstruction is used in network RPC to serve blocks-by-{root,range} responses. Here the `async` adjustment is messier, although I think I've managed to come up with a reasonable compromise: the handlers take the `SendOnDrop` by value so that they can drop it on _task completion_ (after the `fn` returns). Still, this is introducing disk reads onto core executor threads, which may have a negative performance impact (thoughts appreciated).
## Additional Info
- [x] For performance it would be great to remove the cloning of full blocks when converting them to blinded blocks to write to disk. I'm going to experiment with a `put_block` API that takes the block by value, breaks it into a blinded block and a payload, stores the blinded block, and then re-assembles the full block for the caller.
- [x] We should measure the latency of blocks-by-root and blocks-by-range responses.
- [x] We should add integration tests that stress the payload reconstruction (basic tests done, issue for more extensive tests: https://github.com/sigp/lighthouse/issues/3159)
- [x] We should (manually) test the schema v9 migration from several prior versions, particularly as blocks have changed on disk and some migrations rely on being able to load blocks.
Co-authored-by: Paul Hauner <paul@paulhauner.com>
2022-05-12 00:42:17 +00:00
|
|
|
[[package]]
|
|
|
|
name = "ethbloom"
|
|
|
|
version = "0.12.1"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "11da94e443c60508eb62cf256243a64da87304c2802ac2528847f79d750007ef"
|
|
|
|
dependencies = [
|
|
|
|
"crunchy",
|
|
|
|
"fixed-hash",
|
|
|
|
"impl-rlp",
|
|
|
|
"impl-serde",
|
|
|
|
"tiny-keccak",
|
|
|
|
]
|
|
|
|
|
2021-10-14 02:58:11 +00:00
|
|
|
[[package]]
|
|
|
|
name = "ethereum-types"
|
|
|
|
version = "0.12.1"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "05136f7057fe789f06e6d41d07b34e6f70d8c86e5693b60f97aaa6553553bdaf"
|
|
|
|
dependencies = [
|
Separate execution payloads in the DB (#3157)
## Proposed Changes
Reduce post-merge disk usage by not storing finalized execution payloads in Lighthouse's database.
:warning: **This is achieved in a backwards-incompatible way for networks that have already merged** :warning:. Kiln users and shadow fork enjoyers will be unable to downgrade after running the code from this PR. The upgrade migration may take several minutes to run, and can't be aborted after it begins.
The main changes are:
- New column in the database called `ExecPayload`, keyed by beacon block root.
- The `BeaconBlock` column now stores blinded blocks only.
- Lots of places that previously used full blocks now use blinded blocks, e.g. analytics APIs, block replay in the DB, etc.
- On finalization:
- `prune_abanonded_forks` deletes non-canonical payloads whilst deleting non-canonical blocks.
- `migrate_db` deletes finalized canonical payloads whilst deleting finalized states.
- Conversions between blinded and full blocks are implemented in a compositional way, duplicating some work from Sean's PR #3134.
- The execution layer has a new `get_payload_by_block_hash` method that reconstructs a payload using the EE's `eth_getBlockByHash` call.
- I've tested manually that it works on Kiln, using Geth and Nethermind.
- This isn't necessarily the most efficient method, and new engine APIs are being discussed to improve this: https://github.com/ethereum/execution-apis/pull/146.
- We're depending on the `ethers` master branch, due to lots of recent changes. We're also using a workaround for https://github.com/gakonst/ethers-rs/issues/1134.
- Payload reconstruction is used in the HTTP API via `BeaconChain::get_block`, which is now `async`. Due to the `async` fn, the `blocking_json` wrapper has been removed.
- Payload reconstruction is used in network RPC to serve blocks-by-{root,range} responses. Here the `async` adjustment is messier, although I think I've managed to come up with a reasonable compromise: the handlers take the `SendOnDrop` by value so that they can drop it on _task completion_ (after the `fn` returns). Still, this is introducing disk reads onto core executor threads, which may have a negative performance impact (thoughts appreciated).
## Additional Info
- [x] For performance it would be great to remove the cloning of full blocks when converting them to blinded blocks to write to disk. I'm going to experiment with a `put_block` API that takes the block by value, breaks it into a blinded block and a payload, stores the blinded block, and then re-assembles the full block for the caller.
- [x] We should measure the latency of blocks-by-root and blocks-by-range responses.
- [x] We should add integration tests that stress the payload reconstruction (basic tests done, issue for more extensive tests: https://github.com/sigp/lighthouse/issues/3159)
- [x] We should (manually) test the schema v9 migration from several prior versions, particularly as blocks have changed on disk and some migrations rely on being able to load blocks.
Co-authored-by: Paul Hauner <paul@paulhauner.com>
2022-05-12 00:42:17 +00:00
|
|
|
"ethbloom 0.11.1",
|
2022-04-04 00:26:16 +00:00
|
|
|
"fixed-hash",
|
|
|
|
"impl-rlp",
|
2021-10-14 02:58:11 +00:00
|
|
|
"impl-serde",
|
Separate execution payloads in the DB (#3157)
## Proposed Changes
Reduce post-merge disk usage by not storing finalized execution payloads in Lighthouse's database.
:warning: **This is achieved in a backwards-incompatible way for networks that have already merged** :warning:. Kiln users and shadow fork enjoyers will be unable to downgrade after running the code from this PR. The upgrade migration may take several minutes to run, and can't be aborted after it begins.
The main changes are:
- New column in the database called `ExecPayload`, keyed by beacon block root.
- The `BeaconBlock` column now stores blinded blocks only.
- Lots of places that previously used full blocks now use blinded blocks, e.g. analytics APIs, block replay in the DB, etc.
- On finalization:
- `prune_abanonded_forks` deletes non-canonical payloads whilst deleting non-canonical blocks.
- `migrate_db` deletes finalized canonical payloads whilst deleting finalized states.
- Conversions between blinded and full blocks are implemented in a compositional way, duplicating some work from Sean's PR #3134.
- The execution layer has a new `get_payload_by_block_hash` method that reconstructs a payload using the EE's `eth_getBlockByHash` call.
- I've tested manually that it works on Kiln, using Geth and Nethermind.
- This isn't necessarily the most efficient method, and new engine APIs are being discussed to improve this: https://github.com/ethereum/execution-apis/pull/146.
- We're depending on the `ethers` master branch, due to lots of recent changes. We're also using a workaround for https://github.com/gakonst/ethers-rs/issues/1134.
- Payload reconstruction is used in the HTTP API via `BeaconChain::get_block`, which is now `async`. Due to the `async` fn, the `blocking_json` wrapper has been removed.
- Payload reconstruction is used in network RPC to serve blocks-by-{root,range} responses. Here the `async` adjustment is messier, although I think I've managed to come up with a reasonable compromise: the handlers take the `SendOnDrop` by value so that they can drop it on _task completion_ (after the `fn` returns). Still, this is introducing disk reads onto core executor threads, which may have a negative performance impact (thoughts appreciated).
## Additional Info
- [x] For performance it would be great to remove the cloning of full blocks when converting them to blinded blocks to write to disk. I'm going to experiment with a `put_block` API that takes the block by value, breaks it into a blinded block and a payload, stores the blinded block, and then re-assembles the full block for the caller.
- [x] We should measure the latency of blocks-by-root and blocks-by-range responses.
- [x] We should add integration tests that stress the payload reconstruction (basic tests done, issue for more extensive tests: https://github.com/sigp/lighthouse/issues/3159)
- [x] We should (manually) test the schema v9 migration from several prior versions, particularly as blocks have changed on disk and some migrations rely on being able to load blocks.
Co-authored-by: Paul Hauner <paul@paulhauner.com>
2022-05-12 00:42:17 +00:00
|
|
|
"primitive-types 0.10.1",
|
2022-04-04 00:26:16 +00:00
|
|
|
"uint",
|
2021-10-14 02:58:11 +00:00
|
|
|
]
|
|
|
|
|
Separate execution payloads in the DB (#3157)
## Proposed Changes
Reduce post-merge disk usage by not storing finalized execution payloads in Lighthouse's database.
:warning: **This is achieved in a backwards-incompatible way for networks that have already merged** :warning:. Kiln users and shadow fork enjoyers will be unable to downgrade after running the code from this PR. The upgrade migration may take several minutes to run, and can't be aborted after it begins.
The main changes are:
- New column in the database called `ExecPayload`, keyed by beacon block root.
- The `BeaconBlock` column now stores blinded blocks only.
- Lots of places that previously used full blocks now use blinded blocks, e.g. analytics APIs, block replay in the DB, etc.
- On finalization:
- `prune_abanonded_forks` deletes non-canonical payloads whilst deleting non-canonical blocks.
- `migrate_db` deletes finalized canonical payloads whilst deleting finalized states.
- Conversions between blinded and full blocks are implemented in a compositional way, duplicating some work from Sean's PR #3134.
- The execution layer has a new `get_payload_by_block_hash` method that reconstructs a payload using the EE's `eth_getBlockByHash` call.
- I've tested manually that it works on Kiln, using Geth and Nethermind.
- This isn't necessarily the most efficient method, and new engine APIs are being discussed to improve this: https://github.com/ethereum/execution-apis/pull/146.
- We're depending on the `ethers` master branch, due to lots of recent changes. We're also using a workaround for https://github.com/gakonst/ethers-rs/issues/1134.
- Payload reconstruction is used in the HTTP API via `BeaconChain::get_block`, which is now `async`. Due to the `async` fn, the `blocking_json` wrapper has been removed.
- Payload reconstruction is used in network RPC to serve blocks-by-{root,range} responses. Here the `async` adjustment is messier, although I think I've managed to come up with a reasonable compromise: the handlers take the `SendOnDrop` by value so that they can drop it on _task completion_ (after the `fn` returns). Still, this is introducing disk reads onto core executor threads, which may have a negative performance impact (thoughts appreciated).
## Additional Info
- [x] For performance it would be great to remove the cloning of full blocks when converting them to blinded blocks to write to disk. I'm going to experiment with a `put_block` API that takes the block by value, breaks it into a blinded block and a payload, stores the blinded block, and then re-assembles the full block for the caller.
- [x] We should measure the latency of blocks-by-root and blocks-by-range responses.
- [x] We should add integration tests that stress the payload reconstruction (basic tests done, issue for more extensive tests: https://github.com/sigp/lighthouse/issues/3159)
- [x] We should (manually) test the schema v9 migration from several prior versions, particularly as blocks have changed on disk and some migrations rely on being able to load blocks.
Co-authored-by: Paul Hauner <paul@paulhauner.com>
2022-05-12 00:42:17 +00:00
|
|
|
[[package]]
|
|
|
|
name = "ethereum-types"
|
|
|
|
version = "0.13.1"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "b2827b94c556145446fcce834ca86b7abf0c39a805883fe20e72c5bfdb5a0dc6"
|
|
|
|
dependencies = [
|
|
|
|
"ethbloom 0.12.1",
|
|
|
|
"fixed-hash",
|
|
|
|
"impl-rlp",
|
|
|
|
"impl-serde",
|
|
|
|
"primitive-types 0.11.1",
|
|
|
|
"uint",
|
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "ethers-core"
|
|
|
|
version = "0.6.0"
|
|
|
|
source = "git+https://github.com/gakonst/ethers-rs?rev=02ad93a1cfb7b62eb051c77c61dc4c0218428e4a#02ad93a1cfb7b62eb051c77c61dc4c0218428e4a"
|
|
|
|
dependencies = [
|
|
|
|
"arrayvec",
|
|
|
|
"bytes",
|
|
|
|
"elliptic-curve 0.11.12",
|
2022-06-18 23:59:43 +00:00
|
|
|
"ethabi 17.1.0",
|
Separate execution payloads in the DB (#3157)
## Proposed Changes
Reduce post-merge disk usage by not storing finalized execution payloads in Lighthouse's database.
:warning: **This is achieved in a backwards-incompatible way for networks that have already merged** :warning:. Kiln users and shadow fork enjoyers will be unable to downgrade after running the code from this PR. The upgrade migration may take several minutes to run, and can't be aborted after it begins.
The main changes are:
- New column in the database called `ExecPayload`, keyed by beacon block root.
- The `BeaconBlock` column now stores blinded blocks only.
- Lots of places that previously used full blocks now use blinded blocks, e.g. analytics APIs, block replay in the DB, etc.
- On finalization:
- `prune_abanonded_forks` deletes non-canonical payloads whilst deleting non-canonical blocks.
- `migrate_db` deletes finalized canonical payloads whilst deleting finalized states.
- Conversions between blinded and full blocks are implemented in a compositional way, duplicating some work from Sean's PR #3134.
- The execution layer has a new `get_payload_by_block_hash` method that reconstructs a payload using the EE's `eth_getBlockByHash` call.
- I've tested manually that it works on Kiln, using Geth and Nethermind.
- This isn't necessarily the most efficient method, and new engine APIs are being discussed to improve this: https://github.com/ethereum/execution-apis/pull/146.
- We're depending on the `ethers` master branch, due to lots of recent changes. We're also using a workaround for https://github.com/gakonst/ethers-rs/issues/1134.
- Payload reconstruction is used in the HTTP API via `BeaconChain::get_block`, which is now `async`. Due to the `async` fn, the `blocking_json` wrapper has been removed.
- Payload reconstruction is used in network RPC to serve blocks-by-{root,range} responses. Here the `async` adjustment is messier, although I think I've managed to come up with a reasonable compromise: the handlers take the `SendOnDrop` by value so that they can drop it on _task completion_ (after the `fn` returns). Still, this is introducing disk reads onto core executor threads, which may have a negative performance impact (thoughts appreciated).
## Additional Info
- [x] For performance it would be great to remove the cloning of full blocks when converting them to blinded blocks to write to disk. I'm going to experiment with a `put_block` API that takes the block by value, breaks it into a blinded block and a payload, stores the blinded block, and then re-assembles the full block for the caller.
- [x] We should measure the latency of blocks-by-root and blocks-by-range responses.
- [x] We should add integration tests that stress the payload reconstruction (basic tests done, issue for more extensive tests: https://github.com/sigp/lighthouse/issues/3159)
- [x] We should (manually) test the schema v9 migration from several prior versions, particularly as blocks have changed on disk and some migrations rely on being able to load blocks.
Co-authored-by: Paul Hauner <paul@paulhauner.com>
2022-05-12 00:42:17 +00:00
|
|
|
"generic-array",
|
|
|
|
"hex",
|
|
|
|
"k256 0.10.4",
|
|
|
|
"rand 0.8.5",
|
|
|
|
"rlp",
|
|
|
|
"rlp-derive",
|
|
|
|
"serde",
|
|
|
|
"serde_json",
|
|
|
|
"thiserror",
|
|
|
|
"tiny-keccak",
|
|
|
|
]
|
|
|
|
|
2022-07-18 01:51:36 +00:00
|
|
|
[[package]]
|
|
|
|
name = "ethers-providers"
|
|
|
|
version = "0.6.0"
|
|
|
|
source = "git+https://github.com/gakonst/ethers-rs?rev=02ad93a1cfb7b62eb051c77c61dc4c0218428e4a#02ad93a1cfb7b62eb051c77c61dc4c0218428e4a"
|
|
|
|
dependencies = [
|
|
|
|
"async-trait",
|
|
|
|
"auto_impl",
|
|
|
|
"base64",
|
|
|
|
"ethers-core",
|
|
|
|
"futures-channel",
|
|
|
|
"futures-core",
|
|
|
|
"futures-timer",
|
|
|
|
"futures-util",
|
|
|
|
"hex",
|
|
|
|
"http",
|
|
|
|
"once_cell",
|
|
|
|
"parking_lot 0.11.2",
|
|
|
|
"pin-project 1.0.11",
|
|
|
|
"reqwest",
|
|
|
|
"serde",
|
|
|
|
"serde_json",
|
|
|
|
"thiserror",
|
|
|
|
"tokio",
|
|
|
|
"tokio-tungstenite 0.17.1",
|
|
|
|
"tracing",
|
|
|
|
"tracing-futures",
|
|
|
|
"url",
|
|
|
|
"wasm-bindgen",
|
|
|
|
"wasm-bindgen-futures",
|
|
|
|
"wasm-timer",
|
|
|
|
"web-sys",
|
|
|
|
"ws_stream_wasm",
|
|
|
|
]
|
|
|
|
|
2022-02-17 21:47:06 +00:00
|
|
|
[[package]]
|
|
|
|
name = "execution_engine_integration"
|
|
|
|
version = "0.1.0"
|
|
|
|
dependencies = [
|
2022-07-18 01:51:36 +00:00
|
|
|
"deposit_contract",
|
2022-02-17 21:47:06 +00:00
|
|
|
"environment",
|
2022-07-18 01:51:36 +00:00
|
|
|
"ethers-core",
|
|
|
|
"ethers-providers",
|
2022-02-17 21:47:06 +00:00
|
|
|
"execution_layer",
|
|
|
|
"exit-future",
|
2022-07-21 05:45:37 +00:00
|
|
|
"fork_choice",
|
2022-02-17 21:47:06 +00:00
|
|
|
"futures",
|
2022-07-18 01:51:36 +00:00
|
|
|
"hex",
|
|
|
|
"reqwest",
|
2022-02-17 21:47:06 +00:00
|
|
|
"sensitive_url",
|
|
|
|
"serde_json",
|
|
|
|
"task_executor",
|
|
|
|
"tempfile",
|
|
|
|
"tokio",
|
|
|
|
"types",
|
|
|
|
"unused_port",
|
|
|
|
]
|
|
|
|
|
2021-11-16 00:46:12 +00:00
|
|
|
[[package]]
|
|
|
|
name = "execution_layer"
|
|
|
|
version = "0.1.0"
|
|
|
|
dependencies = [
|
|
|
|
"async-trait",
|
2022-07-01 01:15:19 +00:00
|
|
|
"builder_client",
|
2021-11-16 00:46:12 +00:00
|
|
|
"bytes",
|
|
|
|
"environment",
|
2022-06-29 09:07:09 +00:00
|
|
|
"eth2",
|
2021-11-29 22:32:53 +00:00
|
|
|
"eth2_serde_utils",
|
2022-06-29 09:07:09 +00:00
|
|
|
"eth2_ssz",
|
2021-11-29 03:57:54 +00:00
|
|
|
"eth2_ssz_types",
|
Separate execution payloads in the DB (#3157)
## Proposed Changes
Reduce post-merge disk usage by not storing finalized execution payloads in Lighthouse's database.
:warning: **This is achieved in a backwards-incompatible way for networks that have already merged** :warning:. Kiln users and shadow fork enjoyers will be unable to downgrade after running the code from this PR. The upgrade migration may take several minutes to run, and can't be aborted after it begins.
The main changes are:
- New column in the database called `ExecPayload`, keyed by beacon block root.
- The `BeaconBlock` column now stores blinded blocks only.
- Lots of places that previously used full blocks now use blinded blocks, e.g. analytics APIs, block replay in the DB, etc.
- On finalization:
- `prune_abanonded_forks` deletes non-canonical payloads whilst deleting non-canonical blocks.
- `migrate_db` deletes finalized canonical payloads whilst deleting finalized states.
- Conversions between blinded and full blocks are implemented in a compositional way, duplicating some work from Sean's PR #3134.
- The execution layer has a new `get_payload_by_block_hash` method that reconstructs a payload using the EE's `eth_getBlockByHash` call.
- I've tested manually that it works on Kiln, using Geth and Nethermind.
- This isn't necessarily the most efficient method, and new engine APIs are being discussed to improve this: https://github.com/ethereum/execution-apis/pull/146.
- We're depending on the `ethers` master branch, due to lots of recent changes. We're also using a workaround for https://github.com/gakonst/ethers-rs/issues/1134.
- Payload reconstruction is used in the HTTP API via `BeaconChain::get_block`, which is now `async`. Due to the `async` fn, the `blocking_json` wrapper has been removed.
- Payload reconstruction is used in network RPC to serve blocks-by-{root,range} responses. Here the `async` adjustment is messier, although I think I've managed to come up with a reasonable compromise: the handlers take the `SendOnDrop` by value so that they can drop it on _task completion_ (after the `fn` returns). Still, this is introducing disk reads onto core executor threads, which may have a negative performance impact (thoughts appreciated).
## Additional Info
- [x] For performance it would be great to remove the cloning of full blocks when converting them to blinded blocks to write to disk. I'm going to experiment with a `put_block` API that takes the block by value, breaks it into a blinded block and a payload, stores the blinded block, and then re-assembles the full block for the caller.
- [x] We should measure the latency of blocks-by-root and blocks-by-range responses.
- [x] We should add integration tests that stress the payload reconstruction (basic tests done, issue for more extensive tests: https://github.com/sigp/lighthouse/issues/3159)
- [x] We should (manually) test the schema v9 migration from several prior versions, particularly as blocks have changed on disk and some migrations rely on being able to load blocks.
Co-authored-by: Paul Hauner <paul@paulhauner.com>
2022-05-12 00:42:17 +00:00
|
|
|
"ethers-core",
|
2021-11-16 00:46:12 +00:00
|
|
|
"exit-future",
|
2022-07-21 05:45:37 +00:00
|
|
|
"fork_choice",
|
2021-11-16 00:46:12 +00:00
|
|
|
"futures",
|
|
|
|
"hex",
|
2022-03-08 06:46:24 +00:00
|
|
|
"jsonwebtoken",
|
2022-03-09 00:42:05 +00:00
|
|
|
"lazy_static",
|
|
|
|
"lighthouse_metrics",
|
2021-11-16 00:46:12 +00:00
|
|
|
"lru",
|
2022-06-18 23:59:43 +00:00
|
|
|
"parking_lot 0.12.1",
|
2022-04-04 00:26:16 +00:00
|
|
|
"rand 0.8.5",
|
2021-11-16 00:46:12 +00:00
|
|
|
"reqwest",
|
|
|
|
"sensitive_url",
|
|
|
|
"serde",
|
|
|
|
"serde_json",
|
|
|
|
"slog",
|
|
|
|
"slot_clock",
|
2022-06-29 09:07:09 +00:00
|
|
|
"state_processing",
|
2021-11-16 00:46:12 +00:00
|
|
|
"task_executor",
|
2022-03-08 06:46:24 +00:00
|
|
|
"tempfile",
|
2021-11-16 00:46:12 +00:00
|
|
|
"tokio",
|
2021-11-29 03:57:54 +00:00
|
|
|
"tree_hash",
|
2022-03-31 07:52:23 +00:00
|
|
|
"tree_hash_derive",
|
2021-11-16 00:46:12 +00:00
|
|
|
"types",
|
2022-04-04 00:26:16 +00:00
|
|
|
"warp",
|
2022-03-08 06:46:24 +00:00
|
|
|
"zeroize",
|
2021-11-16 00:46:12 +00:00
|
|
|
]
|
|
|
|
|
2019-12-09 11:39:44 +00:00
|
|
|
[[package]]
|
|
|
|
name = "exit-future"
|
2020-05-17 11:16:48 +00:00
|
|
|
version = "0.2.0"
|
2019-12-09 11:39:44 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2020-05-17 11:16:48 +00:00
|
|
|
checksum = "e43f2f1833d64e33f15592464d6fdd70f349dda7b1a53088eb83cd94014008c5"
|
2019-12-09 11:39:44 +00:00
|
|
|
dependencies = [
|
2021-07-09 03:20:24 +00:00
|
|
|
"futures",
|
2020-11-19 04:04:52 +00:00
|
|
|
]
|
|
|
|
|
2020-11-27 08:37:44 +00:00
|
|
|
[[package]]
|
|
|
|
name = "fallback"
|
|
|
|
version = "0.1.0"
|
|
|
|
dependencies = [
|
2021-08-17 01:00:24 +00:00
|
|
|
"itertools",
|
2020-11-27 08:37:44 +00:00
|
|
|
]
|
|
|
|
|
2020-05-18 06:25:16 +00:00
|
|
|
[[package]]
|
|
|
|
name = "fallible-iterator"
|
|
|
|
version = "0.2.0"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "4443176a9f2c162692bd3d352d745ef9413eec5782a80d8fd6f8a1ac692a07f7"
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "fallible-streaming-iterator"
|
|
|
|
version = "0.1.9"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "7360491ce676a36bf9bb3c56c1aa791658183a54d2744120f27285738d90465a"
|
|
|
|
|
2022-01-11 01:35:56 +00:00
|
|
|
[[package]]
|
|
|
|
name = "fastrand"
|
2022-02-01 23:53:53 +00:00
|
|
|
version = "1.7.0"
|
2022-01-11 01:35:56 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2022-02-01 23:53:53 +00:00
|
|
|
checksum = "c3fcf0cee53519c866c09b5de1f6c56ff9d647101f81c1964fa632e148896cdf"
|
2022-01-11 01:35:56 +00:00
|
|
|
dependencies = [
|
|
|
|
"instant",
|
|
|
|
]
|
|
|
|
|
2020-10-23 04:16:33 +00:00
|
|
|
[[package]]
|
|
|
|
name = "ff"
|
2021-07-05 00:54:17 +00:00
|
|
|
version = "0.9.0"
|
2020-10-23 04:16:33 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2021-07-05 00:54:17 +00:00
|
|
|
checksum = "72a4d941a5b7c2a75222e2d44fcdf634a67133d9db31e177ae5ff6ecda852bfe"
|
2020-10-23 04:16:33 +00:00
|
|
|
dependencies = [
|
Separate execution payloads in the DB (#3157)
## Proposed Changes
Reduce post-merge disk usage by not storing finalized execution payloads in Lighthouse's database.
:warning: **This is achieved in a backwards-incompatible way for networks that have already merged** :warning:. Kiln users and shadow fork enjoyers will be unable to downgrade after running the code from this PR. The upgrade migration may take several minutes to run, and can't be aborted after it begins.
The main changes are:
- New column in the database called `ExecPayload`, keyed by beacon block root.
- The `BeaconBlock` column now stores blinded blocks only.
- Lots of places that previously used full blocks now use blinded blocks, e.g. analytics APIs, block replay in the DB, etc.
- On finalization:
- `prune_abanonded_forks` deletes non-canonical payloads whilst deleting non-canonical blocks.
- `migrate_db` deletes finalized canonical payloads whilst deleting finalized states.
- Conversions between blinded and full blocks are implemented in a compositional way, duplicating some work from Sean's PR #3134.
- The execution layer has a new `get_payload_by_block_hash` method that reconstructs a payload using the EE's `eth_getBlockByHash` call.
- I've tested manually that it works on Kiln, using Geth and Nethermind.
- This isn't necessarily the most efficient method, and new engine APIs are being discussed to improve this: https://github.com/ethereum/execution-apis/pull/146.
- We're depending on the `ethers` master branch, due to lots of recent changes. We're also using a workaround for https://github.com/gakonst/ethers-rs/issues/1134.
- Payload reconstruction is used in the HTTP API via `BeaconChain::get_block`, which is now `async`. Due to the `async` fn, the `blocking_json` wrapper has been removed.
- Payload reconstruction is used in network RPC to serve blocks-by-{root,range} responses. Here the `async` adjustment is messier, although I think I've managed to come up with a reasonable compromise: the handlers take the `SendOnDrop` by value so that they can drop it on _task completion_ (after the `fn` returns). Still, this is introducing disk reads onto core executor threads, which may have a negative performance impact (thoughts appreciated).
## Additional Info
- [x] For performance it would be great to remove the cloning of full blocks when converting them to blinded blocks to write to disk. I'm going to experiment with a `put_block` API that takes the block by value, breaks it into a blinded block and a payload, stores the blinded block, and then re-assembles the full block for the caller.
- [x] We should measure the latency of blocks-by-root and blocks-by-range responses.
- [x] We should add integration tests that stress the payload reconstruction (basic tests done, issue for more extensive tests: https://github.com/sigp/lighthouse/issues/3159)
- [x] We should (manually) test the schema v9 migration from several prior versions, particularly as blocks have changed on disk and some migrations rely on being able to load blocks.
Co-authored-by: Paul Hauner <paul@paulhauner.com>
2022-05-12 00:42:17 +00:00
|
|
|
"bitvec 0.20.4",
|
|
|
|
"rand_core 0.6.3",
|
|
|
|
"subtle",
|
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "ff"
|
2022-06-18 23:59:43 +00:00
|
|
|
version = "0.11.1"
|
Separate execution payloads in the DB (#3157)
## Proposed Changes
Reduce post-merge disk usage by not storing finalized execution payloads in Lighthouse's database.
:warning: **This is achieved in a backwards-incompatible way for networks that have already merged** :warning:. Kiln users and shadow fork enjoyers will be unable to downgrade after running the code from this PR. The upgrade migration may take several minutes to run, and can't be aborted after it begins.
The main changes are:
- New column in the database called `ExecPayload`, keyed by beacon block root.
- The `BeaconBlock` column now stores blinded blocks only.
- Lots of places that previously used full blocks now use blinded blocks, e.g. analytics APIs, block replay in the DB, etc.
- On finalization:
- `prune_abanonded_forks` deletes non-canonical payloads whilst deleting non-canonical blocks.
- `migrate_db` deletes finalized canonical payloads whilst deleting finalized states.
- Conversions between blinded and full blocks are implemented in a compositional way, duplicating some work from Sean's PR #3134.
- The execution layer has a new `get_payload_by_block_hash` method that reconstructs a payload using the EE's `eth_getBlockByHash` call.
- I've tested manually that it works on Kiln, using Geth and Nethermind.
- This isn't necessarily the most efficient method, and new engine APIs are being discussed to improve this: https://github.com/ethereum/execution-apis/pull/146.
- We're depending on the `ethers` master branch, due to lots of recent changes. We're also using a workaround for https://github.com/gakonst/ethers-rs/issues/1134.
- Payload reconstruction is used in the HTTP API via `BeaconChain::get_block`, which is now `async`. Due to the `async` fn, the `blocking_json` wrapper has been removed.
- Payload reconstruction is used in network RPC to serve blocks-by-{root,range} responses. Here the `async` adjustment is messier, although I think I've managed to come up with a reasonable compromise: the handlers take the `SendOnDrop` by value so that they can drop it on _task completion_ (after the `fn` returns). Still, this is introducing disk reads onto core executor threads, which may have a negative performance impact (thoughts appreciated).
## Additional Info
- [x] For performance it would be great to remove the cloning of full blocks when converting them to blinded blocks to write to disk. I'm going to experiment with a `put_block` API that takes the block by value, breaks it into a blinded block and a payload, stores the blinded block, and then re-assembles the full block for the caller.
- [x] We should measure the latency of blocks-by-root and blocks-by-range responses.
- [x] We should add integration tests that stress the payload reconstruction (basic tests done, issue for more extensive tests: https://github.com/sigp/lighthouse/issues/3159)
- [x] We should (manually) test the schema v9 migration from several prior versions, particularly as blocks have changed on disk and some migrations rely on being able to load blocks.
Co-authored-by: Paul Hauner <paul@paulhauner.com>
2022-05-12 00:42:17 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2022-06-18 23:59:43 +00:00
|
|
|
checksum = "131655483be284720a17d74ff97592b8e76576dc25563148601df2d7c9080924"
|
Separate execution payloads in the DB (#3157)
## Proposed Changes
Reduce post-merge disk usage by not storing finalized execution payloads in Lighthouse's database.
:warning: **This is achieved in a backwards-incompatible way for networks that have already merged** :warning:. Kiln users and shadow fork enjoyers will be unable to downgrade after running the code from this PR. The upgrade migration may take several minutes to run, and can't be aborted after it begins.
The main changes are:
- New column in the database called `ExecPayload`, keyed by beacon block root.
- The `BeaconBlock` column now stores blinded blocks only.
- Lots of places that previously used full blocks now use blinded blocks, e.g. analytics APIs, block replay in the DB, etc.
- On finalization:
- `prune_abanonded_forks` deletes non-canonical payloads whilst deleting non-canonical blocks.
- `migrate_db` deletes finalized canonical payloads whilst deleting finalized states.
- Conversions between blinded and full blocks are implemented in a compositional way, duplicating some work from Sean's PR #3134.
- The execution layer has a new `get_payload_by_block_hash` method that reconstructs a payload using the EE's `eth_getBlockByHash` call.
- I've tested manually that it works on Kiln, using Geth and Nethermind.
- This isn't necessarily the most efficient method, and new engine APIs are being discussed to improve this: https://github.com/ethereum/execution-apis/pull/146.
- We're depending on the `ethers` master branch, due to lots of recent changes. We're also using a workaround for https://github.com/gakonst/ethers-rs/issues/1134.
- Payload reconstruction is used in the HTTP API via `BeaconChain::get_block`, which is now `async`. Due to the `async` fn, the `blocking_json` wrapper has been removed.
- Payload reconstruction is used in network RPC to serve blocks-by-{root,range} responses. Here the `async` adjustment is messier, although I think I've managed to come up with a reasonable compromise: the handlers take the `SendOnDrop` by value so that they can drop it on _task completion_ (after the `fn` returns). Still, this is introducing disk reads onto core executor threads, which may have a negative performance impact (thoughts appreciated).
## Additional Info
- [x] For performance it would be great to remove the cloning of full blocks when converting them to blinded blocks to write to disk. I'm going to experiment with a `put_block` API that takes the block by value, breaks it into a blinded block and a payload, stores the blinded block, and then re-assembles the full block for the caller.
- [x] We should measure the latency of blocks-by-root and blocks-by-range responses.
- [x] We should add integration tests that stress the payload reconstruction (basic tests done, issue for more extensive tests: https://github.com/sigp/lighthouse/issues/3159)
- [x] We should (manually) test the schema v9 migration from several prior versions, particularly as blocks have changed on disk and some migrations rely on being able to load blocks.
Co-authored-by: Paul Hauner <paul@paulhauner.com>
2022-05-12 00:42:17 +00:00
|
|
|
dependencies = [
|
2021-07-05 00:54:17 +00:00
|
|
|
"rand_core 0.6.3",
|
2021-07-13 00:48:33 +00:00
|
|
|
"subtle",
|
2020-10-23 04:16:33 +00:00
|
|
|
]
|
|
|
|
|
2021-08-17 01:00:24 +00:00
|
|
|
[[package]]
|
|
|
|
name = "ffi-opaque"
|
|
|
|
version = "2.0.1"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "ec54ac60a7f2ee9a97cad9946f9bf629a3bc6a7ae59e68983dc9318f5a54b81a"
|
|
|
|
|
2021-05-19 23:05:16 +00:00
|
|
|
[[package]]
|
|
|
|
name = "field-offset"
|
2021-07-05 00:54:17 +00:00
|
|
|
version = "0.3.4"
|
2021-05-19 23:05:16 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2021-07-05 00:54:17 +00:00
|
|
|
checksum = "1e1c54951450cbd39f3dbcf1005ac413b49487dabf18a720ad2383eccfeffb92"
|
2021-05-19 23:05:16 +00:00
|
|
|
dependencies = [
|
|
|
|
"memoffset",
|
|
|
|
"rustc_version 0.3.3",
|
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "filesystem"
|
|
|
|
version = "0.1.0"
|
|
|
|
dependencies = [
|
2021-07-09 03:20:24 +00:00
|
|
|
"winapi",
|
2021-05-19 23:05:16 +00:00
|
|
|
"windows-acl",
|
|
|
|
]
|
|
|
|
|
2021-07-09 03:20:24 +00:00
|
|
|
[[package]]
|
|
|
|
name = "fixed-hash"
|
|
|
|
version = "0.7.0"
|
2021-10-14 02:58:11 +00:00
|
|
|
source = "git+https://github.com/paritytech/parity-common?rev=df638ab0885293d21d656dc300d39236b69ce57d#df638ab0885293d21d656dc300d39236b69ce57d"
|
2021-07-09 03:20:24 +00:00
|
|
|
dependencies = [
|
2021-10-14 02:58:11 +00:00
|
|
|
"arbitrary",
|
2021-07-09 03:20:24 +00:00
|
|
|
"byteorder",
|
2022-03-02 05:09:52 +00:00
|
|
|
"rand 0.8.5",
|
2021-07-09 03:20:24 +00:00
|
|
|
"rustc-hex",
|
|
|
|
"static_assertions",
|
|
|
|
]
|
|
|
|
|
2021-10-29 01:59:29 +00:00
|
|
|
[[package]]
|
|
|
|
name = "fixedbitset"
|
2022-07-05 23:36:42 +00:00
|
|
|
version = "0.4.2"
|
2021-10-29 01:59:29 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2022-07-05 23:36:42 +00:00
|
|
|
checksum = "0ce7134b9999ecaf8bcd65542e436736ef32ddca1b3e06094cb6ec5755203b80"
|
2021-10-29 01:59:29 +00:00
|
|
|
|
2019-12-09 11:39:44 +00:00
|
|
|
[[package]]
|
|
|
|
name = "flate2"
|
2022-06-18 23:59:43 +00:00
|
|
|
version = "1.0.24"
|
2019-12-09 11:39:44 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2022-06-18 23:59:43 +00:00
|
|
|
checksum = "f82b0f4c27ad9f8bfd1f3208d882da2b09c301bc1c828fd3a00d0216d2fbbff6"
|
2019-12-09 11:39:44 +00:00
|
|
|
dependencies = [
|
2020-05-10 09:56:31 +00:00
|
|
|
"crc32fast",
|
|
|
|
"libz-sys",
|
2021-05-04 00:44:05 +00:00
|
|
|
"miniz_oxide",
|
2020-11-24 00:44:40 +00:00
|
|
|
]
|
|
|
|
|
2019-12-09 11:39:44 +00:00
|
|
|
[[package]]
|
|
|
|
name = "fnv"
|
2020-05-26 20:34:15 +00:00
|
|
|
version = "1.0.7"
|
2019-12-09 11:39:44 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2020-05-26 20:34:15 +00:00
|
|
|
checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1"
|
2019-12-09 11:39:44 +00:00
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "foreign-types"
|
|
|
|
version = "0.3.2"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2020-05-10 09:56:31 +00:00
|
|
|
checksum = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1"
|
2019-12-09 11:39:44 +00:00
|
|
|
dependencies = [
|
2020-05-10 09:56:31 +00:00
|
|
|
"foreign-types-shared",
|
2019-12-09 11:39:44 +00:00
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "foreign-types-shared"
|
|
|
|
version = "0.1.1"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2020-05-10 09:56:31 +00:00
|
|
|
checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b"
|
2019-12-09 11:39:44 +00:00
|
|
|
|
v0.12 fork choice update (#1229)
* Incomplete scraps
* Add progress on new fork choice impl
* Further progress
* First complete compiling version
* Remove chain reference
* Add new lmd_ghost crate
* Start integrating into beacon chain
* Update `milagro_bls` to new release (#1183)
* Update milagro_bls to new release
Signed-off-by: Kirk Baird <baird.k@outlook.com>
* Tidy up fake cryptos
Signed-off-by: Kirk Baird <baird.k@outlook.com>
* move SecretHash to bls and put plaintext back
Signed-off-by: Kirk Baird <baird.k@outlook.com>
* Update state processing for v0.12
* Fix EF test runners for v0.12
* Fix some tests
* Fix broken attestation verification test
* More test fixes
* Rough beacon chain impl working
* Remove fork_choice_2
* Remove checkpoint manager
* Half finished ssz impl
* Add missed file
* Add persistence
* Tidy, fix some compile errors
* Remove RwLock from ProtoArrayForkChoice
* Fix store-based compile errors
* Add comments, tidy
* Move function out of ForkChoice struct
* Start testing
* More testing
* Fix compile error
* Tidy beacon_chain::fork_choice
* Queue attestations from the current slot
* Allow fork choice to handle prior-to-genesis start
* Improve error granularity
* Test attestation dequeuing
* Process attestations during block
* Store target root in fork choice
* Move fork choice verification into new crate
* Update tests
* Consensus updates for v0.12 (#1228)
* Update state processing for v0.12
* Fix EF test runners for v0.12
* Fix some tests
* Fix broken attestation verification test
* More test fixes
* Fix typo found in review
* Add `Block` struct to ProtoArray
* Start fixing get_ancestor
* Add rough progress on testing
* Get fork choice tests working
* Progress with testing
* Fix partialeq impl
* Move slot clock from fc_store
* Improve testing
* Add testing for best justified
* Add clone back to SystemTimeSlotClock
* Add balances test
* Start adding balances cache again
* Wire-in balances cache
* Improve tests
* Remove commented-out tests
* Remove beacon_chain::ForkChoice
* Rename crates
* Update wider codebase to new fork_choice layout
* Move advance_slot in test harness
* Tidy ForkChoice::update_time
* Fix verification tests
* Fix compile error with iter::once
* Fix fork choice tests
* Ensure block attestations are processed
* Fix failing beacon_chain tests
* Add first invalid block check
* Add finalized block check
* Progress with testing, new store builder
* Add fixes to get_ancestor
* Fix old genesis justification test
* Fix remaining fork choice tests
* Change root iteration method
* Move on_verified_block
* Remove unused method
* Start adding attestation verification tests
* Add invalid ffg target test
* Add target epoch test
* Add queued attestation test
* Remove old fork choice verification tests
* Tidy, add test
* Move fork choice lock drop
* Rename BeaconForkChoiceStore
* Add comments, tidy BeaconForkChoiceStore
* Update metrics, rename fork_choice_store.rs
* Remove genesis_block_root from ForkChoice
* Tidy
* Update fork_choice comments
* Tidy, add comments
* Tidy, simplify ForkChoice, fix compile issue
* Tidy, removed dead file
* Increase http request timeout
* Fix failing rest_api test
* Set HTTP timeout back to 5s
* Apply fix to get_ancestor
* Address Michael's comments
* Fix typo
* Revert "Fix broken attestation verification test"
This reverts commit 722cdc903b12611de27916a57eeecfa3224f2279.
Co-authored-by: Kirk Baird <baird.k@outlook.com>
Co-authored-by: Michael Sproul <michael@sigmaprime.io>
2020-06-17 01:10:22 +00:00
|
|
|
[[package]]
|
|
|
|
name = "fork_choice"
|
|
|
|
version = "0.1.0"
|
|
|
|
dependencies = [
|
|
|
|
"beacon_chain",
|
2021-11-29 03:57:54 +00:00
|
|
|
"eth2_ssz",
|
2022-03-31 07:52:23 +00:00
|
|
|
"eth2_ssz_derive",
|
v0.12 fork choice update (#1229)
* Incomplete scraps
* Add progress on new fork choice impl
* Further progress
* First complete compiling version
* Remove chain reference
* Add new lmd_ghost crate
* Start integrating into beacon chain
* Update `milagro_bls` to new release (#1183)
* Update milagro_bls to new release
Signed-off-by: Kirk Baird <baird.k@outlook.com>
* Tidy up fake cryptos
Signed-off-by: Kirk Baird <baird.k@outlook.com>
* move SecretHash to bls and put plaintext back
Signed-off-by: Kirk Baird <baird.k@outlook.com>
* Update state processing for v0.12
* Fix EF test runners for v0.12
* Fix some tests
* Fix broken attestation verification test
* More test fixes
* Rough beacon chain impl working
* Remove fork_choice_2
* Remove checkpoint manager
* Half finished ssz impl
* Add missed file
* Add persistence
* Tidy, fix some compile errors
* Remove RwLock from ProtoArrayForkChoice
* Fix store-based compile errors
* Add comments, tidy
* Move function out of ForkChoice struct
* Start testing
* More testing
* Fix compile error
* Tidy beacon_chain::fork_choice
* Queue attestations from the current slot
* Allow fork choice to handle prior-to-genesis start
* Improve error granularity
* Test attestation dequeuing
* Process attestations during block
* Store target root in fork choice
* Move fork choice verification into new crate
* Update tests
* Consensus updates for v0.12 (#1228)
* Update state processing for v0.12
* Fix EF test runners for v0.12
* Fix some tests
* Fix broken attestation verification test
* More test fixes
* Fix typo found in review
* Add `Block` struct to ProtoArray
* Start fixing get_ancestor
* Add rough progress on testing
* Get fork choice tests working
* Progress with testing
* Fix partialeq impl
* Move slot clock from fc_store
* Improve testing
* Add testing for best justified
* Add clone back to SystemTimeSlotClock
* Add balances test
* Start adding balances cache again
* Wire-in balances cache
* Improve tests
* Remove commented-out tests
* Remove beacon_chain::ForkChoice
* Rename crates
* Update wider codebase to new fork_choice layout
* Move advance_slot in test harness
* Tidy ForkChoice::update_time
* Fix verification tests
* Fix compile error with iter::once
* Fix fork choice tests
* Ensure block attestations are processed
* Fix failing beacon_chain tests
* Add first invalid block check
* Add finalized block check
* Progress with testing, new store builder
* Add fixes to get_ancestor
* Fix old genesis justification test
* Fix remaining fork choice tests
* Change root iteration method
* Move on_verified_block
* Remove unused method
* Start adding attestation verification tests
* Add invalid ffg target test
* Add target epoch test
* Add queued attestation test
* Remove old fork choice verification tests
* Tidy, add test
* Move fork choice lock drop
* Rename BeaconForkChoiceStore
* Add comments, tidy BeaconForkChoiceStore
* Update metrics, rename fork_choice_store.rs
* Remove genesis_block_root from ForkChoice
* Tidy
* Update fork_choice comments
* Tidy, add comments
* Tidy, simplify ForkChoice, fix compile issue
* Tidy, removed dead file
* Increase http request timeout
* Fix failing rest_api test
* Set HTTP timeout back to 5s
* Apply fix to get_ancestor
* Address Michael's comments
* Fix typo
* Revert "Fix broken attestation verification test"
This reverts commit 722cdc903b12611de27916a57eeecfa3224f2279.
Co-authored-by: Kirk Baird <baird.k@outlook.com>
Co-authored-by: Michael Sproul <michael@sigmaprime.io>
2020-06-17 01:10:22 +00:00
|
|
|
"proto_array",
|
|
|
|
"store",
|
Use async code when interacting with EL (#3244)
## Overview
This rather extensive PR achieves two primary goals:
1. Uses the finalized/justified checkpoints of fork choice (FC), rather than that of the head state.
2. Refactors fork choice, block production and block processing to `async` functions.
Additionally, it achieves:
- Concurrent forkchoice updates to the EL and cache pruning after a new head is selected.
- Concurrent "block packing" (attestations, etc) and execution payload retrieval during block production.
- Concurrent per-block-processing and execution payload verification during block processing.
- The `Arc`-ification of `SignedBeaconBlock` during block processing (it's never mutated, so why not?):
- I had to do this to deal with sending blocks into spawned tasks.
- Previously we were cloning the beacon block at least 2 times during each block processing, these clones are either removed or turned into cheaper `Arc` clones.
- We were also `Box`-ing and un-`Box`-ing beacon blocks as they moved throughout the networking crate. This is not a big deal, but it's nice to avoid shifting things between the stack and heap.
- Avoids cloning *all the blocks* in *every chain segment* during sync.
- It also has the potential to clean up our code where we need to pass an *owned* block around so we can send it back in the case of an error (I didn't do much of this, my PR is already big enough :sweat_smile:)
- The `BeaconChain::HeadSafetyStatus` struct was removed. It was an old relic from prior merge specs.
For motivation for this change, see https://github.com/sigp/lighthouse/pull/3244#issuecomment-1160963273
## Changes to `canonical_head` and `fork_choice`
Previously, the `BeaconChain` had two separate fields:
```
canonical_head: RwLock<Snapshot>,
fork_choice: RwLock<BeaconForkChoice>
```
Now, we have grouped these values under a single struct:
```
canonical_head: CanonicalHead {
cached_head: RwLock<Arc<Snapshot>>,
fork_choice: RwLock<BeaconForkChoice>
}
```
Apart from ergonomics, the only *actual* change here is wrapping the canonical head snapshot in an `Arc`. This means that we no longer need to hold the `cached_head` (`canonical_head`, in old terms) lock when we want to pull some values from it. This was done to avoid deadlock risks by preventing functions from acquiring (and holding) the `cached_head` and `fork_choice` locks simultaneously.
## Breaking Changes
### The `state` (root) field in the `finalized_checkpoint` SSE event
Consider the scenario where epoch `n` is just finalized, but `start_slot(n)` is skipped. There are two state roots we might in the `finalized_checkpoint` SSE event:
1. The state root of the finalized block, which is `get_block(finalized_checkpoint.root).state_root`.
4. The state root at slot of `start_slot(n)`, which would be the state from (1), but "skipped forward" through any skip slots.
Previously, Lighthouse would choose (2). However, we can see that when [Teku generates that event](https://github.com/ConsenSys/teku/blob/de2b2801c89ef5abf983d6bf37867c37fc47121f/data/beaconrestapi/src/main/java/tech/pegasys/teku/beaconrestapi/handlers/v1/events/EventSubscriptionManager.java#L171-L182) it uses [`getStateRootFromBlockRoot`](https://github.com/ConsenSys/teku/blob/de2b2801c89ef5abf983d6bf37867c37fc47121f/data/provider/src/main/java/tech/pegasys/teku/api/ChainDataProvider.java#L336-L341) which uses (1).
I have switched Lighthouse from (2) to (1). I think it's a somewhat arbitrary choice between the two, where (1) is easier to compute and is consistent with Teku.
## Notes for Reviewers
I've renamed `BeaconChain::fork_choice` to `BeaconChain::recompute_head`. Doing this helped ensure I broke all previous uses of fork choice and I also find it more descriptive. It describes an action and can't be confused with trying to get a reference to the `ForkChoice` struct.
I've changed the ordering of SSE events when a block is received. It used to be `[block, finalized, head]` and now it's `[block, head, finalized]`. It was easier this way and I don't think we were making any promises about SSE event ordering so it's not "breaking".
I've made it so fork choice will run when it's first constructed. I did this because I wanted to have a cached version of the last call to `get_head`. Ensuring `get_head` has been run *at least once* means that the cached values doesn't need to wrapped in an `Option`. This was fairly simple, it just involved passing a `slot` to the constructor so it knows *when* it's being run. When loading a fork choice from the store and a slot clock isn't handy I've just used the `slot` that was saved in the `fork_choice_store`. That seems like it would be a faithful representation of the slot when we saved it.
I added the `genesis_time: u64` to the `BeaconChain`. It's small, constant and nice to have around.
Since we're using FC for the fin/just checkpoints, we no longer get the `0x00..00` roots at genesis. You can see I had to remove a work-around in `ef-tests` here: b56be3bc2. I can't find any reason why this would be an issue, if anything I think it'll be better since the genesis-alias has caught us out a few times (0x00..00 isn't actually a real root). Edit: I did find a case where the `network` expected the 0x00..00 alias and patched it here: 3f26ac3e2.
You'll notice a lot of changes in tests. Generally, tests should be functionally equivalent. Here are the things creating the most diff-noise in tests:
- Changing tests to be `tokio::async` tests.
- Adding `.await` to fork choice, block processing and block production functions.
- Refactor of the `canonical_head` "API" provided by the `BeaconChain`. E.g., `chain.canonical_head.cached_head()` instead of `chain.canonical_head.read()`.
- Wrapping `SignedBeaconBlock` in an `Arc`.
- In the `beacon_chain/tests/block_verification`, we can't use the `lazy_static` `CHAIN_SEGMENT` variable anymore since it's generated with an async function. We just generate it in each test, not so efficient but hopefully insignificant.
I had to disable `rayon` concurrent tests in the `fork_choice` tests. This is because the use of `rayon` and `block_on` was causing a panic.
Co-authored-by: Mac L <mjladson@pm.me>
2022-07-03 05:36:50 +00:00
|
|
|
"tokio",
|
v0.12 fork choice update (#1229)
* Incomplete scraps
* Add progress on new fork choice impl
* Further progress
* First complete compiling version
* Remove chain reference
* Add new lmd_ghost crate
* Start integrating into beacon chain
* Update `milagro_bls` to new release (#1183)
* Update milagro_bls to new release
Signed-off-by: Kirk Baird <baird.k@outlook.com>
* Tidy up fake cryptos
Signed-off-by: Kirk Baird <baird.k@outlook.com>
* move SecretHash to bls and put plaintext back
Signed-off-by: Kirk Baird <baird.k@outlook.com>
* Update state processing for v0.12
* Fix EF test runners for v0.12
* Fix some tests
* Fix broken attestation verification test
* More test fixes
* Rough beacon chain impl working
* Remove fork_choice_2
* Remove checkpoint manager
* Half finished ssz impl
* Add missed file
* Add persistence
* Tidy, fix some compile errors
* Remove RwLock from ProtoArrayForkChoice
* Fix store-based compile errors
* Add comments, tidy
* Move function out of ForkChoice struct
* Start testing
* More testing
* Fix compile error
* Tidy beacon_chain::fork_choice
* Queue attestations from the current slot
* Allow fork choice to handle prior-to-genesis start
* Improve error granularity
* Test attestation dequeuing
* Process attestations during block
* Store target root in fork choice
* Move fork choice verification into new crate
* Update tests
* Consensus updates for v0.12 (#1228)
* Update state processing for v0.12
* Fix EF test runners for v0.12
* Fix some tests
* Fix broken attestation verification test
* More test fixes
* Fix typo found in review
* Add `Block` struct to ProtoArray
* Start fixing get_ancestor
* Add rough progress on testing
* Get fork choice tests working
* Progress with testing
* Fix partialeq impl
* Move slot clock from fc_store
* Improve testing
* Add testing for best justified
* Add clone back to SystemTimeSlotClock
* Add balances test
* Start adding balances cache again
* Wire-in balances cache
* Improve tests
* Remove commented-out tests
* Remove beacon_chain::ForkChoice
* Rename crates
* Update wider codebase to new fork_choice layout
* Move advance_slot in test harness
* Tidy ForkChoice::update_time
* Fix verification tests
* Fix compile error with iter::once
* Fix fork choice tests
* Ensure block attestations are processed
* Fix failing beacon_chain tests
* Add first invalid block check
* Add finalized block check
* Progress with testing, new store builder
* Add fixes to get_ancestor
* Fix old genesis justification test
* Fix remaining fork choice tests
* Change root iteration method
* Move on_verified_block
* Remove unused method
* Start adding attestation verification tests
* Add invalid ffg target test
* Add target epoch test
* Add queued attestation test
* Remove old fork choice verification tests
* Tidy, add test
* Move fork choice lock drop
* Rename BeaconForkChoiceStore
* Add comments, tidy BeaconForkChoiceStore
* Update metrics, rename fork_choice_store.rs
* Remove genesis_block_root from ForkChoice
* Tidy
* Update fork_choice comments
* Tidy, add comments
* Tidy, simplify ForkChoice, fix compile issue
* Tidy, removed dead file
* Increase http request timeout
* Fix failing rest_api test
* Set HTTP timeout back to 5s
* Apply fix to get_ancestor
* Address Michael's comments
* Fix typo
* Revert "Fix broken attestation verification test"
This reverts commit 722cdc903b12611de27916a57eeecfa3224f2279.
Co-authored-by: Kirk Baird <baird.k@outlook.com>
Co-authored-by: Michael Sproul <michael@sigmaprime.io>
2020-06-17 01:10:22 +00:00
|
|
|
"types",
|
|
|
|
]
|
|
|
|
|
2020-11-13 06:06:35 +00:00
|
|
|
[[package]]
|
|
|
|
name = "form_urlencoded"
|
2021-03-02 05:59:49 +00:00
|
|
|
version = "1.0.1"
|
2020-11-13 06:06:35 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2021-03-02 05:59:49 +00:00
|
|
|
checksum = "5fc25a87fa4fd2094bffb06925852034d90a17f0d1e05197d4956d3555752191"
|
2020-11-13 06:06:35 +00:00
|
|
|
dependencies = [
|
|
|
|
"matches",
|
2020-12-09 01:34:58 +00:00
|
|
|
"percent-encoding",
|
2020-11-13 06:06:35 +00:00
|
|
|
]
|
|
|
|
|
2020-11-26 11:25:46 +00:00
|
|
|
[[package]]
|
|
|
|
name = "fs2"
|
|
|
|
version = "0.4.3"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "9564fc758e15025b46aa6643b1b77d047d1a56a1aea6e01002ac0c7026876213"
|
|
|
|
dependencies = [
|
|
|
|
"libc",
|
2021-07-09 03:20:24 +00:00
|
|
|
"winapi",
|
2019-12-09 11:39:44 +00:00
|
|
|
]
|
|
|
|
|
2020-10-05 08:22:19 +00:00
|
|
|
[[package]]
|
|
|
|
name = "funty"
|
2020-12-28 23:38:02 +00:00
|
|
|
version = "1.1.0"
|
2020-10-05 08:22:19 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2020-12-28 23:38:02 +00:00
|
|
|
checksum = "fed34cd105917e91daa4da6b3728c47b068749d6a62c59811f06ed2ac71d9da7"
|
2020-10-05 08:22:19 +00:00
|
|
|
|
Separate execution payloads in the DB (#3157)
## Proposed Changes
Reduce post-merge disk usage by not storing finalized execution payloads in Lighthouse's database.
:warning: **This is achieved in a backwards-incompatible way for networks that have already merged** :warning:. Kiln users and shadow fork enjoyers will be unable to downgrade after running the code from this PR. The upgrade migration may take several minutes to run, and can't be aborted after it begins.
The main changes are:
- New column in the database called `ExecPayload`, keyed by beacon block root.
- The `BeaconBlock` column now stores blinded blocks only.
- Lots of places that previously used full blocks now use blinded blocks, e.g. analytics APIs, block replay in the DB, etc.
- On finalization:
- `prune_abanonded_forks` deletes non-canonical payloads whilst deleting non-canonical blocks.
- `migrate_db` deletes finalized canonical payloads whilst deleting finalized states.
- Conversions between blinded and full blocks are implemented in a compositional way, duplicating some work from Sean's PR #3134.
- The execution layer has a new `get_payload_by_block_hash` method that reconstructs a payload using the EE's `eth_getBlockByHash` call.
- I've tested manually that it works on Kiln, using Geth and Nethermind.
- This isn't necessarily the most efficient method, and new engine APIs are being discussed to improve this: https://github.com/ethereum/execution-apis/pull/146.
- We're depending on the `ethers` master branch, due to lots of recent changes. We're also using a workaround for https://github.com/gakonst/ethers-rs/issues/1134.
- Payload reconstruction is used in the HTTP API via `BeaconChain::get_block`, which is now `async`. Due to the `async` fn, the `blocking_json` wrapper has been removed.
- Payload reconstruction is used in network RPC to serve blocks-by-{root,range} responses. Here the `async` adjustment is messier, although I think I've managed to come up with a reasonable compromise: the handlers take the `SendOnDrop` by value so that they can drop it on _task completion_ (after the `fn` returns). Still, this is introducing disk reads onto core executor threads, which may have a negative performance impact (thoughts appreciated).
## Additional Info
- [x] For performance it would be great to remove the cloning of full blocks when converting them to blinded blocks to write to disk. I'm going to experiment with a `put_block` API that takes the block by value, breaks it into a blinded block and a payload, stores the blinded block, and then re-assembles the full block for the caller.
- [x] We should measure the latency of blocks-by-root and blocks-by-range responses.
- [x] We should add integration tests that stress the payload reconstruction (basic tests done, issue for more extensive tests: https://github.com/sigp/lighthouse/issues/3159)
- [x] We should (manually) test the schema v9 migration from several prior versions, particularly as blocks have changed on disk and some migrations rely on being able to load blocks.
Co-authored-by: Paul Hauner <paul@paulhauner.com>
2022-05-12 00:42:17 +00:00
|
|
|
[[package]]
|
|
|
|
name = "funty"
|
|
|
|
version = "2.0.0"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "e6d5a32815ae3f33302d95fdcb2ce17862f8c65363dcfd29360480ba1001fc9c"
|
|
|
|
|
2020-05-17 11:16:48 +00:00
|
|
|
[[package]]
|
|
|
|
name = "futures"
|
2022-02-10 04:12:03 +00:00
|
|
|
version = "0.3.21"
|
2020-05-17 11:16:48 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2022-02-10 04:12:03 +00:00
|
|
|
checksum = "f73fe65f54d1e12b726f517d3e2135ca3125a437b6d998caf1962961f7172d9e"
|
2020-05-17 11:16:48 +00:00
|
|
|
dependencies = [
|
|
|
|
"futures-channel",
|
|
|
|
"futures-core",
|
|
|
|
"futures-executor",
|
|
|
|
"futures-io",
|
|
|
|
"futures-sink",
|
|
|
|
"futures-task",
|
|
|
|
"futures-util",
|
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "futures-channel"
|
2022-02-10 04:12:03 +00:00
|
|
|
version = "0.3.21"
|
2020-05-17 11:16:48 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2022-02-10 04:12:03 +00:00
|
|
|
checksum = "c3083ce4b914124575708913bca19bfe887522d6e2e6d0952943f5eac4a74010"
|
2020-05-17 11:16:48 +00:00
|
|
|
dependencies = [
|
|
|
|
"futures-core",
|
|
|
|
"futures-sink",
|
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "futures-core"
|
2022-02-10 04:12:03 +00:00
|
|
|
version = "0.3.21"
|
2020-05-17 11:16:48 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2022-02-10 04:12:03 +00:00
|
|
|
checksum = "0c09fd04b7e4073ac7156a9539b57a484a8ea920f79c7c675d05d289ab6110d3"
|
2020-05-17 11:16:48 +00:00
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "futures-executor"
|
2022-02-10 04:12:03 +00:00
|
|
|
version = "0.3.21"
|
2020-05-17 11:16:48 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2022-02-10 04:12:03 +00:00
|
|
|
checksum = "9420b90cfa29e327d0429f19be13e7ddb68fa1cccb09d65e5706b8c7a749b8a6"
|
2020-05-17 11:16:48 +00:00
|
|
|
dependencies = [
|
|
|
|
"futures-core",
|
|
|
|
"futures-task",
|
|
|
|
"futures-util",
|
|
|
|
"num_cpus",
|
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "futures-io"
|
2022-02-10 04:12:03 +00:00
|
|
|
version = "0.3.21"
|
2020-05-17 11:16:48 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2022-02-10 04:12:03 +00:00
|
|
|
checksum = "fc4045962a5a5e935ee2fdedaa4e08284547402885ab326734432bed5d12966b"
|
2020-05-17 11:16:48 +00:00
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "futures-macro"
|
2022-02-10 04:12:03 +00:00
|
|
|
version = "0.3.21"
|
2020-05-17 11:16:48 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2022-02-10 04:12:03 +00:00
|
|
|
checksum = "33c1e13800337f4d4d7a316bf45a567dbcb6ffe087f16424852d97e97a91f512"
|
2020-05-17 11:16:48 +00:00
|
|
|
dependencies = [
|
|
|
|
"proc-macro2",
|
|
|
|
"quote",
|
|
|
|
"syn",
|
|
|
|
]
|
|
|
|
|
2021-02-10 23:29:49 +00:00
|
|
|
[[package]]
|
|
|
|
name = "futures-rustls"
|
2022-03-31 07:52:23 +00:00
|
|
|
version = "0.22.1"
|
2021-02-10 23:29:49 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2022-03-31 07:52:23 +00:00
|
|
|
checksum = "e01fe9932a224b72b45336d96040aa86386d674a31d0af27d800ea7bc8ca97fe"
|
2021-02-10 23:29:49 +00:00
|
|
|
dependencies = [
|
|
|
|
"futures-io",
|
2022-06-18 23:59:43 +00:00
|
|
|
"rustls 0.20.6",
|
2021-11-18 05:08:42 +00:00
|
|
|
"webpki 0.22.0",
|
2021-02-10 23:29:49 +00:00
|
|
|
]
|
|
|
|
|
2020-05-17 11:16:48 +00:00
|
|
|
[[package]]
|
|
|
|
name = "futures-sink"
|
2022-02-10 04:12:03 +00:00
|
|
|
version = "0.3.21"
|
2020-05-17 11:16:48 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2022-02-10 04:12:03 +00:00
|
|
|
checksum = "21163e139fa306126e6eedaf49ecdb4588f939600f0b1e770f4205ee4b7fa868"
|
2020-05-17 11:16:48 +00:00
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "futures-task"
|
2022-02-10 04:12:03 +00:00
|
|
|
version = "0.3.21"
|
2020-05-17 11:16:48 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2022-02-10 04:12:03 +00:00
|
|
|
checksum = "57c66a976bf5909d801bbef33416c41372779507e7a6b3a5e25e4749c58f776a"
|
2020-05-17 11:16:48 +00:00
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "futures-timer"
|
|
|
|
version = "3.0.2"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "e64b03909df88034c26dc1547e8970b91f98bdb65165d6a4e9110d94263dbb2c"
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "futures-util"
|
2022-02-10 04:12:03 +00:00
|
|
|
version = "0.3.21"
|
2020-05-17 11:16:48 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2022-02-10 04:12:03 +00:00
|
|
|
checksum = "d8b7abd5d659d9b90c8cba917f6ec750a74e2dc23902ef9cd4cc8c8b22e6036a"
|
2020-05-17 11:16:48 +00:00
|
|
|
dependencies = [
|
|
|
|
"futures-channel",
|
|
|
|
"futures-core",
|
|
|
|
"futures-io",
|
|
|
|
"futures-macro",
|
|
|
|
"futures-sink",
|
|
|
|
"futures-task",
|
|
|
|
"memchr",
|
2022-06-18 23:59:43 +00:00
|
|
|
"pin-project-lite 0.2.9",
|
2020-05-17 11:16:48 +00:00
|
|
|
"pin-utils",
|
2020-12-09 01:34:58 +00:00
|
|
|
"slab",
|
2020-05-17 11:16:48 +00:00
|
|
|
]
|
|
|
|
|
2020-07-01 08:01:03 +00:00
|
|
|
[[package]]
|
|
|
|
name = "generic-array"
|
2022-01-11 01:35:56 +00:00
|
|
|
version = "0.14.5"
|
2020-07-01 08:01:03 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2022-01-11 01:35:56 +00:00
|
|
|
checksum = "fd48d33ec7f05fbfa152300fdad764757cbded343c1aa1cff2fbaf4134851803"
|
2020-07-01 08:01:03 +00:00
|
|
|
dependencies = [
|
|
|
|
"typenum",
|
2020-12-09 01:34:58 +00:00
|
|
|
"version_check",
|
2020-07-01 08:01:03 +00:00
|
|
|
]
|
|
|
|
|
2019-12-09 11:39:44 +00:00
|
|
|
[[package]]
|
|
|
|
name = "genesis"
|
2020-08-06 03:43:05 +00:00
|
|
|
version = "0.2.0"
|
2019-12-09 11:39:44 +00:00
|
|
|
dependencies = [
|
2020-05-10 09:56:31 +00:00
|
|
|
"environment",
|
|
|
|
"eth1",
|
|
|
|
"eth1_test_rig",
|
2022-04-04 00:26:16 +00:00
|
|
|
"eth2_hashing",
|
2021-11-29 03:57:54 +00:00
|
|
|
"eth2_ssz",
|
2021-07-09 03:20:24 +00:00
|
|
|
"futures",
|
2020-05-10 09:56:31 +00:00
|
|
|
"int_to_bytes",
|
|
|
|
"merkle_proof",
|
|
|
|
"rayon",
|
2021-05-04 01:59:51 +00:00
|
|
|
"sensitive_url",
|
2020-05-10 09:56:31 +00:00
|
|
|
"slog",
|
|
|
|
"state_processing",
|
2021-08-17 01:00:24 +00:00
|
|
|
"tokio",
|
2021-11-29 03:57:54 +00:00
|
|
|
"tree_hash",
|
2020-05-10 09:56:31 +00:00
|
|
|
"types",
|
2019-12-09 11:39:44 +00:00
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "getrandom"
|
2021-02-10 23:29:49 +00:00
|
|
|
version = "0.1.16"
|
2019-12-09 11:39:44 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2021-02-10 23:29:49 +00:00
|
|
|
checksum = "8fc3cb4d91f53b50155bdcfd23f6a4c39ae1969c2ae85982b135750cccaf5fce"
|
2019-12-09 11:39:44 +00:00
|
|
|
dependencies = [
|
2021-11-18 05:08:42 +00:00
|
|
|
"cfg-if",
|
2021-10-01 01:23:55 +00:00
|
|
|
"js-sys",
|
2020-05-10 09:56:31 +00:00
|
|
|
"libc",
|
2020-08-27 07:04:12 +00:00
|
|
|
"wasi 0.9.0+wasi-snapshot-preview1",
|
2021-10-01 01:23:55 +00:00
|
|
|
"wasm-bindgen",
|
2019-12-09 11:39:44 +00:00
|
|
|
]
|
|
|
|
|
2021-02-10 23:29:49 +00:00
|
|
|
[[package]]
|
|
|
|
name = "getrandom"
|
2022-06-18 23:59:43 +00:00
|
|
|
version = "0.2.7"
|
2021-02-10 23:29:49 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2022-06-18 23:59:43 +00:00
|
|
|
checksum = "4eb1a864a501629691edf6c15a593b7a51eebaa1e8468e9ddc623de7c9b58ec6"
|
2021-02-10 23:29:49 +00:00
|
|
|
dependencies = [
|
2021-11-18 05:08:42 +00:00
|
|
|
"cfg-if",
|
2021-02-10 23:29:49 +00:00
|
|
|
"libc",
|
2022-06-18 23:59:43 +00:00
|
|
|
"wasi 0.11.0+wasi-snapshot-preview1",
|
2021-02-10 23:29:49 +00:00
|
|
|
]
|
|
|
|
|
2021-07-05 00:54:17 +00:00
|
|
|
[[package]]
|
|
|
|
name = "ghash"
|
2021-09-16 04:45:05 +00:00
|
|
|
version = "0.4.4"
|
2021-07-05 00:54:17 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2021-09-16 04:45:05 +00:00
|
|
|
checksum = "1583cc1656d7839fd3732b80cf4f38850336cdb9b8ded1cd399ca62958de3c99"
|
2021-07-05 00:54:17 +00:00
|
|
|
dependencies = [
|
2021-07-13 00:48:33 +00:00
|
|
|
"opaque-debug",
|
2021-06-03 01:11:33 +00:00
|
|
|
"polyval",
|
2020-06-29 10:25:42 +00:00
|
|
|
]
|
|
|
|
|
2020-05-26 20:34:15 +00:00
|
|
|
[[package]]
|
|
|
|
name = "gimli"
|
2021-11-18 05:08:42 +00:00
|
|
|
version = "0.26.1"
|
2020-05-26 20:34:15 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2021-11-18 05:08:42 +00:00
|
|
|
checksum = "78cc372d058dcf6d5ecd98510e7fbc9e5aec4d21de70f65fea8fecebcd881bd4"
|
2020-05-26 20:34:15 +00:00
|
|
|
|
2020-07-06 09:08:37 +00:00
|
|
|
[[package]]
|
|
|
|
name = "git-version"
|
2021-08-17 01:00:24 +00:00
|
|
|
version = "0.3.5"
|
2020-07-06 09:08:37 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2021-08-17 01:00:24 +00:00
|
|
|
checksum = "f6b0decc02f4636b9ccad390dcbe77b722a77efedfa393caf8379a51d5c61899"
|
2020-07-06 09:08:37 +00:00
|
|
|
dependencies = [
|
|
|
|
"git-version-macro",
|
|
|
|
"proc-macro-hack",
|
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "git-version-macro"
|
2021-08-17 01:00:24 +00:00
|
|
|
version = "0.3.5"
|
2020-07-06 09:08:37 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2021-08-17 01:00:24 +00:00
|
|
|
checksum = "fe69f1cbdb6e28af2bac214e943b99ce8a0a06b447d15d3e61161b0423139f3f"
|
2020-07-06 09:08:37 +00:00
|
|
|
dependencies = [
|
|
|
|
"proc-macro-hack",
|
|
|
|
"proc-macro2",
|
|
|
|
"quote",
|
|
|
|
"syn",
|
|
|
|
]
|
|
|
|
|
2020-05-29 02:03:30 +00:00
|
|
|
[[package]]
|
|
|
|
name = "glob"
|
|
|
|
version = "0.3.0"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "9b919933a397b79c37e33b77bb2aa3dc8eb6e165ad809e58ff75bc7db2e34574"
|
|
|
|
|
2020-10-23 04:16:33 +00:00
|
|
|
[[package]]
|
|
|
|
name = "group"
|
2021-07-05 00:54:17 +00:00
|
|
|
version = "0.9.0"
|
2020-10-23 04:16:33 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2021-07-05 00:54:17 +00:00
|
|
|
checksum = "61b3c1e8b4f1ca07e6605ea1be903a5f6956aec5c8a67fd44d56076631675ed8"
|
2020-10-23 04:16:33 +00:00
|
|
|
dependencies = [
|
Separate execution payloads in the DB (#3157)
## Proposed Changes
Reduce post-merge disk usage by not storing finalized execution payloads in Lighthouse's database.
:warning: **This is achieved in a backwards-incompatible way for networks that have already merged** :warning:. Kiln users and shadow fork enjoyers will be unable to downgrade after running the code from this PR. The upgrade migration may take several minutes to run, and can't be aborted after it begins.
The main changes are:
- New column in the database called `ExecPayload`, keyed by beacon block root.
- The `BeaconBlock` column now stores blinded blocks only.
- Lots of places that previously used full blocks now use blinded blocks, e.g. analytics APIs, block replay in the DB, etc.
- On finalization:
- `prune_abanonded_forks` deletes non-canonical payloads whilst deleting non-canonical blocks.
- `migrate_db` deletes finalized canonical payloads whilst deleting finalized states.
- Conversions between blinded and full blocks are implemented in a compositional way, duplicating some work from Sean's PR #3134.
- The execution layer has a new `get_payload_by_block_hash` method that reconstructs a payload using the EE's `eth_getBlockByHash` call.
- I've tested manually that it works on Kiln, using Geth and Nethermind.
- This isn't necessarily the most efficient method, and new engine APIs are being discussed to improve this: https://github.com/ethereum/execution-apis/pull/146.
- We're depending on the `ethers` master branch, due to lots of recent changes. We're also using a workaround for https://github.com/gakonst/ethers-rs/issues/1134.
- Payload reconstruction is used in the HTTP API via `BeaconChain::get_block`, which is now `async`. Due to the `async` fn, the `blocking_json` wrapper has been removed.
- Payload reconstruction is used in network RPC to serve blocks-by-{root,range} responses. Here the `async` adjustment is messier, although I think I've managed to come up with a reasonable compromise: the handlers take the `SendOnDrop` by value so that they can drop it on _task completion_ (after the `fn` returns). Still, this is introducing disk reads onto core executor threads, which may have a negative performance impact (thoughts appreciated).
## Additional Info
- [x] For performance it would be great to remove the cloning of full blocks when converting them to blinded blocks to write to disk. I'm going to experiment with a `put_block` API that takes the block by value, breaks it into a blinded block and a payload, stores the blinded block, and then re-assembles the full block for the caller.
- [x] We should measure the latency of blocks-by-root and blocks-by-range responses.
- [x] We should add integration tests that stress the payload reconstruction (basic tests done, issue for more extensive tests: https://github.com/sigp/lighthouse/issues/3159)
- [x] We should (manually) test the schema v9 migration from several prior versions, particularly as blocks have changed on disk and some migrations rely on being able to load blocks.
Co-authored-by: Paul Hauner <paul@paulhauner.com>
2022-05-12 00:42:17 +00:00
|
|
|
"ff 0.9.0",
|
|
|
|
"rand_core 0.6.3",
|
|
|
|
"subtle",
|
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "group"
|
|
|
|
version = "0.11.0"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "bc5ac374b108929de78460075f3dc439fa66df9d8fc77e8f12caa5165fcf0c89"
|
|
|
|
dependencies = [
|
2022-06-18 23:59:43 +00:00
|
|
|
"ff 0.11.1",
|
2021-07-05 00:54:17 +00:00
|
|
|
"rand_core 0.6.3",
|
2021-07-13 00:48:33 +00:00
|
|
|
"subtle",
|
2020-10-23 04:16:33 +00:00
|
|
|
]
|
|
|
|
|
2020-11-28 05:30:57 +00:00
|
|
|
[[package]]
|
|
|
|
name = "h2"
|
2022-04-05 02:53:09 +00:00
|
|
|
version = "0.3.13"
|
2021-02-10 23:29:49 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2022-04-05 02:53:09 +00:00
|
|
|
checksum = "37a82c6d637fc9515a4694bbf1cb2457b79d81ce52b3108bdeea58b07dd34a57"
|
2020-11-28 05:30:57 +00:00
|
|
|
dependencies = [
|
2021-10-29 01:59:29 +00:00
|
|
|
"bytes",
|
2020-11-28 05:30:57 +00:00
|
|
|
"fnv",
|
|
|
|
"futures-core",
|
|
|
|
"futures-sink",
|
|
|
|
"futures-util",
|
2021-02-10 23:29:49 +00:00
|
|
|
"http",
|
2020-11-28 05:30:57 +00:00
|
|
|
"indexmap",
|
2020-12-09 01:34:58 +00:00
|
|
|
"slab",
|
2021-08-17 01:00:24 +00:00
|
|
|
"tokio",
|
2022-06-18 23:59:43 +00:00
|
|
|
"tokio-util 0.7.3",
|
2020-07-15 05:04:09 +00:00
|
|
|
"tracing",
|
2020-05-17 11:16:48 +00:00
|
|
|
]
|
|
|
|
|
2020-07-06 01:55:56 +00:00
|
|
|
[[package]]
|
|
|
|
name = "half"
|
2021-10-29 01:59:29 +00:00
|
|
|
version = "1.8.2"
|
2020-07-06 01:55:56 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2021-10-29 01:59:29 +00:00
|
|
|
checksum = "eabb4a44450da02c90444cf74558da904edde8fb4e9035a9a6a4e15445af0bd7"
|
2020-07-06 01:55:56 +00:00
|
|
|
|
2020-07-21 00:54:47 +00:00
|
|
|
[[package]]
|
|
|
|
name = "hashbrown"
|
2021-08-17 01:00:24 +00:00
|
|
|
version = "0.11.2"
|
2020-07-21 00:54:47 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2021-08-17 01:00:24 +00:00
|
|
|
checksum = "ab5ef0d4909ef3724cc8cce6ccc8572c5c817592e9285f5464f8e86f8bd3726e"
|
2020-10-09 02:05:30 +00:00
|
|
|
dependencies = [
|
2020-11-02 23:55:15 +00:00
|
|
|
"ahash",
|
2020-10-09 02:05:30 +00:00
|
|
|
]
|
|
|
|
|
2022-06-18 23:59:43 +00:00
|
|
|
[[package]]
|
|
|
|
name = "hashbrown"
|
|
|
|
version = "0.12.1"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "db0d4cf898abf0081f964436dc980e96670a0f36863e4b83aaacdb65c9d7ccc3"
|
|
|
|
|
2020-10-09 02:05:30 +00:00
|
|
|
[[package]]
|
|
|
|
name = "hashlink"
|
2021-08-17 01:00:24 +00:00
|
|
|
version = "0.7.0"
|
2020-10-09 02:05:30 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2021-08-17 01:00:24 +00:00
|
|
|
checksum = "7249a3129cbc1ffccd74857f81464a323a152173cdb134e0fd81bc803b29facf"
|
2020-10-09 02:05:30 +00:00
|
|
|
dependencies = [
|
2022-06-18 23:59:43 +00:00
|
|
|
"hashbrown 0.11.2",
|
2020-10-09 02:05:30 +00:00
|
|
|
]
|
2020-07-21 00:54:47 +00:00
|
|
|
|
2019-12-09 11:39:44 +00:00
|
|
|
[[package]]
|
2020-05-17 11:16:48 +00:00
|
|
|
name = "hashset_delay"
|
Initial work towards v0.2.0 (#924)
* Remove ping protocol
* Initial renaming of network services
* Correct rebasing relative to latest master
* Start updating types
* Adds HashMapDelay struct to utils
* Initial network restructure
* Network restructure. Adds new types for v0.2.0
* Removes build artefacts
* Shift validation to beacon chain
* Temporarily remove gossip validation
This is to be updated to match current optimisation efforts.
* Adds AggregateAndProof
* Begin rebuilding pubsub encoding/decoding
* Signature hacking
* Shift gossipsup decoding into eth2_libp2p
* Existing EF tests passing with fake_crypto
* Shifts block encoding/decoding into RPC
* Delete outdated API spec
* All release tests passing bar genesis state parsing
* Update and test YamlConfig
* Update to spec v0.10 compatible BLS
* Updates to BLS EF tests
* Add EF test for AggregateVerify
And delete unused hash2curve tests for uncompressed points
* Update EF tests to v0.10.1
* Use optional block root correctly in block proc
* Use genesis fork in deposit domain. All tests pass
* Fast aggregate verify test
* Update REST API docs
* Fix unused import
* Bump spec tags to v0.10.1
* Add `seconds_per_eth1_block` to chainspec
* Update to timestamp based eth1 voting scheme
* Return None from `get_votes_to_consider` if block cache is empty
* Handle overflows in `is_candidate_block`
* Revert to failing tests
* Fix eth1 data sets test
* Choose default vote according to spec
* Fix collect_valid_votes tests
* Fix `get_votes_to_consider` to choose all eligible blocks
* Uncomment winning_vote tests
* Add comments; remove unused code
* Reduce seconds_per_eth1_block for simulation
* Addressed review comments
* Add test for default vote case
* Fix logs
* Remove unused functions
* Meter default eth1 votes
* Fix comments
* Progress on attestation service
* Address review comments; remove unused dependency
* Initial work on removing libp2p lock
* Add LRU caches to store (rollup)
* Update attestation validation for DB changes (WIP)
* Initial version of should_forward_block
* Scaffold
* Progress on attestation validation
Also, consolidate prod+testing slot clocks so that they share much
of the same implementation and can both handle sub-slot time changes.
* Removes lock from libp2p service
* Completed network lock removal
* Finish(?) attestation processing
* Correct network termination future
* Add slot check to block check
* Correct fmt issues
* Remove Drop implementation for network service
* Add first attempt at attestation proc. re-write
* Add version 2 of attestation processing
* Minor fixes
* Add validator pubkey cache
* Make get_indexed_attestation take a committee
* Link signature processing into new attn verification
* First working version
* Ensure pubkey cache is updated
* Add more metrics, slight optimizations
* Clone committee cache during attestation processing
* Update shuffling cache during block processing
* Remove old commented-out code
* Fix shuffling cache insert bug
* Used indexed attestation in fork choice
* Restructure attn processing, add metrics
* Add more detailed metrics
* Tidy, fix failing tests
* Fix failing tests, tidy
* Address reviewers suggestions
* Disable/delete two outdated tests
* Modification of validator for subscriptions
* Add slot signing to validator client
* Further progress on validation subscription
* Adds necessary validator subscription functionality
* Add new Pubkeys struct to signature_sets
* Refactor with functional approach
* Update beacon chain
* Clean up validator <-> beacon node http types
* Add aggregator status to ValidatorDuty
* Impl Clone for manual slot clock
* Fix minor errors
* Further progress validator client subscription
* Initial subscription and aggregation handling
* Remove decompressed member from pubkey bytes
* Progress to modifying val client for attestation aggregation
* First draft of validator client upgrade for aggregate attestations
* Add hashmap for indices lookup
* Add state cache, remove store cache
* Only build the head committee cache
* Removes lock on a network channel
* Partially implement beacon node subscription http api
* Correct compilation issues
* Change `get_attesting_indices` to use Vec
* Fix failing test
* Partial implementation of timer
* Adds timer, removes exit_future, http api to op pool
* Partial multiple aggregate attestation handling
* Permits bulk messages accross gossipsub network channel
* Correct compile issues
* Improve gosispsub messaging and correct rest api helpers
* Added global gossipsub subscriptions
* Update validator subscriptions data structs
* Tidy
* Re-structure validator subscriptions
* Initial handling of subscriptions
* Re-structure network service
* Add pubkey cache persistence file
* Add more comments
* Integrate persistence file into builder
* Add pubkey cache tests
* Add HashSetDelay and introduce into attestation service
* Handles validator subscriptions
* Add data_dir to beacon chain builder
* Remove Option in pubkey cache persistence file
* Ensure consistency between datadir/data_dir
* Fix failing network test
* Peer subnet discovery gets queued for future subscriptions
* Reorganise attestation service functions
* Initial wiring of attestation service
* First draft of attestation service timing logic
* Correct minor typos
* Tidy
* Fix todos
* Improve tests
* Add PeerInfo to connected peers mapping
* Fix compile error
* Fix compile error from merge
* Split up block processing metrics
* Tidy
* Refactor get_pubkey_from_state
* Remove commented-out code
* Rename state_cache -> checkpoint_cache
* Rename Checkpoint -> Snapshot
* Tidy, add comments
* Tidy up find_head function
* Change some checkpoint -> snapshot
* Add tests
* Expose max_len
* Remove dead code
* Tidy
* Fix bug
* Add sync-speed metric
* Add first attempt at VerifiableBlock
* Start integrating into beacon chain
* Integrate VerifiableBlock
* Rename VerifableBlock -> PartialBlockVerification
* Add start of typed methods
* Add progress
* Add further progress
* Rename structs
* Add full block verification to block_processing.rs
* Further beacon chain integration
* Update checks for gossip
* Add todo
* Start adding segement verification
* Add passing chain segement test
* Initial integration with batch sync
* Minor changes
* Tidy, add more error checking
* Start adding chain_segment tests
* Finish invalid signature tests
* Include single and gossip verified blocks in tests
* Add gossip verification tests
* Start adding docs
* Finish adding comments to block_processing.rs
* Rename block_processing.rs -> block_verification
* Start removing old block processing code
* Fixes beacon_chain compilation
* Fix project-wide compile errors
* Remove old code
* Correct code to pass all tests
* Fix bug with beacon proposer index
* Fix shim for BlockProcessingError
* Only process one epoch at a time
* Fix loop in chain segment processing
* Correct tests from master merge
* Add caching for state.eth1_data_votes
* Add BeaconChain::validator_pubkey
* Revert "Add caching for state.eth1_data_votes"
This reverts commit cd73dcd6434fb8d8e6bf30c5356355598ea7b78e.
Co-authored-by: Grant Wuerker <gwuerker@gmail.com>
Co-authored-by: Michael Sproul <michael@sigmaprime.io>
Co-authored-by: Michael Sproul <micsproul@gmail.com>
Co-authored-by: pawan <pawandhananjay@gmail.com>
Co-authored-by: Paul Hauner <paul@paulhauner.com>
2020-03-17 06:24:44 +00:00
|
|
|
version = "0.2.0"
|
2019-12-09 11:39:44 +00:00
|
|
|
dependencies = [
|
2021-07-09 03:20:24 +00:00
|
|
|
"futures",
|
2021-08-17 01:00:24 +00:00
|
|
|
"tokio",
|
2022-06-18 23:59:43 +00:00
|
|
|
"tokio-util 0.6.10",
|
2020-05-17 11:16:48 +00:00
|
|
|
]
|
|
|
|
|
2020-09-29 03:46:54 +00:00
|
|
|
[[package]]
|
|
|
|
name = "headers"
|
2022-03-02 05:09:52 +00:00
|
|
|
version = "0.3.7"
|
2020-09-29 03:46:54 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2022-03-02 05:09:52 +00:00
|
|
|
checksum = "4cff78e5788be1e0ab65b04d306b2ed5092c815ec97ec70f4ebd5aee158aa55d"
|
2020-11-28 05:30:57 +00:00
|
|
|
dependencies = [
|
2022-04-04 00:26:16 +00:00
|
|
|
"base64",
|
2020-12-09 01:34:58 +00:00
|
|
|
"bitflags",
|
2021-10-29 01:59:29 +00:00
|
|
|
"bytes",
|
2021-02-10 23:29:49 +00:00
|
|
|
"headers-core",
|
|
|
|
"http",
|
2021-10-29 01:59:29 +00:00
|
|
|
"httpdate",
|
2020-12-09 01:34:58 +00:00
|
|
|
"mime",
|
2022-03-02 05:09:52 +00:00
|
|
|
"sha-1 0.10.0",
|
2020-09-29 03:46:54 +00:00
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "headers-core"
|
|
|
|
version = "0.2.0"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "e7f66481bfee273957b1f20485a4ff3362987f85b2c236580d81b4eb7a326429"
|
|
|
|
dependencies = [
|
2021-02-10 23:29:49 +00:00
|
|
|
"http",
|
2020-09-29 03:46:54 +00:00
|
|
|
]
|
|
|
|
|
2020-05-17 11:16:48 +00:00
|
|
|
[[package]]
|
|
|
|
name = "heck"
|
2021-07-05 00:54:17 +00:00
|
|
|
version = "0.3.3"
|
2020-05-17 11:16:48 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2021-07-05 00:54:17 +00:00
|
|
|
checksum = "6d621efb26863f0e9924c6ac577e8275e5e6b77455db64ffa6c65c904e9e132c"
|
2020-05-17 11:16:48 +00:00
|
|
|
dependencies = [
|
|
|
|
"unicode-segmentation",
|
2019-12-09 11:39:44 +00:00
|
|
|
]
|
|
|
|
|
2022-03-14 23:11:40 +00:00
|
|
|
[[package]]
|
|
|
|
name = "heck"
|
|
|
|
version = "0.4.0"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "2540771e65fc8cb83cd6e8a237f70c319bd5c29f78ed1084ba5d50eeac86f7f9"
|
|
|
|
|
2019-12-09 11:39:44 +00:00
|
|
|
[[package]]
|
|
|
|
name = "hermit-abi"
|
2021-07-05 00:54:17 +00:00
|
|
|
version = "0.1.19"
|
2019-12-09 11:39:44 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2021-07-05 00:54:17 +00:00
|
|
|
checksum = "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33"
|
2019-12-09 11:39:44 +00:00
|
|
|
dependencies = [
|
2020-05-10 09:56:31 +00:00
|
|
|
"libc",
|
2019-12-09 11:39:44 +00:00
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "hex"
|
2021-03-08 06:27:49 +00:00
|
|
|
version = "0.4.3"
|
2019-12-09 11:39:44 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2021-03-08 06:27:49 +00:00
|
|
|
checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70"
|
2019-12-09 11:39:44 +00:00
|
|
|
|
2020-07-29 03:40:22 +00:00
|
|
|
[[package]]
|
|
|
|
name = "hex_fmt"
|
|
|
|
version = "0.3.0"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "b07f60793ff0a4d9cef0f18e63b5357e06209987153a64648c972c1e5aff336f"
|
|
|
|
|
2020-11-28 05:30:57 +00:00
|
|
|
[[package]]
|
|
|
|
name = "hkdf"
|
2021-07-05 00:54:17 +00:00
|
|
|
version = "0.11.0"
|
2020-11-28 05:30:57 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2021-07-05 00:54:17 +00:00
|
|
|
checksum = "01706d578d5c281058480e673ae4086a9f4710d8df1ad80a5b03e39ece5f886b"
|
2020-11-28 05:30:57 +00:00
|
|
|
dependencies = [
|
2021-12-22 06:17:14 +00:00
|
|
|
"digest 0.9.0",
|
2021-07-05 00:54:17 +00:00
|
|
|
"hmac 0.11.0",
|
2020-11-28 05:30:57 +00:00
|
|
|
]
|
|
|
|
|
2020-07-01 08:01:03 +00:00
|
|
|
[[package]]
|
|
|
|
name = "hmac"
|
2020-07-06 01:55:56 +00:00
|
|
|
version = "0.8.1"
|
2020-07-01 08:01:03 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2020-07-06 01:55:56 +00:00
|
|
|
checksum = "126888268dcc288495a26bf004b38c5fdbb31682f992c84ceb046a1f0fe38840"
|
2020-07-01 08:01:03 +00:00
|
|
|
dependencies = [
|
|
|
|
"crypto-mac 0.8.0",
|
2021-12-22 06:17:14 +00:00
|
|
|
"digest 0.9.0",
|
2019-12-09 11:39:44 +00:00
|
|
|
]
|
|
|
|
|
2021-07-05 00:54:17 +00:00
|
|
|
[[package]]
|
|
|
|
name = "hmac"
|
|
|
|
version = "0.11.0"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "2a2a2320eb7ec0ebe8da8f744d7812d9fc4cb4d09344ac01898dbcb6a20ae69b"
|
|
|
|
dependencies = [
|
2021-08-17 01:00:24 +00:00
|
|
|
"crypto-mac 0.11.1",
|
2021-12-22 06:17:14 +00:00
|
|
|
"digest 0.9.0",
|
2019-12-09 11:39:44 +00:00
|
|
|
]
|
|
|
|
|
2021-07-14 05:24:10 +00:00
|
|
|
[[package]]
|
|
|
|
name = "hmac-drbg"
|
|
|
|
version = "0.3.0"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "17ea0a1394df5b6574da6e0c1ade9e78868c9fb0a4e5ef4428e32da4676b85b1"
|
|
|
|
dependencies = [
|
2021-12-22 06:17:14 +00:00
|
|
|
"digest 0.9.0",
|
2021-07-13 00:48:33 +00:00
|
|
|
"generic-array",
|
2021-07-14 05:24:10 +00:00
|
|
|
"hmac 0.8.1",
|
|
|
|
]
|
|
|
|
|
2021-06-03 01:11:33 +00:00
|
|
|
[[package]]
|
|
|
|
name = "hostname"
|
|
|
|
version = "0.3.1"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "3c731c3e10504cc8ed35cfe2f1db4c9274c3d35fa486e3b31df46f068ef3e867"
|
|
|
|
dependencies = [
|
|
|
|
"libc",
|
|
|
|
"match_cfg",
|
|
|
|
"winapi",
|
|
|
|
]
|
|
|
|
|
2020-05-17 11:16:48 +00:00
|
|
|
[[package]]
|
|
|
|
name = "http"
|
2022-06-18 23:59:43 +00:00
|
|
|
version = "0.2.8"
|
2020-12-23 07:53:36 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2022-06-18 23:59:43 +00:00
|
|
|
checksum = "75f43d41e26995c17e71ee126451dd3941010b0514a81a9d11f3b341debc2399"
|
2020-11-28 05:30:57 +00:00
|
|
|
dependencies = [
|
2021-10-29 01:59:29 +00:00
|
|
|
"bytes",
|
2020-11-28 05:30:57 +00:00
|
|
|
"fnv",
|
2022-06-18 23:59:43 +00:00
|
|
|
"itoa 1.0.2",
|
2020-11-28 05:30:57 +00:00
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "http-body"
|
2022-06-18 23:59:43 +00:00
|
|
|
version = "0.4.5"
|
2021-02-10 23:29:49 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2022-06-18 23:59:43 +00:00
|
|
|
checksum = "d5f38f16d184e36f2408a55281cd658ecbd3ca05cce6d6510a176eca393e26d1"
|
2020-11-28 05:30:57 +00:00
|
|
|
dependencies = [
|
2021-10-29 01:59:29 +00:00
|
|
|
"bytes",
|
2021-02-10 23:29:49 +00:00
|
|
|
"http",
|
2022-06-18 23:59:43 +00:00
|
|
|
"pin-project-lite 0.2.9",
|
2020-05-17 11:16:48 +00:00
|
|
|
]
|
|
|
|
|
2020-09-29 03:46:54 +00:00
|
|
|
[[package]]
|
|
|
|
name = "http_api"
|
|
|
|
version = "0.1.0"
|
|
|
|
dependencies = [
|
|
|
|
"beacon_chain",
|
2021-07-05 00:54:17 +00:00
|
|
|
"bs58",
|
2020-09-29 03:46:54 +00:00
|
|
|
"environment",
|
|
|
|
"eth1",
|
|
|
|
"eth2",
|
2021-11-29 03:57:54 +00:00
|
|
|
"eth2_ssz",
|
2022-03-31 07:52:23 +00:00
|
|
|
"execution_layer",
|
2021-07-09 03:20:24 +00:00
|
|
|
"futures",
|
2020-10-28 22:19:38 +00:00
|
|
|
"hex",
|
2020-09-29 03:46:54 +00:00
|
|
|
"lazy_static",
|
|
|
|
"lighthouse_metrics",
|
Rename eth2_libp2p to lighthouse_network (#2702)
## Description
The `eth2_libp2p` crate was originally named and designed to incorporate a simple libp2p integration into lighthouse. Since its origins the crates purpose has expanded dramatically. It now houses a lot more sophistication that is specific to lighthouse and no longer just a libp2p integration.
As of this writing it currently houses the following high-level lighthouse-specific logic:
- Lighthouse's implementation of the eth2 RPC protocol and specific encodings/decodings
- Integration and handling of ENRs with respect to libp2p and eth2
- Lighthouse's discovery logic, its integration with discv5 and logic about searching and handling peers.
- Lighthouse's peer manager - This is a large module handling various aspects of Lighthouse's network, such as peer scoring, handling pings and metadata, connection maintenance and recording, etc.
- Lighthouse's peer database - This is a collection of information stored for each individual peer which is specific to lighthouse. We store connection state, sync state, last seen ips and scores etc. The data stored for each peer is designed for various elements of the lighthouse code base such as syncing and the http api.
- Gossipsub scoring - This stores a collection of gossipsub 1.1 scoring mechanisms that are continuously analyssed and updated based on the ethereum 2 networks and how Lighthouse performs on these networks.
- Lighthouse specific types for managing gossipsub topics, sync status and ENR fields
- Lighthouse's network HTTP API metrics - A collection of metrics for lighthouse network monitoring
- Lighthouse's custom configuration of all networking protocols, RPC, gossipsub, discovery, identify and libp2p.
Therefore it makes sense to rename the crate to be more akin to its current purposes, simply that it manages the majority of Lighthouse's network stack. This PR renames this crate to `lighthouse_network`
Co-authored-by: Paul Hauner <paul@paulhauner.com>
2021-10-19 00:30:39 +00:00
|
|
|
"lighthouse_network",
|
2020-09-29 03:46:54 +00:00
|
|
|
"lighthouse_version",
|
Run fork choice before block proposal (#3168)
## Issue Addressed
Upcoming spec change https://github.com/ethereum/consensus-specs/pull/2878
## Proposed Changes
1. Run fork choice at the start of every slot, and wait for this run to complete before proposing a block.
2. As an optimisation, also run fork choice 3/4 of the way through the slot (at 9s), _dequeueing attestations for the next slot_.
3. Remove the fork choice run from the state advance timer that occurred before advancing the state.
## Additional Info
### Block Proposal Accuracy
This change makes us more likely to propose on top of the correct head in the presence of re-orgs with proposer boost in play. The main scenario that this change is designed to address is described in the linked spec issue.
### Attestation Accuracy
This change _also_ makes us more likely to attest to the correct head. Currently in the case of a skipped slot at `slot` we only run fork choice 9s into `slot - 1`. This means the attestations from `slot - 1` aren't taken into consideration, and any boost applied to the block from `slot - 1` is not removed (it should be). In the language of the linked spec issue, this means we are liable to attest to C, even when the majority voting weight has already caused a re-org to B.
### Why remove the call before the state advance?
If we've run fork choice at the start of the slot then it has already dequeued all the attestations from the previous slot, which are the only ones eligible to influence the head in the current slot. Running fork choice again is unnecessary (unless we run it for the next slot and try to pre-empt a re-org, but I don't currently think this is a great idea).
### Performance
Based on Prater testing this adds about 5-25ms of runtime to block proposal times, which are 500-1000ms on average (and spike to 5s+ sometimes due to state handling issues :cry: ). I believe this is a small enough penalty to enable it by default, with the option to disable it via the new flag `--fork-choice-before-proposal-timeout 0`. Upcoming work on block packing and state representation will also reduce block production times in general, while removing the spikes.
### Implementation
Fork choice gets invoked at the start of the slot via the `per_slot_task` function called from the slot timer. It then uses a condition variable to signal to block production that fork choice has been updated. This is a bit funky, but it seems to work. One downside of the timer-based approach is that it doesn't happen automatically in most of the tests. The test added by this PR has to trigger the run manually.
2022-05-20 05:02:11 +00:00
|
|
|
"logging",
|
2022-06-29 04:50:37 +00:00
|
|
|
"lru",
|
2020-09-29 03:46:54 +00:00
|
|
|
"network",
|
2022-06-18 23:59:43 +00:00
|
|
|
"parking_lot 0.12.1",
|
2022-02-18 05:32:00 +00:00
|
|
|
"safe_arith",
|
2021-05-04 01:59:51 +00:00
|
|
|
"sensitive_url",
|
2020-09-29 03:46:54 +00:00
|
|
|
"serde",
|
2022-06-30 00:49:21 +00:00
|
|
|
"serde_json",
|
2020-09-29 03:46:54 +00:00
|
|
|
"slog",
|
|
|
|
"slot_clock",
|
|
|
|
"state_processing",
|
|
|
|
"store",
|
2022-05-16 08:35:59 +00:00
|
|
|
"task_executor",
|
2021-08-17 01:00:24 +00:00
|
|
|
"tokio",
|
2021-02-10 23:29:49 +00:00
|
|
|
"tokio-stream",
|
2021-11-29 03:57:54 +00:00
|
|
|
"tree_hash",
|
2020-09-29 03:46:54 +00:00
|
|
|
"types",
|
2022-04-04 00:26:16 +00:00
|
|
|
"warp",
|
2020-09-29 03:46:54 +00:00
|
|
|
"warp_utils",
|
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "http_metrics"
|
|
|
|
version = "0.1.0"
|
|
|
|
dependencies = [
|
|
|
|
"beacon_chain",
|
|
|
|
"environment",
|
|
|
|
"lighthouse_metrics",
|
Rename eth2_libp2p to lighthouse_network (#2702)
## Description
The `eth2_libp2p` crate was originally named and designed to incorporate a simple libp2p integration into lighthouse. Since its origins the crates purpose has expanded dramatically. It now houses a lot more sophistication that is specific to lighthouse and no longer just a libp2p integration.
As of this writing it currently houses the following high-level lighthouse-specific logic:
- Lighthouse's implementation of the eth2 RPC protocol and specific encodings/decodings
- Integration and handling of ENRs with respect to libp2p and eth2
- Lighthouse's discovery logic, its integration with discv5 and logic about searching and handling peers.
- Lighthouse's peer manager - This is a large module handling various aspects of Lighthouse's network, such as peer scoring, handling pings and metadata, connection maintenance and recording, etc.
- Lighthouse's peer database - This is a collection of information stored for each individual peer which is specific to lighthouse. We store connection state, sync state, last seen ips and scores etc. The data stored for each peer is designed for various elements of the lighthouse code base such as syncing and the http api.
- Gossipsub scoring - This stores a collection of gossipsub 1.1 scoring mechanisms that are continuously analyssed and updated based on the ethereum 2 networks and how Lighthouse performs on these networks.
- Lighthouse specific types for managing gossipsub topics, sync status and ENR fields
- Lighthouse's network HTTP API metrics - A collection of metrics for lighthouse network monitoring
- Lighthouse's custom configuration of all networking protocols, RPC, gossipsub, discovery, identify and libp2p.
Therefore it makes sense to rename the crate to be more akin to its current purposes, simply that it manages the majority of Lighthouse's network stack. This PR renames this crate to `lighthouse_network`
Co-authored-by: Paul Hauner <paul@paulhauner.com>
2021-10-19 00:30:39 +00:00
|
|
|
"lighthouse_network",
|
2020-09-29 03:46:54 +00:00
|
|
|
"lighthouse_version",
|
2021-05-28 05:59:45 +00:00
|
|
|
"malloc_utils",
|
2020-09-29 03:46:54 +00:00
|
|
|
"reqwest",
|
|
|
|
"serde",
|
|
|
|
"slog",
|
|
|
|
"slot_clock",
|
|
|
|
"store",
|
2021-08-17 01:00:24 +00:00
|
|
|
"tokio",
|
2020-09-29 03:46:54 +00:00
|
|
|
"types",
|
2022-04-04 00:26:16 +00:00
|
|
|
"warp",
|
2020-09-29 03:46:54 +00:00
|
|
|
"warp_utils",
|
|
|
|
]
|
|
|
|
|
2019-12-09 11:39:44 +00:00
|
|
|
[[package]]
|
|
|
|
name = "httparse"
|
2022-06-18 23:59:43 +00:00
|
|
|
version = "1.7.1"
|
2019-12-09 11:39:44 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2022-06-18 23:59:43 +00:00
|
|
|
checksum = "496ce29bb5a52785b44e0f7ca2847ae0bb839c9bd28f69acac9b99d461c0c04c"
|
2019-12-09 11:39:44 +00:00
|
|
|
|
2021-05-04 00:44:05 +00:00
|
|
|
[[package]]
|
|
|
|
name = "httpdate"
|
2021-12-21 08:23:17 +00:00
|
|
|
version = "1.0.2"
|
2021-05-04 00:44:05 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2021-12-21 08:23:17 +00:00
|
|
|
checksum = "c4a1e36c821dbe04574f602848a19f742f4fb3c98d40449f11bcad18d6b17421"
|
2021-05-04 00:44:05 +00:00
|
|
|
|
2019-12-09 11:39:44 +00:00
|
|
|
[[package]]
|
|
|
|
name = "humantime"
|
2021-02-10 23:29:49 +00:00
|
|
|
version = "2.1.0"
|
2019-12-09 11:39:44 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2021-02-10 23:29:49 +00:00
|
|
|
checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4"
|
2019-12-09 11:39:44 +00:00
|
|
|
|
2020-11-28 05:30:57 +00:00
|
|
|
[[package]]
|
|
|
|
name = "hyper"
|
2022-06-18 23:59:43 +00:00
|
|
|
version = "0.14.19"
|
2021-02-10 23:29:49 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2022-06-18 23:59:43 +00:00
|
|
|
checksum = "42dc3c131584288d375f2d07f822b0cb012d8c6fb899a5b9fdb3cb7eb9b6004f"
|
2020-11-28 05:30:57 +00:00
|
|
|
dependencies = [
|
2021-10-29 01:59:29 +00:00
|
|
|
"bytes",
|
2020-11-28 05:30:57 +00:00
|
|
|
"futures-channel",
|
|
|
|
"futures-core",
|
|
|
|
"futures-util",
|
2021-07-09 03:20:24 +00:00
|
|
|
"h2",
|
2021-02-10 23:29:49 +00:00
|
|
|
"http",
|
2021-07-09 03:20:24 +00:00
|
|
|
"http-body",
|
2020-11-28 05:30:57 +00:00
|
|
|
"httparse",
|
2021-07-09 03:20:24 +00:00
|
|
|
"httpdate",
|
2022-06-18 23:59:43 +00:00
|
|
|
"itoa 1.0.2",
|
|
|
|
"pin-project-lite 0.2.9",
|
2022-06-07 02:35:55 +00:00
|
|
|
"socket2",
|
2021-08-17 01:00:24 +00:00
|
|
|
"tokio",
|
2020-11-28 05:30:57 +00:00
|
|
|
"tower-service",
|
|
|
|
"tracing",
|
2020-12-09 01:34:58 +00:00
|
|
|
"want",
|
2019-12-09 11:39:44 +00:00
|
|
|
]
|
|
|
|
|
2022-07-18 01:51:36 +00:00
|
|
|
[[package]]
|
|
|
|
name = "hyper-rustls"
|
|
|
|
version = "0.23.0"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "d87c48c02e0dc5e3b849a2041db3029fd066650f8f717c07bf8ed78ccb895cac"
|
|
|
|
dependencies = [
|
|
|
|
"http",
|
|
|
|
"hyper",
|
|
|
|
"rustls 0.20.6",
|
|
|
|
"tokio",
|
|
|
|
"tokio-rustls 0.23.4",
|
|
|
|
]
|
|
|
|
|
2021-02-10 23:29:49 +00:00
|
|
|
[[package]]
|
|
|
|
name = "hyper-tls"
|
|
|
|
version = "0.5.0"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "d6183ddfa99b85da61a140bea0efc93fdf56ceaa041b37d553518030827f9905"
|
|
|
|
dependencies = [
|
2021-10-29 01:59:29 +00:00
|
|
|
"bytes",
|
2021-07-09 03:20:24 +00:00
|
|
|
"hyper",
|
2021-02-10 23:29:49 +00:00
|
|
|
"native-tls",
|
2021-08-17 01:00:24 +00:00
|
|
|
"tokio",
|
2021-02-10 23:29:49 +00:00
|
|
|
"tokio-native-tls",
|
|
|
|
]
|
|
|
|
|
2021-07-09 06:15:32 +00:00
|
|
|
[[package]]
|
|
|
|
name = "ident_case"
|
|
|
|
version = "1.0.1"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39"
|
|
|
|
|
2019-12-09 11:39:44 +00:00
|
|
|
[[package]]
|
|
|
|
name = "idna"
|
2021-05-04 00:44:05 +00:00
|
|
|
version = "0.2.3"
|
2019-12-09 11:39:44 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2021-05-04 00:44:05 +00:00
|
|
|
checksum = "418a0a6fab821475f634efe3ccc45c013f742efe03d853e8d3355d5cb850ecf8"
|
2019-12-09 11:39:44 +00:00
|
|
|
dependencies = [
|
2020-05-10 09:56:31 +00:00
|
|
|
"matches",
|
|
|
|
"unicode-bidi",
|
|
|
|
"unicode-normalization",
|
2019-12-09 11:39:44 +00:00
|
|
|
]
|
|
|
|
|
2020-11-06 04:14:14 +00:00
|
|
|
[[package]]
|
|
|
|
name = "if-addrs"
|
2021-11-18 05:08:42 +00:00
|
|
|
version = "0.6.7"
|
2020-11-06 04:14:14 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2021-11-18 05:08:42 +00:00
|
|
|
checksum = "2273e421f7c4f0fc99e1934fe4776f59d8df2972f4199d703fc0da9f2a9f73de"
|
2020-11-06 04:14:14 +00:00
|
|
|
dependencies = [
|
|
|
|
"if-addrs-sys",
|
|
|
|
"libc",
|
2021-07-09 03:20:24 +00:00
|
|
|
"winapi",
|
2020-11-06 04:14:14 +00:00
|
|
|
]
|
|
|
|
|
2021-12-22 06:17:14 +00:00
|
|
|
[[package]]
|
|
|
|
name = "if-addrs"
|
|
|
|
version = "0.7.0"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "cbc0fa01ffc752e9dbc72818cdb072cd028b86be5e09dd04c5a643704fe101a9"
|
|
|
|
dependencies = [
|
|
|
|
"libc",
|
|
|
|
"winapi",
|
|
|
|
]
|
|
|
|
|
2020-11-06 04:14:14 +00:00
|
|
|
[[package]]
|
|
|
|
name = "if-addrs-sys"
|
|
|
|
version = "0.3.2"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "de74b9dd780476e837e5eb5ab7c88b49ed304126e412030a0adba99c8efe79ea"
|
|
|
|
dependencies = [
|
|
|
|
"cc",
|
|
|
|
"libc",
|
|
|
|
]
|
|
|
|
|
2020-10-02 08:47:00 +00:00
|
|
|
[[package]]
|
|
|
|
name = "igd"
|
|
|
|
version = "0.11.1"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "2fd32c880165b2f776af0b38d206d1cabaebcf46c166ac6ae004a5d45f7d48ef"
|
|
|
|
dependencies = [
|
|
|
|
"attohttpc",
|
2020-12-09 01:34:58 +00:00
|
|
|
"log",
|
2020-10-02 08:47:00 +00:00
|
|
|
"rand 0.7.3",
|
2020-12-09 01:34:58 +00:00
|
|
|
"url",
|
2020-10-02 08:47:00 +00:00
|
|
|
"xmltree",
|
|
|
|
]
|
|
|
|
|
2021-07-09 03:20:24 +00:00
|
|
|
[[package]]
|
|
|
|
name = "impl-codec"
|
|
|
|
version = "0.5.1"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "161ebdfec3c8e3b52bf61c4f3550a1eea4f9579d10dc1b936f3171ebdcd6c443"
|
|
|
|
dependencies = [
|
Separate execution payloads in the DB (#3157)
## Proposed Changes
Reduce post-merge disk usage by not storing finalized execution payloads in Lighthouse's database.
:warning: **This is achieved in a backwards-incompatible way for networks that have already merged** :warning:. Kiln users and shadow fork enjoyers will be unable to downgrade after running the code from this PR. The upgrade migration may take several minutes to run, and can't be aborted after it begins.
The main changes are:
- New column in the database called `ExecPayload`, keyed by beacon block root.
- The `BeaconBlock` column now stores blinded blocks only.
- Lots of places that previously used full blocks now use blinded blocks, e.g. analytics APIs, block replay in the DB, etc.
- On finalization:
- `prune_abanonded_forks` deletes non-canonical payloads whilst deleting non-canonical blocks.
- `migrate_db` deletes finalized canonical payloads whilst deleting finalized states.
- Conversions between blinded and full blocks are implemented in a compositional way, duplicating some work from Sean's PR #3134.
- The execution layer has a new `get_payload_by_block_hash` method that reconstructs a payload using the EE's `eth_getBlockByHash` call.
- I've tested manually that it works on Kiln, using Geth and Nethermind.
- This isn't necessarily the most efficient method, and new engine APIs are being discussed to improve this: https://github.com/ethereum/execution-apis/pull/146.
- We're depending on the `ethers` master branch, due to lots of recent changes. We're also using a workaround for https://github.com/gakonst/ethers-rs/issues/1134.
- Payload reconstruction is used in the HTTP API via `BeaconChain::get_block`, which is now `async`. Due to the `async` fn, the `blocking_json` wrapper has been removed.
- Payload reconstruction is used in network RPC to serve blocks-by-{root,range} responses. Here the `async` adjustment is messier, although I think I've managed to come up with a reasonable compromise: the handlers take the `SendOnDrop` by value so that they can drop it on _task completion_ (after the `fn` returns). Still, this is introducing disk reads onto core executor threads, which may have a negative performance impact (thoughts appreciated).
## Additional Info
- [x] For performance it would be great to remove the cloning of full blocks when converting them to blinded blocks to write to disk. I'm going to experiment with a `put_block` API that takes the block by value, breaks it into a blinded block and a payload, stores the blinded block, and then re-assembles the full block for the caller.
- [x] We should measure the latency of blocks-by-root and blocks-by-range responses.
- [x] We should add integration tests that stress the payload reconstruction (basic tests done, issue for more extensive tests: https://github.com/sigp/lighthouse/issues/3159)
- [x] We should (manually) test the schema v9 migration from several prior versions, particularly as blocks have changed on disk and some migrations rely on being able to load blocks.
Co-authored-by: Paul Hauner <paul@paulhauner.com>
2022-05-12 00:42:17 +00:00
|
|
|
"parity-scale-codec 2.3.1",
|
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "impl-codec"
|
|
|
|
version = "0.6.0"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "ba6a270039626615617f3f36d15fc827041df3b78c439da2cadfa47455a77f2f"
|
|
|
|
dependencies = [
|
2022-06-18 23:59:43 +00:00
|
|
|
"parity-scale-codec 3.1.5",
|
2019-12-09 11:39:44 +00:00
|
|
|
]
|
|
|
|
|
2021-07-09 03:20:24 +00:00
|
|
|
[[package]]
|
|
|
|
name = "impl-rlp"
|
|
|
|
version = "0.3.0"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "f28220f89297a075ddc7245cd538076ee98b01f2a9c23a53a4f1105d5a322808"
|
|
|
|
dependencies = [
|
2022-04-04 00:26:16 +00:00
|
|
|
"rlp",
|
2021-07-09 03:20:24 +00:00
|
|
|
]
|
|
|
|
|
2020-01-08 03:18:06 +00:00
|
|
|
[[package]]
|
|
|
|
name = "impl-serde"
|
2021-11-18 05:08:42 +00:00
|
|
|
version = "0.3.2"
|
2020-01-08 03:18:06 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2021-11-18 05:08:42 +00:00
|
|
|
checksum = "4551f042f3438e64dbd6226b20527fc84a6e1fe65688b58746a2f53623f25f5c"
|
2020-01-08 03:18:06 +00:00
|
|
|
dependencies = [
|
2020-05-10 09:56:31 +00:00
|
|
|
"serde",
|
2020-01-08 03:18:06 +00:00
|
|
|
]
|
|
|
|
|
2021-07-09 03:20:24 +00:00
|
|
|
[[package]]
|
|
|
|
name = "impl-trait-for-tuples"
|
2022-02-10 04:12:03 +00:00
|
|
|
version = "0.2.2"
|
2021-07-09 03:20:24 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2022-02-10 04:12:03 +00:00
|
|
|
checksum = "11d7a9f6330b71fea57921c9b61c47ee6e84f72d394754eff6163ae67e7395eb"
|
2021-07-09 03:20:24 +00:00
|
|
|
dependencies = [
|
|
|
|
"proc-macro2",
|
|
|
|
"quote",
|
|
|
|
"syn",
|
|
|
|
]
|
|
|
|
|
2019-12-09 11:39:44 +00:00
|
|
|
[[package]]
|
|
|
|
name = "indexmap"
|
2022-07-05 23:36:42 +00:00
|
|
|
version = "1.9.1"
|
2019-12-09 11:39:44 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2022-07-05 23:36:42 +00:00
|
|
|
checksum = "10a35a97730320ffe8e2d410b5d3b69279b98d2c14bdb8b70ea89ecf7888d41e"
|
2019-12-09 11:39:44 +00:00
|
|
|
dependencies = [
|
2022-02-10 04:12:03 +00:00
|
|
|
"autocfg 1.1.0",
|
2022-06-18 23:59:43 +00:00
|
|
|
"hashbrown 0.12.1",
|
2019-12-09 11:39:44 +00:00
|
|
|
]
|
|
|
|
|
2020-07-06 01:55:56 +00:00
|
|
|
[[package]]
|
|
|
|
name = "instant"
|
2021-10-29 01:59:29 +00:00
|
|
|
version = "0.1.12"
|
2020-07-06 01:55:56 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2021-10-29 01:59:29 +00:00
|
|
|
checksum = "7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2c"
|
2020-09-22 04:45:15 +00:00
|
|
|
dependencies = [
|
2021-11-18 05:08:42 +00:00
|
|
|
"cfg-if",
|
2022-07-18 01:51:36 +00:00
|
|
|
"js-sys",
|
|
|
|
"wasm-bindgen",
|
|
|
|
"web-sys",
|
2020-09-22 04:45:15 +00:00
|
|
|
]
|
2020-07-06 01:55:56 +00:00
|
|
|
|
2019-12-09 11:39:44 +00:00
|
|
|
[[package]]
|
|
|
|
name = "int_to_bytes"
|
Initial work towards v0.2.0 (#924)
* Remove ping protocol
* Initial renaming of network services
* Correct rebasing relative to latest master
* Start updating types
* Adds HashMapDelay struct to utils
* Initial network restructure
* Network restructure. Adds new types for v0.2.0
* Removes build artefacts
* Shift validation to beacon chain
* Temporarily remove gossip validation
This is to be updated to match current optimisation efforts.
* Adds AggregateAndProof
* Begin rebuilding pubsub encoding/decoding
* Signature hacking
* Shift gossipsup decoding into eth2_libp2p
* Existing EF tests passing with fake_crypto
* Shifts block encoding/decoding into RPC
* Delete outdated API spec
* All release tests passing bar genesis state parsing
* Update and test YamlConfig
* Update to spec v0.10 compatible BLS
* Updates to BLS EF tests
* Add EF test for AggregateVerify
And delete unused hash2curve tests for uncompressed points
* Update EF tests to v0.10.1
* Use optional block root correctly in block proc
* Use genesis fork in deposit domain. All tests pass
* Fast aggregate verify test
* Update REST API docs
* Fix unused import
* Bump spec tags to v0.10.1
* Add `seconds_per_eth1_block` to chainspec
* Update to timestamp based eth1 voting scheme
* Return None from `get_votes_to_consider` if block cache is empty
* Handle overflows in `is_candidate_block`
* Revert to failing tests
* Fix eth1 data sets test
* Choose default vote according to spec
* Fix collect_valid_votes tests
* Fix `get_votes_to_consider` to choose all eligible blocks
* Uncomment winning_vote tests
* Add comments; remove unused code
* Reduce seconds_per_eth1_block for simulation
* Addressed review comments
* Add test for default vote case
* Fix logs
* Remove unused functions
* Meter default eth1 votes
* Fix comments
* Progress on attestation service
* Address review comments; remove unused dependency
* Initial work on removing libp2p lock
* Add LRU caches to store (rollup)
* Update attestation validation for DB changes (WIP)
* Initial version of should_forward_block
* Scaffold
* Progress on attestation validation
Also, consolidate prod+testing slot clocks so that they share much
of the same implementation and can both handle sub-slot time changes.
* Removes lock from libp2p service
* Completed network lock removal
* Finish(?) attestation processing
* Correct network termination future
* Add slot check to block check
* Correct fmt issues
* Remove Drop implementation for network service
* Add first attempt at attestation proc. re-write
* Add version 2 of attestation processing
* Minor fixes
* Add validator pubkey cache
* Make get_indexed_attestation take a committee
* Link signature processing into new attn verification
* First working version
* Ensure pubkey cache is updated
* Add more metrics, slight optimizations
* Clone committee cache during attestation processing
* Update shuffling cache during block processing
* Remove old commented-out code
* Fix shuffling cache insert bug
* Used indexed attestation in fork choice
* Restructure attn processing, add metrics
* Add more detailed metrics
* Tidy, fix failing tests
* Fix failing tests, tidy
* Address reviewers suggestions
* Disable/delete two outdated tests
* Modification of validator for subscriptions
* Add slot signing to validator client
* Further progress on validation subscription
* Adds necessary validator subscription functionality
* Add new Pubkeys struct to signature_sets
* Refactor with functional approach
* Update beacon chain
* Clean up validator <-> beacon node http types
* Add aggregator status to ValidatorDuty
* Impl Clone for manual slot clock
* Fix minor errors
* Further progress validator client subscription
* Initial subscription and aggregation handling
* Remove decompressed member from pubkey bytes
* Progress to modifying val client for attestation aggregation
* First draft of validator client upgrade for aggregate attestations
* Add hashmap for indices lookup
* Add state cache, remove store cache
* Only build the head committee cache
* Removes lock on a network channel
* Partially implement beacon node subscription http api
* Correct compilation issues
* Change `get_attesting_indices` to use Vec
* Fix failing test
* Partial implementation of timer
* Adds timer, removes exit_future, http api to op pool
* Partial multiple aggregate attestation handling
* Permits bulk messages accross gossipsub network channel
* Correct compile issues
* Improve gosispsub messaging and correct rest api helpers
* Added global gossipsub subscriptions
* Update validator subscriptions data structs
* Tidy
* Re-structure validator subscriptions
* Initial handling of subscriptions
* Re-structure network service
* Add pubkey cache persistence file
* Add more comments
* Integrate persistence file into builder
* Add pubkey cache tests
* Add HashSetDelay and introduce into attestation service
* Handles validator subscriptions
* Add data_dir to beacon chain builder
* Remove Option in pubkey cache persistence file
* Ensure consistency between datadir/data_dir
* Fix failing network test
* Peer subnet discovery gets queued for future subscriptions
* Reorganise attestation service functions
* Initial wiring of attestation service
* First draft of attestation service timing logic
* Correct minor typos
* Tidy
* Fix todos
* Improve tests
* Add PeerInfo to connected peers mapping
* Fix compile error
* Fix compile error from merge
* Split up block processing metrics
* Tidy
* Refactor get_pubkey_from_state
* Remove commented-out code
* Rename state_cache -> checkpoint_cache
* Rename Checkpoint -> Snapshot
* Tidy, add comments
* Tidy up find_head function
* Change some checkpoint -> snapshot
* Add tests
* Expose max_len
* Remove dead code
* Tidy
* Fix bug
* Add sync-speed metric
* Add first attempt at VerifiableBlock
* Start integrating into beacon chain
* Integrate VerifiableBlock
* Rename VerifableBlock -> PartialBlockVerification
* Add start of typed methods
* Add progress
* Add further progress
* Rename structs
* Add full block verification to block_processing.rs
* Further beacon chain integration
* Update checks for gossip
* Add todo
* Start adding segement verification
* Add passing chain segement test
* Initial integration with batch sync
* Minor changes
* Tidy, add more error checking
* Start adding chain_segment tests
* Finish invalid signature tests
* Include single and gossip verified blocks in tests
* Add gossip verification tests
* Start adding docs
* Finish adding comments to block_processing.rs
* Rename block_processing.rs -> block_verification
* Start removing old block processing code
* Fixes beacon_chain compilation
* Fix project-wide compile errors
* Remove old code
* Correct code to pass all tests
* Fix bug with beacon proposer index
* Fix shim for BlockProcessingError
* Only process one epoch at a time
* Fix loop in chain segment processing
* Correct tests from master merge
* Add caching for state.eth1_data_votes
* Add BeaconChain::validator_pubkey
* Revert "Add caching for state.eth1_data_votes"
This reverts commit cd73dcd6434fb8d8e6bf30c5356355598ea7b78e.
Co-authored-by: Grant Wuerker <gwuerker@gmail.com>
Co-authored-by: Michael Sproul <michael@sigmaprime.io>
Co-authored-by: Michael Sproul <micsproul@gmail.com>
Co-authored-by: pawan <pawandhananjay@gmail.com>
Co-authored-by: Paul Hauner <paul@paulhauner.com>
2020-03-17 06:24:44 +00:00
|
|
|
version = "0.2.0"
|
2019-12-09 11:39:44 +00:00
|
|
|
dependencies = [
|
2021-10-29 01:59:29 +00:00
|
|
|
"bytes",
|
2020-10-28 22:19:38 +00:00
|
|
|
"hex",
|
2020-05-10 09:56:31 +00:00
|
|
|
"yaml-rust",
|
2019-12-09 11:39:44 +00:00
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "integer-sqrt"
|
2020-09-11 01:43:13 +00:00
|
|
|
version = "0.1.5"
|
2019-12-09 11:39:44 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2020-09-11 01:43:13 +00:00
|
|
|
checksum = "276ec31bcb4a9ee45f58bec6f9ec700ae4cf4f4f8f2fa7e06cb406bd5ffdd770"
|
2020-09-09 02:28:35 +00:00
|
|
|
dependencies = [
|
|
|
|
"num-traits",
|
|
|
|
]
|
2019-12-09 11:39:44 +00:00
|
|
|
|
2021-06-03 01:11:33 +00:00
|
|
|
[[package]]
|
|
|
|
name = "ipconfig"
|
2022-06-07 02:35:55 +00:00
|
|
|
version = "0.3.0"
|
2021-06-03 01:11:33 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2022-06-07 02:35:55 +00:00
|
|
|
checksum = "723519edce41262b05d4143ceb95050e4c614f483e78e9fd9e39a8275a84ad98"
|
2021-06-03 01:11:33 +00:00
|
|
|
dependencies = [
|
2022-06-07 02:35:55 +00:00
|
|
|
"socket2",
|
|
|
|
"widestring 0.5.1",
|
2021-06-03 01:11:33 +00:00
|
|
|
"winapi",
|
2022-06-07 02:35:55 +00:00
|
|
|
"winreg 0.7.0",
|
2021-06-03 01:11:33 +00:00
|
|
|
]
|
|
|
|
|
2019-12-09 11:39:44 +00:00
|
|
|
[[package]]
|
|
|
|
name = "ipnet"
|
2022-06-18 23:59:43 +00:00
|
|
|
version = "2.5.0"
|
2019-12-09 11:39:44 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2022-06-18 23:59:43 +00:00
|
|
|
checksum = "879d54834c8c76457ef4293a689b2a8c59b076067ad77b15efafbb05f92a592b"
|
2019-12-09 11:39:44 +00:00
|
|
|
|
2021-03-02 05:59:49 +00:00
|
|
|
[[package]]
|
|
|
|
name = "itertools"
|
2021-12-22 06:17:14 +00:00
|
|
|
version = "0.10.3"
|
2021-03-02 05:59:49 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2021-12-22 06:17:14 +00:00
|
|
|
checksum = "a9a9d19fa1e79b6215ff29b9d6880b706147f16e9b1dbb1e4e5947b5b02bc5e3"
|
2021-03-02 05:59:49 +00:00
|
|
|
dependencies = [
|
|
|
|
"either",
|
|
|
|
]
|
|
|
|
|
2019-12-09 11:39:44 +00:00
|
|
|
[[package]]
|
|
|
|
name = "itoa"
|
2021-09-03 01:10:25 +00:00
|
|
|
version = "0.4.8"
|
2019-12-09 11:39:44 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2021-09-03 01:10:25 +00:00
|
|
|
checksum = "b71991ff56294aa922b450139ee08b3bfc70982c6b2c7562771375cf73542dd4"
|
2019-12-09 11:39:44 +00:00
|
|
|
|
2021-12-22 06:17:14 +00:00
|
|
|
[[package]]
|
|
|
|
name = "itoa"
|
2022-06-18 23:59:43 +00:00
|
|
|
version = "1.0.2"
|
2021-12-22 06:17:14 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2022-06-18 23:59:43 +00:00
|
|
|
checksum = "112c678d4050afce233f4f2852bb2eb519230b3cf12f33585275537d7e41578d"
|
2021-12-22 06:17:14 +00:00
|
|
|
|
2019-12-09 11:39:44 +00:00
|
|
|
[[package]]
|
|
|
|
name = "js-sys"
|
2022-06-18 23:59:43 +00:00
|
|
|
version = "0.3.58"
|
2019-12-09 11:39:44 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2022-06-18 23:59:43 +00:00
|
|
|
checksum = "c3fac17f7123a73ca62df411b1bf727ccc805daa070338fda671c86dac1bdc27"
|
2019-12-09 11:39:44 +00:00
|
|
|
dependencies = [
|
2020-05-10 09:56:31 +00:00
|
|
|
"wasm-bindgen",
|
2019-12-09 11:39:44 +00:00
|
|
|
]
|
|
|
|
|
2020-04-19 02:20:43 +00:00
|
|
|
[[package]]
|
|
|
|
name = "jsonrpc-core"
|
2021-08-17 01:00:24 +00:00
|
|
|
version = "18.0.0"
|
2020-04-19 02:20:43 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2021-08-17 01:00:24 +00:00
|
|
|
checksum = "14f7f76aef2d054868398427f6c54943cf3d1caa9a7ec7d0c38d69df97a965eb"
|
2020-04-19 02:20:43 +00:00
|
|
|
dependencies = [
|
2021-07-09 03:20:24 +00:00
|
|
|
"futures",
|
|
|
|
"futures-executor",
|
|
|
|
"futures-util",
|
2020-12-09 01:34:58 +00:00
|
|
|
"log",
|
2020-05-10 09:56:31 +00:00
|
|
|
"serde",
|
|
|
|
"serde_derive",
|
|
|
|
"serde_json",
|
2020-04-19 02:20:43 +00:00
|
|
|
]
|
|
|
|
|
2022-03-08 06:46:24 +00:00
|
|
|
[[package]]
|
|
|
|
name = "jsonwebtoken"
|
2022-06-18 23:59:43 +00:00
|
|
|
version = "8.1.1"
|
2022-03-08 06:46:24 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2022-06-18 23:59:43 +00:00
|
|
|
checksum = "1aa4b4af834c6cfd35d8763d359661b90f2e45d8f750a0849156c7f4671af09c"
|
2022-03-08 06:46:24 +00:00
|
|
|
dependencies = [
|
2022-04-04 00:26:16 +00:00
|
|
|
"base64",
|
2022-03-08 06:46:24 +00:00
|
|
|
"pem",
|
|
|
|
"ring",
|
|
|
|
"serde",
|
|
|
|
"serde_json",
|
|
|
|
"simple_asn1",
|
|
|
|
]
|
|
|
|
|
2020-10-23 04:16:33 +00:00
|
|
|
[[package]]
|
|
|
|
name = "k256"
|
2021-07-05 00:54:17 +00:00
|
|
|
version = "0.8.1"
|
2020-10-23 04:16:33 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2021-07-05 00:54:17 +00:00
|
|
|
checksum = "8c3e8e491ed22bc161583a1c77e42313672c483eba6bd9d7afec0f1131d0b9ce"
|
2020-10-23 04:16:33 +00:00
|
|
|
dependencies = [
|
2021-11-18 05:08:42 +00:00
|
|
|
"cfg-if",
|
Separate execution payloads in the DB (#3157)
## Proposed Changes
Reduce post-merge disk usage by not storing finalized execution payloads in Lighthouse's database.
:warning: **This is achieved in a backwards-incompatible way for networks that have already merged** :warning:. Kiln users and shadow fork enjoyers will be unable to downgrade after running the code from this PR. The upgrade migration may take several minutes to run, and can't be aborted after it begins.
The main changes are:
- New column in the database called `ExecPayload`, keyed by beacon block root.
- The `BeaconBlock` column now stores blinded blocks only.
- Lots of places that previously used full blocks now use blinded blocks, e.g. analytics APIs, block replay in the DB, etc.
- On finalization:
- `prune_abanonded_forks` deletes non-canonical payloads whilst deleting non-canonical blocks.
- `migrate_db` deletes finalized canonical payloads whilst deleting finalized states.
- Conversions between blinded and full blocks are implemented in a compositional way, duplicating some work from Sean's PR #3134.
- The execution layer has a new `get_payload_by_block_hash` method that reconstructs a payload using the EE's `eth_getBlockByHash` call.
- I've tested manually that it works on Kiln, using Geth and Nethermind.
- This isn't necessarily the most efficient method, and new engine APIs are being discussed to improve this: https://github.com/ethereum/execution-apis/pull/146.
- We're depending on the `ethers` master branch, due to lots of recent changes. We're also using a workaround for https://github.com/gakonst/ethers-rs/issues/1134.
- Payload reconstruction is used in the HTTP API via `BeaconChain::get_block`, which is now `async`. Due to the `async` fn, the `blocking_json` wrapper has been removed.
- Payload reconstruction is used in network RPC to serve blocks-by-{root,range} responses. Here the `async` adjustment is messier, although I think I've managed to come up with a reasonable compromise: the handlers take the `SendOnDrop` by value so that they can drop it on _task completion_ (after the `fn` returns). Still, this is introducing disk reads onto core executor threads, which may have a negative performance impact (thoughts appreciated).
## Additional Info
- [x] For performance it would be great to remove the cloning of full blocks when converting them to blinded blocks to write to disk. I'm going to experiment with a `put_block` API that takes the block by value, breaks it into a blinded block and a payload, stores the blinded block, and then re-assembles the full block for the caller.
- [x] We should measure the latency of blocks-by-root and blocks-by-range responses.
- [x] We should add integration tests that stress the payload reconstruction (basic tests done, issue for more extensive tests: https://github.com/sigp/lighthouse/issues/3159)
- [x] We should (manually) test the schema v9 migration from several prior versions, particularly as blocks have changed on disk and some migrations rely on being able to load blocks.
Co-authored-by: Paul Hauner <paul@paulhauner.com>
2022-05-12 00:42:17 +00:00
|
|
|
"ecdsa 0.11.1",
|
|
|
|
"elliptic-curve 0.9.12",
|
2022-01-11 01:35:56 +00:00
|
|
|
"sha2 0.9.9",
|
2020-10-23 04:16:33 +00:00
|
|
|
]
|
|
|
|
|
Separate execution payloads in the DB (#3157)
## Proposed Changes
Reduce post-merge disk usage by not storing finalized execution payloads in Lighthouse's database.
:warning: **This is achieved in a backwards-incompatible way for networks that have already merged** :warning:. Kiln users and shadow fork enjoyers will be unable to downgrade after running the code from this PR. The upgrade migration may take several minutes to run, and can't be aborted after it begins.
The main changes are:
- New column in the database called `ExecPayload`, keyed by beacon block root.
- The `BeaconBlock` column now stores blinded blocks only.
- Lots of places that previously used full blocks now use blinded blocks, e.g. analytics APIs, block replay in the DB, etc.
- On finalization:
- `prune_abanonded_forks` deletes non-canonical payloads whilst deleting non-canonical blocks.
- `migrate_db` deletes finalized canonical payloads whilst deleting finalized states.
- Conversions between blinded and full blocks are implemented in a compositional way, duplicating some work from Sean's PR #3134.
- The execution layer has a new `get_payload_by_block_hash` method that reconstructs a payload using the EE's `eth_getBlockByHash` call.
- I've tested manually that it works on Kiln, using Geth and Nethermind.
- This isn't necessarily the most efficient method, and new engine APIs are being discussed to improve this: https://github.com/ethereum/execution-apis/pull/146.
- We're depending on the `ethers` master branch, due to lots of recent changes. We're also using a workaround for https://github.com/gakonst/ethers-rs/issues/1134.
- Payload reconstruction is used in the HTTP API via `BeaconChain::get_block`, which is now `async`. Due to the `async` fn, the `blocking_json` wrapper has been removed.
- Payload reconstruction is used in network RPC to serve blocks-by-{root,range} responses. Here the `async` adjustment is messier, although I think I've managed to come up with a reasonable compromise: the handlers take the `SendOnDrop` by value so that they can drop it on _task completion_ (after the `fn` returns). Still, this is introducing disk reads onto core executor threads, which may have a negative performance impact (thoughts appreciated).
## Additional Info
- [x] For performance it would be great to remove the cloning of full blocks when converting them to blinded blocks to write to disk. I'm going to experiment with a `put_block` API that takes the block by value, breaks it into a blinded block and a payload, stores the blinded block, and then re-assembles the full block for the caller.
- [x] We should measure the latency of blocks-by-root and blocks-by-range responses.
- [x] We should add integration tests that stress the payload reconstruction (basic tests done, issue for more extensive tests: https://github.com/sigp/lighthouse/issues/3159)
- [x] We should (manually) test the schema v9 migration from several prior versions, particularly as blocks have changed on disk and some migrations rely on being able to load blocks.
Co-authored-by: Paul Hauner <paul@paulhauner.com>
2022-05-12 00:42:17 +00:00
|
|
|
[[package]]
|
|
|
|
name = "k256"
|
|
|
|
version = "0.10.4"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "19c3a5e0a0b8450278feda242592512e09f61c72e018b8cd5c859482802daf2d"
|
|
|
|
dependencies = [
|
|
|
|
"cfg-if",
|
|
|
|
"ecdsa 0.13.4",
|
|
|
|
"elliptic-curve 0.11.12",
|
|
|
|
"sec1",
|
|
|
|
"sha3 0.9.1",
|
|
|
|
]
|
|
|
|
|
2019-12-09 11:39:44 +00:00
|
|
|
[[package]]
|
|
|
|
name = "keccak"
|
2022-06-18 23:59:43 +00:00
|
|
|
version = "0.1.2"
|
2019-12-09 11:39:44 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2022-06-18 23:59:43 +00:00
|
|
|
checksum = "f9b7d56ba4a8344d6be9729995e6b06f928af29998cdf79fe390cbf6b1fee838"
|
2019-12-09 11:39:44 +00:00
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "lazy_static"
|
|
|
|
version = "1.4.0"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2020-05-10 09:56:31 +00:00
|
|
|
checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646"
|
2020-05-11 08:43:43 +00:00
|
|
|
dependencies = [
|
|
|
|
"spin",
|
|
|
|
]
|
2019-12-09 11:39:44 +00:00
|
|
|
|
2021-12-21 08:23:17 +00:00
|
|
|
[[package]]
|
|
|
|
name = "lazycell"
|
|
|
|
version = "1.3.0"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55"
|
|
|
|
|
2019-12-09 11:39:44 +00:00
|
|
|
[[package]]
|
|
|
|
name = "lcli"
|
2022-07-21 22:02:36 +00:00
|
|
|
version = "2.4.0"
|
2019-12-09 11:39:44 +00:00
|
|
|
dependencies = [
|
2021-01-19 08:42:30 +00:00
|
|
|
"account_utils",
|
2020-07-31 05:00:39 +00:00
|
|
|
"bls",
|
2020-05-10 09:56:31 +00:00
|
|
|
"clap",
|
|
|
|
"clap_utils",
|
|
|
|
"deposit_contract",
|
2020-09-29 00:02:44 +00:00
|
|
|
"directory",
|
2021-09-22 00:37:28 +00:00
|
|
|
"env_logger 0.9.0",
|
2020-05-10 09:56:31 +00:00
|
|
|
"environment",
|
2021-03-30 05:17:58 +00:00
|
|
|
"eth1_test_rig",
|
2021-09-25 07:53:56 +00:00
|
|
|
"eth2",
|
2020-12-08 05:41:10 +00:00
|
|
|
"eth2_network_config",
|
2021-11-29 03:57:54 +00:00
|
|
|
"eth2_ssz",
|
2021-01-19 08:42:30 +00:00
|
|
|
"eth2_wallet",
|
2020-05-10 09:56:31 +00:00
|
|
|
"genesis",
|
2021-11-16 00:46:12 +00:00
|
|
|
"int_to_bytes",
|
Rename eth2_libp2p to lighthouse_network (#2702)
## Description
The `eth2_libp2p` crate was originally named and designed to incorporate a simple libp2p integration into lighthouse. Since its origins the crates purpose has expanded dramatically. It now houses a lot more sophistication that is specific to lighthouse and no longer just a libp2p integration.
As of this writing it currently houses the following high-level lighthouse-specific logic:
- Lighthouse's implementation of the eth2 RPC protocol and specific encodings/decodings
- Integration and handling of ENRs with respect to libp2p and eth2
- Lighthouse's discovery logic, its integration with discv5 and logic about searching and handling peers.
- Lighthouse's peer manager - This is a large module handling various aspects of Lighthouse's network, such as peer scoring, handling pings and metadata, connection maintenance and recording, etc.
- Lighthouse's peer database - This is a collection of information stored for each individual peer which is specific to lighthouse. We store connection state, sync state, last seen ips and scores etc. The data stored for each peer is designed for various elements of the lighthouse code base such as syncing and the http api.
- Gossipsub scoring - This stores a collection of gossipsub 1.1 scoring mechanisms that are continuously analyssed and updated based on the ethereum 2 networks and how Lighthouse performs on these networks.
- Lighthouse specific types for managing gossipsub topics, sync status and ENR fields
- Lighthouse's network HTTP API metrics - A collection of metrics for lighthouse network monitoring
- Lighthouse's custom configuration of all networking protocols, RPC, gossipsub, discovery, identify and libp2p.
Therefore it makes sense to rename the crate to be more akin to its current purposes, simply that it manages the majority of Lighthouse's network stack. This PR renames this crate to `lighthouse_network`
Co-authored-by: Paul Hauner <paul@paulhauner.com>
2021-10-19 00:30:39 +00:00
|
|
|
"lighthouse_network",
|
2020-08-04 07:44:53 +00:00
|
|
|
"lighthouse_version",
|
2020-12-09 01:34:58 +00:00
|
|
|
"log",
|
2021-05-04 01:59:51 +00:00
|
|
|
"sensitive_url",
|
2020-05-10 09:56:31 +00:00
|
|
|
"serde",
|
2021-09-22 00:37:28 +00:00
|
|
|
"serde_json",
|
2020-05-10 09:56:31 +00:00
|
|
|
"serde_yaml",
|
|
|
|
"state_processing",
|
2021-11-29 03:57:54 +00:00
|
|
|
"tree_hash",
|
2020-05-10 09:56:31 +00:00
|
|
|
"types",
|
Wallet-based, encrypted key management (#1138)
* Update hashmap hashset to stable futures
* Adds panic test to hashset delay
* Port remote_beacon_node to stable futures
* Fix lcli merge conflicts
* Non rpc stuff compiles
* Remove padding
* Add error enum, zeroize more things
* Fix comment
* protocol.rs compiles
* Port websockets, timer and notifier to stable futures (#1035)
* Fix lcli
* Port timer to stable futures
* Fix timer
* Port websocket_server to stable futures
* Port notifier to stable futures
* Add TODOS
* Port remote_beacon_node to stable futures
* Partial eth2-libp2p stable future upgrade
* Finished first round of fighting RPC types
* Further progress towards porting eth2-libp2p adds caching to discovery
* Update behaviour
* Add keystore builder
* Remove keystore stuff from val client
* Add more tests, comments
* RPC handler to stable futures
* Update RPC to master libp2p
* Add more comments, test vectors
* Network service additions
* Progress on improving JSON validation
* More JSON verification
* Start moving JSON into own mod
* Remove old code
* Add more tests, reader/writers
* Tidy
* Move keystore into own file
* Move more logic into keystore file
* Tidy
* Tidy
* Fix the fallback transport construction (#1102)
* Allow for odd-character hex
* Correct warning
* Remove hashmap delay
* Compiling version of eth2-libp2p
* Update all crates versions
* Fix conversion function and add tests (#1113)
* Add more json missing field checks
* Use scrypt by default
* Tidy, address comments
* Test path and uuid in vectors
* Fix comment
* Add checks for kdf params
* Enforce empty kdf message
* Port validator_client to stable futures (#1114)
* Add PH & MS slot clock changes
* Account for genesis time
* Add progress on duties refactor
* Add simple is_aggregator bool to val subscription
* Start work on attestation_verification.rs
* Add progress on ObservedAttestations
* Progress with ObservedAttestations
* Fix tests
* Add observed attestations to the beacon chain
* Add attestation observation to processing code
* Add progress on attestation verification
* Add first draft of ObservedAttesters
* Add more tests
* Add observed attesters to beacon chain
* Add observers to attestation processing
* Add more attestation verification
* Create ObservedAggregators map
* Remove commented-out code
* Add observed aggregators into chain
* Add progress
* Finish adding features to attestation verification
* Ensure beacon chain compiles
* Link attn verification into chain
* Integrate new attn verification in chain
* Remove old attestation processing code
* Start trying to fix beacon_chain tests
* Split adding into pools into two functions
* Add aggregation to harness
* Get test harness working again
* Adjust the number of aggregators for test harness
* Fix edge-case in harness
* Integrate new attn processing in network
* Fix compile bug in validator_client
* Update validator API endpoints
* Fix aggreagation in test harness
* Fix enum thing
* Fix attestation observation bug:
* Patch failing API tests
* Start adding comments to attestation verification
* Remove unused attestation field
* Unify "is block known" logic
* Update comments
* Supress fork choice errors for network processing
* Add todos
* Tidy
* Add gossip attn tests
* Disallow test harness to produce old attns
* Comment out in-progress tests
* Partially address pruning tests
* Fix failing store test
* Add aggregate tests
* Add comments about which spec conditions we check
* Dont re-aggregate
* Split apart test harness attn production
* Fix compile error in network
* Make progress on commented-out test
* Fix skipping attestation test
* Add fork choice verification tests
* Tidy attn tests, remove dead code
* Remove some accidentally added code
* Fix clippy lint
* Rename test file
* Add block tests, add cheap block proposer check
* Rename block testing file
* Add observed_block_producers
* Tidy
* Switch around block signature verification
* Finish block testing
* Remove gossip from signature tests
* First pass of self review
* Fix deviation in spec
* Update test spec tags
* Start moving over to hashset
* Finish moving observed attesters to hashmap
* Move aggregation pool over to hashmap
* Make fc attn borrow again
* Fix rest_api compile error
* Fix missing comments
* Fix monster test
* Uncomment increasing slots test
* Address remaining comments
* Remove unsafe, use cfg test
* Remove cfg test flag
* Fix dodgy comment
* Revert "Update hashmap hashset to stable futures"
This reverts commit d432378a3cc5cd67fc29c0b15b96b886c1323554.
* Revert "Adds panic test to hashset delay"
This reverts commit 281502396fc5b90d9c421a309c2c056982c9525b.
* Ported attestation_service
* Ported duties_service
* Ported fork_service
* More ports
* Port block_service
* Minor fixes
* VC compiles
* Update TODOS
* Borrow self where possible
* Ignore aggregates that are already known.
* Unify aggregator modulo logic
* Fix typo in logs
* Refactor validator subscription logic
* Avoid reproducing selection proof
* Skip HTTP call if no subscriptions
* Rename DutyAndState -> DutyAndProof
* Tidy logs
* Print root as dbg
* Fix compile errors in tests
* Fix compile error in test
* Re-Fix attestation and duties service
* Minor fixes
Co-authored-by: Paul Hauner <paul@paulhauner.com>
* Expose json_keystore mod
* First commits on path derivation
* Progress with implementation
* More progress
* Passing intermediate test vectors
* Tidy, add comments
* Add DerivedKey structs
* Move key derivation into own crate
* Add zeroize structs
* Return error for empty seed
* Add tests
* Tidy
* First commits on path derivation
* Progress with implementation
* Move key derivation into own crate
* Start defining JSON wallet
* Add progress
* Split out encrypt/decrypt
* First commits on path derivation
* Progress with implementation
* More progress
* Passing intermediate test vectors
* Tidy, add comments
* Add DerivedKey structs
* Move key derivation into own crate
* Add zeroize structs
* Return error for empty seed
* Add tests
* Tidy
* Add progress
* Replace some password usage with slice
* First commits on path derivation
* Progress with implementation
* More progress
* Passing intermediate test vectors
* Tidy, add comments
* Add DerivedKey structs
* Move key derivation into own crate
* Add zeroize structs
* Return error for empty seed
* Add tests
* Tidy
* Add progress
* Expose PlainText struct
* First commits on path derivation
* Progress with implementation
* More progress
* Passing intermediate test vectors
* Tidy, add comments
* Add DerivedKey structs
* Move key derivation into own crate
* Add zeroize structs
* Return error for empty seed
* Add tests
* Tidy
* Add builder
* Expose consts, remove Password
* Minor progress
* Expose SALT_SIZE
* First compiling version
* Add test vectors
* Network crate update to stable futures
* Move dbg assert statement
* Port account_manager to stable futures (#1121)
* Port account_manager to stable futures
* Run async fns in tokio environment
* Port rest_api crate to stable futures (#1118)
* Port rest_api lib to stable futures
* Reduce tokio features
* Update notifier to stable futures
* Builder update
* Further updates
* Add mnemonic, tidy
* Convert self referential async functions
* Tidy
* Add testing
* Add first attempt at validator_dir
* Present pubkey field
* stable futures fixes (#1124)
* Fix eth1 update functions
* Fix genesis and client
* Fix beacon node lib
* Return appropriate runtimes from environment
* Fix test rig
* Refactor eth1 service update
* Upgrade simulator to stable futures
* Lighthouse compiles on stable futures
* Add first pass of wallet manager
* Progress with CLI
* Remove println debugging statement
* Tidy output
* Tidy 600 perms
* Update libp2p service, start rpc test upgrade
* Add validator creation flow
* Update network crate for new libp2p
* Start tidying, adding comments
* Update tokio::codec to futures_codec (#1128)
* Further work towards RPC corrections
* Correct http timeout and network service select
* Add wallet mgr testing
* Shift LockedWallet into own file
* Add comments to fs
* Start integration into VC
* Use tokio runtime for libp2p
* Revert "Update tokio::codec to futures_codec (#1128)"
This reverts commit e57aea924acf5cbabdcea18895ac07e38a425ed7.
* Upgrade RPC libp2p tests
* Upgrade secio fallback test
* Add lcli keypair upgrade command
* Upgrade gossipsub examples
* Clean up RPC protocol
* Test fixes (#1133)
* Correct websocket timeout and run on os thread
* Fix network test
* Add --secrets-dir to VC
* Remove --legacy-keys from VC
* Clean up PR
* Correct tokio tcp move attestation service tests
* Upgrade attestation service tests
* Fix sim
* Correct network test
* Correct genesis test
* Start docs
* Add progress for validator generation
* Tidy error messages
* Test corrections
* Log info when block is received
* Modify logs and update attester service events
* Stable futures: fixes to vc, eth1 and account manager (#1142)
* Add local testnet scripts
* Remove whiteblock script
* Rename local testnet script
* Move spawns onto handle
* Fix VC panic
* Initial fix to block production issue
* Tidy block producer fix
* Tidy further
* Add local testnet clean script
* Run cargo fmt
* Tidy duties service
* Tidy fork service
* Tidy ForkService
* Tidy AttestationService
* Tidy notifier
* Ensure await is not suppressed in eth1
* Ensure await is not suppressed in account_manager
* Use .ok() instead of .unwrap_or(())
* RPC decoding test for proto
* Update discv5 and eth2-libp2p deps
* Run cargo fmt
* Pre-build keystores for sim
* Fix lcli double runtime issue (#1144)
* Handle stream termination and dialing peer errors
* Correct peer_info variant types
* Add progress on new deposit flow
* Remove unnecessary warnings
* Handle subnet unsubscription removal and improve logigng
* Add logs around ping
* Upgrade discv5 and improve logging
* Handle peer connection status for multiple connections
* Improve network service logging
* Add more incomplete progress
* Improve logging around peer manager
* Upgrade swarm poll centralise peer management
* Identify clients on error
* Fix `remove_peer` in sync (#1150)
* remove_peer removes from all chains
* Remove logs
* Fix early return from loop
* Improved logging, fix panic
* Partially correct tests
* Add deposit command
* Remove old validator directory
* Start adding AM tests
* Stable futures: Vc sync (#1149)
* Improve syncing heuristic
* Add comments
* Use safer method for tolerance
* Fix tests
* Binary testing progress
* Progress with CLI tests
* Use constants for flags
* More account manager testing
* Improve CLI tests
* Move upgrade-legacy-keypairs into account man
* Use rayon for VC key generation
* Add comments to `validator_dir`
* Add testing to validator_dir
* Add fix to eth1-sim
* Check errors in eth1-sim
* Fix mutability issue
* Ensure password file ends in .pass
* Add more tests to wallet manager
* Tidy deposit
* Tidy account manager
* Tidy account manager
* Remove panic
* Generate keypairs earlier in sim
* Tidy eth1-sime
* Try to fix eth1 sim
* Address review comments
* Fix typo in CLI command
* Update docs
* Disable eth1 sim
* Remove eth1 sim completely
Co-authored-by: Age Manning <Age@AgeManning.com>
Co-authored-by: pawanjay176 <pawandhananjay@gmail.com>
2020-05-18 09:01:45 +00:00
|
|
|
"validator_dir",
|
2021-03-30 05:17:58 +00:00
|
|
|
"web3",
|
2019-12-09 11:39:44 +00:00
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "leveldb"
|
2020-09-21 11:53:53 +00:00
|
|
|
version = "0.8.6"
|
2019-12-09 11:39:44 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2020-09-21 11:53:53 +00:00
|
|
|
checksum = "32651baaaa5596b3a6e0bee625e73fd0334c167db0ea5ac68750ef9a629a2d6a"
|
2019-12-09 11:39:44 +00:00
|
|
|
dependencies = [
|
2020-05-10 09:56:31 +00:00
|
|
|
"db-key",
|
|
|
|
"leveldb-sys",
|
|
|
|
"libc",
|
2019-12-09 11:39:44 +00:00
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "leveldb-sys"
|
2021-08-17 01:00:24 +00:00
|
|
|
version = "2.0.9"
|
2020-09-21 11:53:53 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2021-08-17 01:00:24 +00:00
|
|
|
checksum = "9dd94a4d0242a437e5e41a27c782b69a624469ca1c4d1e5cb3c337f74a8031d4"
|
2019-12-09 11:39:44 +00:00
|
|
|
dependencies = [
|
2020-06-06 06:39:42 +00:00
|
|
|
"cmake",
|
2021-08-17 01:00:24 +00:00
|
|
|
"ffi-opaque",
|
2020-05-10 09:56:31 +00:00
|
|
|
"libc",
|
2020-06-06 06:39:42 +00:00
|
|
|
"num_cpus",
|
2019-12-09 11:39:44 +00:00
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "libc"
|
2022-06-18 23:59:43 +00:00
|
|
|
version = "0.2.126"
|
2019-12-09 11:39:44 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2022-06-18 23:59:43 +00:00
|
|
|
checksum = "349d5a591cd28b49e1d1037471617a32ddcda5731b99419008085f72d5a53836"
|
2019-12-09 11:39:44 +00:00
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "libflate"
|
2022-03-31 07:52:23 +00:00
|
|
|
version = "1.2.0"
|
2019-12-09 11:39:44 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2022-03-31 07:52:23 +00:00
|
|
|
checksum = "05605ab2bce11bcfc0e9c635ff29ef8b2ea83f29be257ee7d730cac3ee373093"
|
2019-12-09 11:39:44 +00:00
|
|
|
dependencies = [
|
2020-05-10 09:56:31 +00:00
|
|
|
"adler32",
|
|
|
|
"crc32fast",
|
2020-05-17 11:16:48 +00:00
|
|
|
"libflate_lz77",
|
2019-12-09 11:39:44 +00:00
|
|
|
]
|
|
|
|
|
2020-05-17 11:16:48 +00:00
|
|
|
[[package]]
|
|
|
|
name = "libflate_lz77"
|
2021-05-04 00:44:05 +00:00
|
|
|
version = "1.1.0"
|
2020-05-17 11:16:48 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2021-05-04 00:44:05 +00:00
|
|
|
checksum = "39a734c0493409afcd49deee13c006a04e3586b9761a03543c6272c9c51f2f5a"
|
|
|
|
dependencies = [
|
|
|
|
"rle-decode-fast",
|
|
|
|
]
|
2020-05-17 11:16:48 +00:00
|
|
|
|
2021-12-21 08:23:17 +00:00
|
|
|
[[package]]
|
|
|
|
name = "libloading"
|
2022-02-01 23:53:53 +00:00
|
|
|
version = "0.7.3"
|
2021-12-21 08:23:17 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2022-02-01 23:53:53 +00:00
|
|
|
checksum = "efbc0f03f9a775e9f6aed295c6a1ba2253c5757a9e03d55c6caa46a681abcddd"
|
2021-12-21 08:23:17 +00:00
|
|
|
dependencies = [
|
|
|
|
"cfg-if",
|
|
|
|
"winapi",
|
|
|
|
]
|
|
|
|
|
2020-05-11 08:43:43 +00:00
|
|
|
[[package]]
|
|
|
|
name = "libm"
|
2022-02-10 04:12:03 +00:00
|
|
|
version = "0.2.2"
|
2020-05-11 08:43:43 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2022-02-10 04:12:03 +00:00
|
|
|
checksum = "33a33a362ce288760ec6a508b94caaec573ae7d3bbbd91b87aa0bad4456839db"
|
2020-05-11 08:43:43 +00:00
|
|
|
|
2021-12-21 08:23:17 +00:00
|
|
|
[[package]]
|
|
|
|
name = "libmdbx"
|
2022-04-04 00:26:16 +00:00
|
|
|
version = "0.1.4"
|
2021-12-21 08:23:17 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2022-04-04 00:26:16 +00:00
|
|
|
checksum = "002d7890ec770d222903165b6ba279b0fa3dba8e82610820833184066b006ce0"
|
2021-12-21 08:23:17 +00:00
|
|
|
dependencies = [
|
|
|
|
"bitflags",
|
|
|
|
"byteorder",
|
|
|
|
"derive_more",
|
|
|
|
"indexmap",
|
|
|
|
"libc",
|
|
|
|
"mdbx-sys",
|
2022-06-18 23:59:43 +00:00
|
|
|
"parking_lot 0.12.1",
|
2021-12-21 08:23:17 +00:00
|
|
|
"thiserror",
|
|
|
|
]
|
|
|
|
|
2019-12-09 11:39:44 +00:00
|
|
|
[[package]]
|
|
|
|
name = "libp2p"
|
2022-06-09 23:48:51 +00:00
|
|
|
version = "0.45.1"
|
2022-03-02 05:09:52 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2022-06-09 23:48:51 +00:00
|
|
|
checksum = "41726ee8f662563fafba2d2d484b14037cc8ecb8c953fbfc8439d4ce3a0a9029"
|
2019-12-09 11:39:44 +00:00
|
|
|
dependencies = [
|
2021-10-29 01:59:29 +00:00
|
|
|
"bytes",
|
2021-07-09 03:20:24 +00:00
|
|
|
"futures",
|
2021-11-18 05:08:42 +00:00
|
|
|
"futures-timer",
|
2022-06-18 23:59:43 +00:00
|
|
|
"getrandom 0.2.7",
|
2021-11-18 05:08:42 +00:00
|
|
|
"instant",
|
2020-05-10 09:56:31 +00:00
|
|
|
"lazy_static",
|
2022-06-07 02:35:55 +00:00
|
|
|
"libp2p-core 0.33.0",
|
2020-05-10 09:56:31 +00:00
|
|
|
"libp2p-dns",
|
|
|
|
"libp2p-gossipsub",
|
|
|
|
"libp2p-identify",
|
2021-10-29 01:59:29 +00:00
|
|
|
"libp2p-metrics",
|
2020-05-10 09:56:31 +00:00
|
|
|
"libp2p-mplex",
|
|
|
|
"libp2p-noise",
|
2021-12-20 23:45:21 +00:00
|
|
|
"libp2p-plaintext",
|
2020-05-10 09:56:31 +00:00
|
|
|
"libp2p-swarm",
|
2021-03-02 05:59:49 +00:00
|
|
|
"libp2p-swarm-derive",
|
2020-06-29 10:25:42 +00:00
|
|
|
"libp2p-tcp",
|
2020-05-10 09:56:31 +00:00
|
|
|
"libp2p-websocket",
|
2020-11-06 04:14:14 +00:00
|
|
|
"libp2p-yamux",
|
2022-02-10 04:12:03 +00:00
|
|
|
"multiaddr 0.14.0",
|
2022-06-18 23:59:43 +00:00
|
|
|
"parking_lot 0.12.1",
|
2022-07-05 23:36:42 +00:00
|
|
|
"pin-project 1.0.11",
|
2021-11-18 05:08:42 +00:00
|
|
|
"rand 0.7.3",
|
2020-12-09 01:34:58 +00:00
|
|
|
"smallvec",
|
2019-12-09 11:39:44 +00:00
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "libp2p-core"
|
2022-02-10 04:12:03 +00:00
|
|
|
version = "0.30.2"
|
2020-10-05 05:16:27 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2022-02-10 04:12:03 +00:00
|
|
|
checksum = "86aad7d54df283db817becded03e611137698a6509d4237a96881976a162340c"
|
2020-06-29 10:25:42 +00:00
|
|
|
dependencies = [
|
2021-06-03 01:11:33 +00:00
|
|
|
"asn1_der",
|
2021-07-05 00:54:17 +00:00
|
|
|
"bs58",
|
|
|
|
"ed25519-dalek",
|
|
|
|
"either",
|
|
|
|
"fnv",
|
2021-07-09 03:20:24 +00:00
|
|
|
"futures",
|
2021-07-05 00:54:17 +00:00
|
|
|
"futures-timer",
|
2022-02-10 04:12:03 +00:00
|
|
|
"instant",
|
2021-07-05 00:54:17 +00:00
|
|
|
"lazy_static",
|
2022-04-04 00:26:16 +00:00
|
|
|
"libsecp256k1",
|
2021-07-05 00:54:17 +00:00
|
|
|
"log",
|
2022-02-10 04:12:03 +00:00
|
|
|
"multiaddr 0.13.0",
|
|
|
|
"multihash 0.14.0",
|
2021-12-22 06:17:14 +00:00
|
|
|
"multistream-select 0.10.4",
|
2022-03-02 05:09:52 +00:00
|
|
|
"parking_lot 0.11.2",
|
2022-07-05 23:36:42 +00:00
|
|
|
"pin-project 1.0.11",
|
2022-06-07 02:35:55 +00:00
|
|
|
"prost 0.9.0",
|
|
|
|
"prost-build 0.9.0",
|
2022-03-02 05:09:52 +00:00
|
|
|
"rand 0.8.5",
|
2020-06-29 10:25:42 +00:00
|
|
|
"ring",
|
2022-06-07 02:35:55 +00:00
|
|
|
"rw-stream-sink 0.2.1",
|
2022-01-11 01:35:56 +00:00
|
|
|
"sha2 0.9.9",
|
2020-12-09 01:34:58 +00:00
|
|
|
"smallvec",
|
2020-06-29 10:25:42 +00:00
|
|
|
"thiserror",
|
2021-11-18 05:08:42 +00:00
|
|
|
"unsigned-varint 0.7.1",
|
2020-06-29 10:25:42 +00:00
|
|
|
"void",
|
|
|
|
"zeroize",
|
|
|
|
]
|
|
|
|
|
2021-07-15 00:53:59 +00:00
|
|
|
[[package]]
|
|
|
|
name = "libp2p-core"
|
2022-06-07 02:35:55 +00:00
|
|
|
version = "0.33.0"
|
2022-03-02 05:09:52 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2022-06-07 02:35:55 +00:00
|
|
|
checksum = "42d46fca305dee6757022e2f5a4f6c023315084d0ed7441c3ab244e76666d979"
|
2021-07-15 00:53:59 +00:00
|
|
|
dependencies = [
|
|
|
|
"asn1_der",
|
|
|
|
"bs58",
|
|
|
|
"ed25519-dalek",
|
|
|
|
"either",
|
|
|
|
"fnv",
|
|
|
|
"futures",
|
|
|
|
"futures-timer",
|
2021-12-22 06:17:14 +00:00
|
|
|
"instant",
|
2021-07-15 00:53:59 +00:00
|
|
|
"lazy_static",
|
2022-04-04 00:26:16 +00:00
|
|
|
"libsecp256k1",
|
2021-07-15 00:53:59 +00:00
|
|
|
"log",
|
2022-02-10 04:12:03 +00:00
|
|
|
"multiaddr 0.14.0",
|
2022-04-04 00:26:16 +00:00
|
|
|
"multihash 0.16.2",
|
2021-12-22 06:17:14 +00:00
|
|
|
"multistream-select 0.11.0",
|
2022-06-18 23:59:43 +00:00
|
|
|
"parking_lot 0.12.1",
|
2022-07-05 23:36:42 +00:00
|
|
|
"pin-project 1.0.11",
|
2022-06-07 02:35:55 +00:00
|
|
|
"prost 0.10.4",
|
|
|
|
"prost-build 0.10.4",
|
2022-03-02 05:09:52 +00:00
|
|
|
"rand 0.8.5",
|
2021-07-15 00:53:59 +00:00
|
|
|
"ring",
|
2022-06-07 02:35:55 +00:00
|
|
|
"rw-stream-sink 0.3.0",
|
2022-03-02 05:09:52 +00:00
|
|
|
"sha2 0.10.2",
|
2021-07-15 00:53:59 +00:00
|
|
|
"smallvec",
|
|
|
|
"thiserror",
|
2021-11-18 05:08:42 +00:00
|
|
|
"unsigned-varint 0.7.1",
|
2021-07-15 00:53:59 +00:00
|
|
|
"void",
|
|
|
|
"zeroize",
|
|
|
|
]
|
|
|
|
|
2019-12-09 11:39:44 +00:00
|
|
|
[[package]]
|
|
|
|
name = "libp2p-dns"
|
2022-06-07 02:35:55 +00:00
|
|
|
version = "0.33.0"
|
2022-03-02 05:09:52 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2022-06-07 02:35:55 +00:00
|
|
|
checksum = "fbb462ec3a51fab457b4b44ac295e8b0a4b04dc175127e615cf996b1f0f1a268"
|
2019-12-09 11:39:44 +00:00
|
|
|
dependencies = [
|
2021-07-09 03:20:24 +00:00
|
|
|
"futures",
|
2022-06-07 02:35:55 +00:00
|
|
|
"libp2p-core 0.33.0",
|
2020-12-09 01:34:58 +00:00
|
|
|
"log",
|
2022-06-18 23:59:43 +00:00
|
|
|
"parking_lot 0.12.1",
|
2021-06-03 01:11:33 +00:00
|
|
|
"smallvec",
|
|
|
|
"trust-dns-resolver",
|
2019-12-09 11:39:44 +00:00
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "libp2p-gossipsub"
|
2022-06-18 23:59:43 +00:00
|
|
|
version = "0.38.1"
|
2022-03-02 05:09:52 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2022-06-18 23:59:43 +00:00
|
|
|
checksum = "43e064ba4d7832e01c738626c6b274ae100baba05f5ffcc7b265c2a3ed398108"
|
2019-12-09 11:39:44 +00:00
|
|
|
dependencies = [
|
2021-02-10 23:29:49 +00:00
|
|
|
"asynchronous-codec",
|
2022-04-04 00:26:16 +00:00
|
|
|
"base64",
|
2020-05-17 11:16:48 +00:00
|
|
|
"byteorder",
|
2021-10-29 01:59:29 +00:00
|
|
|
"bytes",
|
2020-05-10 09:56:31 +00:00
|
|
|
"fnv",
|
2021-07-09 03:20:24 +00:00
|
|
|
"futures",
|
2020-07-29 03:40:22 +00:00
|
|
|
"hex_fmt",
|
2021-11-18 05:08:42 +00:00
|
|
|
"instant",
|
2022-06-07 02:35:55 +00:00
|
|
|
"libp2p-core 0.33.0",
|
2020-05-10 09:56:31 +00:00
|
|
|
"libp2p-swarm",
|
2020-12-09 01:34:58 +00:00
|
|
|
"log",
|
2022-02-10 04:12:03 +00:00
|
|
|
"prometheus-client",
|
2022-06-07 02:35:55 +00:00
|
|
|
"prost 0.10.4",
|
|
|
|
"prost-build 0.10.4",
|
2020-05-10 09:56:31 +00:00
|
|
|
"rand 0.7.3",
|
2020-12-23 07:53:36 +00:00
|
|
|
"regex",
|
2022-03-02 05:09:52 +00:00
|
|
|
"sha2 0.10.2",
|
2020-12-09 01:34:58 +00:00
|
|
|
"smallvec",
|
2021-11-18 05:08:42 +00:00
|
|
|
"unsigned-varint 0.7.1",
|
2022-03-02 05:09:52 +00:00
|
|
|
"wasm-timer",
|
2019-12-09 11:39:44 +00:00
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
2020-05-17 11:16:48 +00:00
|
|
|
name = "libp2p-identify"
|
2022-06-09 23:48:51 +00:00
|
|
|
version = "0.36.1"
|
2022-03-02 05:09:52 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2022-06-09 23:48:51 +00:00
|
|
|
checksum = "b84b53490442d086db1fa5375670c9666e79143dccadef3f7c74a4346899a984"
|
2021-07-15 00:53:59 +00:00
|
|
|
dependencies = [
|
2022-06-07 02:35:55 +00:00
|
|
|
"asynchronous-codec",
|
2021-07-15 00:53:59 +00:00
|
|
|
"futures",
|
2021-11-18 05:08:42 +00:00
|
|
|
"futures-timer",
|
2022-06-07 02:35:55 +00:00
|
|
|
"libp2p-core 0.33.0",
|
2021-07-15 00:53:59 +00:00
|
|
|
"libp2p-swarm",
|
|
|
|
"log",
|
2021-10-29 01:59:29 +00:00
|
|
|
"lru",
|
2022-06-07 02:35:55 +00:00
|
|
|
"prost 0.10.4",
|
|
|
|
"prost-build 0.10.4",
|
|
|
|
"prost-codec",
|
2021-10-29 01:59:29 +00:00
|
|
|
"smallvec",
|
2022-06-07 02:35:55 +00:00
|
|
|
"thiserror",
|
2022-06-09 23:48:51 +00:00
|
|
|
"void",
|
2021-07-15 00:53:59 +00:00
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
2021-10-29 01:59:29 +00:00
|
|
|
name = "libp2p-metrics"
|
2022-07-05 23:36:42 +00:00
|
|
|
version = "0.6.1"
|
2022-03-02 05:09:52 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2022-07-05 23:36:42 +00:00
|
|
|
checksum = "564a7e5284d7d9b3140fdfc3cb6567bc32555e86a21de5604c2ec85da05cf384"
|
2021-07-15 00:53:59 +00:00
|
|
|
dependencies = [
|
2022-06-07 02:35:55 +00:00
|
|
|
"libp2p-core 0.33.0",
|
2021-11-18 05:08:42 +00:00
|
|
|
"libp2p-gossipsub",
|
2021-10-29 01:59:29 +00:00
|
|
|
"libp2p-identify",
|
|
|
|
"libp2p-swarm",
|
2022-02-10 04:12:03 +00:00
|
|
|
"prometheus-client",
|
2021-07-15 00:53:59 +00:00
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
2021-10-29 01:59:29 +00:00
|
|
|
name = "libp2p-mplex"
|
2022-06-07 02:35:55 +00:00
|
|
|
version = "0.33.0"
|
2022-03-02 05:09:52 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2022-06-07 02:35:55 +00:00
|
|
|
checksum = "5ff9c893f2367631a711301d703c47432af898c9bb8253bea0e2c051a13f7640"
|
2021-07-15 00:53:59 +00:00
|
|
|
dependencies = [
|
|
|
|
"asynchronous-codec",
|
2021-10-29 01:59:29 +00:00
|
|
|
"bytes",
|
2021-07-15 00:53:59 +00:00
|
|
|
"futures",
|
2022-06-07 02:35:55 +00:00
|
|
|
"libp2p-core 0.33.0",
|
2021-07-15 00:53:59 +00:00
|
|
|
"log",
|
2021-10-29 01:59:29 +00:00
|
|
|
"nohash-hasher",
|
2022-06-18 23:59:43 +00:00
|
|
|
"parking_lot 0.12.1",
|
2021-07-15 00:53:59 +00:00
|
|
|
"rand 0.7.3",
|
|
|
|
"smallvec",
|
2021-11-18 05:08:42 +00:00
|
|
|
"unsigned-varint 0.7.1",
|
2021-07-15 00:53:59 +00:00
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
2021-10-29 01:59:29 +00:00
|
|
|
name = "libp2p-noise"
|
2022-06-07 02:35:55 +00:00
|
|
|
version = "0.36.0"
|
2022-03-02 05:09:52 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2022-06-07 02:35:55 +00:00
|
|
|
checksum = "cf2cee1dad1c83325bbd182a8e94555778699cec8a9da00086efb7522c4c15ad"
|
2021-07-15 00:53:59 +00:00
|
|
|
dependencies = [
|
2021-10-29 01:59:29 +00:00
|
|
|
"bytes",
|
2022-02-10 04:12:03 +00:00
|
|
|
"curve25519-dalek 3.2.0",
|
2021-07-15 00:53:59 +00:00
|
|
|
"futures",
|
2021-10-29 01:59:29 +00:00
|
|
|
"lazy_static",
|
2022-06-07 02:35:55 +00:00
|
|
|
"libp2p-core 0.33.0",
|
2021-07-15 00:53:59 +00:00
|
|
|
"log",
|
2022-06-07 02:35:55 +00:00
|
|
|
"prost 0.10.4",
|
|
|
|
"prost-build 0.10.4",
|
2022-03-02 05:09:52 +00:00
|
|
|
"rand 0.8.5",
|
|
|
|
"sha2 0.10.2",
|
2021-10-29 01:59:29 +00:00
|
|
|
"snow",
|
|
|
|
"static_assertions",
|
|
|
|
"x25519-dalek",
|
|
|
|
"zeroize",
|
2021-07-15 00:53:59 +00:00
|
|
|
]
|
|
|
|
|
2021-12-20 23:45:21 +00:00
|
|
|
[[package]]
|
|
|
|
name = "libp2p-plaintext"
|
2022-06-07 02:35:55 +00:00
|
|
|
version = "0.33.0"
|
2022-03-02 05:09:52 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2022-06-07 02:35:55 +00:00
|
|
|
checksum = "db007e737adc5d28b2e03223b0210164928ad742591127130796a72aa8eaf54f"
|
2021-12-20 23:45:21 +00:00
|
|
|
dependencies = [
|
|
|
|
"asynchronous-codec",
|
|
|
|
"bytes",
|
|
|
|
"futures",
|
2022-06-07 02:35:55 +00:00
|
|
|
"libp2p-core 0.33.0",
|
2021-12-20 23:45:21 +00:00
|
|
|
"log",
|
2022-06-07 02:35:55 +00:00
|
|
|
"prost 0.10.4",
|
|
|
|
"prost-build 0.10.4",
|
2021-12-20 23:45:21 +00:00
|
|
|
"unsigned-varint 0.7.1",
|
|
|
|
"void",
|
|
|
|
]
|
|
|
|
|
2019-12-09 11:39:44 +00:00
|
|
|
[[package]]
|
|
|
|
name = "libp2p-swarm"
|
2022-06-09 23:48:51 +00:00
|
|
|
version = "0.36.1"
|
2022-03-02 05:09:52 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2022-06-09 23:48:51 +00:00
|
|
|
checksum = "8f4bb21c5abadbf00360c734f16bf87f1712ed4f23cd46148f625d2ddb867346"
|
2019-12-09 11:39:44 +00:00
|
|
|
dependencies = [
|
2020-08-30 13:06:50 +00:00
|
|
|
"either",
|
2022-03-02 05:09:52 +00:00
|
|
|
"fnv",
|
2021-07-09 03:20:24 +00:00
|
|
|
"futures",
|
2021-11-18 05:08:42 +00:00
|
|
|
"futures-timer",
|
|
|
|
"instant",
|
2022-06-07 02:35:55 +00:00
|
|
|
"libp2p-core 0.33.0",
|
2020-12-09 01:34:58 +00:00
|
|
|
"log",
|
2022-07-05 23:36:42 +00:00
|
|
|
"pin-project 1.0.11",
|
2020-05-17 11:16:48 +00:00
|
|
|
"rand 0.7.3",
|
2020-12-09 01:34:58 +00:00
|
|
|
"smallvec",
|
2022-03-02 05:09:52 +00:00
|
|
|
"thiserror",
|
2020-05-10 09:56:31 +00:00
|
|
|
"void",
|
2019-12-09 11:39:44 +00:00
|
|
|
]
|
|
|
|
|
2021-03-02 05:59:49 +00:00
|
|
|
[[package]]
|
|
|
|
name = "libp2p-swarm-derive"
|
2022-06-18 23:59:43 +00:00
|
|
|
version = "0.27.2"
|
2022-03-02 05:09:52 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2022-06-18 23:59:43 +00:00
|
|
|
checksum = "4f693c8c68213034d472cbb93a379c63f4f307d97c06f1c41e4985de481687a5"
|
2021-03-02 05:59:49 +00:00
|
|
|
dependencies = [
|
|
|
|
"quote",
|
|
|
|
"syn",
|
|
|
|
]
|
|
|
|
|
2019-12-09 11:39:44 +00:00
|
|
|
[[package]]
|
|
|
|
name = "libp2p-tcp"
|
2022-06-07 02:35:55 +00:00
|
|
|
version = "0.33.0"
|
2022-03-02 05:09:52 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2022-06-07 02:35:55 +00:00
|
|
|
checksum = "4f4933e38ef21b50698aefc87799c24f2a365c9d3f6cf50471f3f6a0bc410892"
|
2019-12-09 11:39:44 +00:00
|
|
|
dependencies = [
|
2021-07-09 03:20:24 +00:00
|
|
|
"futures",
|
2020-05-17 11:16:48 +00:00
|
|
|
"futures-timer",
|
2021-12-22 06:17:14 +00:00
|
|
|
"if-addrs 0.7.0",
|
2020-05-10 09:56:31 +00:00
|
|
|
"ipnet",
|
2021-02-10 23:29:49 +00:00
|
|
|
"libc",
|
2022-06-07 02:35:55 +00:00
|
|
|
"libp2p-core 0.33.0",
|
2020-12-09 01:34:58 +00:00
|
|
|
"log",
|
2022-06-07 02:35:55 +00:00
|
|
|
"socket2",
|
2021-08-17 01:00:24 +00:00
|
|
|
"tokio",
|
2019-12-09 11:39:44 +00:00
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "libp2p-websocket"
|
2022-06-07 02:35:55 +00:00
|
|
|
version = "0.35.0"
|
2022-03-02 05:09:52 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2022-06-07 02:35:55 +00:00
|
|
|
checksum = "39d398fbb29f432c4128fabdaac2ed155c3bcaf1b9bd40eeeb10a471eefacbf5"
|
2019-12-09 11:39:44 +00:00
|
|
|
dependencies = [
|
2020-05-17 11:16:48 +00:00
|
|
|
"either",
|
2021-07-09 03:20:24 +00:00
|
|
|
"futures",
|
2021-02-10 23:29:49 +00:00
|
|
|
"futures-rustls",
|
2022-06-07 02:35:55 +00:00
|
|
|
"libp2p-core 0.33.0",
|
2020-12-09 01:34:58 +00:00
|
|
|
"log",
|
2022-06-18 23:59:43 +00:00
|
|
|
"parking_lot 0.12.1",
|
2020-05-17 11:16:48 +00:00
|
|
|
"quicksink",
|
2022-06-07 02:35:55 +00:00
|
|
|
"rw-stream-sink 0.3.0",
|
2022-04-04 00:26:16 +00:00
|
|
|
"soketto",
|
2020-12-09 01:34:58 +00:00
|
|
|
"url",
|
2020-10-05 05:16:27 +00:00
|
|
|
"webpki-roots",
|
2019-12-09 11:39:44 +00:00
|
|
|
]
|
|
|
|
|
2020-11-06 04:14:14 +00:00
|
|
|
[[package]]
|
|
|
|
name = "libp2p-yamux"
|
2022-06-07 02:35:55 +00:00
|
|
|
version = "0.37.0"
|
2022-03-02 05:09:52 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2022-06-07 02:35:55 +00:00
|
|
|
checksum = "8fe653639ad74877c759720febb0cbcbf4caa221adde4eed2d3126ce5c6f381f"
|
2020-11-06 04:14:14 +00:00
|
|
|
dependencies = [
|
2021-07-09 03:20:24 +00:00
|
|
|
"futures",
|
2022-06-07 02:35:55 +00:00
|
|
|
"libp2p-core 0.33.0",
|
2022-06-18 23:59:43 +00:00
|
|
|
"parking_lot 0.12.1",
|
2020-11-06 04:14:14 +00:00
|
|
|
"thiserror",
|
|
|
|
"yamux",
|
|
|
|
]
|
|
|
|
|
2021-10-29 01:59:29 +00:00
|
|
|
[[package]]
|
|
|
|
name = "libsecp256k1"
|
|
|
|
version = "0.7.0"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "b0452aac8bab02242429380e9b2f94ea20cea2b37e2c1777a1358799bbe97f37"
|
|
|
|
dependencies = [
|
|
|
|
"arrayref",
|
2022-04-04 00:26:16 +00:00
|
|
|
"base64",
|
2021-12-22 06:17:14 +00:00
|
|
|
"digest 0.9.0",
|
2021-10-29 01:59:29 +00:00
|
|
|
"hmac-drbg",
|
2022-04-04 00:26:16 +00:00
|
|
|
"libsecp256k1-core",
|
|
|
|
"libsecp256k1-gen-ecmult",
|
|
|
|
"libsecp256k1-gen-genmult",
|
2022-03-02 05:09:52 +00:00
|
|
|
"rand 0.8.5",
|
2021-10-29 01:59:29 +00:00
|
|
|
"serde",
|
2022-01-11 01:35:56 +00:00
|
|
|
"sha2 0.9.9",
|
2021-10-29 01:59:29 +00:00
|
|
|
"typenum",
|
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "libsecp256k1-core"
|
|
|
|
version = "0.3.0"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "5be9b9bb642d8522a44d533eab56c16c738301965504753b03ad1de3425d5451"
|
|
|
|
dependencies = [
|
|
|
|
"crunchy",
|
2021-12-22 06:17:14 +00:00
|
|
|
"digest 0.9.0",
|
2021-10-29 01:59:29 +00:00
|
|
|
"subtle",
|
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "libsecp256k1-gen-ecmult"
|
|
|
|
version = "0.3.0"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "3038c808c55c87e8a172643a7d87187fc6c4174468159cb3090659d55bcb4809"
|
|
|
|
dependencies = [
|
2022-04-04 00:26:16 +00:00
|
|
|
"libsecp256k1-core",
|
2021-10-29 01:59:29 +00:00
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "libsecp256k1-gen-genmult"
|
|
|
|
version = "0.3.0"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "3db8d6ba2cec9eacc40e6e8ccc98931840301f1006e95647ceb2dd5c3aa06f7c"
|
|
|
|
dependencies = [
|
2022-04-04 00:26:16 +00:00
|
|
|
"libsecp256k1-core",
|
2021-07-14 05:24:10 +00:00
|
|
|
]
|
|
|
|
|
2020-05-18 06:25:16 +00:00
|
|
|
[[package]]
|
|
|
|
name = "libsqlite3-sys"
|
2021-08-17 01:00:24 +00:00
|
|
|
version = "0.22.2"
|
2020-05-18 06:25:16 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2021-08-17 01:00:24 +00:00
|
|
|
checksum = "290b64917f8b0cb885d9de0f9959fe1f775d7fa12f1da2db9001c1c8ab60f89d"
|
2020-05-18 06:25:16 +00:00
|
|
|
dependencies = [
|
|
|
|
"cc",
|
|
|
|
"pkg-config",
|
|
|
|
"vcpkg",
|
|
|
|
]
|
|
|
|
|
2019-12-09 11:39:44 +00:00
|
|
|
[[package]]
|
|
|
|
name = "libz-sys"
|
2022-06-18 23:59:43 +00:00
|
|
|
version = "1.1.8"
|
2019-12-09 11:39:44 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2022-06-18 23:59:43 +00:00
|
|
|
checksum = "9702761c3935f8cc2f101793272e202c72b99da8f4224a19ddcf1279a6450bbf"
|
2019-12-09 11:39:44 +00:00
|
|
|
dependencies = [
|
2020-05-10 09:56:31 +00:00
|
|
|
"cc",
|
|
|
|
"pkg-config",
|
|
|
|
"vcpkg",
|
2019-12-09 11:39:44 +00:00
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "lighthouse"
|
2022-07-21 22:02:36 +00:00
|
|
|
version = "2.4.0"
|
2019-12-09 11:39:44 +00:00
|
|
|
dependencies = [
|
2020-05-10 09:56:31 +00:00
|
|
|
"account_manager",
|
2020-07-29 04:32:50 +00:00
|
|
|
"account_utils",
|
2020-05-10 09:56:31 +00:00
|
|
|
"beacon_node",
|
2020-07-31 05:00:39 +00:00
|
|
|
"bls",
|
2020-06-19 06:30:07 +00:00
|
|
|
"boot_node",
|
2020-05-10 09:56:31 +00:00
|
|
|
"clap",
|
|
|
|
"clap_utils",
|
2022-04-01 00:58:59 +00:00
|
|
|
"database_manager",
|
2021-11-30 03:25:32 +00:00
|
|
|
"directory",
|
2021-08-17 01:00:24 +00:00
|
|
|
"env_logger 0.9.0",
|
2020-05-10 09:56:31 +00:00
|
|
|
"environment",
|
2022-06-29 09:07:09 +00:00
|
|
|
"eth1",
|
2022-04-04 00:26:16 +00:00
|
|
|
"eth2_hashing",
|
2020-12-08 05:41:10 +00:00
|
|
|
"eth2_network_config",
|
2021-07-09 03:20:24 +00:00
|
|
|
"futures",
|
2021-03-02 22:35:47 +00:00
|
|
|
"lazy_static",
|
|
|
|
"lighthouse_metrics",
|
Rename eth2_libp2p to lighthouse_network (#2702)
## Description
The `eth2_libp2p` crate was originally named and designed to incorporate a simple libp2p integration into lighthouse. Since its origins the crates purpose has expanded dramatically. It now houses a lot more sophistication that is specific to lighthouse and no longer just a libp2p integration.
As of this writing it currently houses the following high-level lighthouse-specific logic:
- Lighthouse's implementation of the eth2 RPC protocol and specific encodings/decodings
- Integration and handling of ENRs with respect to libp2p and eth2
- Lighthouse's discovery logic, its integration with discv5 and logic about searching and handling peers.
- Lighthouse's peer manager - This is a large module handling various aspects of Lighthouse's network, such as peer scoring, handling pings and metadata, connection maintenance and recording, etc.
- Lighthouse's peer database - This is a collection of information stored for each individual peer which is specific to lighthouse. We store connection state, sync state, last seen ips and scores etc. The data stored for each peer is designed for various elements of the lighthouse code base such as syncing and the http api.
- Gossipsub scoring - This stores a collection of gossipsub 1.1 scoring mechanisms that are continuously analyssed and updated based on the ethereum 2 networks and how Lighthouse performs on these networks.
- Lighthouse specific types for managing gossipsub topics, sync status and ENR fields
- Lighthouse's network HTTP API metrics - A collection of metrics for lighthouse network monitoring
- Lighthouse's custom configuration of all networking protocols, RPC, gossipsub, discovery, identify and libp2p.
Therefore it makes sense to rename the crate to be more akin to its current purposes, simply that it manages the majority of Lighthouse's network stack. This PR renames this crate to `lighthouse_network`
Co-authored-by: Paul Hauner <paul@paulhauner.com>
2021-10-19 00:30:39 +00:00
|
|
|
"lighthouse_network",
|
2020-08-04 07:44:53 +00:00
|
|
|
"lighthouse_version",
|
2021-05-28 05:59:45 +00:00
|
|
|
"malloc_utils",
|
2022-03-01 22:56:47 +00:00
|
|
|
"sensitive_url",
|
2021-11-08 01:37:58 +00:00
|
|
|
"serde",
|
2021-05-06 00:36:22 +00:00
|
|
|
"serde_json",
|
2022-03-01 22:56:47 +00:00
|
|
|
"serde_yaml",
|
2020-10-02 01:42:27 +00:00
|
|
|
"slashing_protection",
|
2020-05-10 09:56:31 +00:00
|
|
|
"slog",
|
2021-09-14 06:48:26 +00:00
|
|
|
"sloggers",
|
2021-05-06 00:36:22 +00:00
|
|
|
"task_executor",
|
Wallet-based, encrypted key management (#1138)
* Update hashmap hashset to stable futures
* Adds panic test to hashset delay
* Port remote_beacon_node to stable futures
* Fix lcli merge conflicts
* Non rpc stuff compiles
* Remove padding
* Add error enum, zeroize more things
* Fix comment
* protocol.rs compiles
* Port websockets, timer and notifier to stable futures (#1035)
* Fix lcli
* Port timer to stable futures
* Fix timer
* Port websocket_server to stable futures
* Port notifier to stable futures
* Add TODOS
* Port remote_beacon_node to stable futures
* Partial eth2-libp2p stable future upgrade
* Finished first round of fighting RPC types
* Further progress towards porting eth2-libp2p adds caching to discovery
* Update behaviour
* Add keystore builder
* Remove keystore stuff from val client
* Add more tests, comments
* RPC handler to stable futures
* Update RPC to master libp2p
* Add more comments, test vectors
* Network service additions
* Progress on improving JSON validation
* More JSON verification
* Start moving JSON into own mod
* Remove old code
* Add more tests, reader/writers
* Tidy
* Move keystore into own file
* Move more logic into keystore file
* Tidy
* Tidy
* Fix the fallback transport construction (#1102)
* Allow for odd-character hex
* Correct warning
* Remove hashmap delay
* Compiling version of eth2-libp2p
* Update all crates versions
* Fix conversion function and add tests (#1113)
* Add more json missing field checks
* Use scrypt by default
* Tidy, address comments
* Test path and uuid in vectors
* Fix comment
* Add checks for kdf params
* Enforce empty kdf message
* Port validator_client to stable futures (#1114)
* Add PH & MS slot clock changes
* Account for genesis time
* Add progress on duties refactor
* Add simple is_aggregator bool to val subscription
* Start work on attestation_verification.rs
* Add progress on ObservedAttestations
* Progress with ObservedAttestations
* Fix tests
* Add observed attestations to the beacon chain
* Add attestation observation to processing code
* Add progress on attestation verification
* Add first draft of ObservedAttesters
* Add more tests
* Add observed attesters to beacon chain
* Add observers to attestation processing
* Add more attestation verification
* Create ObservedAggregators map
* Remove commented-out code
* Add observed aggregators into chain
* Add progress
* Finish adding features to attestation verification
* Ensure beacon chain compiles
* Link attn verification into chain
* Integrate new attn verification in chain
* Remove old attestation processing code
* Start trying to fix beacon_chain tests
* Split adding into pools into two functions
* Add aggregation to harness
* Get test harness working again
* Adjust the number of aggregators for test harness
* Fix edge-case in harness
* Integrate new attn processing in network
* Fix compile bug in validator_client
* Update validator API endpoints
* Fix aggreagation in test harness
* Fix enum thing
* Fix attestation observation bug:
* Patch failing API tests
* Start adding comments to attestation verification
* Remove unused attestation field
* Unify "is block known" logic
* Update comments
* Supress fork choice errors for network processing
* Add todos
* Tidy
* Add gossip attn tests
* Disallow test harness to produce old attns
* Comment out in-progress tests
* Partially address pruning tests
* Fix failing store test
* Add aggregate tests
* Add comments about which spec conditions we check
* Dont re-aggregate
* Split apart test harness attn production
* Fix compile error in network
* Make progress on commented-out test
* Fix skipping attestation test
* Add fork choice verification tests
* Tidy attn tests, remove dead code
* Remove some accidentally added code
* Fix clippy lint
* Rename test file
* Add block tests, add cheap block proposer check
* Rename block testing file
* Add observed_block_producers
* Tidy
* Switch around block signature verification
* Finish block testing
* Remove gossip from signature tests
* First pass of self review
* Fix deviation in spec
* Update test spec tags
* Start moving over to hashset
* Finish moving observed attesters to hashmap
* Move aggregation pool over to hashmap
* Make fc attn borrow again
* Fix rest_api compile error
* Fix missing comments
* Fix monster test
* Uncomment increasing slots test
* Address remaining comments
* Remove unsafe, use cfg test
* Remove cfg test flag
* Fix dodgy comment
* Revert "Update hashmap hashset to stable futures"
This reverts commit d432378a3cc5cd67fc29c0b15b96b886c1323554.
* Revert "Adds panic test to hashset delay"
This reverts commit 281502396fc5b90d9c421a309c2c056982c9525b.
* Ported attestation_service
* Ported duties_service
* Ported fork_service
* More ports
* Port block_service
* Minor fixes
* VC compiles
* Update TODOS
* Borrow self where possible
* Ignore aggregates that are already known.
* Unify aggregator modulo logic
* Fix typo in logs
* Refactor validator subscription logic
* Avoid reproducing selection proof
* Skip HTTP call if no subscriptions
* Rename DutyAndState -> DutyAndProof
* Tidy logs
* Print root as dbg
* Fix compile errors in tests
* Fix compile error in test
* Re-Fix attestation and duties service
* Minor fixes
Co-authored-by: Paul Hauner <paul@paulhauner.com>
* Expose json_keystore mod
* First commits on path derivation
* Progress with implementation
* More progress
* Passing intermediate test vectors
* Tidy, add comments
* Add DerivedKey structs
* Move key derivation into own crate
* Add zeroize structs
* Return error for empty seed
* Add tests
* Tidy
* First commits on path derivation
* Progress with implementation
* Move key derivation into own crate
* Start defining JSON wallet
* Add progress
* Split out encrypt/decrypt
* First commits on path derivation
* Progress with implementation
* More progress
* Passing intermediate test vectors
* Tidy, add comments
* Add DerivedKey structs
* Move key derivation into own crate
* Add zeroize structs
* Return error for empty seed
* Add tests
* Tidy
* Add progress
* Replace some password usage with slice
* First commits on path derivation
* Progress with implementation
* More progress
* Passing intermediate test vectors
* Tidy, add comments
* Add DerivedKey structs
* Move key derivation into own crate
* Add zeroize structs
* Return error for empty seed
* Add tests
* Tidy
* Add progress
* Expose PlainText struct
* First commits on path derivation
* Progress with implementation
* More progress
* Passing intermediate test vectors
* Tidy, add comments
* Add DerivedKey structs
* Move key derivation into own crate
* Add zeroize structs
* Return error for empty seed
* Add tests
* Tidy
* Add builder
* Expose consts, remove Password
* Minor progress
* Expose SALT_SIZE
* First compiling version
* Add test vectors
* Network crate update to stable futures
* Move dbg assert statement
* Port account_manager to stable futures (#1121)
* Port account_manager to stable futures
* Run async fns in tokio environment
* Port rest_api crate to stable futures (#1118)
* Port rest_api lib to stable futures
* Reduce tokio features
* Update notifier to stable futures
* Builder update
* Further updates
* Add mnemonic, tidy
* Convert self referential async functions
* Tidy
* Add testing
* Add first attempt at validator_dir
* Present pubkey field
* stable futures fixes (#1124)
* Fix eth1 update functions
* Fix genesis and client
* Fix beacon node lib
* Return appropriate runtimes from environment
* Fix test rig
* Refactor eth1 service update
* Upgrade simulator to stable futures
* Lighthouse compiles on stable futures
* Add first pass of wallet manager
* Progress with CLI
* Remove println debugging statement
* Tidy output
* Tidy 600 perms
* Update libp2p service, start rpc test upgrade
* Add validator creation flow
* Update network crate for new libp2p
* Start tidying, adding comments
* Update tokio::codec to futures_codec (#1128)
* Further work towards RPC corrections
* Correct http timeout and network service select
* Add wallet mgr testing
* Shift LockedWallet into own file
* Add comments to fs
* Start integration into VC
* Use tokio runtime for libp2p
* Revert "Update tokio::codec to futures_codec (#1128)"
This reverts commit e57aea924acf5cbabdcea18895ac07e38a425ed7.
* Upgrade RPC libp2p tests
* Upgrade secio fallback test
* Add lcli keypair upgrade command
* Upgrade gossipsub examples
* Clean up RPC protocol
* Test fixes (#1133)
* Correct websocket timeout and run on os thread
* Fix network test
* Add --secrets-dir to VC
* Remove --legacy-keys from VC
* Clean up PR
* Correct tokio tcp move attestation service tests
* Upgrade attestation service tests
* Fix sim
* Correct network test
* Correct genesis test
* Start docs
* Add progress for validator generation
* Tidy error messages
* Test corrections
* Log info when block is received
* Modify logs and update attester service events
* Stable futures: fixes to vc, eth1 and account manager (#1142)
* Add local testnet scripts
* Remove whiteblock script
* Rename local testnet script
* Move spawns onto handle
* Fix VC panic
* Initial fix to block production issue
* Tidy block producer fix
* Tidy further
* Add local testnet clean script
* Run cargo fmt
* Tidy duties service
* Tidy fork service
* Tidy ForkService
* Tidy AttestationService
* Tidy notifier
* Ensure await is not suppressed in eth1
* Ensure await is not suppressed in account_manager
* Use .ok() instead of .unwrap_or(())
* RPC decoding test for proto
* Update discv5 and eth2-libp2p deps
* Run cargo fmt
* Pre-build keystores for sim
* Fix lcli double runtime issue (#1144)
* Handle stream termination and dialing peer errors
* Correct peer_info variant types
* Add progress on new deposit flow
* Remove unnecessary warnings
* Handle subnet unsubscription removal and improve logigng
* Add logs around ping
* Upgrade discv5 and improve logging
* Handle peer connection status for multiple connections
* Improve network service logging
* Add more incomplete progress
* Improve logging around peer manager
* Upgrade swarm poll centralise peer management
* Identify clients on error
* Fix `remove_peer` in sync (#1150)
* remove_peer removes from all chains
* Remove logs
* Fix early return from loop
* Improved logging, fix panic
* Partially correct tests
* Add deposit command
* Remove old validator directory
* Start adding AM tests
* Stable futures: Vc sync (#1149)
* Improve syncing heuristic
* Add comments
* Use safer method for tolerance
* Fix tests
* Binary testing progress
* Progress with CLI tests
* Use constants for flags
* More account manager testing
* Improve CLI tests
* Move upgrade-legacy-keypairs into account man
* Use rayon for VC key generation
* Add comments to `validator_dir`
* Add testing to validator_dir
* Add fix to eth1-sim
* Check errors in eth1-sim
* Fix mutability issue
* Ensure password file ends in .pass
* Add more tests to wallet manager
* Tidy deposit
* Tidy account manager
* Tidy account manager
* Remove panic
* Generate keypairs earlier in sim
* Tidy eth1-sime
* Try to fix eth1 sim
* Address review comments
* Fix typo in CLI command
* Update docs
* Disable eth1 sim
* Remove eth1 sim completely
Co-authored-by: Age Manning <Age@AgeManning.com>
Co-authored-by: pawanjay176 <pawandhananjay@gmail.com>
2020-05-18 09:01:45 +00:00
|
|
|
"tempfile",
|
2020-05-10 09:56:31 +00:00
|
|
|
"types",
|
2022-02-17 21:47:06 +00:00
|
|
|
"unused_port",
|
2020-05-10 09:56:31 +00:00
|
|
|
"validator_client",
|
Wallet-based, encrypted key management (#1138)
* Update hashmap hashset to stable futures
* Adds panic test to hashset delay
* Port remote_beacon_node to stable futures
* Fix lcli merge conflicts
* Non rpc stuff compiles
* Remove padding
* Add error enum, zeroize more things
* Fix comment
* protocol.rs compiles
* Port websockets, timer and notifier to stable futures (#1035)
* Fix lcli
* Port timer to stable futures
* Fix timer
* Port websocket_server to stable futures
* Port notifier to stable futures
* Add TODOS
* Port remote_beacon_node to stable futures
* Partial eth2-libp2p stable future upgrade
* Finished first round of fighting RPC types
* Further progress towards porting eth2-libp2p adds caching to discovery
* Update behaviour
* Add keystore builder
* Remove keystore stuff from val client
* Add more tests, comments
* RPC handler to stable futures
* Update RPC to master libp2p
* Add more comments, test vectors
* Network service additions
* Progress on improving JSON validation
* More JSON verification
* Start moving JSON into own mod
* Remove old code
* Add more tests, reader/writers
* Tidy
* Move keystore into own file
* Move more logic into keystore file
* Tidy
* Tidy
* Fix the fallback transport construction (#1102)
* Allow for odd-character hex
* Correct warning
* Remove hashmap delay
* Compiling version of eth2-libp2p
* Update all crates versions
* Fix conversion function and add tests (#1113)
* Add more json missing field checks
* Use scrypt by default
* Tidy, address comments
* Test path and uuid in vectors
* Fix comment
* Add checks for kdf params
* Enforce empty kdf message
* Port validator_client to stable futures (#1114)
* Add PH & MS slot clock changes
* Account for genesis time
* Add progress on duties refactor
* Add simple is_aggregator bool to val subscription
* Start work on attestation_verification.rs
* Add progress on ObservedAttestations
* Progress with ObservedAttestations
* Fix tests
* Add observed attestations to the beacon chain
* Add attestation observation to processing code
* Add progress on attestation verification
* Add first draft of ObservedAttesters
* Add more tests
* Add observed attesters to beacon chain
* Add observers to attestation processing
* Add more attestation verification
* Create ObservedAggregators map
* Remove commented-out code
* Add observed aggregators into chain
* Add progress
* Finish adding features to attestation verification
* Ensure beacon chain compiles
* Link attn verification into chain
* Integrate new attn verification in chain
* Remove old attestation processing code
* Start trying to fix beacon_chain tests
* Split adding into pools into two functions
* Add aggregation to harness
* Get test harness working again
* Adjust the number of aggregators for test harness
* Fix edge-case in harness
* Integrate new attn processing in network
* Fix compile bug in validator_client
* Update validator API endpoints
* Fix aggreagation in test harness
* Fix enum thing
* Fix attestation observation bug:
* Patch failing API tests
* Start adding comments to attestation verification
* Remove unused attestation field
* Unify "is block known" logic
* Update comments
* Supress fork choice errors for network processing
* Add todos
* Tidy
* Add gossip attn tests
* Disallow test harness to produce old attns
* Comment out in-progress tests
* Partially address pruning tests
* Fix failing store test
* Add aggregate tests
* Add comments about which spec conditions we check
* Dont re-aggregate
* Split apart test harness attn production
* Fix compile error in network
* Make progress on commented-out test
* Fix skipping attestation test
* Add fork choice verification tests
* Tidy attn tests, remove dead code
* Remove some accidentally added code
* Fix clippy lint
* Rename test file
* Add block tests, add cheap block proposer check
* Rename block testing file
* Add observed_block_producers
* Tidy
* Switch around block signature verification
* Finish block testing
* Remove gossip from signature tests
* First pass of self review
* Fix deviation in spec
* Update test spec tags
* Start moving over to hashset
* Finish moving observed attesters to hashmap
* Move aggregation pool over to hashmap
* Make fc attn borrow again
* Fix rest_api compile error
* Fix missing comments
* Fix monster test
* Uncomment increasing slots test
* Address remaining comments
* Remove unsafe, use cfg test
* Remove cfg test flag
* Fix dodgy comment
* Revert "Update hashmap hashset to stable futures"
This reverts commit d432378a3cc5cd67fc29c0b15b96b886c1323554.
* Revert "Adds panic test to hashset delay"
This reverts commit 281502396fc5b90d9c421a309c2c056982c9525b.
* Ported attestation_service
* Ported duties_service
* Ported fork_service
* More ports
* Port block_service
* Minor fixes
* VC compiles
* Update TODOS
* Borrow self where possible
* Ignore aggregates that are already known.
* Unify aggregator modulo logic
* Fix typo in logs
* Refactor validator subscription logic
* Avoid reproducing selection proof
* Skip HTTP call if no subscriptions
* Rename DutyAndState -> DutyAndProof
* Tidy logs
* Print root as dbg
* Fix compile errors in tests
* Fix compile error in test
* Re-Fix attestation and duties service
* Minor fixes
Co-authored-by: Paul Hauner <paul@paulhauner.com>
* Expose json_keystore mod
* First commits on path derivation
* Progress with implementation
* More progress
* Passing intermediate test vectors
* Tidy, add comments
* Add DerivedKey structs
* Move key derivation into own crate
* Add zeroize structs
* Return error for empty seed
* Add tests
* Tidy
* First commits on path derivation
* Progress with implementation
* Move key derivation into own crate
* Start defining JSON wallet
* Add progress
* Split out encrypt/decrypt
* First commits on path derivation
* Progress with implementation
* More progress
* Passing intermediate test vectors
* Tidy, add comments
* Add DerivedKey structs
* Move key derivation into own crate
* Add zeroize structs
* Return error for empty seed
* Add tests
* Tidy
* Add progress
* Replace some password usage with slice
* First commits on path derivation
* Progress with implementation
* More progress
* Passing intermediate test vectors
* Tidy, add comments
* Add DerivedKey structs
* Move key derivation into own crate
* Add zeroize structs
* Return error for empty seed
* Add tests
* Tidy
* Add progress
* Expose PlainText struct
* First commits on path derivation
* Progress with implementation
* More progress
* Passing intermediate test vectors
* Tidy, add comments
* Add DerivedKey structs
* Move key derivation into own crate
* Add zeroize structs
* Return error for empty seed
* Add tests
* Tidy
* Add builder
* Expose consts, remove Password
* Minor progress
* Expose SALT_SIZE
* First compiling version
* Add test vectors
* Network crate update to stable futures
* Move dbg assert statement
* Port account_manager to stable futures (#1121)
* Port account_manager to stable futures
* Run async fns in tokio environment
* Port rest_api crate to stable futures (#1118)
* Port rest_api lib to stable futures
* Reduce tokio features
* Update notifier to stable futures
* Builder update
* Further updates
* Add mnemonic, tidy
* Convert self referential async functions
* Tidy
* Add testing
* Add first attempt at validator_dir
* Present pubkey field
* stable futures fixes (#1124)
* Fix eth1 update functions
* Fix genesis and client
* Fix beacon node lib
* Return appropriate runtimes from environment
* Fix test rig
* Refactor eth1 service update
* Upgrade simulator to stable futures
* Lighthouse compiles on stable futures
* Add first pass of wallet manager
* Progress with CLI
* Remove println debugging statement
* Tidy output
* Tidy 600 perms
* Update libp2p service, start rpc test upgrade
* Add validator creation flow
* Update network crate for new libp2p
* Start tidying, adding comments
* Update tokio::codec to futures_codec (#1128)
* Further work towards RPC corrections
* Correct http timeout and network service select
* Add wallet mgr testing
* Shift LockedWallet into own file
* Add comments to fs
* Start integration into VC
* Use tokio runtime for libp2p
* Revert "Update tokio::codec to futures_codec (#1128)"
This reverts commit e57aea924acf5cbabdcea18895ac07e38a425ed7.
* Upgrade RPC libp2p tests
* Upgrade secio fallback test
* Add lcli keypair upgrade command
* Upgrade gossipsub examples
* Clean up RPC protocol
* Test fixes (#1133)
* Correct websocket timeout and run on os thread
* Fix network test
* Add --secrets-dir to VC
* Remove --legacy-keys from VC
* Clean up PR
* Correct tokio tcp move attestation service tests
* Upgrade attestation service tests
* Fix sim
* Correct network test
* Correct genesis test
* Start docs
* Add progress for validator generation
* Tidy error messages
* Test corrections
* Log info when block is received
* Modify logs and update attester service events
* Stable futures: fixes to vc, eth1 and account manager (#1142)
* Add local testnet scripts
* Remove whiteblock script
* Rename local testnet script
* Move spawns onto handle
* Fix VC panic
* Initial fix to block production issue
* Tidy block producer fix
* Tidy further
* Add local testnet clean script
* Run cargo fmt
* Tidy duties service
* Tidy fork service
* Tidy ForkService
* Tidy AttestationService
* Tidy notifier
* Ensure await is not suppressed in eth1
* Ensure await is not suppressed in account_manager
* Use .ok() instead of .unwrap_or(())
* RPC decoding test for proto
* Update discv5 and eth2-libp2p deps
* Run cargo fmt
* Pre-build keystores for sim
* Fix lcli double runtime issue (#1144)
* Handle stream termination and dialing peer errors
* Correct peer_info variant types
* Add progress on new deposit flow
* Remove unnecessary warnings
* Handle subnet unsubscription removal and improve logigng
* Add logs around ping
* Upgrade discv5 and improve logging
* Handle peer connection status for multiple connections
* Improve network service logging
* Add more incomplete progress
* Improve logging around peer manager
* Upgrade swarm poll centralise peer management
* Identify clients on error
* Fix `remove_peer` in sync (#1150)
* remove_peer removes from all chains
* Remove logs
* Fix early return from loop
* Improved logging, fix panic
* Partially correct tests
* Add deposit command
* Remove old validator directory
* Start adding AM tests
* Stable futures: Vc sync (#1149)
* Improve syncing heuristic
* Add comments
* Use safer method for tolerance
* Fix tests
* Binary testing progress
* Progress with CLI tests
* Use constants for flags
* More account manager testing
* Improve CLI tests
* Move upgrade-legacy-keypairs into account man
* Use rayon for VC key generation
* Add comments to `validator_dir`
* Add testing to validator_dir
* Add fix to eth1-sim
* Check errors in eth1-sim
* Fix mutability issue
* Ensure password file ends in .pass
* Add more tests to wallet manager
* Tidy deposit
* Tidy account manager
* Tidy account manager
* Remove panic
* Generate keypairs earlier in sim
* Tidy eth1-sime
* Try to fix eth1 sim
* Address review comments
* Fix typo in CLI command
* Update docs
* Disable eth1 sim
* Remove eth1 sim completely
Co-authored-by: Age Manning <Age@AgeManning.com>
Co-authored-by: pawanjay176 <pawandhananjay@gmail.com>
2020-05-18 09:01:45 +00:00
|
|
|
"validator_dir",
|
2019-12-09 11:39:44 +00:00
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "lighthouse_metrics"
|
Initial work towards v0.2.0 (#924)
* Remove ping protocol
* Initial renaming of network services
* Correct rebasing relative to latest master
* Start updating types
* Adds HashMapDelay struct to utils
* Initial network restructure
* Network restructure. Adds new types for v0.2.0
* Removes build artefacts
* Shift validation to beacon chain
* Temporarily remove gossip validation
This is to be updated to match current optimisation efforts.
* Adds AggregateAndProof
* Begin rebuilding pubsub encoding/decoding
* Signature hacking
* Shift gossipsup decoding into eth2_libp2p
* Existing EF tests passing with fake_crypto
* Shifts block encoding/decoding into RPC
* Delete outdated API spec
* All release tests passing bar genesis state parsing
* Update and test YamlConfig
* Update to spec v0.10 compatible BLS
* Updates to BLS EF tests
* Add EF test for AggregateVerify
And delete unused hash2curve tests for uncompressed points
* Update EF tests to v0.10.1
* Use optional block root correctly in block proc
* Use genesis fork in deposit domain. All tests pass
* Fast aggregate verify test
* Update REST API docs
* Fix unused import
* Bump spec tags to v0.10.1
* Add `seconds_per_eth1_block` to chainspec
* Update to timestamp based eth1 voting scheme
* Return None from `get_votes_to_consider` if block cache is empty
* Handle overflows in `is_candidate_block`
* Revert to failing tests
* Fix eth1 data sets test
* Choose default vote according to spec
* Fix collect_valid_votes tests
* Fix `get_votes_to_consider` to choose all eligible blocks
* Uncomment winning_vote tests
* Add comments; remove unused code
* Reduce seconds_per_eth1_block for simulation
* Addressed review comments
* Add test for default vote case
* Fix logs
* Remove unused functions
* Meter default eth1 votes
* Fix comments
* Progress on attestation service
* Address review comments; remove unused dependency
* Initial work on removing libp2p lock
* Add LRU caches to store (rollup)
* Update attestation validation for DB changes (WIP)
* Initial version of should_forward_block
* Scaffold
* Progress on attestation validation
Also, consolidate prod+testing slot clocks so that they share much
of the same implementation and can both handle sub-slot time changes.
* Removes lock from libp2p service
* Completed network lock removal
* Finish(?) attestation processing
* Correct network termination future
* Add slot check to block check
* Correct fmt issues
* Remove Drop implementation for network service
* Add first attempt at attestation proc. re-write
* Add version 2 of attestation processing
* Minor fixes
* Add validator pubkey cache
* Make get_indexed_attestation take a committee
* Link signature processing into new attn verification
* First working version
* Ensure pubkey cache is updated
* Add more metrics, slight optimizations
* Clone committee cache during attestation processing
* Update shuffling cache during block processing
* Remove old commented-out code
* Fix shuffling cache insert bug
* Used indexed attestation in fork choice
* Restructure attn processing, add metrics
* Add more detailed metrics
* Tidy, fix failing tests
* Fix failing tests, tidy
* Address reviewers suggestions
* Disable/delete two outdated tests
* Modification of validator for subscriptions
* Add slot signing to validator client
* Further progress on validation subscription
* Adds necessary validator subscription functionality
* Add new Pubkeys struct to signature_sets
* Refactor with functional approach
* Update beacon chain
* Clean up validator <-> beacon node http types
* Add aggregator status to ValidatorDuty
* Impl Clone for manual slot clock
* Fix minor errors
* Further progress validator client subscription
* Initial subscription and aggregation handling
* Remove decompressed member from pubkey bytes
* Progress to modifying val client for attestation aggregation
* First draft of validator client upgrade for aggregate attestations
* Add hashmap for indices lookup
* Add state cache, remove store cache
* Only build the head committee cache
* Removes lock on a network channel
* Partially implement beacon node subscription http api
* Correct compilation issues
* Change `get_attesting_indices` to use Vec
* Fix failing test
* Partial implementation of timer
* Adds timer, removes exit_future, http api to op pool
* Partial multiple aggregate attestation handling
* Permits bulk messages accross gossipsub network channel
* Correct compile issues
* Improve gosispsub messaging and correct rest api helpers
* Added global gossipsub subscriptions
* Update validator subscriptions data structs
* Tidy
* Re-structure validator subscriptions
* Initial handling of subscriptions
* Re-structure network service
* Add pubkey cache persistence file
* Add more comments
* Integrate persistence file into builder
* Add pubkey cache tests
* Add HashSetDelay and introduce into attestation service
* Handles validator subscriptions
* Add data_dir to beacon chain builder
* Remove Option in pubkey cache persistence file
* Ensure consistency between datadir/data_dir
* Fix failing network test
* Peer subnet discovery gets queued for future subscriptions
* Reorganise attestation service functions
* Initial wiring of attestation service
* First draft of attestation service timing logic
* Correct minor typos
* Tidy
* Fix todos
* Improve tests
* Add PeerInfo to connected peers mapping
* Fix compile error
* Fix compile error from merge
* Split up block processing metrics
* Tidy
* Refactor get_pubkey_from_state
* Remove commented-out code
* Rename state_cache -> checkpoint_cache
* Rename Checkpoint -> Snapshot
* Tidy, add comments
* Tidy up find_head function
* Change some checkpoint -> snapshot
* Add tests
* Expose max_len
* Remove dead code
* Tidy
* Fix bug
* Add sync-speed metric
* Add first attempt at VerifiableBlock
* Start integrating into beacon chain
* Integrate VerifiableBlock
* Rename VerifableBlock -> PartialBlockVerification
* Add start of typed methods
* Add progress
* Add further progress
* Rename structs
* Add full block verification to block_processing.rs
* Further beacon chain integration
* Update checks for gossip
* Add todo
* Start adding segement verification
* Add passing chain segement test
* Initial integration with batch sync
* Minor changes
* Tidy, add more error checking
* Start adding chain_segment tests
* Finish invalid signature tests
* Include single and gossip verified blocks in tests
* Add gossip verification tests
* Start adding docs
* Finish adding comments to block_processing.rs
* Rename block_processing.rs -> block_verification
* Start removing old block processing code
* Fixes beacon_chain compilation
* Fix project-wide compile errors
* Remove old code
* Correct code to pass all tests
* Fix bug with beacon proposer index
* Fix shim for BlockProcessingError
* Only process one epoch at a time
* Fix loop in chain segment processing
* Correct tests from master merge
* Add caching for state.eth1_data_votes
* Add BeaconChain::validator_pubkey
* Revert "Add caching for state.eth1_data_votes"
This reverts commit cd73dcd6434fb8d8e6bf30c5356355598ea7b78e.
Co-authored-by: Grant Wuerker <gwuerker@gmail.com>
Co-authored-by: Michael Sproul <michael@sigmaprime.io>
Co-authored-by: Michael Sproul <micsproul@gmail.com>
Co-authored-by: pawan <pawandhananjay@gmail.com>
Co-authored-by: Paul Hauner <paul@paulhauner.com>
2020-03-17 06:24:44 +00:00
|
|
|
version = "0.2.0"
|
2019-12-09 11:39:44 +00:00
|
|
|
dependencies = [
|
2020-05-10 09:56:31 +00:00
|
|
|
"lazy_static",
|
|
|
|
"prometheus",
|
2019-12-09 11:39:44 +00:00
|
|
|
]
|
|
|
|
|
Rename eth2_libp2p to lighthouse_network (#2702)
## Description
The `eth2_libp2p` crate was originally named and designed to incorporate a simple libp2p integration into lighthouse. Since its origins the crates purpose has expanded dramatically. It now houses a lot more sophistication that is specific to lighthouse and no longer just a libp2p integration.
As of this writing it currently houses the following high-level lighthouse-specific logic:
- Lighthouse's implementation of the eth2 RPC protocol and specific encodings/decodings
- Integration and handling of ENRs with respect to libp2p and eth2
- Lighthouse's discovery logic, its integration with discv5 and logic about searching and handling peers.
- Lighthouse's peer manager - This is a large module handling various aspects of Lighthouse's network, such as peer scoring, handling pings and metadata, connection maintenance and recording, etc.
- Lighthouse's peer database - This is a collection of information stored for each individual peer which is specific to lighthouse. We store connection state, sync state, last seen ips and scores etc. The data stored for each peer is designed for various elements of the lighthouse code base such as syncing and the http api.
- Gossipsub scoring - This stores a collection of gossipsub 1.1 scoring mechanisms that are continuously analyssed and updated based on the ethereum 2 networks and how Lighthouse performs on these networks.
- Lighthouse specific types for managing gossipsub topics, sync status and ENR fields
- Lighthouse's network HTTP API metrics - A collection of metrics for lighthouse network monitoring
- Lighthouse's custom configuration of all networking protocols, RPC, gossipsub, discovery, identify and libp2p.
Therefore it makes sense to rename the crate to be more akin to its current purposes, simply that it manages the majority of Lighthouse's network stack. This PR renames this crate to `lighthouse_network`
Co-authored-by: Paul Hauner <paul@paulhauner.com>
2021-10-19 00:30:39 +00:00
|
|
|
[[package]]
|
|
|
|
name = "lighthouse_network"
|
|
|
|
version = "0.2.0"
|
|
|
|
dependencies = [
|
|
|
|
"directory",
|
|
|
|
"dirs",
|
|
|
|
"discv5",
|
|
|
|
"error-chain",
|
2021-11-29 03:57:54 +00:00
|
|
|
"eth2_ssz",
|
2022-03-31 07:52:23 +00:00
|
|
|
"eth2_ssz_derive",
|
2021-11-29 03:57:54 +00:00
|
|
|
"eth2_ssz_types",
|
Rename eth2_libp2p to lighthouse_network (#2702)
## Description
The `eth2_libp2p` crate was originally named and designed to incorporate a simple libp2p integration into lighthouse. Since its origins the crates purpose has expanded dramatically. It now houses a lot more sophistication that is specific to lighthouse and no longer just a libp2p integration.
As of this writing it currently houses the following high-level lighthouse-specific logic:
- Lighthouse's implementation of the eth2 RPC protocol and specific encodings/decodings
- Integration and handling of ENRs with respect to libp2p and eth2
- Lighthouse's discovery logic, its integration with discv5 and logic about searching and handling peers.
- Lighthouse's peer manager - This is a large module handling various aspects of Lighthouse's network, such as peer scoring, handling pings and metadata, connection maintenance and recording, etc.
- Lighthouse's peer database - This is a collection of information stored for each individual peer which is specific to lighthouse. We store connection state, sync state, last seen ips and scores etc. The data stored for each peer is designed for various elements of the lighthouse code base such as syncing and the http api.
- Gossipsub scoring - This stores a collection of gossipsub 1.1 scoring mechanisms that are continuously analyssed and updated based on the ethereum 2 networks and how Lighthouse performs on these networks.
- Lighthouse specific types for managing gossipsub topics, sync status and ENR fields
- Lighthouse's network HTTP API metrics - A collection of metrics for lighthouse network monitoring
- Lighthouse's custom configuration of all networking protocols, RPC, gossipsub, discovery, identify and libp2p.
Therefore it makes sense to rename the crate to be more akin to its current purposes, simply that it manages the majority of Lighthouse's network stack. This PR renames this crate to `lighthouse_network`
Co-authored-by: Paul Hauner <paul@paulhauner.com>
2021-10-19 00:30:39 +00:00
|
|
|
"exit-future",
|
|
|
|
"fnv",
|
|
|
|
"futures",
|
|
|
|
"hashset_delay",
|
|
|
|
"hex",
|
|
|
|
"lazy_static",
|
|
|
|
"libp2p",
|
|
|
|
"lighthouse_metrics",
|
|
|
|
"lighthouse_version",
|
|
|
|
"lru",
|
2022-06-18 23:59:43 +00:00
|
|
|
"parking_lot 0.12.1",
|
2022-02-10 04:12:03 +00:00
|
|
|
"prometheus-client",
|
2022-06-25 22:22:34 +00:00
|
|
|
"quickcheck",
|
|
|
|
"quickcheck_macros",
|
2022-04-04 00:26:16 +00:00
|
|
|
"rand 0.8.5",
|
Rename eth2_libp2p to lighthouse_network (#2702)
## Description
The `eth2_libp2p` crate was originally named and designed to incorporate a simple libp2p integration into lighthouse. Since its origins the crates purpose has expanded dramatically. It now houses a lot more sophistication that is specific to lighthouse and no longer just a libp2p integration.
As of this writing it currently houses the following high-level lighthouse-specific logic:
- Lighthouse's implementation of the eth2 RPC protocol and specific encodings/decodings
- Integration and handling of ENRs with respect to libp2p and eth2
- Lighthouse's discovery logic, its integration with discv5 and logic about searching and handling peers.
- Lighthouse's peer manager - This is a large module handling various aspects of Lighthouse's network, such as peer scoring, handling pings and metadata, connection maintenance and recording, etc.
- Lighthouse's peer database - This is a collection of information stored for each individual peer which is specific to lighthouse. We store connection state, sync state, last seen ips and scores etc. The data stored for each peer is designed for various elements of the lighthouse code base such as syncing and the http api.
- Gossipsub scoring - This stores a collection of gossipsub 1.1 scoring mechanisms that are continuously analyssed and updated based on the ethereum 2 networks and how Lighthouse performs on these networks.
- Lighthouse specific types for managing gossipsub topics, sync status and ENR fields
- Lighthouse's network HTTP API metrics - A collection of metrics for lighthouse network monitoring
- Lighthouse's custom configuration of all networking protocols, RPC, gossipsub, discovery, identify and libp2p.
Therefore it makes sense to rename the crate to be more akin to its current purposes, simply that it manages the majority of Lighthouse's network stack. This PR renames this crate to `lighthouse_network`
Co-authored-by: Paul Hauner <paul@paulhauner.com>
2021-10-19 00:30:39 +00:00
|
|
|
"regex",
|
|
|
|
"serde",
|
|
|
|
"serde_derive",
|
2022-01-11 01:35:56 +00:00
|
|
|
"sha2 0.9.9",
|
Rename eth2_libp2p to lighthouse_network (#2702)
## Description
The `eth2_libp2p` crate was originally named and designed to incorporate a simple libp2p integration into lighthouse. Since its origins the crates purpose has expanded dramatically. It now houses a lot more sophistication that is specific to lighthouse and no longer just a libp2p integration.
As of this writing it currently houses the following high-level lighthouse-specific logic:
- Lighthouse's implementation of the eth2 RPC protocol and specific encodings/decodings
- Integration and handling of ENRs with respect to libp2p and eth2
- Lighthouse's discovery logic, its integration with discv5 and logic about searching and handling peers.
- Lighthouse's peer manager - This is a large module handling various aspects of Lighthouse's network, such as peer scoring, handling pings and metadata, connection maintenance and recording, etc.
- Lighthouse's peer database - This is a collection of information stored for each individual peer which is specific to lighthouse. We store connection state, sync state, last seen ips and scores etc. The data stored for each peer is designed for various elements of the lighthouse code base such as syncing and the http api.
- Gossipsub scoring - This stores a collection of gossipsub 1.1 scoring mechanisms that are continuously analyssed and updated based on the ethereum 2 networks and how Lighthouse performs on these networks.
- Lighthouse specific types for managing gossipsub topics, sync status and ENR fields
- Lighthouse's network HTTP API metrics - A collection of metrics for lighthouse network monitoring
- Lighthouse's custom configuration of all networking protocols, RPC, gossipsub, discovery, identify and libp2p.
Therefore it makes sense to rename the crate to be more akin to its current purposes, simply that it manages the majority of Lighthouse's network stack. This PR renames this crate to `lighthouse_network`
Co-authored-by: Paul Hauner <paul@paulhauner.com>
2021-10-19 00:30:39 +00:00
|
|
|
"slog",
|
|
|
|
"slog-async",
|
|
|
|
"slog-term",
|
|
|
|
"smallvec",
|
|
|
|
"snap",
|
|
|
|
"strum",
|
|
|
|
"superstruct",
|
|
|
|
"task_executor",
|
|
|
|
"tempfile",
|
2022-04-04 00:26:16 +00:00
|
|
|
"tiny-keccak",
|
Rename eth2_libp2p to lighthouse_network (#2702)
## Description
The `eth2_libp2p` crate was originally named and designed to incorporate a simple libp2p integration into lighthouse. Since its origins the crates purpose has expanded dramatically. It now houses a lot more sophistication that is specific to lighthouse and no longer just a libp2p integration.
As of this writing it currently houses the following high-level lighthouse-specific logic:
- Lighthouse's implementation of the eth2 RPC protocol and specific encodings/decodings
- Integration and handling of ENRs with respect to libp2p and eth2
- Lighthouse's discovery logic, its integration with discv5 and logic about searching and handling peers.
- Lighthouse's peer manager - This is a large module handling various aspects of Lighthouse's network, such as peer scoring, handling pings and metadata, connection maintenance and recording, etc.
- Lighthouse's peer database - This is a collection of information stored for each individual peer which is specific to lighthouse. We store connection state, sync state, last seen ips and scores etc. The data stored for each peer is designed for various elements of the lighthouse code base such as syncing and the http api.
- Gossipsub scoring - This stores a collection of gossipsub 1.1 scoring mechanisms that are continuously analyssed and updated based on the ethereum 2 networks and how Lighthouse performs on these networks.
- Lighthouse specific types for managing gossipsub topics, sync status and ENR fields
- Lighthouse's network HTTP API metrics - A collection of metrics for lighthouse network monitoring
- Lighthouse's custom configuration of all networking protocols, RPC, gossipsub, discovery, identify and libp2p.
Therefore it makes sense to rename the crate to be more akin to its current purposes, simply that it manages the majority of Lighthouse's network stack. This PR renames this crate to `lighthouse_network`
Co-authored-by: Paul Hauner <paul@paulhauner.com>
2021-10-19 00:30:39 +00:00
|
|
|
"tokio",
|
|
|
|
"tokio-io-timeout",
|
2022-06-18 23:59:43 +00:00
|
|
|
"tokio-util 0.6.10",
|
Rename eth2_libp2p to lighthouse_network (#2702)
## Description
The `eth2_libp2p` crate was originally named and designed to incorporate a simple libp2p integration into lighthouse. Since its origins the crates purpose has expanded dramatically. It now houses a lot more sophistication that is specific to lighthouse and no longer just a libp2p integration.
As of this writing it currently houses the following high-level lighthouse-specific logic:
- Lighthouse's implementation of the eth2 RPC protocol and specific encodings/decodings
- Integration and handling of ENRs with respect to libp2p and eth2
- Lighthouse's discovery logic, its integration with discv5 and logic about searching and handling peers.
- Lighthouse's peer manager - This is a large module handling various aspects of Lighthouse's network, such as peer scoring, handling pings and metadata, connection maintenance and recording, etc.
- Lighthouse's peer database - This is a collection of information stored for each individual peer which is specific to lighthouse. We store connection state, sync state, last seen ips and scores etc. The data stored for each peer is designed for various elements of the lighthouse code base such as syncing and the http api.
- Gossipsub scoring - This stores a collection of gossipsub 1.1 scoring mechanisms that are continuously analyssed and updated based on the ethereum 2 networks and how Lighthouse performs on these networks.
- Lighthouse specific types for managing gossipsub topics, sync status and ENR fields
- Lighthouse's network HTTP API metrics - A collection of metrics for lighthouse network monitoring
- Lighthouse's custom configuration of all networking protocols, RPC, gossipsub, discovery, identify and libp2p.
Therefore it makes sense to rename the crate to be more akin to its current purposes, simply that it manages the majority of Lighthouse's network stack. This PR renames this crate to `lighthouse_network`
Co-authored-by: Paul Hauner <paul@paulhauner.com>
2021-10-19 00:30:39 +00:00
|
|
|
"types",
|
|
|
|
"unsigned-varint 0.6.0",
|
2022-02-17 21:47:06 +00:00
|
|
|
"unused_port",
|
2021-12-20 23:45:21 +00:00
|
|
|
"void",
|
Rename eth2_libp2p to lighthouse_network (#2702)
## Description
The `eth2_libp2p` crate was originally named and designed to incorporate a simple libp2p integration into lighthouse. Since its origins the crates purpose has expanded dramatically. It now houses a lot more sophistication that is specific to lighthouse and no longer just a libp2p integration.
As of this writing it currently houses the following high-level lighthouse-specific logic:
- Lighthouse's implementation of the eth2 RPC protocol and specific encodings/decodings
- Integration and handling of ENRs with respect to libp2p and eth2
- Lighthouse's discovery logic, its integration with discv5 and logic about searching and handling peers.
- Lighthouse's peer manager - This is a large module handling various aspects of Lighthouse's network, such as peer scoring, handling pings and metadata, connection maintenance and recording, etc.
- Lighthouse's peer database - This is a collection of information stored for each individual peer which is specific to lighthouse. We store connection state, sync state, last seen ips and scores etc. The data stored for each peer is designed for various elements of the lighthouse code base such as syncing and the http api.
- Gossipsub scoring - This stores a collection of gossipsub 1.1 scoring mechanisms that are continuously analyssed and updated based on the ethereum 2 networks and how Lighthouse performs on these networks.
- Lighthouse specific types for managing gossipsub topics, sync status and ENR fields
- Lighthouse's network HTTP API metrics - A collection of metrics for lighthouse network monitoring
- Lighthouse's custom configuration of all networking protocols, RPC, gossipsub, discovery, identify and libp2p.
Therefore it makes sense to rename the crate to be more akin to its current purposes, simply that it manages the majority of Lighthouse's network stack. This PR renames this crate to `lighthouse_network`
Co-authored-by: Paul Hauner <paul@paulhauner.com>
2021-10-19 00:30:39 +00:00
|
|
|
]
|
|
|
|
|
2020-08-04 07:44:53 +00:00
|
|
|
[[package]]
|
|
|
|
name = "lighthouse_version"
|
|
|
|
version = "0.1.0"
|
|
|
|
dependencies = [
|
|
|
|
"git-version",
|
2021-02-23 23:31:37 +00:00
|
|
|
"regex",
|
2020-08-04 07:44:53 +00:00
|
|
|
"target_info",
|
|
|
|
]
|
|
|
|
|
2019-12-09 11:39:44 +00:00
|
|
|
[[package]]
|
|
|
|
name = "linked-hash-map"
|
2022-07-05 23:36:42 +00:00
|
|
|
version = "0.5.6"
|
2019-12-09 11:39:44 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2022-07-05 23:36:42 +00:00
|
|
|
checksum = "0717cef1bc8b636c6e1c1bbdefc09e6322da8a9321966e8928ef80d20f7f770f"
|
2019-12-09 11:39:44 +00:00
|
|
|
|
2020-07-06 01:55:56 +00:00
|
|
|
[[package]]
|
|
|
|
name = "lock_api"
|
2022-04-04 00:26:16 +00:00
|
|
|
version = "0.4.7"
|
2020-07-06 01:55:56 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2022-04-04 00:26:16 +00:00
|
|
|
checksum = "327fa5b6a6940e4699ec49a9beae1ea4845c6bab9314e4f84ac68742139d8c53"
|
2020-07-06 01:55:56 +00:00
|
|
|
dependencies = [
|
2022-04-04 00:26:16 +00:00
|
|
|
"autocfg 1.1.0",
|
2020-07-06 01:55:56 +00:00
|
|
|
"scopeguard",
|
|
|
|
]
|
|
|
|
|
2020-11-26 11:25:46 +00:00
|
|
|
[[package]]
|
|
|
|
name = "lockfile"
|
|
|
|
version = "0.1.0"
|
|
|
|
dependencies = [
|
|
|
|
"fs2",
|
2021-01-06 06:36:11 +00:00
|
|
|
"tempfile",
|
2020-11-26 11:25:46 +00:00
|
|
|
]
|
|
|
|
|
2019-12-09 11:39:44 +00:00
|
|
|
[[package]]
|
|
|
|
name = "log"
|
2022-06-18 23:59:43 +00:00
|
|
|
version = "0.4.17"
|
2019-12-09 11:39:44 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2022-06-18 23:59:43 +00:00
|
|
|
checksum = "abb12e687cfb44aa40f41fc3978ef76448f9b6038cad6aef4259d3c095a2382e"
|
2019-12-09 11:39:44 +00:00
|
|
|
dependencies = [
|
2021-11-18 05:08:42 +00:00
|
|
|
"cfg-if",
|
2019-12-09 11:39:44 +00:00
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "logging"
|
Initial work towards v0.2.0 (#924)
* Remove ping protocol
* Initial renaming of network services
* Correct rebasing relative to latest master
* Start updating types
* Adds HashMapDelay struct to utils
* Initial network restructure
* Network restructure. Adds new types for v0.2.0
* Removes build artefacts
* Shift validation to beacon chain
* Temporarily remove gossip validation
This is to be updated to match current optimisation efforts.
* Adds AggregateAndProof
* Begin rebuilding pubsub encoding/decoding
* Signature hacking
* Shift gossipsup decoding into eth2_libp2p
* Existing EF tests passing with fake_crypto
* Shifts block encoding/decoding into RPC
* Delete outdated API spec
* All release tests passing bar genesis state parsing
* Update and test YamlConfig
* Update to spec v0.10 compatible BLS
* Updates to BLS EF tests
* Add EF test for AggregateVerify
And delete unused hash2curve tests for uncompressed points
* Update EF tests to v0.10.1
* Use optional block root correctly in block proc
* Use genesis fork in deposit domain. All tests pass
* Fast aggregate verify test
* Update REST API docs
* Fix unused import
* Bump spec tags to v0.10.1
* Add `seconds_per_eth1_block` to chainspec
* Update to timestamp based eth1 voting scheme
* Return None from `get_votes_to_consider` if block cache is empty
* Handle overflows in `is_candidate_block`
* Revert to failing tests
* Fix eth1 data sets test
* Choose default vote according to spec
* Fix collect_valid_votes tests
* Fix `get_votes_to_consider` to choose all eligible blocks
* Uncomment winning_vote tests
* Add comments; remove unused code
* Reduce seconds_per_eth1_block for simulation
* Addressed review comments
* Add test for default vote case
* Fix logs
* Remove unused functions
* Meter default eth1 votes
* Fix comments
* Progress on attestation service
* Address review comments; remove unused dependency
* Initial work on removing libp2p lock
* Add LRU caches to store (rollup)
* Update attestation validation for DB changes (WIP)
* Initial version of should_forward_block
* Scaffold
* Progress on attestation validation
Also, consolidate prod+testing slot clocks so that they share much
of the same implementation and can both handle sub-slot time changes.
* Removes lock from libp2p service
* Completed network lock removal
* Finish(?) attestation processing
* Correct network termination future
* Add slot check to block check
* Correct fmt issues
* Remove Drop implementation for network service
* Add first attempt at attestation proc. re-write
* Add version 2 of attestation processing
* Minor fixes
* Add validator pubkey cache
* Make get_indexed_attestation take a committee
* Link signature processing into new attn verification
* First working version
* Ensure pubkey cache is updated
* Add more metrics, slight optimizations
* Clone committee cache during attestation processing
* Update shuffling cache during block processing
* Remove old commented-out code
* Fix shuffling cache insert bug
* Used indexed attestation in fork choice
* Restructure attn processing, add metrics
* Add more detailed metrics
* Tidy, fix failing tests
* Fix failing tests, tidy
* Address reviewers suggestions
* Disable/delete two outdated tests
* Modification of validator for subscriptions
* Add slot signing to validator client
* Further progress on validation subscription
* Adds necessary validator subscription functionality
* Add new Pubkeys struct to signature_sets
* Refactor with functional approach
* Update beacon chain
* Clean up validator <-> beacon node http types
* Add aggregator status to ValidatorDuty
* Impl Clone for manual slot clock
* Fix minor errors
* Further progress validator client subscription
* Initial subscription and aggregation handling
* Remove decompressed member from pubkey bytes
* Progress to modifying val client for attestation aggregation
* First draft of validator client upgrade for aggregate attestations
* Add hashmap for indices lookup
* Add state cache, remove store cache
* Only build the head committee cache
* Removes lock on a network channel
* Partially implement beacon node subscription http api
* Correct compilation issues
* Change `get_attesting_indices` to use Vec
* Fix failing test
* Partial implementation of timer
* Adds timer, removes exit_future, http api to op pool
* Partial multiple aggregate attestation handling
* Permits bulk messages accross gossipsub network channel
* Correct compile issues
* Improve gosispsub messaging and correct rest api helpers
* Added global gossipsub subscriptions
* Update validator subscriptions data structs
* Tidy
* Re-structure validator subscriptions
* Initial handling of subscriptions
* Re-structure network service
* Add pubkey cache persistence file
* Add more comments
* Integrate persistence file into builder
* Add pubkey cache tests
* Add HashSetDelay and introduce into attestation service
* Handles validator subscriptions
* Add data_dir to beacon chain builder
* Remove Option in pubkey cache persistence file
* Ensure consistency between datadir/data_dir
* Fix failing network test
* Peer subnet discovery gets queued for future subscriptions
* Reorganise attestation service functions
* Initial wiring of attestation service
* First draft of attestation service timing logic
* Correct minor typos
* Tidy
* Fix todos
* Improve tests
* Add PeerInfo to connected peers mapping
* Fix compile error
* Fix compile error from merge
* Split up block processing metrics
* Tidy
* Refactor get_pubkey_from_state
* Remove commented-out code
* Rename state_cache -> checkpoint_cache
* Rename Checkpoint -> Snapshot
* Tidy, add comments
* Tidy up find_head function
* Change some checkpoint -> snapshot
* Add tests
* Expose max_len
* Remove dead code
* Tidy
* Fix bug
* Add sync-speed metric
* Add first attempt at VerifiableBlock
* Start integrating into beacon chain
* Integrate VerifiableBlock
* Rename VerifableBlock -> PartialBlockVerification
* Add start of typed methods
* Add progress
* Add further progress
* Rename structs
* Add full block verification to block_processing.rs
* Further beacon chain integration
* Update checks for gossip
* Add todo
* Start adding segement verification
* Add passing chain segement test
* Initial integration with batch sync
* Minor changes
* Tidy, add more error checking
* Start adding chain_segment tests
* Finish invalid signature tests
* Include single and gossip verified blocks in tests
* Add gossip verification tests
* Start adding docs
* Finish adding comments to block_processing.rs
* Rename block_processing.rs -> block_verification
* Start removing old block processing code
* Fixes beacon_chain compilation
* Fix project-wide compile errors
* Remove old code
* Correct code to pass all tests
* Fix bug with beacon proposer index
* Fix shim for BlockProcessingError
* Only process one epoch at a time
* Fix loop in chain segment processing
* Correct tests from master merge
* Add caching for state.eth1_data_votes
* Add BeaconChain::validator_pubkey
* Revert "Add caching for state.eth1_data_votes"
This reverts commit cd73dcd6434fb8d8e6bf30c5356355598ea7b78e.
Co-authored-by: Grant Wuerker <gwuerker@gmail.com>
Co-authored-by: Michael Sproul <michael@sigmaprime.io>
Co-authored-by: Michael Sproul <micsproul@gmail.com>
Co-authored-by: pawan <pawandhananjay@gmail.com>
Co-authored-by: Paul Hauner <paul@paulhauner.com>
2020-03-17 06:24:44 +00:00
|
|
|
version = "0.2.0"
|
2019-12-09 11:39:44 +00:00
|
|
|
dependencies = [
|
2020-05-10 09:56:31 +00:00
|
|
|
"lazy_static",
|
|
|
|
"lighthouse_metrics",
|
|
|
|
"slog",
|
|
|
|
"slog-term",
|
2021-10-06 00:46:07 +00:00
|
|
|
"sloggers",
|
2019-12-09 11:39:44 +00:00
|
|
|
]
|
|
|
|
|
2020-06-06 06:39:42 +00:00
|
|
|
[[package]]
|
|
|
|
name = "lru"
|
2022-06-18 23:59:43 +00:00
|
|
|
version = "0.7.7"
|
2020-05-18 06:25:16 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2022-06-18 23:59:43 +00:00
|
|
|
checksum = "c84e6fe5655adc6ce00787cf7dcaf8dc4f998a0565d23eafc207a8b08ca3349a"
|
2020-05-18 06:25:16 +00:00
|
|
|
dependencies = [
|
2022-06-18 23:59:43 +00:00
|
|
|
"hashbrown 0.11.2",
|
2020-05-18 06:25:16 +00:00
|
|
|
]
|
|
|
|
|
2021-06-03 01:11:33 +00:00
|
|
|
[[package]]
|
|
|
|
name = "lru-cache"
|
|
|
|
version = "0.1.2"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "31e24f1ad8321ca0e8a1e0ac13f23cb668e6f5466c2c57319f6a5cf1cc8e3b1c"
|
|
|
|
dependencies = [
|
|
|
|
"linked-hash-map",
|
|
|
|
]
|
|
|
|
|
2020-08-18 03:54:09 +00:00
|
|
|
[[package]]
|
|
|
|
name = "lru_cache"
|
|
|
|
version = "0.1.0"
|
|
|
|
dependencies = [
|
|
|
|
"fnv",
|
|
|
|
]
|
|
|
|
|
2020-05-29 02:03:30 +00:00
|
|
|
[[package]]
|
|
|
|
name = "mach"
|
|
|
|
version = "0.3.2"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "b823e83b2affd8f40a9ee8c29dbc56404c1e34cd2710921f2801e2cf29527afa"
|
|
|
|
dependencies = [
|
|
|
|
"libc",
|
|
|
|
]
|
|
|
|
|
2021-05-28 05:59:45 +00:00
|
|
|
[[package]]
|
|
|
|
name = "malloc_utils"
|
|
|
|
version = "0.1.0"
|
|
|
|
dependencies = [
|
|
|
|
"lazy_static",
|
|
|
|
"libc",
|
|
|
|
"lighthouse_metrics",
|
2022-06-18 23:59:43 +00:00
|
|
|
"parking_lot 0.12.1",
|
2021-05-28 05:59:45 +00:00
|
|
|
]
|
|
|
|
|
2020-07-29 06:39:29 +00:00
|
|
|
[[package]]
|
|
|
|
name = "maplit"
|
|
|
|
version = "1.0.2"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "3e2e65a1a2e43cfcb47a895c4c8b10d1f4a61097f9f254f183aee60cad9c651d"
|
|
|
|
|
2021-06-03 01:11:33 +00:00
|
|
|
[[package]]
|
|
|
|
name = "match_cfg"
|
|
|
|
version = "0.1.0"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "ffbee8634e0d45d258acb448e7eaab3fce7a0a467395d4d9f228e3c1f01fb2e4"
|
|
|
|
|
2020-10-23 04:16:33 +00:00
|
|
|
[[package]]
|
|
|
|
name = "matchers"
|
2021-12-22 06:17:14 +00:00
|
|
|
version = "0.1.0"
|
2020-10-23 04:16:33 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2021-12-22 06:17:14 +00:00
|
|
|
checksum = "8263075bb86c5a1b1427b5ae862e8889656f126e9f77c484496e8b47cf5c5558"
|
2020-10-23 04:16:33 +00:00
|
|
|
dependencies = [
|
|
|
|
"regex-automata",
|
|
|
|
]
|
|
|
|
|
2019-12-09 11:39:44 +00:00
|
|
|
[[package]]
|
|
|
|
name = "matches"
|
2021-08-17 01:00:24 +00:00
|
|
|
version = "0.1.9"
|
2019-12-09 11:39:44 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2021-08-17 01:00:24 +00:00
|
|
|
checksum = "a3e378b66a060d48947b590737b30a1be76706c8dd7b8ba0f2fe3989c68a853f"
|
2019-12-09 11:39:44 +00:00
|
|
|
|
2021-12-21 08:23:17 +00:00
|
|
|
[[package]]
|
|
|
|
name = "mdbx-sys"
|
2022-04-04 00:26:16 +00:00
|
|
|
version = "0.11.6-4"
|
2021-12-21 08:23:17 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2022-04-04 00:26:16 +00:00
|
|
|
checksum = "9dde320ea35df4678486346065386943ed6c5920f2ab445dff8dd5d9c8cd04ad"
|
2021-12-21 08:23:17 +00:00
|
|
|
dependencies = [
|
|
|
|
"bindgen",
|
|
|
|
"cc",
|
|
|
|
"cmake",
|
|
|
|
"libc",
|
|
|
|
]
|
|
|
|
|
2019-12-09 11:39:44 +00:00
|
|
|
[[package]]
|
|
|
|
name = "memchr"
|
2022-06-18 23:59:43 +00:00
|
|
|
version = "2.5.0"
|
2019-12-09 11:39:44 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2022-06-18 23:59:43 +00:00
|
|
|
checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d"
|
2019-12-09 11:39:44 +00:00
|
|
|
|
2020-11-27 09:48:38 +00:00
|
|
|
[[package]]
|
|
|
|
name = "memoffset"
|
2021-12-22 06:17:14 +00:00
|
|
|
version = "0.6.5"
|
2020-11-27 09:48:38 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2021-12-22 06:17:14 +00:00
|
|
|
checksum = "5aa361d4faea93603064a027415f07bd8e1d5c88c9fbf68bf56a285428fd79ce"
|
2020-11-27 09:48:38 +00:00
|
|
|
dependencies = [
|
2022-02-10 04:12:03 +00:00
|
|
|
"autocfg 1.1.0",
|
2020-11-27 09:48:38 +00:00
|
|
|
]
|
|
|
|
|
2019-12-09 11:39:44 +00:00
|
|
|
[[package]]
|
|
|
|
name = "merkle_proof"
|
Initial work towards v0.2.0 (#924)
* Remove ping protocol
* Initial renaming of network services
* Correct rebasing relative to latest master
* Start updating types
* Adds HashMapDelay struct to utils
* Initial network restructure
* Network restructure. Adds new types for v0.2.0
* Removes build artefacts
* Shift validation to beacon chain
* Temporarily remove gossip validation
This is to be updated to match current optimisation efforts.
* Adds AggregateAndProof
* Begin rebuilding pubsub encoding/decoding
* Signature hacking
* Shift gossipsup decoding into eth2_libp2p
* Existing EF tests passing with fake_crypto
* Shifts block encoding/decoding into RPC
* Delete outdated API spec
* All release tests passing bar genesis state parsing
* Update and test YamlConfig
* Update to spec v0.10 compatible BLS
* Updates to BLS EF tests
* Add EF test for AggregateVerify
And delete unused hash2curve tests for uncompressed points
* Update EF tests to v0.10.1
* Use optional block root correctly in block proc
* Use genesis fork in deposit domain. All tests pass
* Fast aggregate verify test
* Update REST API docs
* Fix unused import
* Bump spec tags to v0.10.1
* Add `seconds_per_eth1_block` to chainspec
* Update to timestamp based eth1 voting scheme
* Return None from `get_votes_to_consider` if block cache is empty
* Handle overflows in `is_candidate_block`
* Revert to failing tests
* Fix eth1 data sets test
* Choose default vote according to spec
* Fix collect_valid_votes tests
* Fix `get_votes_to_consider` to choose all eligible blocks
* Uncomment winning_vote tests
* Add comments; remove unused code
* Reduce seconds_per_eth1_block for simulation
* Addressed review comments
* Add test for default vote case
* Fix logs
* Remove unused functions
* Meter default eth1 votes
* Fix comments
* Progress on attestation service
* Address review comments; remove unused dependency
* Initial work on removing libp2p lock
* Add LRU caches to store (rollup)
* Update attestation validation for DB changes (WIP)
* Initial version of should_forward_block
* Scaffold
* Progress on attestation validation
Also, consolidate prod+testing slot clocks so that they share much
of the same implementation and can both handle sub-slot time changes.
* Removes lock from libp2p service
* Completed network lock removal
* Finish(?) attestation processing
* Correct network termination future
* Add slot check to block check
* Correct fmt issues
* Remove Drop implementation for network service
* Add first attempt at attestation proc. re-write
* Add version 2 of attestation processing
* Minor fixes
* Add validator pubkey cache
* Make get_indexed_attestation take a committee
* Link signature processing into new attn verification
* First working version
* Ensure pubkey cache is updated
* Add more metrics, slight optimizations
* Clone committee cache during attestation processing
* Update shuffling cache during block processing
* Remove old commented-out code
* Fix shuffling cache insert bug
* Used indexed attestation in fork choice
* Restructure attn processing, add metrics
* Add more detailed metrics
* Tidy, fix failing tests
* Fix failing tests, tidy
* Address reviewers suggestions
* Disable/delete two outdated tests
* Modification of validator for subscriptions
* Add slot signing to validator client
* Further progress on validation subscription
* Adds necessary validator subscription functionality
* Add new Pubkeys struct to signature_sets
* Refactor with functional approach
* Update beacon chain
* Clean up validator <-> beacon node http types
* Add aggregator status to ValidatorDuty
* Impl Clone for manual slot clock
* Fix minor errors
* Further progress validator client subscription
* Initial subscription and aggregation handling
* Remove decompressed member from pubkey bytes
* Progress to modifying val client for attestation aggregation
* First draft of validator client upgrade for aggregate attestations
* Add hashmap for indices lookup
* Add state cache, remove store cache
* Only build the head committee cache
* Removes lock on a network channel
* Partially implement beacon node subscription http api
* Correct compilation issues
* Change `get_attesting_indices` to use Vec
* Fix failing test
* Partial implementation of timer
* Adds timer, removes exit_future, http api to op pool
* Partial multiple aggregate attestation handling
* Permits bulk messages accross gossipsub network channel
* Correct compile issues
* Improve gosispsub messaging and correct rest api helpers
* Added global gossipsub subscriptions
* Update validator subscriptions data structs
* Tidy
* Re-structure validator subscriptions
* Initial handling of subscriptions
* Re-structure network service
* Add pubkey cache persistence file
* Add more comments
* Integrate persistence file into builder
* Add pubkey cache tests
* Add HashSetDelay and introduce into attestation service
* Handles validator subscriptions
* Add data_dir to beacon chain builder
* Remove Option in pubkey cache persistence file
* Ensure consistency between datadir/data_dir
* Fix failing network test
* Peer subnet discovery gets queued for future subscriptions
* Reorganise attestation service functions
* Initial wiring of attestation service
* First draft of attestation service timing logic
* Correct minor typos
* Tidy
* Fix todos
* Improve tests
* Add PeerInfo to connected peers mapping
* Fix compile error
* Fix compile error from merge
* Split up block processing metrics
* Tidy
* Refactor get_pubkey_from_state
* Remove commented-out code
* Rename state_cache -> checkpoint_cache
* Rename Checkpoint -> Snapshot
* Tidy, add comments
* Tidy up find_head function
* Change some checkpoint -> snapshot
* Add tests
* Expose max_len
* Remove dead code
* Tidy
* Fix bug
* Add sync-speed metric
* Add first attempt at VerifiableBlock
* Start integrating into beacon chain
* Integrate VerifiableBlock
* Rename VerifableBlock -> PartialBlockVerification
* Add start of typed methods
* Add progress
* Add further progress
* Rename structs
* Add full block verification to block_processing.rs
* Further beacon chain integration
* Update checks for gossip
* Add todo
* Start adding segement verification
* Add passing chain segement test
* Initial integration with batch sync
* Minor changes
* Tidy, add more error checking
* Start adding chain_segment tests
* Finish invalid signature tests
* Include single and gossip verified blocks in tests
* Add gossip verification tests
* Start adding docs
* Finish adding comments to block_processing.rs
* Rename block_processing.rs -> block_verification
* Start removing old block processing code
* Fixes beacon_chain compilation
* Fix project-wide compile errors
* Remove old code
* Correct code to pass all tests
* Fix bug with beacon proposer index
* Fix shim for BlockProcessingError
* Only process one epoch at a time
* Fix loop in chain segment processing
* Correct tests from master merge
* Add caching for state.eth1_data_votes
* Add BeaconChain::validator_pubkey
* Revert "Add caching for state.eth1_data_votes"
This reverts commit cd73dcd6434fb8d8e6bf30c5356355598ea7b78e.
Co-authored-by: Grant Wuerker <gwuerker@gmail.com>
Co-authored-by: Michael Sproul <michael@sigmaprime.io>
Co-authored-by: Michael Sproul <micsproul@gmail.com>
Co-authored-by: pawan <pawandhananjay@gmail.com>
Co-authored-by: Paul Hauner <paul@paulhauner.com>
2020-03-17 06:24:44 +00:00
|
|
|
version = "0.2.0"
|
2019-12-09 11:39:44 +00:00
|
|
|
dependencies = [
|
2022-04-04 00:26:16 +00:00
|
|
|
"eth2_hashing",
|
Separate execution payloads in the DB (#3157)
## Proposed Changes
Reduce post-merge disk usage by not storing finalized execution payloads in Lighthouse's database.
:warning: **This is achieved in a backwards-incompatible way for networks that have already merged** :warning:. Kiln users and shadow fork enjoyers will be unable to downgrade after running the code from this PR. The upgrade migration may take several minutes to run, and can't be aborted after it begins.
The main changes are:
- New column in the database called `ExecPayload`, keyed by beacon block root.
- The `BeaconBlock` column now stores blinded blocks only.
- Lots of places that previously used full blocks now use blinded blocks, e.g. analytics APIs, block replay in the DB, etc.
- On finalization:
- `prune_abanonded_forks` deletes non-canonical payloads whilst deleting non-canonical blocks.
- `migrate_db` deletes finalized canonical payloads whilst deleting finalized states.
- Conversions between blinded and full blocks are implemented in a compositional way, duplicating some work from Sean's PR #3134.
- The execution layer has a new `get_payload_by_block_hash` method that reconstructs a payload using the EE's `eth_getBlockByHash` call.
- I've tested manually that it works on Kiln, using Geth and Nethermind.
- This isn't necessarily the most efficient method, and new engine APIs are being discussed to improve this: https://github.com/ethereum/execution-apis/pull/146.
- We're depending on the `ethers` master branch, due to lots of recent changes. We're also using a workaround for https://github.com/gakonst/ethers-rs/issues/1134.
- Payload reconstruction is used in the HTTP API via `BeaconChain::get_block`, which is now `async`. Due to the `async` fn, the `blocking_json` wrapper has been removed.
- Payload reconstruction is used in network RPC to serve blocks-by-{root,range} responses. Here the `async` adjustment is messier, although I think I've managed to come up with a reasonable compromise: the handlers take the `SendOnDrop` by value so that they can drop it on _task completion_ (after the `fn` returns). Still, this is introducing disk reads onto core executor threads, which may have a negative performance impact (thoughts appreciated).
## Additional Info
- [x] For performance it would be great to remove the cloning of full blocks when converting them to blinded blocks to write to disk. I'm going to experiment with a `put_block` API that takes the block by value, breaks it into a blinded block and a payload, stores the blinded block, and then re-assembles the full block for the caller.
- [x] We should measure the latency of blocks-by-root and blocks-by-range responses.
- [x] We should add integration tests that stress the payload reconstruction (basic tests done, issue for more extensive tests: https://github.com/sigp/lighthouse/issues/3159)
- [x] We should (manually) test the schema v9 migration from several prior versions, particularly as blocks have changed on disk and some migrations rely on being able to load blocks.
Co-authored-by: Paul Hauner <paul@paulhauner.com>
2022-05-12 00:42:17 +00:00
|
|
|
"ethereum-types 0.12.1",
|
2020-05-10 09:56:31 +00:00
|
|
|
"lazy_static",
|
2022-06-18 23:59:43 +00:00
|
|
|
"quickcheck",
|
2020-05-10 09:56:31 +00:00
|
|
|
"quickcheck_macros",
|
|
|
|
"safe_arith",
|
2019-12-09 11:39:44 +00:00
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "milagro_bls"
|
2021-03-16 03:11:51 +00:00
|
|
|
version = "1.4.2"
|
|
|
|
source = "git+https://github.com/sigp/milagro_bls?tag=v1.4.2#16655aa033175a90c10ef02aa144e2835de23aec"
|
2019-12-09 11:39:44 +00:00
|
|
|
dependencies = [
|
2020-05-10 09:56:31 +00:00
|
|
|
"amcl",
|
2020-10-28 22:19:38 +00:00
|
|
|
"hex",
|
2020-05-10 09:56:31 +00:00
|
|
|
"lazy_static",
|
|
|
|
"rand 0.7.3",
|
2020-05-17 11:16:48 +00:00
|
|
|
"zeroize",
|
2019-12-09 11:39:44 +00:00
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "mime"
|
2020-01-10 03:35:07 +00:00
|
|
|
version = "0.3.16"
|
2019-12-09 11:39:44 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2020-05-10 09:56:31 +00:00
|
|
|
checksum = "2a60c7ce501c71e03a9c9c0d35b861413ae925bd979cc7a4e30d060069aaac8d"
|
2019-12-09 11:39:44 +00:00
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "mime_guess"
|
2022-03-02 05:09:52 +00:00
|
|
|
version = "2.0.4"
|
2019-12-09 11:39:44 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2022-03-02 05:09:52 +00:00
|
|
|
checksum = "4192263c238a5f0d0c6bfd21f336a313a4ce1c450542449ca191bb657b4642ef"
|
2019-12-09 11:39:44 +00:00
|
|
|
dependencies = [
|
2020-12-09 01:34:58 +00:00
|
|
|
"mime",
|
|
|
|
"unicase",
|
2019-12-09 11:39:44 +00:00
|
|
|
]
|
|
|
|
|
2021-12-22 06:17:14 +00:00
|
|
|
[[package]]
|
|
|
|
name = "minimal-lexical"
|
|
|
|
version = "0.2.1"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a"
|
|
|
|
|
2020-07-06 01:55:56 +00:00
|
|
|
[[package]]
|
|
|
|
name = "miniz_oxide"
|
2022-06-18 23:59:43 +00:00
|
|
|
version = "0.5.3"
|
2020-07-06 01:55:56 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2022-06-18 23:59:43 +00:00
|
|
|
checksum = "6f5c75688da582b8ffc1f1799e9db273f32133c49e048f614d22ec3256773ccc"
|
2020-07-06 01:55:56 +00:00
|
|
|
dependencies = [
|
|
|
|
"adler",
|
|
|
|
]
|
|
|
|
|
2020-11-28 05:30:57 +00:00
|
|
|
[[package]]
|
|
|
|
name = "mio"
|
2022-07-05 23:36:42 +00:00
|
|
|
version = "0.8.4"
|
2020-11-28 05:30:57 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2022-07-05 23:36:42 +00:00
|
|
|
checksum = "57ee1c23c7c63b0c9250c339ffdc69255f110b298b901b9f6c82547b7b87caaf"
|
2020-11-28 05:30:57 +00:00
|
|
|
dependencies = [
|
|
|
|
"libc",
|
2020-12-09 01:34:58 +00:00
|
|
|
"log",
|
2022-03-31 07:52:23 +00:00
|
|
|
"wasi 0.11.0+wasi-snapshot-preview1",
|
2022-06-18 23:59:43 +00:00
|
|
|
"windows-sys",
|
2020-11-28 05:30:57 +00:00
|
|
|
]
|
|
|
|
|
2021-05-26 05:58:41 +00:00
|
|
|
[[package]]
|
|
|
|
name = "monitoring_api"
|
|
|
|
version = "0.1.0"
|
|
|
|
dependencies = [
|
|
|
|
"eth2",
|
|
|
|
"lazy_static",
|
|
|
|
"lighthouse_metrics",
|
|
|
|
"lighthouse_version",
|
|
|
|
"regex",
|
|
|
|
"reqwest",
|
|
|
|
"sensitive_url",
|
|
|
|
"serde",
|
|
|
|
"serde_derive",
|
|
|
|
"serde_json",
|
|
|
|
"slog",
|
|
|
|
"store",
|
|
|
|
"task_executor",
|
2021-08-17 01:00:24 +00:00
|
|
|
"tokio",
|
2021-05-26 05:58:41 +00:00
|
|
|
]
|
|
|
|
|
2021-06-03 01:11:33 +00:00
|
|
|
[[package]]
|
|
|
|
name = "multiaddr"
|
|
|
|
version = "0.13.0"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "48ee4ea82141951ac6379f964f71b20876d43712bea8faf6dd1a375e08a46499"
|
|
|
|
dependencies = [
|
|
|
|
"arrayref",
|
|
|
|
"bs58",
|
|
|
|
"byteorder",
|
|
|
|
"data-encoding",
|
2022-02-10 04:12:03 +00:00
|
|
|
"multihash 0.14.0",
|
|
|
|
"percent-encoding",
|
|
|
|
"serde",
|
|
|
|
"static_assertions",
|
|
|
|
"unsigned-varint 0.7.1",
|
|
|
|
"url",
|
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "multiaddr"
|
|
|
|
version = "0.14.0"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "3c580bfdd8803cce319b047d239559a22f809094aaea4ac13902a1fdcfcd4261"
|
|
|
|
dependencies = [
|
|
|
|
"arrayref",
|
|
|
|
"bs58",
|
|
|
|
"byteorder",
|
|
|
|
"data-encoding",
|
2022-04-04 00:26:16 +00:00
|
|
|
"multihash 0.16.2",
|
2021-06-03 01:11:33 +00:00
|
|
|
"percent-encoding",
|
|
|
|
"serde",
|
|
|
|
"static_assertions",
|
2021-11-18 05:08:42 +00:00
|
|
|
"unsigned-varint 0.7.1",
|
2021-06-03 01:11:33 +00:00
|
|
|
"url",
|
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "multihash"
|
|
|
|
version = "0.14.0"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "752a61cd890ff691b4411423d23816d5866dd5621e4d1c5687a53b94b5a979d8"
|
|
|
|
dependencies = [
|
2021-12-22 06:17:14 +00:00
|
|
|
"digest 0.9.0",
|
2021-07-13 00:48:33 +00:00
|
|
|
"generic-array",
|
2022-02-10 04:12:03 +00:00
|
|
|
"multihash-derive 0.7.2",
|
2022-01-11 01:35:56 +00:00
|
|
|
"sha2 0.9.9",
|
2021-11-18 05:08:42 +00:00
|
|
|
"unsigned-varint 0.7.1",
|
2021-06-03 01:11:33 +00:00
|
|
|
]
|
|
|
|
|
2022-02-10 04:12:03 +00:00
|
|
|
[[package]]
|
|
|
|
name = "multihash"
|
2022-04-04 00:26:16 +00:00
|
|
|
version = "0.16.2"
|
2022-02-10 04:12:03 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2022-04-04 00:26:16 +00:00
|
|
|
checksum = "e3db354f401db558759dfc1e568d010a5d4146f4d3f637be1275ec4a3cf09689"
|
2022-02-10 04:12:03 +00:00
|
|
|
dependencies = [
|
|
|
|
"core2",
|
2022-03-02 05:09:52 +00:00
|
|
|
"digest 0.10.3",
|
2022-02-10 04:12:03 +00:00
|
|
|
"multihash-derive 0.8.0",
|
2022-03-02 05:09:52 +00:00
|
|
|
"sha2 0.10.2",
|
2022-02-10 04:12:03 +00:00
|
|
|
"unsigned-varint 0.7.1",
|
|
|
|
]
|
|
|
|
|
2020-11-28 05:30:57 +00:00
|
|
|
[[package]]
|
|
|
|
name = "multihash-derive"
|
2021-07-05 00:54:17 +00:00
|
|
|
version = "0.7.2"
|
2020-11-28 05:30:57 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2021-07-05 00:54:17 +00:00
|
|
|
checksum = "424f6e86263cd5294cbd7f1e95746b95aca0e0d66bff31e5a40d6baa87b4aa99"
|
2020-11-28 05:30:57 +00:00
|
|
|
dependencies = [
|
|
|
|
"proc-macro-crate",
|
|
|
|
"proc-macro-error",
|
|
|
|
"proc-macro2",
|
|
|
|
"quote",
|
|
|
|
"syn",
|
|
|
|
"synstructure",
|
2020-05-17 11:16:48 +00:00
|
|
|
]
|
|
|
|
|
2022-02-10 04:12:03 +00:00
|
|
|
[[package]]
|
|
|
|
name = "multihash-derive"
|
|
|
|
version = "0.8.0"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "fc076939022111618a5026d3be019fd8b366e76314538ff9a1b59ffbcbf98bcd"
|
|
|
|
dependencies = [
|
|
|
|
"proc-macro-crate",
|
|
|
|
"proc-macro-error",
|
|
|
|
"proc-macro2",
|
|
|
|
"quote",
|
|
|
|
"syn",
|
|
|
|
"synstructure",
|
|
|
|
]
|
|
|
|
|
2020-05-17 11:16:48 +00:00
|
|
|
[[package]]
|
|
|
|
name = "multimap"
|
2021-05-04 00:44:05 +00:00
|
|
|
version = "0.8.3"
|
2020-05-17 11:16:48 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2021-05-04 00:44:05 +00:00
|
|
|
checksum = "e5ce46fe64a9d73be07dcbe690a38ce1b293be448fd8ce1e6c1b8062c9f72c6a"
|
2020-05-17 11:16:48 +00:00
|
|
|
|
2020-09-29 03:46:54 +00:00
|
|
|
[[package]]
|
|
|
|
name = "multipart"
|
2021-11-18 05:08:42 +00:00
|
|
|
version = "0.18.0"
|
2020-09-29 03:46:54 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2021-11-18 05:08:42 +00:00
|
|
|
checksum = "00dec633863867f29cb39df64a397cdf4a6354708ddd7759f70c7fb51c5f9182"
|
2020-09-29 03:46:54 +00:00
|
|
|
dependencies = [
|
|
|
|
"buf_redux",
|
|
|
|
"httparse",
|
2020-12-09 01:34:58 +00:00
|
|
|
"log",
|
|
|
|
"mime",
|
2020-09-29 03:46:54 +00:00
|
|
|
"mime_guess",
|
|
|
|
"quick-error",
|
2022-03-02 05:09:52 +00:00
|
|
|
"rand 0.8.5",
|
2020-09-29 03:46:54 +00:00
|
|
|
"safemem",
|
|
|
|
"tempfile",
|
|
|
|
"twoway",
|
|
|
|
]
|
|
|
|
|
2019-12-09 11:39:44 +00:00
|
|
|
[[package]]
|
|
|
|
name = "multistream-select"
|
2021-10-17 04:04:36 +00:00
|
|
|
version = "0.10.4"
|
2020-11-28 05:30:57 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2021-10-17 04:04:36 +00:00
|
|
|
checksum = "56a336acba8bc87c8876f6425407dbbe6c417bf478b22015f8fb0994ef3bc0ab"
|
2020-06-29 10:25:42 +00:00
|
|
|
dependencies = [
|
2021-10-29 01:59:29 +00:00
|
|
|
"bytes",
|
2021-07-15 00:53:59 +00:00
|
|
|
"futures",
|
|
|
|
"log",
|
2022-07-05 23:36:42 +00:00
|
|
|
"pin-project 1.0.11",
|
2021-07-15 00:53:59 +00:00
|
|
|
"smallvec",
|
2021-11-18 05:08:42 +00:00
|
|
|
"unsigned-varint 0.7.1",
|
2021-07-15 00:53:59 +00:00
|
|
|
]
|
|
|
|
|
2021-12-22 06:17:14 +00:00
|
|
|
[[package]]
|
|
|
|
name = "multistream-select"
|
|
|
|
version = "0.11.0"
|
2022-03-02 05:09:52 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "363a84be6453a70e63513660f4894ef815daf88e3356bffcda9ca27d810ce83b"
|
2021-12-22 06:17:14 +00:00
|
|
|
dependencies = [
|
|
|
|
"bytes",
|
|
|
|
"futures",
|
|
|
|
"log",
|
2022-07-05 23:36:42 +00:00
|
|
|
"pin-project 1.0.11",
|
2021-12-22 06:17:14 +00:00
|
|
|
"smallvec",
|
|
|
|
"unsigned-varint 0.7.1",
|
|
|
|
]
|
|
|
|
|
2019-12-09 11:39:44 +00:00
|
|
|
[[package]]
|
|
|
|
name = "native-tls"
|
2022-04-04 00:26:16 +00:00
|
|
|
version = "0.2.10"
|
2019-12-09 11:39:44 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2022-04-04 00:26:16 +00:00
|
|
|
checksum = "fd7e2f3618557f980e0b17e8856252eee3c97fa12c54dff0ca290fb6266ca4a9"
|
2019-12-09 11:39:44 +00:00
|
|
|
dependencies = [
|
2020-05-10 09:56:31 +00:00
|
|
|
"lazy_static",
|
|
|
|
"libc",
|
2020-12-09 01:34:58 +00:00
|
|
|
"log",
|
2020-05-10 09:56:31 +00:00
|
|
|
"openssl",
|
|
|
|
"openssl-probe",
|
|
|
|
"openssl-sys",
|
|
|
|
"schannel",
|
|
|
|
"security-framework",
|
|
|
|
"security-framework-sys",
|
|
|
|
"tempfile",
|
2019-12-09 11:39:44 +00:00
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "network"
|
2020-08-06 03:43:05 +00:00
|
|
|
version = "0.2.0"
|
2019-12-09 11:39:44 +00:00
|
|
|
dependencies = [
|
2020-05-10 09:56:31 +00:00
|
|
|
"beacon_chain",
|
2022-05-20 05:02:13 +00:00
|
|
|
"derivative",
|
Handle early blocks (#2155)
## Issue Addressed
NA
## Problem this PR addresses
There's an issue where Lighthouse is banning a lot of peers due to the following sequence of events:
1. Gossip block 0xabc arrives ~200ms early
- It is propagated across the network, with respect to [`MAXIMUM_GOSSIP_CLOCK_DISPARITY`](https://github.com/ethereum/eth2.0-specs/blob/v1.0.0/specs/phase0/p2p-interface.md#why-is-there-maximum_gossip_clock_disparity-when-validating-slot-ranges-of-messages-in-gossip-subnets).
- However, it is not imported to our database since the block is early.
2. Attestations for 0xabc arrive, but the block was not imported.
- The peer that sent the attestation is down-voted.
- Each unknown-block attestation causes a score loss of 1, the peer is banned at -100.
- When the peer is on an attestation subnet there can be hundreds of attestations, so the peer is banned quickly (before the missed block can be obtained via rpc).
## Potential solutions
I can think of three solutions to this:
1. Wait for attestation-queuing (#635) to arrive and solve this.
- Easy
- Not immediate fix.
- Whilst this would work, I don't think it's a perfect solution for this particular issue, rather (3) is better.
1. Allow importing blocks with a tolerance of `MAXIMUM_GOSSIP_CLOCK_DISPARITY`.
- Easy
- ~~I have implemented this, for now.~~
1. If a block is verified for gossip propagation (i.e., signature verified) and it's within `MAXIMUM_GOSSIP_CLOCK_DISPARITY`, then queue it to be processed at the start of the appropriate slot.
- More difficult
- Feels like the best solution, I will try to implement this.
**This PR takes approach (3).**
## Changes included
- Implement the `block_delay_queue`, based upon a [`DelayQueue`](https://docs.rs/tokio-util/0.6.3/tokio_util/time/delay_queue/struct.DelayQueue.html) which can store blocks until it's time to import them.
- Add a new `DelayedImportBlock` variant to the `beacon_processor::WorkEvent` enum to handle this new event.
- In the `BeaconProcessor`, refactor a `tokio::select!` to a struct with an explicit `Stream` implementation. I experienced some issues with `tokio::select!` in the block delay queue and I also found it hard to debug. I think this explicit implementation is nicer and functionally equivalent (apart from the fact that `tokio::select!` randomly chooses futures to poll, whereas now we're deterministic).
- Add a testing framework to the `beacon_processor` module that tests this new block delay logic. I also tested a handful of other operations in the beacon processor (attns, slashings, exits) since it was super easy to copy-pasta the code from the `http_api` tester.
- To implement these tests I added the concept of an optional `work_journal_tx` to the `BeaconProcessor` which will spit out a log of events. I used this in the tests to ensure that things were happening as I expect.
- The tests are a little racey, but it's hard to avoid that when testing timing-based code. If we see CI failures I can revise. I haven't observed *any* failures due to races on my machine or on CI yet.
- To assist with testing I allowed for directly setting the time on the `ManualSlotClock`.
- I gave the `beacon_processor::Worker` a `Toolbox` for two reasons; (a) it avoids changing tons of function sigs when you want to pass a new object to the worker and (b) it seemed cute.
2021-02-24 03:08:52 +00:00
|
|
|
"environment",
|
2020-05-10 09:56:31 +00:00
|
|
|
"error-chain",
|
2021-11-29 03:57:54 +00:00
|
|
|
"eth2_ssz",
|
|
|
|
"eth2_ssz_types",
|
2020-06-04 11:48:05 +00:00
|
|
|
"exit-future",
|
2020-05-10 09:56:31 +00:00
|
|
|
"fnv",
|
2021-07-09 03:20:24 +00:00
|
|
|
"futures",
|
2020-05-10 09:56:31 +00:00
|
|
|
"genesis",
|
2020-05-17 11:16:48 +00:00
|
|
|
"hashset_delay",
|
2020-10-28 22:19:38 +00:00
|
|
|
"hex",
|
2021-12-22 06:17:14 +00:00
|
|
|
"if-addrs 0.6.7",
|
2020-10-02 08:47:00 +00:00
|
|
|
"igd",
|
2021-08-17 01:00:24 +00:00
|
|
|
"itertools",
|
2020-05-10 09:56:31 +00:00
|
|
|
"lazy_static",
|
2020-05-17 11:16:48 +00:00
|
|
|
"lighthouse_metrics",
|
Rename eth2_libp2p to lighthouse_network (#2702)
## Description
The `eth2_libp2p` crate was originally named and designed to incorporate a simple libp2p integration into lighthouse. Since its origins the crates purpose has expanded dramatically. It now houses a lot more sophistication that is specific to lighthouse and no longer just a libp2p integration.
As of this writing it currently houses the following high-level lighthouse-specific logic:
- Lighthouse's implementation of the eth2 RPC protocol and specific encodings/decodings
- Integration and handling of ENRs with respect to libp2p and eth2
- Lighthouse's discovery logic, its integration with discv5 and logic about searching and handling peers.
- Lighthouse's peer manager - This is a large module handling various aspects of Lighthouse's network, such as peer scoring, handling pings and metadata, connection maintenance and recording, etc.
- Lighthouse's peer database - This is a collection of information stored for each individual peer which is specific to lighthouse. We store connection state, sync state, last seen ips and scores etc. The data stored for each peer is designed for various elements of the lighthouse code base such as syncing and the http api.
- Gossipsub scoring - This stores a collection of gossipsub 1.1 scoring mechanisms that are continuously analyssed and updated based on the ethereum 2 networks and how Lighthouse performs on these networks.
- Lighthouse specific types for managing gossipsub topics, sync status and ENR fields
- Lighthouse's network HTTP API metrics - A collection of metrics for lighthouse network monitoring
- Lighthouse's custom configuration of all networking protocols, RPC, gossipsub, discovery, identify and libp2p.
Therefore it makes sense to rename the crate to be more akin to its current purposes, simply that it manages the majority of Lighthouse's network stack. This PR renames this crate to `lighthouse_network`
Co-authored-by: Paul Hauner <paul@paulhauner.com>
2021-10-19 00:30:39 +00:00
|
|
|
"lighthouse_network",
|
2020-12-08 10:48:45 +00:00
|
|
|
"logging",
|
2020-08-18 03:54:09 +00:00
|
|
|
"lru_cache",
|
2020-05-10 09:56:31 +00:00
|
|
|
"matches",
|
2020-08-14 04:38:45 +00:00
|
|
|
"num_cpus",
|
2022-04-04 00:26:16 +00:00
|
|
|
"rand 0.8.5",
|
|
|
|
"rlp",
|
2020-05-10 09:56:31 +00:00
|
|
|
"slog",
|
2020-11-28 05:30:57 +00:00
|
|
|
"slog-async",
|
|
|
|
"slog-term",
|
2021-09-14 06:48:26 +00:00
|
|
|
"sloggers",
|
2020-05-10 09:56:31 +00:00
|
|
|
"slot_clock",
|
2020-12-09 01:34:58 +00:00
|
|
|
"smallvec",
|
2020-05-10 09:56:31 +00:00
|
|
|
"store",
|
2021-01-19 06:33:58 +00:00
|
|
|
"strum",
|
2020-10-05 07:45:54 +00:00
|
|
|
"task_executor",
|
2021-08-17 01:00:24 +00:00
|
|
|
"tokio",
|
2021-02-10 23:29:49 +00:00
|
|
|
"tokio-stream",
|
2022-06-18 23:59:43 +00:00
|
|
|
"tokio-util 0.6.10",
|
2020-05-10 09:56:31 +00:00
|
|
|
"types",
|
2019-12-09 11:39:44 +00:00
|
|
|
]
|
|
|
|
|
2021-11-18 05:08:42 +00:00
|
|
|
[[package]]
|
|
|
|
name = "nix"
|
2021-12-22 06:17:14 +00:00
|
|
|
version = "0.23.1"
|
2021-11-18 05:08:42 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2021-12-22 06:17:14 +00:00
|
|
|
checksum = "9f866317acbd3a240710c63f065ffb1e4fd466259045ccb504130b7f668f35c6"
|
2021-11-18 05:08:42 +00:00
|
|
|
dependencies = [
|
|
|
|
"bitflags",
|
|
|
|
"cc",
|
|
|
|
"cfg-if",
|
2020-10-23 04:16:33 +00:00
|
|
|
"libc",
|
2021-08-17 01:00:24 +00:00
|
|
|
"memoffset",
|
2020-10-23 04:16:33 +00:00
|
|
|
]
|
|
|
|
|
2022-06-18 23:59:43 +00:00
|
|
|
[[package]]
|
|
|
|
name = "nix"
|
|
|
|
version = "0.24.1"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "8f17df307904acd05aa8e32e97bb20f2a0df1728bbc2d771ae8f9a90463441e9"
|
|
|
|
dependencies = [
|
|
|
|
"bitflags",
|
|
|
|
"cfg-if",
|
|
|
|
"libc",
|
|
|
|
]
|
|
|
|
|
2019-12-09 11:39:44 +00:00
|
|
|
[[package]]
|
|
|
|
name = "node_test_rig"
|
Initial work towards v0.2.0 (#924)
* Remove ping protocol
* Initial renaming of network services
* Correct rebasing relative to latest master
* Start updating types
* Adds HashMapDelay struct to utils
* Initial network restructure
* Network restructure. Adds new types for v0.2.0
* Removes build artefacts
* Shift validation to beacon chain
* Temporarily remove gossip validation
This is to be updated to match current optimisation efforts.
* Adds AggregateAndProof
* Begin rebuilding pubsub encoding/decoding
* Signature hacking
* Shift gossipsup decoding into eth2_libp2p
* Existing EF tests passing with fake_crypto
* Shifts block encoding/decoding into RPC
* Delete outdated API spec
* All release tests passing bar genesis state parsing
* Update and test YamlConfig
* Update to spec v0.10 compatible BLS
* Updates to BLS EF tests
* Add EF test for AggregateVerify
And delete unused hash2curve tests for uncompressed points
* Update EF tests to v0.10.1
* Use optional block root correctly in block proc
* Use genesis fork in deposit domain. All tests pass
* Fast aggregate verify test
* Update REST API docs
* Fix unused import
* Bump spec tags to v0.10.1
* Add `seconds_per_eth1_block` to chainspec
* Update to timestamp based eth1 voting scheme
* Return None from `get_votes_to_consider` if block cache is empty
* Handle overflows in `is_candidate_block`
* Revert to failing tests
* Fix eth1 data sets test
* Choose default vote according to spec
* Fix collect_valid_votes tests
* Fix `get_votes_to_consider` to choose all eligible blocks
* Uncomment winning_vote tests
* Add comments; remove unused code
* Reduce seconds_per_eth1_block for simulation
* Addressed review comments
* Add test for default vote case
* Fix logs
* Remove unused functions
* Meter default eth1 votes
* Fix comments
* Progress on attestation service
* Address review comments; remove unused dependency
* Initial work on removing libp2p lock
* Add LRU caches to store (rollup)
* Update attestation validation for DB changes (WIP)
* Initial version of should_forward_block
* Scaffold
* Progress on attestation validation
Also, consolidate prod+testing slot clocks so that they share much
of the same implementation and can both handle sub-slot time changes.
* Removes lock from libp2p service
* Completed network lock removal
* Finish(?) attestation processing
* Correct network termination future
* Add slot check to block check
* Correct fmt issues
* Remove Drop implementation for network service
* Add first attempt at attestation proc. re-write
* Add version 2 of attestation processing
* Minor fixes
* Add validator pubkey cache
* Make get_indexed_attestation take a committee
* Link signature processing into new attn verification
* First working version
* Ensure pubkey cache is updated
* Add more metrics, slight optimizations
* Clone committee cache during attestation processing
* Update shuffling cache during block processing
* Remove old commented-out code
* Fix shuffling cache insert bug
* Used indexed attestation in fork choice
* Restructure attn processing, add metrics
* Add more detailed metrics
* Tidy, fix failing tests
* Fix failing tests, tidy
* Address reviewers suggestions
* Disable/delete two outdated tests
* Modification of validator for subscriptions
* Add slot signing to validator client
* Further progress on validation subscription
* Adds necessary validator subscription functionality
* Add new Pubkeys struct to signature_sets
* Refactor with functional approach
* Update beacon chain
* Clean up validator <-> beacon node http types
* Add aggregator status to ValidatorDuty
* Impl Clone for manual slot clock
* Fix minor errors
* Further progress validator client subscription
* Initial subscription and aggregation handling
* Remove decompressed member from pubkey bytes
* Progress to modifying val client for attestation aggregation
* First draft of validator client upgrade for aggregate attestations
* Add hashmap for indices lookup
* Add state cache, remove store cache
* Only build the head committee cache
* Removes lock on a network channel
* Partially implement beacon node subscription http api
* Correct compilation issues
* Change `get_attesting_indices` to use Vec
* Fix failing test
* Partial implementation of timer
* Adds timer, removes exit_future, http api to op pool
* Partial multiple aggregate attestation handling
* Permits bulk messages accross gossipsub network channel
* Correct compile issues
* Improve gosispsub messaging and correct rest api helpers
* Added global gossipsub subscriptions
* Update validator subscriptions data structs
* Tidy
* Re-structure validator subscriptions
* Initial handling of subscriptions
* Re-structure network service
* Add pubkey cache persistence file
* Add more comments
* Integrate persistence file into builder
* Add pubkey cache tests
* Add HashSetDelay and introduce into attestation service
* Handles validator subscriptions
* Add data_dir to beacon chain builder
* Remove Option in pubkey cache persistence file
* Ensure consistency between datadir/data_dir
* Fix failing network test
* Peer subnet discovery gets queued for future subscriptions
* Reorganise attestation service functions
* Initial wiring of attestation service
* First draft of attestation service timing logic
* Correct minor typos
* Tidy
* Fix todos
* Improve tests
* Add PeerInfo to connected peers mapping
* Fix compile error
* Fix compile error from merge
* Split up block processing metrics
* Tidy
* Refactor get_pubkey_from_state
* Remove commented-out code
* Rename state_cache -> checkpoint_cache
* Rename Checkpoint -> Snapshot
* Tidy, add comments
* Tidy up find_head function
* Change some checkpoint -> snapshot
* Add tests
* Expose max_len
* Remove dead code
* Tidy
* Fix bug
* Add sync-speed metric
* Add first attempt at VerifiableBlock
* Start integrating into beacon chain
* Integrate VerifiableBlock
* Rename VerifableBlock -> PartialBlockVerification
* Add start of typed methods
* Add progress
* Add further progress
* Rename structs
* Add full block verification to block_processing.rs
* Further beacon chain integration
* Update checks for gossip
* Add todo
* Start adding segement verification
* Add passing chain segement test
* Initial integration with batch sync
* Minor changes
* Tidy, add more error checking
* Start adding chain_segment tests
* Finish invalid signature tests
* Include single and gossip verified blocks in tests
* Add gossip verification tests
* Start adding docs
* Finish adding comments to block_processing.rs
* Rename block_processing.rs -> block_verification
* Start removing old block processing code
* Fixes beacon_chain compilation
* Fix project-wide compile errors
* Remove old code
* Correct code to pass all tests
* Fix bug with beacon proposer index
* Fix shim for BlockProcessingError
* Only process one epoch at a time
* Fix loop in chain segment processing
* Correct tests from master merge
* Add caching for state.eth1_data_votes
* Add BeaconChain::validator_pubkey
* Revert "Add caching for state.eth1_data_votes"
This reverts commit cd73dcd6434fb8d8e6bf30c5356355598ea7b78e.
Co-authored-by: Grant Wuerker <gwuerker@gmail.com>
Co-authored-by: Michael Sproul <michael@sigmaprime.io>
Co-authored-by: Michael Sproul <micsproul@gmail.com>
Co-authored-by: pawan <pawandhananjay@gmail.com>
Co-authored-by: Paul Hauner <paul@paulhauner.com>
2020-03-17 06:24:44 +00:00
|
|
|
version = "0.2.0"
|
2019-12-09 11:39:44 +00:00
|
|
|
dependencies = [
|
2020-05-10 09:56:31 +00:00
|
|
|
"beacon_node",
|
|
|
|
"environment",
|
2020-09-29 03:46:54 +00:00
|
|
|
"eth2",
|
2022-07-18 23:15:40 +00:00
|
|
|
"execution_layer",
|
2021-05-04 01:59:51 +00:00
|
|
|
"sensitive_url",
|
2021-01-06 06:36:11 +00:00
|
|
|
"tempfile",
|
2020-05-10 09:56:31 +00:00
|
|
|
"types",
|
|
|
|
"validator_client",
|
Wallet-based, encrypted key management (#1138)
* Update hashmap hashset to stable futures
* Adds panic test to hashset delay
* Port remote_beacon_node to stable futures
* Fix lcli merge conflicts
* Non rpc stuff compiles
* Remove padding
* Add error enum, zeroize more things
* Fix comment
* protocol.rs compiles
* Port websockets, timer and notifier to stable futures (#1035)
* Fix lcli
* Port timer to stable futures
* Fix timer
* Port websocket_server to stable futures
* Port notifier to stable futures
* Add TODOS
* Port remote_beacon_node to stable futures
* Partial eth2-libp2p stable future upgrade
* Finished first round of fighting RPC types
* Further progress towards porting eth2-libp2p adds caching to discovery
* Update behaviour
* Add keystore builder
* Remove keystore stuff from val client
* Add more tests, comments
* RPC handler to stable futures
* Update RPC to master libp2p
* Add more comments, test vectors
* Network service additions
* Progress on improving JSON validation
* More JSON verification
* Start moving JSON into own mod
* Remove old code
* Add more tests, reader/writers
* Tidy
* Move keystore into own file
* Move more logic into keystore file
* Tidy
* Tidy
* Fix the fallback transport construction (#1102)
* Allow for odd-character hex
* Correct warning
* Remove hashmap delay
* Compiling version of eth2-libp2p
* Update all crates versions
* Fix conversion function and add tests (#1113)
* Add more json missing field checks
* Use scrypt by default
* Tidy, address comments
* Test path and uuid in vectors
* Fix comment
* Add checks for kdf params
* Enforce empty kdf message
* Port validator_client to stable futures (#1114)
* Add PH & MS slot clock changes
* Account for genesis time
* Add progress on duties refactor
* Add simple is_aggregator bool to val subscription
* Start work on attestation_verification.rs
* Add progress on ObservedAttestations
* Progress with ObservedAttestations
* Fix tests
* Add observed attestations to the beacon chain
* Add attestation observation to processing code
* Add progress on attestation verification
* Add first draft of ObservedAttesters
* Add more tests
* Add observed attesters to beacon chain
* Add observers to attestation processing
* Add more attestation verification
* Create ObservedAggregators map
* Remove commented-out code
* Add observed aggregators into chain
* Add progress
* Finish adding features to attestation verification
* Ensure beacon chain compiles
* Link attn verification into chain
* Integrate new attn verification in chain
* Remove old attestation processing code
* Start trying to fix beacon_chain tests
* Split adding into pools into two functions
* Add aggregation to harness
* Get test harness working again
* Adjust the number of aggregators for test harness
* Fix edge-case in harness
* Integrate new attn processing in network
* Fix compile bug in validator_client
* Update validator API endpoints
* Fix aggreagation in test harness
* Fix enum thing
* Fix attestation observation bug:
* Patch failing API tests
* Start adding comments to attestation verification
* Remove unused attestation field
* Unify "is block known" logic
* Update comments
* Supress fork choice errors for network processing
* Add todos
* Tidy
* Add gossip attn tests
* Disallow test harness to produce old attns
* Comment out in-progress tests
* Partially address pruning tests
* Fix failing store test
* Add aggregate tests
* Add comments about which spec conditions we check
* Dont re-aggregate
* Split apart test harness attn production
* Fix compile error in network
* Make progress on commented-out test
* Fix skipping attestation test
* Add fork choice verification tests
* Tidy attn tests, remove dead code
* Remove some accidentally added code
* Fix clippy lint
* Rename test file
* Add block tests, add cheap block proposer check
* Rename block testing file
* Add observed_block_producers
* Tidy
* Switch around block signature verification
* Finish block testing
* Remove gossip from signature tests
* First pass of self review
* Fix deviation in spec
* Update test spec tags
* Start moving over to hashset
* Finish moving observed attesters to hashmap
* Move aggregation pool over to hashmap
* Make fc attn borrow again
* Fix rest_api compile error
* Fix missing comments
* Fix monster test
* Uncomment increasing slots test
* Address remaining comments
* Remove unsafe, use cfg test
* Remove cfg test flag
* Fix dodgy comment
* Revert "Update hashmap hashset to stable futures"
This reverts commit d432378a3cc5cd67fc29c0b15b96b886c1323554.
* Revert "Adds panic test to hashset delay"
This reverts commit 281502396fc5b90d9c421a309c2c056982c9525b.
* Ported attestation_service
* Ported duties_service
* Ported fork_service
* More ports
* Port block_service
* Minor fixes
* VC compiles
* Update TODOS
* Borrow self where possible
* Ignore aggregates that are already known.
* Unify aggregator modulo logic
* Fix typo in logs
* Refactor validator subscription logic
* Avoid reproducing selection proof
* Skip HTTP call if no subscriptions
* Rename DutyAndState -> DutyAndProof
* Tidy logs
* Print root as dbg
* Fix compile errors in tests
* Fix compile error in test
* Re-Fix attestation and duties service
* Minor fixes
Co-authored-by: Paul Hauner <paul@paulhauner.com>
* Expose json_keystore mod
* First commits on path derivation
* Progress with implementation
* More progress
* Passing intermediate test vectors
* Tidy, add comments
* Add DerivedKey structs
* Move key derivation into own crate
* Add zeroize structs
* Return error for empty seed
* Add tests
* Tidy
* First commits on path derivation
* Progress with implementation
* Move key derivation into own crate
* Start defining JSON wallet
* Add progress
* Split out encrypt/decrypt
* First commits on path derivation
* Progress with implementation
* More progress
* Passing intermediate test vectors
* Tidy, add comments
* Add DerivedKey structs
* Move key derivation into own crate
* Add zeroize structs
* Return error for empty seed
* Add tests
* Tidy
* Add progress
* Replace some password usage with slice
* First commits on path derivation
* Progress with implementation
* More progress
* Passing intermediate test vectors
* Tidy, add comments
* Add DerivedKey structs
* Move key derivation into own crate
* Add zeroize structs
* Return error for empty seed
* Add tests
* Tidy
* Add progress
* Expose PlainText struct
* First commits on path derivation
* Progress with implementation
* More progress
* Passing intermediate test vectors
* Tidy, add comments
* Add DerivedKey structs
* Move key derivation into own crate
* Add zeroize structs
* Return error for empty seed
* Add tests
* Tidy
* Add builder
* Expose consts, remove Password
* Minor progress
* Expose SALT_SIZE
* First compiling version
* Add test vectors
* Network crate update to stable futures
* Move dbg assert statement
* Port account_manager to stable futures (#1121)
* Port account_manager to stable futures
* Run async fns in tokio environment
* Port rest_api crate to stable futures (#1118)
* Port rest_api lib to stable futures
* Reduce tokio features
* Update notifier to stable futures
* Builder update
* Further updates
* Add mnemonic, tidy
* Convert self referential async functions
* Tidy
* Add testing
* Add first attempt at validator_dir
* Present pubkey field
* stable futures fixes (#1124)
* Fix eth1 update functions
* Fix genesis and client
* Fix beacon node lib
* Return appropriate runtimes from environment
* Fix test rig
* Refactor eth1 service update
* Upgrade simulator to stable futures
* Lighthouse compiles on stable futures
* Add first pass of wallet manager
* Progress with CLI
* Remove println debugging statement
* Tidy output
* Tidy 600 perms
* Update libp2p service, start rpc test upgrade
* Add validator creation flow
* Update network crate for new libp2p
* Start tidying, adding comments
* Update tokio::codec to futures_codec (#1128)
* Further work towards RPC corrections
* Correct http timeout and network service select
* Add wallet mgr testing
* Shift LockedWallet into own file
* Add comments to fs
* Start integration into VC
* Use tokio runtime for libp2p
* Revert "Update tokio::codec to futures_codec (#1128)"
This reverts commit e57aea924acf5cbabdcea18895ac07e38a425ed7.
* Upgrade RPC libp2p tests
* Upgrade secio fallback test
* Add lcli keypair upgrade command
* Upgrade gossipsub examples
* Clean up RPC protocol
* Test fixes (#1133)
* Correct websocket timeout and run on os thread
* Fix network test
* Add --secrets-dir to VC
* Remove --legacy-keys from VC
* Clean up PR
* Correct tokio tcp move attestation service tests
* Upgrade attestation service tests
* Fix sim
* Correct network test
* Correct genesis test
* Start docs
* Add progress for validator generation
* Tidy error messages
* Test corrections
* Log info when block is received
* Modify logs and update attester service events
* Stable futures: fixes to vc, eth1 and account manager (#1142)
* Add local testnet scripts
* Remove whiteblock script
* Rename local testnet script
* Move spawns onto handle
* Fix VC panic
* Initial fix to block production issue
* Tidy block producer fix
* Tidy further
* Add local testnet clean script
* Run cargo fmt
* Tidy duties service
* Tidy fork service
* Tidy ForkService
* Tidy AttestationService
* Tidy notifier
* Ensure await is not suppressed in eth1
* Ensure await is not suppressed in account_manager
* Use .ok() instead of .unwrap_or(())
* RPC decoding test for proto
* Update discv5 and eth2-libp2p deps
* Run cargo fmt
* Pre-build keystores for sim
* Fix lcli double runtime issue (#1144)
* Handle stream termination and dialing peer errors
* Correct peer_info variant types
* Add progress on new deposit flow
* Remove unnecessary warnings
* Handle subnet unsubscription removal and improve logigng
* Add logs around ping
* Upgrade discv5 and improve logging
* Handle peer connection status for multiple connections
* Improve network service logging
* Add more incomplete progress
* Improve logging around peer manager
* Upgrade swarm poll centralise peer management
* Identify clients on error
* Fix `remove_peer` in sync (#1150)
* remove_peer removes from all chains
* Remove logs
* Fix early return from loop
* Improved logging, fix panic
* Partially correct tests
* Add deposit command
* Remove old validator directory
* Start adding AM tests
* Stable futures: Vc sync (#1149)
* Improve syncing heuristic
* Add comments
* Use safer method for tolerance
* Fix tests
* Binary testing progress
* Progress with CLI tests
* Use constants for flags
* More account manager testing
* Improve CLI tests
* Move upgrade-legacy-keypairs into account man
* Use rayon for VC key generation
* Add comments to `validator_dir`
* Add testing to validator_dir
* Add fix to eth1-sim
* Check errors in eth1-sim
* Fix mutability issue
* Ensure password file ends in .pass
* Add more tests to wallet manager
* Tidy deposit
* Tidy account manager
* Tidy account manager
* Remove panic
* Generate keypairs earlier in sim
* Tidy eth1-sime
* Try to fix eth1 sim
* Address review comments
* Fix typo in CLI command
* Update docs
* Disable eth1 sim
* Remove eth1 sim completely
Co-authored-by: Age Manning <Age@AgeManning.com>
Co-authored-by: pawanjay176 <pawandhananjay@gmail.com>
2020-05-18 09:01:45 +00:00
|
|
|
"validator_dir",
|
2019-12-09 11:39:44 +00:00
|
|
|
]
|
|
|
|
|
2020-11-06 04:14:14 +00:00
|
|
|
[[package]]
|
|
|
|
name = "nohash-hasher"
|
|
|
|
version = "0.2.0"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "2bf50223579dc7cdcfb3bfcacf7069ff68243f8c363f62ffa99cf000a6b9c451"
|
|
|
|
|
2020-05-29 02:03:30 +00:00
|
|
|
[[package]]
|
|
|
|
name = "nom"
|
|
|
|
version = "2.2.1"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "cf51a729ecf40266a2368ad335a5fdde43471f545a967109cd62146ecf8b66ff"
|
|
|
|
|
2021-12-21 08:23:17 +00:00
|
|
|
[[package]]
|
|
|
|
name = "nom"
|
2022-03-31 07:52:23 +00:00
|
|
|
version = "7.1.1"
|
2021-12-21 08:23:17 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2022-03-31 07:52:23 +00:00
|
|
|
checksum = "a8903e5a29a317527874d0402f867152a3d21c908bb0b933e416c65e301d4c36"
|
2021-12-21 08:23:17 +00:00
|
|
|
dependencies = [
|
|
|
|
"memchr",
|
2021-12-22 06:17:14 +00:00
|
|
|
"minimal-lexical",
|
2021-12-21 08:23:17 +00:00
|
|
|
]
|
|
|
|
|
2019-12-09 11:39:44 +00:00
|
|
|
[[package]]
|
|
|
|
name = "num-bigint"
|
2021-11-18 05:08:42 +00:00
|
|
|
version = "0.4.3"
|
2019-12-09 11:39:44 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2021-11-18 05:08:42 +00:00
|
|
|
checksum = "f93ab6289c7b344a8a9f60f88d80aa20032336fe78da341afc91c8a2341fc75f"
|
2019-12-09 11:39:44 +00:00
|
|
|
dependencies = [
|
2022-02-10 04:12:03 +00:00
|
|
|
"autocfg 1.1.0",
|
2020-05-10 09:56:31 +00:00
|
|
|
"num-integer",
|
|
|
|
"num-traits",
|
2019-12-09 11:39:44 +00:00
|
|
|
]
|
|
|
|
|
2020-05-11 08:43:43 +00:00
|
|
|
[[package]]
|
|
|
|
name = "num-bigint-dig"
|
2020-12-07 08:20:33 +00:00
|
|
|
version = "0.6.1"
|
2020-05-11 08:43:43 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2020-12-07 08:20:33 +00:00
|
|
|
checksum = "5d51546d704f52ef14b3c962b5776e53d5b862e5790e40a350d366c209bd7f7a"
|
2020-05-11 08:43:43 +00:00
|
|
|
dependencies = [
|
2022-02-10 04:12:03 +00:00
|
|
|
"autocfg 0.1.8",
|
2020-05-17 11:16:48 +00:00
|
|
|
"byteorder",
|
2020-05-11 08:43:43 +00:00
|
|
|
"lazy_static",
|
|
|
|
"libm",
|
|
|
|
"num-integer",
|
|
|
|
"num-iter",
|
|
|
|
"num-traits",
|
|
|
|
"rand 0.7.3",
|
|
|
|
"serde",
|
2020-12-09 01:34:58 +00:00
|
|
|
"smallvec",
|
2020-05-17 11:16:48 +00:00
|
|
|
"zeroize",
|
2020-05-11 08:43:43 +00:00
|
|
|
]
|
|
|
|
|
2019-12-09 11:39:44 +00:00
|
|
|
[[package]]
|
|
|
|
name = "num-integer"
|
2022-06-18 23:59:43 +00:00
|
|
|
version = "0.1.45"
|
2019-12-09 11:39:44 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2022-06-18 23:59:43 +00:00
|
|
|
checksum = "225d3389fb3509a24c93f5c29eb6bde2586b98d9f016636dff58d7c6f7569cd9"
|
2019-12-09 11:39:44 +00:00
|
|
|
dependencies = [
|
2022-02-10 04:12:03 +00:00
|
|
|
"autocfg 1.1.0",
|
2020-05-10 09:56:31 +00:00
|
|
|
"num-traits",
|
2019-12-09 11:39:44 +00:00
|
|
|
]
|
|
|
|
|
2020-05-11 08:43:43 +00:00
|
|
|
[[package]]
|
|
|
|
name = "num-iter"
|
2022-06-18 23:59:43 +00:00
|
|
|
version = "0.1.43"
|
2020-05-11 08:43:43 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2022-06-18 23:59:43 +00:00
|
|
|
checksum = "7d03e6c028c5dc5cac6e2dec0efda81fc887605bb3d884578bb6d6bf7514e252"
|
2020-05-11 08:43:43 +00:00
|
|
|
dependencies = [
|
2022-02-10 04:12:03 +00:00
|
|
|
"autocfg 1.1.0",
|
2020-05-11 08:43:43 +00:00
|
|
|
"num-integer",
|
|
|
|
"num-traits",
|
|
|
|
]
|
|
|
|
|
2019-12-09 11:39:44 +00:00
|
|
|
[[package]]
|
|
|
|
name = "num-traits"
|
2022-06-18 23:59:43 +00:00
|
|
|
version = "0.2.15"
|
2019-12-09 11:39:44 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2022-06-18 23:59:43 +00:00
|
|
|
checksum = "578ede34cf02f8924ab9447f50c28075b4d3e5b269972345e7e0372b38c6cdcd"
|
2019-12-09 11:39:44 +00:00
|
|
|
dependencies = [
|
2022-02-10 04:12:03 +00:00
|
|
|
"autocfg 1.1.0",
|
2019-12-09 11:39:44 +00:00
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "num_cpus"
|
2021-12-22 06:17:14 +00:00
|
|
|
version = "1.13.1"
|
2019-12-09 11:39:44 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2021-12-22 06:17:14 +00:00
|
|
|
checksum = "19e64526ebdee182341572e50e9ad03965aa510cd94427a4549448f285e957a1"
|
2019-12-09 11:39:44 +00:00
|
|
|
dependencies = [
|
2020-05-10 09:56:31 +00:00
|
|
|
"hermit-abi",
|
|
|
|
"libc",
|
2019-12-09 11:39:44 +00:00
|
|
|
]
|
|
|
|
|
2022-02-01 23:53:53 +00:00
|
|
|
[[package]]
|
|
|
|
name = "num_threads"
|
2022-06-18 23:59:43 +00:00
|
|
|
version = "0.1.6"
|
2022-02-01 23:53:53 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2022-06-18 23:59:43 +00:00
|
|
|
checksum = "2819ce041d2ee131036f4fc9d6ae7ae125a3a40e97ba64d04fe799ad9dabbb44"
|
2022-02-01 23:53:53 +00:00
|
|
|
dependencies = [
|
|
|
|
"libc",
|
|
|
|
]
|
|
|
|
|
2020-05-26 20:34:15 +00:00
|
|
|
[[package]]
|
|
|
|
name = "object"
|
2022-06-18 23:59:43 +00:00
|
|
|
version = "0.28.4"
|
2020-05-26 20:34:15 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2022-06-18 23:59:43 +00:00
|
|
|
checksum = "e42c982f2d955fac81dd7e1d0e1426a7d702acd9c98d19ab01083a6a0328c424"
|
2021-07-05 00:54:17 +00:00
|
|
|
dependencies = [
|
|
|
|
"memchr",
|
|
|
|
]
|
2020-05-26 20:34:15 +00:00
|
|
|
|
EIP-2386 (draft): Eth2 wallet (#1117)
* Add test to understand flow of key storage
* First commit
* Committing to save trait stuff
* Working naive design
* Add keystore struct
* Move keystore files into their own module
* Add serde (de)serialize_with magic
* Add keystore test
* Fix tests
* Add comments and minor fixes
* Pass optional params to `to_keystore` function
* Add `path` field to keystore
* Add function to read Keystore from file
* Add test vectors and fix Version serialization
* Checksum params is empty object
* Add public key to Keystore
* Add function for saving keystore into file
* Deleted account_manager main.rs
* Move keystore module to validator_client
* Add save_keystore method to validator_directory
* Add load_keystore function. Minor refactorings
* Fixed dependencies
* Address some review comments
* Add Password newtype; derive Zeroize
* Fix test
* Move keystore into own crate
* Remove padding
* Add error enum, zeroize more things
* Fix comment
* Add keystore builder
* Remove keystore stuff from val client
* Add more tests, comments
* Add more comments, test vectors
* Progress on improving JSON validation
* More JSON verification
* Start moving JSON into own mod
* Remove old code
* Add more tests, reader/writers
* Tidy
* Move keystore into own file
* Move more logic into keystore file
* Tidy
* Tidy
* Allow for odd-character hex
* Add more json missing field checks
* Use scrypt by default
* Tidy, address comments
* Test path and uuid in vectors
* Fix comment
* Add checks for kdf params
* Enforce empty kdf message
* Expose json_keystore mod
* First commits on path derivation
* Progress with implementation
* More progress
* Passing intermediate test vectors
* Tidy, add comments
* Add DerivedKey structs
* Move key derivation into own crate
* Add zeroize structs
* Return error for empty seed
* Add tests
* Tidy
* First commits on path derivation
* Progress with implementation
* Move key derivation into own crate
* Start defining JSON wallet
* Add progress
* Split out encrypt/decrypt
* First commits on path derivation
* Progress with implementation
* More progress
* Passing intermediate test vectors
* Tidy, add comments
* Add DerivedKey structs
* Move key derivation into own crate
* Add zeroize structs
* Return error for empty seed
* Add tests
* Tidy
* Add progress
* Replace some password usage with slice
* First commits on path derivation
* Progress with implementation
* More progress
* Passing intermediate test vectors
* Tidy, add comments
* Add DerivedKey structs
* Move key derivation into own crate
* Add zeroize structs
* Return error for empty seed
* Add tests
* Tidy
* Add progress
* Expose PlainText struct
* First commits on path derivation
* Progress with implementation
* More progress
* Passing intermediate test vectors
* Tidy, add comments
* Add DerivedKey structs
* Move key derivation into own crate
* Add zeroize structs
* Return error for empty seed
* Add tests
* Tidy
* Add builder
* Expose consts, remove Password
* Minor progress
* Expose SALT_SIZE
* First compiling version
* Add test vectors
* Move dbg assert statement
* Add mnemonic, tidy
* Tidy
* Add testing
* Fix broken test
* Address review comments
Co-authored-by: pawan <pawandhananjay@gmail.com>
2020-05-11 22:54:59 +00:00
|
|
|
[[package]]
|
|
|
|
name = "once_cell"
|
2022-07-05 23:36:42 +00:00
|
|
|
version = "1.13.0"
|
EIP-2386 (draft): Eth2 wallet (#1117)
* Add test to understand flow of key storage
* First commit
* Committing to save trait stuff
* Working naive design
* Add keystore struct
* Move keystore files into their own module
* Add serde (de)serialize_with magic
* Add keystore test
* Fix tests
* Add comments and minor fixes
* Pass optional params to `to_keystore` function
* Add `path` field to keystore
* Add function to read Keystore from file
* Add test vectors and fix Version serialization
* Checksum params is empty object
* Add public key to Keystore
* Add function for saving keystore into file
* Deleted account_manager main.rs
* Move keystore module to validator_client
* Add save_keystore method to validator_directory
* Add load_keystore function. Minor refactorings
* Fixed dependencies
* Address some review comments
* Add Password newtype; derive Zeroize
* Fix test
* Move keystore into own crate
* Remove padding
* Add error enum, zeroize more things
* Fix comment
* Add keystore builder
* Remove keystore stuff from val client
* Add more tests, comments
* Add more comments, test vectors
* Progress on improving JSON validation
* More JSON verification
* Start moving JSON into own mod
* Remove old code
* Add more tests, reader/writers
* Tidy
* Move keystore into own file
* Move more logic into keystore file
* Tidy
* Tidy
* Allow for odd-character hex
* Add more json missing field checks
* Use scrypt by default
* Tidy, address comments
* Test path and uuid in vectors
* Fix comment
* Add checks for kdf params
* Enforce empty kdf message
* Expose json_keystore mod
* First commits on path derivation
* Progress with implementation
* More progress
* Passing intermediate test vectors
* Tidy, add comments
* Add DerivedKey structs
* Move key derivation into own crate
* Add zeroize structs
* Return error for empty seed
* Add tests
* Tidy
* First commits on path derivation
* Progress with implementation
* Move key derivation into own crate
* Start defining JSON wallet
* Add progress
* Split out encrypt/decrypt
* First commits on path derivation
* Progress with implementation
* More progress
* Passing intermediate test vectors
* Tidy, add comments
* Add DerivedKey structs
* Move key derivation into own crate
* Add zeroize structs
* Return error for empty seed
* Add tests
* Tidy
* Add progress
* Replace some password usage with slice
* First commits on path derivation
* Progress with implementation
* More progress
* Passing intermediate test vectors
* Tidy, add comments
* Add DerivedKey structs
* Move key derivation into own crate
* Add zeroize structs
* Return error for empty seed
* Add tests
* Tidy
* Add progress
* Expose PlainText struct
* First commits on path derivation
* Progress with implementation
* More progress
* Passing intermediate test vectors
* Tidy, add comments
* Add DerivedKey structs
* Move key derivation into own crate
* Add zeroize structs
* Return error for empty seed
* Add tests
* Tidy
* Add builder
* Expose consts, remove Password
* Minor progress
* Expose SALT_SIZE
* First compiling version
* Add test vectors
* Move dbg assert statement
* Add mnemonic, tidy
* Tidy
* Add testing
* Fix broken test
* Address review comments
Co-authored-by: pawan <pawandhananjay@gmail.com>
2020-05-11 22:54:59 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2022-07-05 23:36:42 +00:00
|
|
|
checksum = "18a6dbe30758c9f83eb00cbea4ac95966305f5a7772f3f42ebfc7fc7eddbd8e1"
|
EIP-2386 (draft): Eth2 wallet (#1117)
* Add test to understand flow of key storage
* First commit
* Committing to save trait stuff
* Working naive design
* Add keystore struct
* Move keystore files into their own module
* Add serde (de)serialize_with magic
* Add keystore test
* Fix tests
* Add comments and minor fixes
* Pass optional params to `to_keystore` function
* Add `path` field to keystore
* Add function to read Keystore from file
* Add test vectors and fix Version serialization
* Checksum params is empty object
* Add public key to Keystore
* Add function for saving keystore into file
* Deleted account_manager main.rs
* Move keystore module to validator_client
* Add save_keystore method to validator_directory
* Add load_keystore function. Minor refactorings
* Fixed dependencies
* Address some review comments
* Add Password newtype; derive Zeroize
* Fix test
* Move keystore into own crate
* Remove padding
* Add error enum, zeroize more things
* Fix comment
* Add keystore builder
* Remove keystore stuff from val client
* Add more tests, comments
* Add more comments, test vectors
* Progress on improving JSON validation
* More JSON verification
* Start moving JSON into own mod
* Remove old code
* Add more tests, reader/writers
* Tidy
* Move keystore into own file
* Move more logic into keystore file
* Tidy
* Tidy
* Allow for odd-character hex
* Add more json missing field checks
* Use scrypt by default
* Tidy, address comments
* Test path and uuid in vectors
* Fix comment
* Add checks for kdf params
* Enforce empty kdf message
* Expose json_keystore mod
* First commits on path derivation
* Progress with implementation
* More progress
* Passing intermediate test vectors
* Tidy, add comments
* Add DerivedKey structs
* Move key derivation into own crate
* Add zeroize structs
* Return error for empty seed
* Add tests
* Tidy
* First commits on path derivation
* Progress with implementation
* Move key derivation into own crate
* Start defining JSON wallet
* Add progress
* Split out encrypt/decrypt
* First commits on path derivation
* Progress with implementation
* More progress
* Passing intermediate test vectors
* Tidy, add comments
* Add DerivedKey structs
* Move key derivation into own crate
* Add zeroize structs
* Return error for empty seed
* Add tests
* Tidy
* Add progress
* Replace some password usage with slice
* First commits on path derivation
* Progress with implementation
* More progress
* Passing intermediate test vectors
* Tidy, add comments
* Add DerivedKey structs
* Move key derivation into own crate
* Add zeroize structs
* Return error for empty seed
* Add tests
* Tidy
* Add progress
* Expose PlainText struct
* First commits on path derivation
* Progress with implementation
* More progress
* Passing intermediate test vectors
* Tidy, add comments
* Add DerivedKey structs
* Move key derivation into own crate
* Add zeroize structs
* Return error for empty seed
* Add tests
* Tidy
* Add builder
* Expose consts, remove Password
* Minor progress
* Expose SALT_SIZE
* First compiling version
* Add test vectors
* Move dbg assert statement
* Add mnemonic, tidy
* Tidy
* Add testing
* Fix broken test
* Address review comments
Co-authored-by: pawan <pawandhananjay@gmail.com>
2020-05-11 22:54:59 +00:00
|
|
|
|
Initial work towards v0.2.0 (#924)
* Remove ping protocol
* Initial renaming of network services
* Correct rebasing relative to latest master
* Start updating types
* Adds HashMapDelay struct to utils
* Initial network restructure
* Network restructure. Adds new types for v0.2.0
* Removes build artefacts
* Shift validation to beacon chain
* Temporarily remove gossip validation
This is to be updated to match current optimisation efforts.
* Adds AggregateAndProof
* Begin rebuilding pubsub encoding/decoding
* Signature hacking
* Shift gossipsup decoding into eth2_libp2p
* Existing EF tests passing with fake_crypto
* Shifts block encoding/decoding into RPC
* Delete outdated API spec
* All release tests passing bar genesis state parsing
* Update and test YamlConfig
* Update to spec v0.10 compatible BLS
* Updates to BLS EF tests
* Add EF test for AggregateVerify
And delete unused hash2curve tests for uncompressed points
* Update EF tests to v0.10.1
* Use optional block root correctly in block proc
* Use genesis fork in deposit domain. All tests pass
* Fast aggregate verify test
* Update REST API docs
* Fix unused import
* Bump spec tags to v0.10.1
* Add `seconds_per_eth1_block` to chainspec
* Update to timestamp based eth1 voting scheme
* Return None from `get_votes_to_consider` if block cache is empty
* Handle overflows in `is_candidate_block`
* Revert to failing tests
* Fix eth1 data sets test
* Choose default vote according to spec
* Fix collect_valid_votes tests
* Fix `get_votes_to_consider` to choose all eligible blocks
* Uncomment winning_vote tests
* Add comments; remove unused code
* Reduce seconds_per_eth1_block for simulation
* Addressed review comments
* Add test for default vote case
* Fix logs
* Remove unused functions
* Meter default eth1 votes
* Fix comments
* Progress on attestation service
* Address review comments; remove unused dependency
* Initial work on removing libp2p lock
* Add LRU caches to store (rollup)
* Update attestation validation for DB changes (WIP)
* Initial version of should_forward_block
* Scaffold
* Progress on attestation validation
Also, consolidate prod+testing slot clocks so that they share much
of the same implementation and can both handle sub-slot time changes.
* Removes lock from libp2p service
* Completed network lock removal
* Finish(?) attestation processing
* Correct network termination future
* Add slot check to block check
* Correct fmt issues
* Remove Drop implementation for network service
* Add first attempt at attestation proc. re-write
* Add version 2 of attestation processing
* Minor fixes
* Add validator pubkey cache
* Make get_indexed_attestation take a committee
* Link signature processing into new attn verification
* First working version
* Ensure pubkey cache is updated
* Add more metrics, slight optimizations
* Clone committee cache during attestation processing
* Update shuffling cache during block processing
* Remove old commented-out code
* Fix shuffling cache insert bug
* Used indexed attestation in fork choice
* Restructure attn processing, add metrics
* Add more detailed metrics
* Tidy, fix failing tests
* Fix failing tests, tidy
* Address reviewers suggestions
* Disable/delete two outdated tests
* Modification of validator for subscriptions
* Add slot signing to validator client
* Further progress on validation subscription
* Adds necessary validator subscription functionality
* Add new Pubkeys struct to signature_sets
* Refactor with functional approach
* Update beacon chain
* Clean up validator <-> beacon node http types
* Add aggregator status to ValidatorDuty
* Impl Clone for manual slot clock
* Fix minor errors
* Further progress validator client subscription
* Initial subscription and aggregation handling
* Remove decompressed member from pubkey bytes
* Progress to modifying val client for attestation aggregation
* First draft of validator client upgrade for aggregate attestations
* Add hashmap for indices lookup
* Add state cache, remove store cache
* Only build the head committee cache
* Removes lock on a network channel
* Partially implement beacon node subscription http api
* Correct compilation issues
* Change `get_attesting_indices` to use Vec
* Fix failing test
* Partial implementation of timer
* Adds timer, removes exit_future, http api to op pool
* Partial multiple aggregate attestation handling
* Permits bulk messages accross gossipsub network channel
* Correct compile issues
* Improve gosispsub messaging and correct rest api helpers
* Added global gossipsub subscriptions
* Update validator subscriptions data structs
* Tidy
* Re-structure validator subscriptions
* Initial handling of subscriptions
* Re-structure network service
* Add pubkey cache persistence file
* Add more comments
* Integrate persistence file into builder
* Add pubkey cache tests
* Add HashSetDelay and introduce into attestation service
* Handles validator subscriptions
* Add data_dir to beacon chain builder
* Remove Option in pubkey cache persistence file
* Ensure consistency between datadir/data_dir
* Fix failing network test
* Peer subnet discovery gets queued for future subscriptions
* Reorganise attestation service functions
* Initial wiring of attestation service
* First draft of attestation service timing logic
* Correct minor typos
* Tidy
* Fix todos
* Improve tests
* Add PeerInfo to connected peers mapping
* Fix compile error
* Fix compile error from merge
* Split up block processing metrics
* Tidy
* Refactor get_pubkey_from_state
* Remove commented-out code
* Rename state_cache -> checkpoint_cache
* Rename Checkpoint -> Snapshot
* Tidy, add comments
* Tidy up find_head function
* Change some checkpoint -> snapshot
* Add tests
* Expose max_len
* Remove dead code
* Tidy
* Fix bug
* Add sync-speed metric
* Add first attempt at VerifiableBlock
* Start integrating into beacon chain
* Integrate VerifiableBlock
* Rename VerifableBlock -> PartialBlockVerification
* Add start of typed methods
* Add progress
* Add further progress
* Rename structs
* Add full block verification to block_processing.rs
* Further beacon chain integration
* Update checks for gossip
* Add todo
* Start adding segement verification
* Add passing chain segement test
* Initial integration with batch sync
* Minor changes
* Tidy, add more error checking
* Start adding chain_segment tests
* Finish invalid signature tests
* Include single and gossip verified blocks in tests
* Add gossip verification tests
* Start adding docs
* Finish adding comments to block_processing.rs
* Rename block_processing.rs -> block_verification
* Start removing old block processing code
* Fixes beacon_chain compilation
* Fix project-wide compile errors
* Remove old code
* Correct code to pass all tests
* Fix bug with beacon proposer index
* Fix shim for BlockProcessingError
* Only process one epoch at a time
* Fix loop in chain segment processing
* Correct tests from master merge
* Add caching for state.eth1_data_votes
* Add BeaconChain::validator_pubkey
* Revert "Add caching for state.eth1_data_votes"
This reverts commit cd73dcd6434fb8d8e6bf30c5356355598ea7b78e.
Co-authored-by: Grant Wuerker <gwuerker@gmail.com>
Co-authored-by: Michael Sproul <michael@sigmaprime.io>
Co-authored-by: Michael Sproul <micsproul@gmail.com>
Co-authored-by: pawan <pawandhananjay@gmail.com>
Co-authored-by: Paul Hauner <paul@paulhauner.com>
2020-03-17 06:24:44 +00:00
|
|
|
[[package]]
|
|
|
|
name = "oorandom"
|
2020-11-24 00:44:40 +00:00
|
|
|
version = "11.1.3"
|
Initial work towards v0.2.0 (#924)
* Remove ping protocol
* Initial renaming of network services
* Correct rebasing relative to latest master
* Start updating types
* Adds HashMapDelay struct to utils
* Initial network restructure
* Network restructure. Adds new types for v0.2.0
* Removes build artefacts
* Shift validation to beacon chain
* Temporarily remove gossip validation
This is to be updated to match current optimisation efforts.
* Adds AggregateAndProof
* Begin rebuilding pubsub encoding/decoding
* Signature hacking
* Shift gossipsup decoding into eth2_libp2p
* Existing EF tests passing with fake_crypto
* Shifts block encoding/decoding into RPC
* Delete outdated API spec
* All release tests passing bar genesis state parsing
* Update and test YamlConfig
* Update to spec v0.10 compatible BLS
* Updates to BLS EF tests
* Add EF test for AggregateVerify
And delete unused hash2curve tests for uncompressed points
* Update EF tests to v0.10.1
* Use optional block root correctly in block proc
* Use genesis fork in deposit domain. All tests pass
* Fast aggregate verify test
* Update REST API docs
* Fix unused import
* Bump spec tags to v0.10.1
* Add `seconds_per_eth1_block` to chainspec
* Update to timestamp based eth1 voting scheme
* Return None from `get_votes_to_consider` if block cache is empty
* Handle overflows in `is_candidate_block`
* Revert to failing tests
* Fix eth1 data sets test
* Choose default vote according to spec
* Fix collect_valid_votes tests
* Fix `get_votes_to_consider` to choose all eligible blocks
* Uncomment winning_vote tests
* Add comments; remove unused code
* Reduce seconds_per_eth1_block for simulation
* Addressed review comments
* Add test for default vote case
* Fix logs
* Remove unused functions
* Meter default eth1 votes
* Fix comments
* Progress on attestation service
* Address review comments; remove unused dependency
* Initial work on removing libp2p lock
* Add LRU caches to store (rollup)
* Update attestation validation for DB changes (WIP)
* Initial version of should_forward_block
* Scaffold
* Progress on attestation validation
Also, consolidate prod+testing slot clocks so that they share much
of the same implementation and can both handle sub-slot time changes.
* Removes lock from libp2p service
* Completed network lock removal
* Finish(?) attestation processing
* Correct network termination future
* Add slot check to block check
* Correct fmt issues
* Remove Drop implementation for network service
* Add first attempt at attestation proc. re-write
* Add version 2 of attestation processing
* Minor fixes
* Add validator pubkey cache
* Make get_indexed_attestation take a committee
* Link signature processing into new attn verification
* First working version
* Ensure pubkey cache is updated
* Add more metrics, slight optimizations
* Clone committee cache during attestation processing
* Update shuffling cache during block processing
* Remove old commented-out code
* Fix shuffling cache insert bug
* Used indexed attestation in fork choice
* Restructure attn processing, add metrics
* Add more detailed metrics
* Tidy, fix failing tests
* Fix failing tests, tidy
* Address reviewers suggestions
* Disable/delete two outdated tests
* Modification of validator for subscriptions
* Add slot signing to validator client
* Further progress on validation subscription
* Adds necessary validator subscription functionality
* Add new Pubkeys struct to signature_sets
* Refactor with functional approach
* Update beacon chain
* Clean up validator <-> beacon node http types
* Add aggregator status to ValidatorDuty
* Impl Clone for manual slot clock
* Fix minor errors
* Further progress validator client subscription
* Initial subscription and aggregation handling
* Remove decompressed member from pubkey bytes
* Progress to modifying val client for attestation aggregation
* First draft of validator client upgrade for aggregate attestations
* Add hashmap for indices lookup
* Add state cache, remove store cache
* Only build the head committee cache
* Removes lock on a network channel
* Partially implement beacon node subscription http api
* Correct compilation issues
* Change `get_attesting_indices` to use Vec
* Fix failing test
* Partial implementation of timer
* Adds timer, removes exit_future, http api to op pool
* Partial multiple aggregate attestation handling
* Permits bulk messages accross gossipsub network channel
* Correct compile issues
* Improve gosispsub messaging and correct rest api helpers
* Added global gossipsub subscriptions
* Update validator subscriptions data structs
* Tidy
* Re-structure validator subscriptions
* Initial handling of subscriptions
* Re-structure network service
* Add pubkey cache persistence file
* Add more comments
* Integrate persistence file into builder
* Add pubkey cache tests
* Add HashSetDelay and introduce into attestation service
* Handles validator subscriptions
* Add data_dir to beacon chain builder
* Remove Option in pubkey cache persistence file
* Ensure consistency between datadir/data_dir
* Fix failing network test
* Peer subnet discovery gets queued for future subscriptions
* Reorganise attestation service functions
* Initial wiring of attestation service
* First draft of attestation service timing logic
* Correct minor typos
* Tidy
* Fix todos
* Improve tests
* Add PeerInfo to connected peers mapping
* Fix compile error
* Fix compile error from merge
* Split up block processing metrics
* Tidy
* Refactor get_pubkey_from_state
* Remove commented-out code
* Rename state_cache -> checkpoint_cache
* Rename Checkpoint -> Snapshot
* Tidy, add comments
* Tidy up find_head function
* Change some checkpoint -> snapshot
* Add tests
* Expose max_len
* Remove dead code
* Tidy
* Fix bug
* Add sync-speed metric
* Add first attempt at VerifiableBlock
* Start integrating into beacon chain
* Integrate VerifiableBlock
* Rename VerifableBlock -> PartialBlockVerification
* Add start of typed methods
* Add progress
* Add further progress
* Rename structs
* Add full block verification to block_processing.rs
* Further beacon chain integration
* Update checks for gossip
* Add todo
* Start adding segement verification
* Add passing chain segement test
* Initial integration with batch sync
* Minor changes
* Tidy, add more error checking
* Start adding chain_segment tests
* Finish invalid signature tests
* Include single and gossip verified blocks in tests
* Add gossip verification tests
* Start adding docs
* Finish adding comments to block_processing.rs
* Rename block_processing.rs -> block_verification
* Start removing old block processing code
* Fixes beacon_chain compilation
* Fix project-wide compile errors
* Remove old code
* Correct code to pass all tests
* Fix bug with beacon proposer index
* Fix shim for BlockProcessingError
* Only process one epoch at a time
* Fix loop in chain segment processing
* Correct tests from master merge
* Add caching for state.eth1_data_votes
* Add BeaconChain::validator_pubkey
* Revert "Add caching for state.eth1_data_votes"
This reverts commit cd73dcd6434fb8d8e6bf30c5356355598ea7b78e.
Co-authored-by: Grant Wuerker <gwuerker@gmail.com>
Co-authored-by: Michael Sproul <michael@sigmaprime.io>
Co-authored-by: Michael Sproul <micsproul@gmail.com>
Co-authored-by: pawan <pawandhananjay@gmail.com>
Co-authored-by: Paul Hauner <paul@paulhauner.com>
2020-03-17 06:24:44 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2020-11-24 00:44:40 +00:00
|
|
|
checksum = "0ab1bc2a289d34bd04a330323ac98a1b4bc82c9d9fcb1e66b63caa84da26b575"
|
Initial work towards v0.2.0 (#924)
* Remove ping protocol
* Initial renaming of network services
* Correct rebasing relative to latest master
* Start updating types
* Adds HashMapDelay struct to utils
* Initial network restructure
* Network restructure. Adds new types for v0.2.0
* Removes build artefacts
* Shift validation to beacon chain
* Temporarily remove gossip validation
This is to be updated to match current optimisation efforts.
* Adds AggregateAndProof
* Begin rebuilding pubsub encoding/decoding
* Signature hacking
* Shift gossipsup decoding into eth2_libp2p
* Existing EF tests passing with fake_crypto
* Shifts block encoding/decoding into RPC
* Delete outdated API spec
* All release tests passing bar genesis state parsing
* Update and test YamlConfig
* Update to spec v0.10 compatible BLS
* Updates to BLS EF tests
* Add EF test for AggregateVerify
And delete unused hash2curve tests for uncompressed points
* Update EF tests to v0.10.1
* Use optional block root correctly in block proc
* Use genesis fork in deposit domain. All tests pass
* Fast aggregate verify test
* Update REST API docs
* Fix unused import
* Bump spec tags to v0.10.1
* Add `seconds_per_eth1_block` to chainspec
* Update to timestamp based eth1 voting scheme
* Return None from `get_votes_to_consider` if block cache is empty
* Handle overflows in `is_candidate_block`
* Revert to failing tests
* Fix eth1 data sets test
* Choose default vote according to spec
* Fix collect_valid_votes tests
* Fix `get_votes_to_consider` to choose all eligible blocks
* Uncomment winning_vote tests
* Add comments; remove unused code
* Reduce seconds_per_eth1_block for simulation
* Addressed review comments
* Add test for default vote case
* Fix logs
* Remove unused functions
* Meter default eth1 votes
* Fix comments
* Progress on attestation service
* Address review comments; remove unused dependency
* Initial work on removing libp2p lock
* Add LRU caches to store (rollup)
* Update attestation validation for DB changes (WIP)
* Initial version of should_forward_block
* Scaffold
* Progress on attestation validation
Also, consolidate prod+testing slot clocks so that they share much
of the same implementation and can both handle sub-slot time changes.
* Removes lock from libp2p service
* Completed network lock removal
* Finish(?) attestation processing
* Correct network termination future
* Add slot check to block check
* Correct fmt issues
* Remove Drop implementation for network service
* Add first attempt at attestation proc. re-write
* Add version 2 of attestation processing
* Minor fixes
* Add validator pubkey cache
* Make get_indexed_attestation take a committee
* Link signature processing into new attn verification
* First working version
* Ensure pubkey cache is updated
* Add more metrics, slight optimizations
* Clone committee cache during attestation processing
* Update shuffling cache during block processing
* Remove old commented-out code
* Fix shuffling cache insert bug
* Used indexed attestation in fork choice
* Restructure attn processing, add metrics
* Add more detailed metrics
* Tidy, fix failing tests
* Fix failing tests, tidy
* Address reviewers suggestions
* Disable/delete two outdated tests
* Modification of validator for subscriptions
* Add slot signing to validator client
* Further progress on validation subscription
* Adds necessary validator subscription functionality
* Add new Pubkeys struct to signature_sets
* Refactor with functional approach
* Update beacon chain
* Clean up validator <-> beacon node http types
* Add aggregator status to ValidatorDuty
* Impl Clone for manual slot clock
* Fix minor errors
* Further progress validator client subscription
* Initial subscription and aggregation handling
* Remove decompressed member from pubkey bytes
* Progress to modifying val client for attestation aggregation
* First draft of validator client upgrade for aggregate attestations
* Add hashmap for indices lookup
* Add state cache, remove store cache
* Only build the head committee cache
* Removes lock on a network channel
* Partially implement beacon node subscription http api
* Correct compilation issues
* Change `get_attesting_indices` to use Vec
* Fix failing test
* Partial implementation of timer
* Adds timer, removes exit_future, http api to op pool
* Partial multiple aggregate attestation handling
* Permits bulk messages accross gossipsub network channel
* Correct compile issues
* Improve gosispsub messaging and correct rest api helpers
* Added global gossipsub subscriptions
* Update validator subscriptions data structs
* Tidy
* Re-structure validator subscriptions
* Initial handling of subscriptions
* Re-structure network service
* Add pubkey cache persistence file
* Add more comments
* Integrate persistence file into builder
* Add pubkey cache tests
* Add HashSetDelay and introduce into attestation service
* Handles validator subscriptions
* Add data_dir to beacon chain builder
* Remove Option in pubkey cache persistence file
* Ensure consistency between datadir/data_dir
* Fix failing network test
* Peer subnet discovery gets queued for future subscriptions
* Reorganise attestation service functions
* Initial wiring of attestation service
* First draft of attestation service timing logic
* Correct minor typos
* Tidy
* Fix todos
* Improve tests
* Add PeerInfo to connected peers mapping
* Fix compile error
* Fix compile error from merge
* Split up block processing metrics
* Tidy
* Refactor get_pubkey_from_state
* Remove commented-out code
* Rename state_cache -> checkpoint_cache
* Rename Checkpoint -> Snapshot
* Tidy, add comments
* Tidy up find_head function
* Change some checkpoint -> snapshot
* Add tests
* Expose max_len
* Remove dead code
* Tidy
* Fix bug
* Add sync-speed metric
* Add first attempt at VerifiableBlock
* Start integrating into beacon chain
* Integrate VerifiableBlock
* Rename VerifableBlock -> PartialBlockVerification
* Add start of typed methods
* Add progress
* Add further progress
* Rename structs
* Add full block verification to block_processing.rs
* Further beacon chain integration
* Update checks for gossip
* Add todo
* Start adding segement verification
* Add passing chain segement test
* Initial integration with batch sync
* Minor changes
* Tidy, add more error checking
* Start adding chain_segment tests
* Finish invalid signature tests
* Include single and gossip verified blocks in tests
* Add gossip verification tests
* Start adding docs
* Finish adding comments to block_processing.rs
* Rename block_processing.rs -> block_verification
* Start removing old block processing code
* Fixes beacon_chain compilation
* Fix project-wide compile errors
* Remove old code
* Correct code to pass all tests
* Fix bug with beacon proposer index
* Fix shim for BlockProcessingError
* Only process one epoch at a time
* Fix loop in chain segment processing
* Correct tests from master merge
* Add caching for state.eth1_data_votes
* Add BeaconChain::validator_pubkey
* Revert "Add caching for state.eth1_data_votes"
This reverts commit cd73dcd6434fb8d8e6bf30c5356355598ea7b78e.
Co-authored-by: Grant Wuerker <gwuerker@gmail.com>
Co-authored-by: Michael Sproul <michael@sigmaprime.io>
Co-authored-by: Michael Sproul <micsproul@gmail.com>
Co-authored-by: pawan <pawandhananjay@gmail.com>
Co-authored-by: Paul Hauner <paul@paulhauner.com>
2020-03-17 06:24:44 +00:00
|
|
|
|
2020-07-06 01:55:56 +00:00
|
|
|
[[package]]
|
|
|
|
name = "opaque-debug"
|
|
|
|
version = "0.3.0"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "624a8340c38c1b80fd549087862da4ba43e08858af025b236e509b6649fc13d5"
|
|
|
|
|
2019-12-09 11:39:44 +00:00
|
|
|
[[package]]
|
|
|
|
name = "openssl"
|
2022-06-18 23:59:43 +00:00
|
|
|
version = "0.10.40"
|
2019-12-09 11:39:44 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2022-06-18 23:59:43 +00:00
|
|
|
checksum = "fb81a6430ac911acb25fe5ac8f1d2af1b4ea8a4fdfda0f1ee4292af2e2d8eb0e"
|
2019-12-09 11:39:44 +00:00
|
|
|
dependencies = [
|
2020-12-09 01:34:58 +00:00
|
|
|
"bitflags",
|
2021-11-18 05:08:42 +00:00
|
|
|
"cfg-if",
|
2020-05-10 09:56:31 +00:00
|
|
|
"foreign-types",
|
|
|
|
"libc",
|
2021-05-04 00:44:05 +00:00
|
|
|
"once_cell",
|
2022-06-18 23:59:43 +00:00
|
|
|
"openssl-macros",
|
2020-05-10 09:56:31 +00:00
|
|
|
"openssl-sys",
|
2019-12-09 11:39:44 +00:00
|
|
|
]
|
|
|
|
|
2022-06-18 23:59:43 +00:00
|
|
|
[[package]]
|
|
|
|
name = "openssl-macros"
|
|
|
|
version = "0.1.0"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "b501e44f11665960c7e7fcf062c7d96a14ade4aa98116c004b2e37b5be7d736c"
|
|
|
|
dependencies = [
|
|
|
|
"proc-macro2",
|
|
|
|
"quote",
|
|
|
|
"syn",
|
|
|
|
]
|
|
|
|
|
2019-12-09 11:39:44 +00:00
|
|
|
[[package]]
|
|
|
|
name = "openssl-probe"
|
2022-01-14 05:42:47 +00:00
|
|
|
version = "0.1.5"
|
2019-12-09 11:39:44 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2022-01-14 05:42:47 +00:00
|
|
|
checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf"
|
2019-12-09 11:39:44 +00:00
|
|
|
|
2020-08-11 05:16:30 +00:00
|
|
|
[[package]]
|
|
|
|
name = "openssl-src"
|
2022-07-05 23:36:42 +00:00
|
|
|
version = "111.22.0+1.1.1q"
|
2020-08-11 05:16:30 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2022-07-05 23:36:42 +00:00
|
|
|
checksum = "8f31f0d509d1c1ae9cada2f9539ff8f37933831fd5098879e482aa687d659853"
|
2020-08-11 05:16:30 +00:00
|
|
|
dependencies = [
|
|
|
|
"cc",
|
|
|
|
]
|
|
|
|
|
2019-12-09 11:39:44 +00:00
|
|
|
[[package]]
|
|
|
|
name = "openssl-sys"
|
2022-06-18 23:59:43 +00:00
|
|
|
version = "0.9.74"
|
2019-12-09 11:39:44 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2022-06-18 23:59:43 +00:00
|
|
|
checksum = "835363342df5fba8354c5b453325b110ffd54044e588c539cf2f20a8014e4cb1"
|
2019-12-09 11:39:44 +00:00
|
|
|
dependencies = [
|
2022-02-10 04:12:03 +00:00
|
|
|
"autocfg 1.1.0",
|
2020-05-10 09:56:31 +00:00
|
|
|
"cc",
|
|
|
|
"libc",
|
2020-08-11 05:16:30 +00:00
|
|
|
"openssl-src",
|
2020-05-10 09:56:31 +00:00
|
|
|
"pkg-config",
|
|
|
|
"vcpkg",
|
2019-12-09 11:39:44 +00:00
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "operation_pool"
|
2020-08-06 03:43:05 +00:00
|
|
|
version = "0.2.0"
|
2019-12-09 11:39:44 +00:00
|
|
|
dependencies = [
|
2021-07-09 06:15:32 +00:00
|
|
|
"beacon_chain",
|
2021-07-15 00:52:02 +00:00
|
|
|
"derivative",
|
2021-11-29 03:57:54 +00:00
|
|
|
"eth2_ssz",
|
2022-03-31 07:52:23 +00:00
|
|
|
"eth2_ssz_derive",
|
2021-08-17 01:00:24 +00:00
|
|
|
"itertools",
|
2021-04-13 05:27:42 +00:00
|
|
|
"lazy_static",
|
|
|
|
"lighthouse_metrics",
|
2022-06-18 23:59:43 +00:00
|
|
|
"parking_lot 0.12.1",
|
2021-04-13 05:27:42 +00:00
|
|
|
"rayon",
|
2020-05-10 09:56:31 +00:00
|
|
|
"serde",
|
|
|
|
"serde_derive",
|
|
|
|
"state_processing",
|
|
|
|
"store",
|
Use async code when interacting with EL (#3244)
## Overview
This rather extensive PR achieves two primary goals:
1. Uses the finalized/justified checkpoints of fork choice (FC), rather than that of the head state.
2. Refactors fork choice, block production and block processing to `async` functions.
Additionally, it achieves:
- Concurrent forkchoice updates to the EL and cache pruning after a new head is selected.
- Concurrent "block packing" (attestations, etc) and execution payload retrieval during block production.
- Concurrent per-block-processing and execution payload verification during block processing.
- The `Arc`-ification of `SignedBeaconBlock` during block processing (it's never mutated, so why not?):
- I had to do this to deal with sending blocks into spawned tasks.
- Previously we were cloning the beacon block at least 2 times during each block processing, these clones are either removed or turned into cheaper `Arc` clones.
- We were also `Box`-ing and un-`Box`-ing beacon blocks as they moved throughout the networking crate. This is not a big deal, but it's nice to avoid shifting things between the stack and heap.
- Avoids cloning *all the blocks* in *every chain segment* during sync.
- It also has the potential to clean up our code where we need to pass an *owned* block around so we can send it back in the case of an error (I didn't do much of this, my PR is already big enough :sweat_smile:)
- The `BeaconChain::HeadSafetyStatus` struct was removed. It was an old relic from prior merge specs.
For motivation for this change, see https://github.com/sigp/lighthouse/pull/3244#issuecomment-1160963273
## Changes to `canonical_head` and `fork_choice`
Previously, the `BeaconChain` had two separate fields:
```
canonical_head: RwLock<Snapshot>,
fork_choice: RwLock<BeaconForkChoice>
```
Now, we have grouped these values under a single struct:
```
canonical_head: CanonicalHead {
cached_head: RwLock<Arc<Snapshot>>,
fork_choice: RwLock<BeaconForkChoice>
}
```
Apart from ergonomics, the only *actual* change here is wrapping the canonical head snapshot in an `Arc`. This means that we no longer need to hold the `cached_head` (`canonical_head`, in old terms) lock when we want to pull some values from it. This was done to avoid deadlock risks by preventing functions from acquiring (and holding) the `cached_head` and `fork_choice` locks simultaneously.
## Breaking Changes
### The `state` (root) field in the `finalized_checkpoint` SSE event
Consider the scenario where epoch `n` is just finalized, but `start_slot(n)` is skipped. There are two state roots we might in the `finalized_checkpoint` SSE event:
1. The state root of the finalized block, which is `get_block(finalized_checkpoint.root).state_root`.
4. The state root at slot of `start_slot(n)`, which would be the state from (1), but "skipped forward" through any skip slots.
Previously, Lighthouse would choose (2). However, we can see that when [Teku generates that event](https://github.com/ConsenSys/teku/blob/de2b2801c89ef5abf983d6bf37867c37fc47121f/data/beaconrestapi/src/main/java/tech/pegasys/teku/beaconrestapi/handlers/v1/events/EventSubscriptionManager.java#L171-L182) it uses [`getStateRootFromBlockRoot`](https://github.com/ConsenSys/teku/blob/de2b2801c89ef5abf983d6bf37867c37fc47121f/data/provider/src/main/java/tech/pegasys/teku/api/ChainDataProvider.java#L336-L341) which uses (1).
I have switched Lighthouse from (2) to (1). I think it's a somewhat arbitrary choice between the two, where (1) is easier to compute and is consistent with Teku.
## Notes for Reviewers
I've renamed `BeaconChain::fork_choice` to `BeaconChain::recompute_head`. Doing this helped ensure I broke all previous uses of fork choice and I also find it more descriptive. It describes an action and can't be confused with trying to get a reference to the `ForkChoice` struct.
I've changed the ordering of SSE events when a block is received. It used to be `[block, finalized, head]` and now it's `[block, head, finalized]`. It was easier this way and I don't think we were making any promises about SSE event ordering so it's not "breaking".
I've made it so fork choice will run when it's first constructed. I did this because I wanted to have a cached version of the last call to `get_head`. Ensuring `get_head` has been run *at least once* means that the cached values doesn't need to wrapped in an `Option`. This was fairly simple, it just involved passing a `slot` to the constructor so it knows *when* it's being run. When loading a fork choice from the store and a slot clock isn't handy I've just used the `slot` that was saved in the `fork_choice_store`. That seems like it would be a faithful representation of the slot when we saved it.
I added the `genesis_time: u64` to the `BeaconChain`. It's small, constant and nice to have around.
Since we're using FC for the fin/just checkpoints, we no longer get the `0x00..00` roots at genesis. You can see I had to remove a work-around in `ef-tests` here: b56be3bc2. I can't find any reason why this would be an issue, if anything I think it'll be better since the genesis-alias has caught us out a few times (0x00..00 isn't actually a real root). Edit: I did find a case where the `network` expected the 0x00..00 alias and patched it here: 3f26ac3e2.
You'll notice a lot of changes in tests. Generally, tests should be functionally equivalent. Here are the things creating the most diff-noise in tests:
- Changing tests to be `tokio::async` tests.
- Adding `.await` to fork choice, block processing and block production functions.
- Refactor of the `canonical_head` "API" provided by the `BeaconChain`. E.g., `chain.canonical_head.cached_head()` instead of `chain.canonical_head.read()`.
- Wrapping `SignedBeaconBlock` in an `Arc`.
- In the `beacon_chain/tests/block_verification`, we can't use the `lazy_static` `CHAIN_SEGMENT` variable anymore since it's generated with an async function. We just generate it in each test, not so efficient but hopefully insignificant.
I had to disable `rayon` concurrent tests in the `fork_choice` tests. This is because the use of `rayon` and `block_on` was causing a panic.
Co-authored-by: Mac L <mjladson@pm.me>
2022-07-03 05:36:50 +00:00
|
|
|
"tokio",
|
2020-05-10 09:56:31 +00:00
|
|
|
"types",
|
2019-12-09 11:39:44 +00:00
|
|
|
]
|
|
|
|
|
2021-10-29 01:59:29 +00:00
|
|
|
[[package]]
|
|
|
|
name = "owning_ref"
|
|
|
|
version = "0.4.1"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "6ff55baddef9e4ad00f88b6c743a2a8062d4c6ade126c2a528644b8e444d52ce"
|
|
|
|
dependencies = [
|
|
|
|
"stable_deref_trait",
|
|
|
|
]
|
|
|
|
|
2021-07-09 03:20:24 +00:00
|
|
|
[[package]]
|
|
|
|
name = "parity-scale-codec"
|
2021-10-01 01:23:55 +00:00
|
|
|
version = "2.3.1"
|
2021-07-09 03:20:24 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2021-10-01 01:23:55 +00:00
|
|
|
checksum = "373b1a4c1338d9cd3d1fa53b3a11bdab5ab6bd80a20f7f7becd76953ae2be909"
|
2021-07-09 03:20:24 +00:00
|
|
|
dependencies = [
|
2022-04-04 00:26:16 +00:00
|
|
|
"arrayvec",
|
Separate execution payloads in the DB (#3157)
## Proposed Changes
Reduce post-merge disk usage by not storing finalized execution payloads in Lighthouse's database.
:warning: **This is achieved in a backwards-incompatible way for networks that have already merged** :warning:. Kiln users and shadow fork enjoyers will be unable to downgrade after running the code from this PR. The upgrade migration may take several minutes to run, and can't be aborted after it begins.
The main changes are:
- New column in the database called `ExecPayload`, keyed by beacon block root.
- The `BeaconBlock` column now stores blinded blocks only.
- Lots of places that previously used full blocks now use blinded blocks, e.g. analytics APIs, block replay in the DB, etc.
- On finalization:
- `prune_abanonded_forks` deletes non-canonical payloads whilst deleting non-canonical blocks.
- `migrate_db` deletes finalized canonical payloads whilst deleting finalized states.
- Conversions between blinded and full blocks are implemented in a compositional way, duplicating some work from Sean's PR #3134.
- The execution layer has a new `get_payload_by_block_hash` method that reconstructs a payload using the EE's `eth_getBlockByHash` call.
- I've tested manually that it works on Kiln, using Geth and Nethermind.
- This isn't necessarily the most efficient method, and new engine APIs are being discussed to improve this: https://github.com/ethereum/execution-apis/pull/146.
- We're depending on the `ethers` master branch, due to lots of recent changes. We're also using a workaround for https://github.com/gakonst/ethers-rs/issues/1134.
- Payload reconstruction is used in the HTTP API via `BeaconChain::get_block`, which is now `async`. Due to the `async` fn, the `blocking_json` wrapper has been removed.
- Payload reconstruction is used in network RPC to serve blocks-by-{root,range} responses. Here the `async` adjustment is messier, although I think I've managed to come up with a reasonable compromise: the handlers take the `SendOnDrop` by value so that they can drop it on _task completion_ (after the `fn` returns). Still, this is introducing disk reads onto core executor threads, which may have a negative performance impact (thoughts appreciated).
## Additional Info
- [x] For performance it would be great to remove the cloning of full blocks when converting them to blinded blocks to write to disk. I'm going to experiment with a `put_block` API that takes the block by value, breaks it into a blinded block and a payload, stores the blinded block, and then re-assembles the full block for the caller.
- [x] We should measure the latency of blocks-by-root and blocks-by-range responses.
- [x] We should add integration tests that stress the payload reconstruction (basic tests done, issue for more extensive tests: https://github.com/sigp/lighthouse/issues/3159)
- [x] We should (manually) test the schema v9 migration from several prior versions, particularly as blocks have changed on disk and some migrations rely on being able to load blocks.
Co-authored-by: Paul Hauner <paul@paulhauner.com>
2022-05-12 00:42:17 +00:00
|
|
|
"bitvec 0.20.4",
|
2022-04-04 00:26:16 +00:00
|
|
|
"byte-slice-cast",
|
2021-07-09 03:20:24 +00:00
|
|
|
"impl-trait-for-tuples",
|
Separate execution payloads in the DB (#3157)
## Proposed Changes
Reduce post-merge disk usage by not storing finalized execution payloads in Lighthouse's database.
:warning: **This is achieved in a backwards-incompatible way for networks that have already merged** :warning:. Kiln users and shadow fork enjoyers will be unable to downgrade after running the code from this PR. The upgrade migration may take several minutes to run, and can't be aborted after it begins.
The main changes are:
- New column in the database called `ExecPayload`, keyed by beacon block root.
- The `BeaconBlock` column now stores blinded blocks only.
- Lots of places that previously used full blocks now use blinded blocks, e.g. analytics APIs, block replay in the DB, etc.
- On finalization:
- `prune_abanonded_forks` deletes non-canonical payloads whilst deleting non-canonical blocks.
- `migrate_db` deletes finalized canonical payloads whilst deleting finalized states.
- Conversions between blinded and full blocks are implemented in a compositional way, duplicating some work from Sean's PR #3134.
- The execution layer has a new `get_payload_by_block_hash` method that reconstructs a payload using the EE's `eth_getBlockByHash` call.
- I've tested manually that it works on Kiln, using Geth and Nethermind.
- This isn't necessarily the most efficient method, and new engine APIs are being discussed to improve this: https://github.com/ethereum/execution-apis/pull/146.
- We're depending on the `ethers` master branch, due to lots of recent changes. We're also using a workaround for https://github.com/gakonst/ethers-rs/issues/1134.
- Payload reconstruction is used in the HTTP API via `BeaconChain::get_block`, which is now `async`. Due to the `async` fn, the `blocking_json` wrapper has been removed.
- Payload reconstruction is used in network RPC to serve blocks-by-{root,range} responses. Here the `async` adjustment is messier, although I think I've managed to come up with a reasonable compromise: the handlers take the `SendOnDrop` by value so that they can drop it on _task completion_ (after the `fn` returns). Still, this is introducing disk reads onto core executor threads, which may have a negative performance impact (thoughts appreciated).
## Additional Info
- [x] For performance it would be great to remove the cloning of full blocks when converting them to blinded blocks to write to disk. I'm going to experiment with a `put_block` API that takes the block by value, breaks it into a blinded block and a payload, stores the blinded block, and then re-assembles the full block for the caller.
- [x] We should measure the latency of blocks-by-root and blocks-by-range responses.
- [x] We should add integration tests that stress the payload reconstruction (basic tests done, issue for more extensive tests: https://github.com/sigp/lighthouse/issues/3159)
- [x] We should (manually) test the schema v9 migration from several prior versions, particularly as blocks have changed on disk and some migrations rely on being able to load blocks.
Co-authored-by: Paul Hauner <paul@paulhauner.com>
2022-05-12 00:42:17 +00:00
|
|
|
"parity-scale-codec-derive 2.3.1",
|
|
|
|
"serde",
|
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "parity-scale-codec"
|
2022-06-18 23:59:43 +00:00
|
|
|
version = "3.1.5"
|
Separate execution payloads in the DB (#3157)
## Proposed Changes
Reduce post-merge disk usage by not storing finalized execution payloads in Lighthouse's database.
:warning: **This is achieved in a backwards-incompatible way for networks that have already merged** :warning:. Kiln users and shadow fork enjoyers will be unable to downgrade after running the code from this PR. The upgrade migration may take several minutes to run, and can't be aborted after it begins.
The main changes are:
- New column in the database called `ExecPayload`, keyed by beacon block root.
- The `BeaconBlock` column now stores blinded blocks only.
- Lots of places that previously used full blocks now use blinded blocks, e.g. analytics APIs, block replay in the DB, etc.
- On finalization:
- `prune_abanonded_forks` deletes non-canonical payloads whilst deleting non-canonical blocks.
- `migrate_db` deletes finalized canonical payloads whilst deleting finalized states.
- Conversions between blinded and full blocks are implemented in a compositional way, duplicating some work from Sean's PR #3134.
- The execution layer has a new `get_payload_by_block_hash` method that reconstructs a payload using the EE's `eth_getBlockByHash` call.
- I've tested manually that it works on Kiln, using Geth and Nethermind.
- This isn't necessarily the most efficient method, and new engine APIs are being discussed to improve this: https://github.com/ethereum/execution-apis/pull/146.
- We're depending on the `ethers` master branch, due to lots of recent changes. We're also using a workaround for https://github.com/gakonst/ethers-rs/issues/1134.
- Payload reconstruction is used in the HTTP API via `BeaconChain::get_block`, which is now `async`. Due to the `async` fn, the `blocking_json` wrapper has been removed.
- Payload reconstruction is used in network RPC to serve blocks-by-{root,range} responses. Here the `async` adjustment is messier, although I think I've managed to come up with a reasonable compromise: the handlers take the `SendOnDrop` by value so that they can drop it on _task completion_ (after the `fn` returns). Still, this is introducing disk reads onto core executor threads, which may have a negative performance impact (thoughts appreciated).
## Additional Info
- [x] For performance it would be great to remove the cloning of full blocks when converting them to blinded blocks to write to disk. I'm going to experiment with a `put_block` API that takes the block by value, breaks it into a blinded block and a payload, stores the blinded block, and then re-assembles the full block for the caller.
- [x] We should measure the latency of blocks-by-root and blocks-by-range responses.
- [x] We should add integration tests that stress the payload reconstruction (basic tests done, issue for more extensive tests: https://github.com/sigp/lighthouse/issues/3159)
- [x] We should (manually) test the schema v9 migration from several prior versions, particularly as blocks have changed on disk and some migrations rely on being able to load blocks.
Co-authored-by: Paul Hauner <paul@paulhauner.com>
2022-05-12 00:42:17 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2022-06-18 23:59:43 +00:00
|
|
|
checksum = "9182e4a71cae089267ab03e67c99368db7cd877baf50f931e5d6d4b71e195ac0"
|
Separate execution payloads in the DB (#3157)
## Proposed Changes
Reduce post-merge disk usage by not storing finalized execution payloads in Lighthouse's database.
:warning: **This is achieved in a backwards-incompatible way for networks that have already merged** :warning:. Kiln users and shadow fork enjoyers will be unable to downgrade after running the code from this PR. The upgrade migration may take several minutes to run, and can't be aborted after it begins.
The main changes are:
- New column in the database called `ExecPayload`, keyed by beacon block root.
- The `BeaconBlock` column now stores blinded blocks only.
- Lots of places that previously used full blocks now use blinded blocks, e.g. analytics APIs, block replay in the DB, etc.
- On finalization:
- `prune_abanonded_forks` deletes non-canonical payloads whilst deleting non-canonical blocks.
- `migrate_db` deletes finalized canonical payloads whilst deleting finalized states.
- Conversions between blinded and full blocks are implemented in a compositional way, duplicating some work from Sean's PR #3134.
- The execution layer has a new `get_payload_by_block_hash` method that reconstructs a payload using the EE's `eth_getBlockByHash` call.
- I've tested manually that it works on Kiln, using Geth and Nethermind.
- This isn't necessarily the most efficient method, and new engine APIs are being discussed to improve this: https://github.com/ethereum/execution-apis/pull/146.
- We're depending on the `ethers` master branch, due to lots of recent changes. We're also using a workaround for https://github.com/gakonst/ethers-rs/issues/1134.
- Payload reconstruction is used in the HTTP API via `BeaconChain::get_block`, which is now `async`. Due to the `async` fn, the `blocking_json` wrapper has been removed.
- Payload reconstruction is used in network RPC to serve blocks-by-{root,range} responses. Here the `async` adjustment is messier, although I think I've managed to come up with a reasonable compromise: the handlers take the `SendOnDrop` by value so that they can drop it on _task completion_ (after the `fn` returns). Still, this is introducing disk reads onto core executor threads, which may have a negative performance impact (thoughts appreciated).
## Additional Info
- [x] For performance it would be great to remove the cloning of full blocks when converting them to blinded blocks to write to disk. I'm going to experiment with a `put_block` API that takes the block by value, breaks it into a blinded block and a payload, stores the blinded block, and then re-assembles the full block for the caller.
- [x] We should measure the latency of blocks-by-root and blocks-by-range responses.
- [x] We should add integration tests that stress the payload reconstruction (basic tests done, issue for more extensive tests: https://github.com/sigp/lighthouse/issues/3159)
- [x] We should (manually) test the schema v9 migration from several prior versions, particularly as blocks have changed on disk and some migrations rely on being able to load blocks.
Co-authored-by: Paul Hauner <paul@paulhauner.com>
2022-05-12 00:42:17 +00:00
|
|
|
dependencies = [
|
|
|
|
"arrayvec",
|
|
|
|
"bitvec 1.0.0",
|
|
|
|
"byte-slice-cast",
|
|
|
|
"impl-trait-for-tuples",
|
2022-06-18 23:59:43 +00:00
|
|
|
"parity-scale-codec-derive 3.1.3",
|
2021-07-09 03:20:24 +00:00
|
|
|
"serde",
|
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "parity-scale-codec-derive"
|
2021-10-01 01:23:55 +00:00
|
|
|
version = "2.3.1"
|
2021-07-09 03:20:24 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2021-10-01 01:23:55 +00:00
|
|
|
checksum = "1557010476e0595c9b568d16dcfb81b93cdeb157612726f5170d31aa707bed27"
|
2021-07-09 03:20:24 +00:00
|
|
|
dependencies = [
|
|
|
|
"proc-macro-crate",
|
|
|
|
"proc-macro2",
|
|
|
|
"quote",
|
|
|
|
"syn",
|
|
|
|
]
|
|
|
|
|
Separate execution payloads in the DB (#3157)
## Proposed Changes
Reduce post-merge disk usage by not storing finalized execution payloads in Lighthouse's database.
:warning: **This is achieved in a backwards-incompatible way for networks that have already merged** :warning:. Kiln users and shadow fork enjoyers will be unable to downgrade after running the code from this PR. The upgrade migration may take several minutes to run, and can't be aborted after it begins.
The main changes are:
- New column in the database called `ExecPayload`, keyed by beacon block root.
- The `BeaconBlock` column now stores blinded blocks only.
- Lots of places that previously used full blocks now use blinded blocks, e.g. analytics APIs, block replay in the DB, etc.
- On finalization:
- `prune_abanonded_forks` deletes non-canonical payloads whilst deleting non-canonical blocks.
- `migrate_db` deletes finalized canonical payloads whilst deleting finalized states.
- Conversions between blinded and full blocks are implemented in a compositional way, duplicating some work from Sean's PR #3134.
- The execution layer has a new `get_payload_by_block_hash` method that reconstructs a payload using the EE's `eth_getBlockByHash` call.
- I've tested manually that it works on Kiln, using Geth and Nethermind.
- This isn't necessarily the most efficient method, and new engine APIs are being discussed to improve this: https://github.com/ethereum/execution-apis/pull/146.
- We're depending on the `ethers` master branch, due to lots of recent changes. We're also using a workaround for https://github.com/gakonst/ethers-rs/issues/1134.
- Payload reconstruction is used in the HTTP API via `BeaconChain::get_block`, which is now `async`. Due to the `async` fn, the `blocking_json` wrapper has been removed.
- Payload reconstruction is used in network RPC to serve blocks-by-{root,range} responses. Here the `async` adjustment is messier, although I think I've managed to come up with a reasonable compromise: the handlers take the `SendOnDrop` by value so that they can drop it on _task completion_ (after the `fn` returns). Still, this is introducing disk reads onto core executor threads, which may have a negative performance impact (thoughts appreciated).
## Additional Info
- [x] For performance it would be great to remove the cloning of full blocks when converting them to blinded blocks to write to disk. I'm going to experiment with a `put_block` API that takes the block by value, breaks it into a blinded block and a payload, stores the blinded block, and then re-assembles the full block for the caller.
- [x] We should measure the latency of blocks-by-root and blocks-by-range responses.
- [x] We should add integration tests that stress the payload reconstruction (basic tests done, issue for more extensive tests: https://github.com/sigp/lighthouse/issues/3159)
- [x] We should (manually) test the schema v9 migration from several prior versions, particularly as blocks have changed on disk and some migrations rely on being able to load blocks.
Co-authored-by: Paul Hauner <paul@paulhauner.com>
2022-05-12 00:42:17 +00:00
|
|
|
[[package]]
|
|
|
|
name = "parity-scale-codec-derive"
|
2022-06-18 23:59:43 +00:00
|
|
|
version = "3.1.3"
|
Separate execution payloads in the DB (#3157)
## Proposed Changes
Reduce post-merge disk usage by not storing finalized execution payloads in Lighthouse's database.
:warning: **This is achieved in a backwards-incompatible way for networks that have already merged** :warning:. Kiln users and shadow fork enjoyers will be unable to downgrade after running the code from this PR. The upgrade migration may take several minutes to run, and can't be aborted after it begins.
The main changes are:
- New column in the database called `ExecPayload`, keyed by beacon block root.
- The `BeaconBlock` column now stores blinded blocks only.
- Lots of places that previously used full blocks now use blinded blocks, e.g. analytics APIs, block replay in the DB, etc.
- On finalization:
- `prune_abanonded_forks` deletes non-canonical payloads whilst deleting non-canonical blocks.
- `migrate_db` deletes finalized canonical payloads whilst deleting finalized states.
- Conversions between blinded and full blocks are implemented in a compositional way, duplicating some work from Sean's PR #3134.
- The execution layer has a new `get_payload_by_block_hash` method that reconstructs a payload using the EE's `eth_getBlockByHash` call.
- I've tested manually that it works on Kiln, using Geth and Nethermind.
- This isn't necessarily the most efficient method, and new engine APIs are being discussed to improve this: https://github.com/ethereum/execution-apis/pull/146.
- We're depending on the `ethers` master branch, due to lots of recent changes. We're also using a workaround for https://github.com/gakonst/ethers-rs/issues/1134.
- Payload reconstruction is used in the HTTP API via `BeaconChain::get_block`, which is now `async`. Due to the `async` fn, the `blocking_json` wrapper has been removed.
- Payload reconstruction is used in network RPC to serve blocks-by-{root,range} responses. Here the `async` adjustment is messier, although I think I've managed to come up with a reasonable compromise: the handlers take the `SendOnDrop` by value so that they can drop it on _task completion_ (after the `fn` returns). Still, this is introducing disk reads onto core executor threads, which may have a negative performance impact (thoughts appreciated).
## Additional Info
- [x] For performance it would be great to remove the cloning of full blocks when converting them to blinded blocks to write to disk. I'm going to experiment with a `put_block` API that takes the block by value, breaks it into a blinded block and a payload, stores the blinded block, and then re-assembles the full block for the caller.
- [x] We should measure the latency of blocks-by-root and blocks-by-range responses.
- [x] We should add integration tests that stress the payload reconstruction (basic tests done, issue for more extensive tests: https://github.com/sigp/lighthouse/issues/3159)
- [x] We should (manually) test the schema v9 migration from several prior versions, particularly as blocks have changed on disk and some migrations rely on being able to load blocks.
Co-authored-by: Paul Hauner <paul@paulhauner.com>
2022-05-12 00:42:17 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2022-06-18 23:59:43 +00:00
|
|
|
checksum = "9299338969a3d2f491d65f140b00ddec470858402f888af98e8642fb5e8965cd"
|
Separate execution payloads in the DB (#3157)
## Proposed Changes
Reduce post-merge disk usage by not storing finalized execution payloads in Lighthouse's database.
:warning: **This is achieved in a backwards-incompatible way for networks that have already merged** :warning:. Kiln users and shadow fork enjoyers will be unable to downgrade after running the code from this PR. The upgrade migration may take several minutes to run, and can't be aborted after it begins.
The main changes are:
- New column in the database called `ExecPayload`, keyed by beacon block root.
- The `BeaconBlock` column now stores blinded blocks only.
- Lots of places that previously used full blocks now use blinded blocks, e.g. analytics APIs, block replay in the DB, etc.
- On finalization:
- `prune_abanonded_forks` deletes non-canonical payloads whilst deleting non-canonical blocks.
- `migrate_db` deletes finalized canonical payloads whilst deleting finalized states.
- Conversions between blinded and full blocks are implemented in a compositional way, duplicating some work from Sean's PR #3134.
- The execution layer has a new `get_payload_by_block_hash` method that reconstructs a payload using the EE's `eth_getBlockByHash` call.
- I've tested manually that it works on Kiln, using Geth and Nethermind.
- This isn't necessarily the most efficient method, and new engine APIs are being discussed to improve this: https://github.com/ethereum/execution-apis/pull/146.
- We're depending on the `ethers` master branch, due to lots of recent changes. We're also using a workaround for https://github.com/gakonst/ethers-rs/issues/1134.
- Payload reconstruction is used in the HTTP API via `BeaconChain::get_block`, which is now `async`. Due to the `async` fn, the `blocking_json` wrapper has been removed.
- Payload reconstruction is used in network RPC to serve blocks-by-{root,range} responses. Here the `async` adjustment is messier, although I think I've managed to come up with a reasonable compromise: the handlers take the `SendOnDrop` by value so that they can drop it on _task completion_ (after the `fn` returns). Still, this is introducing disk reads onto core executor threads, which may have a negative performance impact (thoughts appreciated).
## Additional Info
- [x] For performance it would be great to remove the cloning of full blocks when converting them to blinded blocks to write to disk. I'm going to experiment with a `put_block` API that takes the block by value, breaks it into a blinded block and a payload, stores the blinded block, and then re-assembles the full block for the caller.
- [x] We should measure the latency of blocks-by-root and blocks-by-range responses.
- [x] We should add integration tests that stress the payload reconstruction (basic tests done, issue for more extensive tests: https://github.com/sigp/lighthouse/issues/3159)
- [x] We should (manually) test the schema v9 migration from several prior versions, particularly as blocks have changed on disk and some migrations rely on being able to load blocks.
Co-authored-by: Paul Hauner <paul@paulhauner.com>
2022-05-12 00:42:17 +00:00
|
|
|
dependencies = [
|
|
|
|
"proc-macro-crate",
|
|
|
|
"proc-macro2",
|
|
|
|
"quote",
|
|
|
|
"syn",
|
|
|
|
]
|
|
|
|
|
2020-07-06 01:55:56 +00:00
|
|
|
[[package]]
|
|
|
|
name = "parking_lot"
|
2021-09-16 04:45:05 +00:00
|
|
|
version = "0.11.2"
|
2020-07-06 01:55:56 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2021-09-16 04:45:05 +00:00
|
|
|
checksum = "7d17b78036a60663b797adeaee46f5c9dfebb86948d1255007a1d6be0271ff99"
|
2020-07-06 01:55:56 +00:00
|
|
|
dependencies = [
|
|
|
|
"instant",
|
2020-12-09 01:34:58 +00:00
|
|
|
"lock_api",
|
2022-03-02 05:09:52 +00:00
|
|
|
"parking_lot_core 0.8.5",
|
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "parking_lot"
|
2022-06-18 23:59:43 +00:00
|
|
|
version = "0.12.1"
|
2022-03-02 05:09:52 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2022-06-18 23:59:43 +00:00
|
|
|
checksum = "3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f"
|
2022-03-02 05:09:52 +00:00
|
|
|
dependencies = [
|
|
|
|
"lock_api",
|
2022-06-18 23:59:43 +00:00
|
|
|
"parking_lot_core 0.9.3",
|
2020-07-06 01:55:56 +00:00
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "parking_lot_core"
|
2021-09-16 04:45:05 +00:00
|
|
|
version = "0.8.5"
|
2020-07-06 01:55:56 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2021-09-16 04:45:05 +00:00
|
|
|
checksum = "d76e8e1493bcac0d2766c42737f34458f1c8c50c0d23bcb24ea953affb273216"
|
2020-07-06 01:55:56 +00:00
|
|
|
dependencies = [
|
2021-11-18 05:08:42 +00:00
|
|
|
"cfg-if",
|
2020-07-06 01:55:56 +00:00
|
|
|
"instant",
|
2020-05-10 09:56:31 +00:00
|
|
|
"libc",
|
2021-07-05 00:54:17 +00:00
|
|
|
"redox_syscall",
|
2020-12-09 01:34:58 +00:00
|
|
|
"smallvec",
|
2021-07-09 03:20:24 +00:00
|
|
|
"winapi",
|
2019-12-09 11:39:44 +00:00
|
|
|
]
|
|
|
|
|
2022-03-02 05:09:52 +00:00
|
|
|
[[package]]
|
|
|
|
name = "parking_lot_core"
|
2022-06-18 23:59:43 +00:00
|
|
|
version = "0.9.3"
|
2022-03-02 05:09:52 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2022-06-18 23:59:43 +00:00
|
|
|
checksum = "09a279cbf25cb0757810394fbc1e359949b59e348145c643a939a525692e6929"
|
2022-03-02 05:09:52 +00:00
|
|
|
dependencies = [
|
|
|
|
"cfg-if",
|
|
|
|
"libc",
|
|
|
|
"redox_syscall",
|
|
|
|
"smallvec",
|
|
|
|
"windows-sys",
|
|
|
|
]
|
|
|
|
|
2021-08-30 23:27:28 +00:00
|
|
|
[[package]]
|
|
|
|
name = "paste"
|
2022-04-04 00:26:16 +00:00
|
|
|
version = "1.0.7"
|
2021-08-30 23:27:28 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2022-04-04 00:26:16 +00:00
|
|
|
checksum = "0c520e05135d6e763148b6426a837e239041653ba7becd2e538c076c738025fc"
|
2021-08-30 23:27:28 +00:00
|
|
|
|
2020-07-01 08:01:03 +00:00
|
|
|
[[package]]
|
|
|
|
name = "pbkdf2"
|
|
|
|
version = "0.4.0"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "216eaa586a190f0a738f2f918511eecfa90f13295abec0e457cdebcceda80cbd"
|
|
|
|
dependencies = [
|
|
|
|
"crypto-mac 0.8.0",
|
EIP-2386 (draft): Eth2 wallet (#1117)
* Add test to understand flow of key storage
* First commit
* Committing to save trait stuff
* Working naive design
* Add keystore struct
* Move keystore files into their own module
* Add serde (de)serialize_with magic
* Add keystore test
* Fix tests
* Add comments and minor fixes
* Pass optional params to `to_keystore` function
* Add `path` field to keystore
* Add function to read Keystore from file
* Add test vectors and fix Version serialization
* Checksum params is empty object
* Add public key to Keystore
* Add function for saving keystore into file
* Deleted account_manager main.rs
* Move keystore module to validator_client
* Add save_keystore method to validator_directory
* Add load_keystore function. Minor refactorings
* Fixed dependencies
* Address some review comments
* Add Password newtype; derive Zeroize
* Fix test
* Move keystore into own crate
* Remove padding
* Add error enum, zeroize more things
* Fix comment
* Add keystore builder
* Remove keystore stuff from val client
* Add more tests, comments
* Add more comments, test vectors
* Progress on improving JSON validation
* More JSON verification
* Start moving JSON into own mod
* Remove old code
* Add more tests, reader/writers
* Tidy
* Move keystore into own file
* Move more logic into keystore file
* Tidy
* Tidy
* Allow for odd-character hex
* Add more json missing field checks
* Use scrypt by default
* Tidy, address comments
* Test path and uuid in vectors
* Fix comment
* Add checks for kdf params
* Enforce empty kdf message
* Expose json_keystore mod
* First commits on path derivation
* Progress with implementation
* More progress
* Passing intermediate test vectors
* Tidy, add comments
* Add DerivedKey structs
* Move key derivation into own crate
* Add zeroize structs
* Return error for empty seed
* Add tests
* Tidy
* First commits on path derivation
* Progress with implementation
* Move key derivation into own crate
* Start defining JSON wallet
* Add progress
* Split out encrypt/decrypt
* First commits on path derivation
* Progress with implementation
* More progress
* Passing intermediate test vectors
* Tidy, add comments
* Add DerivedKey structs
* Move key derivation into own crate
* Add zeroize structs
* Return error for empty seed
* Add tests
* Tidy
* Add progress
* Replace some password usage with slice
* First commits on path derivation
* Progress with implementation
* More progress
* Passing intermediate test vectors
* Tidy, add comments
* Add DerivedKey structs
* Move key derivation into own crate
* Add zeroize structs
* Return error for empty seed
* Add tests
* Tidy
* Add progress
* Expose PlainText struct
* First commits on path derivation
* Progress with implementation
* More progress
* Passing intermediate test vectors
* Tidy, add comments
* Add DerivedKey structs
* Move key derivation into own crate
* Add zeroize structs
* Return error for empty seed
* Add tests
* Tidy
* Add builder
* Expose consts, remove Password
* Minor progress
* Expose SALT_SIZE
* First compiling version
* Add test vectors
* Move dbg assert statement
* Add mnemonic, tidy
* Tidy
* Add testing
* Fix broken test
* Address review comments
Co-authored-by: pawan <pawandhananjay@gmail.com>
2020-05-11 22:54:59 +00:00
|
|
|
]
|
|
|
|
|
2020-07-01 08:01:03 +00:00
|
|
|
[[package]]
|
|
|
|
name = "pbkdf2"
|
2021-08-17 01:00:24 +00:00
|
|
|
version = "0.8.0"
|
2020-07-01 08:01:03 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2021-08-17 01:00:24 +00:00
|
|
|
checksum = "d95f5254224e617595d2cc3cc73ff0a5eaf2637519e25f03388154e9378b6ffa"
|
2020-07-01 08:01:03 +00:00
|
|
|
dependencies = [
|
2021-08-17 01:00:24 +00:00
|
|
|
"crypto-mac 0.11.1",
|
EIP-2386 (draft): Eth2 wallet (#1117)
* Add test to understand flow of key storage
* First commit
* Committing to save trait stuff
* Working naive design
* Add keystore struct
* Move keystore files into their own module
* Add serde (de)serialize_with magic
* Add keystore test
* Fix tests
* Add comments and minor fixes
* Pass optional params to `to_keystore` function
* Add `path` field to keystore
* Add function to read Keystore from file
* Add test vectors and fix Version serialization
* Checksum params is empty object
* Add public key to Keystore
* Add function for saving keystore into file
* Deleted account_manager main.rs
* Move keystore module to validator_client
* Add save_keystore method to validator_directory
* Add load_keystore function. Minor refactorings
* Fixed dependencies
* Address some review comments
* Add Password newtype; derive Zeroize
* Fix test
* Move keystore into own crate
* Remove padding
* Add error enum, zeroize more things
* Fix comment
* Add keystore builder
* Remove keystore stuff from val client
* Add more tests, comments
* Add more comments, test vectors
* Progress on improving JSON validation
* More JSON verification
* Start moving JSON into own mod
* Remove old code
* Add more tests, reader/writers
* Tidy
* Move keystore into own file
* Move more logic into keystore file
* Tidy
* Tidy
* Allow for odd-character hex
* Add more json missing field checks
* Use scrypt by default
* Tidy, address comments
* Test path and uuid in vectors
* Fix comment
* Add checks for kdf params
* Enforce empty kdf message
* Expose json_keystore mod
* First commits on path derivation
* Progress with implementation
* More progress
* Passing intermediate test vectors
* Tidy, add comments
* Add DerivedKey structs
* Move key derivation into own crate
* Add zeroize structs
* Return error for empty seed
* Add tests
* Tidy
* First commits on path derivation
* Progress with implementation
* Move key derivation into own crate
* Start defining JSON wallet
* Add progress
* Split out encrypt/decrypt
* First commits on path derivation
* Progress with implementation
* More progress
* Passing intermediate test vectors
* Tidy, add comments
* Add DerivedKey structs
* Move key derivation into own crate
* Add zeroize structs
* Return error for empty seed
* Add tests
* Tidy
* Add progress
* Replace some password usage with slice
* First commits on path derivation
* Progress with implementation
* More progress
* Passing intermediate test vectors
* Tidy, add comments
* Add DerivedKey structs
* Move key derivation into own crate
* Add zeroize structs
* Return error for empty seed
* Add tests
* Tidy
* Add progress
* Expose PlainText struct
* First commits on path derivation
* Progress with implementation
* More progress
* Passing intermediate test vectors
* Tidy, add comments
* Add DerivedKey structs
* Move key derivation into own crate
* Add zeroize structs
* Return error for empty seed
* Add tests
* Tidy
* Add builder
* Expose consts, remove Password
* Minor progress
* Expose SALT_SIZE
* First compiling version
* Add test vectors
* Move dbg assert statement
* Add mnemonic, tidy
* Tidy
* Add testing
* Fix broken test
* Address review comments
Co-authored-by: pawan <pawandhananjay@gmail.com>
2020-05-11 22:54:59 +00:00
|
|
|
]
|
|
|
|
|
2021-12-21 08:23:17 +00:00
|
|
|
[[package]]
|
|
|
|
name = "peeking_take_while"
|
|
|
|
version = "0.1.2"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "19b17cddbe7ec3f8bc800887bab5e717348c95ea2ca0b1bf0837fb964dc67099"
|
|
|
|
|
2022-03-08 06:46:24 +00:00
|
|
|
[[package]]
|
|
|
|
name = "pem"
|
|
|
|
version = "1.0.2"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "e9a3b09a20e374558580a4914d3b7d89bd61b954a5a5e1dcbea98753addb1947"
|
|
|
|
dependencies = [
|
2022-04-04 00:26:16 +00:00
|
|
|
"base64",
|
2022-03-08 06:46:24 +00:00
|
|
|
]
|
|
|
|
|
2019-12-09 11:39:44 +00:00
|
|
|
[[package]]
|
|
|
|
name = "percent-encoding"
|
|
|
|
version = "2.1.0"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2020-05-10 09:56:31 +00:00
|
|
|
checksum = "d4fd5641d01c8f18a23da7b6fe29298ff4b55afcccdf78973b24cf3175fee32e"
|
2019-12-09 11:39:44 +00:00
|
|
|
|
2021-05-19 23:05:16 +00:00
|
|
|
[[package]]
|
|
|
|
name = "pest"
|
|
|
|
version = "2.1.3"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "10f4872ae94d7b90ae48754df22fd42ad52ce740b8f370b03da4835417403e53"
|
|
|
|
dependencies = [
|
|
|
|
"ucd-trie",
|
|
|
|
]
|
|
|
|
|
2021-10-29 01:59:29 +00:00
|
|
|
[[package]]
|
|
|
|
name = "petgraph"
|
2022-06-18 23:59:43 +00:00
|
|
|
version = "0.6.2"
|
2021-10-29 01:59:29 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2022-06-18 23:59:43 +00:00
|
|
|
checksum = "e6d5014253a1331579ce62aa67443b4a658c5e7dd03d4bc6d302b94474888143"
|
2021-10-29 01:59:29 +00:00
|
|
|
dependencies = [
|
2021-12-22 06:17:14 +00:00
|
|
|
"fixedbitset",
|
2020-05-17 11:16:48 +00:00
|
|
|
"indexmap",
|
|
|
|
]
|
|
|
|
|
2022-07-18 01:51:36 +00:00
|
|
|
[[package]]
|
|
|
|
name = "pharos"
|
|
|
|
version = "0.5.3"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "e9567389417feee6ce15dd6527a8a1ecac205ef62c2932bcf3d9f6fc5b78b414"
|
|
|
|
dependencies = [
|
|
|
|
"futures",
|
|
|
|
"rustc_version 0.4.0",
|
|
|
|
]
|
|
|
|
|
2020-05-17 11:16:48 +00:00
|
|
|
[[package]]
|
|
|
|
name = "pin-project"
|
2022-07-05 23:36:42 +00:00
|
|
|
version = "0.4.30"
|
2020-05-17 11:16:48 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2022-07-05 23:36:42 +00:00
|
|
|
checksum = "3ef0f924a5ee7ea9cbcea77529dba45f8a9ba9f622419fe3386ca581a3ae9d5a"
|
2020-05-17 11:16:48 +00:00
|
|
|
dependencies = [
|
2022-07-05 23:36:42 +00:00
|
|
|
"pin-project-internal 0.4.30",
|
2020-10-23 03:01:31 +00:00
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "pin-project"
|
2022-07-05 23:36:42 +00:00
|
|
|
version = "1.0.11"
|
2020-10-23 03:01:31 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2022-07-05 23:36:42 +00:00
|
|
|
checksum = "78203e83c48cffbe01e4a2d35d566ca4de445d79a85372fc64e378bfc812a260"
|
2020-10-23 03:01:31 +00:00
|
|
|
dependencies = [
|
2022-07-05 23:36:42 +00:00
|
|
|
"pin-project-internal 1.0.11",
|
2020-05-17 11:16:48 +00:00
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "pin-project-internal"
|
2022-07-05 23:36:42 +00:00
|
|
|
version = "0.4.30"
|
2020-05-17 11:16:48 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2022-07-05 23:36:42 +00:00
|
|
|
checksum = "851c8d0ce9bebe43790dedfc86614c23494ac9f423dd618d3a61fc693eafe61e"
|
2020-05-17 11:16:48 +00:00
|
|
|
dependencies = [
|
|
|
|
"proc-macro2",
|
|
|
|
"quote",
|
|
|
|
"syn",
|
|
|
|
]
|
|
|
|
|
2020-10-23 03:01:31 +00:00
|
|
|
[[package]]
|
|
|
|
name = "pin-project-internal"
|
2022-07-05 23:36:42 +00:00
|
|
|
version = "1.0.11"
|
2020-10-23 03:01:31 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2022-07-05 23:36:42 +00:00
|
|
|
checksum = "710faf75e1b33345361201d36d04e98ac1ed8909151a017ed384700836104c74"
|
2020-10-23 03:01:31 +00:00
|
|
|
dependencies = [
|
|
|
|
"proc-macro2",
|
|
|
|
"quote",
|
|
|
|
"syn",
|
|
|
|
]
|
|
|
|
|
2020-05-17 11:16:48 +00:00
|
|
|
[[package]]
|
|
|
|
name = "pin-project-lite"
|
2021-03-08 06:27:49 +00:00
|
|
|
version = "0.1.12"
|
2020-05-17 11:16:48 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2021-03-08 06:27:49 +00:00
|
|
|
checksum = "257b64915a082f7811703966789728173279bdebb956b143dbcd23f6f970a777"
|
2020-05-17 11:16:48 +00:00
|
|
|
|
2020-11-24 00:44:40 +00:00
|
|
|
[[package]]
|
|
|
|
name = "pin-project-lite"
|
2022-06-18 23:59:43 +00:00
|
|
|
version = "0.2.9"
|
2020-11-24 00:44:40 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2022-06-18 23:59:43 +00:00
|
|
|
checksum = "e0a7ae3ac2f1173085d398531c705756c94a4c56843785df85a60c1a0afac116"
|
2020-11-24 00:44:40 +00:00
|
|
|
|
2020-05-17 11:16:48 +00:00
|
|
|
[[package]]
|
|
|
|
name = "pin-utils"
|
|
|
|
version = "0.1.0"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184"
|
|
|
|
|
2021-02-10 23:29:49 +00:00
|
|
|
[[package]]
|
|
|
|
name = "pkcs8"
|
2021-07-05 00:54:17 +00:00
|
|
|
version = "0.6.1"
|
2021-02-10 23:29:49 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2021-07-05 00:54:17 +00:00
|
|
|
checksum = "c9c2f795bc591cb3384cb64082a578b89207ac92bb89c9d98c1ea2ace7cd8110"
|
2021-02-10 23:29:49 +00:00
|
|
|
dependencies = [
|
Separate execution payloads in the DB (#3157)
## Proposed Changes
Reduce post-merge disk usage by not storing finalized execution payloads in Lighthouse's database.
:warning: **This is achieved in a backwards-incompatible way for networks that have already merged** :warning:. Kiln users and shadow fork enjoyers will be unable to downgrade after running the code from this PR. The upgrade migration may take several minutes to run, and can't be aborted after it begins.
The main changes are:
- New column in the database called `ExecPayload`, keyed by beacon block root.
- The `BeaconBlock` column now stores blinded blocks only.
- Lots of places that previously used full blocks now use blinded blocks, e.g. analytics APIs, block replay in the DB, etc.
- On finalization:
- `prune_abanonded_forks` deletes non-canonical payloads whilst deleting non-canonical blocks.
- `migrate_db` deletes finalized canonical payloads whilst deleting finalized states.
- Conversions between blinded and full blocks are implemented in a compositional way, duplicating some work from Sean's PR #3134.
- The execution layer has a new `get_payload_by_block_hash` method that reconstructs a payload using the EE's `eth_getBlockByHash` call.
- I've tested manually that it works on Kiln, using Geth and Nethermind.
- This isn't necessarily the most efficient method, and new engine APIs are being discussed to improve this: https://github.com/ethereum/execution-apis/pull/146.
- We're depending on the `ethers` master branch, due to lots of recent changes. We're also using a workaround for https://github.com/gakonst/ethers-rs/issues/1134.
- Payload reconstruction is used in the HTTP API via `BeaconChain::get_block`, which is now `async`. Due to the `async` fn, the `blocking_json` wrapper has been removed.
- Payload reconstruction is used in network RPC to serve blocks-by-{root,range} responses. Here the `async` adjustment is messier, although I think I've managed to come up with a reasonable compromise: the handlers take the `SendOnDrop` by value so that they can drop it on _task completion_ (after the `fn` returns). Still, this is introducing disk reads onto core executor threads, which may have a negative performance impact (thoughts appreciated).
## Additional Info
- [x] For performance it would be great to remove the cloning of full blocks when converting them to blinded blocks to write to disk. I'm going to experiment with a `put_block` API that takes the block by value, breaks it into a blinded block and a payload, stores the blinded block, and then re-assembles the full block for the caller.
- [x] We should measure the latency of blocks-by-root and blocks-by-range responses.
- [x] We should add integration tests that stress the payload reconstruction (basic tests done, issue for more extensive tests: https://github.com/sigp/lighthouse/issues/3159)
- [x] We should (manually) test the schema v9 migration from several prior versions, particularly as blocks have changed on disk and some migrations rely on being able to load blocks.
Co-authored-by: Paul Hauner <paul@paulhauner.com>
2022-05-12 00:42:17 +00:00
|
|
|
"der 0.3.5",
|
|
|
|
"spki 0.3.0",
|
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "pkcs8"
|
|
|
|
version = "0.8.0"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "7cabda3fb821068a9a4fab19a683eac3af12edf0f34b94a8be53c4972b8149d0"
|
|
|
|
dependencies = [
|
|
|
|
"der 0.5.1",
|
|
|
|
"spki 0.5.4",
|
|
|
|
"zeroize",
|
2021-02-10 23:29:49 +00:00
|
|
|
]
|
|
|
|
|
2019-12-09 11:39:44 +00:00
|
|
|
[[package]]
|
|
|
|
name = "pkg-config"
|
2022-04-04 00:26:16 +00:00
|
|
|
version = "0.3.25"
|
2019-12-09 11:39:44 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2022-04-04 00:26:16 +00:00
|
|
|
checksum = "1df8c4ec4b0627e53bdf214615ad287367e482558cf84b109250b37464dc03ae"
|
Initial work towards v0.2.0 (#924)
* Remove ping protocol
* Initial renaming of network services
* Correct rebasing relative to latest master
* Start updating types
* Adds HashMapDelay struct to utils
* Initial network restructure
* Network restructure. Adds new types for v0.2.0
* Removes build artefacts
* Shift validation to beacon chain
* Temporarily remove gossip validation
This is to be updated to match current optimisation efforts.
* Adds AggregateAndProof
* Begin rebuilding pubsub encoding/decoding
* Signature hacking
* Shift gossipsup decoding into eth2_libp2p
* Existing EF tests passing with fake_crypto
* Shifts block encoding/decoding into RPC
* Delete outdated API spec
* All release tests passing bar genesis state parsing
* Update and test YamlConfig
* Update to spec v0.10 compatible BLS
* Updates to BLS EF tests
* Add EF test for AggregateVerify
And delete unused hash2curve tests for uncompressed points
* Update EF tests to v0.10.1
* Use optional block root correctly in block proc
* Use genesis fork in deposit domain. All tests pass
* Fast aggregate verify test
* Update REST API docs
* Fix unused import
* Bump spec tags to v0.10.1
* Add `seconds_per_eth1_block` to chainspec
* Update to timestamp based eth1 voting scheme
* Return None from `get_votes_to_consider` if block cache is empty
* Handle overflows in `is_candidate_block`
* Revert to failing tests
* Fix eth1 data sets test
* Choose default vote according to spec
* Fix collect_valid_votes tests
* Fix `get_votes_to_consider` to choose all eligible blocks
* Uncomment winning_vote tests
* Add comments; remove unused code
* Reduce seconds_per_eth1_block for simulation
* Addressed review comments
* Add test for default vote case
* Fix logs
* Remove unused functions
* Meter default eth1 votes
* Fix comments
* Progress on attestation service
* Address review comments; remove unused dependency
* Initial work on removing libp2p lock
* Add LRU caches to store (rollup)
* Update attestation validation for DB changes (WIP)
* Initial version of should_forward_block
* Scaffold
* Progress on attestation validation
Also, consolidate prod+testing slot clocks so that they share much
of the same implementation and can both handle sub-slot time changes.
* Removes lock from libp2p service
* Completed network lock removal
* Finish(?) attestation processing
* Correct network termination future
* Add slot check to block check
* Correct fmt issues
* Remove Drop implementation for network service
* Add first attempt at attestation proc. re-write
* Add version 2 of attestation processing
* Minor fixes
* Add validator pubkey cache
* Make get_indexed_attestation take a committee
* Link signature processing into new attn verification
* First working version
* Ensure pubkey cache is updated
* Add more metrics, slight optimizations
* Clone committee cache during attestation processing
* Update shuffling cache during block processing
* Remove old commented-out code
* Fix shuffling cache insert bug
* Used indexed attestation in fork choice
* Restructure attn processing, add metrics
* Add more detailed metrics
* Tidy, fix failing tests
* Fix failing tests, tidy
* Address reviewers suggestions
* Disable/delete two outdated tests
* Modification of validator for subscriptions
* Add slot signing to validator client
* Further progress on validation subscription
* Adds necessary validator subscription functionality
* Add new Pubkeys struct to signature_sets
* Refactor with functional approach
* Update beacon chain
* Clean up validator <-> beacon node http types
* Add aggregator status to ValidatorDuty
* Impl Clone for manual slot clock
* Fix minor errors
* Further progress validator client subscription
* Initial subscription and aggregation handling
* Remove decompressed member from pubkey bytes
* Progress to modifying val client for attestation aggregation
* First draft of validator client upgrade for aggregate attestations
* Add hashmap for indices lookup
* Add state cache, remove store cache
* Only build the head committee cache
* Removes lock on a network channel
* Partially implement beacon node subscription http api
* Correct compilation issues
* Change `get_attesting_indices` to use Vec
* Fix failing test
* Partial implementation of timer
* Adds timer, removes exit_future, http api to op pool
* Partial multiple aggregate attestation handling
* Permits bulk messages accross gossipsub network channel
* Correct compile issues
* Improve gosispsub messaging and correct rest api helpers
* Added global gossipsub subscriptions
* Update validator subscriptions data structs
* Tidy
* Re-structure validator subscriptions
* Initial handling of subscriptions
* Re-structure network service
* Add pubkey cache persistence file
* Add more comments
* Integrate persistence file into builder
* Add pubkey cache tests
* Add HashSetDelay and introduce into attestation service
* Handles validator subscriptions
* Add data_dir to beacon chain builder
* Remove Option in pubkey cache persistence file
* Ensure consistency between datadir/data_dir
* Fix failing network test
* Peer subnet discovery gets queued for future subscriptions
* Reorganise attestation service functions
* Initial wiring of attestation service
* First draft of attestation service timing logic
* Correct minor typos
* Tidy
* Fix todos
* Improve tests
* Add PeerInfo to connected peers mapping
* Fix compile error
* Fix compile error from merge
* Split up block processing metrics
* Tidy
* Refactor get_pubkey_from_state
* Remove commented-out code
* Rename state_cache -> checkpoint_cache
* Rename Checkpoint -> Snapshot
* Tidy, add comments
* Tidy up find_head function
* Change some checkpoint -> snapshot
* Add tests
* Expose max_len
* Remove dead code
* Tidy
* Fix bug
* Add sync-speed metric
* Add first attempt at VerifiableBlock
* Start integrating into beacon chain
* Integrate VerifiableBlock
* Rename VerifableBlock -> PartialBlockVerification
* Add start of typed methods
* Add progress
* Add further progress
* Rename structs
* Add full block verification to block_processing.rs
* Further beacon chain integration
* Update checks for gossip
* Add todo
* Start adding segement verification
* Add passing chain segement test
* Initial integration with batch sync
* Minor changes
* Tidy, add more error checking
* Start adding chain_segment tests
* Finish invalid signature tests
* Include single and gossip verified blocks in tests
* Add gossip verification tests
* Start adding docs
* Finish adding comments to block_processing.rs
* Rename block_processing.rs -> block_verification
* Start removing old block processing code
* Fixes beacon_chain compilation
* Fix project-wide compile errors
* Remove old code
* Correct code to pass all tests
* Fix bug with beacon proposer index
* Fix shim for BlockProcessingError
* Only process one epoch at a time
* Fix loop in chain segment processing
* Correct tests from master merge
* Add caching for state.eth1_data_votes
* Add BeaconChain::validator_pubkey
* Revert "Add caching for state.eth1_data_votes"
This reverts commit cd73dcd6434fb8d8e6bf30c5356355598ea7b78e.
Co-authored-by: Grant Wuerker <gwuerker@gmail.com>
Co-authored-by: Michael Sproul <michael@sigmaprime.io>
Co-authored-by: Michael Sproul <micsproul@gmail.com>
Co-authored-by: pawan <pawandhananjay@gmail.com>
Co-authored-by: Paul Hauner <paul@paulhauner.com>
2020-03-17 06:24:44 +00:00
|
|
|
|
2020-05-29 02:03:30 +00:00
|
|
|
[[package]]
|
|
|
|
name = "platforms"
|
2022-04-04 00:26:16 +00:00
|
|
|
version = "2.0.0"
|
2020-05-29 02:03:30 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2022-04-04 00:26:16 +00:00
|
|
|
checksum = "e8d0eef3571242013a0d5dc84861c3ae4a652e56e12adf8bdc26ff5f8cb34c94"
|
2020-05-29 02:03:30 +00:00
|
|
|
|
Initial work towards v0.2.0 (#924)
* Remove ping protocol
* Initial renaming of network services
* Correct rebasing relative to latest master
* Start updating types
* Adds HashMapDelay struct to utils
* Initial network restructure
* Network restructure. Adds new types for v0.2.0
* Removes build artefacts
* Shift validation to beacon chain
* Temporarily remove gossip validation
This is to be updated to match current optimisation efforts.
* Adds AggregateAndProof
* Begin rebuilding pubsub encoding/decoding
* Signature hacking
* Shift gossipsup decoding into eth2_libp2p
* Existing EF tests passing with fake_crypto
* Shifts block encoding/decoding into RPC
* Delete outdated API spec
* All release tests passing bar genesis state parsing
* Update and test YamlConfig
* Update to spec v0.10 compatible BLS
* Updates to BLS EF tests
* Add EF test for AggregateVerify
And delete unused hash2curve tests for uncompressed points
* Update EF tests to v0.10.1
* Use optional block root correctly in block proc
* Use genesis fork in deposit domain. All tests pass
* Fast aggregate verify test
* Update REST API docs
* Fix unused import
* Bump spec tags to v0.10.1
* Add `seconds_per_eth1_block` to chainspec
* Update to timestamp based eth1 voting scheme
* Return None from `get_votes_to_consider` if block cache is empty
* Handle overflows in `is_candidate_block`
* Revert to failing tests
* Fix eth1 data sets test
* Choose default vote according to spec
* Fix collect_valid_votes tests
* Fix `get_votes_to_consider` to choose all eligible blocks
* Uncomment winning_vote tests
* Add comments; remove unused code
* Reduce seconds_per_eth1_block for simulation
* Addressed review comments
* Add test for default vote case
* Fix logs
* Remove unused functions
* Meter default eth1 votes
* Fix comments
* Progress on attestation service
* Address review comments; remove unused dependency
* Initial work on removing libp2p lock
* Add LRU caches to store (rollup)
* Update attestation validation for DB changes (WIP)
* Initial version of should_forward_block
* Scaffold
* Progress on attestation validation
Also, consolidate prod+testing slot clocks so that they share much
of the same implementation and can both handle sub-slot time changes.
* Removes lock from libp2p service
* Completed network lock removal
* Finish(?) attestation processing
* Correct network termination future
* Add slot check to block check
* Correct fmt issues
* Remove Drop implementation for network service
* Add first attempt at attestation proc. re-write
* Add version 2 of attestation processing
* Minor fixes
* Add validator pubkey cache
* Make get_indexed_attestation take a committee
* Link signature processing into new attn verification
* First working version
* Ensure pubkey cache is updated
* Add more metrics, slight optimizations
* Clone committee cache during attestation processing
* Update shuffling cache during block processing
* Remove old commented-out code
* Fix shuffling cache insert bug
* Used indexed attestation in fork choice
* Restructure attn processing, add metrics
* Add more detailed metrics
* Tidy, fix failing tests
* Fix failing tests, tidy
* Address reviewers suggestions
* Disable/delete two outdated tests
* Modification of validator for subscriptions
* Add slot signing to validator client
* Further progress on validation subscription
* Adds necessary validator subscription functionality
* Add new Pubkeys struct to signature_sets
* Refactor with functional approach
* Update beacon chain
* Clean up validator <-> beacon node http types
* Add aggregator status to ValidatorDuty
* Impl Clone for manual slot clock
* Fix minor errors
* Further progress validator client subscription
* Initial subscription and aggregation handling
* Remove decompressed member from pubkey bytes
* Progress to modifying val client for attestation aggregation
* First draft of validator client upgrade for aggregate attestations
* Add hashmap for indices lookup
* Add state cache, remove store cache
* Only build the head committee cache
* Removes lock on a network channel
* Partially implement beacon node subscription http api
* Correct compilation issues
* Change `get_attesting_indices` to use Vec
* Fix failing test
* Partial implementation of timer
* Adds timer, removes exit_future, http api to op pool
* Partial multiple aggregate attestation handling
* Permits bulk messages accross gossipsub network channel
* Correct compile issues
* Improve gosispsub messaging and correct rest api helpers
* Added global gossipsub subscriptions
* Update validator subscriptions data structs
* Tidy
* Re-structure validator subscriptions
* Initial handling of subscriptions
* Re-structure network service
* Add pubkey cache persistence file
* Add more comments
* Integrate persistence file into builder
* Add pubkey cache tests
* Add HashSetDelay and introduce into attestation service
* Handles validator subscriptions
* Add data_dir to beacon chain builder
* Remove Option in pubkey cache persistence file
* Ensure consistency between datadir/data_dir
* Fix failing network test
* Peer subnet discovery gets queued for future subscriptions
* Reorganise attestation service functions
* Initial wiring of attestation service
* First draft of attestation service timing logic
* Correct minor typos
* Tidy
* Fix todos
* Improve tests
* Add PeerInfo to connected peers mapping
* Fix compile error
* Fix compile error from merge
* Split up block processing metrics
* Tidy
* Refactor get_pubkey_from_state
* Remove commented-out code
* Rename state_cache -> checkpoint_cache
* Rename Checkpoint -> Snapshot
* Tidy, add comments
* Tidy up find_head function
* Change some checkpoint -> snapshot
* Add tests
* Expose max_len
* Remove dead code
* Tidy
* Fix bug
* Add sync-speed metric
* Add first attempt at VerifiableBlock
* Start integrating into beacon chain
* Integrate VerifiableBlock
* Rename VerifableBlock -> PartialBlockVerification
* Add start of typed methods
* Add progress
* Add further progress
* Rename structs
* Add full block verification to block_processing.rs
* Further beacon chain integration
* Update checks for gossip
* Add todo
* Start adding segement verification
* Add passing chain segement test
* Initial integration with batch sync
* Minor changes
* Tidy, add more error checking
* Start adding chain_segment tests
* Finish invalid signature tests
* Include single and gossip verified blocks in tests
* Add gossip verification tests
* Start adding docs
* Finish adding comments to block_processing.rs
* Rename block_processing.rs -> block_verification
* Start removing old block processing code
* Fixes beacon_chain compilation
* Fix project-wide compile errors
* Remove old code
* Correct code to pass all tests
* Fix bug with beacon proposer index
* Fix shim for BlockProcessingError
* Only process one epoch at a time
* Fix loop in chain segment processing
* Correct tests from master merge
* Add caching for state.eth1_data_votes
* Add BeaconChain::validator_pubkey
* Revert "Add caching for state.eth1_data_votes"
This reverts commit cd73dcd6434fb8d8e6bf30c5356355598ea7b78e.
Co-authored-by: Grant Wuerker <gwuerker@gmail.com>
Co-authored-by: Michael Sproul <michael@sigmaprime.io>
Co-authored-by: Michael Sproul <micsproul@gmail.com>
Co-authored-by: pawan <pawandhananjay@gmail.com>
Co-authored-by: Paul Hauner <paul@paulhauner.com>
2020-03-17 06:24:44 +00:00
|
|
|
[[package]]
|
|
|
|
name = "plotters"
|
2021-07-05 00:54:17 +00:00
|
|
|
version = "0.3.1"
|
Initial work towards v0.2.0 (#924)
* Remove ping protocol
* Initial renaming of network services
* Correct rebasing relative to latest master
* Start updating types
* Adds HashMapDelay struct to utils
* Initial network restructure
* Network restructure. Adds new types for v0.2.0
* Removes build artefacts
* Shift validation to beacon chain
* Temporarily remove gossip validation
This is to be updated to match current optimisation efforts.
* Adds AggregateAndProof
* Begin rebuilding pubsub encoding/decoding
* Signature hacking
* Shift gossipsup decoding into eth2_libp2p
* Existing EF tests passing with fake_crypto
* Shifts block encoding/decoding into RPC
* Delete outdated API spec
* All release tests passing bar genesis state parsing
* Update and test YamlConfig
* Update to spec v0.10 compatible BLS
* Updates to BLS EF tests
* Add EF test for AggregateVerify
And delete unused hash2curve tests for uncompressed points
* Update EF tests to v0.10.1
* Use optional block root correctly in block proc
* Use genesis fork in deposit domain. All tests pass
* Fast aggregate verify test
* Update REST API docs
* Fix unused import
* Bump spec tags to v0.10.1
* Add `seconds_per_eth1_block` to chainspec
* Update to timestamp based eth1 voting scheme
* Return None from `get_votes_to_consider` if block cache is empty
* Handle overflows in `is_candidate_block`
* Revert to failing tests
* Fix eth1 data sets test
* Choose default vote according to spec
* Fix collect_valid_votes tests
* Fix `get_votes_to_consider` to choose all eligible blocks
* Uncomment winning_vote tests
* Add comments; remove unused code
* Reduce seconds_per_eth1_block for simulation
* Addressed review comments
* Add test for default vote case
* Fix logs
* Remove unused functions
* Meter default eth1 votes
* Fix comments
* Progress on attestation service
* Address review comments; remove unused dependency
* Initial work on removing libp2p lock
* Add LRU caches to store (rollup)
* Update attestation validation for DB changes (WIP)
* Initial version of should_forward_block
* Scaffold
* Progress on attestation validation
Also, consolidate prod+testing slot clocks so that they share much
of the same implementation and can both handle sub-slot time changes.
* Removes lock from libp2p service
* Completed network lock removal
* Finish(?) attestation processing
* Correct network termination future
* Add slot check to block check
* Correct fmt issues
* Remove Drop implementation for network service
* Add first attempt at attestation proc. re-write
* Add version 2 of attestation processing
* Minor fixes
* Add validator pubkey cache
* Make get_indexed_attestation take a committee
* Link signature processing into new attn verification
* First working version
* Ensure pubkey cache is updated
* Add more metrics, slight optimizations
* Clone committee cache during attestation processing
* Update shuffling cache during block processing
* Remove old commented-out code
* Fix shuffling cache insert bug
* Used indexed attestation in fork choice
* Restructure attn processing, add metrics
* Add more detailed metrics
* Tidy, fix failing tests
* Fix failing tests, tidy
* Address reviewers suggestions
* Disable/delete two outdated tests
* Modification of validator for subscriptions
* Add slot signing to validator client
* Further progress on validation subscription
* Adds necessary validator subscription functionality
* Add new Pubkeys struct to signature_sets
* Refactor with functional approach
* Update beacon chain
* Clean up validator <-> beacon node http types
* Add aggregator status to ValidatorDuty
* Impl Clone for manual slot clock
* Fix minor errors
* Further progress validator client subscription
* Initial subscription and aggregation handling
* Remove decompressed member from pubkey bytes
* Progress to modifying val client for attestation aggregation
* First draft of validator client upgrade for aggregate attestations
* Add hashmap for indices lookup
* Add state cache, remove store cache
* Only build the head committee cache
* Removes lock on a network channel
* Partially implement beacon node subscription http api
* Correct compilation issues
* Change `get_attesting_indices` to use Vec
* Fix failing test
* Partial implementation of timer
* Adds timer, removes exit_future, http api to op pool
* Partial multiple aggregate attestation handling
* Permits bulk messages accross gossipsub network channel
* Correct compile issues
* Improve gosispsub messaging and correct rest api helpers
* Added global gossipsub subscriptions
* Update validator subscriptions data structs
* Tidy
* Re-structure validator subscriptions
* Initial handling of subscriptions
* Re-structure network service
* Add pubkey cache persistence file
* Add more comments
* Integrate persistence file into builder
* Add pubkey cache tests
* Add HashSetDelay and introduce into attestation service
* Handles validator subscriptions
* Add data_dir to beacon chain builder
* Remove Option in pubkey cache persistence file
* Ensure consistency between datadir/data_dir
* Fix failing network test
* Peer subnet discovery gets queued for future subscriptions
* Reorganise attestation service functions
* Initial wiring of attestation service
* First draft of attestation service timing logic
* Correct minor typos
* Tidy
* Fix todos
* Improve tests
* Add PeerInfo to connected peers mapping
* Fix compile error
* Fix compile error from merge
* Split up block processing metrics
* Tidy
* Refactor get_pubkey_from_state
* Remove commented-out code
* Rename state_cache -> checkpoint_cache
* Rename Checkpoint -> Snapshot
* Tidy, add comments
* Tidy up find_head function
* Change some checkpoint -> snapshot
* Add tests
* Expose max_len
* Remove dead code
* Tidy
* Fix bug
* Add sync-speed metric
* Add first attempt at VerifiableBlock
* Start integrating into beacon chain
* Integrate VerifiableBlock
* Rename VerifableBlock -> PartialBlockVerification
* Add start of typed methods
* Add progress
* Add further progress
* Rename structs
* Add full block verification to block_processing.rs
* Further beacon chain integration
* Update checks for gossip
* Add todo
* Start adding segement verification
* Add passing chain segement test
* Initial integration with batch sync
* Minor changes
* Tidy, add more error checking
* Start adding chain_segment tests
* Finish invalid signature tests
* Include single and gossip verified blocks in tests
* Add gossip verification tests
* Start adding docs
* Finish adding comments to block_processing.rs
* Rename block_processing.rs -> block_verification
* Start removing old block processing code
* Fixes beacon_chain compilation
* Fix project-wide compile errors
* Remove old code
* Correct code to pass all tests
* Fix bug with beacon proposer index
* Fix shim for BlockProcessingError
* Only process one epoch at a time
* Fix loop in chain segment processing
* Correct tests from master merge
* Add caching for state.eth1_data_votes
* Add BeaconChain::validator_pubkey
* Revert "Add caching for state.eth1_data_votes"
This reverts commit cd73dcd6434fb8d8e6bf30c5356355598ea7b78e.
Co-authored-by: Grant Wuerker <gwuerker@gmail.com>
Co-authored-by: Michael Sproul <michael@sigmaprime.io>
Co-authored-by: Michael Sproul <micsproul@gmail.com>
Co-authored-by: pawan <pawandhananjay@gmail.com>
Co-authored-by: Paul Hauner <paul@paulhauner.com>
2020-03-17 06:24:44 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2021-07-05 00:54:17 +00:00
|
|
|
checksum = "32a3fd9ec30b9749ce28cd91f255d569591cdf937fe280c312143e3c4bad6f2a"
|
Initial work towards v0.2.0 (#924)
* Remove ping protocol
* Initial renaming of network services
* Correct rebasing relative to latest master
* Start updating types
* Adds HashMapDelay struct to utils
* Initial network restructure
* Network restructure. Adds new types for v0.2.0
* Removes build artefacts
* Shift validation to beacon chain
* Temporarily remove gossip validation
This is to be updated to match current optimisation efforts.
* Adds AggregateAndProof
* Begin rebuilding pubsub encoding/decoding
* Signature hacking
* Shift gossipsup decoding into eth2_libp2p
* Existing EF tests passing with fake_crypto
* Shifts block encoding/decoding into RPC
* Delete outdated API spec
* All release tests passing bar genesis state parsing
* Update and test YamlConfig
* Update to spec v0.10 compatible BLS
* Updates to BLS EF tests
* Add EF test for AggregateVerify
And delete unused hash2curve tests for uncompressed points
* Update EF tests to v0.10.1
* Use optional block root correctly in block proc
* Use genesis fork in deposit domain. All tests pass
* Fast aggregate verify test
* Update REST API docs
* Fix unused import
* Bump spec tags to v0.10.1
* Add `seconds_per_eth1_block` to chainspec
* Update to timestamp based eth1 voting scheme
* Return None from `get_votes_to_consider` if block cache is empty
* Handle overflows in `is_candidate_block`
* Revert to failing tests
* Fix eth1 data sets test
* Choose default vote according to spec
* Fix collect_valid_votes tests
* Fix `get_votes_to_consider` to choose all eligible blocks
* Uncomment winning_vote tests
* Add comments; remove unused code
* Reduce seconds_per_eth1_block for simulation
* Addressed review comments
* Add test for default vote case
* Fix logs
* Remove unused functions
* Meter default eth1 votes
* Fix comments
* Progress on attestation service
* Address review comments; remove unused dependency
* Initial work on removing libp2p lock
* Add LRU caches to store (rollup)
* Update attestation validation for DB changes (WIP)
* Initial version of should_forward_block
* Scaffold
* Progress on attestation validation
Also, consolidate prod+testing slot clocks so that they share much
of the same implementation and can both handle sub-slot time changes.
* Removes lock from libp2p service
* Completed network lock removal
* Finish(?) attestation processing
* Correct network termination future
* Add slot check to block check
* Correct fmt issues
* Remove Drop implementation for network service
* Add first attempt at attestation proc. re-write
* Add version 2 of attestation processing
* Minor fixes
* Add validator pubkey cache
* Make get_indexed_attestation take a committee
* Link signature processing into new attn verification
* First working version
* Ensure pubkey cache is updated
* Add more metrics, slight optimizations
* Clone committee cache during attestation processing
* Update shuffling cache during block processing
* Remove old commented-out code
* Fix shuffling cache insert bug
* Used indexed attestation in fork choice
* Restructure attn processing, add metrics
* Add more detailed metrics
* Tidy, fix failing tests
* Fix failing tests, tidy
* Address reviewers suggestions
* Disable/delete two outdated tests
* Modification of validator for subscriptions
* Add slot signing to validator client
* Further progress on validation subscription
* Adds necessary validator subscription functionality
* Add new Pubkeys struct to signature_sets
* Refactor with functional approach
* Update beacon chain
* Clean up validator <-> beacon node http types
* Add aggregator status to ValidatorDuty
* Impl Clone for manual slot clock
* Fix minor errors
* Further progress validator client subscription
* Initial subscription and aggregation handling
* Remove decompressed member from pubkey bytes
* Progress to modifying val client for attestation aggregation
* First draft of validator client upgrade for aggregate attestations
* Add hashmap for indices lookup
* Add state cache, remove store cache
* Only build the head committee cache
* Removes lock on a network channel
* Partially implement beacon node subscription http api
* Correct compilation issues
* Change `get_attesting_indices` to use Vec
* Fix failing test
* Partial implementation of timer
* Adds timer, removes exit_future, http api to op pool
* Partial multiple aggregate attestation handling
* Permits bulk messages accross gossipsub network channel
* Correct compile issues
* Improve gosispsub messaging and correct rest api helpers
* Added global gossipsub subscriptions
* Update validator subscriptions data structs
* Tidy
* Re-structure validator subscriptions
* Initial handling of subscriptions
* Re-structure network service
* Add pubkey cache persistence file
* Add more comments
* Integrate persistence file into builder
* Add pubkey cache tests
* Add HashSetDelay and introduce into attestation service
* Handles validator subscriptions
* Add data_dir to beacon chain builder
* Remove Option in pubkey cache persistence file
* Ensure consistency between datadir/data_dir
* Fix failing network test
* Peer subnet discovery gets queued for future subscriptions
* Reorganise attestation service functions
* Initial wiring of attestation service
* First draft of attestation service timing logic
* Correct minor typos
* Tidy
* Fix todos
* Improve tests
* Add PeerInfo to connected peers mapping
* Fix compile error
* Fix compile error from merge
* Split up block processing metrics
* Tidy
* Refactor get_pubkey_from_state
* Remove commented-out code
* Rename state_cache -> checkpoint_cache
* Rename Checkpoint -> Snapshot
* Tidy, add comments
* Tidy up find_head function
* Change some checkpoint -> snapshot
* Add tests
* Expose max_len
* Remove dead code
* Tidy
* Fix bug
* Add sync-speed metric
* Add first attempt at VerifiableBlock
* Start integrating into beacon chain
* Integrate VerifiableBlock
* Rename VerifableBlock -> PartialBlockVerification
* Add start of typed methods
* Add progress
* Add further progress
* Rename structs
* Add full block verification to block_processing.rs
* Further beacon chain integration
* Update checks for gossip
* Add todo
* Start adding segement verification
* Add passing chain segement test
* Initial integration with batch sync
* Minor changes
* Tidy, add more error checking
* Start adding chain_segment tests
* Finish invalid signature tests
* Include single and gossip verified blocks in tests
* Add gossip verification tests
* Start adding docs
* Finish adding comments to block_processing.rs
* Rename block_processing.rs -> block_verification
* Start removing old block processing code
* Fixes beacon_chain compilation
* Fix project-wide compile errors
* Remove old code
* Correct code to pass all tests
* Fix bug with beacon proposer index
* Fix shim for BlockProcessingError
* Only process one epoch at a time
* Fix loop in chain segment processing
* Correct tests from master merge
* Add caching for state.eth1_data_votes
* Add BeaconChain::validator_pubkey
* Revert "Add caching for state.eth1_data_votes"
This reverts commit cd73dcd6434fb8d8e6bf30c5356355598ea7b78e.
Co-authored-by: Grant Wuerker <gwuerker@gmail.com>
Co-authored-by: Michael Sproul <michael@sigmaprime.io>
Co-authored-by: Michael Sproul <micsproul@gmail.com>
Co-authored-by: pawan <pawandhananjay@gmail.com>
Co-authored-by: Paul Hauner <paul@paulhauner.com>
2020-03-17 06:24:44 +00:00
|
|
|
dependencies = [
|
2020-05-10 09:56:31 +00:00
|
|
|
"num-traits",
|
2021-03-02 05:59:49 +00:00
|
|
|
"plotters-backend",
|
|
|
|
"plotters-svg",
|
2020-05-10 09:56:31 +00:00
|
|
|
"wasm-bindgen",
|
|
|
|
"web-sys",
|
Initial work towards v0.2.0 (#924)
* Remove ping protocol
* Initial renaming of network services
* Correct rebasing relative to latest master
* Start updating types
* Adds HashMapDelay struct to utils
* Initial network restructure
* Network restructure. Adds new types for v0.2.0
* Removes build artefacts
* Shift validation to beacon chain
* Temporarily remove gossip validation
This is to be updated to match current optimisation efforts.
* Adds AggregateAndProof
* Begin rebuilding pubsub encoding/decoding
* Signature hacking
* Shift gossipsup decoding into eth2_libp2p
* Existing EF tests passing with fake_crypto
* Shifts block encoding/decoding into RPC
* Delete outdated API spec
* All release tests passing bar genesis state parsing
* Update and test YamlConfig
* Update to spec v0.10 compatible BLS
* Updates to BLS EF tests
* Add EF test for AggregateVerify
And delete unused hash2curve tests for uncompressed points
* Update EF tests to v0.10.1
* Use optional block root correctly in block proc
* Use genesis fork in deposit domain. All tests pass
* Fast aggregate verify test
* Update REST API docs
* Fix unused import
* Bump spec tags to v0.10.1
* Add `seconds_per_eth1_block` to chainspec
* Update to timestamp based eth1 voting scheme
* Return None from `get_votes_to_consider` if block cache is empty
* Handle overflows in `is_candidate_block`
* Revert to failing tests
* Fix eth1 data sets test
* Choose default vote according to spec
* Fix collect_valid_votes tests
* Fix `get_votes_to_consider` to choose all eligible blocks
* Uncomment winning_vote tests
* Add comments; remove unused code
* Reduce seconds_per_eth1_block for simulation
* Addressed review comments
* Add test for default vote case
* Fix logs
* Remove unused functions
* Meter default eth1 votes
* Fix comments
* Progress on attestation service
* Address review comments; remove unused dependency
* Initial work on removing libp2p lock
* Add LRU caches to store (rollup)
* Update attestation validation for DB changes (WIP)
* Initial version of should_forward_block
* Scaffold
* Progress on attestation validation
Also, consolidate prod+testing slot clocks so that they share much
of the same implementation and can both handle sub-slot time changes.
* Removes lock from libp2p service
* Completed network lock removal
* Finish(?) attestation processing
* Correct network termination future
* Add slot check to block check
* Correct fmt issues
* Remove Drop implementation for network service
* Add first attempt at attestation proc. re-write
* Add version 2 of attestation processing
* Minor fixes
* Add validator pubkey cache
* Make get_indexed_attestation take a committee
* Link signature processing into new attn verification
* First working version
* Ensure pubkey cache is updated
* Add more metrics, slight optimizations
* Clone committee cache during attestation processing
* Update shuffling cache during block processing
* Remove old commented-out code
* Fix shuffling cache insert bug
* Used indexed attestation in fork choice
* Restructure attn processing, add metrics
* Add more detailed metrics
* Tidy, fix failing tests
* Fix failing tests, tidy
* Address reviewers suggestions
* Disable/delete two outdated tests
* Modification of validator for subscriptions
* Add slot signing to validator client
* Further progress on validation subscription
* Adds necessary validator subscription functionality
* Add new Pubkeys struct to signature_sets
* Refactor with functional approach
* Update beacon chain
* Clean up validator <-> beacon node http types
* Add aggregator status to ValidatorDuty
* Impl Clone for manual slot clock
* Fix minor errors
* Further progress validator client subscription
* Initial subscription and aggregation handling
* Remove decompressed member from pubkey bytes
* Progress to modifying val client for attestation aggregation
* First draft of validator client upgrade for aggregate attestations
* Add hashmap for indices lookup
* Add state cache, remove store cache
* Only build the head committee cache
* Removes lock on a network channel
* Partially implement beacon node subscription http api
* Correct compilation issues
* Change `get_attesting_indices` to use Vec
* Fix failing test
* Partial implementation of timer
* Adds timer, removes exit_future, http api to op pool
* Partial multiple aggregate attestation handling
* Permits bulk messages accross gossipsub network channel
* Correct compile issues
* Improve gosispsub messaging and correct rest api helpers
* Added global gossipsub subscriptions
* Update validator subscriptions data structs
* Tidy
* Re-structure validator subscriptions
* Initial handling of subscriptions
* Re-structure network service
* Add pubkey cache persistence file
* Add more comments
* Integrate persistence file into builder
* Add pubkey cache tests
* Add HashSetDelay and introduce into attestation service
* Handles validator subscriptions
* Add data_dir to beacon chain builder
* Remove Option in pubkey cache persistence file
* Ensure consistency between datadir/data_dir
* Fix failing network test
* Peer subnet discovery gets queued for future subscriptions
* Reorganise attestation service functions
* Initial wiring of attestation service
* First draft of attestation service timing logic
* Correct minor typos
* Tidy
* Fix todos
* Improve tests
* Add PeerInfo to connected peers mapping
* Fix compile error
* Fix compile error from merge
* Split up block processing metrics
* Tidy
* Refactor get_pubkey_from_state
* Remove commented-out code
* Rename state_cache -> checkpoint_cache
* Rename Checkpoint -> Snapshot
* Tidy, add comments
* Tidy up find_head function
* Change some checkpoint -> snapshot
* Add tests
* Expose max_len
* Remove dead code
* Tidy
* Fix bug
* Add sync-speed metric
* Add first attempt at VerifiableBlock
* Start integrating into beacon chain
* Integrate VerifiableBlock
* Rename VerifableBlock -> PartialBlockVerification
* Add start of typed methods
* Add progress
* Add further progress
* Rename structs
* Add full block verification to block_processing.rs
* Further beacon chain integration
* Update checks for gossip
* Add todo
* Start adding segement verification
* Add passing chain segement test
* Initial integration with batch sync
* Minor changes
* Tidy, add more error checking
* Start adding chain_segment tests
* Finish invalid signature tests
* Include single and gossip verified blocks in tests
* Add gossip verification tests
* Start adding docs
* Finish adding comments to block_processing.rs
* Rename block_processing.rs -> block_verification
* Start removing old block processing code
* Fixes beacon_chain compilation
* Fix project-wide compile errors
* Remove old code
* Correct code to pass all tests
* Fix bug with beacon proposer index
* Fix shim for BlockProcessingError
* Only process one epoch at a time
* Fix loop in chain segment processing
* Correct tests from master merge
* Add caching for state.eth1_data_votes
* Add BeaconChain::validator_pubkey
* Revert "Add caching for state.eth1_data_votes"
This reverts commit cd73dcd6434fb8d8e6bf30c5356355598ea7b78e.
Co-authored-by: Grant Wuerker <gwuerker@gmail.com>
Co-authored-by: Michael Sproul <michael@sigmaprime.io>
Co-authored-by: Michael Sproul <micsproul@gmail.com>
Co-authored-by: pawan <pawandhananjay@gmail.com>
Co-authored-by: Paul Hauner <paul@paulhauner.com>
2020-03-17 06:24:44 +00:00
|
|
|
]
|
2019-12-09 11:39:44 +00:00
|
|
|
|
2021-03-02 05:59:49 +00:00
|
|
|
[[package]]
|
|
|
|
name = "plotters-backend"
|
2021-06-03 01:11:33 +00:00
|
|
|
version = "0.3.2"
|
2021-03-02 05:59:49 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2021-06-03 01:11:33 +00:00
|
|
|
checksum = "d88417318da0eaf0fdcdb51a0ee6c3bed624333bff8f946733049380be67ac1c"
|
2021-03-02 05:59:49 +00:00
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "plotters-svg"
|
2021-07-05 00:54:17 +00:00
|
|
|
version = "0.3.1"
|
2021-03-02 05:59:49 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2021-07-05 00:54:17 +00:00
|
|
|
checksum = "521fa9638fa597e1dc53e9412a4f9cefb01187ee1f7413076f9e6749e2885ba9"
|
2021-03-02 05:59:49 +00:00
|
|
|
dependencies = [
|
|
|
|
"plotters-backend",
|
|
|
|
]
|
|
|
|
|
2020-06-29 10:25:42 +00:00
|
|
|
[[package]]
|
|
|
|
name = "poly1305"
|
2021-09-16 04:45:05 +00:00
|
|
|
version = "0.7.2"
|
2020-06-29 10:25:42 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2021-09-16 04:45:05 +00:00
|
|
|
checksum = "048aeb476be11a4b6ca432ca569e375810de9294ae78f4774e78ea98a9246ede"
|
2020-06-29 10:25:42 +00:00
|
|
|
dependencies = [
|
2022-04-04 00:26:16 +00:00
|
|
|
"cpufeatures",
|
2021-07-13 00:48:33 +00:00
|
|
|
"opaque-debug",
|
2021-07-05 00:54:17 +00:00
|
|
|
"universal-hash",
|
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "polyval"
|
2021-09-16 04:45:05 +00:00
|
|
|
version = "0.5.3"
|
2021-07-05 00:54:17 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2021-09-16 04:45:05 +00:00
|
|
|
checksum = "8419d2b623c7c0896ff2d5d96e2cb4ede590fed28fcc34934f4c33c036e620a1"
|
2021-07-05 00:54:17 +00:00
|
|
|
dependencies = [
|
2021-11-18 05:08:42 +00:00
|
|
|
"cfg-if",
|
2022-04-04 00:26:16 +00:00
|
|
|
"cpufeatures",
|
2021-07-13 00:48:33 +00:00
|
|
|
"opaque-debug",
|
2020-06-29 10:25:42 +00:00
|
|
|
"universal-hash",
|
|
|
|
]
|
|
|
|
|
2019-12-09 11:39:44 +00:00
|
|
|
[[package]]
|
|
|
|
name = "ppv-lite86"
|
2022-01-11 01:35:56 +00:00
|
|
|
version = "0.2.16"
|
2019-12-09 11:39:44 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2022-01-11 01:35:56 +00:00
|
|
|
checksum = "eb9f9e6e233e5c4a35559a617bf40a4ec447db2e84c20b55a6f83167b7e57872"
|
2019-12-09 11:39:44 +00:00
|
|
|
|
2021-10-14 02:58:11 +00:00
|
|
|
[[package]]
|
|
|
|
name = "primitive-types"
|
|
|
|
version = "0.10.1"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "05e4722c697a58a99d5d06a08c30821d7c082a4632198de1eaa5a6c22ef42373"
|
|
|
|
dependencies = [
|
2022-04-04 00:26:16 +00:00
|
|
|
"fixed-hash",
|
Separate execution payloads in the DB (#3157)
## Proposed Changes
Reduce post-merge disk usage by not storing finalized execution payloads in Lighthouse's database.
:warning: **This is achieved in a backwards-incompatible way for networks that have already merged** :warning:. Kiln users and shadow fork enjoyers will be unable to downgrade after running the code from this PR. The upgrade migration may take several minutes to run, and can't be aborted after it begins.
The main changes are:
- New column in the database called `ExecPayload`, keyed by beacon block root.
- The `BeaconBlock` column now stores blinded blocks only.
- Lots of places that previously used full blocks now use blinded blocks, e.g. analytics APIs, block replay in the DB, etc.
- On finalization:
- `prune_abanonded_forks` deletes non-canonical payloads whilst deleting non-canonical blocks.
- `migrate_db` deletes finalized canonical payloads whilst deleting finalized states.
- Conversions between blinded and full blocks are implemented in a compositional way, duplicating some work from Sean's PR #3134.
- The execution layer has a new `get_payload_by_block_hash` method that reconstructs a payload using the EE's `eth_getBlockByHash` call.
- I've tested manually that it works on Kiln, using Geth and Nethermind.
- This isn't necessarily the most efficient method, and new engine APIs are being discussed to improve this: https://github.com/ethereum/execution-apis/pull/146.
- We're depending on the `ethers` master branch, due to lots of recent changes. We're also using a workaround for https://github.com/gakonst/ethers-rs/issues/1134.
- Payload reconstruction is used in the HTTP API via `BeaconChain::get_block`, which is now `async`. Due to the `async` fn, the `blocking_json` wrapper has been removed.
- Payload reconstruction is used in network RPC to serve blocks-by-{root,range} responses. Here the `async` adjustment is messier, although I think I've managed to come up with a reasonable compromise: the handlers take the `SendOnDrop` by value so that they can drop it on _task completion_ (after the `fn` returns). Still, this is introducing disk reads onto core executor threads, which may have a negative performance impact (thoughts appreciated).
## Additional Info
- [x] For performance it would be great to remove the cloning of full blocks when converting them to blinded blocks to write to disk. I'm going to experiment with a `put_block` API that takes the block by value, breaks it into a blinded block and a payload, stores the blinded block, and then re-assembles the full block for the caller.
- [x] We should measure the latency of blocks-by-root and blocks-by-range responses.
- [x] We should add integration tests that stress the payload reconstruction (basic tests done, issue for more extensive tests: https://github.com/sigp/lighthouse/issues/3159)
- [x] We should (manually) test the schema v9 migration from several prior versions, particularly as blocks have changed on disk and some migrations rely on being able to load blocks.
Co-authored-by: Paul Hauner <paul@paulhauner.com>
2022-05-12 00:42:17 +00:00
|
|
|
"impl-codec 0.5.1",
|
|
|
|
"impl-rlp",
|
|
|
|
"impl-serde",
|
|
|
|
"uint",
|
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "primitive-types"
|
|
|
|
version = "0.11.1"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "e28720988bff275df1f51b171e1b2a18c30d194c4d2b61defdacecd625a5d94a"
|
|
|
|
dependencies = [
|
|
|
|
"fixed-hash",
|
|
|
|
"impl-codec 0.6.0",
|
2022-04-04 00:26:16 +00:00
|
|
|
"impl-rlp",
|
2021-10-14 02:58:11 +00:00
|
|
|
"impl-serde",
|
2022-04-04 00:26:16 +00:00
|
|
|
"uint",
|
2021-10-14 02:58:11 +00:00
|
|
|
]
|
|
|
|
|
2020-11-28 05:30:57 +00:00
|
|
|
[[package]]
|
|
|
|
name = "proc-macro-crate"
|
2022-03-02 05:09:52 +00:00
|
|
|
version = "1.1.3"
|
2020-11-28 05:30:57 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2022-03-02 05:09:52 +00:00
|
|
|
checksum = "e17d47ce914bf4de440332250b0edd23ce48c005f59fab39d3335866b114f11a"
|
2020-11-28 05:30:57 +00:00
|
|
|
dependencies = [
|
2021-07-05 00:54:17 +00:00
|
|
|
"thiserror",
|
2020-11-28 05:30:57 +00:00
|
|
|
"toml",
|
|
|
|
]
|
|
|
|
|
2020-11-19 04:04:52 +00:00
|
|
|
[[package]]
|
|
|
|
name = "proc-macro-error"
|
|
|
|
version = "1.0.4"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c"
|
|
|
|
dependencies = [
|
|
|
|
"proc-macro-error-attr",
|
|
|
|
"proc-macro2",
|
|
|
|
"quote",
|
|
|
|
"syn",
|
2020-12-09 01:34:58 +00:00
|
|
|
"version_check",
|
2020-11-19 04:04:52 +00:00
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "proc-macro-error-attr"
|
|
|
|
version = "1.0.4"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869"
|
|
|
|
dependencies = [
|
|
|
|
"proc-macro2",
|
|
|
|
"quote",
|
2020-12-09 01:34:58 +00:00
|
|
|
"version_check",
|
2020-11-19 04:04:52 +00:00
|
|
|
]
|
|
|
|
|
2019-12-20 05:26:30 +00:00
|
|
|
[[package]]
|
|
|
|
name = "proc-macro-hack"
|
2020-10-28 22:19:38 +00:00
|
|
|
version = "0.5.19"
|
2019-12-20 05:26:30 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2020-10-28 22:19:38 +00:00
|
|
|
checksum = "dbf0c48bc1d91375ae5c3cd81e3722dff1abcf81a30960240640d223f59fe0e5"
|
2019-12-20 05:26:30 +00:00
|
|
|
|
2019-12-09 11:39:44 +00:00
|
|
|
[[package]]
|
|
|
|
name = "proc-macro2"
|
2022-07-05 23:36:42 +00:00
|
|
|
version = "1.0.40"
|
2019-12-09 11:39:44 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2022-07-05 23:36:42 +00:00
|
|
|
checksum = "dd96a1e8ed2596c337f8eae5f24924ec83f5ad5ab21ea8e455d3566c69fbcaf7"
|
2019-12-09 11:39:44 +00:00
|
|
|
dependencies = [
|
2022-06-18 23:59:43 +00:00
|
|
|
"unicode-ident",
|
2019-12-09 11:39:44 +00:00
|
|
|
]
|
|
|
|
|
2020-05-29 02:03:30 +00:00
|
|
|
[[package]]
|
|
|
|
name = "procinfo"
|
|
|
|
version = "0.4.2"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "6ab1427f3d2635891f842892dda177883dca0639e05fe66796a62c9d2f23b49c"
|
|
|
|
dependencies = [
|
|
|
|
"byteorder",
|
|
|
|
"libc",
|
2021-12-21 08:23:17 +00:00
|
|
|
"nom 2.2.1",
|
2021-05-19 23:05:16 +00:00
|
|
|
"rustc_version 0.2.3",
|
2020-05-29 02:03:30 +00:00
|
|
|
]
|
|
|
|
|
2019-12-09 11:39:44 +00:00
|
|
|
[[package]]
|
|
|
|
name = "prometheus"
|
2022-06-18 23:59:43 +00:00
|
|
|
version = "0.13.1"
|
2019-12-09 11:39:44 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2022-06-18 23:59:43 +00:00
|
|
|
checksum = "cface98dfa6d645ea4c789839f176e4b072265d085bfcc48eaa8d137f58d3c39"
|
2019-12-09 11:39:44 +00:00
|
|
|
dependencies = [
|
2021-11-18 05:08:42 +00:00
|
|
|
"cfg-if",
|
2020-05-10 09:56:31 +00:00
|
|
|
"fnv",
|
|
|
|
"lazy_static",
|
2021-11-01 05:52:30 +00:00
|
|
|
"memchr",
|
2022-06-18 23:59:43 +00:00
|
|
|
"parking_lot 0.12.1",
|
2020-05-10 09:56:31 +00:00
|
|
|
"protobuf",
|
2020-05-17 11:16:48 +00:00
|
|
|
"thiserror",
|
|
|
|
]
|
|
|
|
|
2022-02-10 04:12:03 +00:00
|
|
|
[[package]]
|
|
|
|
name = "prometheus-client"
|
2022-06-07 02:35:55 +00:00
|
|
|
version = "0.16.0"
|
2022-02-10 04:12:03 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2022-06-07 02:35:55 +00:00
|
|
|
checksum = "ac1abe0255c04d15f571427a2d1e00099016506cf3297b53853acd2b7eb87825"
|
2022-02-10 04:12:03 +00:00
|
|
|
dependencies = [
|
|
|
|
"dtoa",
|
2022-06-18 23:59:43 +00:00
|
|
|
"itoa 1.0.2",
|
2022-02-10 04:12:03 +00:00
|
|
|
"owning_ref",
|
|
|
|
"prometheus-client-derive-text-encode",
|
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "prometheus-client-derive-text-encode"
|
|
|
|
version = "0.2.0"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "e8e12d01b9d66ad9eb4529c57666b6263fc1993cb30261d83ead658fdd932652"
|
|
|
|
dependencies = [
|
|
|
|
"proc-macro2",
|
|
|
|
"quote",
|
|
|
|
"syn",
|
|
|
|
]
|
|
|
|
|
2021-10-29 01:59:29 +00:00
|
|
|
[[package]]
|
|
|
|
name = "prost"
|
|
|
|
version = "0.9.0"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "444879275cb4fd84958b1a1d5420d15e6fcf7c235fe47f053c9c2a80aceb6001"
|
|
|
|
dependencies = [
|
|
|
|
"bytes",
|
2022-06-07 02:35:55 +00:00
|
|
|
"prost-derive 0.9.0",
|
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "prost"
|
|
|
|
version = "0.10.4"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "71adf41db68aa0daaefc69bb30bcd68ded9b9abaad5d1fbb6304c4fb390e083e"
|
|
|
|
dependencies = [
|
|
|
|
"bytes",
|
|
|
|
"prost-derive 0.10.1",
|
2021-10-29 01:59:29 +00:00
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "prost-build"
|
|
|
|
version = "0.9.0"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "62941722fb675d463659e49c4f3fe1fe792ff24fe5bbaa9c08cd3b98a1c354f5"
|
|
|
|
dependencies = [
|
|
|
|
"bytes",
|
2022-03-14 23:11:40 +00:00
|
|
|
"heck 0.3.3",
|
2021-08-17 01:00:24 +00:00
|
|
|
"itertools",
|
2021-10-29 01:59:29 +00:00
|
|
|
"lazy_static",
|
2021-06-03 01:11:33 +00:00
|
|
|
"log",
|
|
|
|
"multimap",
|
2021-12-22 06:17:14 +00:00
|
|
|
"petgraph",
|
2022-06-07 02:35:55 +00:00
|
|
|
"prost 0.9.0",
|
|
|
|
"prost-types 0.9.0",
|
|
|
|
"regex",
|
|
|
|
"tempfile",
|
|
|
|
"which",
|
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "prost-build"
|
|
|
|
version = "0.10.4"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "8ae5a4388762d5815a9fc0dea33c56b021cdc8dde0c55e0c9ca57197254b0cab"
|
|
|
|
dependencies = [
|
|
|
|
"bytes",
|
|
|
|
"cfg-if",
|
|
|
|
"cmake",
|
|
|
|
"heck 0.4.0",
|
|
|
|
"itertools",
|
|
|
|
"lazy_static",
|
|
|
|
"log",
|
|
|
|
"multimap",
|
|
|
|
"petgraph",
|
|
|
|
"prost 0.10.4",
|
|
|
|
"prost-types 0.10.1",
|
2021-10-29 01:59:29 +00:00
|
|
|
"regex",
|
2020-05-17 11:16:48 +00:00
|
|
|
"tempfile",
|
|
|
|
"which",
|
|
|
|
]
|
|
|
|
|
2022-06-07 02:35:55 +00:00
|
|
|
[[package]]
|
|
|
|
name = "prost-codec"
|
|
|
|
version = "0.1.0"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "00af1e92c33b4813cc79fda3f2dbf56af5169709be0202df730e9ebc3e4cd007"
|
|
|
|
dependencies = [
|
|
|
|
"asynchronous-codec",
|
|
|
|
"bytes",
|
|
|
|
"prost 0.10.4",
|
|
|
|
"thiserror",
|
|
|
|
"unsigned-varint 0.7.1",
|
|
|
|
]
|
|
|
|
|
2021-10-29 01:59:29 +00:00
|
|
|
[[package]]
|
|
|
|
name = "prost-derive"
|
|
|
|
version = "0.9.0"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "f9cc1a3263e07e0bf68e96268f37665207b49560d98739662cdfaae215c720fe"
|
|
|
|
dependencies = [
|
|
|
|
"anyhow",
|
|
|
|
"itertools",
|
|
|
|
"proc-macro2",
|
|
|
|
"quote",
|
|
|
|
"syn",
|
|
|
|
]
|
|
|
|
|
2022-06-07 02:35:55 +00:00
|
|
|
[[package]]
|
|
|
|
name = "prost-derive"
|
|
|
|
version = "0.10.1"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "7b670f45da57fb8542ebdbb6105a925fe571b67f9e7ed9f47a06a84e72b4e7cc"
|
|
|
|
dependencies = [
|
|
|
|
"anyhow",
|
|
|
|
"itertools",
|
|
|
|
"proc-macro2",
|
|
|
|
"quote",
|
|
|
|
"syn",
|
|
|
|
]
|
|
|
|
|
2021-10-29 01:59:29 +00:00
|
|
|
[[package]]
|
|
|
|
name = "prost-types"
|
|
|
|
version = "0.9.0"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "534b7a0e836e3c482d2693070f982e39e7611da9695d4d1f5a4b186b51faef0a"
|
|
|
|
dependencies = [
|
|
|
|
"bytes",
|
2022-06-07 02:35:55 +00:00
|
|
|
"prost 0.9.0",
|
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "prost-types"
|
|
|
|
version = "0.10.1"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "2d0a014229361011dc8e69c8a1ec6c2e8d0f2af7c91e3ea3f5b2170298461e68"
|
|
|
|
dependencies = [
|
|
|
|
"bytes",
|
|
|
|
"prost 0.10.4",
|
2019-12-09 11:39:44 +00:00
|
|
|
]
|
|
|
|
|
2020-01-29 04:05:00 +00:00
|
|
|
[[package]]
|
v0.12 fork choice update (#1229)
* Incomplete scraps
* Add progress on new fork choice impl
* Further progress
* First complete compiling version
* Remove chain reference
* Add new lmd_ghost crate
* Start integrating into beacon chain
* Update `milagro_bls` to new release (#1183)
* Update milagro_bls to new release
Signed-off-by: Kirk Baird <baird.k@outlook.com>
* Tidy up fake cryptos
Signed-off-by: Kirk Baird <baird.k@outlook.com>
* move SecretHash to bls and put plaintext back
Signed-off-by: Kirk Baird <baird.k@outlook.com>
* Update state processing for v0.12
* Fix EF test runners for v0.12
* Fix some tests
* Fix broken attestation verification test
* More test fixes
* Rough beacon chain impl working
* Remove fork_choice_2
* Remove checkpoint manager
* Half finished ssz impl
* Add missed file
* Add persistence
* Tidy, fix some compile errors
* Remove RwLock from ProtoArrayForkChoice
* Fix store-based compile errors
* Add comments, tidy
* Move function out of ForkChoice struct
* Start testing
* More testing
* Fix compile error
* Tidy beacon_chain::fork_choice
* Queue attestations from the current slot
* Allow fork choice to handle prior-to-genesis start
* Improve error granularity
* Test attestation dequeuing
* Process attestations during block
* Store target root in fork choice
* Move fork choice verification into new crate
* Update tests
* Consensus updates for v0.12 (#1228)
* Update state processing for v0.12
* Fix EF test runners for v0.12
* Fix some tests
* Fix broken attestation verification test
* More test fixes
* Fix typo found in review
* Add `Block` struct to ProtoArray
* Start fixing get_ancestor
* Add rough progress on testing
* Get fork choice tests working
* Progress with testing
* Fix partialeq impl
* Move slot clock from fc_store
* Improve testing
* Add testing for best justified
* Add clone back to SystemTimeSlotClock
* Add balances test
* Start adding balances cache again
* Wire-in balances cache
* Improve tests
* Remove commented-out tests
* Remove beacon_chain::ForkChoice
* Rename crates
* Update wider codebase to new fork_choice layout
* Move advance_slot in test harness
* Tidy ForkChoice::update_time
* Fix verification tests
* Fix compile error with iter::once
* Fix fork choice tests
* Ensure block attestations are processed
* Fix failing beacon_chain tests
* Add first invalid block check
* Add finalized block check
* Progress with testing, new store builder
* Add fixes to get_ancestor
* Fix old genesis justification test
* Fix remaining fork choice tests
* Change root iteration method
* Move on_verified_block
* Remove unused method
* Start adding attestation verification tests
* Add invalid ffg target test
* Add target epoch test
* Add queued attestation test
* Remove old fork choice verification tests
* Tidy, add test
* Move fork choice lock drop
* Rename BeaconForkChoiceStore
* Add comments, tidy BeaconForkChoiceStore
* Update metrics, rename fork_choice_store.rs
* Remove genesis_block_root from ForkChoice
* Tidy
* Update fork_choice comments
* Tidy, add comments
* Tidy, simplify ForkChoice, fix compile issue
* Tidy, removed dead file
* Increase http request timeout
* Fix failing rest_api test
* Set HTTP timeout back to 5s
* Apply fix to get_ancestor
* Address Michael's comments
* Fix typo
* Revert "Fix broken attestation verification test"
This reverts commit 722cdc903b12611de27916a57eeecfa3224f2279.
Co-authored-by: Kirk Baird <baird.k@outlook.com>
Co-authored-by: Michael Sproul <michael@sigmaprime.io>
2020-06-17 01:10:22 +00:00
|
|
|
name = "proto_array"
|
Initial work towards v0.2.0 (#924)
* Remove ping protocol
* Initial renaming of network services
* Correct rebasing relative to latest master
* Start updating types
* Adds HashMapDelay struct to utils
* Initial network restructure
* Network restructure. Adds new types for v0.2.0
* Removes build artefacts
* Shift validation to beacon chain
* Temporarily remove gossip validation
This is to be updated to match current optimisation efforts.
* Adds AggregateAndProof
* Begin rebuilding pubsub encoding/decoding
* Signature hacking
* Shift gossipsup decoding into eth2_libp2p
* Existing EF tests passing with fake_crypto
* Shifts block encoding/decoding into RPC
* Delete outdated API spec
* All release tests passing bar genesis state parsing
* Update and test YamlConfig
* Update to spec v0.10 compatible BLS
* Updates to BLS EF tests
* Add EF test for AggregateVerify
And delete unused hash2curve tests for uncompressed points
* Update EF tests to v0.10.1
* Use optional block root correctly in block proc
* Use genesis fork in deposit domain. All tests pass
* Fast aggregate verify test
* Update REST API docs
* Fix unused import
* Bump spec tags to v0.10.1
* Add `seconds_per_eth1_block` to chainspec
* Update to timestamp based eth1 voting scheme
* Return None from `get_votes_to_consider` if block cache is empty
* Handle overflows in `is_candidate_block`
* Revert to failing tests
* Fix eth1 data sets test
* Choose default vote according to spec
* Fix collect_valid_votes tests
* Fix `get_votes_to_consider` to choose all eligible blocks
* Uncomment winning_vote tests
* Add comments; remove unused code
* Reduce seconds_per_eth1_block for simulation
* Addressed review comments
* Add test for default vote case
* Fix logs
* Remove unused functions
* Meter default eth1 votes
* Fix comments
* Progress on attestation service
* Address review comments; remove unused dependency
* Initial work on removing libp2p lock
* Add LRU caches to store (rollup)
* Update attestation validation for DB changes (WIP)
* Initial version of should_forward_block
* Scaffold
* Progress on attestation validation
Also, consolidate prod+testing slot clocks so that they share much
of the same implementation and can both handle sub-slot time changes.
* Removes lock from libp2p service
* Completed network lock removal
* Finish(?) attestation processing
* Correct network termination future
* Add slot check to block check
* Correct fmt issues
* Remove Drop implementation for network service
* Add first attempt at attestation proc. re-write
* Add version 2 of attestation processing
* Minor fixes
* Add validator pubkey cache
* Make get_indexed_attestation take a committee
* Link signature processing into new attn verification
* First working version
* Ensure pubkey cache is updated
* Add more metrics, slight optimizations
* Clone committee cache during attestation processing
* Update shuffling cache during block processing
* Remove old commented-out code
* Fix shuffling cache insert bug
* Used indexed attestation in fork choice
* Restructure attn processing, add metrics
* Add more detailed metrics
* Tidy, fix failing tests
* Fix failing tests, tidy
* Address reviewers suggestions
* Disable/delete two outdated tests
* Modification of validator for subscriptions
* Add slot signing to validator client
* Further progress on validation subscription
* Adds necessary validator subscription functionality
* Add new Pubkeys struct to signature_sets
* Refactor with functional approach
* Update beacon chain
* Clean up validator <-> beacon node http types
* Add aggregator status to ValidatorDuty
* Impl Clone for manual slot clock
* Fix minor errors
* Further progress validator client subscription
* Initial subscription and aggregation handling
* Remove decompressed member from pubkey bytes
* Progress to modifying val client for attestation aggregation
* First draft of validator client upgrade for aggregate attestations
* Add hashmap for indices lookup
* Add state cache, remove store cache
* Only build the head committee cache
* Removes lock on a network channel
* Partially implement beacon node subscription http api
* Correct compilation issues
* Change `get_attesting_indices` to use Vec
* Fix failing test
* Partial implementation of timer
* Adds timer, removes exit_future, http api to op pool
* Partial multiple aggregate attestation handling
* Permits bulk messages accross gossipsub network channel
* Correct compile issues
* Improve gosispsub messaging and correct rest api helpers
* Added global gossipsub subscriptions
* Update validator subscriptions data structs
* Tidy
* Re-structure validator subscriptions
* Initial handling of subscriptions
* Re-structure network service
* Add pubkey cache persistence file
* Add more comments
* Integrate persistence file into builder
* Add pubkey cache tests
* Add HashSetDelay and introduce into attestation service
* Handles validator subscriptions
* Add data_dir to beacon chain builder
* Remove Option in pubkey cache persistence file
* Ensure consistency between datadir/data_dir
* Fix failing network test
* Peer subnet discovery gets queued for future subscriptions
* Reorganise attestation service functions
* Initial wiring of attestation service
* First draft of attestation service timing logic
* Correct minor typos
* Tidy
* Fix todos
* Improve tests
* Add PeerInfo to connected peers mapping
* Fix compile error
* Fix compile error from merge
* Split up block processing metrics
* Tidy
* Refactor get_pubkey_from_state
* Remove commented-out code
* Rename state_cache -> checkpoint_cache
* Rename Checkpoint -> Snapshot
* Tidy, add comments
* Tidy up find_head function
* Change some checkpoint -> snapshot
* Add tests
* Expose max_len
* Remove dead code
* Tidy
* Fix bug
* Add sync-speed metric
* Add first attempt at VerifiableBlock
* Start integrating into beacon chain
* Integrate VerifiableBlock
* Rename VerifableBlock -> PartialBlockVerification
* Add start of typed methods
* Add progress
* Add further progress
* Rename structs
* Add full block verification to block_processing.rs
* Further beacon chain integration
* Update checks for gossip
* Add todo
* Start adding segement verification
* Add passing chain segement test
* Initial integration with batch sync
* Minor changes
* Tidy, add more error checking
* Start adding chain_segment tests
* Finish invalid signature tests
* Include single and gossip verified blocks in tests
* Add gossip verification tests
* Start adding docs
* Finish adding comments to block_processing.rs
* Rename block_processing.rs -> block_verification
* Start removing old block processing code
* Fixes beacon_chain compilation
* Fix project-wide compile errors
* Remove old code
* Correct code to pass all tests
* Fix bug with beacon proposer index
* Fix shim for BlockProcessingError
* Only process one epoch at a time
* Fix loop in chain segment processing
* Correct tests from master merge
* Add caching for state.eth1_data_votes
* Add BeaconChain::validator_pubkey
* Revert "Add caching for state.eth1_data_votes"
This reverts commit cd73dcd6434fb8d8e6bf30c5356355598ea7b78e.
Co-authored-by: Grant Wuerker <gwuerker@gmail.com>
Co-authored-by: Michael Sproul <michael@sigmaprime.io>
Co-authored-by: Michael Sproul <micsproul@gmail.com>
Co-authored-by: pawan <pawandhananjay@gmail.com>
Co-authored-by: Paul Hauner <paul@paulhauner.com>
2020-03-17 06:24:44 +00:00
|
|
|
version = "0.2.0"
|
2020-01-29 04:05:00 +00:00
|
|
|
dependencies = [
|
2021-11-29 03:57:54 +00:00
|
|
|
"eth2_ssz",
|
2022-03-31 07:52:23 +00:00
|
|
|
"eth2_ssz_derive",
|
2020-05-10 09:56:31 +00:00
|
|
|
"serde",
|
|
|
|
"serde_derive",
|
|
|
|
"serde_yaml",
|
|
|
|
"types",
|
2020-01-29 04:05:00 +00:00
|
|
|
]
|
|
|
|
|
2019-12-09 11:39:44 +00:00
|
|
|
[[package]]
|
|
|
|
name = "protobuf"
|
2022-02-07 23:25:03 +00:00
|
|
|
version = "2.27.1"
|
2019-12-09 11:39:44 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2022-02-07 23:25:03 +00:00
|
|
|
checksum = "cf7e6d18738ecd0902d30d1ad232c9125985a3422929b16c65517b38adc14f96"
|
2019-12-09 11:39:44 +00:00
|
|
|
|
2020-05-29 02:03:30 +00:00
|
|
|
[[package]]
|
|
|
|
name = "psutil"
|
2022-04-04 00:26:16 +00:00
|
|
|
version = "3.2.2"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "f866af2b0f8e4b0d2d00aad8a9c5fc48fad33466cd99a64cbb3a4c1505f1a62d"
|
2020-05-29 02:03:30 +00:00
|
|
|
dependencies = [
|
2021-11-18 05:08:42 +00:00
|
|
|
"cfg-if",
|
2020-05-29 02:03:30 +00:00
|
|
|
"darwin-libproc",
|
|
|
|
"derive_more",
|
|
|
|
"glob",
|
|
|
|
"mach",
|
2022-06-18 23:59:43 +00:00
|
|
|
"nix 0.23.1",
|
2020-05-29 02:03:30 +00:00
|
|
|
"num_cpus",
|
|
|
|
"once_cell",
|
|
|
|
"platforms",
|
2020-09-29 08:29:04 +00:00
|
|
|
"thiserror",
|
2020-05-29 02:03:30 +00:00
|
|
|
"unescape",
|
|
|
|
]
|
|
|
|
|
2019-12-09 11:39:44 +00:00
|
|
|
[[package]]
|
|
|
|
name = "quick-error"
|
2020-01-03 06:56:03 +00:00
|
|
|
version = "1.2.3"
|
2019-12-09 11:39:44 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2020-05-10 09:56:31 +00:00
|
|
|
checksum = "a1d01941d82fa2ab50be1e79e6714289dd7cde78eba4c074bc5a4374f650dfe0"
|
2019-12-09 11:39:44 +00:00
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "quickcheck"
|
2020-01-15 04:50:01 +00:00
|
|
|
version = "0.9.2"
|
2019-12-09 11:39:44 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2020-05-10 09:56:31 +00:00
|
|
|
checksum = "a44883e74aa97ad63db83c4bf8ca490f02b2fc02f92575e720c8551e843c945f"
|
2019-12-09 11:39:44 +00:00
|
|
|
dependencies = [
|
2020-12-07 08:20:33 +00:00
|
|
|
"env_logger 0.7.1",
|
2020-12-09 01:34:58 +00:00
|
|
|
"log",
|
2020-05-10 09:56:31 +00:00
|
|
|
"rand 0.7.3",
|
|
|
|
"rand_core 0.5.1",
|
2019-12-09 11:39:44 +00:00
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "quickcheck_macros"
|
2020-05-17 11:16:48 +00:00
|
|
|
version = "0.9.1"
|
2019-12-09 11:39:44 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2020-05-17 11:16:48 +00:00
|
|
|
checksum = "608c156fd8e97febc07dc9c2e2c80bf74cfc6ef26893eae3daf8bc2bc94a4b7f"
|
2019-12-09 11:39:44 +00:00
|
|
|
dependencies = [
|
2020-05-17 11:16:48 +00:00
|
|
|
"proc-macro2",
|
|
|
|
"quote",
|
|
|
|
"syn",
|
2019-12-09 11:39:44 +00:00
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
2020-05-17 11:16:48 +00:00
|
|
|
name = "quicksink"
|
|
|
|
version = "0.1.2"
|
2019-12-09 11:39:44 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2020-05-17 11:16:48 +00:00
|
|
|
checksum = "77de3c815e5a160b1539c6592796801df2043ae35e123b46d73380cfa57af858"
|
2019-12-09 11:39:44 +00:00
|
|
|
dependencies = [
|
2020-05-17 11:16:48 +00:00
|
|
|
"futures-core",
|
|
|
|
"futures-sink",
|
2021-03-08 06:27:49 +00:00
|
|
|
"pin-project-lite 0.1.12",
|
2019-12-09 11:39:44 +00:00
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "quote"
|
2022-07-05 23:36:42 +00:00
|
|
|
version = "1.0.20"
|
2019-12-09 11:39:44 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2022-07-05 23:36:42 +00:00
|
|
|
checksum = "3bcdf212e9776fbcb2d23ab029360416bb1706b1aea2d1a5ba002727cbcab804"
|
2019-12-09 11:39:44 +00:00
|
|
|
dependencies = [
|
2020-05-17 11:16:48 +00:00
|
|
|
"proc-macro2",
|
2019-12-09 11:39:44 +00:00
|
|
|
]
|
|
|
|
|
2020-05-18 06:25:16 +00:00
|
|
|
[[package]]
|
|
|
|
name = "r2d2"
|
2022-07-05 23:36:42 +00:00
|
|
|
version = "0.8.10"
|
2020-05-18 06:25:16 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2022-07-05 23:36:42 +00:00
|
|
|
checksum = "51de85fb3fb6524929c8a2eb85e6b6d363de4e8c48f9e2c2eac4944abc181c93"
|
2020-05-18 06:25:16 +00:00
|
|
|
dependencies = [
|
2020-12-09 01:34:58 +00:00
|
|
|
"log",
|
2022-07-05 23:36:42 +00:00
|
|
|
"parking_lot 0.12.1",
|
2020-05-18 06:25:16 +00:00
|
|
|
"scheduled-thread-pool",
|
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "r2d2_sqlite"
|
2021-08-17 01:00:24 +00:00
|
|
|
version = "0.18.0"
|
2020-05-18 06:25:16 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2021-08-17 01:00:24 +00:00
|
|
|
checksum = "9d24607049214c5e42d3df53ac1d8a23c34cc6a5eefe3122acb2c72174719959"
|
2020-05-18 06:25:16 +00:00
|
|
|
dependencies = [
|
|
|
|
"r2d2",
|
|
|
|
"rusqlite",
|
|
|
|
]
|
|
|
|
|
2021-07-05 00:54:17 +00:00
|
|
|
[[package]]
|
|
|
|
name = "radium"
|
|
|
|
version = "0.6.2"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "643f8f41a8ebc4c5dc4515c82bb8abd397b527fc20fd681b7c011c2aee5d44fb"
|
|
|
|
|
Separate execution payloads in the DB (#3157)
## Proposed Changes
Reduce post-merge disk usage by not storing finalized execution payloads in Lighthouse's database.
:warning: **This is achieved in a backwards-incompatible way for networks that have already merged** :warning:. Kiln users and shadow fork enjoyers will be unable to downgrade after running the code from this PR. The upgrade migration may take several minutes to run, and can't be aborted after it begins.
The main changes are:
- New column in the database called `ExecPayload`, keyed by beacon block root.
- The `BeaconBlock` column now stores blinded blocks only.
- Lots of places that previously used full blocks now use blinded blocks, e.g. analytics APIs, block replay in the DB, etc.
- On finalization:
- `prune_abanonded_forks` deletes non-canonical payloads whilst deleting non-canonical blocks.
- `migrate_db` deletes finalized canonical payloads whilst deleting finalized states.
- Conversions between blinded and full blocks are implemented in a compositional way, duplicating some work from Sean's PR #3134.
- The execution layer has a new `get_payload_by_block_hash` method that reconstructs a payload using the EE's `eth_getBlockByHash` call.
- I've tested manually that it works on Kiln, using Geth and Nethermind.
- This isn't necessarily the most efficient method, and new engine APIs are being discussed to improve this: https://github.com/ethereum/execution-apis/pull/146.
- We're depending on the `ethers` master branch, due to lots of recent changes. We're also using a workaround for https://github.com/gakonst/ethers-rs/issues/1134.
- Payload reconstruction is used in the HTTP API via `BeaconChain::get_block`, which is now `async`. Due to the `async` fn, the `blocking_json` wrapper has been removed.
- Payload reconstruction is used in network RPC to serve blocks-by-{root,range} responses. Here the `async` adjustment is messier, although I think I've managed to come up with a reasonable compromise: the handlers take the `SendOnDrop` by value so that they can drop it on _task completion_ (after the `fn` returns). Still, this is introducing disk reads onto core executor threads, which may have a negative performance impact (thoughts appreciated).
## Additional Info
- [x] For performance it would be great to remove the cloning of full blocks when converting them to blinded blocks to write to disk. I'm going to experiment with a `put_block` API that takes the block by value, breaks it into a blinded block and a payload, stores the blinded block, and then re-assembles the full block for the caller.
- [x] We should measure the latency of blocks-by-root and blocks-by-range responses.
- [x] We should add integration tests that stress the payload reconstruction (basic tests done, issue for more extensive tests: https://github.com/sigp/lighthouse/issues/3159)
- [x] We should (manually) test the schema v9 migration from several prior versions, particularly as blocks have changed on disk and some migrations rely on being able to load blocks.
Co-authored-by: Paul Hauner <paul@paulhauner.com>
2022-05-12 00:42:17 +00:00
|
|
|
[[package]]
|
|
|
|
name = "radium"
|
|
|
|
version = "0.7.0"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "dc33ff2d4973d518d823d61aa239014831e521c75da58e3df4840d3f47749d09"
|
|
|
|
|
2019-12-09 11:39:44 +00:00
|
|
|
[[package]]
|
|
|
|
name = "rand"
|
2020-01-15 03:48:09 +00:00
|
|
|
version = "0.7.3"
|
2019-12-09 11:39:44 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2020-05-10 09:56:31 +00:00
|
|
|
checksum = "6a6b1679d49b24bbfe0c803429aa1874472f50d9b363131f0e89fc356b544d03"
|
2019-12-09 11:39:44 +00:00
|
|
|
dependencies = [
|
2021-02-10 23:29:49 +00:00
|
|
|
"getrandom 0.1.16",
|
2020-05-10 09:56:31 +00:00
|
|
|
"libc",
|
2020-09-29 03:46:54 +00:00
|
|
|
"rand_chacha 0.2.2",
|
2020-05-10 09:56:31 +00:00
|
|
|
"rand_core 0.5.1",
|
2022-03-02 05:09:52 +00:00
|
|
|
"rand_hc",
|
2020-09-29 03:46:54 +00:00
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
2021-02-10 23:29:49 +00:00
|
|
|
name = "rand"
|
2022-03-02 05:09:52 +00:00
|
|
|
version = "0.8.5"
|
2020-09-29 03:46:54 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2022-03-02 05:09:52 +00:00
|
|
|
checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404"
|
2020-09-29 03:46:54 +00:00
|
|
|
dependencies = [
|
2021-02-10 23:29:49 +00:00
|
|
|
"libc",
|
2021-07-05 00:54:17 +00:00
|
|
|
"rand_chacha 0.3.1",
|
|
|
|
"rand_core 0.6.3",
|
2019-12-09 11:39:44 +00:00
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "rand_chacha"
|
Initial work towards v0.2.0 (#924)
* Remove ping protocol
* Initial renaming of network services
* Correct rebasing relative to latest master
* Start updating types
* Adds HashMapDelay struct to utils
* Initial network restructure
* Network restructure. Adds new types for v0.2.0
* Removes build artefacts
* Shift validation to beacon chain
* Temporarily remove gossip validation
This is to be updated to match current optimisation efforts.
* Adds AggregateAndProof
* Begin rebuilding pubsub encoding/decoding
* Signature hacking
* Shift gossipsup decoding into eth2_libp2p
* Existing EF tests passing with fake_crypto
* Shifts block encoding/decoding into RPC
* Delete outdated API spec
* All release tests passing bar genesis state parsing
* Update and test YamlConfig
* Update to spec v0.10 compatible BLS
* Updates to BLS EF tests
* Add EF test for AggregateVerify
And delete unused hash2curve tests for uncompressed points
* Update EF tests to v0.10.1
* Use optional block root correctly in block proc
* Use genesis fork in deposit domain. All tests pass
* Fast aggregate verify test
* Update REST API docs
* Fix unused import
* Bump spec tags to v0.10.1
* Add `seconds_per_eth1_block` to chainspec
* Update to timestamp based eth1 voting scheme
* Return None from `get_votes_to_consider` if block cache is empty
* Handle overflows in `is_candidate_block`
* Revert to failing tests
* Fix eth1 data sets test
* Choose default vote according to spec
* Fix collect_valid_votes tests
* Fix `get_votes_to_consider` to choose all eligible blocks
* Uncomment winning_vote tests
* Add comments; remove unused code
* Reduce seconds_per_eth1_block for simulation
* Addressed review comments
* Add test for default vote case
* Fix logs
* Remove unused functions
* Meter default eth1 votes
* Fix comments
* Progress on attestation service
* Address review comments; remove unused dependency
* Initial work on removing libp2p lock
* Add LRU caches to store (rollup)
* Update attestation validation for DB changes (WIP)
* Initial version of should_forward_block
* Scaffold
* Progress on attestation validation
Also, consolidate prod+testing slot clocks so that they share much
of the same implementation and can both handle sub-slot time changes.
* Removes lock from libp2p service
* Completed network lock removal
* Finish(?) attestation processing
* Correct network termination future
* Add slot check to block check
* Correct fmt issues
* Remove Drop implementation for network service
* Add first attempt at attestation proc. re-write
* Add version 2 of attestation processing
* Minor fixes
* Add validator pubkey cache
* Make get_indexed_attestation take a committee
* Link signature processing into new attn verification
* First working version
* Ensure pubkey cache is updated
* Add more metrics, slight optimizations
* Clone committee cache during attestation processing
* Update shuffling cache during block processing
* Remove old commented-out code
* Fix shuffling cache insert bug
* Used indexed attestation in fork choice
* Restructure attn processing, add metrics
* Add more detailed metrics
* Tidy, fix failing tests
* Fix failing tests, tidy
* Address reviewers suggestions
* Disable/delete two outdated tests
* Modification of validator for subscriptions
* Add slot signing to validator client
* Further progress on validation subscription
* Adds necessary validator subscription functionality
* Add new Pubkeys struct to signature_sets
* Refactor with functional approach
* Update beacon chain
* Clean up validator <-> beacon node http types
* Add aggregator status to ValidatorDuty
* Impl Clone for manual slot clock
* Fix minor errors
* Further progress validator client subscription
* Initial subscription and aggregation handling
* Remove decompressed member from pubkey bytes
* Progress to modifying val client for attestation aggregation
* First draft of validator client upgrade for aggregate attestations
* Add hashmap for indices lookup
* Add state cache, remove store cache
* Only build the head committee cache
* Removes lock on a network channel
* Partially implement beacon node subscription http api
* Correct compilation issues
* Change `get_attesting_indices` to use Vec
* Fix failing test
* Partial implementation of timer
* Adds timer, removes exit_future, http api to op pool
* Partial multiple aggregate attestation handling
* Permits bulk messages accross gossipsub network channel
* Correct compile issues
* Improve gosispsub messaging and correct rest api helpers
* Added global gossipsub subscriptions
* Update validator subscriptions data structs
* Tidy
* Re-structure validator subscriptions
* Initial handling of subscriptions
* Re-structure network service
* Add pubkey cache persistence file
* Add more comments
* Integrate persistence file into builder
* Add pubkey cache tests
* Add HashSetDelay and introduce into attestation service
* Handles validator subscriptions
* Add data_dir to beacon chain builder
* Remove Option in pubkey cache persistence file
* Ensure consistency between datadir/data_dir
* Fix failing network test
* Peer subnet discovery gets queued for future subscriptions
* Reorganise attestation service functions
* Initial wiring of attestation service
* First draft of attestation service timing logic
* Correct minor typos
* Tidy
* Fix todos
* Improve tests
* Add PeerInfo to connected peers mapping
* Fix compile error
* Fix compile error from merge
* Split up block processing metrics
* Tidy
* Refactor get_pubkey_from_state
* Remove commented-out code
* Rename state_cache -> checkpoint_cache
* Rename Checkpoint -> Snapshot
* Tidy, add comments
* Tidy up find_head function
* Change some checkpoint -> snapshot
* Add tests
* Expose max_len
* Remove dead code
* Tidy
* Fix bug
* Add sync-speed metric
* Add first attempt at VerifiableBlock
* Start integrating into beacon chain
* Integrate VerifiableBlock
* Rename VerifableBlock -> PartialBlockVerification
* Add start of typed methods
* Add progress
* Add further progress
* Rename structs
* Add full block verification to block_processing.rs
* Further beacon chain integration
* Update checks for gossip
* Add todo
* Start adding segement verification
* Add passing chain segement test
* Initial integration with batch sync
* Minor changes
* Tidy, add more error checking
* Start adding chain_segment tests
* Finish invalid signature tests
* Include single and gossip verified blocks in tests
* Add gossip verification tests
* Start adding docs
* Finish adding comments to block_processing.rs
* Rename block_processing.rs -> block_verification
* Start removing old block processing code
* Fixes beacon_chain compilation
* Fix project-wide compile errors
* Remove old code
* Correct code to pass all tests
* Fix bug with beacon proposer index
* Fix shim for BlockProcessingError
* Only process one epoch at a time
* Fix loop in chain segment processing
* Correct tests from master merge
* Add caching for state.eth1_data_votes
* Add BeaconChain::validator_pubkey
* Revert "Add caching for state.eth1_data_votes"
This reverts commit cd73dcd6434fb8d8e6bf30c5356355598ea7b78e.
Co-authored-by: Grant Wuerker <gwuerker@gmail.com>
Co-authored-by: Michael Sproul <michael@sigmaprime.io>
Co-authored-by: Michael Sproul <micsproul@gmail.com>
Co-authored-by: pawan <pawandhananjay@gmail.com>
Co-authored-by: Paul Hauner <paul@paulhauner.com>
2020-03-17 06:24:44 +00:00
|
|
|
version = "0.2.2"
|
2019-12-09 11:39:44 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2020-05-10 09:56:31 +00:00
|
|
|
checksum = "f4c8ed856279c9737206bf725bf36935d8666ead7aa69b52be55af369d193402"
|
2019-12-09 11:39:44 +00:00
|
|
|
dependencies = [
|
2020-05-10 09:56:31 +00:00
|
|
|
"ppv-lite86",
|
|
|
|
"rand_core 0.5.1",
|
2019-12-09 11:39:44 +00:00
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
2021-02-10 23:29:49 +00:00
|
|
|
name = "rand_chacha"
|
2021-07-05 00:54:17 +00:00
|
|
|
version = "0.3.1"
|
2019-12-09 11:39:44 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2021-07-05 00:54:17 +00:00
|
|
|
checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88"
|
2019-12-09 11:39:44 +00:00
|
|
|
dependencies = [
|
2021-02-10 23:29:49 +00:00
|
|
|
"ppv-lite86",
|
2021-07-05 00:54:17 +00:00
|
|
|
"rand_core 0.6.3",
|
2019-12-09 11:39:44 +00:00
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "rand_core"
|
|
|
|
version = "0.5.1"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2020-05-10 09:56:31 +00:00
|
|
|
checksum = "90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19"
|
2019-12-09 11:39:44 +00:00
|
|
|
dependencies = [
|
2021-02-10 23:29:49 +00:00
|
|
|
"getrandom 0.1.16",
|
2019-12-09 11:39:44 +00:00
|
|
|
]
|
|
|
|
|
2020-09-29 03:46:54 +00:00
|
|
|
[[package]]
|
2021-02-10 23:29:49 +00:00
|
|
|
name = "rand_core"
|
2021-07-05 00:54:17 +00:00
|
|
|
version = "0.6.3"
|
2020-09-29 03:46:54 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2021-07-05 00:54:17 +00:00
|
|
|
checksum = "d34f1408f55294453790c48b2f1ebbb1c5b4b7563eb1f418bcfcfdbb06ebb4e7"
|
2020-09-29 03:46:54 +00:00
|
|
|
dependencies = [
|
2022-06-18 23:59:43 +00:00
|
|
|
"getrandom 0.2.7",
|
2020-09-29 03:46:54 +00:00
|
|
|
]
|
|
|
|
|
2019-12-09 11:39:44 +00:00
|
|
|
[[package]]
|
|
|
|
name = "rand_hc"
|
|
|
|
version = "0.2.0"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2020-05-10 09:56:31 +00:00
|
|
|
checksum = "ca3129af7b92a17112d59ad498c6f81eaf463253766b90396d39ea7a39d6613c"
|
2019-12-09 11:39:44 +00:00
|
|
|
dependencies = [
|
2020-05-10 09:56:31 +00:00
|
|
|
"rand_core 0.5.1",
|
2019-12-09 11:39:44 +00:00
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "rand_xorshift"
|
2022-04-04 00:26:16 +00:00
|
|
|
version = "0.3.0"
|
2019-12-09 11:39:44 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2022-04-04 00:26:16 +00:00
|
|
|
checksum = "d25bf25ec5ae4a3f1b92f929810509a2f53d7dca2f50b794ff57e3face536c8f"
|
2019-12-09 11:39:44 +00:00
|
|
|
dependencies = [
|
2022-04-04 00:26:16 +00:00
|
|
|
"rand_core 0.6.3",
|
2019-12-09 11:39:44 +00:00
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "rayon"
|
2022-06-18 23:59:43 +00:00
|
|
|
version = "1.5.3"
|
2019-12-09 11:39:44 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2022-06-18 23:59:43 +00:00
|
|
|
checksum = "bd99e5772ead8baa5215278c9b15bf92087709e9c1b2d1f97cdb5a183c933a7d"
|
2019-12-09 11:39:44 +00:00
|
|
|
dependencies = [
|
2022-02-10 04:12:03 +00:00
|
|
|
"autocfg 1.1.0",
|
2020-12-09 01:34:58 +00:00
|
|
|
"crossbeam-deque",
|
2020-05-10 09:56:31 +00:00
|
|
|
"either",
|
|
|
|
"rayon-core",
|
2019-12-09 11:39:44 +00:00
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "rayon-core"
|
2022-06-18 23:59:43 +00:00
|
|
|
version = "1.9.3"
|
2019-12-09 11:39:44 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2022-06-18 23:59:43 +00:00
|
|
|
checksum = "258bcdb5ac6dad48491bb2992db6b7cf74878b0384908af124823d118c99683f"
|
2019-12-09 11:39:44 +00:00
|
|
|
dependencies = [
|
2021-02-10 23:29:49 +00:00
|
|
|
"crossbeam-channel",
|
2020-12-09 01:34:58 +00:00
|
|
|
"crossbeam-deque",
|
2021-02-10 23:29:49 +00:00
|
|
|
"crossbeam-utils",
|
2020-05-10 09:56:31 +00:00
|
|
|
"num_cpus",
|
2019-12-09 11:39:44 +00:00
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
2021-02-10 23:29:49 +00:00
|
|
|
name = "redox_syscall"
|
2022-04-04 00:26:16 +00:00
|
|
|
version = "0.2.13"
|
2019-12-09 11:39:44 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2022-04-04 00:26:16 +00:00
|
|
|
checksum = "62f25bc4c7e55e0b0b7a1d43fb893f4fa1361d0abe38b9ce4f323c2adfe6ef42"
|
2021-02-10 23:29:49 +00:00
|
|
|
dependencies = [
|
|
|
|
"bitflags",
|
|
|
|
]
|
2019-12-09 11:39:44 +00:00
|
|
|
|
2021-03-02 05:59:49 +00:00
|
|
|
[[package]]
|
|
|
|
name = "redox_users"
|
2022-04-04 00:26:16 +00:00
|
|
|
version = "0.4.3"
|
2021-03-02 05:59:49 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2022-04-04 00:26:16 +00:00
|
|
|
checksum = "b033d837a7cf162d7993aded9304e30a83213c648b6e389db233191f891e5c2b"
|
2021-03-02 05:59:49 +00:00
|
|
|
dependencies = [
|
2022-06-18 23:59:43 +00:00
|
|
|
"getrandom 0.2.7",
|
2021-07-05 00:54:17 +00:00
|
|
|
"redox_syscall",
|
2022-03-31 07:52:23 +00:00
|
|
|
"thiserror",
|
2021-03-02 05:59:49 +00:00
|
|
|
]
|
|
|
|
|
2019-12-09 11:39:44 +00:00
|
|
|
[[package]]
|
|
|
|
name = "regex"
|
2022-07-05 23:36:42 +00:00
|
|
|
version = "1.6.0"
|
2019-12-09 11:39:44 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2022-07-05 23:36:42 +00:00
|
|
|
checksum = "4c4eb3267174b8c6c2f654116623910a0fef09c4753f8dd83db29c48a0df988b"
|
2019-12-09 11:39:44 +00:00
|
|
|
dependencies = [
|
2020-05-10 09:56:31 +00:00
|
|
|
"aho-corasick",
|
|
|
|
"memchr",
|
|
|
|
"regex-syntax",
|
2019-12-09 11:39:44 +00:00
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "regex-automata"
|
2021-07-05 00:54:17 +00:00
|
|
|
version = "0.1.10"
|
2019-12-09 11:39:44 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2021-07-05 00:54:17 +00:00
|
|
|
checksum = "6c230d73fb8d8c1b9c0b3135c5142a8acee3a0558fb8db5cf1cb65f8d7862132"
|
2019-12-09 11:39:44 +00:00
|
|
|
dependencies = [
|
2020-10-23 04:16:33 +00:00
|
|
|
"regex-syntax",
|
2019-12-09 11:39:44 +00:00
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "regex-syntax"
|
2022-07-05 23:36:42 +00:00
|
|
|
version = "0.6.27"
|
2019-12-09 11:39:44 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2022-07-05 23:36:42 +00:00
|
|
|
checksum = "a3f87b73ce11b1619a3c6332f45341e0047173771e8b8b73f87bfeefb7b56244"
|
2019-12-09 11:39:44 +00:00
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "remove_dir_all"
|
2020-07-06 01:55:56 +00:00
|
|
|
version = "0.5.3"
|
2019-12-09 11:39:44 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2020-07-06 01:55:56 +00:00
|
|
|
checksum = "3acd125665422973a33ac9d3dd2df85edad0f4ae9b00dafb1a05e43a9f5ef8e7"
|
2019-12-09 11:39:44 +00:00
|
|
|
dependencies = [
|
2021-07-09 03:20:24 +00:00
|
|
|
"winapi",
|
2019-12-09 11:39:44 +00:00
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "reqwest"
|
2022-06-18 23:59:43 +00:00
|
|
|
version = "0.11.11"
|
2019-12-09 11:39:44 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2022-06-18 23:59:43 +00:00
|
|
|
checksum = "b75aa69a3f06bbcc66ede33af2af253c6f7a86b1ca0033f60c580a27074fbf92"
|
2020-05-10 09:56:31 +00:00
|
|
|
dependencies = [
|
2022-04-04 00:26:16 +00:00
|
|
|
"base64",
|
2021-10-29 01:59:29 +00:00
|
|
|
"bytes",
|
2020-05-10 09:56:31 +00:00
|
|
|
"encoding_rs",
|
2020-05-17 11:16:48 +00:00
|
|
|
"futures-core",
|
|
|
|
"futures-util",
|
2022-01-14 05:42:47 +00:00
|
|
|
"h2",
|
2021-02-10 23:29:49 +00:00
|
|
|
"http",
|
2021-07-09 03:20:24 +00:00
|
|
|
"http-body",
|
|
|
|
"hyper",
|
2022-07-18 01:51:36 +00:00
|
|
|
"hyper-rustls",
|
2021-07-09 03:20:24 +00:00
|
|
|
"hyper-tls",
|
2020-07-29 03:40:22 +00:00
|
|
|
"ipnet",
|
2020-05-17 11:16:48 +00:00
|
|
|
"js-sys",
|
|
|
|
"lazy_static",
|
2020-12-09 01:34:58 +00:00
|
|
|
"log",
|
|
|
|
"mime",
|
2020-05-10 09:56:31 +00:00
|
|
|
"native-tls",
|
2020-12-09 01:34:58 +00:00
|
|
|
"percent-encoding",
|
2022-06-18 23:59:43 +00:00
|
|
|
"pin-project-lite 0.2.9",
|
2022-07-18 01:51:36 +00:00
|
|
|
"rustls 0.20.6",
|
|
|
|
"rustls-pemfile",
|
2020-05-10 09:56:31 +00:00
|
|
|
"serde",
|
|
|
|
"serde_json",
|
2020-11-28 05:30:57 +00:00
|
|
|
"serde_urlencoded",
|
2021-08-17 01:00:24 +00:00
|
|
|
"tokio",
|
2021-02-10 23:29:49 +00:00
|
|
|
"tokio-native-tls",
|
2022-07-18 01:51:36 +00:00
|
|
|
"tokio-rustls 0.23.4",
|
2022-06-18 23:59:43 +00:00
|
|
|
"tokio-util 0.7.3",
|
|
|
|
"tower-service",
|
2020-12-09 01:34:58 +00:00
|
|
|
"url",
|
2020-05-17 11:16:48 +00:00
|
|
|
"wasm-bindgen",
|
|
|
|
"wasm-bindgen-futures",
|
|
|
|
"web-sys",
|
2022-07-18 01:51:36 +00:00
|
|
|
"webpki-roots",
|
2022-03-31 07:52:23 +00:00
|
|
|
"winreg 0.10.1",
|
2021-06-03 01:11:33 +00:00
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "resolv-conf"
|
|
|
|
version = "0.7.0"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "52e44394d2086d010551b14b53b1f24e31647570cd1deb0379e2c21b329aba00"
|
|
|
|
dependencies = [
|
|
|
|
"hostname",
|
|
|
|
"quick-error",
|
2019-12-09 11:39:44 +00:00
|
|
|
]
|
|
|
|
|
Separate execution payloads in the DB (#3157)
## Proposed Changes
Reduce post-merge disk usage by not storing finalized execution payloads in Lighthouse's database.
:warning: **This is achieved in a backwards-incompatible way for networks that have already merged** :warning:. Kiln users and shadow fork enjoyers will be unable to downgrade after running the code from this PR. The upgrade migration may take several minutes to run, and can't be aborted after it begins.
The main changes are:
- New column in the database called `ExecPayload`, keyed by beacon block root.
- The `BeaconBlock` column now stores blinded blocks only.
- Lots of places that previously used full blocks now use blinded blocks, e.g. analytics APIs, block replay in the DB, etc.
- On finalization:
- `prune_abanonded_forks` deletes non-canonical payloads whilst deleting non-canonical blocks.
- `migrate_db` deletes finalized canonical payloads whilst deleting finalized states.
- Conversions between blinded and full blocks are implemented in a compositional way, duplicating some work from Sean's PR #3134.
- The execution layer has a new `get_payload_by_block_hash` method that reconstructs a payload using the EE's `eth_getBlockByHash` call.
- I've tested manually that it works on Kiln, using Geth and Nethermind.
- This isn't necessarily the most efficient method, and new engine APIs are being discussed to improve this: https://github.com/ethereum/execution-apis/pull/146.
- We're depending on the `ethers` master branch, due to lots of recent changes. We're also using a workaround for https://github.com/gakonst/ethers-rs/issues/1134.
- Payload reconstruction is used in the HTTP API via `BeaconChain::get_block`, which is now `async`. Due to the `async` fn, the `blocking_json` wrapper has been removed.
- Payload reconstruction is used in network RPC to serve blocks-by-{root,range} responses. Here the `async` adjustment is messier, although I think I've managed to come up with a reasonable compromise: the handlers take the `SendOnDrop` by value so that they can drop it on _task completion_ (after the `fn` returns). Still, this is introducing disk reads onto core executor threads, which may have a negative performance impact (thoughts appreciated).
## Additional Info
- [x] For performance it would be great to remove the cloning of full blocks when converting them to blinded blocks to write to disk. I'm going to experiment with a `put_block` API that takes the block by value, breaks it into a blinded block and a payload, stores the blinded block, and then re-assembles the full block for the caller.
- [x] We should measure the latency of blocks-by-root and blocks-by-range responses.
- [x] We should add integration tests that stress the payload reconstruction (basic tests done, issue for more extensive tests: https://github.com/sigp/lighthouse/issues/3159)
- [x] We should (manually) test the schema v9 migration from several prior versions, particularly as blocks have changed on disk and some migrations rely on being able to load blocks.
Co-authored-by: Paul Hauner <paul@paulhauner.com>
2022-05-12 00:42:17 +00:00
|
|
|
[[package]]
|
|
|
|
name = "rfc6979"
|
|
|
|
version = "0.1.0"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "96ef608575f6392792f9ecf7890c00086591d29a83910939d430753f7c050525"
|
|
|
|
dependencies = [
|
|
|
|
"crypto-bigint",
|
|
|
|
"hmac 0.11.0",
|
|
|
|
"zeroize",
|
|
|
|
]
|
|
|
|
|
2019-12-09 11:39:44 +00:00
|
|
|
[[package]]
|
|
|
|
name = "ring"
|
2021-03-02 05:59:49 +00:00
|
|
|
version = "0.16.20"
|
2019-12-09 11:39:44 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2021-03-02 05:59:49 +00:00
|
|
|
checksum = "3053cf52e236a3ed746dfc745aa9cacf1b791d846bdaf412f60a8d7d6e17c8fc"
|
2019-12-09 11:39:44 +00:00
|
|
|
dependencies = [
|
2020-05-10 09:56:31 +00:00
|
|
|
"cc",
|
|
|
|
"libc",
|
2020-12-14 02:28:19 +00:00
|
|
|
"once_cell",
|
2020-05-10 09:56:31 +00:00
|
|
|
"spin",
|
|
|
|
"untrusted",
|
|
|
|
"web-sys",
|
2021-07-09 03:20:24 +00:00
|
|
|
"winapi",
|
2019-12-09 11:39:44 +00:00
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "rle-decode-fast"
|
2022-02-01 23:53:53 +00:00
|
|
|
version = "1.0.3"
|
2019-12-09 11:39:44 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2022-02-01 23:53:53 +00:00
|
|
|
checksum = "3582f63211428f83597b51b2ddb88e2a91a9d52d12831f9d08f5e624e8977422"
|
2019-12-09 11:39:44 +00:00
|
|
|
|
2021-02-10 23:29:49 +00:00
|
|
|
[[package]]
|
|
|
|
name = "rlp"
|
2021-08-17 01:00:24 +00:00
|
|
|
version = "0.5.1"
|
2021-02-10 23:29:49 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2021-08-17 01:00:24 +00:00
|
|
|
checksum = "999508abb0ae792aabed2460c45b89106d97fe4adac593bdaef433c2605847b5"
|
2021-02-10 23:29:49 +00:00
|
|
|
dependencies = [
|
2021-10-29 01:59:29 +00:00
|
|
|
"bytes",
|
2021-02-10 23:29:49 +00:00
|
|
|
"rustc-hex",
|
|
|
|
]
|
|
|
|
|
Separate execution payloads in the DB (#3157)
## Proposed Changes
Reduce post-merge disk usage by not storing finalized execution payloads in Lighthouse's database.
:warning: **This is achieved in a backwards-incompatible way for networks that have already merged** :warning:. Kiln users and shadow fork enjoyers will be unable to downgrade after running the code from this PR. The upgrade migration may take several minutes to run, and can't be aborted after it begins.
The main changes are:
- New column in the database called `ExecPayload`, keyed by beacon block root.
- The `BeaconBlock` column now stores blinded blocks only.
- Lots of places that previously used full blocks now use blinded blocks, e.g. analytics APIs, block replay in the DB, etc.
- On finalization:
- `prune_abanonded_forks` deletes non-canonical payloads whilst deleting non-canonical blocks.
- `migrate_db` deletes finalized canonical payloads whilst deleting finalized states.
- Conversions between blinded and full blocks are implemented in a compositional way, duplicating some work from Sean's PR #3134.
- The execution layer has a new `get_payload_by_block_hash` method that reconstructs a payload using the EE's `eth_getBlockByHash` call.
- I've tested manually that it works on Kiln, using Geth and Nethermind.
- This isn't necessarily the most efficient method, and new engine APIs are being discussed to improve this: https://github.com/ethereum/execution-apis/pull/146.
- We're depending on the `ethers` master branch, due to lots of recent changes. We're also using a workaround for https://github.com/gakonst/ethers-rs/issues/1134.
- Payload reconstruction is used in the HTTP API via `BeaconChain::get_block`, which is now `async`. Due to the `async` fn, the `blocking_json` wrapper has been removed.
- Payload reconstruction is used in network RPC to serve blocks-by-{root,range} responses. Here the `async` adjustment is messier, although I think I've managed to come up with a reasonable compromise: the handlers take the `SendOnDrop` by value so that they can drop it on _task completion_ (after the `fn` returns). Still, this is introducing disk reads onto core executor threads, which may have a negative performance impact (thoughts appreciated).
## Additional Info
- [x] For performance it would be great to remove the cloning of full blocks when converting them to blinded blocks to write to disk. I'm going to experiment with a `put_block` API that takes the block by value, breaks it into a blinded block and a payload, stores the blinded block, and then re-assembles the full block for the caller.
- [x] We should measure the latency of blocks-by-root and blocks-by-range responses.
- [x] We should add integration tests that stress the payload reconstruction (basic tests done, issue for more extensive tests: https://github.com/sigp/lighthouse/issues/3159)
- [x] We should (manually) test the schema v9 migration from several prior versions, particularly as blocks have changed on disk and some migrations rely on being able to load blocks.
Co-authored-by: Paul Hauner <paul@paulhauner.com>
2022-05-12 00:42:17 +00:00
|
|
|
[[package]]
|
|
|
|
name = "rlp-derive"
|
|
|
|
version = "0.1.0"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "e33d7b2abe0c340d8797fe2907d3f20d3b5ea5908683618bfe80df7f621f672a"
|
|
|
|
dependencies = [
|
|
|
|
"proc-macro2",
|
|
|
|
"quote",
|
|
|
|
"syn",
|
|
|
|
]
|
|
|
|
|
2020-07-29 04:32:50 +00:00
|
|
|
[[package]]
|
|
|
|
name = "rpassword"
|
2021-02-10 23:29:49 +00:00
|
|
|
version = "5.0.1"
|
2020-07-29 04:32:50 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2021-02-10 23:29:49 +00:00
|
|
|
checksum = "ffc936cf8a7ea60c58f030fd36a612a48f440610214dc54bc36431f9ea0c3efb"
|
2020-07-29 04:32:50 +00:00
|
|
|
dependencies = [
|
|
|
|
"libc",
|
2021-07-09 03:20:24 +00:00
|
|
|
"winapi",
|
2020-07-29 04:32:50 +00:00
|
|
|
]
|
|
|
|
|
2020-05-18 06:25:16 +00:00
|
|
|
[[package]]
|
|
|
|
name = "rusqlite"
|
2021-12-08 23:12:08 +00:00
|
|
|
version = "0.25.4"
|
2020-05-18 06:25:16 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2021-12-08 23:12:08 +00:00
|
|
|
checksum = "5c4b1eaf239b47034fb450ee9cdedd7d0226571689d8823030c4b6c2cb407152"
|
2020-05-18 06:25:16 +00:00
|
|
|
dependencies = [
|
2020-12-09 01:34:58 +00:00
|
|
|
"bitflags",
|
2020-05-18 06:25:16 +00:00
|
|
|
"fallible-iterator",
|
|
|
|
"fallible-streaming-iterator",
|
2020-10-09 02:05:30 +00:00
|
|
|
"hashlink",
|
2020-05-18 06:25:16 +00:00
|
|
|
"libsqlite3-sys",
|
|
|
|
"memchr",
|
2020-12-09 01:34:58 +00:00
|
|
|
"smallvec",
|
2020-05-18 06:25:16 +00:00
|
|
|
]
|
|
|
|
|
2019-12-09 11:39:44 +00:00
|
|
|
[[package]]
|
|
|
|
name = "rustc-demangle"
|
2021-09-03 01:10:25 +00:00
|
|
|
version = "0.1.21"
|
2019-12-09 11:39:44 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2021-09-03 01:10:25 +00:00
|
|
|
checksum = "7ef03e0a2b150c7a90d01faf6254c9c48a41e95fb2a8c2ac1c6f0d2b9aefc342"
|
2019-12-09 11:39:44 +00:00
|
|
|
|
EIP-2386 (draft): Eth2 wallet (#1117)
* Add test to understand flow of key storage
* First commit
* Committing to save trait stuff
* Working naive design
* Add keystore struct
* Move keystore files into their own module
* Add serde (de)serialize_with magic
* Add keystore test
* Fix tests
* Add comments and minor fixes
* Pass optional params to `to_keystore` function
* Add `path` field to keystore
* Add function to read Keystore from file
* Add test vectors and fix Version serialization
* Checksum params is empty object
* Add public key to Keystore
* Add function for saving keystore into file
* Deleted account_manager main.rs
* Move keystore module to validator_client
* Add save_keystore method to validator_directory
* Add load_keystore function. Minor refactorings
* Fixed dependencies
* Address some review comments
* Add Password newtype; derive Zeroize
* Fix test
* Move keystore into own crate
* Remove padding
* Add error enum, zeroize more things
* Fix comment
* Add keystore builder
* Remove keystore stuff from val client
* Add more tests, comments
* Add more comments, test vectors
* Progress on improving JSON validation
* More JSON verification
* Start moving JSON into own mod
* Remove old code
* Add more tests, reader/writers
* Tidy
* Move keystore into own file
* Move more logic into keystore file
* Tidy
* Tidy
* Allow for odd-character hex
* Add more json missing field checks
* Use scrypt by default
* Tidy, address comments
* Test path and uuid in vectors
* Fix comment
* Add checks for kdf params
* Enforce empty kdf message
* Expose json_keystore mod
* First commits on path derivation
* Progress with implementation
* More progress
* Passing intermediate test vectors
* Tidy, add comments
* Add DerivedKey structs
* Move key derivation into own crate
* Add zeroize structs
* Return error for empty seed
* Add tests
* Tidy
* First commits on path derivation
* Progress with implementation
* Move key derivation into own crate
* Start defining JSON wallet
* Add progress
* Split out encrypt/decrypt
* First commits on path derivation
* Progress with implementation
* More progress
* Passing intermediate test vectors
* Tidy, add comments
* Add DerivedKey structs
* Move key derivation into own crate
* Add zeroize structs
* Return error for empty seed
* Add tests
* Tidy
* Add progress
* Replace some password usage with slice
* First commits on path derivation
* Progress with implementation
* More progress
* Passing intermediate test vectors
* Tidy, add comments
* Add DerivedKey structs
* Move key derivation into own crate
* Add zeroize structs
* Return error for empty seed
* Add tests
* Tidy
* Add progress
* Expose PlainText struct
* First commits on path derivation
* Progress with implementation
* More progress
* Passing intermediate test vectors
* Tidy, add comments
* Add DerivedKey structs
* Move key derivation into own crate
* Add zeroize structs
* Return error for empty seed
* Add tests
* Tidy
* Add builder
* Expose consts, remove Password
* Minor progress
* Expose SALT_SIZE
* First compiling version
* Add test vectors
* Move dbg assert statement
* Add mnemonic, tidy
* Tidy
* Add testing
* Fix broken test
* Address review comments
Co-authored-by: pawan <pawandhananjay@gmail.com>
2020-05-11 22:54:59 +00:00
|
|
|
[[package]]
|
|
|
|
name = "rustc-hash"
|
|
|
|
version = "1.1.0"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2"
|
|
|
|
|
2019-12-09 11:39:44 +00:00
|
|
|
[[package]]
|
|
|
|
name = "rustc-hex"
|
2020-01-15 03:48:09 +00:00
|
|
|
version = "2.1.0"
|
2019-12-09 11:39:44 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2020-05-10 09:56:31 +00:00
|
|
|
checksum = "3e75f6a532d0fd9f7f13144f392b6ad56a32696bfcd9c78f797f16bbb6f072d6"
|
2019-12-09 11:39:44 +00:00
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "rustc_version"
|
|
|
|
version = "0.2.3"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2020-05-10 09:56:31 +00:00
|
|
|
checksum = "138e3e0acb6c9fb258b19b67cb8abd63c00679d2851805ea151465464fe9030a"
|
2019-12-09 11:39:44 +00:00
|
|
|
dependencies = [
|
2021-05-19 23:05:16 +00:00
|
|
|
"semver 0.9.0",
|
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "rustc_version"
|
|
|
|
version = "0.3.3"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "f0dfe2087c51c460008730de8b57e6a320782fbfb312e1f4d520e6c6fae155ee"
|
|
|
|
dependencies = [
|
|
|
|
"semver 0.11.0",
|
2019-12-09 11:39:44 +00:00
|
|
|
]
|
|
|
|
|
2021-06-03 01:11:33 +00:00
|
|
|
[[package]]
|
|
|
|
name = "rustc_version"
|
|
|
|
version = "0.4.0"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366"
|
|
|
|
dependencies = [
|
2022-07-05 23:36:42 +00:00
|
|
|
"semver 1.0.12",
|
2021-06-03 01:11:33 +00:00
|
|
|
]
|
|
|
|
|
2019-12-09 11:39:44 +00:00
|
|
|
[[package]]
|
|
|
|
name = "rustls"
|
2021-05-04 00:44:05 +00:00
|
|
|
version = "0.19.1"
|
2019-12-09 11:39:44 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2021-05-04 00:44:05 +00:00
|
|
|
checksum = "35edb675feee39aec9c99fa5ff985081995a06d594114ae14cbe797ad7b7a6d7"
|
2019-12-09 11:39:44 +00:00
|
|
|
dependencies = [
|
2022-04-04 00:26:16 +00:00
|
|
|
"base64",
|
2020-12-09 01:34:58 +00:00
|
|
|
"log",
|
2020-05-10 09:56:31 +00:00
|
|
|
"ring",
|
2021-11-18 05:08:42 +00:00
|
|
|
"sct 0.6.1",
|
|
|
|
"webpki 0.21.4",
|
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "rustls"
|
2022-06-18 23:59:43 +00:00
|
|
|
version = "0.20.6"
|
2021-11-18 05:08:42 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2022-06-18 23:59:43 +00:00
|
|
|
checksum = "5aab8ee6c7097ed6057f43c187a62418d0c05a4bd5f18b3571db50ee0f9ce033"
|
2021-11-18 05:08:42 +00:00
|
|
|
dependencies = [
|
|
|
|
"log",
|
|
|
|
"ring",
|
|
|
|
"sct 0.7.0",
|
|
|
|
"webpki 0.22.0",
|
2019-12-09 11:39:44 +00:00
|
|
|
]
|
|
|
|
|
2022-07-18 01:51:36 +00:00
|
|
|
[[package]]
|
|
|
|
name = "rustls-pemfile"
|
|
|
|
version = "1.0.0"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "e7522c9de787ff061458fe9a829dc790a3f5b22dc571694fc5883f448b94d9a9"
|
|
|
|
dependencies = [
|
|
|
|
"base64",
|
|
|
|
]
|
|
|
|
|
2021-03-02 05:59:49 +00:00
|
|
|
[[package]]
|
|
|
|
name = "rustversion"
|
2022-07-05 23:36:42 +00:00
|
|
|
version = "1.0.7"
|
2021-03-02 05:59:49 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2022-07-05 23:36:42 +00:00
|
|
|
checksum = "a0a5f7c728f5d284929a1cccb5bc19884422bfe6ef4d6c409da2c41838983fcf"
|
2021-03-02 05:59:49 +00:00
|
|
|
|
2019-12-09 11:39:44 +00:00
|
|
|
[[package]]
|
|
|
|
name = "rw-stream-sink"
|
2020-05-17 11:16:48 +00:00
|
|
|
version = "0.2.1"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "4da5fcb054c46f5a5dff833b129285a93d3f0179531735e6c866e8cc307d2020"
|
2019-12-09 11:39:44 +00:00
|
|
|
dependencies = [
|
2021-07-09 03:20:24 +00:00
|
|
|
"futures",
|
2022-07-05 23:36:42 +00:00
|
|
|
"pin-project 0.4.30",
|
2020-05-17 11:16:48 +00:00
|
|
|
"static_assertions",
|
2019-12-09 11:39:44 +00:00
|
|
|
]
|
|
|
|
|
2022-06-07 02:35:55 +00:00
|
|
|
[[package]]
|
|
|
|
name = "rw-stream-sink"
|
|
|
|
version = "0.3.0"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "26338f5e09bb721b85b135ea05af7767c90b52f6de4f087d4f4a3a9d64e7dc04"
|
|
|
|
dependencies = [
|
|
|
|
"futures",
|
2022-07-05 23:36:42 +00:00
|
|
|
"pin-project 1.0.11",
|
2022-06-07 02:35:55 +00:00
|
|
|
"static_assertions",
|
|
|
|
]
|
|
|
|
|
2019-12-09 11:39:44 +00:00
|
|
|
[[package]]
|
|
|
|
name = "ryu"
|
2022-06-18 23:59:43 +00:00
|
|
|
version = "1.0.10"
|
2019-12-09 11:39:44 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2022-06-18 23:59:43 +00:00
|
|
|
checksum = "f3f6f92acf49d1b98f7a81226834412ada05458b7364277387724a237f062695"
|
2019-12-09 11:39:44 +00:00
|
|
|
|
2020-04-20 02:35:11 +00:00
|
|
|
[[package]]
|
|
|
|
name = "safe_arith"
|
|
|
|
version = "0.1.0"
|
|
|
|
|
2019-12-09 11:39:44 +00:00
|
|
|
[[package]]
|
|
|
|
name = "safemem"
|
|
|
|
version = "0.3.3"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2020-05-10 09:56:31 +00:00
|
|
|
checksum = "ef703b7cb59335eae2eb93ceb664c0eb7ea6bf567079d843e09420219668e072"
|
2019-12-09 11:39:44 +00:00
|
|
|
|
2020-12-07 08:20:33 +00:00
|
|
|
[[package]]
|
|
|
|
name = "salsa20"
|
2021-08-17 01:00:24 +00:00
|
|
|
version = "0.8.1"
|
2021-07-15 00:53:59 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2021-08-17 01:00:24 +00:00
|
|
|
checksum = "ecbd2eb639fd7cab5804a0837fe373cc2172d15437e804c054a9fb885cb923b0"
|
2021-07-15 00:53:59 +00:00
|
|
|
dependencies = [
|
2021-08-17 01:00:24 +00:00
|
|
|
"cipher",
|
2021-07-15 00:53:59 +00:00
|
|
|
]
|
|
|
|
|
2019-12-09 11:39:44 +00:00
|
|
|
[[package]]
|
|
|
|
name = "same-file"
|
2020-01-15 04:50:01 +00:00
|
|
|
version = "1.0.6"
|
2019-12-09 11:39:44 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2020-05-10 09:56:31 +00:00
|
|
|
checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502"
|
2019-12-09 11:39:44 +00:00
|
|
|
dependencies = [
|
2020-05-10 09:56:31 +00:00
|
|
|
"winapi-util",
|
2019-12-09 11:39:44 +00:00
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "schannel"
|
2022-06-18 23:59:43 +00:00
|
|
|
version = "0.1.20"
|
2019-12-09 11:39:44 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2022-06-18 23:59:43 +00:00
|
|
|
checksum = "88d6731146462ea25d9244b2ed5fd1d716d25c52e4d54aa4fb0f3c4e9854dbe2"
|
2019-12-09 11:39:44 +00:00
|
|
|
dependencies = [
|
2020-05-10 09:56:31 +00:00
|
|
|
"lazy_static",
|
2022-06-18 23:59:43 +00:00
|
|
|
"windows-sys",
|
2019-12-09 11:39:44 +00:00
|
|
|
]
|
|
|
|
|
2020-05-18 06:25:16 +00:00
|
|
|
[[package]]
|
|
|
|
name = "scheduled-thread-pool"
|
2022-06-18 23:59:43 +00:00
|
|
|
version = "0.2.6"
|
2020-05-18 06:25:16 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2022-06-18 23:59:43 +00:00
|
|
|
checksum = "977a7519bff143a44f842fd07e80ad1329295bd71686457f18e496736f4bf9bf"
|
2020-05-18 06:25:16 +00:00
|
|
|
dependencies = [
|
2022-06-18 23:59:43 +00:00
|
|
|
"parking_lot 0.12.1",
|
2020-05-18 06:25:16 +00:00
|
|
|
]
|
|
|
|
|
2019-12-09 11:39:44 +00:00
|
|
|
[[package]]
|
|
|
|
name = "scoped-tls"
|
|
|
|
version = "1.0.0"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2020-05-10 09:56:31 +00:00
|
|
|
checksum = "ea6a9290e3c9cf0f18145ef7ffa62d68ee0bf5fcd651017e586dc7fd5da448c2"
|
2019-12-09 11:39:44 +00:00
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "scopeguard"
|
Initial work towards v0.2.0 (#924)
* Remove ping protocol
* Initial renaming of network services
* Correct rebasing relative to latest master
* Start updating types
* Adds HashMapDelay struct to utils
* Initial network restructure
* Network restructure. Adds new types for v0.2.0
* Removes build artefacts
* Shift validation to beacon chain
* Temporarily remove gossip validation
This is to be updated to match current optimisation efforts.
* Adds AggregateAndProof
* Begin rebuilding pubsub encoding/decoding
* Signature hacking
* Shift gossipsup decoding into eth2_libp2p
* Existing EF tests passing with fake_crypto
* Shifts block encoding/decoding into RPC
* Delete outdated API spec
* All release tests passing bar genesis state parsing
* Update and test YamlConfig
* Update to spec v0.10 compatible BLS
* Updates to BLS EF tests
* Add EF test for AggregateVerify
And delete unused hash2curve tests for uncompressed points
* Update EF tests to v0.10.1
* Use optional block root correctly in block proc
* Use genesis fork in deposit domain. All tests pass
* Fast aggregate verify test
* Update REST API docs
* Fix unused import
* Bump spec tags to v0.10.1
* Add `seconds_per_eth1_block` to chainspec
* Update to timestamp based eth1 voting scheme
* Return None from `get_votes_to_consider` if block cache is empty
* Handle overflows in `is_candidate_block`
* Revert to failing tests
* Fix eth1 data sets test
* Choose default vote according to spec
* Fix collect_valid_votes tests
* Fix `get_votes_to_consider` to choose all eligible blocks
* Uncomment winning_vote tests
* Add comments; remove unused code
* Reduce seconds_per_eth1_block for simulation
* Addressed review comments
* Add test for default vote case
* Fix logs
* Remove unused functions
* Meter default eth1 votes
* Fix comments
* Progress on attestation service
* Address review comments; remove unused dependency
* Initial work on removing libp2p lock
* Add LRU caches to store (rollup)
* Update attestation validation for DB changes (WIP)
* Initial version of should_forward_block
* Scaffold
* Progress on attestation validation
Also, consolidate prod+testing slot clocks so that they share much
of the same implementation and can both handle sub-slot time changes.
* Removes lock from libp2p service
* Completed network lock removal
* Finish(?) attestation processing
* Correct network termination future
* Add slot check to block check
* Correct fmt issues
* Remove Drop implementation for network service
* Add first attempt at attestation proc. re-write
* Add version 2 of attestation processing
* Minor fixes
* Add validator pubkey cache
* Make get_indexed_attestation take a committee
* Link signature processing into new attn verification
* First working version
* Ensure pubkey cache is updated
* Add more metrics, slight optimizations
* Clone committee cache during attestation processing
* Update shuffling cache during block processing
* Remove old commented-out code
* Fix shuffling cache insert bug
* Used indexed attestation in fork choice
* Restructure attn processing, add metrics
* Add more detailed metrics
* Tidy, fix failing tests
* Fix failing tests, tidy
* Address reviewers suggestions
* Disable/delete two outdated tests
* Modification of validator for subscriptions
* Add slot signing to validator client
* Further progress on validation subscription
* Adds necessary validator subscription functionality
* Add new Pubkeys struct to signature_sets
* Refactor with functional approach
* Update beacon chain
* Clean up validator <-> beacon node http types
* Add aggregator status to ValidatorDuty
* Impl Clone for manual slot clock
* Fix minor errors
* Further progress validator client subscription
* Initial subscription and aggregation handling
* Remove decompressed member from pubkey bytes
* Progress to modifying val client for attestation aggregation
* First draft of validator client upgrade for aggregate attestations
* Add hashmap for indices lookup
* Add state cache, remove store cache
* Only build the head committee cache
* Removes lock on a network channel
* Partially implement beacon node subscription http api
* Correct compilation issues
* Change `get_attesting_indices` to use Vec
* Fix failing test
* Partial implementation of timer
* Adds timer, removes exit_future, http api to op pool
* Partial multiple aggregate attestation handling
* Permits bulk messages accross gossipsub network channel
* Correct compile issues
* Improve gosispsub messaging and correct rest api helpers
* Added global gossipsub subscriptions
* Update validator subscriptions data structs
* Tidy
* Re-structure validator subscriptions
* Initial handling of subscriptions
* Re-structure network service
* Add pubkey cache persistence file
* Add more comments
* Integrate persistence file into builder
* Add pubkey cache tests
* Add HashSetDelay and introduce into attestation service
* Handles validator subscriptions
* Add data_dir to beacon chain builder
* Remove Option in pubkey cache persistence file
* Ensure consistency between datadir/data_dir
* Fix failing network test
* Peer subnet discovery gets queued for future subscriptions
* Reorganise attestation service functions
* Initial wiring of attestation service
* First draft of attestation service timing logic
* Correct minor typos
* Tidy
* Fix todos
* Improve tests
* Add PeerInfo to connected peers mapping
* Fix compile error
* Fix compile error from merge
* Split up block processing metrics
* Tidy
* Refactor get_pubkey_from_state
* Remove commented-out code
* Rename state_cache -> checkpoint_cache
* Rename Checkpoint -> Snapshot
* Tidy, add comments
* Tidy up find_head function
* Change some checkpoint -> snapshot
* Add tests
* Expose max_len
* Remove dead code
* Tidy
* Fix bug
* Add sync-speed metric
* Add first attempt at VerifiableBlock
* Start integrating into beacon chain
* Integrate VerifiableBlock
* Rename VerifableBlock -> PartialBlockVerification
* Add start of typed methods
* Add progress
* Add further progress
* Rename structs
* Add full block verification to block_processing.rs
* Further beacon chain integration
* Update checks for gossip
* Add todo
* Start adding segement verification
* Add passing chain segement test
* Initial integration with batch sync
* Minor changes
* Tidy, add more error checking
* Start adding chain_segment tests
* Finish invalid signature tests
* Include single and gossip verified blocks in tests
* Add gossip verification tests
* Start adding docs
* Finish adding comments to block_processing.rs
* Rename block_processing.rs -> block_verification
* Start removing old block processing code
* Fixes beacon_chain compilation
* Fix project-wide compile errors
* Remove old code
* Correct code to pass all tests
* Fix bug with beacon proposer index
* Fix shim for BlockProcessingError
* Only process one epoch at a time
* Fix loop in chain segment processing
* Correct tests from master merge
* Add caching for state.eth1_data_votes
* Add BeaconChain::validator_pubkey
* Revert "Add caching for state.eth1_data_votes"
This reverts commit cd73dcd6434fb8d8e6bf30c5356355598ea7b78e.
Co-authored-by: Grant Wuerker <gwuerker@gmail.com>
Co-authored-by: Michael Sproul <michael@sigmaprime.io>
Co-authored-by: Michael Sproul <micsproul@gmail.com>
Co-authored-by: pawan <pawandhananjay@gmail.com>
Co-authored-by: Paul Hauner <paul@paulhauner.com>
2020-03-17 06:24:44 +00:00
|
|
|
version = "1.1.0"
|
2019-12-09 11:39:44 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2020-05-10 09:56:31 +00:00
|
|
|
checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd"
|
2019-12-09 11:39:44 +00:00
|
|
|
|
2020-07-01 08:01:03 +00:00
|
|
|
[[package]]
|
|
|
|
name = "scrypt"
|
2021-08-17 01:00:24 +00:00
|
|
|
version = "0.7.0"
|
2020-07-01 08:01:03 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2021-08-17 01:00:24 +00:00
|
|
|
checksum = "879588d8f90906e73302547e20fffefdd240eb3e0e744e142321f5d49dea0518"
|
2020-07-01 08:01:03 +00:00
|
|
|
dependencies = [
|
2021-08-17 01:00:24 +00:00
|
|
|
"hmac 0.11.0",
|
|
|
|
"pbkdf2 0.8.0",
|
|
|
|
"salsa20",
|
2022-01-11 01:35:56 +00:00
|
|
|
"sha2 0.9.9",
|
2020-07-01 08:01:03 +00:00
|
|
|
]
|
|
|
|
|
2019-12-09 11:39:44 +00:00
|
|
|
[[package]]
|
|
|
|
name = "sct"
|
2021-05-04 00:44:05 +00:00
|
|
|
version = "0.6.1"
|
2019-12-09 11:39:44 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2021-05-04 00:44:05 +00:00
|
|
|
checksum = "b362b83898e0e69f38515b82ee15aa80636befe47c3b6d3d89a911e78fc228ce"
|
2019-12-09 11:39:44 +00:00
|
|
|
dependencies = [
|
2020-05-10 09:56:31 +00:00
|
|
|
"ring",
|
|
|
|
"untrusted",
|
2019-12-09 11:39:44 +00:00
|
|
|
]
|
|
|
|
|
2021-11-18 05:08:42 +00:00
|
|
|
[[package]]
|
|
|
|
name = "sct"
|
|
|
|
version = "0.7.0"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "d53dcdb7c9f8158937a7981b48accfd39a43af418591a5d008c7b22b5e1b7ca4"
|
|
|
|
dependencies = [
|
|
|
|
"ring",
|
|
|
|
"untrusted",
|
|
|
|
]
|
|
|
|
|
Separate execution payloads in the DB (#3157)
## Proposed Changes
Reduce post-merge disk usage by not storing finalized execution payloads in Lighthouse's database.
:warning: **This is achieved in a backwards-incompatible way for networks that have already merged** :warning:. Kiln users and shadow fork enjoyers will be unable to downgrade after running the code from this PR. The upgrade migration may take several minutes to run, and can't be aborted after it begins.
The main changes are:
- New column in the database called `ExecPayload`, keyed by beacon block root.
- The `BeaconBlock` column now stores blinded blocks only.
- Lots of places that previously used full blocks now use blinded blocks, e.g. analytics APIs, block replay in the DB, etc.
- On finalization:
- `prune_abanonded_forks` deletes non-canonical payloads whilst deleting non-canonical blocks.
- `migrate_db` deletes finalized canonical payloads whilst deleting finalized states.
- Conversions between blinded and full blocks are implemented in a compositional way, duplicating some work from Sean's PR #3134.
- The execution layer has a new `get_payload_by_block_hash` method that reconstructs a payload using the EE's `eth_getBlockByHash` call.
- I've tested manually that it works on Kiln, using Geth and Nethermind.
- This isn't necessarily the most efficient method, and new engine APIs are being discussed to improve this: https://github.com/ethereum/execution-apis/pull/146.
- We're depending on the `ethers` master branch, due to lots of recent changes. We're also using a workaround for https://github.com/gakonst/ethers-rs/issues/1134.
- Payload reconstruction is used in the HTTP API via `BeaconChain::get_block`, which is now `async`. Due to the `async` fn, the `blocking_json` wrapper has been removed.
- Payload reconstruction is used in network RPC to serve blocks-by-{root,range} responses. Here the `async` adjustment is messier, although I think I've managed to come up with a reasonable compromise: the handlers take the `SendOnDrop` by value so that they can drop it on _task completion_ (after the `fn` returns). Still, this is introducing disk reads onto core executor threads, which may have a negative performance impact (thoughts appreciated).
## Additional Info
- [x] For performance it would be great to remove the cloning of full blocks when converting them to blinded blocks to write to disk. I'm going to experiment with a `put_block` API that takes the block by value, breaks it into a blinded block and a payload, stores the blinded block, and then re-assembles the full block for the caller.
- [x] We should measure the latency of blocks-by-root and blocks-by-range responses.
- [x] We should add integration tests that stress the payload reconstruction (basic tests done, issue for more extensive tests: https://github.com/sigp/lighthouse/issues/3159)
- [x] We should (manually) test the schema v9 migration from several prior versions, particularly as blocks have changed on disk and some migrations rely on being able to load blocks.
Co-authored-by: Paul Hauner <paul@paulhauner.com>
2022-05-12 00:42:17 +00:00
|
|
|
[[package]]
|
|
|
|
name = "sec1"
|
|
|
|
version = "0.2.1"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "08da66b8b0965a5555b6bd6639e68ccba85e1e2506f5fbb089e93f8a04e1a2d1"
|
|
|
|
dependencies = [
|
|
|
|
"der 0.5.1",
|
|
|
|
"generic-array",
|
|
|
|
"pkcs8 0.8.0",
|
|
|
|
"subtle",
|
|
|
|
"zeroize",
|
|
|
|
]
|
|
|
|
|
2020-05-05 23:12:28 +00:00
|
|
|
[[package]]
|
|
|
|
name = "secp256k1"
|
2022-04-04 00:26:16 +00:00
|
|
|
version = "0.21.3"
|
2020-05-05 23:12:28 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2022-04-04 00:26:16 +00:00
|
|
|
checksum = "9c42e6f1735c5f00f51e43e28d6634141f2bcad10931b2609ddd74a86d751260"
|
2020-05-05 23:12:28 +00:00
|
|
|
dependencies = [
|
2020-05-10 09:56:31 +00:00
|
|
|
"secp256k1-sys",
|
2020-05-05 23:12:28 +00:00
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "secp256k1-sys"
|
2022-01-11 01:35:56 +00:00
|
|
|
version = "0.4.2"
|
2020-05-05 23:12:28 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2022-01-11 01:35:56 +00:00
|
|
|
checksum = "957da2573cde917463ece3570eab4a0b3f19de6f1646cde62e6fd3868f566036"
|
2020-05-05 23:12:28 +00:00
|
|
|
dependencies = [
|
2020-05-10 09:56:31 +00:00
|
|
|
"cc",
|
2020-05-05 23:12:28 +00:00
|
|
|
]
|
|
|
|
|
2019-12-09 11:39:44 +00:00
|
|
|
[[package]]
|
|
|
|
name = "security-framework"
|
2022-04-04 00:26:16 +00:00
|
|
|
version = "2.6.1"
|
2019-12-09 11:39:44 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2022-04-04 00:26:16 +00:00
|
|
|
checksum = "2dc14f172faf8a0194a3aded622712b0de276821addc574fa54fc0a1167e10dc"
|
2019-12-09 11:39:44 +00:00
|
|
|
dependencies = [
|
2020-12-09 01:34:58 +00:00
|
|
|
"bitflags",
|
2020-05-10 09:56:31 +00:00
|
|
|
"core-foundation",
|
|
|
|
"core-foundation-sys",
|
|
|
|
"libc",
|
|
|
|
"security-framework-sys",
|
2019-12-09 11:39:44 +00:00
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "security-framework-sys"
|
2022-02-07 23:25:03 +00:00
|
|
|
version = "2.6.1"
|
2019-12-09 11:39:44 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2022-02-07 23:25:03 +00:00
|
|
|
checksum = "0160a13a177a45bfb43ce71c01580998474f556ad854dcbca936dd2841a5c556"
|
2019-12-09 11:39:44 +00:00
|
|
|
dependencies = [
|
2020-05-10 09:56:31 +00:00
|
|
|
"core-foundation-sys",
|
|
|
|
"libc",
|
2019-12-09 11:39:44 +00:00
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "semver"
|
|
|
|
version = "0.9.0"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2020-05-10 09:56:31 +00:00
|
|
|
checksum = "1d7eb9ef2c18661902cc47e535f9bc51b78acd254da71d375c2f6720d9a40403"
|
2019-12-09 11:39:44 +00:00
|
|
|
dependencies = [
|
2021-05-19 23:05:16 +00:00
|
|
|
"semver-parser 0.7.0",
|
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "semver"
|
|
|
|
version = "0.11.0"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "f301af10236f6df4160f7c3f04eec6dbc70ace82d23326abad5edee88801c6b6"
|
|
|
|
dependencies = [
|
|
|
|
"semver-parser 0.10.2",
|
2019-12-09 11:39:44 +00:00
|
|
|
]
|
|
|
|
|
2021-06-03 01:11:33 +00:00
|
|
|
[[package]]
|
|
|
|
name = "semver"
|
2022-07-05 23:36:42 +00:00
|
|
|
version = "1.0.12"
|
2021-06-03 01:11:33 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2022-07-05 23:36:42 +00:00
|
|
|
checksum = "a2333e6df6d6598f2b1974829f853c2b4c5f4a6e503c10af918081aa6f8564e1"
|
2021-06-03 01:11:33 +00:00
|
|
|
|
2019-12-09 11:39:44 +00:00
|
|
|
[[package]]
|
|
|
|
name = "semver-parser"
|
|
|
|
version = "0.7.0"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2020-05-10 09:56:31 +00:00
|
|
|
checksum = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3"
|
2019-12-09 11:39:44 +00:00
|
|
|
|
2021-05-19 23:05:16 +00:00
|
|
|
[[package]]
|
|
|
|
name = "semver-parser"
|
|
|
|
version = "0.10.2"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "00b0bef5b7f9e0df16536d3961cfb6e84331c065b4066afb39768d0e319411f7"
|
|
|
|
dependencies = [
|
|
|
|
"pest",
|
|
|
|
]
|
|
|
|
|
2022-07-18 01:51:36 +00:00
|
|
|
[[package]]
|
|
|
|
name = "send_wrapper"
|
|
|
|
version = "0.5.0"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "930c0acf610d3fdb5e2ab6213019aaa04e227ebe9547b0649ba599b16d788bd7"
|
|
|
|
|
2021-05-04 01:59:51 +00:00
|
|
|
[[package]]
|
|
|
|
name = "sensitive_url"
|
|
|
|
version = "0.1.0"
|
|
|
|
dependencies = [
|
|
|
|
"serde",
|
|
|
|
"url",
|
|
|
|
]
|
|
|
|
|
2019-12-09 11:39:44 +00:00
|
|
|
[[package]]
|
|
|
|
name = "serde"
|
2022-07-05 23:36:42 +00:00
|
|
|
version = "1.0.138"
|
2019-12-09 11:39:44 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2022-07-05 23:36:42 +00:00
|
|
|
checksum = "1578c6245786b9d168c5447eeacfb96856573ca56c9d68fdcf394be134882a47"
|
2019-12-09 11:39:44 +00:00
|
|
|
dependencies = [
|
2020-05-10 09:56:31 +00:00
|
|
|
"serde_derive",
|
2019-12-09 11:39:44 +00:00
|
|
|
]
|
|
|
|
|
2022-01-20 09:14:19 +00:00
|
|
|
[[package]]
|
|
|
|
name = "serde_array_query"
|
|
|
|
version = "0.1.0"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "d89c6e82b1005b33d5b2bbc47096800e5ad6b67ef5636f9c13ad29a6935734a7"
|
|
|
|
dependencies = [
|
|
|
|
"serde",
|
|
|
|
"serde_urlencoded",
|
|
|
|
]
|
|
|
|
|
2020-07-06 01:55:56 +00:00
|
|
|
[[package]]
|
|
|
|
name = "serde_cbor"
|
2021-09-03 01:10:25 +00:00
|
|
|
version = "0.11.2"
|
2020-07-06 01:55:56 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2021-09-03 01:10:25 +00:00
|
|
|
checksum = "2bef2ebfde456fb76bbcf9f59315333decc4fda0b2b44b420243c11e0f5ec1f5"
|
2020-07-06 01:55:56 +00:00
|
|
|
dependencies = [
|
|
|
|
"half",
|
|
|
|
"serde",
|
|
|
|
]
|
|
|
|
|
2019-12-09 11:39:44 +00:00
|
|
|
[[package]]
|
|
|
|
name = "serde_derive"
|
2022-07-05 23:36:42 +00:00
|
|
|
version = "1.0.138"
|
2019-12-09 11:39:44 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2022-07-05 23:36:42 +00:00
|
|
|
checksum = "023e9b1467aef8a10fb88f25611870ada9800ef7e22afce356bb0d2387b6f27c"
|
2019-12-09 11:39:44 +00:00
|
|
|
dependencies = [
|
2020-05-17 11:16:48 +00:00
|
|
|
"proc-macro2",
|
|
|
|
"quote",
|
|
|
|
"syn",
|
2019-12-09 11:39:44 +00:00
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "serde_json"
|
2022-07-05 23:36:42 +00:00
|
|
|
version = "1.0.82"
|
2019-12-09 11:39:44 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2022-07-05 23:36:42 +00:00
|
|
|
checksum = "82c2c1fdcd807d1098552c5b9a36e425e42e9fbd7c6a37a8425f390f781f7fa7"
|
2019-12-09 11:39:44 +00:00
|
|
|
dependencies = [
|
2022-06-18 23:59:43 +00:00
|
|
|
"itoa 1.0.2",
|
2020-05-10 09:56:31 +00:00
|
|
|
"ryu",
|
|
|
|
"serde",
|
2019-12-09 11:39:44 +00:00
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "serde_repr"
|
2022-06-18 23:59:43 +00:00
|
|
|
version = "0.1.8"
|
2019-12-09 11:39:44 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2022-06-18 23:59:43 +00:00
|
|
|
checksum = "a2ad84e47328a31223de7fed7a4f5087f2d6ddfe586cf3ca25b7a165bc0a5aed"
|
2019-12-09 11:39:44 +00:00
|
|
|
dependencies = [
|
2020-05-17 11:16:48 +00:00
|
|
|
"proc-macro2",
|
|
|
|
"quote",
|
|
|
|
"syn",
|
2019-12-09 11:39:44 +00:00
|
|
|
]
|
|
|
|
|
2020-11-24 00:44:40 +00:00
|
|
|
[[package]]
|
|
|
|
name = "serde_urlencoded"
|
2022-02-01 23:53:53 +00:00
|
|
|
version = "0.7.1"
|
2020-11-24 00:44:40 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2022-02-01 23:53:53 +00:00
|
|
|
checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd"
|
2020-11-24 00:44:40 +00:00
|
|
|
dependencies = [
|
|
|
|
"form_urlencoded",
|
2022-06-18 23:59:43 +00:00
|
|
|
"itoa 1.0.2",
|
2020-11-24 00:44:40 +00:00
|
|
|
"ryu",
|
|
|
|
"serde",
|
|
|
|
]
|
|
|
|
|
2022-07-01 01:15:19 +00:00
|
|
|
[[package]]
|
|
|
|
name = "serde_with"
|
|
|
|
version = "1.14.0"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "678b5a069e50bf00ecd22d0cd8ddf7c236f68581b03db652061ed5eb13a312ff"
|
|
|
|
dependencies = [
|
|
|
|
"serde",
|
|
|
|
"serde_with_macros",
|
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "serde_with_macros"
|
|
|
|
version = "1.5.2"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "e182d6ec6f05393cc0e5ed1bf81ad6db3a8feedf8ee515ecdd369809bcce8082"
|
|
|
|
dependencies = [
|
|
|
|
"darling",
|
|
|
|
"proc-macro2",
|
|
|
|
"quote",
|
|
|
|
"syn",
|
|
|
|
]
|
|
|
|
|
2019-12-09 11:39:44 +00:00
|
|
|
[[package]]
|
|
|
|
name = "serde_yaml"
|
2022-06-18 23:59:43 +00:00
|
|
|
version = "0.8.24"
|
2019-12-09 11:39:44 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2022-06-18 23:59:43 +00:00
|
|
|
checksum = "707d15895415db6628332b737c838b88c598522e4dc70647e59b72312924aebc"
|
2019-12-09 11:39:44 +00:00
|
|
|
dependencies = [
|
2021-09-03 01:10:25 +00:00
|
|
|
"indexmap",
|
2021-12-22 06:17:14 +00:00
|
|
|
"ryu",
|
2020-05-10 09:56:31 +00:00
|
|
|
"serde",
|
|
|
|
"yaml-rust",
|
2019-12-09 11:39:44 +00:00
|
|
|
]
|
|
|
|
|
2020-08-27 07:04:12 +00:00
|
|
|
[[package]]
|
|
|
|
name = "sha-1"
|
2021-09-16 04:45:05 +00:00
|
|
|
version = "0.9.8"
|
2020-08-27 07:04:12 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2021-09-16 04:45:05 +00:00
|
|
|
checksum = "99cd6713db3cf16b6c84e06321e049a9b9f699826e16096d23bbcc44d15d51a6"
|
2020-08-27 07:04:12 +00:00
|
|
|
dependencies = [
|
2021-12-22 06:17:14 +00:00
|
|
|
"block-buffer 0.9.0",
|
2021-11-18 05:08:42 +00:00
|
|
|
"cfg-if",
|
2022-04-04 00:26:16 +00:00
|
|
|
"cpufeatures",
|
2021-12-22 06:17:14 +00:00
|
|
|
"digest 0.9.0",
|
2021-07-13 00:48:33 +00:00
|
|
|
"opaque-debug",
|
2020-08-27 07:04:12 +00:00
|
|
|
]
|
|
|
|
|
2022-03-02 05:09:52 +00:00
|
|
|
[[package]]
|
|
|
|
name = "sha-1"
|
|
|
|
version = "0.10.0"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "028f48d513f9678cda28f6e4064755b3fbb2af6acd672f2c209b62323f7aea0f"
|
|
|
|
dependencies = [
|
|
|
|
"cfg-if",
|
2022-04-04 00:26:16 +00:00
|
|
|
"cpufeatures",
|
2022-03-02 05:09:52 +00:00
|
|
|
"digest 0.10.3",
|
|
|
|
]
|
|
|
|
|
2020-07-01 08:01:03 +00:00
|
|
|
[[package]]
|
|
|
|
name = "sha2"
|
2022-01-11 01:35:56 +00:00
|
|
|
version = "0.9.9"
|
2020-07-01 08:01:03 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2022-01-11 01:35:56 +00:00
|
|
|
checksum = "4d58a1e1bf39749807d89cf2d98ac2dfa0ff1cb3faa38fbb64dd88ac8013d800"
|
2020-07-01 08:01:03 +00:00
|
|
|
dependencies = [
|
2021-12-22 06:17:14 +00:00
|
|
|
"block-buffer 0.9.0",
|
2021-11-18 05:08:42 +00:00
|
|
|
"cfg-if",
|
2022-04-04 00:26:16 +00:00
|
|
|
"cpufeatures",
|
2021-12-22 06:17:14 +00:00
|
|
|
"digest 0.9.0",
|
2021-07-13 00:48:33 +00:00
|
|
|
"opaque-debug",
|
2019-12-09 11:39:44 +00:00
|
|
|
]
|
|
|
|
|
2021-12-22 06:17:14 +00:00
|
|
|
[[package]]
|
|
|
|
name = "sha2"
|
2022-03-02 05:09:52 +00:00
|
|
|
version = "0.10.2"
|
2021-12-22 06:17:14 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2022-03-02 05:09:52 +00:00
|
|
|
checksum = "55deaec60f81eefe3cce0dc50bda92d6d8e88f2a27df7c5033b42afeb1ed2676"
|
2021-12-22 06:17:14 +00:00
|
|
|
dependencies = [
|
|
|
|
"cfg-if",
|
2022-04-04 00:26:16 +00:00
|
|
|
"cpufeatures",
|
2022-03-02 05:09:52 +00:00
|
|
|
"digest 0.10.3",
|
2021-12-22 06:17:14 +00:00
|
|
|
]
|
|
|
|
|
2019-12-09 11:39:44 +00:00
|
|
|
[[package]]
|
|
|
|
name = "sha3"
|
2020-08-27 07:04:12 +00:00
|
|
|
version = "0.9.1"
|
2019-12-09 11:39:44 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2020-08-27 07:04:12 +00:00
|
|
|
checksum = "f81199417d4e5de3f04b1e871023acea7389672c4135918f05aa9cbf2f2fa809"
|
2019-12-09 11:39:44 +00:00
|
|
|
dependencies = [
|
2021-12-22 06:17:14 +00:00
|
|
|
"block-buffer 0.9.0",
|
|
|
|
"digest 0.9.0",
|
2020-05-10 09:56:31 +00:00
|
|
|
"keccak",
|
2021-07-13 00:48:33 +00:00
|
|
|
"opaque-debug",
|
2019-12-09 11:39:44 +00:00
|
|
|
]
|
|
|
|
|
Separate execution payloads in the DB (#3157)
## Proposed Changes
Reduce post-merge disk usage by not storing finalized execution payloads in Lighthouse's database.
:warning: **This is achieved in a backwards-incompatible way for networks that have already merged** :warning:. Kiln users and shadow fork enjoyers will be unable to downgrade after running the code from this PR. The upgrade migration may take several minutes to run, and can't be aborted after it begins.
The main changes are:
- New column in the database called `ExecPayload`, keyed by beacon block root.
- The `BeaconBlock` column now stores blinded blocks only.
- Lots of places that previously used full blocks now use blinded blocks, e.g. analytics APIs, block replay in the DB, etc.
- On finalization:
- `prune_abanonded_forks` deletes non-canonical payloads whilst deleting non-canonical blocks.
- `migrate_db` deletes finalized canonical payloads whilst deleting finalized states.
- Conversions between blinded and full blocks are implemented in a compositional way, duplicating some work from Sean's PR #3134.
- The execution layer has a new `get_payload_by_block_hash` method that reconstructs a payload using the EE's `eth_getBlockByHash` call.
- I've tested manually that it works on Kiln, using Geth and Nethermind.
- This isn't necessarily the most efficient method, and new engine APIs are being discussed to improve this: https://github.com/ethereum/execution-apis/pull/146.
- We're depending on the `ethers` master branch, due to lots of recent changes. We're also using a workaround for https://github.com/gakonst/ethers-rs/issues/1134.
- Payload reconstruction is used in the HTTP API via `BeaconChain::get_block`, which is now `async`. Due to the `async` fn, the `blocking_json` wrapper has been removed.
- Payload reconstruction is used in network RPC to serve blocks-by-{root,range} responses. Here the `async` adjustment is messier, although I think I've managed to come up with a reasonable compromise: the handlers take the `SendOnDrop` by value so that they can drop it on _task completion_ (after the `fn` returns). Still, this is introducing disk reads onto core executor threads, which may have a negative performance impact (thoughts appreciated).
## Additional Info
- [x] For performance it would be great to remove the cloning of full blocks when converting them to blinded blocks to write to disk. I'm going to experiment with a `put_block` API that takes the block by value, breaks it into a blinded block and a payload, stores the blinded block, and then re-assembles the full block for the caller.
- [x] We should measure the latency of blocks-by-root and blocks-by-range responses.
- [x] We should add integration tests that stress the payload reconstruction (basic tests done, issue for more extensive tests: https://github.com/sigp/lighthouse/issues/3159)
- [x] We should (manually) test the schema v9 migration from several prior versions, particularly as blocks have changed on disk and some migrations rely on being able to load blocks.
Co-authored-by: Paul Hauner <paul@paulhauner.com>
2022-05-12 00:42:17 +00:00
|
|
|
[[package]]
|
|
|
|
name = "sha3"
|
|
|
|
version = "0.10.1"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "881bf8156c87b6301fc5ca6b27f11eeb2761224c7081e69b409d5a1951a70c86"
|
|
|
|
dependencies = [
|
|
|
|
"digest 0.10.3",
|
|
|
|
"keccak",
|
|
|
|
]
|
|
|
|
|
2020-10-23 04:16:33 +00:00
|
|
|
[[package]]
|
|
|
|
name = "sharded-slab"
|
2021-10-14 02:58:11 +00:00
|
|
|
version = "0.1.4"
|
2020-10-23 04:16:33 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2021-10-14 02:58:11 +00:00
|
|
|
checksum = "900fba806f70c630b0a382d0d825e17a0f19fcd059a2ade1ff237bcddf446b31"
|
2020-10-23 04:16:33 +00:00
|
|
|
dependencies = [
|
|
|
|
"lazy_static",
|
|
|
|
]
|
|
|
|
|
2021-12-21 08:23:17 +00:00
|
|
|
[[package]]
|
|
|
|
name = "shlex"
|
|
|
|
version = "1.1.0"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "43b2853a4d09f215c24cc5489c992ce46052d359b5109343cbafbf26bc62f8a3"
|
|
|
|
|
2020-05-17 11:16:48 +00:00
|
|
|
[[package]]
|
|
|
|
name = "signal-hook-registry"
|
2021-07-05 00:54:17 +00:00
|
|
|
version = "1.4.0"
|
2020-05-17 11:16:48 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2021-07-05 00:54:17 +00:00
|
|
|
checksum = "e51e73328dc4ac0c7ccbda3a494dfa03df1de2f46018127f60c693f2648455b0"
|
2020-05-17 11:16:48 +00:00
|
|
|
dependencies = [
|
|
|
|
"libc",
|
|
|
|
]
|
|
|
|
|
2020-07-21 00:54:47 +00:00
|
|
|
[[package]]
|
|
|
|
name = "signature"
|
2021-10-29 01:59:29 +00:00
|
|
|
version = "1.3.2"
|
2020-07-21 00:54:47 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2021-10-29 01:59:29 +00:00
|
|
|
checksum = "f2807892cfa58e081aa1f1111391c7a0649d4fa127a4ffbe34bcbfb35a1171a4"
|
2020-10-23 04:16:33 +00:00
|
|
|
dependencies = [
|
2021-12-22 06:17:14 +00:00
|
|
|
"digest 0.9.0",
|
2021-07-05 00:54:17 +00:00
|
|
|
"rand_core 0.6.3",
|
2020-10-23 04:16:33 +00:00
|
|
|
]
|
2020-07-21 00:54:47 +00:00
|
|
|
|
2022-03-08 06:46:24 +00:00
|
|
|
[[package]]
|
|
|
|
name = "simple_asn1"
|
2022-06-18 23:59:43 +00:00
|
|
|
version = "0.6.2"
|
2022-03-08 06:46:24 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2022-06-18 23:59:43 +00:00
|
|
|
checksum = "adc4e5204eb1910f40f9cfa375f6f05b68c3abac4b6fd879c8ff5e7ae8a0a085"
|
2022-03-08 06:46:24 +00:00
|
|
|
dependencies = [
|
|
|
|
"num-bigint",
|
|
|
|
"num-traits",
|
|
|
|
"thiserror",
|
2022-07-05 23:36:42 +00:00
|
|
|
"time 0.3.11",
|
2022-03-08 06:46:24 +00:00
|
|
|
]
|
|
|
|
|
2020-01-23 07:07:39 +00:00
|
|
|
[[package]]
|
|
|
|
name = "simulator"
|
Initial work towards v0.2.0 (#924)
* Remove ping protocol
* Initial renaming of network services
* Correct rebasing relative to latest master
* Start updating types
* Adds HashMapDelay struct to utils
* Initial network restructure
* Network restructure. Adds new types for v0.2.0
* Removes build artefacts
* Shift validation to beacon chain
* Temporarily remove gossip validation
This is to be updated to match current optimisation efforts.
* Adds AggregateAndProof
* Begin rebuilding pubsub encoding/decoding
* Signature hacking
* Shift gossipsup decoding into eth2_libp2p
* Existing EF tests passing with fake_crypto
* Shifts block encoding/decoding into RPC
* Delete outdated API spec
* All release tests passing bar genesis state parsing
* Update and test YamlConfig
* Update to spec v0.10 compatible BLS
* Updates to BLS EF tests
* Add EF test for AggregateVerify
And delete unused hash2curve tests for uncompressed points
* Update EF tests to v0.10.1
* Use optional block root correctly in block proc
* Use genesis fork in deposit domain. All tests pass
* Fast aggregate verify test
* Update REST API docs
* Fix unused import
* Bump spec tags to v0.10.1
* Add `seconds_per_eth1_block` to chainspec
* Update to timestamp based eth1 voting scheme
* Return None from `get_votes_to_consider` if block cache is empty
* Handle overflows in `is_candidate_block`
* Revert to failing tests
* Fix eth1 data sets test
* Choose default vote according to spec
* Fix collect_valid_votes tests
* Fix `get_votes_to_consider` to choose all eligible blocks
* Uncomment winning_vote tests
* Add comments; remove unused code
* Reduce seconds_per_eth1_block for simulation
* Addressed review comments
* Add test for default vote case
* Fix logs
* Remove unused functions
* Meter default eth1 votes
* Fix comments
* Progress on attestation service
* Address review comments; remove unused dependency
* Initial work on removing libp2p lock
* Add LRU caches to store (rollup)
* Update attestation validation for DB changes (WIP)
* Initial version of should_forward_block
* Scaffold
* Progress on attestation validation
Also, consolidate prod+testing slot clocks so that they share much
of the same implementation and can both handle sub-slot time changes.
* Removes lock from libp2p service
* Completed network lock removal
* Finish(?) attestation processing
* Correct network termination future
* Add slot check to block check
* Correct fmt issues
* Remove Drop implementation for network service
* Add first attempt at attestation proc. re-write
* Add version 2 of attestation processing
* Minor fixes
* Add validator pubkey cache
* Make get_indexed_attestation take a committee
* Link signature processing into new attn verification
* First working version
* Ensure pubkey cache is updated
* Add more metrics, slight optimizations
* Clone committee cache during attestation processing
* Update shuffling cache during block processing
* Remove old commented-out code
* Fix shuffling cache insert bug
* Used indexed attestation in fork choice
* Restructure attn processing, add metrics
* Add more detailed metrics
* Tidy, fix failing tests
* Fix failing tests, tidy
* Address reviewers suggestions
* Disable/delete two outdated tests
* Modification of validator for subscriptions
* Add slot signing to validator client
* Further progress on validation subscription
* Adds necessary validator subscription functionality
* Add new Pubkeys struct to signature_sets
* Refactor with functional approach
* Update beacon chain
* Clean up validator <-> beacon node http types
* Add aggregator status to ValidatorDuty
* Impl Clone for manual slot clock
* Fix minor errors
* Further progress validator client subscription
* Initial subscription and aggregation handling
* Remove decompressed member from pubkey bytes
* Progress to modifying val client for attestation aggregation
* First draft of validator client upgrade for aggregate attestations
* Add hashmap for indices lookup
* Add state cache, remove store cache
* Only build the head committee cache
* Removes lock on a network channel
* Partially implement beacon node subscription http api
* Correct compilation issues
* Change `get_attesting_indices` to use Vec
* Fix failing test
* Partial implementation of timer
* Adds timer, removes exit_future, http api to op pool
* Partial multiple aggregate attestation handling
* Permits bulk messages accross gossipsub network channel
* Correct compile issues
* Improve gosispsub messaging and correct rest api helpers
* Added global gossipsub subscriptions
* Update validator subscriptions data structs
* Tidy
* Re-structure validator subscriptions
* Initial handling of subscriptions
* Re-structure network service
* Add pubkey cache persistence file
* Add more comments
* Integrate persistence file into builder
* Add pubkey cache tests
* Add HashSetDelay and introduce into attestation service
* Handles validator subscriptions
* Add data_dir to beacon chain builder
* Remove Option in pubkey cache persistence file
* Ensure consistency between datadir/data_dir
* Fix failing network test
* Peer subnet discovery gets queued for future subscriptions
* Reorganise attestation service functions
* Initial wiring of attestation service
* First draft of attestation service timing logic
* Correct minor typos
* Tidy
* Fix todos
* Improve tests
* Add PeerInfo to connected peers mapping
* Fix compile error
* Fix compile error from merge
* Split up block processing metrics
* Tidy
* Refactor get_pubkey_from_state
* Remove commented-out code
* Rename state_cache -> checkpoint_cache
* Rename Checkpoint -> Snapshot
* Tidy, add comments
* Tidy up find_head function
* Change some checkpoint -> snapshot
* Add tests
* Expose max_len
* Remove dead code
* Tidy
* Fix bug
* Add sync-speed metric
* Add first attempt at VerifiableBlock
* Start integrating into beacon chain
* Integrate VerifiableBlock
* Rename VerifableBlock -> PartialBlockVerification
* Add start of typed methods
* Add progress
* Add further progress
* Rename structs
* Add full block verification to block_processing.rs
* Further beacon chain integration
* Update checks for gossip
* Add todo
* Start adding segement verification
* Add passing chain segement test
* Initial integration with batch sync
* Minor changes
* Tidy, add more error checking
* Start adding chain_segment tests
* Finish invalid signature tests
* Include single and gossip verified blocks in tests
* Add gossip verification tests
* Start adding docs
* Finish adding comments to block_processing.rs
* Rename block_processing.rs -> block_verification
* Start removing old block processing code
* Fixes beacon_chain compilation
* Fix project-wide compile errors
* Remove old code
* Correct code to pass all tests
* Fix bug with beacon proposer index
* Fix shim for BlockProcessingError
* Only process one epoch at a time
* Fix loop in chain segment processing
* Correct tests from master merge
* Add caching for state.eth1_data_votes
* Add BeaconChain::validator_pubkey
* Revert "Add caching for state.eth1_data_votes"
This reverts commit cd73dcd6434fb8d8e6bf30c5356355598ea7b78e.
Co-authored-by: Grant Wuerker <gwuerker@gmail.com>
Co-authored-by: Michael Sproul <michael@sigmaprime.io>
Co-authored-by: Michael Sproul <micsproul@gmail.com>
Co-authored-by: pawan <pawandhananjay@gmail.com>
Co-authored-by: Paul Hauner <paul@paulhauner.com>
2020-03-17 06:24:44 +00:00
|
|
|
version = "0.2.0"
|
2020-01-23 07:07:39 +00:00
|
|
|
dependencies = [
|
2020-05-10 09:56:31 +00:00
|
|
|
"clap",
|
2021-08-17 01:00:24 +00:00
|
|
|
"env_logger 0.9.0",
|
2020-08-31 02:36:17 +00:00
|
|
|
"eth1",
|
2020-05-10 09:56:31 +00:00
|
|
|
"eth1_test_rig",
|
2022-06-29 09:07:09 +00:00
|
|
|
"execution_layer",
|
2021-07-09 03:20:24 +00:00
|
|
|
"futures",
|
2020-05-10 09:56:31 +00:00
|
|
|
"node_test_rig",
|
2022-06-18 23:59:43 +00:00
|
|
|
"parking_lot 0.12.1",
|
Wallet-based, encrypted key management (#1138)
* Update hashmap hashset to stable futures
* Adds panic test to hashset delay
* Port remote_beacon_node to stable futures
* Fix lcli merge conflicts
* Non rpc stuff compiles
* Remove padding
* Add error enum, zeroize more things
* Fix comment
* protocol.rs compiles
* Port websockets, timer and notifier to stable futures (#1035)
* Fix lcli
* Port timer to stable futures
* Fix timer
* Port websocket_server to stable futures
* Port notifier to stable futures
* Add TODOS
* Port remote_beacon_node to stable futures
* Partial eth2-libp2p stable future upgrade
* Finished first round of fighting RPC types
* Further progress towards porting eth2-libp2p adds caching to discovery
* Update behaviour
* Add keystore builder
* Remove keystore stuff from val client
* Add more tests, comments
* RPC handler to stable futures
* Update RPC to master libp2p
* Add more comments, test vectors
* Network service additions
* Progress on improving JSON validation
* More JSON verification
* Start moving JSON into own mod
* Remove old code
* Add more tests, reader/writers
* Tidy
* Move keystore into own file
* Move more logic into keystore file
* Tidy
* Tidy
* Fix the fallback transport construction (#1102)
* Allow for odd-character hex
* Correct warning
* Remove hashmap delay
* Compiling version of eth2-libp2p
* Update all crates versions
* Fix conversion function and add tests (#1113)
* Add more json missing field checks
* Use scrypt by default
* Tidy, address comments
* Test path and uuid in vectors
* Fix comment
* Add checks for kdf params
* Enforce empty kdf message
* Port validator_client to stable futures (#1114)
* Add PH & MS slot clock changes
* Account for genesis time
* Add progress on duties refactor
* Add simple is_aggregator bool to val subscription
* Start work on attestation_verification.rs
* Add progress on ObservedAttestations
* Progress with ObservedAttestations
* Fix tests
* Add observed attestations to the beacon chain
* Add attestation observation to processing code
* Add progress on attestation verification
* Add first draft of ObservedAttesters
* Add more tests
* Add observed attesters to beacon chain
* Add observers to attestation processing
* Add more attestation verification
* Create ObservedAggregators map
* Remove commented-out code
* Add observed aggregators into chain
* Add progress
* Finish adding features to attestation verification
* Ensure beacon chain compiles
* Link attn verification into chain
* Integrate new attn verification in chain
* Remove old attestation processing code
* Start trying to fix beacon_chain tests
* Split adding into pools into two functions
* Add aggregation to harness
* Get test harness working again
* Adjust the number of aggregators for test harness
* Fix edge-case in harness
* Integrate new attn processing in network
* Fix compile bug in validator_client
* Update validator API endpoints
* Fix aggreagation in test harness
* Fix enum thing
* Fix attestation observation bug:
* Patch failing API tests
* Start adding comments to attestation verification
* Remove unused attestation field
* Unify "is block known" logic
* Update comments
* Supress fork choice errors for network processing
* Add todos
* Tidy
* Add gossip attn tests
* Disallow test harness to produce old attns
* Comment out in-progress tests
* Partially address pruning tests
* Fix failing store test
* Add aggregate tests
* Add comments about which spec conditions we check
* Dont re-aggregate
* Split apart test harness attn production
* Fix compile error in network
* Make progress on commented-out test
* Fix skipping attestation test
* Add fork choice verification tests
* Tidy attn tests, remove dead code
* Remove some accidentally added code
* Fix clippy lint
* Rename test file
* Add block tests, add cheap block proposer check
* Rename block testing file
* Add observed_block_producers
* Tidy
* Switch around block signature verification
* Finish block testing
* Remove gossip from signature tests
* First pass of self review
* Fix deviation in spec
* Update test spec tags
* Start moving over to hashset
* Finish moving observed attesters to hashmap
* Move aggregation pool over to hashmap
* Make fc attn borrow again
* Fix rest_api compile error
* Fix missing comments
* Fix monster test
* Uncomment increasing slots test
* Address remaining comments
* Remove unsafe, use cfg test
* Remove cfg test flag
* Fix dodgy comment
* Revert "Update hashmap hashset to stable futures"
This reverts commit d432378a3cc5cd67fc29c0b15b96b886c1323554.
* Revert "Adds panic test to hashset delay"
This reverts commit 281502396fc5b90d9c421a309c2c056982c9525b.
* Ported attestation_service
* Ported duties_service
* Ported fork_service
* More ports
* Port block_service
* Minor fixes
* VC compiles
* Update TODOS
* Borrow self where possible
* Ignore aggregates that are already known.
* Unify aggregator modulo logic
* Fix typo in logs
* Refactor validator subscription logic
* Avoid reproducing selection proof
* Skip HTTP call if no subscriptions
* Rename DutyAndState -> DutyAndProof
* Tidy logs
* Print root as dbg
* Fix compile errors in tests
* Fix compile error in test
* Re-Fix attestation and duties service
* Minor fixes
Co-authored-by: Paul Hauner <paul@paulhauner.com>
* Expose json_keystore mod
* First commits on path derivation
* Progress with implementation
* More progress
* Passing intermediate test vectors
* Tidy, add comments
* Add DerivedKey structs
* Move key derivation into own crate
* Add zeroize structs
* Return error for empty seed
* Add tests
* Tidy
* First commits on path derivation
* Progress with implementation
* Move key derivation into own crate
* Start defining JSON wallet
* Add progress
* Split out encrypt/decrypt
* First commits on path derivation
* Progress with implementation
* More progress
* Passing intermediate test vectors
* Tidy, add comments
* Add DerivedKey structs
* Move key derivation into own crate
* Add zeroize structs
* Return error for empty seed
* Add tests
* Tidy
* Add progress
* Replace some password usage with slice
* First commits on path derivation
* Progress with implementation
* More progress
* Passing intermediate test vectors
* Tidy, add comments
* Add DerivedKey structs
* Move key derivation into own crate
* Add zeroize structs
* Return error for empty seed
* Add tests
* Tidy
* Add progress
* Expose PlainText struct
* First commits on path derivation
* Progress with implementation
* More progress
* Passing intermediate test vectors
* Tidy, add comments
* Add DerivedKey structs
* Move key derivation into own crate
* Add zeroize structs
* Return error for empty seed
* Add tests
* Tidy
* Add builder
* Expose consts, remove Password
* Minor progress
* Expose SALT_SIZE
* First compiling version
* Add test vectors
* Network crate update to stable futures
* Move dbg assert statement
* Port account_manager to stable futures (#1121)
* Port account_manager to stable futures
* Run async fns in tokio environment
* Port rest_api crate to stable futures (#1118)
* Port rest_api lib to stable futures
* Reduce tokio features
* Update notifier to stable futures
* Builder update
* Further updates
* Add mnemonic, tidy
* Convert self referential async functions
* Tidy
* Add testing
* Add first attempt at validator_dir
* Present pubkey field
* stable futures fixes (#1124)
* Fix eth1 update functions
* Fix genesis and client
* Fix beacon node lib
* Return appropriate runtimes from environment
* Fix test rig
* Refactor eth1 service update
* Upgrade simulator to stable futures
* Lighthouse compiles on stable futures
* Add first pass of wallet manager
* Progress with CLI
* Remove println debugging statement
* Tidy output
* Tidy 600 perms
* Update libp2p service, start rpc test upgrade
* Add validator creation flow
* Update network crate for new libp2p
* Start tidying, adding comments
* Update tokio::codec to futures_codec (#1128)
* Further work towards RPC corrections
* Correct http timeout and network service select
* Add wallet mgr testing
* Shift LockedWallet into own file
* Add comments to fs
* Start integration into VC
* Use tokio runtime for libp2p
* Revert "Update tokio::codec to futures_codec (#1128)"
This reverts commit e57aea924acf5cbabdcea18895ac07e38a425ed7.
* Upgrade RPC libp2p tests
* Upgrade secio fallback test
* Add lcli keypair upgrade command
* Upgrade gossipsub examples
* Clean up RPC protocol
* Test fixes (#1133)
* Correct websocket timeout and run on os thread
* Fix network test
* Add --secrets-dir to VC
* Remove --legacy-keys from VC
* Clean up PR
* Correct tokio tcp move attestation service tests
* Upgrade attestation service tests
* Fix sim
* Correct network test
* Correct genesis test
* Start docs
* Add progress for validator generation
* Tidy error messages
* Test corrections
* Log info when block is received
* Modify logs and update attester service events
* Stable futures: fixes to vc, eth1 and account manager (#1142)
* Add local testnet scripts
* Remove whiteblock script
* Rename local testnet script
* Move spawns onto handle
* Fix VC panic
* Initial fix to block production issue
* Tidy block producer fix
* Tidy further
* Add local testnet clean script
* Run cargo fmt
* Tidy duties service
* Tidy fork service
* Tidy ForkService
* Tidy AttestationService
* Tidy notifier
* Ensure await is not suppressed in eth1
* Ensure await is not suppressed in account_manager
* Use .ok() instead of .unwrap_or(())
* RPC decoding test for proto
* Update discv5 and eth2-libp2p deps
* Run cargo fmt
* Pre-build keystores for sim
* Fix lcli double runtime issue (#1144)
* Handle stream termination and dialing peer errors
* Correct peer_info variant types
* Add progress on new deposit flow
* Remove unnecessary warnings
* Handle subnet unsubscription removal and improve logigng
* Add logs around ping
* Upgrade discv5 and improve logging
* Handle peer connection status for multiple connections
* Improve network service logging
* Add more incomplete progress
* Improve logging around peer manager
* Upgrade swarm poll centralise peer management
* Identify clients on error
* Fix `remove_peer` in sync (#1150)
* remove_peer removes from all chains
* Remove logs
* Fix early return from loop
* Improved logging, fix panic
* Partially correct tests
* Add deposit command
* Remove old validator directory
* Start adding AM tests
* Stable futures: Vc sync (#1149)
* Improve syncing heuristic
* Add comments
* Use safer method for tolerance
* Fix tests
* Binary testing progress
* Progress with CLI tests
* Use constants for flags
* More account manager testing
* Improve CLI tests
* Move upgrade-legacy-keypairs into account man
* Use rayon for VC key generation
* Add comments to `validator_dir`
* Add testing to validator_dir
* Add fix to eth1-sim
* Check errors in eth1-sim
* Fix mutability issue
* Ensure password file ends in .pass
* Add more tests to wallet manager
* Tidy deposit
* Tidy account manager
* Tidy account manager
* Remove panic
* Generate keypairs earlier in sim
* Tidy eth1-sime
* Try to fix eth1 sim
* Address review comments
* Fix typo in CLI command
* Update docs
* Disable eth1 sim
* Remove eth1 sim completely
Co-authored-by: Age Manning <Age@AgeManning.com>
Co-authored-by: pawanjay176 <pawandhananjay@gmail.com>
2020-05-18 09:01:45 +00:00
|
|
|
"rayon",
|
2021-05-04 01:59:51 +00:00
|
|
|
"sensitive_url",
|
2021-08-17 01:00:24 +00:00
|
|
|
"tokio",
|
2020-05-10 09:56:31 +00:00
|
|
|
"types",
|
2020-01-23 07:07:39 +00:00
|
|
|
]
|
|
|
|
|
2019-12-09 11:39:44 +00:00
|
|
|
[[package]]
|
|
|
|
name = "slab"
|
2022-04-05 02:53:09 +00:00
|
|
|
version = "0.4.6"
|
2019-12-09 11:39:44 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2022-04-05 02:53:09 +00:00
|
|
|
checksum = "eb703cfe953bccee95685111adeedb76fabe4e97549a58d16f03ea7b9367bb32"
|
2019-12-09 11:39:44 +00:00
|
|
|
|
2020-11-23 03:43:22 +00:00
|
|
|
[[package]]
|
|
|
|
name = "slasher"
|
|
|
|
version = "0.1.0"
|
|
|
|
dependencies = [
|
|
|
|
"bincode",
|
|
|
|
"byteorder",
|
2021-11-29 03:57:54 +00:00
|
|
|
"eth2_ssz",
|
2022-03-31 07:52:23 +00:00
|
|
|
"eth2_ssz_derive",
|
2021-05-19 23:05:16 +00:00
|
|
|
"filesystem",
|
2020-11-23 03:43:22 +00:00
|
|
|
"flate2",
|
|
|
|
"lazy_static",
|
2021-12-21 08:23:17 +00:00
|
|
|
"libmdbx",
|
2020-11-23 03:43:22 +00:00
|
|
|
"lighthouse_metrics",
|
2021-10-06 00:46:07 +00:00
|
|
|
"logging",
|
2021-12-21 08:23:17 +00:00
|
|
|
"lru",
|
2020-11-23 03:43:22 +00:00
|
|
|
"maplit",
|
2022-06-18 23:59:43 +00:00
|
|
|
"parking_lot 0.12.1",
|
2022-04-04 00:26:16 +00:00
|
|
|
"rand 0.8.5",
|
2020-11-23 03:43:22 +00:00
|
|
|
"rayon",
|
|
|
|
"safe_arith",
|
|
|
|
"serde",
|
|
|
|
"serde_derive",
|
|
|
|
"slog",
|
2021-09-14 06:48:26 +00:00
|
|
|
"sloggers",
|
2021-01-06 06:36:11 +00:00
|
|
|
"tempfile",
|
2021-11-29 03:57:54 +00:00
|
|
|
"tree_hash",
|
2022-03-31 07:52:23 +00:00
|
|
|
"tree_hash_derive",
|
2020-11-23 03:43:22 +00:00
|
|
|
"types",
|
|
|
|
]
|
|
|
|
|
2020-12-16 03:44:01 +00:00
|
|
|
[[package]]
|
|
|
|
name = "slasher_service"
|
|
|
|
version = "0.1.0"
|
|
|
|
dependencies = [
|
|
|
|
"beacon_chain",
|
|
|
|
"directory",
|
Rename eth2_libp2p to lighthouse_network (#2702)
## Description
The `eth2_libp2p` crate was originally named and designed to incorporate a simple libp2p integration into lighthouse. Since its origins the crates purpose has expanded dramatically. It now houses a lot more sophistication that is specific to lighthouse and no longer just a libp2p integration.
As of this writing it currently houses the following high-level lighthouse-specific logic:
- Lighthouse's implementation of the eth2 RPC protocol and specific encodings/decodings
- Integration and handling of ENRs with respect to libp2p and eth2
- Lighthouse's discovery logic, its integration with discv5 and logic about searching and handling peers.
- Lighthouse's peer manager - This is a large module handling various aspects of Lighthouse's network, such as peer scoring, handling pings and metadata, connection maintenance and recording, etc.
- Lighthouse's peer database - This is a collection of information stored for each individual peer which is specific to lighthouse. We store connection state, sync state, last seen ips and scores etc. The data stored for each peer is designed for various elements of the lighthouse code base such as syncing and the http api.
- Gossipsub scoring - This stores a collection of gossipsub 1.1 scoring mechanisms that are continuously analyssed and updated based on the ethereum 2 networks and how Lighthouse performs on these networks.
- Lighthouse specific types for managing gossipsub topics, sync status and ENR fields
- Lighthouse's network HTTP API metrics - A collection of metrics for lighthouse network monitoring
- Lighthouse's custom configuration of all networking protocols, RPC, gossipsub, discovery, identify and libp2p.
Therefore it makes sense to rename the crate to be more akin to its current purposes, simply that it manages the majority of Lighthouse's network stack. This PR renames this crate to `lighthouse_network`
Co-authored-by: Paul Hauner <paul@paulhauner.com>
2021-10-19 00:30:39 +00:00
|
|
|
"lighthouse_network",
|
2020-12-16 03:44:01 +00:00
|
|
|
"network",
|
|
|
|
"slasher",
|
|
|
|
"slog",
|
|
|
|
"slot_clock",
|
|
|
|
"state_processing",
|
|
|
|
"task_executor",
|
2021-08-17 01:00:24 +00:00
|
|
|
"tokio",
|
2020-12-16 03:44:01 +00:00
|
|
|
"types",
|
|
|
|
]
|
|
|
|
|
2020-05-18 06:25:16 +00:00
|
|
|
[[package]]
|
|
|
|
name = "slashing_protection"
|
|
|
|
version = "0.1.0"
|
|
|
|
dependencies = [
|
2022-01-04 20:46:44 +00:00
|
|
|
"arbitrary",
|
2021-11-29 22:32:53 +00:00
|
|
|
"eth2_serde_utils",
|
2021-05-19 23:05:16 +00:00
|
|
|
"filesystem",
|
2021-06-21 05:46:36 +00:00
|
|
|
"lazy_static",
|
2020-05-18 06:25:16 +00:00
|
|
|
"r2d2",
|
|
|
|
"r2d2_sqlite",
|
|
|
|
"rayon",
|
|
|
|
"rusqlite",
|
2020-10-02 01:42:27 +00:00
|
|
|
"serde",
|
|
|
|
"serde_derive",
|
|
|
|
"serde_json",
|
2020-05-18 06:25:16 +00:00
|
|
|
"tempfile",
|
|
|
|
"types",
|
|
|
|
]
|
|
|
|
|
2019-12-09 11:39:44 +00:00
|
|
|
[[package]]
|
|
|
|
name = "slog"
|
2020-11-30 22:55:10 +00:00
|
|
|
version = "2.7.0"
|
2019-12-09 11:39:44 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2020-11-30 22:55:10 +00:00
|
|
|
checksum = "8347046d4ebd943127157b94d63abb990fcf729dc4e9978927fdf4ac3c998d06"
|
2019-12-09 11:39:44 +00:00
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "slog-async"
|
2021-08-17 01:00:24 +00:00
|
|
|
version = "2.7.0"
|
2019-12-09 11:39:44 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2021-08-17 01:00:24 +00:00
|
|
|
checksum = "766c59b252e62a34651412870ff55d8c4e6d04df19b43eecb2703e417b097ffe"
|
2019-12-09 11:39:44 +00:00
|
|
|
dependencies = [
|
2021-02-10 23:29:49 +00:00
|
|
|
"crossbeam-channel",
|
2020-05-10 09:56:31 +00:00
|
|
|
"slog",
|
|
|
|
"take_mut",
|
|
|
|
"thread_local",
|
2019-12-09 11:39:44 +00:00
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "slog-json"
|
2022-03-31 07:52:23 +00:00
|
|
|
version = "2.6.1"
|
2019-12-09 11:39:44 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2022-03-31 07:52:23 +00:00
|
|
|
checksum = "3e1e53f61af1e3c8b852eef0a9dee29008f55d6dd63794f3f12cef786cf0f219"
|
2019-12-09 11:39:44 +00:00
|
|
|
dependencies = [
|
2020-05-10 09:56:31 +00:00
|
|
|
"serde",
|
|
|
|
"serde_json",
|
|
|
|
"slog",
|
2022-07-05 23:36:42 +00:00
|
|
|
"time 0.3.11",
|
2019-12-09 11:39:44 +00:00
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "slog-kvfilter"
|
|
|
|
version = "0.7.0"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2020-05-10 09:56:31 +00:00
|
|
|
checksum = "ae939ed7d169eed9699f4f5cd440f046f5dc5dfc27c19e3cd311619594c175e0"
|
2019-12-09 11:39:44 +00:00
|
|
|
dependencies = [
|
2020-05-10 09:56:31 +00:00
|
|
|
"regex",
|
|
|
|
"slog",
|
2019-12-09 11:39:44 +00:00
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "slog-scope"
|
2021-02-10 23:29:49 +00:00
|
|
|
version = "4.4.0"
|
2019-12-09 11:39:44 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2021-02-10 23:29:49 +00:00
|
|
|
checksum = "2f95a4b4c3274cd2869549da82b57ccc930859bdbf5bcea0424bc5f140b3c786"
|
2019-12-09 11:39:44 +00:00
|
|
|
dependencies = [
|
2020-05-10 09:56:31 +00:00
|
|
|
"arc-swap",
|
|
|
|
"lazy_static",
|
|
|
|
"slog",
|
2019-12-09 11:39:44 +00:00
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "slog-stdlog"
|
2022-03-31 07:52:23 +00:00
|
|
|
version = "4.1.1"
|
2019-12-09 11:39:44 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2022-03-31 07:52:23 +00:00
|
|
|
checksum = "6706b2ace5bbae7291d3f8d2473e2bfab073ccd7d03670946197aec98471fa3e"
|
2019-12-09 11:39:44 +00:00
|
|
|
dependencies = [
|
2020-12-09 01:34:58 +00:00
|
|
|
"log",
|
2020-05-10 09:56:31 +00:00
|
|
|
"slog",
|
|
|
|
"slog-scope",
|
2019-12-09 11:39:44 +00:00
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "slog-term"
|
2022-03-02 05:09:52 +00:00
|
|
|
version = "2.9.0"
|
2019-12-09 11:39:44 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2022-03-02 05:09:52 +00:00
|
|
|
checksum = "87d29185c55b7b258b4f120eab00f48557d4d9bc814f41713f449d35b0f8977c"
|
2019-12-09 11:39:44 +00:00
|
|
|
dependencies = [
|
2020-05-10 09:56:31 +00:00
|
|
|
"atty",
|
|
|
|
"slog",
|
2021-07-05 00:54:17 +00:00
|
|
|
"term",
|
2020-05-10 09:56:31 +00:00
|
|
|
"thread_local",
|
2022-07-05 23:36:42 +00:00
|
|
|
"time 0.3.11",
|
2019-12-09 11:39:44 +00:00
|
|
|
]
|
|
|
|
|
2021-07-05 00:54:17 +00:00
|
|
|
[[package]]
|
|
|
|
name = "sloggers"
|
2021-11-18 05:08:42 +00:00
|
|
|
version = "2.1.1"
|
2021-07-05 00:54:17 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2021-11-18 05:08:42 +00:00
|
|
|
checksum = "e20d36cb80da75a9c5511872f15247ddad14ead8c1dd97a86b56d1be9f5d4a0e"
|
2021-07-05 00:54:17 +00:00
|
|
|
dependencies = [
|
|
|
|
"chrono",
|
|
|
|
"libc",
|
|
|
|
"libflate",
|
|
|
|
"once_cell",
|
|
|
|
"regex",
|
|
|
|
"serde",
|
|
|
|
"slog",
|
|
|
|
"slog-async",
|
2021-11-30 03:25:32 +00:00
|
|
|
"slog-json",
|
2021-07-05 00:54:17 +00:00
|
|
|
"slog-kvfilter",
|
|
|
|
"slog-scope",
|
|
|
|
"slog-stdlog",
|
|
|
|
"slog-term",
|
|
|
|
"trackable",
|
2021-11-18 05:08:42 +00:00
|
|
|
"winapi",
|
|
|
|
"windows-acl",
|
2021-07-05 00:54:17 +00:00
|
|
|
]
|
|
|
|
|
2019-12-09 11:39:44 +00:00
|
|
|
[[package]]
|
|
|
|
name = "slot_clock"
|
Initial work towards v0.2.0 (#924)
* Remove ping protocol
* Initial renaming of network services
* Correct rebasing relative to latest master
* Start updating types
* Adds HashMapDelay struct to utils
* Initial network restructure
* Network restructure. Adds new types for v0.2.0
* Removes build artefacts
* Shift validation to beacon chain
* Temporarily remove gossip validation
This is to be updated to match current optimisation efforts.
* Adds AggregateAndProof
* Begin rebuilding pubsub encoding/decoding
* Signature hacking
* Shift gossipsup decoding into eth2_libp2p
* Existing EF tests passing with fake_crypto
* Shifts block encoding/decoding into RPC
* Delete outdated API spec
* All release tests passing bar genesis state parsing
* Update and test YamlConfig
* Update to spec v0.10 compatible BLS
* Updates to BLS EF tests
* Add EF test for AggregateVerify
And delete unused hash2curve tests for uncompressed points
* Update EF tests to v0.10.1
* Use optional block root correctly in block proc
* Use genesis fork in deposit domain. All tests pass
* Fast aggregate verify test
* Update REST API docs
* Fix unused import
* Bump spec tags to v0.10.1
* Add `seconds_per_eth1_block` to chainspec
* Update to timestamp based eth1 voting scheme
* Return None from `get_votes_to_consider` if block cache is empty
* Handle overflows in `is_candidate_block`
* Revert to failing tests
* Fix eth1 data sets test
* Choose default vote according to spec
* Fix collect_valid_votes tests
* Fix `get_votes_to_consider` to choose all eligible blocks
* Uncomment winning_vote tests
* Add comments; remove unused code
* Reduce seconds_per_eth1_block for simulation
* Addressed review comments
* Add test for default vote case
* Fix logs
* Remove unused functions
* Meter default eth1 votes
* Fix comments
* Progress on attestation service
* Address review comments; remove unused dependency
* Initial work on removing libp2p lock
* Add LRU caches to store (rollup)
* Update attestation validation for DB changes (WIP)
* Initial version of should_forward_block
* Scaffold
* Progress on attestation validation
Also, consolidate prod+testing slot clocks so that they share much
of the same implementation and can both handle sub-slot time changes.
* Removes lock from libp2p service
* Completed network lock removal
* Finish(?) attestation processing
* Correct network termination future
* Add slot check to block check
* Correct fmt issues
* Remove Drop implementation for network service
* Add first attempt at attestation proc. re-write
* Add version 2 of attestation processing
* Minor fixes
* Add validator pubkey cache
* Make get_indexed_attestation take a committee
* Link signature processing into new attn verification
* First working version
* Ensure pubkey cache is updated
* Add more metrics, slight optimizations
* Clone committee cache during attestation processing
* Update shuffling cache during block processing
* Remove old commented-out code
* Fix shuffling cache insert bug
* Used indexed attestation in fork choice
* Restructure attn processing, add metrics
* Add more detailed metrics
* Tidy, fix failing tests
* Fix failing tests, tidy
* Address reviewers suggestions
* Disable/delete two outdated tests
* Modification of validator for subscriptions
* Add slot signing to validator client
* Further progress on validation subscription
* Adds necessary validator subscription functionality
* Add new Pubkeys struct to signature_sets
* Refactor with functional approach
* Update beacon chain
* Clean up validator <-> beacon node http types
* Add aggregator status to ValidatorDuty
* Impl Clone for manual slot clock
* Fix minor errors
* Further progress validator client subscription
* Initial subscription and aggregation handling
* Remove decompressed member from pubkey bytes
* Progress to modifying val client for attestation aggregation
* First draft of validator client upgrade for aggregate attestations
* Add hashmap for indices lookup
* Add state cache, remove store cache
* Only build the head committee cache
* Removes lock on a network channel
* Partially implement beacon node subscription http api
* Correct compilation issues
* Change `get_attesting_indices` to use Vec
* Fix failing test
* Partial implementation of timer
* Adds timer, removes exit_future, http api to op pool
* Partial multiple aggregate attestation handling
* Permits bulk messages accross gossipsub network channel
* Correct compile issues
* Improve gosispsub messaging and correct rest api helpers
* Added global gossipsub subscriptions
* Update validator subscriptions data structs
* Tidy
* Re-structure validator subscriptions
* Initial handling of subscriptions
* Re-structure network service
* Add pubkey cache persistence file
* Add more comments
* Integrate persistence file into builder
* Add pubkey cache tests
* Add HashSetDelay and introduce into attestation service
* Handles validator subscriptions
* Add data_dir to beacon chain builder
* Remove Option in pubkey cache persistence file
* Ensure consistency between datadir/data_dir
* Fix failing network test
* Peer subnet discovery gets queued for future subscriptions
* Reorganise attestation service functions
* Initial wiring of attestation service
* First draft of attestation service timing logic
* Correct minor typos
* Tidy
* Fix todos
* Improve tests
* Add PeerInfo to connected peers mapping
* Fix compile error
* Fix compile error from merge
* Split up block processing metrics
* Tidy
* Refactor get_pubkey_from_state
* Remove commented-out code
* Rename state_cache -> checkpoint_cache
* Rename Checkpoint -> Snapshot
* Tidy, add comments
* Tidy up find_head function
* Change some checkpoint -> snapshot
* Add tests
* Expose max_len
* Remove dead code
* Tidy
* Fix bug
* Add sync-speed metric
* Add first attempt at VerifiableBlock
* Start integrating into beacon chain
* Integrate VerifiableBlock
* Rename VerifableBlock -> PartialBlockVerification
* Add start of typed methods
* Add progress
* Add further progress
* Rename structs
* Add full block verification to block_processing.rs
* Further beacon chain integration
* Update checks for gossip
* Add todo
* Start adding segement verification
* Add passing chain segement test
* Initial integration with batch sync
* Minor changes
* Tidy, add more error checking
* Start adding chain_segment tests
* Finish invalid signature tests
* Include single and gossip verified blocks in tests
* Add gossip verification tests
* Start adding docs
* Finish adding comments to block_processing.rs
* Rename block_processing.rs -> block_verification
* Start removing old block processing code
* Fixes beacon_chain compilation
* Fix project-wide compile errors
* Remove old code
* Correct code to pass all tests
* Fix bug with beacon proposer index
* Fix shim for BlockProcessingError
* Only process one epoch at a time
* Fix loop in chain segment processing
* Correct tests from master merge
* Add caching for state.eth1_data_votes
* Add BeaconChain::validator_pubkey
* Revert "Add caching for state.eth1_data_votes"
This reverts commit cd73dcd6434fb8d8e6bf30c5356355598ea7b78e.
Co-authored-by: Grant Wuerker <gwuerker@gmail.com>
Co-authored-by: Michael Sproul <michael@sigmaprime.io>
Co-authored-by: Michael Sproul <micsproul@gmail.com>
Co-authored-by: pawan <pawandhananjay@gmail.com>
Co-authored-by: Paul Hauner <paul@paulhauner.com>
2020-03-17 06:24:44 +00:00
|
|
|
version = "0.2.0"
|
2019-12-09 11:39:44 +00:00
|
|
|
dependencies = [
|
2020-05-10 09:56:31 +00:00
|
|
|
"lazy_static",
|
|
|
|
"lighthouse_metrics",
|
2022-06-18 23:59:43 +00:00
|
|
|
"parking_lot 0.12.1",
|
2020-05-10 09:56:31 +00:00
|
|
|
"types",
|
2019-12-09 11:39:44 +00:00
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "smallvec"
|
2022-07-05 23:36:42 +00:00
|
|
|
version = "1.9.0"
|
2019-12-09 11:39:44 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2022-07-05 23:36:42 +00:00
|
|
|
checksum = "2fd0db749597d91ff862fd1d55ea87f7855a744a8425a64695b6fca237d1dad1"
|
2019-12-09 11:39:44 +00:00
|
|
|
|
2020-04-05 08:29:14 +00:00
|
|
|
[[package]]
|
|
|
|
name = "snap"
|
2021-05-04 00:44:05 +00:00
|
|
|
version = "1.0.5"
|
2020-04-05 08:29:14 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2021-05-04 00:44:05 +00:00
|
|
|
checksum = "45456094d1983e2ee2a18fdfebce3189fa451699d0502cb8e3b49dba5ba41451"
|
2020-04-05 08:29:14 +00:00
|
|
|
|
2019-12-09 11:39:44 +00:00
|
|
|
[[package]]
|
|
|
|
name = "snow"
|
2022-02-10 04:12:03 +00:00
|
|
|
version = "0.9.0"
|
2019-12-09 11:39:44 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2022-02-10 04:12:03 +00:00
|
|
|
checksum = "774d05a3edae07ce6d68ea6984f3c05e9bba8927e3dd591e3b479e5b03213d0d"
|
2019-12-09 11:39:44 +00:00
|
|
|
dependencies = [
|
2021-06-03 01:11:33 +00:00
|
|
|
"aes-gcm",
|
2020-06-29 10:25:42 +00:00
|
|
|
"blake2",
|
|
|
|
"chacha20poly1305",
|
2022-02-10 04:12:03 +00:00
|
|
|
"curve25519-dalek 4.0.0-pre.1",
|
2021-06-03 01:11:33 +00:00
|
|
|
"rand_core 0.6.3",
|
2020-05-10 09:56:31 +00:00
|
|
|
"ring",
|
2022-02-10 04:12:03 +00:00
|
|
|
"rustc_version 0.4.0",
|
2022-03-02 05:09:52 +00:00
|
|
|
"sha2 0.10.2",
|
2021-07-13 00:48:33 +00:00
|
|
|
"subtle",
|
2020-05-17 11:16:48 +00:00
|
|
|
]
|
|
|
|
|
2021-05-04 00:44:05 +00:00
|
|
|
[[package]]
|
|
|
|
name = "socket2"
|
2022-02-01 23:53:53 +00:00
|
|
|
version = "0.4.4"
|
2021-05-04 00:44:05 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2022-02-01 23:53:53 +00:00
|
|
|
checksum = "66d72b759436ae32898a2af0a14218dbf55efde3feeb170eb623637db85ee1e0"
|
2021-05-04 00:44:05 +00:00
|
|
|
dependencies = [
|
|
|
|
"libc",
|
2021-07-09 03:20:24 +00:00
|
|
|
"winapi",
|
2021-05-04 00:44:05 +00:00
|
|
|
]
|
|
|
|
|
2021-08-17 01:00:24 +00:00
|
|
|
[[package]]
|
|
|
|
name = "soketto"
|
2021-11-18 05:08:42 +00:00
|
|
|
version = "0.7.1"
|
2021-08-17 01:00:24 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2021-11-18 05:08:42 +00:00
|
|
|
checksum = "41d1c5305e39e09653383c2c7244f2f78b3bcae37cf50c64cb4789c9f5096ec2"
|
2021-08-17 01:00:24 +00:00
|
|
|
dependencies = [
|
2022-04-04 00:26:16 +00:00
|
|
|
"base64",
|
2021-10-29 01:59:29 +00:00
|
|
|
"bytes",
|
|
|
|
"flate2",
|
2021-08-17 01:00:24 +00:00
|
|
|
"futures",
|
|
|
|
"httparse",
|
|
|
|
"log",
|
2022-03-02 05:09:52 +00:00
|
|
|
"rand 0.8.5",
|
|
|
|
"sha-1 0.9.8",
|
2021-08-17 01:00:24 +00:00
|
|
|
]
|
|
|
|
|
2019-12-09 11:39:44 +00:00
|
|
|
[[package]]
|
|
|
|
name = "spin"
|
|
|
|
version = "0.5.2"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2020-05-10 09:56:31 +00:00
|
|
|
checksum = "6e63cff320ae2c57904679ba7cb63280a3dc4613885beafb148ee7bf9aa9042d"
|
2019-12-09 11:39:44 +00:00
|
|
|
|
2021-07-05 00:54:17 +00:00
|
|
|
[[package]]
|
|
|
|
name = "spki"
|
|
|
|
version = "0.3.0"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "9dae7e047abc519c96350e9484a96c6bf1492348af912fd3446dd2dc323f6268"
|
|
|
|
dependencies = [
|
Separate execution payloads in the DB (#3157)
## Proposed Changes
Reduce post-merge disk usage by not storing finalized execution payloads in Lighthouse's database.
:warning: **This is achieved in a backwards-incompatible way for networks that have already merged** :warning:. Kiln users and shadow fork enjoyers will be unable to downgrade after running the code from this PR. The upgrade migration may take several minutes to run, and can't be aborted after it begins.
The main changes are:
- New column in the database called `ExecPayload`, keyed by beacon block root.
- The `BeaconBlock` column now stores blinded blocks only.
- Lots of places that previously used full blocks now use blinded blocks, e.g. analytics APIs, block replay in the DB, etc.
- On finalization:
- `prune_abanonded_forks` deletes non-canonical payloads whilst deleting non-canonical blocks.
- `migrate_db` deletes finalized canonical payloads whilst deleting finalized states.
- Conversions between blinded and full blocks are implemented in a compositional way, duplicating some work from Sean's PR #3134.
- The execution layer has a new `get_payload_by_block_hash` method that reconstructs a payload using the EE's `eth_getBlockByHash` call.
- I've tested manually that it works on Kiln, using Geth and Nethermind.
- This isn't necessarily the most efficient method, and new engine APIs are being discussed to improve this: https://github.com/ethereum/execution-apis/pull/146.
- We're depending on the `ethers` master branch, due to lots of recent changes. We're also using a workaround for https://github.com/gakonst/ethers-rs/issues/1134.
- Payload reconstruction is used in the HTTP API via `BeaconChain::get_block`, which is now `async`. Due to the `async` fn, the `blocking_json` wrapper has been removed.
- Payload reconstruction is used in network RPC to serve blocks-by-{root,range} responses. Here the `async` adjustment is messier, although I think I've managed to come up with a reasonable compromise: the handlers take the `SendOnDrop` by value so that they can drop it on _task completion_ (after the `fn` returns). Still, this is introducing disk reads onto core executor threads, which may have a negative performance impact (thoughts appreciated).
## Additional Info
- [x] For performance it would be great to remove the cloning of full blocks when converting them to blinded blocks to write to disk. I'm going to experiment with a `put_block` API that takes the block by value, breaks it into a blinded block and a payload, stores the blinded block, and then re-assembles the full block for the caller.
- [x] We should measure the latency of blocks-by-root and blocks-by-range responses.
- [x] We should add integration tests that stress the payload reconstruction (basic tests done, issue for more extensive tests: https://github.com/sigp/lighthouse/issues/3159)
- [x] We should (manually) test the schema v9 migration from several prior versions, particularly as blocks have changed on disk and some migrations rely on being able to load blocks.
Co-authored-by: Paul Hauner <paul@paulhauner.com>
2022-05-12 00:42:17 +00:00
|
|
|
"der 0.3.5",
|
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "spki"
|
|
|
|
version = "0.5.4"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "44d01ac02a6ccf3e07db148d2be087da624fea0221a16152ed01f0496a6b0a27"
|
|
|
|
dependencies = [
|
|
|
|
"base64ct",
|
|
|
|
"der 0.5.1",
|
2021-07-05 00:54:17 +00:00
|
|
|
]
|
|
|
|
|
2021-10-29 01:59:29 +00:00
|
|
|
[[package]]
|
|
|
|
name = "stable_deref_trait"
|
|
|
|
version = "1.2.0"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3"
|
|
|
|
|
2019-12-09 11:39:44 +00:00
|
|
|
[[package]]
|
|
|
|
name = "state_processing"
|
Initial work towards v0.2.0 (#924)
* Remove ping protocol
* Initial renaming of network services
* Correct rebasing relative to latest master
* Start updating types
* Adds HashMapDelay struct to utils
* Initial network restructure
* Network restructure. Adds new types for v0.2.0
* Removes build artefacts
* Shift validation to beacon chain
* Temporarily remove gossip validation
This is to be updated to match current optimisation efforts.
* Adds AggregateAndProof
* Begin rebuilding pubsub encoding/decoding
* Signature hacking
* Shift gossipsup decoding into eth2_libp2p
* Existing EF tests passing with fake_crypto
* Shifts block encoding/decoding into RPC
* Delete outdated API spec
* All release tests passing bar genesis state parsing
* Update and test YamlConfig
* Update to spec v0.10 compatible BLS
* Updates to BLS EF tests
* Add EF test for AggregateVerify
And delete unused hash2curve tests for uncompressed points
* Update EF tests to v0.10.1
* Use optional block root correctly in block proc
* Use genesis fork in deposit domain. All tests pass
* Fast aggregate verify test
* Update REST API docs
* Fix unused import
* Bump spec tags to v0.10.1
* Add `seconds_per_eth1_block` to chainspec
* Update to timestamp based eth1 voting scheme
* Return None from `get_votes_to_consider` if block cache is empty
* Handle overflows in `is_candidate_block`
* Revert to failing tests
* Fix eth1 data sets test
* Choose default vote according to spec
* Fix collect_valid_votes tests
* Fix `get_votes_to_consider` to choose all eligible blocks
* Uncomment winning_vote tests
* Add comments; remove unused code
* Reduce seconds_per_eth1_block for simulation
* Addressed review comments
* Add test for default vote case
* Fix logs
* Remove unused functions
* Meter default eth1 votes
* Fix comments
* Progress on attestation service
* Address review comments; remove unused dependency
* Initial work on removing libp2p lock
* Add LRU caches to store (rollup)
* Update attestation validation for DB changes (WIP)
* Initial version of should_forward_block
* Scaffold
* Progress on attestation validation
Also, consolidate prod+testing slot clocks so that they share much
of the same implementation and can both handle sub-slot time changes.
* Removes lock from libp2p service
* Completed network lock removal
* Finish(?) attestation processing
* Correct network termination future
* Add slot check to block check
* Correct fmt issues
* Remove Drop implementation for network service
* Add first attempt at attestation proc. re-write
* Add version 2 of attestation processing
* Minor fixes
* Add validator pubkey cache
* Make get_indexed_attestation take a committee
* Link signature processing into new attn verification
* First working version
* Ensure pubkey cache is updated
* Add more metrics, slight optimizations
* Clone committee cache during attestation processing
* Update shuffling cache during block processing
* Remove old commented-out code
* Fix shuffling cache insert bug
* Used indexed attestation in fork choice
* Restructure attn processing, add metrics
* Add more detailed metrics
* Tidy, fix failing tests
* Fix failing tests, tidy
* Address reviewers suggestions
* Disable/delete two outdated tests
* Modification of validator for subscriptions
* Add slot signing to validator client
* Further progress on validation subscription
* Adds necessary validator subscription functionality
* Add new Pubkeys struct to signature_sets
* Refactor with functional approach
* Update beacon chain
* Clean up validator <-> beacon node http types
* Add aggregator status to ValidatorDuty
* Impl Clone for manual slot clock
* Fix minor errors
* Further progress validator client subscription
* Initial subscription and aggregation handling
* Remove decompressed member from pubkey bytes
* Progress to modifying val client for attestation aggregation
* First draft of validator client upgrade for aggregate attestations
* Add hashmap for indices lookup
* Add state cache, remove store cache
* Only build the head committee cache
* Removes lock on a network channel
* Partially implement beacon node subscription http api
* Correct compilation issues
* Change `get_attesting_indices` to use Vec
* Fix failing test
* Partial implementation of timer
* Adds timer, removes exit_future, http api to op pool
* Partial multiple aggregate attestation handling
* Permits bulk messages accross gossipsub network channel
* Correct compile issues
* Improve gosispsub messaging and correct rest api helpers
* Added global gossipsub subscriptions
* Update validator subscriptions data structs
* Tidy
* Re-structure validator subscriptions
* Initial handling of subscriptions
* Re-structure network service
* Add pubkey cache persistence file
* Add more comments
* Integrate persistence file into builder
* Add pubkey cache tests
* Add HashSetDelay and introduce into attestation service
* Handles validator subscriptions
* Add data_dir to beacon chain builder
* Remove Option in pubkey cache persistence file
* Ensure consistency between datadir/data_dir
* Fix failing network test
* Peer subnet discovery gets queued for future subscriptions
* Reorganise attestation service functions
* Initial wiring of attestation service
* First draft of attestation service timing logic
* Correct minor typos
* Tidy
* Fix todos
* Improve tests
* Add PeerInfo to connected peers mapping
* Fix compile error
* Fix compile error from merge
* Split up block processing metrics
* Tidy
* Refactor get_pubkey_from_state
* Remove commented-out code
* Rename state_cache -> checkpoint_cache
* Rename Checkpoint -> Snapshot
* Tidy, add comments
* Tidy up find_head function
* Change some checkpoint -> snapshot
* Add tests
* Expose max_len
* Remove dead code
* Tidy
* Fix bug
* Add sync-speed metric
* Add first attempt at VerifiableBlock
* Start integrating into beacon chain
* Integrate VerifiableBlock
* Rename VerifableBlock -> PartialBlockVerification
* Add start of typed methods
* Add progress
* Add further progress
* Rename structs
* Add full block verification to block_processing.rs
* Further beacon chain integration
* Update checks for gossip
* Add todo
* Start adding segement verification
* Add passing chain segement test
* Initial integration with batch sync
* Minor changes
* Tidy, add more error checking
* Start adding chain_segment tests
* Finish invalid signature tests
* Include single and gossip verified blocks in tests
* Add gossip verification tests
* Start adding docs
* Finish adding comments to block_processing.rs
* Rename block_processing.rs -> block_verification
* Start removing old block processing code
* Fixes beacon_chain compilation
* Fix project-wide compile errors
* Remove old code
* Correct code to pass all tests
* Fix bug with beacon proposer index
* Fix shim for BlockProcessingError
* Only process one epoch at a time
* Fix loop in chain segment processing
* Correct tests from master merge
* Add caching for state.eth1_data_votes
* Add BeaconChain::validator_pubkey
* Revert "Add caching for state.eth1_data_votes"
This reverts commit cd73dcd6434fb8d8e6bf30c5356355598ea7b78e.
Co-authored-by: Grant Wuerker <gwuerker@gmail.com>
Co-authored-by: Michael Sproul <michael@sigmaprime.io>
Co-authored-by: Michael Sproul <micsproul@gmail.com>
Co-authored-by: pawan <pawandhananjay@gmail.com>
Co-authored-by: Paul Hauner <paul@paulhauner.com>
2020-03-17 06:24:44 +00:00
|
|
|
version = "0.2.0"
|
2019-12-09 11:39:44 +00:00
|
|
|
dependencies = [
|
2021-10-14 02:58:11 +00:00
|
|
|
"arbitrary",
|
2021-07-09 06:15:32 +00:00
|
|
|
"beacon_chain",
|
2020-05-10 09:56:31 +00:00
|
|
|
"bls",
|
2021-08-17 01:00:24 +00:00
|
|
|
"env_logger 0.9.0",
|
2022-04-04 00:26:16 +00:00
|
|
|
"eth2_hashing",
|
2021-11-29 03:57:54 +00:00
|
|
|
"eth2_ssz",
|
|
|
|
"eth2_ssz_types",
|
2020-05-10 09:56:31 +00:00
|
|
|
"int_to_bytes",
|
|
|
|
"integer-sqrt",
|
2021-08-17 01:00:24 +00:00
|
|
|
"itertools",
|
2020-05-10 09:56:31 +00:00
|
|
|
"lazy_static",
|
2021-07-27 07:01:01 +00:00
|
|
|
"lighthouse_metrics",
|
2020-05-10 09:56:31 +00:00
|
|
|
"merkle_proof",
|
|
|
|
"rayon",
|
|
|
|
"safe_arith",
|
2021-07-09 06:15:32 +00:00
|
|
|
"smallvec",
|
Use async code when interacting with EL (#3244)
## Overview
This rather extensive PR achieves two primary goals:
1. Uses the finalized/justified checkpoints of fork choice (FC), rather than that of the head state.
2. Refactors fork choice, block production and block processing to `async` functions.
Additionally, it achieves:
- Concurrent forkchoice updates to the EL and cache pruning after a new head is selected.
- Concurrent "block packing" (attestations, etc) and execution payload retrieval during block production.
- Concurrent per-block-processing and execution payload verification during block processing.
- The `Arc`-ification of `SignedBeaconBlock` during block processing (it's never mutated, so why not?):
- I had to do this to deal with sending blocks into spawned tasks.
- Previously we were cloning the beacon block at least 2 times during each block processing, these clones are either removed or turned into cheaper `Arc` clones.
- We were also `Box`-ing and un-`Box`-ing beacon blocks as they moved throughout the networking crate. This is not a big deal, but it's nice to avoid shifting things between the stack and heap.
- Avoids cloning *all the blocks* in *every chain segment* during sync.
- It also has the potential to clean up our code where we need to pass an *owned* block around so we can send it back in the case of an error (I didn't do much of this, my PR is already big enough :sweat_smile:)
- The `BeaconChain::HeadSafetyStatus` struct was removed. It was an old relic from prior merge specs.
For motivation for this change, see https://github.com/sigp/lighthouse/pull/3244#issuecomment-1160963273
## Changes to `canonical_head` and `fork_choice`
Previously, the `BeaconChain` had two separate fields:
```
canonical_head: RwLock<Snapshot>,
fork_choice: RwLock<BeaconForkChoice>
```
Now, we have grouped these values under a single struct:
```
canonical_head: CanonicalHead {
cached_head: RwLock<Arc<Snapshot>>,
fork_choice: RwLock<BeaconForkChoice>
}
```
Apart from ergonomics, the only *actual* change here is wrapping the canonical head snapshot in an `Arc`. This means that we no longer need to hold the `cached_head` (`canonical_head`, in old terms) lock when we want to pull some values from it. This was done to avoid deadlock risks by preventing functions from acquiring (and holding) the `cached_head` and `fork_choice` locks simultaneously.
## Breaking Changes
### The `state` (root) field in the `finalized_checkpoint` SSE event
Consider the scenario where epoch `n` is just finalized, but `start_slot(n)` is skipped. There are two state roots we might in the `finalized_checkpoint` SSE event:
1. The state root of the finalized block, which is `get_block(finalized_checkpoint.root).state_root`.
4. The state root at slot of `start_slot(n)`, which would be the state from (1), but "skipped forward" through any skip slots.
Previously, Lighthouse would choose (2). However, we can see that when [Teku generates that event](https://github.com/ConsenSys/teku/blob/de2b2801c89ef5abf983d6bf37867c37fc47121f/data/beaconrestapi/src/main/java/tech/pegasys/teku/beaconrestapi/handlers/v1/events/EventSubscriptionManager.java#L171-L182) it uses [`getStateRootFromBlockRoot`](https://github.com/ConsenSys/teku/blob/de2b2801c89ef5abf983d6bf37867c37fc47121f/data/provider/src/main/java/tech/pegasys/teku/api/ChainDataProvider.java#L336-L341) which uses (1).
I have switched Lighthouse from (2) to (1). I think it's a somewhat arbitrary choice between the two, where (1) is easier to compute and is consistent with Teku.
## Notes for Reviewers
I've renamed `BeaconChain::fork_choice` to `BeaconChain::recompute_head`. Doing this helped ensure I broke all previous uses of fork choice and I also find it more descriptive. It describes an action and can't be confused with trying to get a reference to the `ForkChoice` struct.
I've changed the ordering of SSE events when a block is received. It used to be `[block, finalized, head]` and now it's `[block, head, finalized]`. It was easier this way and I don't think we were making any promises about SSE event ordering so it's not "breaking".
I've made it so fork choice will run when it's first constructed. I did this because I wanted to have a cached version of the last call to `get_head`. Ensuring `get_head` has been run *at least once* means that the cached values doesn't need to wrapped in an `Option`. This was fairly simple, it just involved passing a `slot` to the constructor so it knows *when* it's being run. When loading a fork choice from the store and a slot clock isn't handy I've just used the `slot` that was saved in the `fork_choice_store`. That seems like it would be a faithful representation of the slot when we saved it.
I added the `genesis_time: u64` to the `BeaconChain`. It's small, constant and nice to have around.
Since we're using FC for the fin/just checkpoints, we no longer get the `0x00..00` roots at genesis. You can see I had to remove a work-around in `ef-tests` here: b56be3bc2. I can't find any reason why this would be an issue, if anything I think it'll be better since the genesis-alias has caught us out a few times (0x00..00 isn't actually a real root). Edit: I did find a case where the `network` expected the 0x00..00 alias and patched it here: 3f26ac3e2.
You'll notice a lot of changes in tests. Generally, tests should be functionally equivalent. Here are the things creating the most diff-noise in tests:
- Changing tests to be `tokio::async` tests.
- Adding `.await` to fork choice, block processing and block production functions.
- Refactor of the `canonical_head` "API" provided by the `BeaconChain`. E.g., `chain.canonical_head.cached_head()` instead of `chain.canonical_head.read()`.
- Wrapping `SignedBeaconBlock` in an `Arc`.
- In the `beacon_chain/tests/block_verification`, we can't use the `lazy_static` `CHAIN_SEGMENT` variable anymore since it's generated with an async function. We just generate it in each test, not so efficient but hopefully insignificant.
I had to disable `rayon` concurrent tests in the `fork_choice` tests. This is because the use of `rayon` and `block_on` was causing a panic.
Co-authored-by: Mac L <mjladson@pm.me>
2022-07-03 05:36:50 +00:00
|
|
|
"tokio",
|
2021-11-29 03:57:54 +00:00
|
|
|
"tree_hash",
|
2020-05-10 09:56:31 +00:00
|
|
|
"types",
|
2019-12-09 11:39:44 +00:00
|
|
|
]
|
|
|
|
|
2020-05-08 23:37:21 +00:00
|
|
|
[[package]]
|
|
|
|
name = "state_transition_vectors"
|
|
|
|
version = "0.1.0"
|
|
|
|
dependencies = [
|
2021-07-09 06:15:32 +00:00
|
|
|
"beacon_chain",
|
2021-11-29 03:57:54 +00:00
|
|
|
"eth2_ssz",
|
2021-07-09 06:15:32 +00:00
|
|
|
"lazy_static",
|
2020-05-11 07:45:06 +00:00
|
|
|
"state_processing",
|
Use async code when interacting with EL (#3244)
## Overview
This rather extensive PR achieves two primary goals:
1. Uses the finalized/justified checkpoints of fork choice (FC), rather than that of the head state.
2. Refactors fork choice, block production and block processing to `async` functions.
Additionally, it achieves:
- Concurrent forkchoice updates to the EL and cache pruning after a new head is selected.
- Concurrent "block packing" (attestations, etc) and execution payload retrieval during block production.
- Concurrent per-block-processing and execution payload verification during block processing.
- The `Arc`-ification of `SignedBeaconBlock` during block processing (it's never mutated, so why not?):
- I had to do this to deal with sending blocks into spawned tasks.
- Previously we were cloning the beacon block at least 2 times during each block processing, these clones are either removed or turned into cheaper `Arc` clones.
- We were also `Box`-ing and un-`Box`-ing beacon blocks as they moved throughout the networking crate. This is not a big deal, but it's nice to avoid shifting things between the stack and heap.
- Avoids cloning *all the blocks* in *every chain segment* during sync.
- It also has the potential to clean up our code where we need to pass an *owned* block around so we can send it back in the case of an error (I didn't do much of this, my PR is already big enough :sweat_smile:)
- The `BeaconChain::HeadSafetyStatus` struct was removed. It was an old relic from prior merge specs.
For motivation for this change, see https://github.com/sigp/lighthouse/pull/3244#issuecomment-1160963273
## Changes to `canonical_head` and `fork_choice`
Previously, the `BeaconChain` had two separate fields:
```
canonical_head: RwLock<Snapshot>,
fork_choice: RwLock<BeaconForkChoice>
```
Now, we have grouped these values under a single struct:
```
canonical_head: CanonicalHead {
cached_head: RwLock<Arc<Snapshot>>,
fork_choice: RwLock<BeaconForkChoice>
}
```
Apart from ergonomics, the only *actual* change here is wrapping the canonical head snapshot in an `Arc`. This means that we no longer need to hold the `cached_head` (`canonical_head`, in old terms) lock when we want to pull some values from it. This was done to avoid deadlock risks by preventing functions from acquiring (and holding) the `cached_head` and `fork_choice` locks simultaneously.
## Breaking Changes
### The `state` (root) field in the `finalized_checkpoint` SSE event
Consider the scenario where epoch `n` is just finalized, but `start_slot(n)` is skipped. There are two state roots we might in the `finalized_checkpoint` SSE event:
1. The state root of the finalized block, which is `get_block(finalized_checkpoint.root).state_root`.
4. The state root at slot of `start_slot(n)`, which would be the state from (1), but "skipped forward" through any skip slots.
Previously, Lighthouse would choose (2). However, we can see that when [Teku generates that event](https://github.com/ConsenSys/teku/blob/de2b2801c89ef5abf983d6bf37867c37fc47121f/data/beaconrestapi/src/main/java/tech/pegasys/teku/beaconrestapi/handlers/v1/events/EventSubscriptionManager.java#L171-L182) it uses [`getStateRootFromBlockRoot`](https://github.com/ConsenSys/teku/blob/de2b2801c89ef5abf983d6bf37867c37fc47121f/data/provider/src/main/java/tech/pegasys/teku/api/ChainDataProvider.java#L336-L341) which uses (1).
I have switched Lighthouse from (2) to (1). I think it's a somewhat arbitrary choice between the two, where (1) is easier to compute and is consistent with Teku.
## Notes for Reviewers
I've renamed `BeaconChain::fork_choice` to `BeaconChain::recompute_head`. Doing this helped ensure I broke all previous uses of fork choice and I also find it more descriptive. It describes an action and can't be confused with trying to get a reference to the `ForkChoice` struct.
I've changed the ordering of SSE events when a block is received. It used to be `[block, finalized, head]` and now it's `[block, head, finalized]`. It was easier this way and I don't think we were making any promises about SSE event ordering so it's not "breaking".
I've made it so fork choice will run when it's first constructed. I did this because I wanted to have a cached version of the last call to `get_head`. Ensuring `get_head` has been run *at least once* means that the cached values doesn't need to wrapped in an `Option`. This was fairly simple, it just involved passing a `slot` to the constructor so it knows *when* it's being run. When loading a fork choice from the store and a slot clock isn't handy I've just used the `slot` that was saved in the `fork_choice_store`. That seems like it would be a faithful representation of the slot when we saved it.
I added the `genesis_time: u64` to the `BeaconChain`. It's small, constant and nice to have around.
Since we're using FC for the fin/just checkpoints, we no longer get the `0x00..00` roots at genesis. You can see I had to remove a work-around in `ef-tests` here: b56be3bc2. I can't find any reason why this would be an issue, if anything I think it'll be better since the genesis-alias has caught us out a few times (0x00..00 isn't actually a real root). Edit: I did find a case where the `network` expected the 0x00..00 alias and patched it here: 3f26ac3e2.
You'll notice a lot of changes in tests. Generally, tests should be functionally equivalent. Here are the things creating the most diff-noise in tests:
- Changing tests to be `tokio::async` tests.
- Adding `.await` to fork choice, block processing and block production functions.
- Refactor of the `canonical_head` "API" provided by the `BeaconChain`. E.g., `chain.canonical_head.cached_head()` instead of `chain.canonical_head.read()`.
- Wrapping `SignedBeaconBlock` in an `Arc`.
- In the `beacon_chain/tests/block_verification`, we can't use the `lazy_static` `CHAIN_SEGMENT` variable anymore since it's generated with an async function. We just generate it in each test, not so efficient but hopefully insignificant.
I had to disable `rayon` concurrent tests in the `fork_choice` tests. This is because the use of `rayon` and `block_on` was causing a panic.
Co-authored-by: Mac L <mjladson@pm.me>
2022-07-03 05:36:50 +00:00
|
|
|
"tokio",
|
2020-05-11 07:45:06 +00:00
|
|
|
"types",
|
2020-05-08 23:37:21 +00:00
|
|
|
]
|
|
|
|
|
2019-12-09 11:39:44 +00:00
|
|
|
[[package]]
|
|
|
|
name = "static_assertions"
|
|
|
|
version = "1.1.0"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2020-05-10 09:56:31 +00:00
|
|
|
checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f"
|
2019-12-09 11:39:44 +00:00
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "store"
|
2020-08-06 03:43:05 +00:00
|
|
|
version = "0.2.0"
|
2019-12-09 11:39:44 +00:00
|
|
|
dependencies = [
|
2021-07-09 06:15:32 +00:00
|
|
|
"beacon_chain",
|
2020-05-10 09:56:31 +00:00
|
|
|
"db-key",
|
2020-11-23 03:43:22 +00:00
|
|
|
"directory",
|
2021-11-29 03:57:54 +00:00
|
|
|
"eth2_ssz",
|
2022-03-31 07:52:23 +00:00
|
|
|
"eth2_ssz_derive",
|
2021-08-17 01:00:24 +00:00
|
|
|
"itertools",
|
2020-05-10 09:56:31 +00:00
|
|
|
"lazy_static",
|
|
|
|
"leveldb",
|
|
|
|
"lighthouse_metrics",
|
2020-07-29 03:40:22 +00:00
|
|
|
"lru",
|
2022-06-18 23:59:43 +00:00
|
|
|
"parking_lot 0.12.1",
|
2020-05-10 09:56:31 +00:00
|
|
|
"serde",
|
|
|
|
"serde_derive",
|
|
|
|
"slog",
|
2021-09-14 06:48:26 +00:00
|
|
|
"sloggers",
|
2020-05-10 09:56:31 +00:00
|
|
|
"state_processing",
|
2022-04-01 00:58:59 +00:00
|
|
|
"strum",
|
2020-05-10 09:56:31 +00:00
|
|
|
"tempfile",
|
|
|
|
"types",
|
2019-12-09 11:39:44 +00:00
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "strsim"
|
|
|
|
version = "0.8.0"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2020-05-10 09:56:31 +00:00
|
|
|
checksum = "8ea5119cdb4c55b55d432abb513a0429384878c15dde60cc77b1c99de1a95a6a"
|
2019-12-09 11:39:44 +00:00
|
|
|
|
2021-07-09 06:15:32 +00:00
|
|
|
[[package]]
|
|
|
|
name = "strsim"
|
|
|
|
version = "0.10.0"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623"
|
|
|
|
|
2021-01-19 06:33:58 +00:00
|
|
|
[[package]]
|
|
|
|
name = "strum"
|
2022-06-18 23:59:43 +00:00
|
|
|
version = "0.24.1"
|
2021-01-19 06:33:58 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2022-06-18 23:59:43 +00:00
|
|
|
checksum = "063e6045c0e62079840579a7e47a355ae92f60eb74daaf156fb1e84ba164e63f"
|
2021-01-19 06:33:58 +00:00
|
|
|
dependencies = [
|
|
|
|
"strum_macros",
|
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "strum_macros"
|
2022-07-05 23:36:42 +00:00
|
|
|
version = "0.24.2"
|
2021-01-19 06:33:58 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2022-07-05 23:36:42 +00:00
|
|
|
checksum = "4faebde00e8ff94316c01800f9054fd2ba77d30d9e922541913051d1d978918b"
|
2021-01-19 06:33:58 +00:00
|
|
|
dependencies = [
|
2022-04-01 00:58:59 +00:00
|
|
|
"heck 0.4.0",
|
2021-01-19 06:33:58 +00:00
|
|
|
"proc-macro2",
|
|
|
|
"quote",
|
2022-04-01 00:58:59 +00:00
|
|
|
"rustversion",
|
2021-01-19 06:33:58 +00:00
|
|
|
"syn",
|
|
|
|
]
|
|
|
|
|
2019-12-09 11:39:44 +00:00
|
|
|
[[package]]
|
|
|
|
name = "subtle"
|
2021-06-03 01:11:33 +00:00
|
|
|
version = "2.4.1"
|
2019-12-09 11:39:44 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2021-06-03 01:11:33 +00:00
|
|
|
checksum = "6bdef32e8150c2a081110b42772ffe7d7c9032b606bc226c8260fd97e0976601"
|
2019-12-09 11:39:44 +00:00
|
|
|
|
2021-07-09 06:15:32 +00:00
|
|
|
[[package]]
|
|
|
|
name = "superstruct"
|
Separate execution payloads in the DB (#3157)
## Proposed Changes
Reduce post-merge disk usage by not storing finalized execution payloads in Lighthouse's database.
:warning: **This is achieved in a backwards-incompatible way for networks that have already merged** :warning:. Kiln users and shadow fork enjoyers will be unable to downgrade after running the code from this PR. The upgrade migration may take several minutes to run, and can't be aborted after it begins.
The main changes are:
- New column in the database called `ExecPayload`, keyed by beacon block root.
- The `BeaconBlock` column now stores blinded blocks only.
- Lots of places that previously used full blocks now use blinded blocks, e.g. analytics APIs, block replay in the DB, etc.
- On finalization:
- `prune_abanonded_forks` deletes non-canonical payloads whilst deleting non-canonical blocks.
- `migrate_db` deletes finalized canonical payloads whilst deleting finalized states.
- Conversions between blinded and full blocks are implemented in a compositional way, duplicating some work from Sean's PR #3134.
- The execution layer has a new `get_payload_by_block_hash` method that reconstructs a payload using the EE's `eth_getBlockByHash` call.
- I've tested manually that it works on Kiln, using Geth and Nethermind.
- This isn't necessarily the most efficient method, and new engine APIs are being discussed to improve this: https://github.com/ethereum/execution-apis/pull/146.
- We're depending on the `ethers` master branch, due to lots of recent changes. We're also using a workaround for https://github.com/gakonst/ethers-rs/issues/1134.
- Payload reconstruction is used in the HTTP API via `BeaconChain::get_block`, which is now `async`. Due to the `async` fn, the `blocking_json` wrapper has been removed.
- Payload reconstruction is used in network RPC to serve blocks-by-{root,range} responses. Here the `async` adjustment is messier, although I think I've managed to come up with a reasonable compromise: the handlers take the `SendOnDrop` by value so that they can drop it on _task completion_ (after the `fn` returns). Still, this is introducing disk reads onto core executor threads, which may have a negative performance impact (thoughts appreciated).
## Additional Info
- [x] For performance it would be great to remove the cloning of full blocks when converting them to blinded blocks to write to disk. I'm going to experiment with a `put_block` API that takes the block by value, breaks it into a blinded block and a payload, stores the blinded block, and then re-assembles the full block for the caller.
- [x] We should measure the latency of blocks-by-root and blocks-by-range responses.
- [x] We should add integration tests that stress the payload reconstruction (basic tests done, issue for more extensive tests: https://github.com/sigp/lighthouse/issues/3159)
- [x] We should (manually) test the schema v9 migration from several prior versions, particularly as blocks have changed on disk and some migrations rely on being able to load blocks.
Co-authored-by: Paul Hauner <paul@paulhauner.com>
2022-05-12 00:42:17 +00:00
|
|
|
version = "0.5.0"
|
2021-07-09 06:15:32 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
Separate execution payloads in the DB (#3157)
## Proposed Changes
Reduce post-merge disk usage by not storing finalized execution payloads in Lighthouse's database.
:warning: **This is achieved in a backwards-incompatible way for networks that have already merged** :warning:. Kiln users and shadow fork enjoyers will be unable to downgrade after running the code from this PR. The upgrade migration may take several minutes to run, and can't be aborted after it begins.
The main changes are:
- New column in the database called `ExecPayload`, keyed by beacon block root.
- The `BeaconBlock` column now stores blinded blocks only.
- Lots of places that previously used full blocks now use blinded blocks, e.g. analytics APIs, block replay in the DB, etc.
- On finalization:
- `prune_abanonded_forks` deletes non-canonical payloads whilst deleting non-canonical blocks.
- `migrate_db` deletes finalized canonical payloads whilst deleting finalized states.
- Conversions between blinded and full blocks are implemented in a compositional way, duplicating some work from Sean's PR #3134.
- The execution layer has a new `get_payload_by_block_hash` method that reconstructs a payload using the EE's `eth_getBlockByHash` call.
- I've tested manually that it works on Kiln, using Geth and Nethermind.
- This isn't necessarily the most efficient method, and new engine APIs are being discussed to improve this: https://github.com/ethereum/execution-apis/pull/146.
- We're depending on the `ethers` master branch, due to lots of recent changes. We're also using a workaround for https://github.com/gakonst/ethers-rs/issues/1134.
- Payload reconstruction is used in the HTTP API via `BeaconChain::get_block`, which is now `async`. Due to the `async` fn, the `blocking_json` wrapper has been removed.
- Payload reconstruction is used in network RPC to serve blocks-by-{root,range} responses. Here the `async` adjustment is messier, although I think I've managed to come up with a reasonable compromise: the handlers take the `SendOnDrop` by value so that they can drop it on _task completion_ (after the `fn` returns). Still, this is introducing disk reads onto core executor threads, which may have a negative performance impact (thoughts appreciated).
## Additional Info
- [x] For performance it would be great to remove the cloning of full blocks when converting them to blinded blocks to write to disk. I'm going to experiment with a `put_block` API that takes the block by value, breaks it into a blinded block and a payload, stores the blinded block, and then re-assembles the full block for the caller.
- [x] We should measure the latency of blocks-by-root and blocks-by-range responses.
- [x] We should add integration tests that stress the payload reconstruction (basic tests done, issue for more extensive tests: https://github.com/sigp/lighthouse/issues/3159)
- [x] We should (manually) test the schema v9 migration from several prior versions, particularly as blocks have changed on disk and some migrations rely on being able to load blocks.
Co-authored-by: Paul Hauner <paul@paulhauner.com>
2022-05-12 00:42:17 +00:00
|
|
|
checksum = "95a99807a055ff4ff5d249bb84c80d9eabb55ca3c452187daae43fd5b51ef695"
|
2021-07-09 06:15:32 +00:00
|
|
|
dependencies = [
|
2021-12-13 20:43:22 +00:00
|
|
|
"darling",
|
2021-08-17 01:00:24 +00:00
|
|
|
"itertools",
|
2021-07-09 06:15:32 +00:00
|
|
|
"proc-macro2",
|
|
|
|
"quote",
|
Separate execution payloads in the DB (#3157)
## Proposed Changes
Reduce post-merge disk usage by not storing finalized execution payloads in Lighthouse's database.
:warning: **This is achieved in a backwards-incompatible way for networks that have already merged** :warning:. Kiln users and shadow fork enjoyers will be unable to downgrade after running the code from this PR. The upgrade migration may take several minutes to run, and can't be aborted after it begins.
The main changes are:
- New column in the database called `ExecPayload`, keyed by beacon block root.
- The `BeaconBlock` column now stores blinded blocks only.
- Lots of places that previously used full blocks now use blinded blocks, e.g. analytics APIs, block replay in the DB, etc.
- On finalization:
- `prune_abanonded_forks` deletes non-canonical payloads whilst deleting non-canonical blocks.
- `migrate_db` deletes finalized canonical payloads whilst deleting finalized states.
- Conversions between blinded and full blocks are implemented in a compositional way, duplicating some work from Sean's PR #3134.
- The execution layer has a new `get_payload_by_block_hash` method that reconstructs a payload using the EE's `eth_getBlockByHash` call.
- I've tested manually that it works on Kiln, using Geth and Nethermind.
- This isn't necessarily the most efficient method, and new engine APIs are being discussed to improve this: https://github.com/ethereum/execution-apis/pull/146.
- We're depending on the `ethers` master branch, due to lots of recent changes. We're also using a workaround for https://github.com/gakonst/ethers-rs/issues/1134.
- Payload reconstruction is used in the HTTP API via `BeaconChain::get_block`, which is now `async`. Due to the `async` fn, the `blocking_json` wrapper has been removed.
- Payload reconstruction is used in network RPC to serve blocks-by-{root,range} responses. Here the `async` adjustment is messier, although I think I've managed to come up with a reasonable compromise: the handlers take the `SendOnDrop` by value so that they can drop it on _task completion_ (after the `fn` returns). Still, this is introducing disk reads onto core executor threads, which may have a negative performance impact (thoughts appreciated).
## Additional Info
- [x] For performance it would be great to remove the cloning of full blocks when converting them to blinded blocks to write to disk. I'm going to experiment with a `put_block` API that takes the block by value, breaks it into a blinded block and a payload, stores the blinded block, and then re-assembles the full block for the caller.
- [x] We should measure the latency of blocks-by-root and blocks-by-range responses.
- [x] We should add integration tests that stress the payload reconstruction (basic tests done, issue for more extensive tests: https://github.com/sigp/lighthouse/issues/3159)
- [x] We should (manually) test the schema v9 migration from several prior versions, particularly as blocks have changed on disk and some migrations rely on being able to load blocks.
Co-authored-by: Paul Hauner <paul@paulhauner.com>
2022-05-12 00:42:17 +00:00
|
|
|
"smallvec",
|
2021-07-09 06:15:32 +00:00
|
|
|
"syn",
|
|
|
|
]
|
|
|
|
|
2019-12-09 11:39:44 +00:00
|
|
|
[[package]]
|
|
|
|
name = "swap_or_not_shuffle"
|
Initial work towards v0.2.0 (#924)
* Remove ping protocol
* Initial renaming of network services
* Correct rebasing relative to latest master
* Start updating types
* Adds HashMapDelay struct to utils
* Initial network restructure
* Network restructure. Adds new types for v0.2.0
* Removes build artefacts
* Shift validation to beacon chain
* Temporarily remove gossip validation
This is to be updated to match current optimisation efforts.
* Adds AggregateAndProof
* Begin rebuilding pubsub encoding/decoding
* Signature hacking
* Shift gossipsup decoding into eth2_libp2p
* Existing EF tests passing with fake_crypto
* Shifts block encoding/decoding into RPC
* Delete outdated API spec
* All release tests passing bar genesis state parsing
* Update and test YamlConfig
* Update to spec v0.10 compatible BLS
* Updates to BLS EF tests
* Add EF test for AggregateVerify
And delete unused hash2curve tests for uncompressed points
* Update EF tests to v0.10.1
* Use optional block root correctly in block proc
* Use genesis fork in deposit domain. All tests pass
* Fast aggregate verify test
* Update REST API docs
* Fix unused import
* Bump spec tags to v0.10.1
* Add `seconds_per_eth1_block` to chainspec
* Update to timestamp based eth1 voting scheme
* Return None from `get_votes_to_consider` if block cache is empty
* Handle overflows in `is_candidate_block`
* Revert to failing tests
* Fix eth1 data sets test
* Choose default vote according to spec
* Fix collect_valid_votes tests
* Fix `get_votes_to_consider` to choose all eligible blocks
* Uncomment winning_vote tests
* Add comments; remove unused code
* Reduce seconds_per_eth1_block for simulation
* Addressed review comments
* Add test for default vote case
* Fix logs
* Remove unused functions
* Meter default eth1 votes
* Fix comments
* Progress on attestation service
* Address review comments; remove unused dependency
* Initial work on removing libp2p lock
* Add LRU caches to store (rollup)
* Update attestation validation for DB changes (WIP)
* Initial version of should_forward_block
* Scaffold
* Progress on attestation validation
Also, consolidate prod+testing slot clocks so that they share much
of the same implementation and can both handle sub-slot time changes.
* Removes lock from libp2p service
* Completed network lock removal
* Finish(?) attestation processing
* Correct network termination future
* Add slot check to block check
* Correct fmt issues
* Remove Drop implementation for network service
* Add first attempt at attestation proc. re-write
* Add version 2 of attestation processing
* Minor fixes
* Add validator pubkey cache
* Make get_indexed_attestation take a committee
* Link signature processing into new attn verification
* First working version
* Ensure pubkey cache is updated
* Add more metrics, slight optimizations
* Clone committee cache during attestation processing
* Update shuffling cache during block processing
* Remove old commented-out code
* Fix shuffling cache insert bug
* Used indexed attestation in fork choice
* Restructure attn processing, add metrics
* Add more detailed metrics
* Tidy, fix failing tests
* Fix failing tests, tidy
* Address reviewers suggestions
* Disable/delete two outdated tests
* Modification of validator for subscriptions
* Add slot signing to validator client
* Further progress on validation subscription
* Adds necessary validator subscription functionality
* Add new Pubkeys struct to signature_sets
* Refactor with functional approach
* Update beacon chain
* Clean up validator <-> beacon node http types
* Add aggregator status to ValidatorDuty
* Impl Clone for manual slot clock
* Fix minor errors
* Further progress validator client subscription
* Initial subscription and aggregation handling
* Remove decompressed member from pubkey bytes
* Progress to modifying val client for attestation aggregation
* First draft of validator client upgrade for aggregate attestations
* Add hashmap for indices lookup
* Add state cache, remove store cache
* Only build the head committee cache
* Removes lock on a network channel
* Partially implement beacon node subscription http api
* Correct compilation issues
* Change `get_attesting_indices` to use Vec
* Fix failing test
* Partial implementation of timer
* Adds timer, removes exit_future, http api to op pool
* Partial multiple aggregate attestation handling
* Permits bulk messages accross gossipsub network channel
* Correct compile issues
* Improve gosispsub messaging and correct rest api helpers
* Added global gossipsub subscriptions
* Update validator subscriptions data structs
* Tidy
* Re-structure validator subscriptions
* Initial handling of subscriptions
* Re-structure network service
* Add pubkey cache persistence file
* Add more comments
* Integrate persistence file into builder
* Add pubkey cache tests
* Add HashSetDelay and introduce into attestation service
* Handles validator subscriptions
* Add data_dir to beacon chain builder
* Remove Option in pubkey cache persistence file
* Ensure consistency between datadir/data_dir
* Fix failing network test
* Peer subnet discovery gets queued for future subscriptions
* Reorganise attestation service functions
* Initial wiring of attestation service
* First draft of attestation service timing logic
* Correct minor typos
* Tidy
* Fix todos
* Improve tests
* Add PeerInfo to connected peers mapping
* Fix compile error
* Fix compile error from merge
* Split up block processing metrics
* Tidy
* Refactor get_pubkey_from_state
* Remove commented-out code
* Rename state_cache -> checkpoint_cache
* Rename Checkpoint -> Snapshot
* Tidy, add comments
* Tidy up find_head function
* Change some checkpoint -> snapshot
* Add tests
* Expose max_len
* Remove dead code
* Tidy
* Fix bug
* Add sync-speed metric
* Add first attempt at VerifiableBlock
* Start integrating into beacon chain
* Integrate VerifiableBlock
* Rename VerifableBlock -> PartialBlockVerification
* Add start of typed methods
* Add progress
* Add further progress
* Rename structs
* Add full block verification to block_processing.rs
* Further beacon chain integration
* Update checks for gossip
* Add todo
* Start adding segement verification
* Add passing chain segement test
* Initial integration with batch sync
* Minor changes
* Tidy, add more error checking
* Start adding chain_segment tests
* Finish invalid signature tests
* Include single and gossip verified blocks in tests
* Add gossip verification tests
* Start adding docs
* Finish adding comments to block_processing.rs
* Rename block_processing.rs -> block_verification
* Start removing old block processing code
* Fixes beacon_chain compilation
* Fix project-wide compile errors
* Remove old code
* Correct code to pass all tests
* Fix bug with beacon proposer index
* Fix shim for BlockProcessingError
* Only process one epoch at a time
* Fix loop in chain segment processing
* Correct tests from master merge
* Add caching for state.eth1_data_votes
* Add BeaconChain::validator_pubkey
* Revert "Add caching for state.eth1_data_votes"
This reverts commit cd73dcd6434fb8d8e6bf30c5356355598ea7b78e.
Co-authored-by: Grant Wuerker <gwuerker@gmail.com>
Co-authored-by: Michael Sproul <michael@sigmaprime.io>
Co-authored-by: Michael Sproul <micsproul@gmail.com>
Co-authored-by: pawan <pawandhananjay@gmail.com>
Co-authored-by: Paul Hauner <paul@paulhauner.com>
2020-03-17 06:24:44 +00:00
|
|
|
version = "0.2.0"
|
2019-12-09 11:39:44 +00:00
|
|
|
dependencies = [
|
2020-05-10 09:56:31 +00:00
|
|
|
"criterion",
|
2022-04-04 00:26:16 +00:00
|
|
|
"eth2_hashing",
|
Separate execution payloads in the DB (#3157)
## Proposed Changes
Reduce post-merge disk usage by not storing finalized execution payloads in Lighthouse's database.
:warning: **This is achieved in a backwards-incompatible way for networks that have already merged** :warning:. Kiln users and shadow fork enjoyers will be unable to downgrade after running the code from this PR. The upgrade migration may take several minutes to run, and can't be aborted after it begins.
The main changes are:
- New column in the database called `ExecPayload`, keyed by beacon block root.
- The `BeaconBlock` column now stores blinded blocks only.
- Lots of places that previously used full blocks now use blinded blocks, e.g. analytics APIs, block replay in the DB, etc.
- On finalization:
- `prune_abanonded_forks` deletes non-canonical payloads whilst deleting non-canonical blocks.
- `migrate_db` deletes finalized canonical payloads whilst deleting finalized states.
- Conversions between blinded and full blocks are implemented in a compositional way, duplicating some work from Sean's PR #3134.
- The execution layer has a new `get_payload_by_block_hash` method that reconstructs a payload using the EE's `eth_getBlockByHash` call.
- I've tested manually that it works on Kiln, using Geth and Nethermind.
- This isn't necessarily the most efficient method, and new engine APIs are being discussed to improve this: https://github.com/ethereum/execution-apis/pull/146.
- We're depending on the `ethers` master branch, due to lots of recent changes. We're also using a workaround for https://github.com/gakonst/ethers-rs/issues/1134.
- Payload reconstruction is used in the HTTP API via `BeaconChain::get_block`, which is now `async`. Due to the `async` fn, the `blocking_json` wrapper has been removed.
- Payload reconstruction is used in network RPC to serve blocks-by-{root,range} responses. Here the `async` adjustment is messier, although I think I've managed to come up with a reasonable compromise: the handlers take the `SendOnDrop` by value so that they can drop it on _task completion_ (after the `fn` returns). Still, this is introducing disk reads onto core executor threads, which may have a negative performance impact (thoughts appreciated).
## Additional Info
- [x] For performance it would be great to remove the cloning of full blocks when converting them to blinded blocks to write to disk. I'm going to experiment with a `put_block` API that takes the block by value, breaks it into a blinded block and a payload, stores the blinded block, and then re-assembles the full block for the caller.
- [x] We should measure the latency of blocks-by-root and blocks-by-range responses.
- [x] We should add integration tests that stress the payload reconstruction (basic tests done, issue for more extensive tests: https://github.com/sigp/lighthouse/issues/3159)
- [x] We should (manually) test the schema v9 migration from several prior versions, particularly as blocks have changed on disk and some migrations rely on being able to load blocks.
Co-authored-by: Paul Hauner <paul@paulhauner.com>
2022-05-12 00:42:17 +00:00
|
|
|
"ethereum-types 0.12.1",
|
2019-12-09 11:39:44 +00:00
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "syn"
|
2022-07-05 23:36:42 +00:00
|
|
|
version = "1.0.98"
|
2019-12-09 11:39:44 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2022-07-05 23:36:42 +00:00
|
|
|
checksum = "c50aef8a904de4c23c788f104b7dddc7d6f79c647c7c8ce4cc8f73eb0ca773dd"
|
2019-12-09 11:39:44 +00:00
|
|
|
dependencies = [
|
2020-05-17 11:16:48 +00:00
|
|
|
"proc-macro2",
|
|
|
|
"quote",
|
2022-06-18 23:59:43 +00:00
|
|
|
"unicode-ident",
|
2019-12-09 11:39:44 +00:00
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "synstructure"
|
2021-10-11 00:10:35 +00:00
|
|
|
version = "0.12.6"
|
2019-12-09 11:39:44 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2021-10-11 00:10:35 +00:00
|
|
|
checksum = "f36bdaa60a83aca3921b5259d5400cbf5e90fc51931376a9bd4a0eb79aa7210f"
|
2019-12-09 11:39:44 +00:00
|
|
|
dependencies = [
|
2020-05-17 11:16:48 +00:00
|
|
|
"proc-macro2",
|
|
|
|
"quote",
|
|
|
|
"syn",
|
|
|
|
"unicode-xid",
|
2019-12-09 11:39:44 +00:00
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "take_mut"
|
|
|
|
version = "0.2.2"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2020-05-10 09:56:31 +00:00
|
|
|
checksum = "f764005d11ee5f36500a149ace24e00e3da98b0158b3e2d53a7495660d3f4d60"
|
2019-12-09 11:39:44 +00:00
|
|
|
|
2020-10-05 08:22:19 +00:00
|
|
|
[[package]]
|
|
|
|
name = "tap"
|
2021-03-02 05:59:49 +00:00
|
|
|
version = "1.0.1"
|
2020-10-05 08:22:19 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2021-03-02 05:59:49 +00:00
|
|
|
checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369"
|
2020-10-05 08:22:19 +00:00
|
|
|
|
2021-06-30 04:56:22 +00:00
|
|
|
[[package]]
|
|
|
|
name = "target_check"
|
|
|
|
version = "0.1.0"
|
|
|
|
dependencies = [
|
|
|
|
"static_assertions",
|
|
|
|
]
|
|
|
|
|
2019-12-09 11:39:44 +00:00
|
|
|
[[package]]
|
|
|
|
name = "target_info"
|
|
|
|
version = "0.1.0"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2020-05-10 09:56:31 +00:00
|
|
|
checksum = "c63f48baada5c52e65a29eef93ab4f8982681b67f9e8d29c7b05abcfec2b9ffe"
|
2019-12-09 11:39:44 +00:00
|
|
|
|
2020-10-05 07:45:54 +00:00
|
|
|
[[package]]
|
|
|
|
name = "task_executor"
|
|
|
|
version = "0.1.0"
|
|
|
|
dependencies = [
|
|
|
|
"exit-future",
|
2021-07-09 03:20:24 +00:00
|
|
|
"futures",
|
2020-10-05 07:45:54 +00:00
|
|
|
"lazy_static",
|
|
|
|
"lighthouse_metrics",
|
|
|
|
"slog",
|
2022-05-16 08:35:59 +00:00
|
|
|
"sloggers",
|
2021-08-17 01:00:24 +00:00
|
|
|
"tokio",
|
2020-10-05 07:45:54 +00:00
|
|
|
]
|
|
|
|
|
2019-12-09 11:39:44 +00:00
|
|
|
[[package]]
|
|
|
|
name = "tempfile"
|
2022-01-11 01:35:56 +00:00
|
|
|
version = "3.3.0"
|
2019-12-09 11:39:44 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2022-01-11 01:35:56 +00:00
|
|
|
checksum = "5cdb1ef4eaeeaddc8fbd371e5017057064af0911902ef36b39801f67cc6d79e4"
|
2019-12-09 11:39:44 +00:00
|
|
|
dependencies = [
|
2021-11-18 05:08:42 +00:00
|
|
|
"cfg-if",
|
2022-01-11 01:35:56 +00:00
|
|
|
"fastrand",
|
2020-05-10 09:56:31 +00:00
|
|
|
"libc",
|
2021-07-05 00:54:17 +00:00
|
|
|
"redox_syscall",
|
2020-05-10 09:56:31 +00:00
|
|
|
"remove_dir_all",
|
2021-07-09 03:20:24 +00:00
|
|
|
"winapi",
|
2019-12-09 11:39:44 +00:00
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "term"
|
2021-03-02 05:59:49 +00:00
|
|
|
version = "0.7.0"
|
2019-12-09 11:39:44 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2021-03-02 05:59:49 +00:00
|
|
|
checksum = "c59df8ac95d96ff9bede18eb7300b0fda5e5d8d90960e76f8e14ae765eedbf1f"
|
2019-12-09 11:39:44 +00:00
|
|
|
dependencies = [
|
2021-03-02 05:59:49 +00:00
|
|
|
"dirs-next",
|
|
|
|
"rustversion",
|
2021-07-09 03:20:24 +00:00
|
|
|
"winapi",
|
2019-12-09 11:39:44 +00:00
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "termcolor"
|
2022-03-14 23:11:40 +00:00
|
|
|
version = "1.1.3"
|
2019-12-09 11:39:44 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2022-03-14 23:11:40 +00:00
|
|
|
checksum = "bab24d30b911b2376f3a13cc2cd443142f0c81dda04c118693e35b3835757755"
|
2019-12-09 11:39:44 +00:00
|
|
|
dependencies = [
|
2020-05-10 09:56:31 +00:00
|
|
|
"winapi-util",
|
2019-12-09 11:39:44 +00:00
|
|
|
]
|
|
|
|
|
2021-10-06 00:46:07 +00:00
|
|
|
[[package]]
|
|
|
|
name = "test-test_logger"
|
|
|
|
version = "0.1.0"
|
|
|
|
dependencies = [
|
|
|
|
"logging",
|
|
|
|
"slog",
|
|
|
|
]
|
|
|
|
|
2019-12-09 11:39:44 +00:00
|
|
|
[[package]]
|
|
|
|
name = "test_random_derive"
|
Initial work towards v0.2.0 (#924)
* Remove ping protocol
* Initial renaming of network services
* Correct rebasing relative to latest master
* Start updating types
* Adds HashMapDelay struct to utils
* Initial network restructure
* Network restructure. Adds new types for v0.2.0
* Removes build artefacts
* Shift validation to beacon chain
* Temporarily remove gossip validation
This is to be updated to match current optimisation efforts.
* Adds AggregateAndProof
* Begin rebuilding pubsub encoding/decoding
* Signature hacking
* Shift gossipsup decoding into eth2_libp2p
* Existing EF tests passing with fake_crypto
* Shifts block encoding/decoding into RPC
* Delete outdated API spec
* All release tests passing bar genesis state parsing
* Update and test YamlConfig
* Update to spec v0.10 compatible BLS
* Updates to BLS EF tests
* Add EF test for AggregateVerify
And delete unused hash2curve tests for uncompressed points
* Update EF tests to v0.10.1
* Use optional block root correctly in block proc
* Use genesis fork in deposit domain. All tests pass
* Fast aggregate verify test
* Update REST API docs
* Fix unused import
* Bump spec tags to v0.10.1
* Add `seconds_per_eth1_block` to chainspec
* Update to timestamp based eth1 voting scheme
* Return None from `get_votes_to_consider` if block cache is empty
* Handle overflows in `is_candidate_block`
* Revert to failing tests
* Fix eth1 data sets test
* Choose default vote according to spec
* Fix collect_valid_votes tests
* Fix `get_votes_to_consider` to choose all eligible blocks
* Uncomment winning_vote tests
* Add comments; remove unused code
* Reduce seconds_per_eth1_block for simulation
* Addressed review comments
* Add test for default vote case
* Fix logs
* Remove unused functions
* Meter default eth1 votes
* Fix comments
* Progress on attestation service
* Address review comments; remove unused dependency
* Initial work on removing libp2p lock
* Add LRU caches to store (rollup)
* Update attestation validation for DB changes (WIP)
* Initial version of should_forward_block
* Scaffold
* Progress on attestation validation
Also, consolidate prod+testing slot clocks so that they share much
of the same implementation and can both handle sub-slot time changes.
* Removes lock from libp2p service
* Completed network lock removal
* Finish(?) attestation processing
* Correct network termination future
* Add slot check to block check
* Correct fmt issues
* Remove Drop implementation for network service
* Add first attempt at attestation proc. re-write
* Add version 2 of attestation processing
* Minor fixes
* Add validator pubkey cache
* Make get_indexed_attestation take a committee
* Link signature processing into new attn verification
* First working version
* Ensure pubkey cache is updated
* Add more metrics, slight optimizations
* Clone committee cache during attestation processing
* Update shuffling cache during block processing
* Remove old commented-out code
* Fix shuffling cache insert bug
* Used indexed attestation in fork choice
* Restructure attn processing, add metrics
* Add more detailed metrics
* Tidy, fix failing tests
* Fix failing tests, tidy
* Address reviewers suggestions
* Disable/delete two outdated tests
* Modification of validator for subscriptions
* Add slot signing to validator client
* Further progress on validation subscription
* Adds necessary validator subscription functionality
* Add new Pubkeys struct to signature_sets
* Refactor with functional approach
* Update beacon chain
* Clean up validator <-> beacon node http types
* Add aggregator status to ValidatorDuty
* Impl Clone for manual slot clock
* Fix minor errors
* Further progress validator client subscription
* Initial subscription and aggregation handling
* Remove decompressed member from pubkey bytes
* Progress to modifying val client for attestation aggregation
* First draft of validator client upgrade for aggregate attestations
* Add hashmap for indices lookup
* Add state cache, remove store cache
* Only build the head committee cache
* Removes lock on a network channel
* Partially implement beacon node subscription http api
* Correct compilation issues
* Change `get_attesting_indices` to use Vec
* Fix failing test
* Partial implementation of timer
* Adds timer, removes exit_future, http api to op pool
* Partial multiple aggregate attestation handling
* Permits bulk messages accross gossipsub network channel
* Correct compile issues
* Improve gosispsub messaging and correct rest api helpers
* Added global gossipsub subscriptions
* Update validator subscriptions data structs
* Tidy
* Re-structure validator subscriptions
* Initial handling of subscriptions
* Re-structure network service
* Add pubkey cache persistence file
* Add more comments
* Integrate persistence file into builder
* Add pubkey cache tests
* Add HashSetDelay and introduce into attestation service
* Handles validator subscriptions
* Add data_dir to beacon chain builder
* Remove Option in pubkey cache persistence file
* Ensure consistency between datadir/data_dir
* Fix failing network test
* Peer subnet discovery gets queued for future subscriptions
* Reorganise attestation service functions
* Initial wiring of attestation service
* First draft of attestation service timing logic
* Correct minor typos
* Tidy
* Fix todos
* Improve tests
* Add PeerInfo to connected peers mapping
* Fix compile error
* Fix compile error from merge
* Split up block processing metrics
* Tidy
* Refactor get_pubkey_from_state
* Remove commented-out code
* Rename state_cache -> checkpoint_cache
* Rename Checkpoint -> Snapshot
* Tidy, add comments
* Tidy up find_head function
* Change some checkpoint -> snapshot
* Add tests
* Expose max_len
* Remove dead code
* Tidy
* Fix bug
* Add sync-speed metric
* Add first attempt at VerifiableBlock
* Start integrating into beacon chain
* Integrate VerifiableBlock
* Rename VerifableBlock -> PartialBlockVerification
* Add start of typed methods
* Add progress
* Add further progress
* Rename structs
* Add full block verification to block_processing.rs
* Further beacon chain integration
* Update checks for gossip
* Add todo
* Start adding segement verification
* Add passing chain segement test
* Initial integration with batch sync
* Minor changes
* Tidy, add more error checking
* Start adding chain_segment tests
* Finish invalid signature tests
* Include single and gossip verified blocks in tests
* Add gossip verification tests
* Start adding docs
* Finish adding comments to block_processing.rs
* Rename block_processing.rs -> block_verification
* Start removing old block processing code
* Fixes beacon_chain compilation
* Fix project-wide compile errors
* Remove old code
* Correct code to pass all tests
* Fix bug with beacon proposer index
* Fix shim for BlockProcessingError
* Only process one epoch at a time
* Fix loop in chain segment processing
* Correct tests from master merge
* Add caching for state.eth1_data_votes
* Add BeaconChain::validator_pubkey
* Revert "Add caching for state.eth1_data_votes"
This reverts commit cd73dcd6434fb8d8e6bf30c5356355598ea7b78e.
Co-authored-by: Grant Wuerker <gwuerker@gmail.com>
Co-authored-by: Michael Sproul <michael@sigmaprime.io>
Co-authored-by: Michael Sproul <micsproul@gmail.com>
Co-authored-by: pawan <pawandhananjay@gmail.com>
Co-authored-by: Paul Hauner <paul@paulhauner.com>
2020-03-17 06:24:44 +00:00
|
|
|
version = "0.2.0"
|
2019-12-09 11:39:44 +00:00
|
|
|
dependencies = [
|
2020-05-17 11:16:48 +00:00
|
|
|
"quote",
|
|
|
|
"syn",
|
2019-12-09 11:39:44 +00:00
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "textwrap"
|
|
|
|
version = "0.11.0"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2020-05-10 09:56:31 +00:00
|
|
|
checksum = "d326610f408c7a4eb6f51c37c330e496b08506c9457c9d34287ecc38809fb060"
|
2019-12-09 11:39:44 +00:00
|
|
|
dependencies = [
|
2020-05-10 09:56:31 +00:00
|
|
|
"unicode-width",
|
2019-12-09 11:39:44 +00:00
|
|
|
]
|
|
|
|
|
2020-05-17 11:16:48 +00:00
|
|
|
[[package]]
|
|
|
|
name = "thiserror"
|
2022-06-18 23:59:43 +00:00
|
|
|
version = "1.0.31"
|
2020-05-17 11:16:48 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2022-06-18 23:59:43 +00:00
|
|
|
checksum = "bd829fe32373d27f76265620b5309d0340cb8550f523c1dda251d6298069069a"
|
2020-05-17 11:16:48 +00:00
|
|
|
dependencies = [
|
|
|
|
"thiserror-impl",
|
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "thiserror-impl"
|
2022-06-18 23:59:43 +00:00
|
|
|
version = "1.0.31"
|
2020-05-17 11:16:48 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2022-06-18 23:59:43 +00:00
|
|
|
checksum = "0396bc89e626244658bef819e22d0cc459e795a5ebe878e6ec336d1674a8d79a"
|
2020-05-17 11:16:48 +00:00
|
|
|
dependencies = [
|
|
|
|
"proc-macro2",
|
|
|
|
"quote",
|
|
|
|
"syn",
|
|
|
|
]
|
|
|
|
|
2019-12-09 11:39:44 +00:00
|
|
|
[[package]]
|
|
|
|
name = "thread_local"
|
2022-01-24 22:33:04 +00:00
|
|
|
version = "1.1.4"
|
2019-12-09 11:39:44 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2022-01-24 22:33:04 +00:00
|
|
|
checksum = "5516c27b78311c50bf42c071425c560ac799b11c30b31f87e3081965fe5e0180"
|
2019-12-09 11:39:44 +00:00
|
|
|
dependencies = [
|
2021-03-02 05:59:49 +00:00
|
|
|
"once_cell",
|
2019-12-09 11:39:44 +00:00
|
|
|
]
|
|
|
|
|
2020-07-25 02:03:18 +00:00
|
|
|
[[package]]
|
|
|
|
name = "threadpool"
|
|
|
|
version = "1.8.1"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "d050e60b33d41c19108b32cea32164033a9013fe3b46cbd4457559bfbf77afaa"
|
|
|
|
dependencies = [
|
|
|
|
"num_cpus",
|
|
|
|
]
|
|
|
|
|
2020-01-15 03:48:09 +00:00
|
|
|
[[package]]
|
Initial work towards v0.2.0 (#924)
* Remove ping protocol
* Initial renaming of network services
* Correct rebasing relative to latest master
* Start updating types
* Adds HashMapDelay struct to utils
* Initial network restructure
* Network restructure. Adds new types for v0.2.0
* Removes build artefacts
* Shift validation to beacon chain
* Temporarily remove gossip validation
This is to be updated to match current optimisation efforts.
* Adds AggregateAndProof
* Begin rebuilding pubsub encoding/decoding
* Signature hacking
* Shift gossipsup decoding into eth2_libp2p
* Existing EF tests passing with fake_crypto
* Shifts block encoding/decoding into RPC
* Delete outdated API spec
* All release tests passing bar genesis state parsing
* Update and test YamlConfig
* Update to spec v0.10 compatible BLS
* Updates to BLS EF tests
* Add EF test for AggregateVerify
And delete unused hash2curve tests for uncompressed points
* Update EF tests to v0.10.1
* Use optional block root correctly in block proc
* Use genesis fork in deposit domain. All tests pass
* Fast aggregate verify test
* Update REST API docs
* Fix unused import
* Bump spec tags to v0.10.1
* Add `seconds_per_eth1_block` to chainspec
* Update to timestamp based eth1 voting scheme
* Return None from `get_votes_to_consider` if block cache is empty
* Handle overflows in `is_candidate_block`
* Revert to failing tests
* Fix eth1 data sets test
* Choose default vote according to spec
* Fix collect_valid_votes tests
* Fix `get_votes_to_consider` to choose all eligible blocks
* Uncomment winning_vote tests
* Add comments; remove unused code
* Reduce seconds_per_eth1_block for simulation
* Addressed review comments
* Add test for default vote case
* Fix logs
* Remove unused functions
* Meter default eth1 votes
* Fix comments
* Progress on attestation service
* Address review comments; remove unused dependency
* Initial work on removing libp2p lock
* Add LRU caches to store (rollup)
* Update attestation validation for DB changes (WIP)
* Initial version of should_forward_block
* Scaffold
* Progress on attestation validation
Also, consolidate prod+testing slot clocks so that they share much
of the same implementation and can both handle sub-slot time changes.
* Removes lock from libp2p service
* Completed network lock removal
* Finish(?) attestation processing
* Correct network termination future
* Add slot check to block check
* Correct fmt issues
* Remove Drop implementation for network service
* Add first attempt at attestation proc. re-write
* Add version 2 of attestation processing
* Minor fixes
* Add validator pubkey cache
* Make get_indexed_attestation take a committee
* Link signature processing into new attn verification
* First working version
* Ensure pubkey cache is updated
* Add more metrics, slight optimizations
* Clone committee cache during attestation processing
* Update shuffling cache during block processing
* Remove old commented-out code
* Fix shuffling cache insert bug
* Used indexed attestation in fork choice
* Restructure attn processing, add metrics
* Add more detailed metrics
* Tidy, fix failing tests
* Fix failing tests, tidy
* Address reviewers suggestions
* Disable/delete two outdated tests
* Modification of validator for subscriptions
* Add slot signing to validator client
* Further progress on validation subscription
* Adds necessary validator subscription functionality
* Add new Pubkeys struct to signature_sets
* Refactor with functional approach
* Update beacon chain
* Clean up validator <-> beacon node http types
* Add aggregator status to ValidatorDuty
* Impl Clone for manual slot clock
* Fix minor errors
* Further progress validator client subscription
* Initial subscription and aggregation handling
* Remove decompressed member from pubkey bytes
* Progress to modifying val client for attestation aggregation
* First draft of validator client upgrade for aggregate attestations
* Add hashmap for indices lookup
* Add state cache, remove store cache
* Only build the head committee cache
* Removes lock on a network channel
* Partially implement beacon node subscription http api
* Correct compilation issues
* Change `get_attesting_indices` to use Vec
* Fix failing test
* Partial implementation of timer
* Adds timer, removes exit_future, http api to op pool
* Partial multiple aggregate attestation handling
* Permits bulk messages accross gossipsub network channel
* Correct compile issues
* Improve gosispsub messaging and correct rest api helpers
* Added global gossipsub subscriptions
* Update validator subscriptions data structs
* Tidy
* Re-structure validator subscriptions
* Initial handling of subscriptions
* Re-structure network service
* Add pubkey cache persistence file
* Add more comments
* Integrate persistence file into builder
* Add pubkey cache tests
* Add HashSetDelay and introduce into attestation service
* Handles validator subscriptions
* Add data_dir to beacon chain builder
* Remove Option in pubkey cache persistence file
* Ensure consistency between datadir/data_dir
* Fix failing network test
* Peer subnet discovery gets queued for future subscriptions
* Reorganise attestation service functions
* Initial wiring of attestation service
* First draft of attestation service timing logic
* Correct minor typos
* Tidy
* Fix todos
* Improve tests
* Add PeerInfo to connected peers mapping
* Fix compile error
* Fix compile error from merge
* Split up block processing metrics
* Tidy
* Refactor get_pubkey_from_state
* Remove commented-out code
* Rename state_cache -> checkpoint_cache
* Rename Checkpoint -> Snapshot
* Tidy, add comments
* Tidy up find_head function
* Change some checkpoint -> snapshot
* Add tests
* Expose max_len
* Remove dead code
* Tidy
* Fix bug
* Add sync-speed metric
* Add first attempt at VerifiableBlock
* Start integrating into beacon chain
* Integrate VerifiableBlock
* Rename VerifableBlock -> PartialBlockVerification
* Add start of typed methods
* Add progress
* Add further progress
* Rename structs
* Add full block verification to block_processing.rs
* Further beacon chain integration
* Update checks for gossip
* Add todo
* Start adding segement verification
* Add passing chain segement test
* Initial integration with batch sync
* Minor changes
* Tidy, add more error checking
* Start adding chain_segment tests
* Finish invalid signature tests
* Include single and gossip verified blocks in tests
* Add gossip verification tests
* Start adding docs
* Finish adding comments to block_processing.rs
* Rename block_processing.rs -> block_verification
* Start removing old block processing code
* Fixes beacon_chain compilation
* Fix project-wide compile errors
* Remove old code
* Correct code to pass all tests
* Fix bug with beacon proposer index
* Fix shim for BlockProcessingError
* Only process one epoch at a time
* Fix loop in chain segment processing
* Correct tests from master merge
* Add caching for state.eth1_data_votes
* Add BeaconChain::validator_pubkey
* Revert "Add caching for state.eth1_data_votes"
This reverts commit cd73dcd6434fb8d8e6bf30c5356355598ea7b78e.
Co-authored-by: Grant Wuerker <gwuerker@gmail.com>
Co-authored-by: Michael Sproul <michael@sigmaprime.io>
Co-authored-by: Michael Sproul <micsproul@gmail.com>
Co-authored-by: pawan <pawandhananjay@gmail.com>
Co-authored-by: Paul Hauner <paul@paulhauner.com>
2020-03-17 06:24:44 +00:00
|
|
|
name = "time"
|
2022-06-18 23:59:43 +00:00
|
|
|
version = "0.1.44"
|
2020-01-15 03:48:09 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2022-06-18 23:59:43 +00:00
|
|
|
checksum = "6db9e6914ab8b1ae1c260a4ae7a49b6c5611b40328a735b21862567685e73255"
|
2020-01-15 03:48:09 +00:00
|
|
|
dependencies = [
|
2020-05-10 09:56:31 +00:00
|
|
|
"libc",
|
2022-06-18 23:59:43 +00:00
|
|
|
"wasi 0.10.0+wasi-snapshot-preview1",
|
2021-07-09 03:20:24 +00:00
|
|
|
"winapi",
|
2020-01-15 03:48:09 +00:00
|
|
|
]
|
|
|
|
|
2020-05-26 03:25:52 +00:00
|
|
|
[[package]]
|
|
|
|
name = "time"
|
2022-07-05 23:36:42 +00:00
|
|
|
version = "0.3.11"
|
2020-05-26 03:25:52 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2022-07-05 23:36:42 +00:00
|
|
|
checksum = "72c91f41dcb2f096c05f0873d667dceec1087ce5bcf984ec8ffb19acddbb3217"
|
2020-05-26 03:25:52 +00:00
|
|
|
dependencies = [
|
2022-06-18 23:59:43 +00:00
|
|
|
"itoa 1.0.2",
|
2020-05-26 03:25:52 +00:00
|
|
|
"libc",
|
2022-02-01 23:53:53 +00:00
|
|
|
"num_threads",
|
2022-03-02 05:09:52 +00:00
|
|
|
"time-macros",
|
2020-05-26 03:25:52 +00:00
|
|
|
]
|
|
|
|
|
2022-03-02 05:09:52 +00:00
|
|
|
[[package]]
|
|
|
|
name = "time-macros"
|
2022-03-31 07:52:23 +00:00
|
|
|
version = "0.2.4"
|
2022-03-02 05:09:52 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2022-03-31 07:52:23 +00:00
|
|
|
checksum = "42657b1a6f4d817cda8e7a0ace261fe0cc946cf3a80314390b22cc61ae080792"
|
2022-03-02 05:09:52 +00:00
|
|
|
|
2019-12-09 11:39:44 +00:00
|
|
|
[[package]]
|
Initial work towards v0.2.0 (#924)
* Remove ping protocol
* Initial renaming of network services
* Correct rebasing relative to latest master
* Start updating types
* Adds HashMapDelay struct to utils
* Initial network restructure
* Network restructure. Adds new types for v0.2.0
* Removes build artefacts
* Shift validation to beacon chain
* Temporarily remove gossip validation
This is to be updated to match current optimisation efforts.
* Adds AggregateAndProof
* Begin rebuilding pubsub encoding/decoding
* Signature hacking
* Shift gossipsup decoding into eth2_libp2p
* Existing EF tests passing with fake_crypto
* Shifts block encoding/decoding into RPC
* Delete outdated API spec
* All release tests passing bar genesis state parsing
* Update and test YamlConfig
* Update to spec v0.10 compatible BLS
* Updates to BLS EF tests
* Add EF test for AggregateVerify
And delete unused hash2curve tests for uncompressed points
* Update EF tests to v0.10.1
* Use optional block root correctly in block proc
* Use genesis fork in deposit domain. All tests pass
* Fast aggregate verify test
* Update REST API docs
* Fix unused import
* Bump spec tags to v0.10.1
* Add `seconds_per_eth1_block` to chainspec
* Update to timestamp based eth1 voting scheme
* Return None from `get_votes_to_consider` if block cache is empty
* Handle overflows in `is_candidate_block`
* Revert to failing tests
* Fix eth1 data sets test
* Choose default vote according to spec
* Fix collect_valid_votes tests
* Fix `get_votes_to_consider` to choose all eligible blocks
* Uncomment winning_vote tests
* Add comments; remove unused code
* Reduce seconds_per_eth1_block for simulation
* Addressed review comments
* Add test for default vote case
* Fix logs
* Remove unused functions
* Meter default eth1 votes
* Fix comments
* Progress on attestation service
* Address review comments; remove unused dependency
* Initial work on removing libp2p lock
* Add LRU caches to store (rollup)
* Update attestation validation for DB changes (WIP)
* Initial version of should_forward_block
* Scaffold
* Progress on attestation validation
Also, consolidate prod+testing slot clocks so that they share much
of the same implementation and can both handle sub-slot time changes.
* Removes lock from libp2p service
* Completed network lock removal
* Finish(?) attestation processing
* Correct network termination future
* Add slot check to block check
* Correct fmt issues
* Remove Drop implementation for network service
* Add first attempt at attestation proc. re-write
* Add version 2 of attestation processing
* Minor fixes
* Add validator pubkey cache
* Make get_indexed_attestation take a committee
* Link signature processing into new attn verification
* First working version
* Ensure pubkey cache is updated
* Add more metrics, slight optimizations
* Clone committee cache during attestation processing
* Update shuffling cache during block processing
* Remove old commented-out code
* Fix shuffling cache insert bug
* Used indexed attestation in fork choice
* Restructure attn processing, add metrics
* Add more detailed metrics
* Tidy, fix failing tests
* Fix failing tests, tidy
* Address reviewers suggestions
* Disable/delete two outdated tests
* Modification of validator for subscriptions
* Add slot signing to validator client
* Further progress on validation subscription
* Adds necessary validator subscription functionality
* Add new Pubkeys struct to signature_sets
* Refactor with functional approach
* Update beacon chain
* Clean up validator <-> beacon node http types
* Add aggregator status to ValidatorDuty
* Impl Clone for manual slot clock
* Fix minor errors
* Further progress validator client subscription
* Initial subscription and aggregation handling
* Remove decompressed member from pubkey bytes
* Progress to modifying val client for attestation aggregation
* First draft of validator client upgrade for aggregate attestations
* Add hashmap for indices lookup
* Add state cache, remove store cache
* Only build the head committee cache
* Removes lock on a network channel
* Partially implement beacon node subscription http api
* Correct compilation issues
* Change `get_attesting_indices` to use Vec
* Fix failing test
* Partial implementation of timer
* Adds timer, removes exit_future, http api to op pool
* Partial multiple aggregate attestation handling
* Permits bulk messages accross gossipsub network channel
* Correct compile issues
* Improve gosispsub messaging and correct rest api helpers
* Added global gossipsub subscriptions
* Update validator subscriptions data structs
* Tidy
* Re-structure validator subscriptions
* Initial handling of subscriptions
* Re-structure network service
* Add pubkey cache persistence file
* Add more comments
* Integrate persistence file into builder
* Add pubkey cache tests
* Add HashSetDelay and introduce into attestation service
* Handles validator subscriptions
* Add data_dir to beacon chain builder
* Remove Option in pubkey cache persistence file
* Ensure consistency between datadir/data_dir
* Fix failing network test
* Peer subnet discovery gets queued for future subscriptions
* Reorganise attestation service functions
* Initial wiring of attestation service
* First draft of attestation service timing logic
* Correct minor typos
* Tidy
* Fix todos
* Improve tests
* Add PeerInfo to connected peers mapping
* Fix compile error
* Fix compile error from merge
* Split up block processing metrics
* Tidy
* Refactor get_pubkey_from_state
* Remove commented-out code
* Rename state_cache -> checkpoint_cache
* Rename Checkpoint -> Snapshot
* Tidy, add comments
* Tidy up find_head function
* Change some checkpoint -> snapshot
* Add tests
* Expose max_len
* Remove dead code
* Tidy
* Fix bug
* Add sync-speed metric
* Add first attempt at VerifiableBlock
* Start integrating into beacon chain
* Integrate VerifiableBlock
* Rename VerifableBlock -> PartialBlockVerification
* Add start of typed methods
* Add progress
* Add further progress
* Rename structs
* Add full block verification to block_processing.rs
* Further beacon chain integration
* Update checks for gossip
* Add todo
* Start adding segement verification
* Add passing chain segement test
* Initial integration with batch sync
* Minor changes
* Tidy, add more error checking
* Start adding chain_segment tests
* Finish invalid signature tests
* Include single and gossip verified blocks in tests
* Add gossip verification tests
* Start adding docs
* Finish adding comments to block_processing.rs
* Rename block_processing.rs -> block_verification
* Start removing old block processing code
* Fixes beacon_chain compilation
* Fix project-wide compile errors
* Remove old code
* Correct code to pass all tests
* Fix bug with beacon proposer index
* Fix shim for BlockProcessingError
* Only process one epoch at a time
* Fix loop in chain segment processing
* Correct tests from master merge
* Add caching for state.eth1_data_votes
* Add BeaconChain::validator_pubkey
* Revert "Add caching for state.eth1_data_votes"
This reverts commit cd73dcd6434fb8d8e6bf30c5356355598ea7b78e.
Co-authored-by: Grant Wuerker <gwuerker@gmail.com>
Co-authored-by: Michael Sproul <michael@sigmaprime.io>
Co-authored-by: Michael Sproul <micsproul@gmail.com>
Co-authored-by: pawan <pawandhananjay@gmail.com>
Co-authored-by: Paul Hauner <paul@paulhauner.com>
2020-03-17 06:24:44 +00:00
|
|
|
name = "timer"
|
2020-08-06 03:43:05 +00:00
|
|
|
version = "0.2.0"
|
2019-12-09 11:39:44 +00:00
|
|
|
dependencies = [
|
2020-05-10 09:56:31 +00:00
|
|
|
"beacon_chain",
|
|
|
|
"slog",
|
|
|
|
"slot_clock",
|
2020-10-05 07:45:54 +00:00
|
|
|
"task_executor",
|
2021-08-17 01:00:24 +00:00
|
|
|
"tokio",
|
2019-12-09 11:39:44 +00:00
|
|
|
]
|
|
|
|
|
EIP-2386 (draft): Eth2 wallet (#1117)
* Add test to understand flow of key storage
* First commit
* Committing to save trait stuff
* Working naive design
* Add keystore struct
* Move keystore files into their own module
* Add serde (de)serialize_with magic
* Add keystore test
* Fix tests
* Add comments and minor fixes
* Pass optional params to `to_keystore` function
* Add `path` field to keystore
* Add function to read Keystore from file
* Add test vectors and fix Version serialization
* Checksum params is empty object
* Add public key to Keystore
* Add function for saving keystore into file
* Deleted account_manager main.rs
* Move keystore module to validator_client
* Add save_keystore method to validator_directory
* Add load_keystore function. Minor refactorings
* Fixed dependencies
* Address some review comments
* Add Password newtype; derive Zeroize
* Fix test
* Move keystore into own crate
* Remove padding
* Add error enum, zeroize more things
* Fix comment
* Add keystore builder
* Remove keystore stuff from val client
* Add more tests, comments
* Add more comments, test vectors
* Progress on improving JSON validation
* More JSON verification
* Start moving JSON into own mod
* Remove old code
* Add more tests, reader/writers
* Tidy
* Move keystore into own file
* Move more logic into keystore file
* Tidy
* Tidy
* Allow for odd-character hex
* Add more json missing field checks
* Use scrypt by default
* Tidy, address comments
* Test path and uuid in vectors
* Fix comment
* Add checks for kdf params
* Enforce empty kdf message
* Expose json_keystore mod
* First commits on path derivation
* Progress with implementation
* More progress
* Passing intermediate test vectors
* Tidy, add comments
* Add DerivedKey structs
* Move key derivation into own crate
* Add zeroize structs
* Return error for empty seed
* Add tests
* Tidy
* First commits on path derivation
* Progress with implementation
* Move key derivation into own crate
* Start defining JSON wallet
* Add progress
* Split out encrypt/decrypt
* First commits on path derivation
* Progress with implementation
* More progress
* Passing intermediate test vectors
* Tidy, add comments
* Add DerivedKey structs
* Move key derivation into own crate
* Add zeroize structs
* Return error for empty seed
* Add tests
* Tidy
* Add progress
* Replace some password usage with slice
* First commits on path derivation
* Progress with implementation
* More progress
* Passing intermediate test vectors
* Tidy, add comments
* Add DerivedKey structs
* Move key derivation into own crate
* Add zeroize structs
* Return error for empty seed
* Add tests
* Tidy
* Add progress
* Expose PlainText struct
* First commits on path derivation
* Progress with implementation
* More progress
* Passing intermediate test vectors
* Tidy, add comments
* Add DerivedKey structs
* Move key derivation into own crate
* Add zeroize structs
* Return error for empty seed
* Add tests
* Tidy
* Add builder
* Expose consts, remove Password
* Minor progress
* Expose SALT_SIZE
* First compiling version
* Add test vectors
* Move dbg assert statement
* Add mnemonic, tidy
* Tidy
* Add testing
* Fix broken test
* Address review comments
Co-authored-by: pawan <pawandhananjay@gmail.com>
2020-05-11 22:54:59 +00:00
|
|
|
[[package]]
|
|
|
|
name = "tiny-bip39"
|
2021-10-01 01:23:55 +00:00
|
|
|
version = "0.8.2"
|
2020-11-12 00:46:33 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2021-10-01 01:23:55 +00:00
|
|
|
checksum = "ffc59cb9dfc85bb312c3a78fd6aa8a8582e310b0fa885d5bb877f6dcc601839d"
|
EIP-2386 (draft): Eth2 wallet (#1117)
* Add test to understand flow of key storage
* First commit
* Committing to save trait stuff
* Working naive design
* Add keystore struct
* Move keystore files into their own module
* Add serde (de)serialize_with magic
* Add keystore test
* Fix tests
* Add comments and minor fixes
* Pass optional params to `to_keystore` function
* Add `path` field to keystore
* Add function to read Keystore from file
* Add test vectors and fix Version serialization
* Checksum params is empty object
* Add public key to Keystore
* Add function for saving keystore into file
* Deleted account_manager main.rs
* Move keystore module to validator_client
* Add save_keystore method to validator_directory
* Add load_keystore function. Minor refactorings
* Fixed dependencies
* Address some review comments
* Add Password newtype; derive Zeroize
* Fix test
* Move keystore into own crate
* Remove padding
* Add error enum, zeroize more things
* Fix comment
* Add keystore builder
* Remove keystore stuff from val client
* Add more tests, comments
* Add more comments, test vectors
* Progress on improving JSON validation
* More JSON verification
* Start moving JSON into own mod
* Remove old code
* Add more tests, reader/writers
* Tidy
* Move keystore into own file
* Move more logic into keystore file
* Tidy
* Tidy
* Allow for odd-character hex
* Add more json missing field checks
* Use scrypt by default
* Tidy, address comments
* Test path and uuid in vectors
* Fix comment
* Add checks for kdf params
* Enforce empty kdf message
* Expose json_keystore mod
* First commits on path derivation
* Progress with implementation
* More progress
* Passing intermediate test vectors
* Tidy, add comments
* Add DerivedKey structs
* Move key derivation into own crate
* Add zeroize structs
* Return error for empty seed
* Add tests
* Tidy
* First commits on path derivation
* Progress with implementation
* Move key derivation into own crate
* Start defining JSON wallet
* Add progress
* Split out encrypt/decrypt
* First commits on path derivation
* Progress with implementation
* More progress
* Passing intermediate test vectors
* Tidy, add comments
* Add DerivedKey structs
* Move key derivation into own crate
* Add zeroize structs
* Return error for empty seed
* Add tests
* Tidy
* Add progress
* Replace some password usage with slice
* First commits on path derivation
* Progress with implementation
* More progress
* Passing intermediate test vectors
* Tidy, add comments
* Add DerivedKey structs
* Move key derivation into own crate
* Add zeroize structs
* Return error for empty seed
* Add tests
* Tidy
* Add progress
* Expose PlainText struct
* First commits on path derivation
* Progress with implementation
* More progress
* Passing intermediate test vectors
* Tidy, add comments
* Add DerivedKey structs
* Move key derivation into own crate
* Add zeroize structs
* Return error for empty seed
* Add tests
* Tidy
* Add builder
* Expose consts, remove Password
* Minor progress
* Expose SALT_SIZE
* First compiling version
* Add test vectors
* Move dbg assert statement
* Add mnemonic, tidy
* Tidy
* Add testing
* Fix broken test
* Address review comments
Co-authored-by: pawan <pawandhananjay@gmail.com>
2020-05-11 22:54:59 +00:00
|
|
|
dependencies = [
|
2020-11-12 00:46:33 +00:00
|
|
|
"anyhow",
|
|
|
|
"hmac 0.8.1",
|
EIP-2386 (draft): Eth2 wallet (#1117)
* Add test to understand flow of key storage
* First commit
* Committing to save trait stuff
* Working naive design
* Add keystore struct
* Move keystore files into their own module
* Add serde (de)serialize_with magic
* Add keystore test
* Fix tests
* Add comments and minor fixes
* Pass optional params to `to_keystore` function
* Add `path` field to keystore
* Add function to read Keystore from file
* Add test vectors and fix Version serialization
* Checksum params is empty object
* Add public key to Keystore
* Add function for saving keystore into file
* Deleted account_manager main.rs
* Move keystore module to validator_client
* Add save_keystore method to validator_directory
* Add load_keystore function. Minor refactorings
* Fixed dependencies
* Address some review comments
* Add Password newtype; derive Zeroize
* Fix test
* Move keystore into own crate
* Remove padding
* Add error enum, zeroize more things
* Fix comment
* Add keystore builder
* Remove keystore stuff from val client
* Add more tests, comments
* Add more comments, test vectors
* Progress on improving JSON validation
* More JSON verification
* Start moving JSON into own mod
* Remove old code
* Add more tests, reader/writers
* Tidy
* Move keystore into own file
* Move more logic into keystore file
* Tidy
* Tidy
* Allow for odd-character hex
* Add more json missing field checks
* Use scrypt by default
* Tidy, address comments
* Test path and uuid in vectors
* Fix comment
* Add checks for kdf params
* Enforce empty kdf message
* Expose json_keystore mod
* First commits on path derivation
* Progress with implementation
* More progress
* Passing intermediate test vectors
* Tidy, add comments
* Add DerivedKey structs
* Move key derivation into own crate
* Add zeroize structs
* Return error for empty seed
* Add tests
* Tidy
* First commits on path derivation
* Progress with implementation
* Move key derivation into own crate
* Start defining JSON wallet
* Add progress
* Split out encrypt/decrypt
* First commits on path derivation
* Progress with implementation
* More progress
* Passing intermediate test vectors
* Tidy, add comments
* Add DerivedKey structs
* Move key derivation into own crate
* Add zeroize structs
* Return error for empty seed
* Add tests
* Tidy
* Add progress
* Replace some password usage with slice
* First commits on path derivation
* Progress with implementation
* More progress
* Passing intermediate test vectors
* Tidy, add comments
* Add DerivedKey structs
* Move key derivation into own crate
* Add zeroize structs
* Return error for empty seed
* Add tests
* Tidy
* Add progress
* Expose PlainText struct
* First commits on path derivation
* Progress with implementation
* More progress
* Passing intermediate test vectors
* Tidy, add comments
* Add DerivedKey structs
* Move key derivation into own crate
* Add zeroize structs
* Return error for empty seed
* Add tests
* Tidy
* Add builder
* Expose consts, remove Password
* Minor progress
* Expose SALT_SIZE
* First compiling version
* Add test vectors
* Move dbg assert statement
* Add mnemonic, tidy
* Tidy
* Add testing
* Fix broken test
* Address review comments
Co-authored-by: pawan <pawandhananjay@gmail.com>
2020-05-11 22:54:59 +00:00
|
|
|
"once_cell",
|
2020-11-12 00:46:33 +00:00
|
|
|
"pbkdf2 0.4.0",
|
EIP-2386 (draft): Eth2 wallet (#1117)
* Add test to understand flow of key storage
* First commit
* Committing to save trait stuff
* Working naive design
* Add keystore struct
* Move keystore files into their own module
* Add serde (de)serialize_with magic
* Add keystore test
* Fix tests
* Add comments and minor fixes
* Pass optional params to `to_keystore` function
* Add `path` field to keystore
* Add function to read Keystore from file
* Add test vectors and fix Version serialization
* Checksum params is empty object
* Add public key to Keystore
* Add function for saving keystore into file
* Deleted account_manager main.rs
* Move keystore module to validator_client
* Add save_keystore method to validator_directory
* Add load_keystore function. Minor refactorings
* Fixed dependencies
* Address some review comments
* Add Password newtype; derive Zeroize
* Fix test
* Move keystore into own crate
* Remove padding
* Add error enum, zeroize more things
* Fix comment
* Add keystore builder
* Remove keystore stuff from val client
* Add more tests, comments
* Add more comments, test vectors
* Progress on improving JSON validation
* More JSON verification
* Start moving JSON into own mod
* Remove old code
* Add more tests, reader/writers
* Tidy
* Move keystore into own file
* Move more logic into keystore file
* Tidy
* Tidy
* Allow for odd-character hex
* Add more json missing field checks
* Use scrypt by default
* Tidy, address comments
* Test path and uuid in vectors
* Fix comment
* Add checks for kdf params
* Enforce empty kdf message
* Expose json_keystore mod
* First commits on path derivation
* Progress with implementation
* More progress
* Passing intermediate test vectors
* Tidy, add comments
* Add DerivedKey structs
* Move key derivation into own crate
* Add zeroize structs
* Return error for empty seed
* Add tests
* Tidy
* First commits on path derivation
* Progress with implementation
* Move key derivation into own crate
* Start defining JSON wallet
* Add progress
* Split out encrypt/decrypt
* First commits on path derivation
* Progress with implementation
* More progress
* Passing intermediate test vectors
* Tidy, add comments
* Add DerivedKey structs
* Move key derivation into own crate
* Add zeroize structs
* Return error for empty seed
* Add tests
* Tidy
* Add progress
* Replace some password usage with slice
* First commits on path derivation
* Progress with implementation
* More progress
* Passing intermediate test vectors
* Tidy, add comments
* Add DerivedKey structs
* Move key derivation into own crate
* Add zeroize structs
* Return error for empty seed
* Add tests
* Tidy
* Add progress
* Expose PlainText struct
* First commits on path derivation
* Progress with implementation
* More progress
* Passing intermediate test vectors
* Tidy, add comments
* Add DerivedKey structs
* Move key derivation into own crate
* Add zeroize structs
* Return error for empty seed
* Add tests
* Tidy
* Add builder
* Expose consts, remove Password
* Minor progress
* Expose SALT_SIZE
* First compiling version
* Add test vectors
* Move dbg assert statement
* Add mnemonic, tidy
* Tidy
* Add testing
* Fix broken test
* Address review comments
Co-authored-by: pawan <pawandhananjay@gmail.com>
2020-05-11 22:54:59 +00:00
|
|
|
"rand 0.7.3",
|
|
|
|
"rustc-hash",
|
2022-01-11 01:35:56 +00:00
|
|
|
"sha2 0.9.9",
|
2020-11-12 00:46:33 +00:00
|
|
|
"thiserror",
|
EIP-2386 (draft): Eth2 wallet (#1117)
* Add test to understand flow of key storage
* First commit
* Committing to save trait stuff
* Working naive design
* Add keystore struct
* Move keystore files into their own module
* Add serde (de)serialize_with magic
* Add keystore test
* Fix tests
* Add comments and minor fixes
* Pass optional params to `to_keystore` function
* Add `path` field to keystore
* Add function to read Keystore from file
* Add test vectors and fix Version serialization
* Checksum params is empty object
* Add public key to Keystore
* Add function for saving keystore into file
* Deleted account_manager main.rs
* Move keystore module to validator_client
* Add save_keystore method to validator_directory
* Add load_keystore function. Minor refactorings
* Fixed dependencies
* Address some review comments
* Add Password newtype; derive Zeroize
* Fix test
* Move keystore into own crate
* Remove padding
* Add error enum, zeroize more things
* Fix comment
* Add keystore builder
* Remove keystore stuff from val client
* Add more tests, comments
* Add more comments, test vectors
* Progress on improving JSON validation
* More JSON verification
* Start moving JSON into own mod
* Remove old code
* Add more tests, reader/writers
* Tidy
* Move keystore into own file
* Move more logic into keystore file
* Tidy
* Tidy
* Allow for odd-character hex
* Add more json missing field checks
* Use scrypt by default
* Tidy, address comments
* Test path and uuid in vectors
* Fix comment
* Add checks for kdf params
* Enforce empty kdf message
* Expose json_keystore mod
* First commits on path derivation
* Progress with implementation
* More progress
* Passing intermediate test vectors
* Tidy, add comments
* Add DerivedKey structs
* Move key derivation into own crate
* Add zeroize structs
* Return error for empty seed
* Add tests
* Tidy
* First commits on path derivation
* Progress with implementation
* Move key derivation into own crate
* Start defining JSON wallet
* Add progress
* Split out encrypt/decrypt
* First commits on path derivation
* Progress with implementation
* More progress
* Passing intermediate test vectors
* Tidy, add comments
* Add DerivedKey structs
* Move key derivation into own crate
* Add zeroize structs
* Return error for empty seed
* Add tests
* Tidy
* Add progress
* Replace some password usage with slice
* First commits on path derivation
* Progress with implementation
* More progress
* Passing intermediate test vectors
* Tidy, add comments
* Add DerivedKey structs
* Move key derivation into own crate
* Add zeroize structs
* Return error for empty seed
* Add tests
* Tidy
* Add progress
* Expose PlainText struct
* First commits on path derivation
* Progress with implementation
* More progress
* Passing intermediate test vectors
* Tidy, add comments
* Add DerivedKey structs
* Move key derivation into own crate
* Add zeroize structs
* Return error for empty seed
* Add tests
* Tidy
* Add builder
* Expose consts, remove Password
* Minor progress
* Expose SALT_SIZE
* First compiling version
* Add test vectors
* Move dbg assert statement
* Add mnemonic, tidy
* Tidy
* Add testing
* Fix broken test
* Address review comments
Co-authored-by: pawan <pawandhananjay@gmail.com>
2020-05-11 22:54:59 +00:00
|
|
|
"unicode-normalization",
|
2021-10-01 01:23:55 +00:00
|
|
|
"wasm-bindgen",
|
2020-10-02 06:57:40 +00:00
|
|
|
"zeroize",
|
EIP-2386 (draft): Eth2 wallet (#1117)
* Add test to understand flow of key storage
* First commit
* Committing to save trait stuff
* Working naive design
* Add keystore struct
* Move keystore files into their own module
* Add serde (de)serialize_with magic
* Add keystore test
* Fix tests
* Add comments and minor fixes
* Pass optional params to `to_keystore` function
* Add `path` field to keystore
* Add function to read Keystore from file
* Add test vectors and fix Version serialization
* Checksum params is empty object
* Add public key to Keystore
* Add function for saving keystore into file
* Deleted account_manager main.rs
* Move keystore module to validator_client
* Add save_keystore method to validator_directory
* Add load_keystore function. Minor refactorings
* Fixed dependencies
* Address some review comments
* Add Password newtype; derive Zeroize
* Fix test
* Move keystore into own crate
* Remove padding
* Add error enum, zeroize more things
* Fix comment
* Add keystore builder
* Remove keystore stuff from val client
* Add more tests, comments
* Add more comments, test vectors
* Progress on improving JSON validation
* More JSON verification
* Start moving JSON into own mod
* Remove old code
* Add more tests, reader/writers
* Tidy
* Move keystore into own file
* Move more logic into keystore file
* Tidy
* Tidy
* Allow for odd-character hex
* Add more json missing field checks
* Use scrypt by default
* Tidy, address comments
* Test path and uuid in vectors
* Fix comment
* Add checks for kdf params
* Enforce empty kdf message
* Expose json_keystore mod
* First commits on path derivation
* Progress with implementation
* More progress
* Passing intermediate test vectors
* Tidy, add comments
* Add DerivedKey structs
* Move key derivation into own crate
* Add zeroize structs
* Return error for empty seed
* Add tests
* Tidy
* First commits on path derivation
* Progress with implementation
* Move key derivation into own crate
* Start defining JSON wallet
* Add progress
* Split out encrypt/decrypt
* First commits on path derivation
* Progress with implementation
* More progress
* Passing intermediate test vectors
* Tidy, add comments
* Add DerivedKey structs
* Move key derivation into own crate
* Add zeroize structs
* Return error for empty seed
* Add tests
* Tidy
* Add progress
* Replace some password usage with slice
* First commits on path derivation
* Progress with implementation
* More progress
* Passing intermediate test vectors
* Tidy, add comments
* Add DerivedKey structs
* Move key derivation into own crate
* Add zeroize structs
* Return error for empty seed
* Add tests
* Tidy
* Add progress
* Expose PlainText struct
* First commits on path derivation
* Progress with implementation
* More progress
* Passing intermediate test vectors
* Tidy, add comments
* Add DerivedKey structs
* Move key derivation into own crate
* Add zeroize structs
* Return error for empty seed
* Add tests
* Tidy
* Add builder
* Expose consts, remove Password
* Minor progress
* Expose SALT_SIZE
* First compiling version
* Add test vectors
* Move dbg assert statement
* Add mnemonic, tidy
* Tidy
* Add testing
* Fix broken test
* Address review comments
Co-authored-by: pawan <pawandhananjay@gmail.com>
2020-05-11 22:54:59 +00:00
|
|
|
]
|
|
|
|
|
2020-05-05 23:12:28 +00:00
|
|
|
[[package]]
|
|
|
|
name = "tiny-keccak"
|
|
|
|
version = "2.0.2"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2020-05-10 09:56:31 +00:00
|
|
|
checksum = "2c9d3793400a45f954c52e73d068316d76b6f4e36977e3fcebb13a2721e80237"
|
2020-05-05 23:12:28 +00:00
|
|
|
dependencies = [
|
2020-05-17 11:16:48 +00:00
|
|
|
"crunchy",
|
2020-05-05 23:12:28 +00:00
|
|
|
]
|
|
|
|
|
2019-12-09 11:39:44 +00:00
|
|
|
[[package]]
|
|
|
|
name = "tinytemplate"
|
2021-03-08 06:27:49 +00:00
|
|
|
version = "1.2.1"
|
2019-12-09 11:39:44 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2021-03-08 06:27:49 +00:00
|
|
|
checksum = "be4d6b5f19ff7664e8c98d03e2139cb510db9b0a60b55f8e8709b689d939b6bc"
|
2019-12-09 11:39:44 +00:00
|
|
|
dependencies = [
|
2020-05-10 09:56:31 +00:00
|
|
|
"serde",
|
|
|
|
"serde_json",
|
2019-12-09 11:39:44 +00:00
|
|
|
]
|
|
|
|
|
2020-07-06 01:55:56 +00:00
|
|
|
[[package]]
|
|
|
|
name = "tinyvec"
|
2022-06-18 23:59:43 +00:00
|
|
|
version = "1.6.0"
|
2020-11-13 06:06:35 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2022-06-18 23:59:43 +00:00
|
|
|
checksum = "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50"
|
2020-11-13 06:06:35 +00:00
|
|
|
dependencies = [
|
|
|
|
"tinyvec_macros",
|
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "tinyvec_macros"
|
|
|
|
version = "0.1.0"
|
2020-07-06 01:55:56 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2020-11-13 06:06:35 +00:00
|
|
|
checksum = "cda74da7e1a664f795bb1f8a87ec406fb89a02522cf6e50620d016add6dbbf5c"
|
2020-07-06 01:55:56 +00:00
|
|
|
|
2020-05-17 11:16:48 +00:00
|
|
|
[[package]]
|
|
|
|
name = "tokio"
|
2022-06-18 23:59:43 +00:00
|
|
|
version = "1.19.2"
|
2021-02-10 23:29:49 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2022-06-18 23:59:43 +00:00
|
|
|
checksum = "c51a52ed6686dd62c320f9b89299e9dfb46f730c7a48e635c19f21d116cb1439"
|
2021-02-10 23:29:49 +00:00
|
|
|
dependencies = [
|
2021-10-29 01:59:29 +00:00
|
|
|
"bytes",
|
2020-11-28 05:30:57 +00:00
|
|
|
"libc",
|
|
|
|
"memchr",
|
2021-07-09 03:20:24 +00:00
|
|
|
"mio",
|
2020-11-28 05:30:57 +00:00
|
|
|
"num_cpus",
|
2020-12-23 07:53:36 +00:00
|
|
|
"once_cell",
|
2022-06-18 23:59:43 +00:00
|
|
|
"parking_lot 0.12.1",
|
|
|
|
"pin-project-lite 0.2.9",
|
2020-11-28 05:30:57 +00:00
|
|
|
"signal-hook-registry",
|
2022-06-07 02:35:55 +00:00
|
|
|
"socket2",
|
2021-07-09 03:20:24 +00:00
|
|
|
"tokio-macros",
|
|
|
|
"winapi",
|
2020-05-17 11:16:48 +00:00
|
|
|
]
|
|
|
|
|
2019-12-09 11:39:44 +00:00
|
|
|
[[package]]
|
|
|
|
name = "tokio-io-timeout"
|
2022-01-11 01:35:56 +00:00
|
|
|
version = "1.2.0"
|
2019-12-09 11:39:44 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2022-01-11 01:35:56 +00:00
|
|
|
checksum = "30b74022ada614a1b4834de765f9bb43877f910cc8ce4be40e89042c9223a8bf"
|
2019-12-09 11:39:44 +00:00
|
|
|
dependencies = [
|
2022-06-18 23:59:43 +00:00
|
|
|
"pin-project-lite 0.2.9",
|
2021-08-17 01:00:24 +00:00
|
|
|
"tokio",
|
2019-12-09 11:39:44 +00:00
|
|
|
]
|
|
|
|
|
2020-11-28 05:30:57 +00:00
|
|
|
[[package]]
|
|
|
|
name = "tokio-macros"
|
2022-06-18 23:59:43 +00:00
|
|
|
version = "1.8.0"
|
2020-11-28 05:30:57 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2022-06-18 23:59:43 +00:00
|
|
|
checksum = "9724f9a975fb987ef7a3cd9be0350edcbe130698af5b8f7a631e23d42d052484"
|
2020-11-28 05:30:57 +00:00
|
|
|
dependencies = [
|
|
|
|
"proc-macro2",
|
|
|
|
"quote",
|
|
|
|
"syn",
|
|
|
|
]
|
|
|
|
|
2021-02-10 23:29:49 +00:00
|
|
|
[[package]]
|
|
|
|
name = "tokio-native-tls"
|
|
|
|
version = "0.3.0"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "f7d995660bd2b7f8c1568414c1126076c13fbb725c40112dc0120b78eb9b717b"
|
|
|
|
dependencies = [
|
|
|
|
"native-tls",
|
2021-08-17 01:00:24 +00:00
|
|
|
"tokio",
|
2021-02-10 23:29:49 +00:00
|
|
|
]
|
|
|
|
|
2021-10-12 03:35:49 +00:00
|
|
|
[[package]]
|
|
|
|
name = "tokio-rustls"
|
|
|
|
version = "0.22.0"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "bc6844de72e57df1980054b38be3a9f4702aba4858be64dd700181a8a6d0e1b6"
|
|
|
|
dependencies = [
|
2021-11-18 05:08:42 +00:00
|
|
|
"rustls 0.19.1",
|
2021-10-12 03:35:49 +00:00
|
|
|
"tokio",
|
2021-11-18 05:08:42 +00:00
|
|
|
"webpki 0.21.4",
|
2021-10-12 03:35:49 +00:00
|
|
|
]
|
|
|
|
|
2022-07-18 01:51:36 +00:00
|
|
|
[[package]]
|
|
|
|
name = "tokio-rustls"
|
|
|
|
version = "0.23.4"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "c43ee83903113e03984cb9e5cebe6c04a5116269e900e3ddba8f068a62adda59"
|
|
|
|
dependencies = [
|
|
|
|
"rustls 0.20.6",
|
|
|
|
"tokio",
|
|
|
|
"webpki 0.22.0",
|
|
|
|
]
|
|
|
|
|
2021-02-10 23:29:49 +00:00
|
|
|
[[package]]
|
|
|
|
name = "tokio-stream"
|
2022-06-18 23:59:43 +00:00
|
|
|
version = "0.1.9"
|
2021-02-10 23:29:49 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2022-06-18 23:59:43 +00:00
|
|
|
checksum = "df54d54117d6fdc4e4fea40fe1e4e566b3505700e148a6827e59b34b0d2600d9"
|
2021-02-10 23:29:49 +00:00
|
|
|
dependencies = [
|
|
|
|
"futures-core",
|
2022-06-18 23:59:43 +00:00
|
|
|
"pin-project-lite 0.2.9",
|
2021-08-17 01:00:24 +00:00
|
|
|
"tokio",
|
2022-06-18 23:59:43 +00:00
|
|
|
"tokio-util 0.7.3",
|
2020-05-17 11:16:48 +00:00
|
|
|
]
|
|
|
|
|
2020-09-29 03:46:54 +00:00
|
|
|
[[package]]
|
|
|
|
name = "tokio-tungstenite"
|
2021-11-18 05:08:42 +00:00
|
|
|
version = "0.15.0"
|
2020-09-29 03:46:54 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2021-11-18 05:08:42 +00:00
|
|
|
checksum = "511de3f85caf1c98983545490c3d09685fa8eb634e57eec22bb4db271f46cbd8"
|
2020-09-29 03:46:54 +00:00
|
|
|
dependencies = [
|
|
|
|
"futures-util",
|
2020-12-09 01:34:58 +00:00
|
|
|
"log",
|
2022-07-05 23:36:42 +00:00
|
|
|
"pin-project 1.0.11",
|
2021-08-17 01:00:24 +00:00
|
|
|
"tokio",
|
2022-07-18 01:51:36 +00:00
|
|
|
"tungstenite 0.14.0",
|
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "tokio-tungstenite"
|
|
|
|
version = "0.17.1"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "06cda1232a49558c46f8a504d5b93101d42c0bf7f911f12a105ba48168f821ae"
|
|
|
|
dependencies = [
|
|
|
|
"futures-util",
|
|
|
|
"log",
|
|
|
|
"rustls 0.20.6",
|
|
|
|
"tokio",
|
|
|
|
"tokio-rustls 0.23.4",
|
|
|
|
"tungstenite 0.17.2",
|
|
|
|
"webpki 0.22.0",
|
|
|
|
"webpki-roots",
|
2020-09-29 03:46:54 +00:00
|
|
|
]
|
|
|
|
|
2020-11-28 05:30:57 +00:00
|
|
|
[[package]]
|
|
|
|
name = "tokio-util"
|
2022-06-18 23:59:43 +00:00
|
|
|
version = "0.6.10"
|
2020-11-28 05:30:57 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2022-06-18 23:59:43 +00:00
|
|
|
checksum = "36943ee01a6d67977dd3f84a5a1d2efeb4ada3a1ae771cadfaa535d9d9fc6507"
|
2020-11-28 05:30:57 +00:00
|
|
|
dependencies = [
|
2021-10-29 01:59:29 +00:00
|
|
|
"bytes",
|
2020-11-28 05:30:57 +00:00
|
|
|
"futures-core",
|
2020-12-14 02:28:19 +00:00
|
|
|
"futures-io",
|
2020-11-28 05:30:57 +00:00
|
|
|
"futures-sink",
|
2020-12-09 01:34:58 +00:00
|
|
|
"log",
|
2022-06-18 23:59:43 +00:00
|
|
|
"pin-project-lite 0.2.9",
|
2020-12-09 01:34:58 +00:00
|
|
|
"slab",
|
2021-08-17 01:00:24 +00:00
|
|
|
"tokio",
|
2020-11-28 05:30:57 +00:00
|
|
|
]
|
|
|
|
|
2022-04-05 02:53:09 +00:00
|
|
|
[[package]]
|
|
|
|
name = "tokio-util"
|
2022-06-18 23:59:43 +00:00
|
|
|
version = "0.7.3"
|
2022-04-05 02:53:09 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2022-06-18 23:59:43 +00:00
|
|
|
checksum = "cc463cd8deddc3770d20f9852143d50bf6094e640b485cb2e189a2099085ff45"
|
2022-04-05 02:53:09 +00:00
|
|
|
dependencies = [
|
|
|
|
"bytes",
|
|
|
|
"futures-core",
|
|
|
|
"futures-sink",
|
2022-06-18 23:59:43 +00:00
|
|
|
"pin-project-lite 0.2.9",
|
2022-04-05 02:53:09 +00:00
|
|
|
"tokio",
|
|
|
|
"tracing",
|
|
|
|
]
|
|
|
|
|
2019-12-09 11:39:44 +00:00
|
|
|
[[package]]
|
|
|
|
name = "toml"
|
2022-06-18 23:59:43 +00:00
|
|
|
version = "0.5.9"
|
2019-12-09 11:39:44 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2022-06-18 23:59:43 +00:00
|
|
|
checksum = "8d82e1a7758622a465f8cee077614c73484dac5b836c02ff6a40d5d1010324d7"
|
2019-12-09 11:39:44 +00:00
|
|
|
dependencies = [
|
2020-05-10 09:56:31 +00:00
|
|
|
"serde",
|
2019-12-09 11:39:44 +00:00
|
|
|
]
|
|
|
|
|
2020-05-17 11:16:48 +00:00
|
|
|
[[package]]
|
|
|
|
name = "tower-service"
|
2022-06-18 23:59:43 +00:00
|
|
|
version = "0.3.2"
|
2020-05-17 11:16:48 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2022-06-18 23:59:43 +00:00
|
|
|
checksum = "b6bc1c9ce2b5135ac7f93c72918fc37feb872bdc6a5533a8b85eb4b86bfdae52"
|
2020-05-17 11:16:48 +00:00
|
|
|
|
2020-07-15 05:04:09 +00:00
|
|
|
[[package]]
|
|
|
|
name = "tracing"
|
2022-06-18 23:59:43 +00:00
|
|
|
version = "0.1.35"
|
2020-07-15 05:04:09 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2022-06-18 23:59:43 +00:00
|
|
|
checksum = "a400e31aa60b9d44a52a8ee0343b5b18566b03a8321e0d321f695cf56e940160"
|
2020-07-15 05:04:09 +00:00
|
|
|
dependencies = [
|
2021-11-18 05:08:42 +00:00
|
|
|
"cfg-if",
|
2020-12-09 01:34:58 +00:00
|
|
|
"log",
|
2022-06-18 23:59:43 +00:00
|
|
|
"pin-project-lite 0.2.9",
|
2020-10-23 04:16:33 +00:00
|
|
|
"tracing-attributes",
|
2020-07-15 05:04:09 +00:00
|
|
|
"tracing-core",
|
|
|
|
]
|
|
|
|
|
2020-10-23 04:16:33 +00:00
|
|
|
[[package]]
|
|
|
|
name = "tracing-attributes"
|
2022-07-05 23:36:42 +00:00
|
|
|
version = "0.1.22"
|
2020-10-23 04:16:33 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2022-07-05 23:36:42 +00:00
|
|
|
checksum = "11c75893af559bc8e10716548bdef5cb2b983f8e637db9d0e15126b61b484ee2"
|
2020-10-23 04:16:33 +00:00
|
|
|
dependencies = [
|
|
|
|
"proc-macro2",
|
|
|
|
"quote",
|
|
|
|
"syn",
|
|
|
|
]
|
|
|
|
|
2020-07-15 05:04:09 +00:00
|
|
|
[[package]]
|
|
|
|
name = "tracing-core"
|
2022-07-05 23:36:42 +00:00
|
|
|
version = "0.1.28"
|
2020-07-15 05:04:09 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2022-07-05 23:36:42 +00:00
|
|
|
checksum = "7b7358be39f2f274f322d2aaed611acc57f382e8eb1e5b48cb9ae30933495ce7"
|
2020-07-15 05:04:09 +00:00
|
|
|
dependencies = [
|
2022-06-18 23:59:43 +00:00
|
|
|
"once_cell",
|
2022-02-07 23:25:03 +00:00
|
|
|
"valuable",
|
2020-07-15 05:04:09 +00:00
|
|
|
]
|
|
|
|
|
2022-07-18 01:51:36 +00:00
|
|
|
[[package]]
|
|
|
|
name = "tracing-futures"
|
|
|
|
version = "0.2.5"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "97d095ae15e245a057c8e8451bab9b3ee1e1f68e9ba2b4fbc18d0ac5237835f2"
|
|
|
|
dependencies = [
|
|
|
|
"pin-project 1.0.11",
|
|
|
|
"tracing",
|
|
|
|
]
|
|
|
|
|
2020-10-23 04:16:33 +00:00
|
|
|
[[package]]
|
|
|
|
name = "tracing-log"
|
2022-06-18 23:59:43 +00:00
|
|
|
version = "0.1.3"
|
2020-10-23 04:16:33 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2022-06-18 23:59:43 +00:00
|
|
|
checksum = "78ddad33d2d10b1ed7eb9d1f518a5674713876e97e5bb9b7345a7984fbb4f922"
|
2020-10-23 04:16:33 +00:00
|
|
|
dependencies = [
|
|
|
|
"lazy_static",
|
2020-12-09 01:34:58 +00:00
|
|
|
"log",
|
2020-10-23 04:16:33 +00:00
|
|
|
"tracing-core",
|
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "tracing-subscriber"
|
2022-07-05 23:36:42 +00:00
|
|
|
version = "0.3.14"
|
2020-10-23 04:16:33 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2022-07-05 23:36:42 +00:00
|
|
|
checksum = "3a713421342a5a666b7577783721d3117f1b69a393df803ee17bb73b1e122a59"
|
2020-10-23 04:16:33 +00:00
|
|
|
dependencies = [
|
2021-12-22 06:17:14 +00:00
|
|
|
"ansi_term",
|
2020-10-23 04:16:33 +00:00
|
|
|
"matchers",
|
2022-07-05 23:36:42 +00:00
|
|
|
"once_cell",
|
2020-10-23 04:16:33 +00:00
|
|
|
"regex",
|
|
|
|
"sharded-slab",
|
2020-12-09 01:34:58 +00:00
|
|
|
"smallvec",
|
2020-10-23 04:16:33 +00:00
|
|
|
"thread_local",
|
2020-09-29 03:46:54 +00:00
|
|
|
"tracing",
|
2020-10-23 04:16:33 +00:00
|
|
|
"tracing-core",
|
|
|
|
"tracing-log",
|
2020-09-29 03:46:54 +00:00
|
|
|
]
|
|
|
|
|
2019-12-09 11:39:44 +00:00
|
|
|
[[package]]
|
|
|
|
name = "trackable"
|
2021-05-04 00:44:05 +00:00
|
|
|
version = "1.2.0"
|
2019-12-09 11:39:44 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2021-05-04 00:44:05 +00:00
|
|
|
checksum = "017e2a1a93718e4e8386d037cfb8add78f1d690467f4350fb582f55af1203167"
|
2019-12-09 11:39:44 +00:00
|
|
|
dependencies = [
|
2020-05-10 09:56:31 +00:00
|
|
|
"trackable_derive",
|
2019-12-09 11:39:44 +00:00
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "trackable_derive"
|
2020-05-17 11:16:48 +00:00
|
|
|
version = "1.0.0"
|
2019-12-09 11:39:44 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2020-05-17 11:16:48 +00:00
|
|
|
checksum = "ebeb235c5847e2f82cfe0f07eb971d1e5f6804b18dac2ae16349cc604380f82f"
|
2019-12-09 11:39:44 +00:00
|
|
|
dependencies = [
|
2020-05-17 11:16:48 +00:00
|
|
|
"quote",
|
|
|
|
"syn",
|
2019-12-09 11:39:44 +00:00
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "tree_hash"
|
2021-11-29 03:57:54 +00:00
|
|
|
version = "0.4.1"
|
2019-12-09 11:39:44 +00:00
|
|
|
dependencies = [
|
2021-07-09 06:15:32 +00:00
|
|
|
"beacon_chain",
|
2022-04-04 00:26:16 +00:00
|
|
|
"eth2_hashing",
|
2021-11-29 03:57:54 +00:00
|
|
|
"eth2_ssz",
|
2022-03-31 07:52:23 +00:00
|
|
|
"eth2_ssz_derive",
|
Separate execution payloads in the DB (#3157)
## Proposed Changes
Reduce post-merge disk usage by not storing finalized execution payloads in Lighthouse's database.
:warning: **This is achieved in a backwards-incompatible way for networks that have already merged** :warning:. Kiln users and shadow fork enjoyers will be unable to downgrade after running the code from this PR. The upgrade migration may take several minutes to run, and can't be aborted after it begins.
The main changes are:
- New column in the database called `ExecPayload`, keyed by beacon block root.
- The `BeaconBlock` column now stores blinded blocks only.
- Lots of places that previously used full blocks now use blinded blocks, e.g. analytics APIs, block replay in the DB, etc.
- On finalization:
- `prune_abanonded_forks` deletes non-canonical payloads whilst deleting non-canonical blocks.
- `migrate_db` deletes finalized canonical payloads whilst deleting finalized states.
- Conversions between blinded and full blocks are implemented in a compositional way, duplicating some work from Sean's PR #3134.
- The execution layer has a new `get_payload_by_block_hash` method that reconstructs a payload using the EE's `eth_getBlockByHash` call.
- I've tested manually that it works on Kiln, using Geth and Nethermind.
- This isn't necessarily the most efficient method, and new engine APIs are being discussed to improve this: https://github.com/ethereum/execution-apis/pull/146.
- We're depending on the `ethers` master branch, due to lots of recent changes. We're also using a workaround for https://github.com/gakonst/ethers-rs/issues/1134.
- Payload reconstruction is used in the HTTP API via `BeaconChain::get_block`, which is now `async`. Due to the `async` fn, the `blocking_json` wrapper has been removed.
- Payload reconstruction is used in network RPC to serve blocks-by-{root,range} responses. Here the `async` adjustment is messier, although I think I've managed to come up with a reasonable compromise: the handlers take the `SendOnDrop` by value so that they can drop it on _task completion_ (after the `fn` returns). Still, this is introducing disk reads onto core executor threads, which may have a negative performance impact (thoughts appreciated).
## Additional Info
- [x] For performance it would be great to remove the cloning of full blocks when converting them to blinded blocks to write to disk. I'm going to experiment with a `put_block` API that takes the block by value, breaks it into a blinded block and a payload, stores the blinded block, and then re-assembles the full block for the caller.
- [x] We should measure the latency of blocks-by-root and blocks-by-range responses.
- [x] We should add integration tests that stress the payload reconstruction (basic tests done, issue for more extensive tests: https://github.com/sigp/lighthouse/issues/3159)
- [x] We should (manually) test the schema v9 migration from several prior versions, particularly as blocks have changed on disk and some migrations rely on being able to load blocks.
Co-authored-by: Paul Hauner <paul@paulhauner.com>
2022-05-12 00:42:17 +00:00
|
|
|
"ethereum-types 0.12.1",
|
2022-04-04 00:26:16 +00:00
|
|
|
"rand 0.8.5",
|
2020-12-09 01:34:58 +00:00
|
|
|
"smallvec",
|
2022-03-31 07:52:23 +00:00
|
|
|
"tree_hash_derive",
|
2020-05-10 09:56:31 +00:00
|
|
|
"types",
|
2019-12-09 11:39:44 +00:00
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "tree_hash_derive"
|
Implement SSZ union type (#2579)
## Issue Addressed
NA
## Proposed Changes
Implements the "union" type from the SSZ spec for `ssz`, `ssz_derive`, `tree_hash` and `tree_hash_derive` so it may be derived for `enums`:
https://github.com/ethereum/consensus-specs/blob/v1.1.0-beta.3/ssz/simple-serialize.md#union
The union type is required for the merge, since the `Transaction` type is defined as a single-variant union `Union[OpaqueTransaction]`.
### Crate Updates
This PR will (hopefully) cause CI to publish new versions for the following crates:
- `eth2_ssz_derive`: `0.2.1` -> `0.3.0`
- `eth2_ssz`: `0.3.0` -> `0.4.0`
- `eth2_ssz_types`: `0.2.0` -> `0.2.1`
- `tree_hash`: `0.3.0` -> `0.4.0`
- `tree_hash_derive`: `0.3.0` -> `0.4.0`
These these crates depend on each other, I've had to add a workspace-level `[patch]` for these crates. A follow-up PR will need to remove this patch, ones the new versions are published.
### Union Behaviors
We already had SSZ `Encode` and `TreeHash` derive for enums, however it just did a "transparent" pass-through of the inner value. Since the "union" decoding from the spec is in conflict with the transparent method, I've required that all `enum` have exactly one of the following enum-level attributes:
#### SSZ
- `#[ssz(enum_behaviour = "union")]`
- matches the spec used for the merge
- `#[ssz(enum_behaviour = "transparent")]`
- maintains existing functionality
- not supported for `Decode` (never was)
#### TreeHash
- `#[tree_hash(enum_behaviour = "union")]`
- matches the spec used for the merge
- `#[tree_hash(enum_behaviour = "transparent")]`
- maintains existing functionality
This means that we can maintain the existing transparent behaviour, but all existing users will get a compile-time error until they explicitly opt-in to being transparent.
### Legacy Option Encoding
Before this PR, we already had a union-esque encoding for `Option<T>`. However, this was with the *old* SSZ spec where the union selector was 4 bytes. During merge specification, the spec was changed to use 1 byte for the selector.
Whilst the 4-byte `Option` encoding was never used in the spec, we used it in our database. Writing a migrate script for all occurrences of `Option` in the database would be painful, especially since it's used in the `CommitteeCache`. To avoid the migrate script, I added a serde-esque `#[ssz(with = "module")]` field-level attribute to `ssz_derive` so that we can opt into the 4-byte encoding on a field-by-field basis.
The `ssz::legacy::four_byte_impl!` macro allows a one-liner to define the module required for the `#[ssz(with = "module")]` for some `Option<T> where T: Encode + Decode`.
Notably, **I have removed `Encode` and `Decode` impls for `Option`**. I've done this to force a break on downstream users. Like I mentioned, `Option` isn't used in the spec so I don't think it'll be *that* annoying. I think it's nicer than quietly having two different union implementations or quietly breaking the existing `Option` impl.
### Crate Publish Ordering
I've modified the order in which CI publishes crates to ensure that we don't publish a crate without ensuring we already published a crate that it depends upon.
## TODO
- [ ] Queue a follow-up `[patch]`-removing PR.
2021-09-25 05:58:36 +00:00
|
|
|
version = "0.4.0"
|
2019-12-09 11:39:44 +00:00
|
|
|
dependencies = [
|
2021-12-13 20:43:22 +00:00
|
|
|
"darling",
|
2020-05-17 11:16:48 +00:00
|
|
|
"quote",
|
|
|
|
"syn",
|
2019-12-09 11:39:44 +00:00
|
|
|
]
|
|
|
|
|
2021-06-03 01:11:33 +00:00
|
|
|
[[package]]
|
|
|
|
name = "trust-dns-proto"
|
2022-06-07 02:35:55 +00:00
|
|
|
version = "0.21.2"
|
2021-06-03 01:11:33 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2022-06-07 02:35:55 +00:00
|
|
|
checksum = "9c31f240f59877c3d4bb3b3ea0ec5a6a0cff07323580ff8c7a605cd7d08b255d"
|
2021-06-03 01:11:33 +00:00
|
|
|
dependencies = [
|
|
|
|
"async-trait",
|
2021-11-18 05:08:42 +00:00
|
|
|
"cfg-if",
|
2021-06-03 01:11:33 +00:00
|
|
|
"data-encoding",
|
|
|
|
"enum-as-inner",
|
|
|
|
"futures-channel",
|
|
|
|
"futures-io",
|
|
|
|
"futures-util",
|
|
|
|
"idna",
|
|
|
|
"ipnet",
|
|
|
|
"lazy_static",
|
|
|
|
"log",
|
2022-03-02 05:09:52 +00:00
|
|
|
"rand 0.8.5",
|
2021-06-03 01:11:33 +00:00
|
|
|
"smallvec",
|
|
|
|
"thiserror",
|
|
|
|
"tinyvec",
|
2021-08-17 01:00:24 +00:00
|
|
|
"tokio",
|
2021-06-03 01:11:33 +00:00
|
|
|
"url",
|
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "trust-dns-resolver"
|
2022-06-07 02:35:55 +00:00
|
|
|
version = "0.21.2"
|
2021-06-03 01:11:33 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2022-06-07 02:35:55 +00:00
|
|
|
checksum = "e4ba72c2ea84515690c9fcef4c6c660bb9df3036ed1051686de84605b74fd558"
|
2021-06-03 01:11:33 +00:00
|
|
|
dependencies = [
|
2021-11-18 05:08:42 +00:00
|
|
|
"cfg-if",
|
2021-06-03 01:11:33 +00:00
|
|
|
"futures-util",
|
|
|
|
"ipconfig",
|
|
|
|
"lazy_static",
|
|
|
|
"log",
|
|
|
|
"lru-cache",
|
2022-06-18 23:59:43 +00:00
|
|
|
"parking_lot 0.12.1",
|
2021-06-03 01:11:33 +00:00
|
|
|
"resolv-conf",
|
|
|
|
"smallvec",
|
|
|
|
"thiserror",
|
2021-08-17 01:00:24 +00:00
|
|
|
"tokio",
|
2021-06-03 01:11:33 +00:00
|
|
|
"trust-dns-proto",
|
|
|
|
]
|
|
|
|
|
2019-12-09 11:39:44 +00:00
|
|
|
[[package]]
|
|
|
|
name = "try-lock"
|
2020-07-11 02:35:59 +00:00
|
|
|
version = "0.2.3"
|
2019-12-09 11:39:44 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2020-07-11 02:35:59 +00:00
|
|
|
checksum = "59547bce71d9c38b83d9c0e92b6066c4253371f15005def0c30d9657f50c7642"
|
2019-12-09 11:39:44 +00:00
|
|
|
|
2020-09-29 03:46:54 +00:00
|
|
|
[[package]]
|
|
|
|
name = "tungstenite"
|
2021-11-18 05:08:42 +00:00
|
|
|
version = "0.14.0"
|
2020-09-29 03:46:54 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2021-11-18 05:08:42 +00:00
|
|
|
checksum = "a0b2d8558abd2e276b0a8df5c05a2ec762609344191e5fd23e292c910e9165b5"
|
2020-09-29 03:46:54 +00:00
|
|
|
dependencies = [
|
2022-04-04 00:26:16 +00:00
|
|
|
"base64",
|
2020-09-29 03:46:54 +00:00
|
|
|
"byteorder",
|
2021-10-29 01:59:29 +00:00
|
|
|
"bytes",
|
2021-02-10 23:29:49 +00:00
|
|
|
"http",
|
2020-09-29 03:46:54 +00:00
|
|
|
"httparse",
|
2020-12-09 01:34:58 +00:00
|
|
|
"log",
|
2022-03-02 05:09:52 +00:00
|
|
|
"rand 0.8.5",
|
|
|
|
"sha-1 0.9.8",
|
2021-11-18 05:08:42 +00:00
|
|
|
"thiserror",
|
2020-12-09 01:34:58 +00:00
|
|
|
"url",
|
2020-09-29 03:46:54 +00:00
|
|
|
"utf-8",
|
|
|
|
]
|
|
|
|
|
2022-07-18 01:51:36 +00:00
|
|
|
[[package]]
|
|
|
|
name = "tungstenite"
|
|
|
|
version = "0.17.2"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "d96a2dea40e7570482f28eb57afbe42d97551905da6a9400acc5c328d24004f5"
|
|
|
|
dependencies = [
|
|
|
|
"base64",
|
|
|
|
"byteorder",
|
|
|
|
"bytes",
|
|
|
|
"http",
|
|
|
|
"httparse",
|
|
|
|
"log",
|
|
|
|
"rand 0.8.5",
|
|
|
|
"rustls 0.20.6",
|
|
|
|
"sha-1 0.10.0",
|
|
|
|
"thiserror",
|
|
|
|
"url",
|
|
|
|
"utf-8",
|
|
|
|
"webpki 0.22.0",
|
|
|
|
]
|
|
|
|
|
2020-09-29 03:46:54 +00:00
|
|
|
[[package]]
|
|
|
|
name = "twoway"
|
|
|
|
version = "0.1.8"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "59b11b2b5241ba34be09c3cc85a36e56e48f9888862e19cedf23336d35316ed1"
|
|
|
|
dependencies = [
|
|
|
|
"memchr",
|
|
|
|
]
|
|
|
|
|
2019-12-09 11:39:44 +00:00
|
|
|
[[package]]
|
|
|
|
name = "typenum"
|
2022-01-11 01:35:56 +00:00
|
|
|
version = "1.15.0"
|
2019-12-09 11:39:44 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2022-01-11 01:35:56 +00:00
|
|
|
checksum = "dcf81ac59edc17cc8697ff311e8f5ef2d99fcbd9817b34cec66f90b6c3dfd987"
|
2019-12-09 11:39:44 +00:00
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "types"
|
Initial work towards v0.2.0 (#924)
* Remove ping protocol
* Initial renaming of network services
* Correct rebasing relative to latest master
* Start updating types
* Adds HashMapDelay struct to utils
* Initial network restructure
* Network restructure. Adds new types for v0.2.0
* Removes build artefacts
* Shift validation to beacon chain
* Temporarily remove gossip validation
This is to be updated to match current optimisation efforts.
* Adds AggregateAndProof
* Begin rebuilding pubsub encoding/decoding
* Signature hacking
* Shift gossipsup decoding into eth2_libp2p
* Existing EF tests passing with fake_crypto
* Shifts block encoding/decoding into RPC
* Delete outdated API spec
* All release tests passing bar genesis state parsing
* Update and test YamlConfig
* Update to spec v0.10 compatible BLS
* Updates to BLS EF tests
* Add EF test for AggregateVerify
And delete unused hash2curve tests for uncompressed points
* Update EF tests to v0.10.1
* Use optional block root correctly in block proc
* Use genesis fork in deposit domain. All tests pass
* Fast aggregate verify test
* Update REST API docs
* Fix unused import
* Bump spec tags to v0.10.1
* Add `seconds_per_eth1_block` to chainspec
* Update to timestamp based eth1 voting scheme
* Return None from `get_votes_to_consider` if block cache is empty
* Handle overflows in `is_candidate_block`
* Revert to failing tests
* Fix eth1 data sets test
* Choose default vote according to spec
* Fix collect_valid_votes tests
* Fix `get_votes_to_consider` to choose all eligible blocks
* Uncomment winning_vote tests
* Add comments; remove unused code
* Reduce seconds_per_eth1_block for simulation
* Addressed review comments
* Add test for default vote case
* Fix logs
* Remove unused functions
* Meter default eth1 votes
* Fix comments
* Progress on attestation service
* Address review comments; remove unused dependency
* Initial work on removing libp2p lock
* Add LRU caches to store (rollup)
* Update attestation validation for DB changes (WIP)
* Initial version of should_forward_block
* Scaffold
* Progress on attestation validation
Also, consolidate prod+testing slot clocks so that they share much
of the same implementation and can both handle sub-slot time changes.
* Removes lock from libp2p service
* Completed network lock removal
* Finish(?) attestation processing
* Correct network termination future
* Add slot check to block check
* Correct fmt issues
* Remove Drop implementation for network service
* Add first attempt at attestation proc. re-write
* Add version 2 of attestation processing
* Minor fixes
* Add validator pubkey cache
* Make get_indexed_attestation take a committee
* Link signature processing into new attn verification
* First working version
* Ensure pubkey cache is updated
* Add more metrics, slight optimizations
* Clone committee cache during attestation processing
* Update shuffling cache during block processing
* Remove old commented-out code
* Fix shuffling cache insert bug
* Used indexed attestation in fork choice
* Restructure attn processing, add metrics
* Add more detailed metrics
* Tidy, fix failing tests
* Fix failing tests, tidy
* Address reviewers suggestions
* Disable/delete two outdated tests
* Modification of validator for subscriptions
* Add slot signing to validator client
* Further progress on validation subscription
* Adds necessary validator subscription functionality
* Add new Pubkeys struct to signature_sets
* Refactor with functional approach
* Update beacon chain
* Clean up validator <-> beacon node http types
* Add aggregator status to ValidatorDuty
* Impl Clone for manual slot clock
* Fix minor errors
* Further progress validator client subscription
* Initial subscription and aggregation handling
* Remove decompressed member from pubkey bytes
* Progress to modifying val client for attestation aggregation
* First draft of validator client upgrade for aggregate attestations
* Add hashmap for indices lookup
* Add state cache, remove store cache
* Only build the head committee cache
* Removes lock on a network channel
* Partially implement beacon node subscription http api
* Correct compilation issues
* Change `get_attesting_indices` to use Vec
* Fix failing test
* Partial implementation of timer
* Adds timer, removes exit_future, http api to op pool
* Partial multiple aggregate attestation handling
* Permits bulk messages accross gossipsub network channel
* Correct compile issues
* Improve gosispsub messaging and correct rest api helpers
* Added global gossipsub subscriptions
* Update validator subscriptions data structs
* Tidy
* Re-structure validator subscriptions
* Initial handling of subscriptions
* Re-structure network service
* Add pubkey cache persistence file
* Add more comments
* Integrate persistence file into builder
* Add pubkey cache tests
* Add HashSetDelay and introduce into attestation service
* Handles validator subscriptions
* Add data_dir to beacon chain builder
* Remove Option in pubkey cache persistence file
* Ensure consistency between datadir/data_dir
* Fix failing network test
* Peer subnet discovery gets queued for future subscriptions
* Reorganise attestation service functions
* Initial wiring of attestation service
* First draft of attestation service timing logic
* Correct minor typos
* Tidy
* Fix todos
* Improve tests
* Add PeerInfo to connected peers mapping
* Fix compile error
* Fix compile error from merge
* Split up block processing metrics
* Tidy
* Refactor get_pubkey_from_state
* Remove commented-out code
* Rename state_cache -> checkpoint_cache
* Rename Checkpoint -> Snapshot
* Tidy, add comments
* Tidy up find_head function
* Change some checkpoint -> snapshot
* Add tests
* Expose max_len
* Remove dead code
* Tidy
* Fix bug
* Add sync-speed metric
* Add first attempt at VerifiableBlock
* Start integrating into beacon chain
* Integrate VerifiableBlock
* Rename VerifableBlock -> PartialBlockVerification
* Add start of typed methods
* Add progress
* Add further progress
* Rename structs
* Add full block verification to block_processing.rs
* Further beacon chain integration
* Update checks for gossip
* Add todo
* Start adding segement verification
* Add passing chain segement test
* Initial integration with batch sync
* Minor changes
* Tidy, add more error checking
* Start adding chain_segment tests
* Finish invalid signature tests
* Include single and gossip verified blocks in tests
* Add gossip verification tests
* Start adding docs
* Finish adding comments to block_processing.rs
* Rename block_processing.rs -> block_verification
* Start removing old block processing code
* Fixes beacon_chain compilation
* Fix project-wide compile errors
* Remove old code
* Correct code to pass all tests
* Fix bug with beacon proposer index
* Fix shim for BlockProcessingError
* Only process one epoch at a time
* Fix loop in chain segment processing
* Correct tests from master merge
* Add caching for state.eth1_data_votes
* Add BeaconChain::validator_pubkey
* Revert "Add caching for state.eth1_data_votes"
This reverts commit cd73dcd6434fb8d8e6bf30c5356355598ea7b78e.
Co-authored-by: Grant Wuerker <gwuerker@gmail.com>
Co-authored-by: Michael Sproul <michael@sigmaprime.io>
Co-authored-by: Michael Sproul <micsproul@gmail.com>
Co-authored-by: pawan <pawandhananjay@gmail.com>
Co-authored-by: Paul Hauner <paul@paulhauner.com>
2020-03-17 06:24:44 +00:00
|
|
|
version = "0.2.0"
|
2019-12-09 11:39:44 +00:00
|
|
|
dependencies = [
|
2021-10-14 02:58:11 +00:00
|
|
|
"arbitrary",
|
2021-07-09 06:15:32 +00:00
|
|
|
"beacon_chain",
|
2020-05-10 09:56:31 +00:00
|
|
|
"bls",
|
|
|
|
"cached_tree_hash",
|
|
|
|
"compare_fields",
|
|
|
|
"compare_fields_derive",
|
|
|
|
"criterion",
|
2020-06-18 11:06:34 +00:00
|
|
|
"derivative",
|
2022-04-04 00:26:16 +00:00
|
|
|
"eth2_hashing",
|
2020-05-10 09:56:31 +00:00
|
|
|
"eth2_interop_keypairs",
|
2021-11-29 22:32:53 +00:00
|
|
|
"eth2_serde_utils",
|
2021-11-29 03:57:54 +00:00
|
|
|
"eth2_ssz",
|
2022-03-31 07:52:23 +00:00
|
|
|
"eth2_ssz_derive",
|
2021-11-29 03:57:54 +00:00
|
|
|
"eth2_ssz_types",
|
Separate execution payloads in the DB (#3157)
## Proposed Changes
Reduce post-merge disk usage by not storing finalized execution payloads in Lighthouse's database.
:warning: **This is achieved in a backwards-incompatible way for networks that have already merged** :warning:. Kiln users and shadow fork enjoyers will be unable to downgrade after running the code from this PR. The upgrade migration may take several minutes to run, and can't be aborted after it begins.
The main changes are:
- New column in the database called `ExecPayload`, keyed by beacon block root.
- The `BeaconBlock` column now stores blinded blocks only.
- Lots of places that previously used full blocks now use blinded blocks, e.g. analytics APIs, block replay in the DB, etc.
- On finalization:
- `prune_abanonded_forks` deletes non-canonical payloads whilst deleting non-canonical blocks.
- `migrate_db` deletes finalized canonical payloads whilst deleting finalized states.
- Conversions between blinded and full blocks are implemented in a compositional way, duplicating some work from Sean's PR #3134.
- The execution layer has a new `get_payload_by_block_hash` method that reconstructs a payload using the EE's `eth_getBlockByHash` call.
- I've tested manually that it works on Kiln, using Geth and Nethermind.
- This isn't necessarily the most efficient method, and new engine APIs are being discussed to improve this: https://github.com/ethereum/execution-apis/pull/146.
- We're depending on the `ethers` master branch, due to lots of recent changes. We're also using a workaround for https://github.com/gakonst/ethers-rs/issues/1134.
- Payload reconstruction is used in the HTTP API via `BeaconChain::get_block`, which is now `async`. Due to the `async` fn, the `blocking_json` wrapper has been removed.
- Payload reconstruction is used in network RPC to serve blocks-by-{root,range} responses. Here the `async` adjustment is messier, although I think I've managed to come up with a reasonable compromise: the handlers take the `SendOnDrop` by value so that they can drop it on _task completion_ (after the `fn` returns). Still, this is introducing disk reads onto core executor threads, which may have a negative performance impact (thoughts appreciated).
## Additional Info
- [x] For performance it would be great to remove the cloning of full blocks when converting them to blinded blocks to write to disk. I'm going to experiment with a `put_block` API that takes the block by value, breaks it into a blinded block and a payload, stores the blinded block, and then re-assembles the full block for the caller.
- [x] We should measure the latency of blocks-by-root and blocks-by-range responses.
- [x] We should add integration tests that stress the payload reconstruction (basic tests done, issue for more extensive tests: https://github.com/sigp/lighthouse/issues/3159)
- [x] We should (manually) test the schema v9 migration from several prior versions, particularly as blocks have changed on disk and some migrations rely on being able to load blocks.
Co-authored-by: Paul Hauner <paul@paulhauner.com>
2022-05-12 00:42:17 +00:00
|
|
|
"ethereum-types 0.12.1",
|
2020-10-28 22:19:38 +00:00
|
|
|
"hex",
|
2020-05-10 09:56:31 +00:00
|
|
|
"int_to_bytes",
|
2021-08-17 01:00:24 +00:00
|
|
|
"itertools",
|
2020-11-18 23:31:37 +00:00
|
|
|
"lazy_static",
|
2020-12-09 01:34:58 +00:00
|
|
|
"log",
|
2022-06-18 23:59:43 +00:00
|
|
|
"parking_lot 0.12.1",
|
2022-04-04 00:26:16 +00:00
|
|
|
"rand 0.8.5",
|
2021-02-10 23:29:49 +00:00
|
|
|
"rand_xorshift",
|
2020-05-10 09:56:31 +00:00
|
|
|
"rayon",
|
2020-09-29 03:46:54 +00:00
|
|
|
"regex",
|
2020-05-18 06:25:16 +00:00
|
|
|
"rusqlite",
|
2020-05-10 09:56:31 +00:00
|
|
|
"safe_arith",
|
|
|
|
"serde",
|
|
|
|
"serde_derive",
|
2022-01-20 09:14:21 +00:00
|
|
|
"serde_json",
|
2022-07-01 01:15:19 +00:00
|
|
|
"serde_with",
|
2020-05-10 09:56:31 +00:00
|
|
|
"serde_yaml",
|
|
|
|
"slog",
|
2022-02-17 23:55:04 +00:00
|
|
|
"smallvec",
|
2021-09-22 00:37:28 +00:00
|
|
|
"state_processing",
|
2021-07-09 06:15:32 +00:00
|
|
|
"superstruct",
|
2020-05-10 09:56:31 +00:00
|
|
|
"swap_or_not_shuffle",
|
|
|
|
"tempfile",
|
|
|
|
"test_random_derive",
|
Use async code when interacting with EL (#3244)
## Overview
This rather extensive PR achieves two primary goals:
1. Uses the finalized/justified checkpoints of fork choice (FC), rather than that of the head state.
2. Refactors fork choice, block production and block processing to `async` functions.
Additionally, it achieves:
- Concurrent forkchoice updates to the EL and cache pruning after a new head is selected.
- Concurrent "block packing" (attestations, etc) and execution payload retrieval during block production.
- Concurrent per-block-processing and execution payload verification during block processing.
- The `Arc`-ification of `SignedBeaconBlock` during block processing (it's never mutated, so why not?):
- I had to do this to deal with sending blocks into spawned tasks.
- Previously we were cloning the beacon block at least 2 times during each block processing, these clones are either removed or turned into cheaper `Arc` clones.
- We were also `Box`-ing and un-`Box`-ing beacon blocks as they moved throughout the networking crate. This is not a big deal, but it's nice to avoid shifting things between the stack and heap.
- Avoids cloning *all the blocks* in *every chain segment* during sync.
- It also has the potential to clean up our code where we need to pass an *owned* block around so we can send it back in the case of an error (I didn't do much of this, my PR is already big enough :sweat_smile:)
- The `BeaconChain::HeadSafetyStatus` struct was removed. It was an old relic from prior merge specs.
For motivation for this change, see https://github.com/sigp/lighthouse/pull/3244#issuecomment-1160963273
## Changes to `canonical_head` and `fork_choice`
Previously, the `BeaconChain` had two separate fields:
```
canonical_head: RwLock<Snapshot>,
fork_choice: RwLock<BeaconForkChoice>
```
Now, we have grouped these values under a single struct:
```
canonical_head: CanonicalHead {
cached_head: RwLock<Arc<Snapshot>>,
fork_choice: RwLock<BeaconForkChoice>
}
```
Apart from ergonomics, the only *actual* change here is wrapping the canonical head snapshot in an `Arc`. This means that we no longer need to hold the `cached_head` (`canonical_head`, in old terms) lock when we want to pull some values from it. This was done to avoid deadlock risks by preventing functions from acquiring (and holding) the `cached_head` and `fork_choice` locks simultaneously.
## Breaking Changes
### The `state` (root) field in the `finalized_checkpoint` SSE event
Consider the scenario where epoch `n` is just finalized, but `start_slot(n)` is skipped. There are two state roots we might in the `finalized_checkpoint` SSE event:
1. The state root of the finalized block, which is `get_block(finalized_checkpoint.root).state_root`.
4. The state root at slot of `start_slot(n)`, which would be the state from (1), but "skipped forward" through any skip slots.
Previously, Lighthouse would choose (2). However, we can see that when [Teku generates that event](https://github.com/ConsenSys/teku/blob/de2b2801c89ef5abf983d6bf37867c37fc47121f/data/beaconrestapi/src/main/java/tech/pegasys/teku/beaconrestapi/handlers/v1/events/EventSubscriptionManager.java#L171-L182) it uses [`getStateRootFromBlockRoot`](https://github.com/ConsenSys/teku/blob/de2b2801c89ef5abf983d6bf37867c37fc47121f/data/provider/src/main/java/tech/pegasys/teku/api/ChainDataProvider.java#L336-L341) which uses (1).
I have switched Lighthouse from (2) to (1). I think it's a somewhat arbitrary choice between the two, where (1) is easier to compute and is consistent with Teku.
## Notes for Reviewers
I've renamed `BeaconChain::fork_choice` to `BeaconChain::recompute_head`. Doing this helped ensure I broke all previous uses of fork choice and I also find it more descriptive. It describes an action and can't be confused with trying to get a reference to the `ForkChoice` struct.
I've changed the ordering of SSE events when a block is received. It used to be `[block, finalized, head]` and now it's `[block, head, finalized]`. It was easier this way and I don't think we were making any promises about SSE event ordering so it's not "breaking".
I've made it so fork choice will run when it's first constructed. I did this because I wanted to have a cached version of the last call to `get_head`. Ensuring `get_head` has been run *at least once* means that the cached values doesn't need to wrapped in an `Option`. This was fairly simple, it just involved passing a `slot` to the constructor so it knows *when* it's being run. When loading a fork choice from the store and a slot clock isn't handy I've just used the `slot` that was saved in the `fork_choice_store`. That seems like it would be a faithful representation of the slot when we saved it.
I added the `genesis_time: u64` to the `BeaconChain`. It's small, constant and nice to have around.
Since we're using FC for the fin/just checkpoints, we no longer get the `0x00..00` roots at genesis. You can see I had to remove a work-around in `ef-tests` here: b56be3bc2. I can't find any reason why this would be an issue, if anything I think it'll be better since the genesis-alias has caught us out a few times (0x00..00 isn't actually a real root). Edit: I did find a case where the `network` expected the 0x00..00 alias and patched it here: 3f26ac3e2.
You'll notice a lot of changes in tests. Generally, tests should be functionally equivalent. Here are the things creating the most diff-noise in tests:
- Changing tests to be `tokio::async` tests.
- Adding `.await` to fork choice, block processing and block production functions.
- Refactor of the `canonical_head` "API" provided by the `BeaconChain`. E.g., `chain.canonical_head.cached_head()` instead of `chain.canonical_head.read()`.
- Wrapping `SignedBeaconBlock` in an `Arc`.
- In the `beacon_chain/tests/block_verification`, we can't use the `lazy_static` `CHAIN_SEGMENT` variable anymore since it's generated with an async function. We just generate it in each test, not so efficient but hopefully insignificant.
I had to disable `rayon` concurrent tests in the `fork_choice` tests. This is because the use of `rayon` and `block_on` was causing a panic.
Co-authored-by: Mac L <mjladson@pm.me>
2022-07-03 05:36:50 +00:00
|
|
|
"tokio",
|
2021-11-29 03:57:54 +00:00
|
|
|
"tree_hash",
|
2022-03-31 07:52:23 +00:00
|
|
|
"tree_hash_derive",
|
2019-12-09 11:39:44 +00:00
|
|
|
]
|
|
|
|
|
2021-05-19 23:05:16 +00:00
|
|
|
[[package]]
|
|
|
|
name = "ucd-trie"
|
2022-07-05 23:36:42 +00:00
|
|
|
version = "0.1.4"
|
2021-05-19 23:05:16 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2022-07-05 23:36:42 +00:00
|
|
|
checksum = "89570599c4fe5585de2b388aab47e99f7fa4e9238a1399f707a02e356058141c"
|
2021-05-19 23:05:16 +00:00
|
|
|
|
2021-07-05 00:54:17 +00:00
|
|
|
[[package]]
|
|
|
|
name = "uint"
|
2022-02-07 23:25:03 +00:00
|
|
|
version = "0.9.3"
|
2021-07-05 00:54:17 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2022-02-07 23:25:03 +00:00
|
|
|
checksum = "12f03af7ccf01dd611cc450a0d10dbc9b745770d096473e2faf0ca6e2d66d1e0"
|
2021-07-05 00:54:17 +00:00
|
|
|
dependencies = [
|
2021-10-14 02:58:11 +00:00
|
|
|
"arbitrary",
|
2021-07-05 00:54:17 +00:00
|
|
|
"byteorder",
|
|
|
|
"crunchy",
|
|
|
|
"hex",
|
|
|
|
"static_assertions",
|
|
|
|
]
|
|
|
|
|
2020-05-29 02:03:30 +00:00
|
|
|
[[package]]
|
|
|
|
name = "unescape"
|
|
|
|
version = "0.1.0"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "ccb97dac3243214f8d8507998906ca3e2e0b900bf9bf4870477f125b82e68f6e"
|
|
|
|
|
2019-12-09 11:39:44 +00:00
|
|
|
[[package]]
|
|
|
|
name = "unicase"
|
|
|
|
version = "2.6.0"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2020-05-10 09:56:31 +00:00
|
|
|
checksum = "50f37be617794602aabbeee0be4f259dc1778fabe05e2d67ee8f79326d5cb4f6"
|
2019-12-09 11:39:44 +00:00
|
|
|
dependencies = [
|
2020-12-09 01:34:58 +00:00
|
|
|
"version_check",
|
2019-12-09 11:39:44 +00:00
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "unicode-bidi"
|
2022-06-18 23:59:43 +00:00
|
|
|
version = "0.3.8"
|
2019-12-09 11:39:44 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2022-06-18 23:59:43 +00:00
|
|
|
checksum = "099b7128301d285f79ddd55b9a83d5e6b9e97c92e0ea0daebee7263e932de992"
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "unicode-ident"
|
|
|
|
version = "1.0.1"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "5bd2fe26506023ed7b5e1e315add59d6f584c621d037f9368fea9cfb988f368c"
|
2019-12-09 11:39:44 +00:00
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "unicode-normalization"
|
2022-07-05 23:36:42 +00:00
|
|
|
version = "0.1.21"
|
2019-12-09 11:39:44 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2022-07-05 23:36:42 +00:00
|
|
|
checksum = "854cbdc4f7bc6ae19c820d44abdc3277ac3e1b2b93db20a636825d9322fb60e6"
|
2019-12-09 11:39:44 +00:00
|
|
|
dependencies = [
|
2020-07-06 01:55:56 +00:00
|
|
|
"tinyvec",
|
2019-12-09 11:39:44 +00:00
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
2020-05-17 11:16:48 +00:00
|
|
|
name = "unicode-segmentation"
|
2022-02-10 04:12:03 +00:00
|
|
|
version = "1.9.0"
|
2019-12-09 11:39:44 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2022-02-10 04:12:03 +00:00
|
|
|
checksum = "7e8820f5d777f6224dc4be3632222971ac30164d4a258d595640799554ebfd99"
|
2019-12-09 11:39:44 +00:00
|
|
|
|
|
|
|
[[package]]
|
2020-05-17 11:16:48 +00:00
|
|
|
name = "unicode-width"
|
2021-10-01 01:23:55 +00:00
|
|
|
version = "0.1.9"
|
2019-12-09 11:39:44 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2021-10-01 01:23:55 +00:00
|
|
|
checksum = "3ed742d4ea2bd1176e236172c8429aaf54486e7ac098db29ffe6529e0ce50973"
|
2019-12-09 11:39:44 +00:00
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "unicode-xid"
|
2022-06-18 23:59:43 +00:00
|
|
|
version = "0.2.3"
|
2019-12-09 11:39:44 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2022-06-18 23:59:43 +00:00
|
|
|
checksum = "957e51f3646910546462e67d5f7599b9e4fb8acdd304b087a6494730f9eebf04"
|
2019-12-09 11:39:44 +00:00
|
|
|
|
2020-06-29 10:25:42 +00:00
|
|
|
[[package]]
|
|
|
|
name = "universal-hash"
|
2021-08-17 01:00:24 +00:00
|
|
|
version = "0.4.1"
|
2020-06-29 10:25:42 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2021-08-17 01:00:24 +00:00
|
|
|
checksum = "9f214e8f697e925001e66ec2c6e37a4ef93f0f78c2eed7814394e10c62025b05"
|
2020-06-29 10:25:42 +00:00
|
|
|
dependencies = [
|
2021-07-13 00:48:33 +00:00
|
|
|
"generic-array",
|
|
|
|
"subtle",
|
2020-06-29 10:25:42 +00:00
|
|
|
]
|
|
|
|
|
2020-08-27 07:04:12 +00:00
|
|
|
[[package]]
|
|
|
|
name = "unsigned-varint"
|
2021-02-10 23:29:49 +00:00
|
|
|
version = "0.6.0"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "35581ff83d4101e58b582e607120c7f5ffb17e632a980b1f38334d76b36908b2"
|
2020-08-30 13:06:50 +00:00
|
|
|
dependencies = [
|
2021-10-29 01:59:29 +00:00
|
|
|
"bytes",
|
2022-06-18 23:59:43 +00:00
|
|
|
"tokio-util 0.6.10",
|
2020-08-30 13:06:50 +00:00
|
|
|
]
|
2020-08-27 07:04:12 +00:00
|
|
|
|
2021-03-02 05:59:49 +00:00
|
|
|
[[package]]
|
|
|
|
name = "unsigned-varint"
|
2021-11-18 05:08:42 +00:00
|
|
|
version = "0.7.1"
|
2021-03-02 05:59:49 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2021-11-18 05:08:42 +00:00
|
|
|
checksum = "d86a8dc7f45e4c1b0d30e43038c38f274e77af056aa5f74b93c2cf9eb3c1c836"
|
2021-03-02 05:59:49 +00:00
|
|
|
dependencies = [
|
|
|
|
"asynchronous-codec",
|
2021-10-29 01:59:29 +00:00
|
|
|
"bytes",
|
2021-03-02 05:59:49 +00:00
|
|
|
]
|
|
|
|
|
2019-12-09 11:39:44 +00:00
|
|
|
[[package]]
|
|
|
|
name = "untrusted"
|
2020-05-10 09:56:31 +00:00
|
|
|
version = "0.7.1"
|
2019-12-09 11:39:44 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2020-05-10 09:56:31 +00:00
|
|
|
checksum = "a156c684c91ea7d62626509bce3cb4e1d9ed5c4d978f7b4352658f96a4c26b4a"
|
2019-12-09 11:39:44 +00:00
|
|
|
|
2022-02-17 21:47:06 +00:00
|
|
|
[[package]]
|
|
|
|
name = "unused_port"
|
|
|
|
version = "0.1.0"
|
|
|
|
|
2019-12-09 11:39:44 +00:00
|
|
|
[[package]]
|
|
|
|
name = "url"
|
2021-07-05 00:54:17 +00:00
|
|
|
version = "2.2.2"
|
2019-12-09 11:39:44 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2021-07-05 00:54:17 +00:00
|
|
|
checksum = "a507c383b2d33b5fc35d1861e77e6b383d158b2da5e14fe51b83dfedf6fd578c"
|
2019-12-09 11:39:44 +00:00
|
|
|
dependencies = [
|
2020-11-13 06:06:35 +00:00
|
|
|
"form_urlencoded",
|
2020-12-09 01:34:58 +00:00
|
|
|
"idna",
|
2020-05-10 09:56:31 +00:00
|
|
|
"matches",
|
2020-12-09 01:34:58 +00:00
|
|
|
"percent-encoding",
|
2019-12-09 11:39:44 +00:00
|
|
|
]
|
|
|
|
|
2020-09-29 03:46:54 +00:00
|
|
|
[[package]]
|
|
|
|
name = "utf-8"
|
2021-05-04 00:44:05 +00:00
|
|
|
version = "0.7.6"
|
2020-09-29 03:46:54 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2021-05-04 00:44:05 +00:00
|
|
|
checksum = "09cc8ee72d2a9becf2f2febe0205bbed8fc6615b7cb429ad062dc7b7ddd036a9"
|
2020-09-29 03:46:54 +00:00
|
|
|
|
2020-05-11 07:45:06 +00:00
|
|
|
[[package]]
|
|
|
|
name = "uuid"
|
2021-02-10 23:29:49 +00:00
|
|
|
version = "0.8.2"
|
2020-05-11 07:45:06 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2021-02-10 23:29:49 +00:00
|
|
|
checksum = "bc5cf98d8186244414c848017f0e2676b3fcb46807f6668a97dfe67359a3c4b7"
|
2020-05-11 07:45:06 +00:00
|
|
|
dependencies = [
|
2022-06-18 23:59:43 +00:00
|
|
|
"getrandom 0.2.7",
|
2020-05-11 07:45:06 +00:00
|
|
|
"serde",
|
|
|
|
]
|
|
|
|
|
2019-12-09 11:39:44 +00:00
|
|
|
[[package]]
|
|
|
|
name = "validator_client"
|
2020-11-18 00:44:28 +00:00
|
|
|
version = "0.3.5"
|
2019-12-09 11:39:44 +00:00
|
|
|
dependencies = [
|
2020-07-22 09:34:55 +00:00
|
|
|
"account_utils",
|
2020-10-05 10:50:43 +00:00
|
|
|
"bincode",
|
2020-05-10 09:56:31 +00:00
|
|
|
"bls",
|
|
|
|
"clap",
|
Wallet-based, encrypted key management (#1138)
* Update hashmap hashset to stable futures
* Adds panic test to hashset delay
* Port remote_beacon_node to stable futures
* Fix lcli merge conflicts
* Non rpc stuff compiles
* Remove padding
* Add error enum, zeroize more things
* Fix comment
* protocol.rs compiles
* Port websockets, timer and notifier to stable futures (#1035)
* Fix lcli
* Port timer to stable futures
* Fix timer
* Port websocket_server to stable futures
* Port notifier to stable futures
* Add TODOS
* Port remote_beacon_node to stable futures
* Partial eth2-libp2p stable future upgrade
* Finished first round of fighting RPC types
* Further progress towards porting eth2-libp2p adds caching to discovery
* Update behaviour
* Add keystore builder
* Remove keystore stuff from val client
* Add more tests, comments
* RPC handler to stable futures
* Update RPC to master libp2p
* Add more comments, test vectors
* Network service additions
* Progress on improving JSON validation
* More JSON verification
* Start moving JSON into own mod
* Remove old code
* Add more tests, reader/writers
* Tidy
* Move keystore into own file
* Move more logic into keystore file
* Tidy
* Tidy
* Fix the fallback transport construction (#1102)
* Allow for odd-character hex
* Correct warning
* Remove hashmap delay
* Compiling version of eth2-libp2p
* Update all crates versions
* Fix conversion function and add tests (#1113)
* Add more json missing field checks
* Use scrypt by default
* Tidy, address comments
* Test path and uuid in vectors
* Fix comment
* Add checks for kdf params
* Enforce empty kdf message
* Port validator_client to stable futures (#1114)
* Add PH & MS slot clock changes
* Account for genesis time
* Add progress on duties refactor
* Add simple is_aggregator bool to val subscription
* Start work on attestation_verification.rs
* Add progress on ObservedAttestations
* Progress with ObservedAttestations
* Fix tests
* Add observed attestations to the beacon chain
* Add attestation observation to processing code
* Add progress on attestation verification
* Add first draft of ObservedAttesters
* Add more tests
* Add observed attesters to beacon chain
* Add observers to attestation processing
* Add more attestation verification
* Create ObservedAggregators map
* Remove commented-out code
* Add observed aggregators into chain
* Add progress
* Finish adding features to attestation verification
* Ensure beacon chain compiles
* Link attn verification into chain
* Integrate new attn verification in chain
* Remove old attestation processing code
* Start trying to fix beacon_chain tests
* Split adding into pools into two functions
* Add aggregation to harness
* Get test harness working again
* Adjust the number of aggregators for test harness
* Fix edge-case in harness
* Integrate new attn processing in network
* Fix compile bug in validator_client
* Update validator API endpoints
* Fix aggreagation in test harness
* Fix enum thing
* Fix attestation observation bug:
* Patch failing API tests
* Start adding comments to attestation verification
* Remove unused attestation field
* Unify "is block known" logic
* Update comments
* Supress fork choice errors for network processing
* Add todos
* Tidy
* Add gossip attn tests
* Disallow test harness to produce old attns
* Comment out in-progress tests
* Partially address pruning tests
* Fix failing store test
* Add aggregate tests
* Add comments about which spec conditions we check
* Dont re-aggregate
* Split apart test harness attn production
* Fix compile error in network
* Make progress on commented-out test
* Fix skipping attestation test
* Add fork choice verification tests
* Tidy attn tests, remove dead code
* Remove some accidentally added code
* Fix clippy lint
* Rename test file
* Add block tests, add cheap block proposer check
* Rename block testing file
* Add observed_block_producers
* Tidy
* Switch around block signature verification
* Finish block testing
* Remove gossip from signature tests
* First pass of self review
* Fix deviation in spec
* Update test spec tags
* Start moving over to hashset
* Finish moving observed attesters to hashmap
* Move aggregation pool over to hashmap
* Make fc attn borrow again
* Fix rest_api compile error
* Fix missing comments
* Fix monster test
* Uncomment increasing slots test
* Address remaining comments
* Remove unsafe, use cfg test
* Remove cfg test flag
* Fix dodgy comment
* Revert "Update hashmap hashset to stable futures"
This reverts commit d432378a3cc5cd67fc29c0b15b96b886c1323554.
* Revert "Adds panic test to hashset delay"
This reverts commit 281502396fc5b90d9c421a309c2c056982c9525b.
* Ported attestation_service
* Ported duties_service
* Ported fork_service
* More ports
* Port block_service
* Minor fixes
* VC compiles
* Update TODOS
* Borrow self where possible
* Ignore aggregates that are already known.
* Unify aggregator modulo logic
* Fix typo in logs
* Refactor validator subscription logic
* Avoid reproducing selection proof
* Skip HTTP call if no subscriptions
* Rename DutyAndState -> DutyAndProof
* Tidy logs
* Print root as dbg
* Fix compile errors in tests
* Fix compile error in test
* Re-Fix attestation and duties service
* Minor fixes
Co-authored-by: Paul Hauner <paul@paulhauner.com>
* Expose json_keystore mod
* First commits on path derivation
* Progress with implementation
* More progress
* Passing intermediate test vectors
* Tidy, add comments
* Add DerivedKey structs
* Move key derivation into own crate
* Add zeroize structs
* Return error for empty seed
* Add tests
* Tidy
* First commits on path derivation
* Progress with implementation
* Move key derivation into own crate
* Start defining JSON wallet
* Add progress
* Split out encrypt/decrypt
* First commits on path derivation
* Progress with implementation
* More progress
* Passing intermediate test vectors
* Tidy, add comments
* Add DerivedKey structs
* Move key derivation into own crate
* Add zeroize structs
* Return error for empty seed
* Add tests
* Tidy
* Add progress
* Replace some password usage with slice
* First commits on path derivation
* Progress with implementation
* More progress
* Passing intermediate test vectors
* Tidy, add comments
* Add DerivedKey structs
* Move key derivation into own crate
* Add zeroize structs
* Return error for empty seed
* Add tests
* Tidy
* Add progress
* Expose PlainText struct
* First commits on path derivation
* Progress with implementation
* More progress
* Passing intermediate test vectors
* Tidy, add comments
* Add DerivedKey structs
* Move key derivation into own crate
* Add zeroize structs
* Return error for empty seed
* Add tests
* Tidy
* Add builder
* Expose consts, remove Password
* Minor progress
* Expose SALT_SIZE
* First compiling version
* Add test vectors
* Network crate update to stable futures
* Move dbg assert statement
* Port account_manager to stable futures (#1121)
* Port account_manager to stable futures
* Run async fns in tokio environment
* Port rest_api crate to stable futures (#1118)
* Port rest_api lib to stable futures
* Reduce tokio features
* Update notifier to stable futures
* Builder update
* Further updates
* Add mnemonic, tidy
* Convert self referential async functions
* Tidy
* Add testing
* Add first attempt at validator_dir
* Present pubkey field
* stable futures fixes (#1124)
* Fix eth1 update functions
* Fix genesis and client
* Fix beacon node lib
* Return appropriate runtimes from environment
* Fix test rig
* Refactor eth1 service update
* Upgrade simulator to stable futures
* Lighthouse compiles on stable futures
* Add first pass of wallet manager
* Progress with CLI
* Remove println debugging statement
* Tidy output
* Tidy 600 perms
* Update libp2p service, start rpc test upgrade
* Add validator creation flow
* Update network crate for new libp2p
* Start tidying, adding comments
* Update tokio::codec to futures_codec (#1128)
* Further work towards RPC corrections
* Correct http timeout and network service select
* Add wallet mgr testing
* Shift LockedWallet into own file
* Add comments to fs
* Start integration into VC
* Use tokio runtime for libp2p
* Revert "Update tokio::codec to futures_codec (#1128)"
This reverts commit e57aea924acf5cbabdcea18895ac07e38a425ed7.
* Upgrade RPC libp2p tests
* Upgrade secio fallback test
* Add lcli keypair upgrade command
* Upgrade gossipsub examples
* Clean up RPC protocol
* Test fixes (#1133)
* Correct websocket timeout and run on os thread
* Fix network test
* Add --secrets-dir to VC
* Remove --legacy-keys from VC
* Clean up PR
* Correct tokio tcp move attestation service tests
* Upgrade attestation service tests
* Fix sim
* Correct network test
* Correct genesis test
* Start docs
* Add progress for validator generation
* Tidy error messages
* Test corrections
* Log info when block is received
* Modify logs and update attester service events
* Stable futures: fixes to vc, eth1 and account manager (#1142)
* Add local testnet scripts
* Remove whiteblock script
* Rename local testnet script
* Move spawns onto handle
* Fix VC panic
* Initial fix to block production issue
* Tidy block producer fix
* Tidy further
* Add local testnet clean script
* Run cargo fmt
* Tidy duties service
* Tidy fork service
* Tidy ForkService
* Tidy AttestationService
* Tidy notifier
* Ensure await is not suppressed in eth1
* Ensure await is not suppressed in account_manager
* Use .ok() instead of .unwrap_or(())
* RPC decoding test for proto
* Update discv5 and eth2-libp2p deps
* Run cargo fmt
* Pre-build keystores for sim
* Fix lcli double runtime issue (#1144)
* Handle stream termination and dialing peer errors
* Correct peer_info variant types
* Add progress on new deposit flow
* Remove unnecessary warnings
* Handle subnet unsubscription removal and improve logigng
* Add logs around ping
* Upgrade discv5 and improve logging
* Handle peer connection status for multiple connections
* Improve network service logging
* Add more incomplete progress
* Improve logging around peer manager
* Upgrade swarm poll centralise peer management
* Identify clients on error
* Fix `remove_peer` in sync (#1150)
* remove_peer removes from all chains
* Remove logs
* Fix early return from loop
* Improved logging, fix panic
* Partially correct tests
* Add deposit command
* Remove old validator directory
* Start adding AM tests
* Stable futures: Vc sync (#1149)
* Improve syncing heuristic
* Add comments
* Use safer method for tolerance
* Fix tests
* Binary testing progress
* Progress with CLI tests
* Use constants for flags
* More account manager testing
* Improve CLI tests
* Move upgrade-legacy-keypairs into account man
* Use rayon for VC key generation
* Add comments to `validator_dir`
* Add testing to validator_dir
* Add fix to eth1-sim
* Check errors in eth1-sim
* Fix mutability issue
* Ensure password file ends in .pass
* Add more tests to wallet manager
* Tidy deposit
* Tidy account manager
* Tidy account manager
* Remove panic
* Generate keypairs earlier in sim
* Tidy eth1-sime
* Try to fix eth1 sim
* Address review comments
* Fix typo in CLI command
* Update docs
* Disable eth1 sim
* Remove eth1 sim completely
Co-authored-by: Age Manning <Age@AgeManning.com>
Co-authored-by: pawanjay176 <pawandhananjay@gmail.com>
2020-05-18 09:01:45 +00:00
|
|
|
"clap_utils",
|
2020-05-10 09:56:31 +00:00
|
|
|
"deposit_contract",
|
2020-09-29 00:02:44 +00:00
|
|
|
"directory",
|
2021-07-05 00:54:17 +00:00
|
|
|
"dirs",
|
2020-05-10 09:56:31 +00:00
|
|
|
"environment",
|
2020-09-29 03:46:54 +00:00
|
|
|
"eth2",
|
2020-07-22 09:34:55 +00:00
|
|
|
"eth2_keystore",
|
2021-11-29 22:32:53 +00:00
|
|
|
"eth2_serde_utils",
|
2020-05-10 09:56:31 +00:00
|
|
|
"exit-future",
|
2021-05-19 23:05:16 +00:00
|
|
|
"filesystem",
|
2021-07-09 03:20:24 +00:00
|
|
|
"futures",
|
2020-10-28 22:19:38 +00:00
|
|
|
"hex",
|
2021-07-09 03:20:24 +00:00
|
|
|
"hyper",
|
2021-08-17 01:00:24 +00:00
|
|
|
"itertools",
|
2020-11-26 01:10:51 +00:00
|
|
|
"lazy_static",
|
2022-04-04 00:26:16 +00:00
|
|
|
"libsecp256k1",
|
2020-11-26 01:10:51 +00:00
|
|
|
"lighthouse_metrics",
|
2020-10-02 09:42:19 +00:00
|
|
|
"lighthouse_version",
|
2020-11-26 11:25:46 +00:00
|
|
|
"lockfile",
|
2022-01-30 23:22:04 +00:00
|
|
|
"logging",
|
2022-06-20 23:20:30 +00:00
|
|
|
"malloc_utils",
|
2021-05-26 05:58:41 +00:00
|
|
|
"monitoring_api",
|
2022-06-18 23:59:43 +00:00
|
|
|
"parking_lot 0.12.1",
|
2022-04-04 00:26:16 +00:00
|
|
|
"rand 0.8.5",
|
2021-09-16 03:26:33 +00:00
|
|
|
"reqwest",
|
2020-10-02 09:42:19 +00:00
|
|
|
"ring",
|
2021-03-17 05:09:57 +00:00
|
|
|
"safe_arith",
|
2021-05-04 01:59:51 +00:00
|
|
|
"sensitive_url",
|
2020-05-10 09:56:31 +00:00
|
|
|
"serde",
|
|
|
|
"serde_derive",
|
|
|
|
"serde_json",
|
2020-05-18 06:25:16 +00:00
|
|
|
"slashing_protection",
|
2020-05-10 09:56:31 +00:00
|
|
|
"slog",
|
|
|
|
"slot_clock",
|
2021-07-31 03:50:52 +00:00
|
|
|
"task_executor",
|
2020-10-02 09:42:19 +00:00
|
|
|
"tempfile",
|
2021-08-17 01:00:24 +00:00
|
|
|
"tokio",
|
2021-11-29 03:57:54 +00:00
|
|
|
"tree_hash",
|
2020-05-10 09:56:31 +00:00
|
|
|
"types",
|
2021-09-16 03:26:33 +00:00
|
|
|
"url",
|
Wallet-based, encrypted key management (#1138)
* Update hashmap hashset to stable futures
* Adds panic test to hashset delay
* Port remote_beacon_node to stable futures
* Fix lcli merge conflicts
* Non rpc stuff compiles
* Remove padding
* Add error enum, zeroize more things
* Fix comment
* protocol.rs compiles
* Port websockets, timer and notifier to stable futures (#1035)
* Fix lcli
* Port timer to stable futures
* Fix timer
* Port websocket_server to stable futures
* Port notifier to stable futures
* Add TODOS
* Port remote_beacon_node to stable futures
* Partial eth2-libp2p stable future upgrade
* Finished first round of fighting RPC types
* Further progress towards porting eth2-libp2p adds caching to discovery
* Update behaviour
* Add keystore builder
* Remove keystore stuff from val client
* Add more tests, comments
* RPC handler to stable futures
* Update RPC to master libp2p
* Add more comments, test vectors
* Network service additions
* Progress on improving JSON validation
* More JSON verification
* Start moving JSON into own mod
* Remove old code
* Add more tests, reader/writers
* Tidy
* Move keystore into own file
* Move more logic into keystore file
* Tidy
* Tidy
* Fix the fallback transport construction (#1102)
* Allow for odd-character hex
* Correct warning
* Remove hashmap delay
* Compiling version of eth2-libp2p
* Update all crates versions
* Fix conversion function and add tests (#1113)
* Add more json missing field checks
* Use scrypt by default
* Tidy, address comments
* Test path and uuid in vectors
* Fix comment
* Add checks for kdf params
* Enforce empty kdf message
* Port validator_client to stable futures (#1114)
* Add PH & MS slot clock changes
* Account for genesis time
* Add progress on duties refactor
* Add simple is_aggregator bool to val subscription
* Start work on attestation_verification.rs
* Add progress on ObservedAttestations
* Progress with ObservedAttestations
* Fix tests
* Add observed attestations to the beacon chain
* Add attestation observation to processing code
* Add progress on attestation verification
* Add first draft of ObservedAttesters
* Add more tests
* Add observed attesters to beacon chain
* Add observers to attestation processing
* Add more attestation verification
* Create ObservedAggregators map
* Remove commented-out code
* Add observed aggregators into chain
* Add progress
* Finish adding features to attestation verification
* Ensure beacon chain compiles
* Link attn verification into chain
* Integrate new attn verification in chain
* Remove old attestation processing code
* Start trying to fix beacon_chain tests
* Split adding into pools into two functions
* Add aggregation to harness
* Get test harness working again
* Adjust the number of aggregators for test harness
* Fix edge-case in harness
* Integrate new attn processing in network
* Fix compile bug in validator_client
* Update validator API endpoints
* Fix aggreagation in test harness
* Fix enum thing
* Fix attestation observation bug:
* Patch failing API tests
* Start adding comments to attestation verification
* Remove unused attestation field
* Unify "is block known" logic
* Update comments
* Supress fork choice errors for network processing
* Add todos
* Tidy
* Add gossip attn tests
* Disallow test harness to produce old attns
* Comment out in-progress tests
* Partially address pruning tests
* Fix failing store test
* Add aggregate tests
* Add comments about which spec conditions we check
* Dont re-aggregate
* Split apart test harness attn production
* Fix compile error in network
* Make progress on commented-out test
* Fix skipping attestation test
* Add fork choice verification tests
* Tidy attn tests, remove dead code
* Remove some accidentally added code
* Fix clippy lint
* Rename test file
* Add block tests, add cheap block proposer check
* Rename block testing file
* Add observed_block_producers
* Tidy
* Switch around block signature verification
* Finish block testing
* Remove gossip from signature tests
* First pass of self review
* Fix deviation in spec
* Update test spec tags
* Start moving over to hashset
* Finish moving observed attesters to hashmap
* Move aggregation pool over to hashmap
* Make fc attn borrow again
* Fix rest_api compile error
* Fix missing comments
* Fix monster test
* Uncomment increasing slots test
* Address remaining comments
* Remove unsafe, use cfg test
* Remove cfg test flag
* Fix dodgy comment
* Revert "Update hashmap hashset to stable futures"
This reverts commit d432378a3cc5cd67fc29c0b15b96b886c1323554.
* Revert "Adds panic test to hashset delay"
This reverts commit 281502396fc5b90d9c421a309c2c056982c9525b.
* Ported attestation_service
* Ported duties_service
* Ported fork_service
* More ports
* Port block_service
* Minor fixes
* VC compiles
* Update TODOS
* Borrow self where possible
* Ignore aggregates that are already known.
* Unify aggregator modulo logic
* Fix typo in logs
* Refactor validator subscription logic
* Avoid reproducing selection proof
* Skip HTTP call if no subscriptions
* Rename DutyAndState -> DutyAndProof
* Tidy logs
* Print root as dbg
* Fix compile errors in tests
* Fix compile error in test
* Re-Fix attestation and duties service
* Minor fixes
Co-authored-by: Paul Hauner <paul@paulhauner.com>
* Expose json_keystore mod
* First commits on path derivation
* Progress with implementation
* More progress
* Passing intermediate test vectors
* Tidy, add comments
* Add DerivedKey structs
* Move key derivation into own crate
* Add zeroize structs
* Return error for empty seed
* Add tests
* Tidy
* First commits on path derivation
* Progress with implementation
* Move key derivation into own crate
* Start defining JSON wallet
* Add progress
* Split out encrypt/decrypt
* First commits on path derivation
* Progress with implementation
* More progress
* Passing intermediate test vectors
* Tidy, add comments
* Add DerivedKey structs
* Move key derivation into own crate
* Add zeroize structs
* Return error for empty seed
* Add tests
* Tidy
* Add progress
* Replace some password usage with slice
* First commits on path derivation
* Progress with implementation
* More progress
* Passing intermediate test vectors
* Tidy, add comments
* Add DerivedKey structs
* Move key derivation into own crate
* Add zeroize structs
* Return error for empty seed
* Add tests
* Tidy
* Add progress
* Expose PlainText struct
* First commits on path derivation
* Progress with implementation
* More progress
* Passing intermediate test vectors
* Tidy, add comments
* Add DerivedKey structs
* Move key derivation into own crate
* Add zeroize structs
* Return error for empty seed
* Add tests
* Tidy
* Add builder
* Expose consts, remove Password
* Minor progress
* Expose SALT_SIZE
* First compiling version
* Add test vectors
* Network crate update to stable futures
* Move dbg assert statement
* Port account_manager to stable futures (#1121)
* Port account_manager to stable futures
* Run async fns in tokio environment
* Port rest_api crate to stable futures (#1118)
* Port rest_api lib to stable futures
* Reduce tokio features
* Update notifier to stable futures
* Builder update
* Further updates
* Add mnemonic, tidy
* Convert self referential async functions
* Tidy
* Add testing
* Add first attempt at validator_dir
* Present pubkey field
* stable futures fixes (#1124)
* Fix eth1 update functions
* Fix genesis and client
* Fix beacon node lib
* Return appropriate runtimes from environment
* Fix test rig
* Refactor eth1 service update
* Upgrade simulator to stable futures
* Lighthouse compiles on stable futures
* Add first pass of wallet manager
* Progress with CLI
* Remove println debugging statement
* Tidy output
* Tidy 600 perms
* Update libp2p service, start rpc test upgrade
* Add validator creation flow
* Update network crate for new libp2p
* Start tidying, adding comments
* Update tokio::codec to futures_codec (#1128)
* Further work towards RPC corrections
* Correct http timeout and network service select
* Add wallet mgr testing
* Shift LockedWallet into own file
* Add comments to fs
* Start integration into VC
* Use tokio runtime for libp2p
* Revert "Update tokio::codec to futures_codec (#1128)"
This reverts commit e57aea924acf5cbabdcea18895ac07e38a425ed7.
* Upgrade RPC libp2p tests
* Upgrade secio fallback test
* Add lcli keypair upgrade command
* Upgrade gossipsub examples
* Clean up RPC protocol
* Test fixes (#1133)
* Correct websocket timeout and run on os thread
* Fix network test
* Add --secrets-dir to VC
* Remove --legacy-keys from VC
* Clean up PR
* Correct tokio tcp move attestation service tests
* Upgrade attestation service tests
* Fix sim
* Correct network test
* Correct genesis test
* Start docs
* Add progress for validator generation
* Tidy error messages
* Test corrections
* Log info when block is received
* Modify logs and update attester service events
* Stable futures: fixes to vc, eth1 and account manager (#1142)
* Add local testnet scripts
* Remove whiteblock script
* Rename local testnet script
* Move spawns onto handle
* Fix VC panic
* Initial fix to block production issue
* Tidy block producer fix
* Tidy further
* Add local testnet clean script
* Run cargo fmt
* Tidy duties service
* Tidy fork service
* Tidy ForkService
* Tidy AttestationService
* Tidy notifier
* Ensure await is not suppressed in eth1
* Ensure await is not suppressed in account_manager
* Use .ok() instead of .unwrap_or(())
* RPC decoding test for proto
* Update discv5 and eth2-libp2p deps
* Run cargo fmt
* Pre-build keystores for sim
* Fix lcli double runtime issue (#1144)
* Handle stream termination and dialing peer errors
* Correct peer_info variant types
* Add progress on new deposit flow
* Remove unnecessary warnings
* Handle subnet unsubscription removal and improve logigng
* Add logs around ping
* Upgrade discv5 and improve logging
* Handle peer connection status for multiple connections
* Improve network service logging
* Add more incomplete progress
* Improve logging around peer manager
* Upgrade swarm poll centralise peer management
* Identify clients on error
* Fix `remove_peer` in sync (#1150)
* remove_peer removes from all chains
* Remove logs
* Fix early return from loop
* Improved logging, fix panic
* Partially correct tests
* Add deposit command
* Remove old validator directory
* Start adding AM tests
* Stable futures: Vc sync (#1149)
* Improve syncing heuristic
* Add comments
* Use safer method for tolerance
* Fix tests
* Binary testing progress
* Progress with CLI tests
* Use constants for flags
* More account manager testing
* Improve CLI tests
* Move upgrade-legacy-keypairs into account man
* Use rayon for VC key generation
* Add comments to `validator_dir`
* Add testing to validator_dir
* Add fix to eth1-sim
* Check errors in eth1-sim
* Fix mutability issue
* Ensure password file ends in .pass
* Add more tests to wallet manager
* Tidy deposit
* Tidy account manager
* Tidy account manager
* Remove panic
* Generate keypairs earlier in sim
* Tidy eth1-sime
* Try to fix eth1 sim
* Address review comments
* Fix typo in CLI command
* Update docs
* Disable eth1 sim
* Remove eth1 sim completely
Co-authored-by: Age Manning <Age@AgeManning.com>
Co-authored-by: pawanjay176 <pawandhananjay@gmail.com>
2020-05-18 09:01:45 +00:00
|
|
|
"validator_dir",
|
2022-04-04 00:26:16 +00:00
|
|
|
"warp",
|
2020-10-02 09:42:19 +00:00
|
|
|
"warp_utils",
|
2019-12-09 11:39:44 +00:00
|
|
|
]
|
|
|
|
|
Wallet-based, encrypted key management (#1138)
* Update hashmap hashset to stable futures
* Adds panic test to hashset delay
* Port remote_beacon_node to stable futures
* Fix lcli merge conflicts
* Non rpc stuff compiles
* Remove padding
* Add error enum, zeroize more things
* Fix comment
* protocol.rs compiles
* Port websockets, timer and notifier to stable futures (#1035)
* Fix lcli
* Port timer to stable futures
* Fix timer
* Port websocket_server to stable futures
* Port notifier to stable futures
* Add TODOS
* Port remote_beacon_node to stable futures
* Partial eth2-libp2p stable future upgrade
* Finished first round of fighting RPC types
* Further progress towards porting eth2-libp2p adds caching to discovery
* Update behaviour
* Add keystore builder
* Remove keystore stuff from val client
* Add more tests, comments
* RPC handler to stable futures
* Update RPC to master libp2p
* Add more comments, test vectors
* Network service additions
* Progress on improving JSON validation
* More JSON verification
* Start moving JSON into own mod
* Remove old code
* Add more tests, reader/writers
* Tidy
* Move keystore into own file
* Move more logic into keystore file
* Tidy
* Tidy
* Fix the fallback transport construction (#1102)
* Allow for odd-character hex
* Correct warning
* Remove hashmap delay
* Compiling version of eth2-libp2p
* Update all crates versions
* Fix conversion function and add tests (#1113)
* Add more json missing field checks
* Use scrypt by default
* Tidy, address comments
* Test path and uuid in vectors
* Fix comment
* Add checks for kdf params
* Enforce empty kdf message
* Port validator_client to stable futures (#1114)
* Add PH & MS slot clock changes
* Account for genesis time
* Add progress on duties refactor
* Add simple is_aggregator bool to val subscription
* Start work on attestation_verification.rs
* Add progress on ObservedAttestations
* Progress with ObservedAttestations
* Fix tests
* Add observed attestations to the beacon chain
* Add attestation observation to processing code
* Add progress on attestation verification
* Add first draft of ObservedAttesters
* Add more tests
* Add observed attesters to beacon chain
* Add observers to attestation processing
* Add more attestation verification
* Create ObservedAggregators map
* Remove commented-out code
* Add observed aggregators into chain
* Add progress
* Finish adding features to attestation verification
* Ensure beacon chain compiles
* Link attn verification into chain
* Integrate new attn verification in chain
* Remove old attestation processing code
* Start trying to fix beacon_chain tests
* Split adding into pools into two functions
* Add aggregation to harness
* Get test harness working again
* Adjust the number of aggregators for test harness
* Fix edge-case in harness
* Integrate new attn processing in network
* Fix compile bug in validator_client
* Update validator API endpoints
* Fix aggreagation in test harness
* Fix enum thing
* Fix attestation observation bug:
* Patch failing API tests
* Start adding comments to attestation verification
* Remove unused attestation field
* Unify "is block known" logic
* Update comments
* Supress fork choice errors for network processing
* Add todos
* Tidy
* Add gossip attn tests
* Disallow test harness to produce old attns
* Comment out in-progress tests
* Partially address pruning tests
* Fix failing store test
* Add aggregate tests
* Add comments about which spec conditions we check
* Dont re-aggregate
* Split apart test harness attn production
* Fix compile error in network
* Make progress on commented-out test
* Fix skipping attestation test
* Add fork choice verification tests
* Tidy attn tests, remove dead code
* Remove some accidentally added code
* Fix clippy lint
* Rename test file
* Add block tests, add cheap block proposer check
* Rename block testing file
* Add observed_block_producers
* Tidy
* Switch around block signature verification
* Finish block testing
* Remove gossip from signature tests
* First pass of self review
* Fix deviation in spec
* Update test spec tags
* Start moving over to hashset
* Finish moving observed attesters to hashmap
* Move aggregation pool over to hashmap
* Make fc attn borrow again
* Fix rest_api compile error
* Fix missing comments
* Fix monster test
* Uncomment increasing slots test
* Address remaining comments
* Remove unsafe, use cfg test
* Remove cfg test flag
* Fix dodgy comment
* Revert "Update hashmap hashset to stable futures"
This reverts commit d432378a3cc5cd67fc29c0b15b96b886c1323554.
* Revert "Adds panic test to hashset delay"
This reverts commit 281502396fc5b90d9c421a309c2c056982c9525b.
* Ported attestation_service
* Ported duties_service
* Ported fork_service
* More ports
* Port block_service
* Minor fixes
* VC compiles
* Update TODOS
* Borrow self where possible
* Ignore aggregates that are already known.
* Unify aggregator modulo logic
* Fix typo in logs
* Refactor validator subscription logic
* Avoid reproducing selection proof
* Skip HTTP call if no subscriptions
* Rename DutyAndState -> DutyAndProof
* Tidy logs
* Print root as dbg
* Fix compile errors in tests
* Fix compile error in test
* Re-Fix attestation and duties service
* Minor fixes
Co-authored-by: Paul Hauner <paul@paulhauner.com>
* Expose json_keystore mod
* First commits on path derivation
* Progress with implementation
* More progress
* Passing intermediate test vectors
* Tidy, add comments
* Add DerivedKey structs
* Move key derivation into own crate
* Add zeroize structs
* Return error for empty seed
* Add tests
* Tidy
* First commits on path derivation
* Progress with implementation
* Move key derivation into own crate
* Start defining JSON wallet
* Add progress
* Split out encrypt/decrypt
* First commits on path derivation
* Progress with implementation
* More progress
* Passing intermediate test vectors
* Tidy, add comments
* Add DerivedKey structs
* Move key derivation into own crate
* Add zeroize structs
* Return error for empty seed
* Add tests
* Tidy
* Add progress
* Replace some password usage with slice
* First commits on path derivation
* Progress with implementation
* More progress
* Passing intermediate test vectors
* Tidy, add comments
* Add DerivedKey structs
* Move key derivation into own crate
* Add zeroize structs
* Return error for empty seed
* Add tests
* Tidy
* Add progress
* Expose PlainText struct
* First commits on path derivation
* Progress with implementation
* More progress
* Passing intermediate test vectors
* Tidy, add comments
* Add DerivedKey structs
* Move key derivation into own crate
* Add zeroize structs
* Return error for empty seed
* Add tests
* Tidy
* Add builder
* Expose consts, remove Password
* Minor progress
* Expose SALT_SIZE
* First compiling version
* Add test vectors
* Network crate update to stable futures
* Move dbg assert statement
* Port account_manager to stable futures (#1121)
* Port account_manager to stable futures
* Run async fns in tokio environment
* Port rest_api crate to stable futures (#1118)
* Port rest_api lib to stable futures
* Reduce tokio features
* Update notifier to stable futures
* Builder update
* Further updates
* Add mnemonic, tidy
* Convert self referential async functions
* Tidy
* Add testing
* Add first attempt at validator_dir
* Present pubkey field
* stable futures fixes (#1124)
* Fix eth1 update functions
* Fix genesis and client
* Fix beacon node lib
* Return appropriate runtimes from environment
* Fix test rig
* Refactor eth1 service update
* Upgrade simulator to stable futures
* Lighthouse compiles on stable futures
* Add first pass of wallet manager
* Progress with CLI
* Remove println debugging statement
* Tidy output
* Tidy 600 perms
* Update libp2p service, start rpc test upgrade
* Add validator creation flow
* Update network crate for new libp2p
* Start tidying, adding comments
* Update tokio::codec to futures_codec (#1128)
* Further work towards RPC corrections
* Correct http timeout and network service select
* Add wallet mgr testing
* Shift LockedWallet into own file
* Add comments to fs
* Start integration into VC
* Use tokio runtime for libp2p
* Revert "Update tokio::codec to futures_codec (#1128)"
This reverts commit e57aea924acf5cbabdcea18895ac07e38a425ed7.
* Upgrade RPC libp2p tests
* Upgrade secio fallback test
* Add lcli keypair upgrade command
* Upgrade gossipsub examples
* Clean up RPC protocol
* Test fixes (#1133)
* Correct websocket timeout and run on os thread
* Fix network test
* Add --secrets-dir to VC
* Remove --legacy-keys from VC
* Clean up PR
* Correct tokio tcp move attestation service tests
* Upgrade attestation service tests
* Fix sim
* Correct network test
* Correct genesis test
* Start docs
* Add progress for validator generation
* Tidy error messages
* Test corrections
* Log info when block is received
* Modify logs and update attester service events
* Stable futures: fixes to vc, eth1 and account manager (#1142)
* Add local testnet scripts
* Remove whiteblock script
* Rename local testnet script
* Move spawns onto handle
* Fix VC panic
* Initial fix to block production issue
* Tidy block producer fix
* Tidy further
* Add local testnet clean script
* Run cargo fmt
* Tidy duties service
* Tidy fork service
* Tidy ForkService
* Tidy AttestationService
* Tidy notifier
* Ensure await is not suppressed in eth1
* Ensure await is not suppressed in account_manager
* Use .ok() instead of .unwrap_or(())
* RPC decoding test for proto
* Update discv5 and eth2-libp2p deps
* Run cargo fmt
* Pre-build keystores for sim
* Fix lcli double runtime issue (#1144)
* Handle stream termination and dialing peer errors
* Correct peer_info variant types
* Add progress on new deposit flow
* Remove unnecessary warnings
* Handle subnet unsubscription removal and improve logigng
* Add logs around ping
* Upgrade discv5 and improve logging
* Handle peer connection status for multiple connections
* Improve network service logging
* Add more incomplete progress
* Improve logging around peer manager
* Upgrade swarm poll centralise peer management
* Identify clients on error
* Fix `remove_peer` in sync (#1150)
* remove_peer removes from all chains
* Remove logs
* Fix early return from loop
* Improved logging, fix panic
* Partially correct tests
* Add deposit command
* Remove old validator directory
* Start adding AM tests
* Stable futures: Vc sync (#1149)
* Improve syncing heuristic
* Add comments
* Use safer method for tolerance
* Fix tests
* Binary testing progress
* Progress with CLI tests
* Use constants for flags
* More account manager testing
* Improve CLI tests
* Move upgrade-legacy-keypairs into account man
* Use rayon for VC key generation
* Add comments to `validator_dir`
* Add testing to validator_dir
* Add fix to eth1-sim
* Check errors in eth1-sim
* Fix mutability issue
* Ensure password file ends in .pass
* Add more tests to wallet manager
* Tidy deposit
* Tidy account manager
* Tidy account manager
* Remove panic
* Generate keypairs earlier in sim
* Tidy eth1-sime
* Try to fix eth1 sim
* Address review comments
* Fix typo in CLI command
* Update docs
* Disable eth1 sim
* Remove eth1 sim completely
Co-authored-by: Age Manning <Age@AgeManning.com>
Co-authored-by: pawanjay176 <pawandhananjay@gmail.com>
2020-05-18 09:01:45 +00:00
|
|
|
[[package]]
|
|
|
|
name = "validator_dir"
|
|
|
|
version = "0.1.0"
|
|
|
|
dependencies = [
|
|
|
|
"bls",
|
|
|
|
"deposit_contract",
|
2020-11-26 11:25:46 +00:00
|
|
|
"derivative",
|
Wallet-based, encrypted key management (#1138)
* Update hashmap hashset to stable futures
* Adds panic test to hashset delay
* Port remote_beacon_node to stable futures
* Fix lcli merge conflicts
* Non rpc stuff compiles
* Remove padding
* Add error enum, zeroize more things
* Fix comment
* protocol.rs compiles
* Port websockets, timer and notifier to stable futures (#1035)
* Fix lcli
* Port timer to stable futures
* Fix timer
* Port websocket_server to stable futures
* Port notifier to stable futures
* Add TODOS
* Port remote_beacon_node to stable futures
* Partial eth2-libp2p stable future upgrade
* Finished first round of fighting RPC types
* Further progress towards porting eth2-libp2p adds caching to discovery
* Update behaviour
* Add keystore builder
* Remove keystore stuff from val client
* Add more tests, comments
* RPC handler to stable futures
* Update RPC to master libp2p
* Add more comments, test vectors
* Network service additions
* Progress on improving JSON validation
* More JSON verification
* Start moving JSON into own mod
* Remove old code
* Add more tests, reader/writers
* Tidy
* Move keystore into own file
* Move more logic into keystore file
* Tidy
* Tidy
* Fix the fallback transport construction (#1102)
* Allow for odd-character hex
* Correct warning
* Remove hashmap delay
* Compiling version of eth2-libp2p
* Update all crates versions
* Fix conversion function and add tests (#1113)
* Add more json missing field checks
* Use scrypt by default
* Tidy, address comments
* Test path and uuid in vectors
* Fix comment
* Add checks for kdf params
* Enforce empty kdf message
* Port validator_client to stable futures (#1114)
* Add PH & MS slot clock changes
* Account for genesis time
* Add progress on duties refactor
* Add simple is_aggregator bool to val subscription
* Start work on attestation_verification.rs
* Add progress on ObservedAttestations
* Progress with ObservedAttestations
* Fix tests
* Add observed attestations to the beacon chain
* Add attestation observation to processing code
* Add progress on attestation verification
* Add first draft of ObservedAttesters
* Add more tests
* Add observed attesters to beacon chain
* Add observers to attestation processing
* Add more attestation verification
* Create ObservedAggregators map
* Remove commented-out code
* Add observed aggregators into chain
* Add progress
* Finish adding features to attestation verification
* Ensure beacon chain compiles
* Link attn verification into chain
* Integrate new attn verification in chain
* Remove old attestation processing code
* Start trying to fix beacon_chain tests
* Split adding into pools into two functions
* Add aggregation to harness
* Get test harness working again
* Adjust the number of aggregators for test harness
* Fix edge-case in harness
* Integrate new attn processing in network
* Fix compile bug in validator_client
* Update validator API endpoints
* Fix aggreagation in test harness
* Fix enum thing
* Fix attestation observation bug:
* Patch failing API tests
* Start adding comments to attestation verification
* Remove unused attestation field
* Unify "is block known" logic
* Update comments
* Supress fork choice errors for network processing
* Add todos
* Tidy
* Add gossip attn tests
* Disallow test harness to produce old attns
* Comment out in-progress tests
* Partially address pruning tests
* Fix failing store test
* Add aggregate tests
* Add comments about which spec conditions we check
* Dont re-aggregate
* Split apart test harness attn production
* Fix compile error in network
* Make progress on commented-out test
* Fix skipping attestation test
* Add fork choice verification tests
* Tidy attn tests, remove dead code
* Remove some accidentally added code
* Fix clippy lint
* Rename test file
* Add block tests, add cheap block proposer check
* Rename block testing file
* Add observed_block_producers
* Tidy
* Switch around block signature verification
* Finish block testing
* Remove gossip from signature tests
* First pass of self review
* Fix deviation in spec
* Update test spec tags
* Start moving over to hashset
* Finish moving observed attesters to hashmap
* Move aggregation pool over to hashmap
* Make fc attn borrow again
* Fix rest_api compile error
* Fix missing comments
* Fix monster test
* Uncomment increasing slots test
* Address remaining comments
* Remove unsafe, use cfg test
* Remove cfg test flag
* Fix dodgy comment
* Revert "Update hashmap hashset to stable futures"
This reverts commit d432378a3cc5cd67fc29c0b15b96b886c1323554.
* Revert "Adds panic test to hashset delay"
This reverts commit 281502396fc5b90d9c421a309c2c056982c9525b.
* Ported attestation_service
* Ported duties_service
* Ported fork_service
* More ports
* Port block_service
* Minor fixes
* VC compiles
* Update TODOS
* Borrow self where possible
* Ignore aggregates that are already known.
* Unify aggregator modulo logic
* Fix typo in logs
* Refactor validator subscription logic
* Avoid reproducing selection proof
* Skip HTTP call if no subscriptions
* Rename DutyAndState -> DutyAndProof
* Tidy logs
* Print root as dbg
* Fix compile errors in tests
* Fix compile error in test
* Re-Fix attestation and duties service
* Minor fixes
Co-authored-by: Paul Hauner <paul@paulhauner.com>
* Expose json_keystore mod
* First commits on path derivation
* Progress with implementation
* More progress
* Passing intermediate test vectors
* Tidy, add comments
* Add DerivedKey structs
* Move key derivation into own crate
* Add zeroize structs
* Return error for empty seed
* Add tests
* Tidy
* First commits on path derivation
* Progress with implementation
* Move key derivation into own crate
* Start defining JSON wallet
* Add progress
* Split out encrypt/decrypt
* First commits on path derivation
* Progress with implementation
* More progress
* Passing intermediate test vectors
* Tidy, add comments
* Add DerivedKey structs
* Move key derivation into own crate
* Add zeroize structs
* Return error for empty seed
* Add tests
* Tidy
* Add progress
* Replace some password usage with slice
* First commits on path derivation
* Progress with implementation
* More progress
* Passing intermediate test vectors
* Tidy, add comments
* Add DerivedKey structs
* Move key derivation into own crate
* Add zeroize structs
* Return error for empty seed
* Add tests
* Tidy
* Add progress
* Expose PlainText struct
* First commits on path derivation
* Progress with implementation
* More progress
* Passing intermediate test vectors
* Tidy, add comments
* Add DerivedKey structs
* Move key derivation into own crate
* Add zeroize structs
* Return error for empty seed
* Add tests
* Tidy
* Add builder
* Expose consts, remove Password
* Minor progress
* Expose SALT_SIZE
* First compiling version
* Add test vectors
* Network crate update to stable futures
* Move dbg assert statement
* Port account_manager to stable futures (#1121)
* Port account_manager to stable futures
* Run async fns in tokio environment
* Port rest_api crate to stable futures (#1118)
* Port rest_api lib to stable futures
* Reduce tokio features
* Update notifier to stable futures
* Builder update
* Further updates
* Add mnemonic, tidy
* Convert self referential async functions
* Tidy
* Add testing
* Add first attempt at validator_dir
* Present pubkey field
* stable futures fixes (#1124)
* Fix eth1 update functions
* Fix genesis and client
* Fix beacon node lib
* Return appropriate runtimes from environment
* Fix test rig
* Refactor eth1 service update
* Upgrade simulator to stable futures
* Lighthouse compiles on stable futures
* Add first pass of wallet manager
* Progress with CLI
* Remove println debugging statement
* Tidy output
* Tidy 600 perms
* Update libp2p service, start rpc test upgrade
* Add validator creation flow
* Update network crate for new libp2p
* Start tidying, adding comments
* Update tokio::codec to futures_codec (#1128)
* Further work towards RPC corrections
* Correct http timeout and network service select
* Add wallet mgr testing
* Shift LockedWallet into own file
* Add comments to fs
* Start integration into VC
* Use tokio runtime for libp2p
* Revert "Update tokio::codec to futures_codec (#1128)"
This reverts commit e57aea924acf5cbabdcea18895ac07e38a425ed7.
* Upgrade RPC libp2p tests
* Upgrade secio fallback test
* Add lcli keypair upgrade command
* Upgrade gossipsub examples
* Clean up RPC protocol
* Test fixes (#1133)
* Correct websocket timeout and run on os thread
* Fix network test
* Add --secrets-dir to VC
* Remove --legacy-keys from VC
* Clean up PR
* Correct tokio tcp move attestation service tests
* Upgrade attestation service tests
* Fix sim
* Correct network test
* Correct genesis test
* Start docs
* Add progress for validator generation
* Tidy error messages
* Test corrections
* Log info when block is received
* Modify logs and update attester service events
* Stable futures: fixes to vc, eth1 and account manager (#1142)
* Add local testnet scripts
* Remove whiteblock script
* Rename local testnet script
* Move spawns onto handle
* Fix VC panic
* Initial fix to block production issue
* Tidy block producer fix
* Tidy further
* Add local testnet clean script
* Run cargo fmt
* Tidy duties service
* Tidy fork service
* Tidy ForkService
* Tidy AttestationService
* Tidy notifier
* Ensure await is not suppressed in eth1
* Ensure await is not suppressed in account_manager
* Use .ok() instead of .unwrap_or(())
* RPC decoding test for proto
* Update discv5 and eth2-libp2p deps
* Run cargo fmt
* Pre-build keystores for sim
* Fix lcli double runtime issue (#1144)
* Handle stream termination and dialing peer errors
* Correct peer_info variant types
* Add progress on new deposit flow
* Remove unnecessary warnings
* Handle subnet unsubscription removal and improve logigng
* Add logs around ping
* Upgrade discv5 and improve logging
* Handle peer connection status for multiple connections
* Improve network service logging
* Add more incomplete progress
* Improve logging around peer manager
* Upgrade swarm poll centralise peer management
* Identify clients on error
* Fix `remove_peer` in sync (#1150)
* remove_peer removes from all chains
* Remove logs
* Fix early return from loop
* Improved logging, fix panic
* Partially correct tests
* Add deposit command
* Remove old validator directory
* Start adding AM tests
* Stable futures: Vc sync (#1149)
* Improve syncing heuristic
* Add comments
* Use safer method for tolerance
* Fix tests
* Binary testing progress
* Progress with CLI tests
* Use constants for flags
* More account manager testing
* Improve CLI tests
* Move upgrade-legacy-keypairs into account man
* Use rayon for VC key generation
* Add comments to `validator_dir`
* Add testing to validator_dir
* Add fix to eth1-sim
* Check errors in eth1-sim
* Fix mutability issue
* Ensure password file ends in .pass
* Add more tests to wallet manager
* Tidy deposit
* Tidy account manager
* Tidy account manager
* Remove panic
* Generate keypairs earlier in sim
* Tidy eth1-sime
* Try to fix eth1 sim
* Address review comments
* Fix typo in CLI command
* Update docs
* Disable eth1 sim
* Remove eth1 sim completely
Co-authored-by: Age Manning <Age@AgeManning.com>
Co-authored-by: pawanjay176 <pawandhananjay@gmail.com>
2020-05-18 09:01:45 +00:00
|
|
|
"eth2_keystore",
|
2021-05-19 23:05:16 +00:00
|
|
|
"filesystem",
|
2020-10-28 22:19:38 +00:00
|
|
|
"hex",
|
2020-11-26 11:25:46 +00:00
|
|
|
"lockfile",
|
2022-04-04 00:26:16 +00:00
|
|
|
"rand 0.8.5",
|
Wallet-based, encrypted key management (#1138)
* Update hashmap hashset to stable futures
* Adds panic test to hashset delay
* Port remote_beacon_node to stable futures
* Fix lcli merge conflicts
* Non rpc stuff compiles
* Remove padding
* Add error enum, zeroize more things
* Fix comment
* protocol.rs compiles
* Port websockets, timer and notifier to stable futures (#1035)
* Fix lcli
* Port timer to stable futures
* Fix timer
* Port websocket_server to stable futures
* Port notifier to stable futures
* Add TODOS
* Port remote_beacon_node to stable futures
* Partial eth2-libp2p stable future upgrade
* Finished first round of fighting RPC types
* Further progress towards porting eth2-libp2p adds caching to discovery
* Update behaviour
* Add keystore builder
* Remove keystore stuff from val client
* Add more tests, comments
* RPC handler to stable futures
* Update RPC to master libp2p
* Add more comments, test vectors
* Network service additions
* Progress on improving JSON validation
* More JSON verification
* Start moving JSON into own mod
* Remove old code
* Add more tests, reader/writers
* Tidy
* Move keystore into own file
* Move more logic into keystore file
* Tidy
* Tidy
* Fix the fallback transport construction (#1102)
* Allow for odd-character hex
* Correct warning
* Remove hashmap delay
* Compiling version of eth2-libp2p
* Update all crates versions
* Fix conversion function and add tests (#1113)
* Add more json missing field checks
* Use scrypt by default
* Tidy, address comments
* Test path and uuid in vectors
* Fix comment
* Add checks for kdf params
* Enforce empty kdf message
* Port validator_client to stable futures (#1114)
* Add PH & MS slot clock changes
* Account for genesis time
* Add progress on duties refactor
* Add simple is_aggregator bool to val subscription
* Start work on attestation_verification.rs
* Add progress on ObservedAttestations
* Progress with ObservedAttestations
* Fix tests
* Add observed attestations to the beacon chain
* Add attestation observation to processing code
* Add progress on attestation verification
* Add first draft of ObservedAttesters
* Add more tests
* Add observed attesters to beacon chain
* Add observers to attestation processing
* Add more attestation verification
* Create ObservedAggregators map
* Remove commented-out code
* Add observed aggregators into chain
* Add progress
* Finish adding features to attestation verification
* Ensure beacon chain compiles
* Link attn verification into chain
* Integrate new attn verification in chain
* Remove old attestation processing code
* Start trying to fix beacon_chain tests
* Split adding into pools into two functions
* Add aggregation to harness
* Get test harness working again
* Adjust the number of aggregators for test harness
* Fix edge-case in harness
* Integrate new attn processing in network
* Fix compile bug in validator_client
* Update validator API endpoints
* Fix aggreagation in test harness
* Fix enum thing
* Fix attestation observation bug:
* Patch failing API tests
* Start adding comments to attestation verification
* Remove unused attestation field
* Unify "is block known" logic
* Update comments
* Supress fork choice errors for network processing
* Add todos
* Tidy
* Add gossip attn tests
* Disallow test harness to produce old attns
* Comment out in-progress tests
* Partially address pruning tests
* Fix failing store test
* Add aggregate tests
* Add comments about which spec conditions we check
* Dont re-aggregate
* Split apart test harness attn production
* Fix compile error in network
* Make progress on commented-out test
* Fix skipping attestation test
* Add fork choice verification tests
* Tidy attn tests, remove dead code
* Remove some accidentally added code
* Fix clippy lint
* Rename test file
* Add block tests, add cheap block proposer check
* Rename block testing file
* Add observed_block_producers
* Tidy
* Switch around block signature verification
* Finish block testing
* Remove gossip from signature tests
* First pass of self review
* Fix deviation in spec
* Update test spec tags
* Start moving over to hashset
* Finish moving observed attesters to hashmap
* Move aggregation pool over to hashmap
* Make fc attn borrow again
* Fix rest_api compile error
* Fix missing comments
* Fix monster test
* Uncomment increasing slots test
* Address remaining comments
* Remove unsafe, use cfg test
* Remove cfg test flag
* Fix dodgy comment
* Revert "Update hashmap hashset to stable futures"
This reverts commit d432378a3cc5cd67fc29c0b15b96b886c1323554.
* Revert "Adds panic test to hashset delay"
This reverts commit 281502396fc5b90d9c421a309c2c056982c9525b.
* Ported attestation_service
* Ported duties_service
* Ported fork_service
* More ports
* Port block_service
* Minor fixes
* VC compiles
* Update TODOS
* Borrow self where possible
* Ignore aggregates that are already known.
* Unify aggregator modulo logic
* Fix typo in logs
* Refactor validator subscription logic
* Avoid reproducing selection proof
* Skip HTTP call if no subscriptions
* Rename DutyAndState -> DutyAndProof
* Tidy logs
* Print root as dbg
* Fix compile errors in tests
* Fix compile error in test
* Re-Fix attestation and duties service
* Minor fixes
Co-authored-by: Paul Hauner <paul@paulhauner.com>
* Expose json_keystore mod
* First commits on path derivation
* Progress with implementation
* More progress
* Passing intermediate test vectors
* Tidy, add comments
* Add DerivedKey structs
* Move key derivation into own crate
* Add zeroize structs
* Return error for empty seed
* Add tests
* Tidy
* First commits on path derivation
* Progress with implementation
* Move key derivation into own crate
* Start defining JSON wallet
* Add progress
* Split out encrypt/decrypt
* First commits on path derivation
* Progress with implementation
* More progress
* Passing intermediate test vectors
* Tidy, add comments
* Add DerivedKey structs
* Move key derivation into own crate
* Add zeroize structs
* Return error for empty seed
* Add tests
* Tidy
* Add progress
* Replace some password usage with slice
* First commits on path derivation
* Progress with implementation
* More progress
* Passing intermediate test vectors
* Tidy, add comments
* Add DerivedKey structs
* Move key derivation into own crate
* Add zeroize structs
* Return error for empty seed
* Add tests
* Tidy
* Add progress
* Expose PlainText struct
* First commits on path derivation
* Progress with implementation
* More progress
* Passing intermediate test vectors
* Tidy, add comments
* Add DerivedKey structs
* Move key derivation into own crate
* Add zeroize structs
* Return error for empty seed
* Add tests
* Tidy
* Add builder
* Expose consts, remove Password
* Minor progress
* Expose SALT_SIZE
* First compiling version
* Add test vectors
* Network crate update to stable futures
* Move dbg assert statement
* Port account_manager to stable futures (#1121)
* Port account_manager to stable futures
* Run async fns in tokio environment
* Port rest_api crate to stable futures (#1118)
* Port rest_api lib to stable futures
* Reduce tokio features
* Update notifier to stable futures
* Builder update
* Further updates
* Add mnemonic, tidy
* Convert self referential async functions
* Tidy
* Add testing
* Add first attempt at validator_dir
* Present pubkey field
* stable futures fixes (#1124)
* Fix eth1 update functions
* Fix genesis and client
* Fix beacon node lib
* Return appropriate runtimes from environment
* Fix test rig
* Refactor eth1 service update
* Upgrade simulator to stable futures
* Lighthouse compiles on stable futures
* Add first pass of wallet manager
* Progress with CLI
* Remove println debugging statement
* Tidy output
* Tidy 600 perms
* Update libp2p service, start rpc test upgrade
* Add validator creation flow
* Update network crate for new libp2p
* Start tidying, adding comments
* Update tokio::codec to futures_codec (#1128)
* Further work towards RPC corrections
* Correct http timeout and network service select
* Add wallet mgr testing
* Shift LockedWallet into own file
* Add comments to fs
* Start integration into VC
* Use tokio runtime for libp2p
* Revert "Update tokio::codec to futures_codec (#1128)"
This reverts commit e57aea924acf5cbabdcea18895ac07e38a425ed7.
* Upgrade RPC libp2p tests
* Upgrade secio fallback test
* Add lcli keypair upgrade command
* Upgrade gossipsub examples
* Clean up RPC protocol
* Test fixes (#1133)
* Correct websocket timeout and run on os thread
* Fix network test
* Add --secrets-dir to VC
* Remove --legacy-keys from VC
* Clean up PR
* Correct tokio tcp move attestation service tests
* Upgrade attestation service tests
* Fix sim
* Correct network test
* Correct genesis test
* Start docs
* Add progress for validator generation
* Tidy error messages
* Test corrections
* Log info when block is received
* Modify logs and update attester service events
* Stable futures: fixes to vc, eth1 and account manager (#1142)
* Add local testnet scripts
* Remove whiteblock script
* Rename local testnet script
* Move spawns onto handle
* Fix VC panic
* Initial fix to block production issue
* Tidy block producer fix
* Tidy further
* Add local testnet clean script
* Run cargo fmt
* Tidy duties service
* Tidy fork service
* Tidy ForkService
* Tidy AttestationService
* Tidy notifier
* Ensure await is not suppressed in eth1
* Ensure await is not suppressed in account_manager
* Use .ok() instead of .unwrap_or(())
* RPC decoding test for proto
* Update discv5 and eth2-libp2p deps
* Run cargo fmt
* Pre-build keystores for sim
* Fix lcli double runtime issue (#1144)
* Handle stream termination and dialing peer errors
* Correct peer_info variant types
* Add progress on new deposit flow
* Remove unnecessary warnings
* Handle subnet unsubscription removal and improve logigng
* Add logs around ping
* Upgrade discv5 and improve logging
* Handle peer connection status for multiple connections
* Improve network service logging
* Add more incomplete progress
* Improve logging around peer manager
* Upgrade swarm poll centralise peer management
* Identify clients on error
* Fix `remove_peer` in sync (#1150)
* remove_peer removes from all chains
* Remove logs
* Fix early return from loop
* Improved logging, fix panic
* Partially correct tests
* Add deposit command
* Remove old validator directory
* Start adding AM tests
* Stable futures: Vc sync (#1149)
* Improve syncing heuristic
* Add comments
* Use safer method for tolerance
* Fix tests
* Binary testing progress
* Progress with CLI tests
* Use constants for flags
* More account manager testing
* Improve CLI tests
* Move upgrade-legacy-keypairs into account man
* Use rayon for VC key generation
* Add comments to `validator_dir`
* Add testing to validator_dir
* Add fix to eth1-sim
* Check errors in eth1-sim
* Fix mutability issue
* Ensure password file ends in .pass
* Add more tests to wallet manager
* Tidy deposit
* Tidy account manager
* Tidy account manager
* Remove panic
* Generate keypairs earlier in sim
* Tidy eth1-sime
* Try to fix eth1 sim
* Address review comments
* Fix typo in CLI command
* Update docs
* Disable eth1 sim
* Remove eth1 sim completely
Co-authored-by: Age Manning <Age@AgeManning.com>
Co-authored-by: pawanjay176 <pawandhananjay@gmail.com>
2020-05-18 09:01:45 +00:00
|
|
|
"tempfile",
|
2021-11-29 03:57:54 +00:00
|
|
|
"tree_hash",
|
Wallet-based, encrypted key management (#1138)
* Update hashmap hashset to stable futures
* Adds panic test to hashset delay
* Port remote_beacon_node to stable futures
* Fix lcli merge conflicts
* Non rpc stuff compiles
* Remove padding
* Add error enum, zeroize more things
* Fix comment
* protocol.rs compiles
* Port websockets, timer and notifier to stable futures (#1035)
* Fix lcli
* Port timer to stable futures
* Fix timer
* Port websocket_server to stable futures
* Port notifier to stable futures
* Add TODOS
* Port remote_beacon_node to stable futures
* Partial eth2-libp2p stable future upgrade
* Finished first round of fighting RPC types
* Further progress towards porting eth2-libp2p adds caching to discovery
* Update behaviour
* Add keystore builder
* Remove keystore stuff from val client
* Add more tests, comments
* RPC handler to stable futures
* Update RPC to master libp2p
* Add more comments, test vectors
* Network service additions
* Progress on improving JSON validation
* More JSON verification
* Start moving JSON into own mod
* Remove old code
* Add more tests, reader/writers
* Tidy
* Move keystore into own file
* Move more logic into keystore file
* Tidy
* Tidy
* Fix the fallback transport construction (#1102)
* Allow for odd-character hex
* Correct warning
* Remove hashmap delay
* Compiling version of eth2-libp2p
* Update all crates versions
* Fix conversion function and add tests (#1113)
* Add more json missing field checks
* Use scrypt by default
* Tidy, address comments
* Test path and uuid in vectors
* Fix comment
* Add checks for kdf params
* Enforce empty kdf message
* Port validator_client to stable futures (#1114)
* Add PH & MS slot clock changes
* Account for genesis time
* Add progress on duties refactor
* Add simple is_aggregator bool to val subscription
* Start work on attestation_verification.rs
* Add progress on ObservedAttestations
* Progress with ObservedAttestations
* Fix tests
* Add observed attestations to the beacon chain
* Add attestation observation to processing code
* Add progress on attestation verification
* Add first draft of ObservedAttesters
* Add more tests
* Add observed attesters to beacon chain
* Add observers to attestation processing
* Add more attestation verification
* Create ObservedAggregators map
* Remove commented-out code
* Add observed aggregators into chain
* Add progress
* Finish adding features to attestation verification
* Ensure beacon chain compiles
* Link attn verification into chain
* Integrate new attn verification in chain
* Remove old attestation processing code
* Start trying to fix beacon_chain tests
* Split adding into pools into two functions
* Add aggregation to harness
* Get test harness working again
* Adjust the number of aggregators for test harness
* Fix edge-case in harness
* Integrate new attn processing in network
* Fix compile bug in validator_client
* Update validator API endpoints
* Fix aggreagation in test harness
* Fix enum thing
* Fix attestation observation bug:
* Patch failing API tests
* Start adding comments to attestation verification
* Remove unused attestation field
* Unify "is block known" logic
* Update comments
* Supress fork choice errors for network processing
* Add todos
* Tidy
* Add gossip attn tests
* Disallow test harness to produce old attns
* Comment out in-progress tests
* Partially address pruning tests
* Fix failing store test
* Add aggregate tests
* Add comments about which spec conditions we check
* Dont re-aggregate
* Split apart test harness attn production
* Fix compile error in network
* Make progress on commented-out test
* Fix skipping attestation test
* Add fork choice verification tests
* Tidy attn tests, remove dead code
* Remove some accidentally added code
* Fix clippy lint
* Rename test file
* Add block tests, add cheap block proposer check
* Rename block testing file
* Add observed_block_producers
* Tidy
* Switch around block signature verification
* Finish block testing
* Remove gossip from signature tests
* First pass of self review
* Fix deviation in spec
* Update test spec tags
* Start moving over to hashset
* Finish moving observed attesters to hashmap
* Move aggregation pool over to hashmap
* Make fc attn borrow again
* Fix rest_api compile error
* Fix missing comments
* Fix monster test
* Uncomment increasing slots test
* Address remaining comments
* Remove unsafe, use cfg test
* Remove cfg test flag
* Fix dodgy comment
* Revert "Update hashmap hashset to stable futures"
This reverts commit d432378a3cc5cd67fc29c0b15b96b886c1323554.
* Revert "Adds panic test to hashset delay"
This reverts commit 281502396fc5b90d9c421a309c2c056982c9525b.
* Ported attestation_service
* Ported duties_service
* Ported fork_service
* More ports
* Port block_service
* Minor fixes
* VC compiles
* Update TODOS
* Borrow self where possible
* Ignore aggregates that are already known.
* Unify aggregator modulo logic
* Fix typo in logs
* Refactor validator subscription logic
* Avoid reproducing selection proof
* Skip HTTP call if no subscriptions
* Rename DutyAndState -> DutyAndProof
* Tidy logs
* Print root as dbg
* Fix compile errors in tests
* Fix compile error in test
* Re-Fix attestation and duties service
* Minor fixes
Co-authored-by: Paul Hauner <paul@paulhauner.com>
* Expose json_keystore mod
* First commits on path derivation
* Progress with implementation
* More progress
* Passing intermediate test vectors
* Tidy, add comments
* Add DerivedKey structs
* Move key derivation into own crate
* Add zeroize structs
* Return error for empty seed
* Add tests
* Tidy
* First commits on path derivation
* Progress with implementation
* Move key derivation into own crate
* Start defining JSON wallet
* Add progress
* Split out encrypt/decrypt
* First commits on path derivation
* Progress with implementation
* More progress
* Passing intermediate test vectors
* Tidy, add comments
* Add DerivedKey structs
* Move key derivation into own crate
* Add zeroize structs
* Return error for empty seed
* Add tests
* Tidy
* Add progress
* Replace some password usage with slice
* First commits on path derivation
* Progress with implementation
* More progress
* Passing intermediate test vectors
* Tidy, add comments
* Add DerivedKey structs
* Move key derivation into own crate
* Add zeroize structs
* Return error for empty seed
* Add tests
* Tidy
* Add progress
* Expose PlainText struct
* First commits on path derivation
* Progress with implementation
* More progress
* Passing intermediate test vectors
* Tidy, add comments
* Add DerivedKey structs
* Move key derivation into own crate
* Add zeroize structs
* Return error for empty seed
* Add tests
* Tidy
* Add builder
* Expose consts, remove Password
* Minor progress
* Expose SALT_SIZE
* First compiling version
* Add test vectors
* Network crate update to stable futures
* Move dbg assert statement
* Port account_manager to stable futures (#1121)
* Port account_manager to stable futures
* Run async fns in tokio environment
* Port rest_api crate to stable futures (#1118)
* Port rest_api lib to stable futures
* Reduce tokio features
* Update notifier to stable futures
* Builder update
* Further updates
* Add mnemonic, tidy
* Convert self referential async functions
* Tidy
* Add testing
* Add first attempt at validator_dir
* Present pubkey field
* stable futures fixes (#1124)
* Fix eth1 update functions
* Fix genesis and client
* Fix beacon node lib
* Return appropriate runtimes from environment
* Fix test rig
* Refactor eth1 service update
* Upgrade simulator to stable futures
* Lighthouse compiles on stable futures
* Add first pass of wallet manager
* Progress with CLI
* Remove println debugging statement
* Tidy output
* Tidy 600 perms
* Update libp2p service, start rpc test upgrade
* Add validator creation flow
* Update network crate for new libp2p
* Start tidying, adding comments
* Update tokio::codec to futures_codec (#1128)
* Further work towards RPC corrections
* Correct http timeout and network service select
* Add wallet mgr testing
* Shift LockedWallet into own file
* Add comments to fs
* Start integration into VC
* Use tokio runtime for libp2p
* Revert "Update tokio::codec to futures_codec (#1128)"
This reverts commit e57aea924acf5cbabdcea18895ac07e38a425ed7.
* Upgrade RPC libp2p tests
* Upgrade secio fallback test
* Add lcli keypair upgrade command
* Upgrade gossipsub examples
* Clean up RPC protocol
* Test fixes (#1133)
* Correct websocket timeout and run on os thread
* Fix network test
* Add --secrets-dir to VC
* Remove --legacy-keys from VC
* Clean up PR
* Correct tokio tcp move attestation service tests
* Upgrade attestation service tests
* Fix sim
* Correct network test
* Correct genesis test
* Start docs
* Add progress for validator generation
* Tidy error messages
* Test corrections
* Log info when block is received
* Modify logs and update attester service events
* Stable futures: fixes to vc, eth1 and account manager (#1142)
* Add local testnet scripts
* Remove whiteblock script
* Rename local testnet script
* Move spawns onto handle
* Fix VC panic
* Initial fix to block production issue
* Tidy block producer fix
* Tidy further
* Add local testnet clean script
* Run cargo fmt
* Tidy duties service
* Tidy fork service
* Tidy ForkService
* Tidy AttestationService
* Tidy notifier
* Ensure await is not suppressed in eth1
* Ensure await is not suppressed in account_manager
* Use .ok() instead of .unwrap_or(())
* RPC decoding test for proto
* Update discv5 and eth2-libp2p deps
* Run cargo fmt
* Pre-build keystores for sim
* Fix lcli double runtime issue (#1144)
* Handle stream termination and dialing peer errors
* Correct peer_info variant types
* Add progress on new deposit flow
* Remove unnecessary warnings
* Handle subnet unsubscription removal and improve logigng
* Add logs around ping
* Upgrade discv5 and improve logging
* Handle peer connection status for multiple connections
* Improve network service logging
* Add more incomplete progress
* Improve logging around peer manager
* Upgrade swarm poll centralise peer management
* Identify clients on error
* Fix `remove_peer` in sync (#1150)
* remove_peer removes from all chains
* Remove logs
* Fix early return from loop
* Improved logging, fix panic
* Partially correct tests
* Add deposit command
* Remove old validator directory
* Start adding AM tests
* Stable futures: Vc sync (#1149)
* Improve syncing heuristic
* Add comments
* Use safer method for tolerance
* Fix tests
* Binary testing progress
* Progress with CLI tests
* Use constants for flags
* More account manager testing
* Improve CLI tests
* Move upgrade-legacy-keypairs into account man
* Use rayon for VC key generation
* Add comments to `validator_dir`
* Add testing to validator_dir
* Add fix to eth1-sim
* Check errors in eth1-sim
* Fix mutability issue
* Ensure password file ends in .pass
* Add more tests to wallet manager
* Tidy deposit
* Tidy account manager
* Tidy account manager
* Remove panic
* Generate keypairs earlier in sim
* Tidy eth1-sime
* Try to fix eth1 sim
* Address review comments
* Fix typo in CLI command
* Update docs
* Disable eth1 sim
* Remove eth1 sim completely
Co-authored-by: Age Manning <Age@AgeManning.com>
Co-authored-by: pawanjay176 <pawandhananjay@gmail.com>
2020-05-18 09:01:45 +00:00
|
|
|
"types",
|
|
|
|
]
|
|
|
|
|
2022-02-07 23:25:03 +00:00
|
|
|
[[package]]
|
|
|
|
name = "valuable"
|
|
|
|
version = "0.1.0"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d"
|
|
|
|
|
2019-12-09 11:39:44 +00:00
|
|
|
[[package]]
|
|
|
|
name = "vcpkg"
|
2021-07-05 00:54:17 +00:00
|
|
|
version = "0.2.15"
|
2019-12-09 11:39:44 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2021-07-05 00:54:17 +00:00
|
|
|
checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426"
|
2020-11-19 04:04:52 +00:00
|
|
|
|
2019-12-09 11:39:44 +00:00
|
|
|
[[package]]
|
|
|
|
name = "vec_map"
|
2020-05-10 09:56:31 +00:00
|
|
|
version = "0.8.2"
|
2019-12-09 11:39:44 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2020-05-10 09:56:31 +00:00
|
|
|
checksum = "f1bddf1187be692e79c5ffeab891132dfb0f236ed36a43c7ed39f1165ee20191"
|
2019-12-09 11:39:44 +00:00
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "version_check"
|
2022-01-11 01:35:56 +00:00
|
|
|
version = "0.9.4"
|
2019-12-09 11:39:44 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2022-01-11 01:35:56 +00:00
|
|
|
checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f"
|
2019-12-09 11:39:44 +00:00
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "void"
|
|
|
|
version = "1.0.2"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2020-05-10 09:56:31 +00:00
|
|
|
checksum = "6a02e4885ed3bc0f2de90ea6dd45ebcbb66dacffe03547fadbb0eeae2770887d"
|
2019-12-09 11:39:44 +00:00
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "walkdir"
|
2021-05-04 00:44:05 +00:00
|
|
|
version = "2.3.2"
|
2019-12-09 11:39:44 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2021-05-04 00:44:05 +00:00
|
|
|
checksum = "808cf2735cd4b6866113f648b791c6adc5714537bc222d9347bb203386ffda56"
|
2019-12-09 11:39:44 +00:00
|
|
|
dependencies = [
|
2020-05-10 09:56:31 +00:00
|
|
|
"same-file",
|
2021-07-09 03:20:24 +00:00
|
|
|
"winapi",
|
2020-05-10 09:56:31 +00:00
|
|
|
"winapi-util",
|
2019-12-09 11:39:44 +00:00
|
|
|
]
|
|
|
|
|
2020-05-17 11:16:48 +00:00
|
|
|
[[package]]
|
|
|
|
name = "want"
|
|
|
|
version = "0.3.0"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "1ce8a968cb1cd110d136ff8b819a556d6fb6d919363c61534f6860c7eb172ba0"
|
|
|
|
dependencies = [
|
2020-12-09 01:34:58 +00:00
|
|
|
"log",
|
2020-05-10 09:56:31 +00:00
|
|
|
"try-lock",
|
2019-12-09 11:39:44 +00:00
|
|
|
]
|
|
|
|
|
2020-09-29 03:46:54 +00:00
|
|
|
[[package]]
|
|
|
|
name = "warp"
|
2021-11-18 05:08:42 +00:00
|
|
|
version = "0.3.2"
|
2022-04-04 00:26:16 +00:00
|
|
|
source = "git+https://github.com/macladson/warp?rev=7e75acc368229a46a236a8c991bf251fe7fe50ef#7e75acc368229a46a236a8c991bf251fe7fe50ef"
|
2020-09-29 03:46:54 +00:00
|
|
|
dependencies = [
|
2021-10-29 01:59:29 +00:00
|
|
|
"bytes",
|
2021-11-18 05:08:42 +00:00
|
|
|
"futures-channel",
|
|
|
|
"futures-util",
|
2021-02-10 23:29:49 +00:00
|
|
|
"headers",
|
|
|
|
"http",
|
2021-07-09 03:20:24 +00:00
|
|
|
"hyper",
|
2020-12-09 01:34:58 +00:00
|
|
|
"log",
|
|
|
|
"mime",
|
2020-09-29 03:46:54 +00:00
|
|
|
"mime_guess",
|
2022-04-04 00:26:16 +00:00
|
|
|
"multipart",
|
2020-12-09 01:34:58 +00:00
|
|
|
"percent-encoding",
|
2022-07-05 23:36:42 +00:00
|
|
|
"pin-project 1.0.11",
|
2020-12-09 01:34:58 +00:00
|
|
|
"scoped-tls",
|
2020-09-29 03:46:54 +00:00
|
|
|
"serde",
|
|
|
|
"serde_json",
|
2020-11-28 05:30:57 +00:00
|
|
|
"serde_urlencoded",
|
2021-08-17 01:00:24 +00:00
|
|
|
"tokio",
|
2022-07-18 01:51:36 +00:00
|
|
|
"tokio-rustls 0.22.0",
|
2021-02-10 23:29:49 +00:00
|
|
|
"tokio-stream",
|
2022-07-18 01:51:36 +00:00
|
|
|
"tokio-tungstenite 0.15.0",
|
2022-06-18 23:59:43 +00:00
|
|
|
"tokio-util 0.6.10",
|
2020-09-29 03:46:54 +00:00
|
|
|
"tower-service",
|
|
|
|
"tracing",
|
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "warp_utils"
|
|
|
|
version = "0.1.0"
|
|
|
|
dependencies = [
|
|
|
|
"beacon_chain",
|
|
|
|
"eth2",
|
2021-02-10 23:29:49 +00:00
|
|
|
"headers",
|
2020-11-26 01:10:51 +00:00
|
|
|
"lazy_static",
|
|
|
|
"lighthouse_metrics",
|
2020-09-29 03:46:54 +00:00
|
|
|
"safe_arith",
|
2020-10-02 09:42:19 +00:00
|
|
|
"serde",
|
2022-01-20 09:14:19 +00:00
|
|
|
"serde_array_query",
|
2020-09-29 03:46:54 +00:00
|
|
|
"state_processing",
|
2021-08-17 01:00:24 +00:00
|
|
|
"tokio",
|
2020-09-29 03:46:54 +00:00
|
|
|
"types",
|
2022-04-04 00:26:16 +00:00
|
|
|
"warp",
|
2020-09-29 03:46:54 +00:00
|
|
|
]
|
|
|
|
|
2019-12-09 11:39:44 +00:00
|
|
|
[[package]]
|
|
|
|
name = "wasi"
|
2020-01-10 03:35:07 +00:00
|
|
|
version = "0.9.0+wasi-snapshot-preview1"
|
2019-12-09 11:39:44 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2020-05-10 09:56:31 +00:00
|
|
|
checksum = "cccddf32554fecc6acb585f82a32a72e28b48f8c4c1883ddfeeeaa96f7d8e519"
|
2019-12-09 11:39:44 +00:00
|
|
|
|
2020-08-27 07:04:12 +00:00
|
|
|
[[package]]
|
|
|
|
name = "wasi"
|
2022-06-18 23:59:43 +00:00
|
|
|
version = "0.10.0+wasi-snapshot-preview1"
|
2020-08-27 07:04:12 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2022-06-18 23:59:43 +00:00
|
|
|
checksum = "1a143597ca7c7793eff794def352d41792a93c481eb1042423ff7ff72ba2c31f"
|
2020-08-27 07:04:12 +00:00
|
|
|
|
2022-03-31 07:52:23 +00:00
|
|
|
[[package]]
|
|
|
|
name = "wasi"
|
|
|
|
version = "0.11.0+wasi-snapshot-preview1"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423"
|
|
|
|
|
2019-12-09 11:39:44 +00:00
|
|
|
[[package]]
|
|
|
|
name = "wasm-bindgen"
|
2022-06-18 23:59:43 +00:00
|
|
|
version = "0.2.81"
|
2019-12-09 11:39:44 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2022-06-18 23:59:43 +00:00
|
|
|
checksum = "7c53b543413a17a202f4be280a7e5c62a1c69345f5de525ee64f8cfdbc954994"
|
2019-12-09 11:39:44 +00:00
|
|
|
dependencies = [
|
2021-11-18 05:08:42 +00:00
|
|
|
"cfg-if",
|
2020-05-10 09:56:31 +00:00
|
|
|
"wasm-bindgen-macro",
|
2019-12-09 11:39:44 +00:00
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "wasm-bindgen-backend"
|
2022-06-18 23:59:43 +00:00
|
|
|
version = "0.2.81"
|
2019-12-09 11:39:44 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2022-06-18 23:59:43 +00:00
|
|
|
checksum = "5491a68ab4500fa6b4d726bd67408630c3dbe9c4fe7bda16d5c82a1fd8c7340a"
|
2019-12-09 11:39:44 +00:00
|
|
|
dependencies = [
|
2020-05-10 09:56:31 +00:00
|
|
|
"bumpalo",
|
|
|
|
"lazy_static",
|
2020-12-09 01:34:58 +00:00
|
|
|
"log",
|
2020-05-17 11:16:48 +00:00
|
|
|
"proc-macro2",
|
|
|
|
"quote",
|
|
|
|
"syn",
|
2020-05-10 09:56:31 +00:00
|
|
|
"wasm-bindgen-shared",
|
2019-12-09 11:39:44 +00:00
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "wasm-bindgen-futures"
|
2022-06-18 23:59:43 +00:00
|
|
|
version = "0.4.31"
|
2019-12-09 11:39:44 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2022-06-18 23:59:43 +00:00
|
|
|
checksum = "de9a9cec1733468a8c657e57fa2413d2ae2c0129b95e87c5b72b8ace4d13f31f"
|
2019-12-09 11:39:44 +00:00
|
|
|
dependencies = [
|
2021-11-18 05:08:42 +00:00
|
|
|
"cfg-if",
|
2020-05-10 09:56:31 +00:00
|
|
|
"js-sys",
|
|
|
|
"wasm-bindgen",
|
|
|
|
"web-sys",
|
2019-12-09 11:39:44 +00:00
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "wasm-bindgen-macro"
|
2022-06-18 23:59:43 +00:00
|
|
|
version = "0.2.81"
|
2019-12-09 11:39:44 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2022-06-18 23:59:43 +00:00
|
|
|
checksum = "c441e177922bc58f1e12c022624b6216378e5febc2f0533e41ba443d505b80aa"
|
2019-12-09 11:39:44 +00:00
|
|
|
dependencies = [
|
2020-05-17 11:16:48 +00:00
|
|
|
"quote",
|
2020-05-10 09:56:31 +00:00
|
|
|
"wasm-bindgen-macro-support",
|
2019-12-09 11:39:44 +00:00
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "wasm-bindgen-macro-support"
|
2022-06-18 23:59:43 +00:00
|
|
|
version = "0.2.81"
|
2019-12-09 11:39:44 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2022-06-18 23:59:43 +00:00
|
|
|
checksum = "7d94ac45fcf608c1f45ef53e748d35660f168490c10b23704c7779ab8f5c3048"
|
2019-12-09 11:39:44 +00:00
|
|
|
dependencies = [
|
2020-05-17 11:16:48 +00:00
|
|
|
"proc-macro2",
|
|
|
|
"quote",
|
|
|
|
"syn",
|
2020-05-10 09:56:31 +00:00
|
|
|
"wasm-bindgen-backend",
|
|
|
|
"wasm-bindgen-shared",
|
2019-12-09 11:39:44 +00:00
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "wasm-bindgen-shared"
|
2022-06-18 23:59:43 +00:00
|
|
|
version = "0.2.81"
|
2019-12-09 11:39:44 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2022-06-18 23:59:43 +00:00
|
|
|
checksum = "6a89911bd99e5f3659ec4acf9c4d93b0a90fe4a2a11f15328472058edc5261be"
|
2019-12-09 11:39:44 +00:00
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "wasm-bindgen-test"
|
2022-06-18 23:59:43 +00:00
|
|
|
version = "0.3.31"
|
2019-12-09 11:39:44 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2022-06-18 23:59:43 +00:00
|
|
|
checksum = "68b30cf2cba841a812f035c40c50f53eb9c56181192a9dd2c71b65e6a87a05ba"
|
2019-12-09 11:39:44 +00:00
|
|
|
dependencies = [
|
2020-05-10 09:56:31 +00:00
|
|
|
"console_error_panic_hook",
|
|
|
|
"js-sys",
|
2020-12-09 01:34:58 +00:00
|
|
|
"scoped-tls",
|
2020-05-10 09:56:31 +00:00
|
|
|
"wasm-bindgen",
|
2020-05-17 11:16:48 +00:00
|
|
|
"wasm-bindgen-futures",
|
2020-05-10 09:56:31 +00:00
|
|
|
"wasm-bindgen-test-macro",
|
2019-12-09 11:39:44 +00:00
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "wasm-bindgen-test-macro"
|
2022-06-18 23:59:43 +00:00
|
|
|
version = "0.3.31"
|
2019-12-09 11:39:44 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2022-06-18 23:59:43 +00:00
|
|
|
checksum = "88ad594bf33e73cafcac2ae9062fc119d4f75f9c77e25022f91c9a64bd5b6463"
|
2019-12-09 11:39:44 +00:00
|
|
|
dependencies = [
|
2020-05-17 11:16:48 +00:00
|
|
|
"proc-macro2",
|
|
|
|
"quote",
|
2019-12-09 11:39:44 +00:00
|
|
|
]
|
|
|
|
|
2022-03-02 05:09:52 +00:00
|
|
|
[[package]]
|
|
|
|
name = "wasm-timer"
|
|
|
|
version = "0.2.5"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "be0ecb0db480561e9a7642b5d3e4187c128914e58aa84330b9493e3eb68c5e7f"
|
|
|
|
dependencies = [
|
|
|
|
"futures",
|
|
|
|
"js-sys",
|
|
|
|
"parking_lot 0.11.2",
|
|
|
|
"pin-utils",
|
|
|
|
"wasm-bindgen",
|
|
|
|
"wasm-bindgen-futures",
|
|
|
|
"web-sys",
|
|
|
|
]
|
|
|
|
|
2019-12-09 11:39:44 +00:00
|
|
|
[[package]]
|
|
|
|
name = "web-sys"
|
2022-06-18 23:59:43 +00:00
|
|
|
version = "0.3.58"
|
2019-12-09 11:39:44 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2022-06-18 23:59:43 +00:00
|
|
|
checksum = "2fed94beee57daf8dd7d51f2b15dc2bcde92d7a72304cdf662a4371008b71b90"
|
2019-12-09 11:39:44 +00:00
|
|
|
dependencies = [
|
2020-05-10 09:56:31 +00:00
|
|
|
"js-sys",
|
|
|
|
"wasm-bindgen",
|
2019-12-09 11:39:44 +00:00
|
|
|
]
|
|
|
|
|
2020-04-19 02:20:43 +00:00
|
|
|
[[package]]
|
|
|
|
name = "web3"
|
2022-04-04 00:26:16 +00:00
|
|
|
version = "0.18.0"
|
2020-06-19 04:13:23 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2022-04-04 00:26:16 +00:00
|
|
|
checksum = "44f258e254752d210b84fe117b31f1e3cc9cbf04c0d747eb7f8cf7cf5e370f6d"
|
2020-04-19 02:20:43 +00:00
|
|
|
dependencies = [
|
2022-04-04 00:26:16 +00:00
|
|
|
"arrayvec",
|
|
|
|
"base64",
|
2021-10-29 01:59:29 +00:00
|
|
|
"bytes",
|
2020-05-10 09:56:31 +00:00
|
|
|
"derive_more",
|
Separate execution payloads in the DB (#3157)
## Proposed Changes
Reduce post-merge disk usage by not storing finalized execution payloads in Lighthouse's database.
:warning: **This is achieved in a backwards-incompatible way for networks that have already merged** :warning:. Kiln users and shadow fork enjoyers will be unable to downgrade after running the code from this PR. The upgrade migration may take several minutes to run, and can't be aborted after it begins.
The main changes are:
- New column in the database called `ExecPayload`, keyed by beacon block root.
- The `BeaconBlock` column now stores blinded blocks only.
- Lots of places that previously used full blocks now use blinded blocks, e.g. analytics APIs, block replay in the DB, etc.
- On finalization:
- `prune_abanonded_forks` deletes non-canonical payloads whilst deleting non-canonical blocks.
- `migrate_db` deletes finalized canonical payloads whilst deleting finalized states.
- Conversions between blinded and full blocks are implemented in a compositional way, duplicating some work from Sean's PR #3134.
- The execution layer has a new `get_payload_by_block_hash` method that reconstructs a payload using the EE's `eth_getBlockByHash` call.
- I've tested manually that it works on Kiln, using Geth and Nethermind.
- This isn't necessarily the most efficient method, and new engine APIs are being discussed to improve this: https://github.com/ethereum/execution-apis/pull/146.
- We're depending on the `ethers` master branch, due to lots of recent changes. We're also using a workaround for https://github.com/gakonst/ethers-rs/issues/1134.
- Payload reconstruction is used in the HTTP API via `BeaconChain::get_block`, which is now `async`. Due to the `async` fn, the `blocking_json` wrapper has been removed.
- Payload reconstruction is used in network RPC to serve blocks-by-{root,range} responses. Here the `async` adjustment is messier, although I think I've managed to come up with a reasonable compromise: the handlers take the `SendOnDrop` by value so that they can drop it on _task completion_ (after the `fn` returns). Still, this is introducing disk reads onto core executor threads, which may have a negative performance impact (thoughts appreciated).
## Additional Info
- [x] For performance it would be great to remove the cloning of full blocks when converting them to blinded blocks to write to disk. I'm going to experiment with a `put_block` API that takes the block by value, breaks it into a blinded block and a payload, stores the blinded block, and then re-assembles the full block for the caller.
- [x] We should measure the latency of blocks-by-root and blocks-by-range responses.
- [x] We should add integration tests that stress the payload reconstruction (basic tests done, issue for more extensive tests: https://github.com/sigp/lighthouse/issues/3159)
- [x] We should (manually) test the schema v9 migration from several prior versions, particularly as blocks have changed on disk and some migrations rely on being able to load blocks.
Co-authored-by: Paul Hauner <paul@paulhauner.com>
2022-05-12 00:42:17 +00:00
|
|
|
"ethabi 16.0.0",
|
|
|
|
"ethereum-types 0.12.1",
|
2021-07-09 03:20:24 +00:00
|
|
|
"futures",
|
2020-12-09 01:34:58 +00:00
|
|
|
"futures-timer",
|
2021-07-09 03:20:24 +00:00
|
|
|
"headers",
|
2020-12-14 02:28:19 +00:00
|
|
|
"hex",
|
2022-04-04 00:26:16 +00:00
|
|
|
"idna",
|
2020-05-10 09:56:31 +00:00
|
|
|
"jsonrpc-core",
|
2020-12-09 01:34:58 +00:00
|
|
|
"log",
|
2022-04-04 00:26:16 +00:00
|
|
|
"once_cell",
|
2022-06-18 23:59:43 +00:00
|
|
|
"parking_lot 0.12.1",
|
2022-07-05 23:36:42 +00:00
|
|
|
"pin-project 1.0.11",
|
2021-07-09 03:20:24 +00:00
|
|
|
"reqwest",
|
2022-04-04 00:26:16 +00:00
|
|
|
"rlp",
|
2020-05-10 09:56:31 +00:00
|
|
|
"secp256k1",
|
|
|
|
"serde",
|
|
|
|
"serde_json",
|
2022-04-04 00:26:16 +00:00
|
|
|
"soketto",
|
|
|
|
"tiny-keccak",
|
2021-08-17 01:00:24 +00:00
|
|
|
"tokio",
|
2022-06-18 23:59:43 +00:00
|
|
|
"tokio-util 0.6.10",
|
2021-07-09 03:20:24 +00:00
|
|
|
"url",
|
|
|
|
"web3-async-native-tls",
|
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "web3-async-native-tls"
|
|
|
|
version = "0.4.0"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "1f6d8d1636b2627fe63518d5a9b38a569405d9c9bc665c43c9c341de57227ebb"
|
|
|
|
dependencies = [
|
|
|
|
"native-tls",
|
|
|
|
"thiserror",
|
2021-08-17 01:00:24 +00:00
|
|
|
"tokio",
|
2020-12-09 01:34:58 +00:00
|
|
|
"url",
|
2020-04-19 02:20:43 +00:00
|
|
|
]
|
|
|
|
|
2021-09-16 03:26:33 +00:00
|
|
|
[[package]]
|
|
|
|
name = "web3signer_tests"
|
|
|
|
version = "0.1.0"
|
|
|
|
dependencies = [
|
|
|
|
"account_utils",
|
|
|
|
"environment",
|
|
|
|
"eth2_keystore",
|
|
|
|
"eth2_network_config",
|
|
|
|
"exit-future",
|
|
|
|
"futures",
|
|
|
|
"reqwest",
|
|
|
|
"serde",
|
|
|
|
"serde_derive",
|
|
|
|
"serde_json",
|
|
|
|
"serde_yaml",
|
|
|
|
"slot_clock",
|
|
|
|
"task_executor",
|
|
|
|
"tempfile",
|
|
|
|
"tokio",
|
|
|
|
"types",
|
|
|
|
"url",
|
|
|
|
"validator_client",
|
|
|
|
"zip",
|
|
|
|
]
|
|
|
|
|
2019-12-09 11:39:44 +00:00
|
|
|
[[package]]
|
|
|
|
name = "webpki"
|
2020-12-14 02:28:19 +00:00
|
|
|
version = "0.21.4"
|
2019-12-09 11:39:44 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2020-12-14 02:28:19 +00:00
|
|
|
checksum = "b8e38c0608262c46d4a56202ebabdeb094cef7e560ca7a226c6bf055188aa4ea"
|
2019-12-09 11:39:44 +00:00
|
|
|
dependencies = [
|
2020-05-10 09:56:31 +00:00
|
|
|
"ring",
|
|
|
|
"untrusted",
|
2019-12-09 11:39:44 +00:00
|
|
|
]
|
|
|
|
|
2021-11-18 05:08:42 +00:00
|
|
|
[[package]]
|
|
|
|
name = "webpki"
|
|
|
|
version = "0.22.0"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "f095d78192e208183081cc07bc5515ef55216397af48b873e5edcd72637fa1bd"
|
|
|
|
dependencies = [
|
|
|
|
"ring",
|
|
|
|
"untrusted",
|
|
|
|
]
|
|
|
|
|
2019-12-09 11:39:44 +00:00
|
|
|
[[package]]
|
|
|
|
name = "webpki-roots"
|
2022-06-18 23:59:43 +00:00
|
|
|
version = "0.22.3"
|
2020-05-17 11:16:48 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2022-06-18 23:59:43 +00:00
|
|
|
checksum = "44d8de8415c823c8abd270ad483c6feeac771fad964890779f9a8cb24fbbc1bf"
|
2020-05-17 11:16:48 +00:00
|
|
|
dependencies = [
|
2021-11-18 05:08:42 +00:00
|
|
|
"webpki 0.22.0",
|
2020-05-17 11:16:48 +00:00
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "which"
|
2022-03-31 07:52:23 +00:00
|
|
|
version = "4.2.5"
|
2020-05-17 11:16:48 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2022-03-31 07:52:23 +00:00
|
|
|
checksum = "5c4fb54e6113b6a8772ee41c3404fb0301ac79604489467e0a9ce1f3e97c24ae"
|
2020-05-17 11:16:48 +00:00
|
|
|
dependencies = [
|
2021-05-04 00:44:05 +00:00
|
|
|
"either",
|
2021-08-17 01:00:24 +00:00
|
|
|
"lazy_static",
|
2020-05-17 11:16:48 +00:00
|
|
|
"libc",
|
|
|
|
]
|
|
|
|
|
2021-05-19 23:05:16 +00:00
|
|
|
[[package]]
|
|
|
|
name = "widestring"
|
|
|
|
version = "0.4.3"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "c168940144dd21fd8046987c16a46a33d5fc84eec29ef9dcddc2ac9e31526b7c"
|
|
|
|
|
2022-06-07 02:35:55 +00:00
|
|
|
[[package]]
|
|
|
|
name = "widestring"
|
|
|
|
version = "0.5.1"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "17882f045410753661207383517a6f62ec3dbeb6a4ed2acce01f0728238d1983"
|
|
|
|
|
2019-12-09 11:39:44 +00:00
|
|
|
[[package]]
|
|
|
|
name = "winapi"
|
2020-07-06 01:55:56 +00:00
|
|
|
version = "0.3.9"
|
2019-12-09 11:39:44 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2020-07-06 01:55:56 +00:00
|
|
|
checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419"
|
2019-12-09 11:39:44 +00:00
|
|
|
dependencies = [
|
2020-05-10 09:56:31 +00:00
|
|
|
"winapi-i686-pc-windows-gnu",
|
|
|
|
"winapi-x86_64-pc-windows-gnu",
|
2019-12-09 11:39:44 +00:00
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "winapi-i686-pc-windows-gnu"
|
|
|
|
version = "0.4.0"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2020-05-10 09:56:31 +00:00
|
|
|
checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6"
|
2019-12-09 11:39:44 +00:00
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "winapi-util"
|
2020-04-21 15:05:46 +00:00
|
|
|
version = "0.1.5"
|
2019-12-09 11:39:44 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2020-05-10 09:56:31 +00:00
|
|
|
checksum = "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178"
|
2019-12-09 11:39:44 +00:00
|
|
|
dependencies = [
|
2021-07-09 03:20:24 +00:00
|
|
|
"winapi",
|
2019-12-09 11:39:44 +00:00
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "winapi-x86_64-pc-windows-gnu"
|
|
|
|
version = "0.4.0"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2020-05-10 09:56:31 +00:00
|
|
|
checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"
|
2019-12-09 11:39:44 +00:00
|
|
|
|
2021-05-19 23:05:16 +00:00
|
|
|
[[package]]
|
|
|
|
name = "windows-acl"
|
|
|
|
version = "0.3.0"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "177b1723986bcb4c606058e77f6e8614b51c7f9ad2face6f6fd63dd5c8b3cec3"
|
|
|
|
dependencies = [
|
|
|
|
"field-offset",
|
|
|
|
"libc",
|
2022-06-07 02:35:55 +00:00
|
|
|
"widestring 0.4.3",
|
2021-07-09 03:20:24 +00:00
|
|
|
"winapi",
|
2021-05-19 23:05:16 +00:00
|
|
|
]
|
|
|
|
|
2022-03-02 05:09:52 +00:00
|
|
|
[[package]]
|
|
|
|
name = "windows-sys"
|
2022-06-18 23:59:43 +00:00
|
|
|
version = "0.36.1"
|
2022-03-02 05:09:52 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2022-06-18 23:59:43 +00:00
|
|
|
checksum = "ea04155a16a59f9eab786fe12a4a450e75cdb175f9e0d80da1e17db09f55b8d2"
|
2022-03-02 05:09:52 +00:00
|
|
|
dependencies = [
|
|
|
|
"windows_aarch64_msvc",
|
|
|
|
"windows_i686_gnu",
|
|
|
|
"windows_i686_msvc",
|
|
|
|
"windows_x86_64_gnu",
|
|
|
|
"windows_x86_64_msvc",
|
|
|
|
]
|
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "windows_aarch64_msvc"
|
2022-06-18 23:59:43 +00:00
|
|
|
version = "0.36.1"
|
2022-03-02 05:09:52 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2022-06-18 23:59:43 +00:00
|
|
|
checksum = "9bb8c3fd39ade2d67e9874ac4f3db21f0d710bee00fe7cab16949ec184eeaa47"
|
2022-03-02 05:09:52 +00:00
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "windows_i686_gnu"
|
2022-06-18 23:59:43 +00:00
|
|
|
version = "0.36.1"
|
2022-03-02 05:09:52 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2022-06-18 23:59:43 +00:00
|
|
|
checksum = "180e6ccf01daf4c426b846dfc66db1fc518f074baa793aa7d9b9aaeffad6a3b6"
|
2022-03-02 05:09:52 +00:00
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "windows_i686_msvc"
|
2022-06-18 23:59:43 +00:00
|
|
|
version = "0.36.1"
|
2022-03-02 05:09:52 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2022-06-18 23:59:43 +00:00
|
|
|
checksum = "e2e7917148b2812d1eeafaeb22a97e4813dfa60a3f8f78ebe204bcc88f12f024"
|
2022-03-02 05:09:52 +00:00
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "windows_x86_64_gnu"
|
2022-06-18 23:59:43 +00:00
|
|
|
version = "0.36.1"
|
2022-03-02 05:09:52 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2022-06-18 23:59:43 +00:00
|
|
|
checksum = "4dcd171b8776c41b97521e5da127a2d86ad280114807d0b2ab1e462bc764d9e1"
|
2022-03-02 05:09:52 +00:00
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "windows_x86_64_msvc"
|
2022-06-18 23:59:43 +00:00
|
|
|
version = "0.36.1"
|
2022-03-02 05:09:52 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2022-06-18 23:59:43 +00:00
|
|
|
checksum = "c811ca4a8c853ef420abd8592ba53ddbbac90410fab6903b3e79972a631f7680"
|
2022-03-02 05:09:52 +00:00
|
|
|
|
2021-06-03 01:11:33 +00:00
|
|
|
[[package]]
|
|
|
|
name = "winreg"
|
2022-06-07 02:35:55 +00:00
|
|
|
version = "0.7.0"
|
2021-06-03 01:11:33 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2022-06-07 02:35:55 +00:00
|
|
|
checksum = "0120db82e8a1e0b9fb3345a539c478767c0048d842860994d96113d5b667bd69"
|
2021-06-03 01:11:33 +00:00
|
|
|
dependencies = [
|
|
|
|
"winapi",
|
|
|
|
]
|
|
|
|
|
2019-12-09 11:39:44 +00:00
|
|
|
[[package]]
|
|
|
|
name = "winreg"
|
2022-03-31 07:52:23 +00:00
|
|
|
version = "0.10.1"
|
2019-12-09 11:39:44 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2022-03-31 07:52:23 +00:00
|
|
|
checksum = "80d0f4e272c85def139476380b12f9ac60926689dd2e01d4923222f40580869d"
|
2019-12-09 11:39:44 +00:00
|
|
|
dependencies = [
|
2021-07-09 03:20:24 +00:00
|
|
|
"winapi",
|
2019-12-09 11:39:44 +00:00
|
|
|
]
|
|
|
|
|
2022-07-18 01:51:36 +00:00
|
|
|
[[package]]
|
|
|
|
name = "ws_stream_wasm"
|
|
|
|
version = "0.7.3"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "47ca1ab42f5afed7fc332b22b6e932ca5414b209465412c8cdf0ad23bc0de645"
|
|
|
|
dependencies = [
|
|
|
|
"async_io_stream",
|
|
|
|
"futures",
|
|
|
|
"js-sys",
|
|
|
|
"pharos",
|
|
|
|
"rustc_version 0.4.0",
|
|
|
|
"send_wrapper",
|
|
|
|
"thiserror",
|
|
|
|
"wasm-bindgen",
|
|
|
|
"wasm-bindgen-futures",
|
|
|
|
"web-sys",
|
|
|
|
]
|
|
|
|
|
2020-10-05 08:22:19 +00:00
|
|
|
[[package]]
|
|
|
|
name = "wyz"
|
|
|
|
version = "0.2.0"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "85e60b0d1b5f99db2556934e21937020776a5d31520bf169e851ac44e6420214"
|
|
|
|
|
Separate execution payloads in the DB (#3157)
## Proposed Changes
Reduce post-merge disk usage by not storing finalized execution payloads in Lighthouse's database.
:warning: **This is achieved in a backwards-incompatible way for networks that have already merged** :warning:. Kiln users and shadow fork enjoyers will be unable to downgrade after running the code from this PR. The upgrade migration may take several minutes to run, and can't be aborted after it begins.
The main changes are:
- New column in the database called `ExecPayload`, keyed by beacon block root.
- The `BeaconBlock` column now stores blinded blocks only.
- Lots of places that previously used full blocks now use blinded blocks, e.g. analytics APIs, block replay in the DB, etc.
- On finalization:
- `prune_abanonded_forks` deletes non-canonical payloads whilst deleting non-canonical blocks.
- `migrate_db` deletes finalized canonical payloads whilst deleting finalized states.
- Conversions between blinded and full blocks are implemented in a compositional way, duplicating some work from Sean's PR #3134.
- The execution layer has a new `get_payload_by_block_hash` method that reconstructs a payload using the EE's `eth_getBlockByHash` call.
- I've tested manually that it works on Kiln, using Geth and Nethermind.
- This isn't necessarily the most efficient method, and new engine APIs are being discussed to improve this: https://github.com/ethereum/execution-apis/pull/146.
- We're depending on the `ethers` master branch, due to lots of recent changes. We're also using a workaround for https://github.com/gakonst/ethers-rs/issues/1134.
- Payload reconstruction is used in the HTTP API via `BeaconChain::get_block`, which is now `async`. Due to the `async` fn, the `blocking_json` wrapper has been removed.
- Payload reconstruction is used in network RPC to serve blocks-by-{root,range} responses. Here the `async` adjustment is messier, although I think I've managed to come up with a reasonable compromise: the handlers take the `SendOnDrop` by value so that they can drop it on _task completion_ (after the `fn` returns). Still, this is introducing disk reads onto core executor threads, which may have a negative performance impact (thoughts appreciated).
## Additional Info
- [x] For performance it would be great to remove the cloning of full blocks when converting them to blinded blocks to write to disk. I'm going to experiment with a `put_block` API that takes the block by value, breaks it into a blinded block and a payload, stores the blinded block, and then re-assembles the full block for the caller.
- [x] We should measure the latency of blocks-by-root and blocks-by-range responses.
- [x] We should add integration tests that stress the payload reconstruction (basic tests done, issue for more extensive tests: https://github.com/sigp/lighthouse/issues/3159)
- [x] We should (manually) test the schema v9 migration from several prior versions, particularly as blocks have changed on disk and some migrations rely on being able to load blocks.
Co-authored-by: Paul Hauner <paul@paulhauner.com>
2022-05-12 00:42:17 +00:00
|
|
|
[[package]]
|
|
|
|
name = "wyz"
|
|
|
|
version = "0.5.0"
|
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
|
checksum = "30b31594f29d27036c383b53b59ed3476874d518f0efb151b27a4c275141390e"
|
|
|
|
dependencies = [
|
|
|
|
"tap",
|
|
|
|
]
|
|
|
|
|
2019-12-09 11:39:44 +00:00
|
|
|
[[package]]
|
|
|
|
name = "x25519-dalek"
|
2021-05-04 00:44:05 +00:00
|
|
|
version = "1.1.1"
|
2019-12-09 11:39:44 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2021-05-04 00:44:05 +00:00
|
|
|
checksum = "5a0c105152107e3b96f6a00a65e86ce82d9b125230e1c4302940eca58ff71f4f"
|
2019-12-09 11:39:44 +00:00
|
|
|
dependencies = [
|
2022-02-10 04:12:03 +00:00
|
|
|
"curve25519-dalek 3.2.0",
|
2020-05-17 11:16:48 +00:00
|
|
|
"rand_core 0.5.1",
|
|
|
|
"zeroize",
|
2019-12-09 11:39:44 +00:00
|
|
|
]
|
|
|
|
|
2020-10-02 08:47:00 +00:00
|
|
|
[[package]]
|
|
|
|
name = "xml-rs"
|
2021-08-17 01:00:24 +00:00
|
|
|
version = "0.8.4"
|
2020-10-02 08:47:00 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2021-08-17 01:00:24 +00:00
|
|
|
checksum = "d2d7d3948613f75c98fd9328cfdcc45acc4d360655289d0a7d4ec931392200a3"
|
2020-10-02 08:47:00 +00:00
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "xmltree"
|
2021-05-04 00:44:05 +00:00
|
|
|
version = "0.10.3"
|
2020-10-02 08:47:00 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2021-05-04 00:44:05 +00:00
|
|
|
checksum = "d7d8a75eaf6557bb84a65ace8609883db44a29951042ada9b393151532e41fcb"
|
2020-10-02 08:47:00 +00:00
|
|
|
dependencies = [
|
|
|
|
"xml-rs",
|
|
|
|
]
|
|
|
|
|
2019-12-09 11:39:44 +00:00
|
|
|
[[package]]
|
|
|
|
name = "yaml-rust"
|
2021-02-10 23:29:49 +00:00
|
|
|
version = "0.4.5"
|
2019-12-09 11:39:44 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2021-02-10 23:29:49 +00:00
|
|
|
checksum = "56c1936c4cc7a1c9ab21a1ebb602eb942ba868cbd44a99cb7cdc5892335e1c85"
|
2019-12-09 11:39:44 +00:00
|
|
|
dependencies = [
|
2020-05-10 09:56:31 +00:00
|
|
|
"linked-hash-map",
|
2019-12-09 11:39:44 +00:00
|
|
|
]
|
|
|
|
|
2020-11-06 04:14:14 +00:00
|
|
|
[[package]]
|
|
|
|
name = "yamux"
|
2022-03-31 07:52:23 +00:00
|
|
|
version = "0.10.1"
|
2020-11-06 04:14:14 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2022-03-31 07:52:23 +00:00
|
|
|
checksum = "0c0608f53c1dc0bad505d03a34bbd49fbf2ad7b51eb036123e896365532745a1"
|
2020-11-06 04:14:14 +00:00
|
|
|
dependencies = [
|
2021-07-09 03:20:24 +00:00
|
|
|
"futures",
|
2020-12-09 01:34:58 +00:00
|
|
|
"log",
|
2020-11-06 04:14:14 +00:00
|
|
|
"nohash-hasher",
|
2022-06-18 23:59:43 +00:00
|
|
|
"parking_lot 0.12.1",
|
2022-03-02 05:09:52 +00:00
|
|
|
"rand 0.8.5",
|
2020-11-06 04:14:14 +00:00
|
|
|
"static_assertions",
|
|
|
|
]
|
|
|
|
|
2019-12-09 11:39:44 +00:00
|
|
|
[[package]]
|
|
|
|
name = "zeroize"
|
2022-02-10 04:12:03 +00:00
|
|
|
version = "1.4.3"
|
2019-12-09 11:39:44 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2022-02-10 04:12:03 +00:00
|
|
|
checksum = "d68d9dcec5f9b43a30d38c49f91dfedfaac384cb8f085faca366c26207dd1619"
|
2020-05-11 07:45:06 +00:00
|
|
|
dependencies = [
|
2020-05-17 11:16:48 +00:00
|
|
|
"zeroize_derive",
|
2020-05-10 09:56:31 +00:00
|
|
|
]
|
2020-05-11 07:45:06 +00:00
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "zeroize_derive"
|
2022-03-02 05:09:52 +00:00
|
|
|
version = "1.3.2"
|
2020-05-11 07:45:06 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2022-03-02 05:09:52 +00:00
|
|
|
checksum = "3f8f187641dad4f680d25c4bfc4225b418165984179f26ca76ec4fb6441d3a17"
|
2020-05-11 07:45:06 +00:00
|
|
|
dependencies = [
|
2020-05-17 11:16:48 +00:00
|
|
|
"proc-macro2",
|
|
|
|
"quote",
|
|
|
|
"syn",
|
2020-05-11 07:45:06 +00:00
|
|
|
"synstructure",
|
|
|
|
]
|
2020-09-11 01:43:13 +00:00
|
|
|
|
|
|
|
[[package]]
|
|
|
|
name = "zip"
|
2021-07-05 00:54:17 +00:00
|
|
|
version = "0.5.13"
|
2020-09-11 01:43:13 +00:00
|
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
2021-07-05 00:54:17 +00:00
|
|
|
checksum = "93ab48844d61251bb3835145c521d88aa4031d7139e8485990f60ca911fa0815"
|
2020-09-11 01:43:13 +00:00
|
|
|
dependencies = [
|
2020-10-05 08:22:19 +00:00
|
|
|
"byteorder",
|
2020-09-11 01:43:13 +00:00
|
|
|
"bzip2",
|
|
|
|
"crc32fast",
|
|
|
|
"flate2",
|
2020-10-05 08:22:19 +00:00
|
|
|
"thiserror",
|
2022-06-18 23:59:43 +00:00
|
|
|
"time 0.1.44",
|
2020-09-11 01:43:13 +00:00
|
|
|
]
|