mirror of
https://github.com/sigp/lighthouse.git
synced 2026-03-21 22:04:44 +00:00
Upgrade dependencies (#2513)
## Proposed Changes
* Consolidate Tokio versions: everything now uses the latest v1.10.0, no more `tokio-compat`.
* Many semver-compatible changes via `cargo update`. Notably this upgrades from the yanked v0.8.0 version of crossbeam-deque which is present in v1.5.0-rc.0
* Many semver incompatible upgrades via `cargo upgrades` and `cargo upgrade --workspace pkg_name`. Notable ommissions:
- Prometheus, to be handled separately: https://github.com/sigp/lighthouse/issues/2485
- `rand`, `rand_xorshift`: the libsecp256k1 package requires 0.7.x, so we'll stick with that for now
- `ethereum-types` is pinned at 0.11.0 because that's what `web3` is using and it seems nice to have just a single version
## Additional Info
We still have two versions of `libp2p-core` due to `discv5` depending on the v0.29.0 release rather than `master`. AFAIK it should be OK to release in this state (cc @AgeManning )
This commit is contained in:
@@ -26,7 +26,7 @@ slog = { version = "2.5.2", features = ["max_level_trace", "release_max_level_tr
|
||||
slog-term = "2.6.0"
|
||||
slog-async = "2.5.0"
|
||||
ctrlc = { version = "3.1.6", features = ["termination"] }
|
||||
tokio = { version = "1.7.1", features = ["time"] }
|
||||
tokio = { version = "1.10.0", features = ["time"] }
|
||||
exit-future = "0.2.0"
|
||||
dirs = "3.0.1"
|
||||
logging = { path = "../common/logging" }
|
||||
|
||||
@@ -40,7 +40,7 @@ eth2_ssz_derive = "0.1.0"
|
||||
state_processing = { path = "../../consensus/state_processing" }
|
||||
tree_hash = "0.1.1"
|
||||
types = { path = "../../consensus/types" }
|
||||
tokio = "1.7.1"
|
||||
tokio = "1.10.0"
|
||||
eth1 = { path = "../eth1" }
|
||||
futures = "0.3.7"
|
||||
genesis = { path = "../genesis" }
|
||||
@@ -62,4 +62,4 @@ regex = "1.3.9"
|
||||
exit-future = "0.2.0"
|
||||
slasher = { path = "../../slasher" }
|
||||
eth2 = { path = "../../common/eth2" }
|
||||
strum = { version = "0.20", features = ["derive"] }
|
||||
strum = { version = "0.21.0", features = ["derive"] }
|
||||
|
||||
@@ -26,7 +26,7 @@ error-chain = "0.12.4"
|
||||
serde_yaml = "0.8.13"
|
||||
slog = { version = "2.5.2", features = ["max_level_trace"] }
|
||||
slog-async = "2.5.0"
|
||||
tokio = "1.7.1"
|
||||
tokio = "1.10.0"
|
||||
dirs = "3.0.1"
|
||||
futures = "0.3.7"
|
||||
reqwest = { version = "0.11.0", features = ["native-tls-vendored"] }
|
||||
|
||||
@@ -7,10 +7,9 @@ edition = "2018"
|
||||
[dev-dependencies]
|
||||
eth1_test_rig = { path = "../../testing/eth1_test_rig" }
|
||||
toml = "0.5.6"
|
||||
web3 = { version = "0.16.0", default-features = false, features = ["http-tls", "signing", "ws-tls-tokio"] }
|
||||
web3 = { version = "0.17.0", default-features = false, features = ["http-tls", "signing", "ws-tls-tokio"] }
|
||||
sloggers = "1.0.1"
|
||||
environment = { path = "../../lighthouse/environment" }
|
||||
tokio-compat-02 = "0.2.0"
|
||||
|
||||
[dependencies]
|
||||
reqwest = { version = "0.11.0", features = ["native-tls-vendored"] }
|
||||
@@ -26,7 +25,7 @@ tree_hash = "0.1.1"
|
||||
eth2_hashing = "0.1.0"
|
||||
parking_lot = "0.11.0"
|
||||
slog = "2.5.2"
|
||||
tokio = { version = "1.7.1", features = ["full"] }
|
||||
tokio = { version = "1.10.0", features = ["full"] }
|
||||
state_processing = { path = "../../consensus/state_processing" }
|
||||
libflate = "1.0.2"
|
||||
lighthouse_metrics = { path = "../../common/lighthouse_metrics"}
|
||||
|
||||
@@ -10,7 +10,6 @@ use slog::Logger;
|
||||
use sloggers::{null::NullLoggerBuilder, Build};
|
||||
use std::ops::Range;
|
||||
use std::time::Duration;
|
||||
use tokio_compat_02::FutureExt;
|
||||
use tree_hash::TreeHash;
|
||||
use types::{DepositData, EthSpec, Hash256, Keypair, MainnetEthSpec, MinimalEthSpec, Signature};
|
||||
use web3::{transports::Http, Web3};
|
||||
@@ -90,7 +89,6 @@ async fn blocking_deposit_count(eth1: &GanacheEth1Instance, block_number: u64) -
|
||||
async fn get_block_number(web3: &Web3<Http>) -> u64 {
|
||||
web3.eth()
|
||||
.block_number()
|
||||
.compat()
|
||||
.await
|
||||
.map(|v| v.as_u64())
|
||||
.expect("should get block number")
|
||||
@@ -180,7 +178,6 @@ mod eth1_cache {
|
||||
}
|
||||
}
|
||||
}
|
||||
.compat()
|
||||
.await;
|
||||
}
|
||||
|
||||
@@ -235,7 +232,6 @@ mod eth1_cache {
|
||||
"should not grow cache beyond target"
|
||||
);
|
||||
}
|
||||
.compat()
|
||||
.await;
|
||||
}
|
||||
|
||||
@@ -288,7 +284,6 @@ mod eth1_cache {
|
||||
"should not grow cache beyond target"
|
||||
);
|
||||
}
|
||||
.compat()
|
||||
.await;
|
||||
}
|
||||
|
||||
@@ -335,7 +330,6 @@ mod eth1_cache {
|
||||
|
||||
assert!(service.block_cache_len() >= n, "should grow the cache");
|
||||
}
|
||||
.compat()
|
||||
.await;
|
||||
}
|
||||
}
|
||||
@@ -420,7 +414,6 @@ mod deposit_tree {
|
||||
);
|
||||
}
|
||||
}
|
||||
.compat()
|
||||
.await;
|
||||
}
|
||||
|
||||
@@ -470,7 +463,6 @@ mod deposit_tree {
|
||||
|
||||
assert_eq!(service.deposit_cache_len(), n);
|
||||
}
|
||||
.compat()
|
||||
.await;
|
||||
}
|
||||
|
||||
@@ -571,7 +563,6 @@ mod deposit_tree {
|
||||
}
|
||||
}
|
||||
}
|
||||
.compat()
|
||||
.await;
|
||||
}
|
||||
}
|
||||
@@ -675,7 +666,6 @@ mod http {
|
||||
);
|
||||
}
|
||||
}
|
||||
.compat()
|
||||
.await;
|
||||
}
|
||||
}
|
||||
@@ -756,7 +746,6 @@ mod fast {
|
||||
);
|
||||
}
|
||||
}
|
||||
.compat()
|
||||
.await;
|
||||
}
|
||||
}
|
||||
@@ -838,7 +827,6 @@ mod persist {
|
||||
"Should have equal cached deposits as before recovery"
|
||||
);
|
||||
}
|
||||
.compat()
|
||||
.await;
|
||||
}
|
||||
}
|
||||
@@ -918,7 +906,6 @@ mod fallbacks {
|
||||
endpoint2_block_number
|
||||
);
|
||||
}
|
||||
.compat()
|
||||
.await;
|
||||
}
|
||||
|
||||
@@ -988,7 +975,6 @@ mod fallbacks {
|
||||
endpoint2_block_number
|
||||
);
|
||||
}
|
||||
.compat()
|
||||
.await;
|
||||
}
|
||||
|
||||
@@ -1058,7 +1044,6 @@ mod fallbacks {
|
||||
endpoint2_block_number
|
||||
);
|
||||
}
|
||||
.compat()
|
||||
.await;
|
||||
}
|
||||
|
||||
@@ -1136,7 +1121,6 @@ mod fallbacks {
|
||||
endpoint2_block_number
|
||||
);
|
||||
}
|
||||
.compat()
|
||||
.await;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -16,7 +16,7 @@ eth2_ssz = "0.1.2"
|
||||
eth2_ssz_derive = "0.1.0"
|
||||
slog = { version = "2.5.2", features = ["max_level_trace"] }
|
||||
lighthouse_version = { path = "../../common/lighthouse_version" }
|
||||
tokio = { version = "1.7.1", features = ["time", "macros"] }
|
||||
tokio = { version = "1.10.0", features = ["time", "macros"] }
|
||||
futures = "0.3.7"
|
||||
futures-io = "0.3.7"
|
||||
error-chain = "0.12.4"
|
||||
@@ -39,7 +39,7 @@ task_executor = { path = "../../common/task_executor" }
|
||||
rand = "0.7.3"
|
||||
directory = { path = "../../common/directory" }
|
||||
regex = "1.3.9"
|
||||
strum = { version = "0.20", features = ["derive"] }
|
||||
strum = { version = "0.21.0", features = ["derive"] }
|
||||
superstruct = "0.2.0"
|
||||
|
||||
# TODO: remove the rev-reference and go back to release versions once there is a release that
|
||||
@@ -54,7 +54,7 @@ rev = "ce23cbe76a0382b6fcb0e49f1b2612df86f6465d"
|
||||
features = ["websocket", "identify", "mplex", "yamux", "noise", "gossipsub", "dns-tokio", "tcp-tokio"]
|
||||
|
||||
[dev-dependencies]
|
||||
tokio = { version = "1.7.1", features = ["full"] }
|
||||
tokio = { version = "1.10.0", features = ["full"] }
|
||||
slog-term = "2.6.0"
|
||||
slog-async = "2.5.0"
|
||||
tempfile = "3.1.0"
|
||||
|
||||
@@ -6,7 +6,6 @@ edition = "2018"
|
||||
|
||||
[dev-dependencies]
|
||||
eth1_test_rig = { path = "../../testing/eth1_test_rig" }
|
||||
tokio-compat-02 = "0.2.0"
|
||||
sensitive_url = { path = "../../common/sensitive_url" }
|
||||
|
||||
[dependencies]
|
||||
@@ -20,7 +19,7 @@ merkle_proof = { path = "../../consensus/merkle_proof" }
|
||||
eth2_ssz = "0.1.2"
|
||||
eth2_hashing = "0.1.0"
|
||||
tree_hash = "0.1.1"
|
||||
tokio = { version = "1.7.1", features = ["full"] }
|
||||
tokio = { version = "1.10.0", features = ["full"] }
|
||||
parking_lot = "0.11.0"
|
||||
slog = "2.5.2"
|
||||
exit-future = "0.2.0"
|
||||
|
||||
@@ -10,7 +10,6 @@ use genesis::{Eth1Config, Eth1GenesisService};
|
||||
use sensitive_url::SensitiveUrl;
|
||||
use state_processing::is_valid_genesis_state;
|
||||
use std::time::Duration;
|
||||
use tokio_compat_02::FutureExt;
|
||||
use types::{test_utils::generate_deterministic_keypair, Hash256, MinimalEthSpec};
|
||||
|
||||
pub fn new_env() -> Environment<MinimalEthSpec> {
|
||||
@@ -29,86 +28,82 @@ fn basic() {
|
||||
let log = env.core_context().log().clone();
|
||||
let mut spec = env.eth2_config().spec.clone();
|
||||
|
||||
env.runtime().block_on(
|
||||
async {
|
||||
let eth1 = GanacheEth1Instance::new(DEFAULT_NETWORK_ID.into(), DEFAULT_CHAIN_ID.into())
|
||||
.await
|
||||
.expect("should start eth1 environment");
|
||||
let deposit_contract = ð1.deposit_contract;
|
||||
let web3 = eth1.web3();
|
||||
env.runtime().block_on(async {
|
||||
let eth1 = GanacheEth1Instance::new(DEFAULT_NETWORK_ID.into(), DEFAULT_CHAIN_ID.into())
|
||||
.await
|
||||
.expect("should start eth1 environment");
|
||||
let deposit_contract = ð1.deposit_contract;
|
||||
let web3 = eth1.web3();
|
||||
|
||||
let now = web3
|
||||
.eth()
|
||||
.block_number()
|
||||
.compat()
|
||||
.await
|
||||
.map(|v| v.as_u64())
|
||||
.expect("should get block number");
|
||||
let now = web3
|
||||
.eth()
|
||||
.block_number()
|
||||
.await
|
||||
.map(|v| v.as_u64())
|
||||
.expect("should get block number");
|
||||
|
||||
let service = Eth1GenesisService::new(
|
||||
Eth1Config {
|
||||
endpoints: vec![SensitiveUrl::parse(eth1.endpoint().as_str()).unwrap()],
|
||||
deposit_contract_address: deposit_contract.address(),
|
||||
deposit_contract_deploy_block: now,
|
||||
lowest_cached_block_number: now,
|
||||
follow_distance: 0,
|
||||
block_cache_truncation: None,
|
||||
..Eth1Config::default()
|
||||
},
|
||||
log,
|
||||
spec.clone(),
|
||||
);
|
||||
let service = Eth1GenesisService::new(
|
||||
Eth1Config {
|
||||
endpoints: vec![SensitiveUrl::parse(eth1.endpoint().as_str()).unwrap()],
|
||||
deposit_contract_address: deposit_contract.address(),
|
||||
deposit_contract_deploy_block: now,
|
||||
lowest_cached_block_number: now,
|
||||
follow_distance: 0,
|
||||
block_cache_truncation: None,
|
||||
..Eth1Config::default()
|
||||
},
|
||||
log,
|
||||
spec.clone(),
|
||||
);
|
||||
|
||||
// NOTE: this test is sensitive to the response speed of the external web3 server. If
|
||||
// you're experiencing failures, try increasing the update_interval.
|
||||
let update_interval = Duration::from_millis(500);
|
||||
// NOTE: this test is sensitive to the response speed of the external web3 server. If
|
||||
// you're experiencing failures, try increasing the update_interval.
|
||||
let update_interval = Duration::from_millis(500);
|
||||
|
||||
spec.min_genesis_time = 0;
|
||||
spec.min_genesis_active_validator_count = 8;
|
||||
spec.min_genesis_time = 0;
|
||||
spec.min_genesis_active_validator_count = 8;
|
||||
|
||||
let deposits = (0..spec.min_genesis_active_validator_count + 2)
|
||||
.map(|i| {
|
||||
deposit_contract.deposit_helper::<MinimalEthSpec>(
|
||||
generate_deterministic_keypair(i as usize),
|
||||
Hash256::from_low_u64_le(i),
|
||||
32_000_000_000,
|
||||
)
|
||||
})
|
||||
.map(|deposit| DelayThenDeposit {
|
||||
delay: Duration::from_secs(0),
|
||||
deposit,
|
||||
})
|
||||
.collect::<Vec<_>>();
|
||||
let deposits = (0..spec.min_genesis_active_validator_count + 2)
|
||||
.map(|i| {
|
||||
deposit_contract.deposit_helper::<MinimalEthSpec>(
|
||||
generate_deterministic_keypair(i as usize),
|
||||
Hash256::from_low_u64_le(i),
|
||||
32_000_000_000,
|
||||
)
|
||||
})
|
||||
.map(|deposit| DelayThenDeposit {
|
||||
delay: Duration::from_secs(0),
|
||||
deposit,
|
||||
})
|
||||
.collect::<Vec<_>>();
|
||||
|
||||
let deposit_future = deposit_contract.deposit_multiple(deposits);
|
||||
let deposit_future = deposit_contract.deposit_multiple(deposits);
|
||||
|
||||
let wait_future =
|
||||
service.wait_for_genesis_state::<MinimalEthSpec>(update_interval, spec.clone());
|
||||
let wait_future =
|
||||
service.wait_for_genesis_state::<MinimalEthSpec>(update_interval, spec.clone());
|
||||
|
||||
let state = futures::try_join!(deposit_future, wait_future)
|
||||
.map(|(_, state)| state)
|
||||
.expect("should finish waiting for genesis");
|
||||
let state = futures::try_join!(deposit_future, wait_future)
|
||||
.map(|(_, state)| state)
|
||||
.expect("should finish waiting for genesis");
|
||||
|
||||
// Note: using ganache these deposits are 1-per-block, therefore we know there should only be
|
||||
// the minimum number of validators.
|
||||
assert_eq!(
|
||||
state.validators().len(),
|
||||
spec.min_genesis_active_validator_count as usize,
|
||||
"should have expected validator count"
|
||||
);
|
||||
// Note: using ganache these deposits are 1-per-block, therefore we know there should only be
|
||||
// the minimum number of validators.
|
||||
assert_eq!(
|
||||
state.validators().len(),
|
||||
spec.min_genesis_active_validator_count as usize,
|
||||
"should have expected validator count"
|
||||
);
|
||||
|
||||
assert!(state.genesis_time() > 0, "should have some genesis time");
|
||||
assert!(state.genesis_time() > 0, "should have some genesis time");
|
||||
|
||||
assert!(
|
||||
is_valid_genesis_state(&state, &spec),
|
||||
"should be valid genesis state"
|
||||
);
|
||||
assert!(
|
||||
is_valid_genesis_state(&state, &spec),
|
||||
"should be valid genesis state"
|
||||
);
|
||||
|
||||
assert!(
|
||||
is_valid_genesis_state(&state, &spec),
|
||||
"should be valid genesis state"
|
||||
);
|
||||
}
|
||||
.compat(),
|
||||
);
|
||||
assert!(
|
||||
is_valid_genesis_state(&state, &spec),
|
||||
"should be valid genesis state"
|
||||
);
|
||||
});
|
||||
}
|
||||
|
||||
@@ -8,7 +8,7 @@ autotests = false # using a single test binary compiles faster
|
||||
[dependencies]
|
||||
warp = { git = "https://github.com/paulhauner/warp ", branch = "cors-wildcard" }
|
||||
serde = { version = "1.0.116", features = ["derive"] }
|
||||
tokio = { version = "1.7.1", features = ["macros","sync"] }
|
||||
tokio = { version = "1.10.0", features = ["macros","sync"] }
|
||||
tokio-stream = { version = "0.1.3", features = ["sync"] }
|
||||
tokio-util = "0.6.3"
|
||||
parking_lot = "0.11.0"
|
||||
|
||||
@@ -23,7 +23,7 @@ warp_utils = { path = "../../common/warp_utils" }
|
||||
malloc_utils = { path = "../../common/malloc_utils" }
|
||||
|
||||
[dev-dependencies]
|
||||
tokio = { version = "1.7.1", features = ["sync"] }
|
||||
tokio = { version = "1.10.0", features = ["sync"] }
|
||||
reqwest = { version = "0.11.0", features = ["json"] }
|
||||
environment = { path = "../../lighthouse/environment" }
|
||||
types = { path = "../../consensus/types" }
|
||||
|
||||
@@ -31,7 +31,7 @@ eth2_ssz_types = { path = "../../consensus/ssz_types" }
|
||||
tree_hash = "0.1.1"
|
||||
futures = "0.3.7"
|
||||
error-chain = "0.12.4"
|
||||
tokio = { version = "1.7.1", features = ["full"] }
|
||||
tokio = { version = "1.10.0", features = ["full"] }
|
||||
tokio-stream = "0.1.3"
|
||||
parking_lot = "0.11.0"
|
||||
smallvec = "1.6.1"
|
||||
@@ -46,5 +46,5 @@ itertools = "0.10.0"
|
||||
num_cpus = "1.13.0"
|
||||
lru_cache = { path = "../../common/lru_cache" }
|
||||
if-addrs = "0.6.4"
|
||||
strum = { version = "0.20"}
|
||||
strum = "0.21.0"
|
||||
tokio-util = { version = "0.6.3", features = ["time"] }
|
||||
|
||||
@@ -8,7 +8,7 @@ edition = "2018"
|
||||
beacon_chain = { path = "../beacon_chain" }
|
||||
types = { path = "../../consensus/types" }
|
||||
slot_clock = { path = "../../common/slot_clock" }
|
||||
tokio = { version = "1.7.1", features = ["full"] }
|
||||
tokio = { version = "1.10.0", features = ["full"] }
|
||||
slog = "2.5.2"
|
||||
parking_lot = "0.11.0"
|
||||
futures = "0.3.7"
|
||||
|
||||
Reference in New Issue
Block a user