mirror of
https://github.com/sigp/lighthouse.git
synced 2026-04-16 20:39:10 +00:00
Merge unstable 20230925 into deneb-free-blobs.
This commit is contained in:
@@ -2,22 +2,22 @@
|
||||
name = "account_utils"
|
||||
version = "0.1.0"
|
||||
authors = ["Paul Hauner <paul@paulhauner.com>"]
|
||||
edition = "2021"
|
||||
edition = { workspace = true }
|
||||
|
||||
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
||||
|
||||
[dependencies]
|
||||
rand = "0.8.5"
|
||||
eth2_wallet = { path = "../../crypto/eth2_wallet" }
|
||||
eth2_keystore = { path = "../../crypto/eth2_keystore" }
|
||||
filesystem = { path = "../filesystem" }
|
||||
zeroize = { version = "1.4.2", features = ["zeroize_derive"] }
|
||||
serde = "1.0.116"
|
||||
rand = { workspace = true }
|
||||
eth2_wallet = { workspace = true }
|
||||
eth2_keystore = { workspace = true }
|
||||
filesystem = { workspace = true }
|
||||
zeroize = { workspace = true }
|
||||
serde = { workspace = true }
|
||||
serde_derive = "1.0.116"
|
||||
serde_yaml = "0.8.13"
|
||||
slog = { version = "2.5.2", features = ["max_level_trace", "release_max_level_trace"] }
|
||||
types = { path = "../../consensus/types" }
|
||||
validator_dir = { path = "../validator_dir" }
|
||||
regex = "1.5.5"
|
||||
serde_yaml = { workspace = true }
|
||||
slog = { workspace = true }
|
||||
types = { workspace = true }
|
||||
validator_dir = { workspace = true }
|
||||
regex = { workspace = true }
|
||||
rpassword = "5.0.0"
|
||||
directory = { path = "../directory" }
|
||||
directory = { workspace = true }
|
||||
|
||||
@@ -2,18 +2,18 @@
|
||||
name = "clap_utils"
|
||||
version = "0.1.0"
|
||||
authors = ["Paul Hauner <paul@paulhauner.com>"]
|
||||
edition = "2021"
|
||||
edition = { workspace = true }
|
||||
|
||||
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
||||
|
||||
[dependencies]
|
||||
clap = "2.33.3"
|
||||
hex = "0.4.2"
|
||||
dirs = "3.0.1"
|
||||
eth2_network_config = { path = "../eth2_network_config" }
|
||||
ethereum_ssz = "0.5.0"
|
||||
ethereum-types = "0.14.1"
|
||||
serde = "1.0.116"
|
||||
serde_json = "1.0.59"
|
||||
serde_yaml = "0.8.13"
|
||||
types = { path = "../../consensus/types"}
|
||||
clap = { workspace = true }
|
||||
hex = { workspace = true }
|
||||
dirs = { workspace = true }
|
||||
eth2_network_config = { workspace = true }
|
||||
ethereum_ssz = { workspace = true }
|
||||
ethereum-types = { workspace = true }
|
||||
serde = { workspace = true }
|
||||
serde_json = { workspace = true }
|
||||
serde_yaml = { workspace = true }
|
||||
types = { workspace = true }
|
||||
|
||||
@@ -2,10 +2,10 @@
|
||||
name = "compare_fields"
|
||||
version = "0.2.0"
|
||||
authors = ["Paul Hauner <paul@paulhauner.com>"]
|
||||
edition = "2021"
|
||||
edition = { workspace = true }
|
||||
|
||||
[dev-dependencies]
|
||||
compare_fields_derive = { path = "../compare_fields_derive" }
|
||||
compare_fields_derive = { workspace = true }
|
||||
|
||||
[package.metadata.cargo-udeps.ignore]
|
||||
development = ["compare_fields_derive"] # used in doc-tests
|
||||
|
||||
@@ -2,11 +2,11 @@
|
||||
name = "compare_fields_derive"
|
||||
version = "0.2.0"
|
||||
authors = ["Paul Hauner <paul@paulhauner.com>"]
|
||||
edition = "2021"
|
||||
edition = { workspace = true }
|
||||
|
||||
[lib]
|
||||
proc-macro = true
|
||||
|
||||
[dependencies]
|
||||
syn = "1.0.42"
|
||||
quote = "1.0.7"
|
||||
syn = { workspace = true }
|
||||
quote = { workspace = true }
|
||||
|
||||
@@ -2,18 +2,18 @@
|
||||
name = "deposit_contract"
|
||||
version = "0.2.0"
|
||||
authors = ["Paul Hauner <paul@paulhauner.com>"]
|
||||
edition = "2021"
|
||||
edition = { workspace = true }
|
||||
|
||||
build = "build.rs"
|
||||
|
||||
[build-dependencies]
|
||||
reqwest = { version = "0.11.0", features = ["blocking", "json", "native-tls-vendored"] }
|
||||
serde_json = "1.0.58"
|
||||
sha2 = "0.10"
|
||||
hex = "0.4.2"
|
||||
reqwest = { workspace = true }
|
||||
serde_json = { workspace = true }
|
||||
sha2 = { workspace = true }
|
||||
hex = { workspace = true }
|
||||
|
||||
[dependencies]
|
||||
types = { path = "../../consensus/types"}
|
||||
ethereum_ssz = "0.5.0"
|
||||
tree_hash = "0.5.2"
|
||||
types = { workspace = true }
|
||||
ethereum_ssz = { workspace = true }
|
||||
tree_hash = { workspace = true }
|
||||
ethabi = "16.0.0"
|
||||
|
||||
@@ -2,11 +2,11 @@
|
||||
name = "directory"
|
||||
version = "0.1.0"
|
||||
authors = ["pawan <pawandhananjay@gmail.com>"]
|
||||
edition = "2021"
|
||||
edition = { workspace = true }
|
||||
|
||||
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
||||
|
||||
[dependencies]
|
||||
clap = "2.33.3"
|
||||
clap_utils = {path = "../clap_utils"}
|
||||
eth2_network_config = { path = "../eth2_network_config" }
|
||||
clap = { workspace = true }
|
||||
clap_utils = { workspace = true }
|
||||
eth2_network_config = { workspace = true }
|
||||
|
||||
@@ -2,38 +2,38 @@
|
||||
name = "eth2"
|
||||
version = "0.1.0"
|
||||
authors = ["Paul Hauner <paul@paulhauner.com>"]
|
||||
edition = "2021"
|
||||
edition = { workspace = true }
|
||||
|
||||
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
||||
|
||||
[dependencies]
|
||||
serde = { version = "1.0.116", features = ["derive"] }
|
||||
serde_json = "1.0.58"
|
||||
ssz_types = "0.5.4"
|
||||
tree_hash = "0.5.2"
|
||||
types = { path = "../../consensus/types" }
|
||||
reqwest = { version = "0.11.0", features = ["json", "stream"] }
|
||||
lighthouse_network = { path = "../../beacon_node/lighthouse_network" }
|
||||
proto_array = { path = "../../consensus/proto_array", optional = true }
|
||||
ethereum_serde_utils = "0.5.0"
|
||||
eth2_keystore = { path = "../../crypto/eth2_keystore" }
|
||||
libsecp256k1 = "0.7.0"
|
||||
ring = "0.16.19"
|
||||
bytes = "1.0.1"
|
||||
account_utils = { path = "../../common/account_utils" }
|
||||
sensitive_url = { path = "../../common/sensitive_url" }
|
||||
ethereum_ssz = "0.5.0"
|
||||
ethereum_ssz_derive = "0.5.3"
|
||||
serde = { workspace = true }
|
||||
serde_json = { workspace = true }
|
||||
ssz_types = { workspace = true }
|
||||
tree_hash = { workspace = true }
|
||||
types = { workspace = true }
|
||||
reqwest = { workspace = true }
|
||||
lighthouse_network = { workspace = true }
|
||||
proto_array = { workspace = true }
|
||||
ethereum_serde_utils = { workspace = true }
|
||||
eth2_keystore = { workspace = true }
|
||||
libsecp256k1 = { workspace = true }
|
||||
ring = { workspace = true }
|
||||
bytes = { workspace = true }
|
||||
account_utils = { workspace = true }
|
||||
sensitive_url = { workspace = true }
|
||||
ethereum_ssz = { workspace = true }
|
||||
ethereum_ssz_derive = { workspace = true }
|
||||
futures-util = "0.3.8"
|
||||
futures = "0.3.8"
|
||||
store = { path = "../../beacon_node/store", optional = true }
|
||||
slashing_protection = { path = "../../validator_client/slashing_protection", optional = true }
|
||||
futures = { workspace = true }
|
||||
store = { workspace = true }
|
||||
slashing_protection = { workspace = true }
|
||||
mediatype = "0.19.13"
|
||||
mime = "0.3.16"
|
||||
pretty_reqwest_error = { path = "../../common/pretty_reqwest_error" }
|
||||
pretty_reqwest_error = { workspace = true }
|
||||
|
||||
[dev-dependencies]
|
||||
tokio = { version = "1.14.0", features = ["full"] }
|
||||
tokio = { workspace = true }
|
||||
|
||||
[target.'cfg(target_os = "linux")'.dependencies]
|
||||
psutil = { version = "3.2.2", optional = true }
|
||||
@@ -41,4 +41,4 @@ procfs = { version = "0.15.1", optional = true }
|
||||
|
||||
[features]
|
||||
default = ["lighthouse"]
|
||||
lighthouse = ["proto_array", "psutil", "procfs", "store", "slashing_protection"]
|
||||
lighthouse = ["psutil", "procfs"]
|
||||
|
||||
@@ -120,6 +120,7 @@ pub struct Timeouts {
|
||||
pub get_beacon_blocks_ssz: Duration,
|
||||
pub get_debug_beacon_states: Duration,
|
||||
pub get_deposit_snapshot: Duration,
|
||||
pub get_validator_block_ssz: Duration,
|
||||
}
|
||||
|
||||
impl Timeouts {
|
||||
@@ -135,6 +136,7 @@ impl Timeouts {
|
||||
get_beacon_blocks_ssz: timeout,
|
||||
get_debug_beacon_states: timeout,
|
||||
get_deposit_snapshot: timeout,
|
||||
get_validator_block_ssz: timeout,
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1629,14 +1631,14 @@ impl BeaconNodeHttpClient {
|
||||
.await
|
||||
}
|
||||
|
||||
/// `GET v2/validator/blocks/{slot}`
|
||||
pub async fn get_validator_blocks_modular<T: EthSpec, Payload: AbstractExecPayload<T>>(
|
||||
/// returns `GET v2/validator/blocks/{slot}` URL path
|
||||
pub async fn get_validator_blocks_path<T: EthSpec, Payload: AbstractExecPayload<T>>(
|
||||
&self,
|
||||
slot: Slot,
|
||||
randao_reveal: &SignatureBytes,
|
||||
graffiti: Option<&Graffiti>,
|
||||
skip_randao_verification: SkipRandaoVerification,
|
||||
) -> Result<ForkVersionedResponse<BlockContents<T, Payload>>, Error> {
|
||||
) -> Result<Url, Error> {
|
||||
let mut path = self.eth_path(V2)?;
|
||||
|
||||
path.path_segments_mut()
|
||||
@@ -1658,9 +1660,66 @@ impl BeaconNodeHttpClient {
|
||||
.append_pair("skip_randao_verification", "");
|
||||
}
|
||||
|
||||
Ok(path)
|
||||
}
|
||||
|
||||
/// `GET v2/validator/blocks/{slot}`
|
||||
pub async fn get_validator_blocks_modular<T: EthSpec, Payload: AbstractExecPayload<T>>(
|
||||
&self,
|
||||
slot: Slot,
|
||||
randao_reveal: &SignatureBytes,
|
||||
graffiti: Option<&Graffiti>,
|
||||
skip_randao_verification: SkipRandaoVerification,
|
||||
) -> Result<ForkVersionedResponse<BlockContents<T, Payload>>, Error> {
|
||||
let path = self
|
||||
.get_validator_blocks_path::<T, Payload>(
|
||||
slot,
|
||||
randao_reveal,
|
||||
graffiti,
|
||||
skip_randao_verification,
|
||||
)
|
||||
.await?;
|
||||
|
||||
self.get(path).await
|
||||
}
|
||||
|
||||
/// `GET v2/validator/blocks/{slot}` in ssz format
|
||||
pub async fn get_validator_blocks_ssz<T: EthSpec, Payload: AbstractExecPayload<T>>(
|
||||
&self,
|
||||
slot: Slot,
|
||||
randao_reveal: &SignatureBytes,
|
||||
graffiti: Option<&Graffiti>,
|
||||
) -> Result<Option<Vec<u8>>, Error> {
|
||||
self.get_validator_blocks_modular_ssz::<T, Payload>(
|
||||
slot,
|
||||
randao_reveal,
|
||||
graffiti,
|
||||
SkipRandaoVerification::No,
|
||||
)
|
||||
.await
|
||||
}
|
||||
|
||||
/// `GET v2/validator/blocks/{slot}` in ssz format
|
||||
pub async fn get_validator_blocks_modular_ssz<T: EthSpec, Payload: AbstractExecPayload<T>>(
|
||||
&self,
|
||||
slot: Slot,
|
||||
randao_reveal: &SignatureBytes,
|
||||
graffiti: Option<&Graffiti>,
|
||||
skip_randao_verification: SkipRandaoVerification,
|
||||
) -> Result<Option<Vec<u8>>, Error> {
|
||||
let path = self
|
||||
.get_validator_blocks_path::<T, Payload>(
|
||||
slot,
|
||||
randao_reveal,
|
||||
graffiti,
|
||||
skip_randao_verification,
|
||||
)
|
||||
.await?;
|
||||
|
||||
self.get_bytes_opt_accept_header(path, Accept::Ssz, self.timeouts.get_validator_block_ssz)
|
||||
.await
|
||||
}
|
||||
|
||||
/// `GET v2/validator/blinded_blocks/{slot}`
|
||||
pub async fn get_validator_blinded_blocks<T: EthSpec, Payload: AbstractExecPayload<T>>(
|
||||
&self,
|
||||
@@ -1677,17 +1736,14 @@ impl BeaconNodeHttpClient {
|
||||
.await
|
||||
}
|
||||
|
||||
/// `GET v1/validator/blinded_blocks/{slot}`
|
||||
pub async fn get_validator_blinded_blocks_modular<
|
||||
T: EthSpec,
|
||||
Payload: AbstractExecPayload<T>,
|
||||
>(
|
||||
/// returns `GET v1/validator/blinded_blocks/{slot}` URL path
|
||||
pub async fn get_validator_blinded_blocks_path<T: EthSpec, Payload: AbstractExecPayload<T>>(
|
||||
&self,
|
||||
slot: Slot,
|
||||
randao_reveal: &SignatureBytes,
|
||||
graffiti: Option<&Graffiti>,
|
||||
skip_randao_verification: SkipRandaoVerification,
|
||||
) -> Result<ForkVersionedResponse<BlockContents<T, Payload>>, Error> {
|
||||
) -> Result<Url, Error> {
|
||||
let mut path = self.eth_path(V1)?;
|
||||
|
||||
path.path_segments_mut()
|
||||
@@ -1709,9 +1765,71 @@ impl BeaconNodeHttpClient {
|
||||
.append_key_only("skip_randao_verification");
|
||||
}
|
||||
|
||||
Ok(path)
|
||||
}
|
||||
|
||||
/// `GET v1/validator/blinded_blocks/{slot}`
|
||||
pub async fn get_validator_blinded_blocks_modular<
|
||||
T: EthSpec,
|
||||
Payload: AbstractExecPayload<T>,
|
||||
>(
|
||||
&self,
|
||||
slot: Slot,
|
||||
randao_reveal: &SignatureBytes,
|
||||
graffiti: Option<&Graffiti>,
|
||||
skip_randao_verification: SkipRandaoVerification,
|
||||
) -> Result<ForkVersionedResponse<BlockContents<T, Payload>>, Error> {
|
||||
let path = self
|
||||
.get_validator_blinded_blocks_path::<T, Payload>(
|
||||
slot,
|
||||
randao_reveal,
|
||||
graffiti,
|
||||
skip_randao_verification,
|
||||
)
|
||||
.await?;
|
||||
|
||||
self.get(path).await
|
||||
}
|
||||
|
||||
/// `GET v2/validator/blinded_blocks/{slot}` in ssz format
|
||||
pub async fn get_validator_blinded_blocks_ssz<T: EthSpec, Payload: AbstractExecPayload<T>>(
|
||||
&self,
|
||||
slot: Slot,
|
||||
randao_reveal: &SignatureBytes,
|
||||
graffiti: Option<&Graffiti>,
|
||||
) -> Result<Option<Vec<u8>>, Error> {
|
||||
self.get_validator_blinded_blocks_modular_ssz::<T, Payload>(
|
||||
slot,
|
||||
randao_reveal,
|
||||
graffiti,
|
||||
SkipRandaoVerification::No,
|
||||
)
|
||||
.await
|
||||
}
|
||||
|
||||
pub async fn get_validator_blinded_blocks_modular_ssz<
|
||||
T: EthSpec,
|
||||
Payload: AbstractExecPayload<T>,
|
||||
>(
|
||||
&self,
|
||||
slot: Slot,
|
||||
randao_reveal: &SignatureBytes,
|
||||
graffiti: Option<&Graffiti>,
|
||||
skip_randao_verification: SkipRandaoVerification,
|
||||
) -> Result<Option<Vec<u8>>, Error> {
|
||||
let path = self
|
||||
.get_validator_blinded_blocks_path::<T, Payload>(
|
||||
slot,
|
||||
randao_reveal,
|
||||
graffiti,
|
||||
skip_randao_verification,
|
||||
)
|
||||
.await?;
|
||||
|
||||
self.get_bytes_opt_accept_header(path, Accept::Ssz, self.timeouts.get_validator_block_ssz)
|
||||
.await
|
||||
}
|
||||
|
||||
/// `GET validator/attestation_data?slot,committee_index`
|
||||
pub async fn get_validator_attestation_data(
|
||||
&self,
|
||||
|
||||
@@ -666,7 +666,7 @@ impl ValidatorClientHttpClient {
|
||||
&self,
|
||||
pubkey: &PublicKeyBytes,
|
||||
epoch: Option<Epoch>,
|
||||
) -> Result<SignedVoluntaryExit, Error> {
|
||||
) -> Result<GenericResponse<SignedVoluntaryExit>, Error> {
|
||||
let mut path = self.server.full.clone();
|
||||
|
||||
path.path_segments_mut()
|
||||
|
||||
@@ -1468,9 +1468,10 @@ mod tests {
|
||||
}
|
||||
|
||||
/// A wrapper over a [`BeaconBlock`] or a [`BeaconBlockAndBlobSidecars`].
|
||||
#[derive(Debug, Serialize, Deserialize)]
|
||||
#[derive(Debug, Encode, Serialize, Deserialize)]
|
||||
#[serde(untagged)]
|
||||
#[serde(bound = "T: EthSpec")]
|
||||
#[ssz(enum_behaviour = "transparent")]
|
||||
pub enum BlockContents<T: EthSpec, Payload: AbstractExecPayload<T>> {
|
||||
BlockAndBlobSidecars(BeaconBlockAndBlobSidecars<T, Payload>),
|
||||
BlindedBlockAndBlobSidecars(BlindedBeaconBlockAndBlobSidecars<T, Payload>),
|
||||
|
||||
@@ -2,8 +2,8 @@
|
||||
name = "eth2_config"
|
||||
version = "0.2.0"
|
||||
authors = ["Paul Hauner <paul@paulhauner.com>"]
|
||||
edition = "2021"
|
||||
edition = { workspace = true }
|
||||
|
||||
[dependencies]
|
||||
types = { path = "../../consensus/types" }
|
||||
paste = "1.0.5"
|
||||
types = { workspace = true }
|
||||
paste = { workspace = true }
|
||||
|
||||
@@ -29,7 +29,7 @@ const HOLESKY_GENESIS_STATE_SOURCE: GenesisStateSource = GenesisStateSource::Url
|
||||
// more details.
|
||||
"https://sigp-public-genesis-states.s3.ap-southeast-2.amazonaws.com/holesky/",
|
||||
],
|
||||
checksum: "0x76631cd0b9ddc5b2c766b496e23f16759ce1181446a4efb40e5540cd15b78a07",
|
||||
checksum: "0xd750639607c337bbb192b15c27f447732267bf72d1650180a0e44c2d93a80741",
|
||||
genesis_validators_root: "0x9143aa7c615a7f7115e2b6aac319c03529df8242ae705fba9df39b79c59fa8b1",
|
||||
};
|
||||
|
||||
|
||||
@@ -2,19 +2,19 @@
|
||||
name = "eth2_interop_keypairs"
|
||||
version = "0.2.0"
|
||||
authors = ["Paul Hauner <paul@paulhauner.com>"]
|
||||
edition = "2021"
|
||||
edition = { workspace = true }
|
||||
|
||||
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
||||
|
||||
[dependencies]
|
||||
lazy_static = "1.4.0"
|
||||
lazy_static = { workspace = true }
|
||||
num-bigint = "0.4.2"
|
||||
ethereum_hashing = "1.0.0-beta.2"
|
||||
hex = "0.4.2"
|
||||
serde_yaml = "0.8.13"
|
||||
serde = "1.0.116"
|
||||
ethereum_hashing = { workspace = true }
|
||||
hex = { workspace = true }
|
||||
serde_yaml = { workspace = true }
|
||||
serde = { workspace = true }
|
||||
serde_derive = "1.0.116"
|
||||
bls = { path = "../../crypto/bls" }
|
||||
bls = { workspace = true }
|
||||
|
||||
[dev-dependencies]
|
||||
base64 = "0.13.0"
|
||||
|
||||
@@ -2,29 +2,31 @@
|
||||
name = "eth2_network_config"
|
||||
version = "0.2.0"
|
||||
authors = ["Paul Hauner <paul@paulhauner.com>"]
|
||||
edition = "2021"
|
||||
edition = { workspace = true }
|
||||
|
||||
build = "build.rs"
|
||||
|
||||
[build-dependencies]
|
||||
zip = "0.6"
|
||||
eth2_config = { path = "../eth2_config" }
|
||||
zip = { workspace = true }
|
||||
eth2_config = { workspace = true }
|
||||
|
||||
[dev-dependencies]
|
||||
tempfile = "3.1.0"
|
||||
tempfile = { workspace = true }
|
||||
tokio = { workspace = true }
|
||||
|
||||
[dependencies]
|
||||
serde_yaml = "0.8.13"
|
||||
serde_json = "1.0.58"
|
||||
types = { path = "../../consensus/types" }
|
||||
kzg = { path = "../../crypto/kzg" }
|
||||
ethereum_ssz = "0.5.0"
|
||||
eth2_config = { path = "../eth2_config" }
|
||||
discv5 = "0.3.1"
|
||||
reqwest = { version = "0.11.0", features = ["blocking"] }
|
||||
pretty_reqwest_error = { path = "../pretty_reqwest_error" }
|
||||
sha2 = "0.10"
|
||||
url = "2.2.2"
|
||||
sensitive_url = { path = "../sensitive_url" }
|
||||
slog = "2.5.2"
|
||||
logging = { path = "../logging" }
|
||||
serde_yaml = { workspace = true }
|
||||
serde_json = { workspace = true }
|
||||
types = { workspace = true }
|
||||
kzg = { workspace = true }
|
||||
ethereum_ssz = { workspace = true }
|
||||
eth2_config = { workspace = true }
|
||||
discv5 = { workspace = true }
|
||||
reqwest = { workspace = true }
|
||||
pretty_reqwest_error = { workspace = true }
|
||||
sha2 = { workspace = true }
|
||||
url = { workspace = true }
|
||||
sensitive_url = { workspace = true }
|
||||
slog = { workspace = true }
|
||||
logging = { workspace = true }
|
||||
bytes = { workspace = true }
|
||||
|
||||
@@ -1,8 +1,9 @@
|
||||
# EF
|
||||
- enr:-Iq4QJk4WqRkjsX5c2CXtOra6HnxN-BMXnWhmhEQO9Bn9iABTJGdjUOurM7Btj1ouKaFkvTRoju5vz2GPmVON2dffQKGAX53x8JigmlkgnY0gmlwhLKAlv6Jc2VjcDI1NmsxoQK6S-Cii_KmfFdUJL2TANL3ksaKUnNXvTCv1tLwXs0QgIN1ZHCCIyk
|
||||
- enr:-KG4QF6d6vMSboSujAXTI4vYqArccm0eIlXfcxf2Lx_VE1q6IkQo_2D5LAO3ZSBVUs0w5rrVDmABJZuMzISe_pZundADhGV0aDKQqX6DZjABcAAAAQAAAAAAAIJpZIJ2NIJpcISygIjpiXNlY3AyNTZrMaEDF3aSa7QSCvdqLpANNd8GML4PLEZVg45fKQwMWhDZjd2DdGNwgiMog3VkcIIjKA
|
||||
- enr:-Ly4QJLXSSAj3ggPBIcodvBU6IyfpU_yW7E9J-5syoJorBuvcYj_Fokcjr303bQoTdWXADf8po0ssh75Mr5wVGzZZsMBh2F0dG5ldHOIAAAAAAAAAACEZXRoMpCpfoNmMAFwAAABAAAAAAAAgmlkgnY0gmlwhJK-DYCJc2VjcDI1NmsxoQJrIlXIQDvQ6t9yDySqJYDXgZgLXzTvq8W7OI51jfmxJohzeW5jbmV0cwCDdGNwgiMog3VkcIIjKA
|
||||
- enr:-Ku4QFo-9q73SspYI8cac_4kTX7yF800VXqJW4Lj3HkIkb5CMqFLxciNHePmMt4XdJzHvhrCC5ADI4D_GkAsxGJRLnQBh2F0dG5ldHOIAAAAAAAAAACEZXRoMpAhnTT-AQFwAP__________gmlkgnY0gmlwhLKAiOmJc2VjcDI1NmsxoQORcM6e19T1T9gi7jxEZjk_sjVLGFscUNqAY9obgZaxbIN1ZHCCIyk
|
||||
- enr:-Ku4QPG7F72mbKx3gEQEx07wpYYusGDh-ni6SNkLvOS-hhN-BxIggN7tKlmalb0L5JPoAfqD-akTZ-gX06hFeBEz4WoBh2F0dG5ldHOIAAAAAAAAAACEZXRoMpAhnTT-AQFwAP__________gmlkgnY0gmlwhJK-DYCJc2VjcDI1NmsxoQKLVXFOhp2uX6jeT0DvvDpPcU8FWMjQdR4wMuORMhpX24N1ZHCCIyk
|
||||
- enr:-LK4QPxe-mDiSOtEB_Y82ozvxn9aQM07Ui8A-vQHNgYGMMthfsfOabaaTHhhJHFCBQQVRjBww_A5bM1rf8MlkJU_l68Eh2F0dG5ldHOIAADAAAAAAACEZXRoMpBpt9l0BAFwAAABAAAAAAAAgmlkgnY0gmlwhLKAiOmJc2VjcDI1NmsxoQJu6T9pclPObAzEVQ53DpVQqjadmVxdTLL-J3h9NFoCeIN0Y3CCIyiDdWRwgiMo
|
||||
- enr:-Ly4QGbOw4xNel5EhmDsJJ-QhC9XycWtsetnWoZ0uRy381GHdHsNHJiCwDTOkb3S1Ade0SFQkWJX_pgb3g8Jfh93rvMBh2F0dG5ldHOIAAAAAAAAAACEZXRoMpBpt9l0BAFwAAABAAAAAAAAgmlkgnY0gmlwhJK-DYCJc2VjcDI1NmsxoQOxKv9sv3zKF8GDewgFGGHKP5HCZZpPpTrwl9eXKAWGxIhzeW5jbmV0cwCDdGNwgiMog3VkcIIjKA
|
||||
# Teku
|
||||
- enr:-LK4QMlzEff6d-M0A1pSFG5lJ2c56i_I-ZftdojZbW3ehkGNM4pkQuHQqzVvF1BG9aDjIakjnmO23mCBFFZ2w5zOsugEh2F0dG5ldHOIAAAAAAYAAACEZXRoMpCpfoNmMAFwAAABAAAAAAAAgmlkgnY0gmlwhKyuI_mJc2VjcDI1NmsxoQIH1kQRCZW-4AIVyAeXj5o49m_IqNFKRHp6tSpfXMUrSYN0Y3CCIyiDdWRwgiMo
|
||||
- enr:-LS4QG0uV4qvcpJ-HFDJRGBmnlD3TJo7yc4jwK8iP7iKaTlfQ5kZvIDspLMJhk7j9KapuL9yyHaZmwTEZqr10k9XumyCEcmHYXR0bmV0c4gAAAAABgAAAIRldGgykGm32XQEAXAAAAEAAAAAAACCaWSCdjSCaXCErK4j-YlzZWNwMjU2azGhAgfWRBEJlb7gAhXIB5ePmjj2b8io0UpEenq1Kl9cxStJg3RjcIIjKIN1ZHCCIyg
|
||||
# Sigma Prime
|
||||
- enr:-Le4QI88slOwzz66Ksq8Vnz324DPb1BzSiY-WYPvnoJIl-lceW9bmSJnwDzgNbCjp5wsBigg76x4tValvGgQPxxSjrMBhGV0aDKQqX6DZjABcAAAAQAAAAAAAIJpZIJ2NIJpcIQ5gR6Wg2lwNpAgAUHQBwEQAAAAAAAAADR-iXNlY3AyNTZrMaEDPMSNdcL92uNIyCsS177Z6KTXlbZakQqxv3aQcWawNXeDdWRwgiMohHVkcDaCI4I
|
||||
- enr:-Le4QLoE1wFHSlGcm48a9ZESb_MRLqPPu6G0vHqu4MaUcQNDHS69tsy-zkN0K6pglyzX8m24mkb-LtBcbjAYdP1uxm4BhGV0aDKQabfZdAQBcAAAAQAAAAAAAIJpZIJ2NIJpcIQ5gR6Wg2lwNpAgAUHQBwEQAAAAAAAAADR-iXNlY3AyNTZrMaEDPMSNdcL92uNIyCsS177Z6KTXlbZakQqxv3aQcWawNXeDdWRwgiMohHVkcDaCI4I
|
||||
|
||||
@@ -6,9 +6,9 @@ CONFIG_NAME: holesky
|
||||
# ---------------------------------------------------------------
|
||||
# `2**14` (= 16,384)
|
||||
MIN_GENESIS_ACTIVE_VALIDATOR_COUNT: 16384
|
||||
# Sep-15-2023 13:55:00 +UTC
|
||||
MIN_GENESIS_TIME: 1694786100
|
||||
GENESIS_FORK_VERSION: 0x00017000
|
||||
# Sep-28-2023 11:55:00 +UTC
|
||||
MIN_GENESIS_TIME: 1695902100
|
||||
GENESIS_FORK_VERSION: 0x01017000
|
||||
# Genesis delay 5 mins
|
||||
GENESIS_DELAY: 300
|
||||
|
||||
@@ -20,23 +20,19 @@ GENESIS_DELAY: 300
|
||||
# - Temporarily set to max uint64 value: 2**64 - 1
|
||||
|
||||
# Altair
|
||||
ALTAIR_FORK_VERSION: 0x10017000
|
||||
ALTAIR_FORK_VERSION: 0x02017000
|
||||
ALTAIR_FORK_EPOCH: 0
|
||||
# Merge
|
||||
BELLATRIX_FORK_VERSION: 0x20017000
|
||||
BELLATRIX_FORK_VERSION: 0x03017000
|
||||
BELLATRIX_FORK_EPOCH: 0
|
||||
TERMINAL_TOTAL_DIFFICULTY: 0
|
||||
TERMINAL_BLOCK_HASH: 0x0000000000000000000000000000000000000000000000000000000000000000
|
||||
TERMINAL_BLOCK_HASH_ACTIVATION_EPOCH: 18446744073709551615
|
||||
|
||||
# Capella
|
||||
CAPELLA_FORK_VERSION: 0x30017000
|
||||
CAPELLA_FORK_VERSION: 0x04017000
|
||||
CAPELLA_FORK_EPOCH: 256
|
||||
|
||||
# DENEB
|
||||
DENEB_FORK_VERSION: 0x40017000
|
||||
DENEB_FORK_EPOCH: 18446744073709551615
|
||||
|
||||
# Time parameters
|
||||
# ---------------------------------------------------------------
|
||||
# 12 seconds
|
||||
|
||||
@@ -10,11 +10,13 @@
|
||||
- enr:-Ku4QEWzdnVtXc2Q0ZVigfCGggOVB2Vc1ZCPEc6j21NIFLODSJbvNaef1g4PxhPwl_3kax86YPheFUSLXPRs98vvYsoBh2F0dG5ldHOIAAAAAAAAAACEZXRoMpC1MD8qAAAAAP__________gmlkgnY0gmlwhDZBrP2Jc2VjcDI1NmsxoQM6jr8Rb1ktLEsVcKAPa08wCsKUmvoQ8khiOl_SLozf9IN1ZHCCIyg
|
||||
# Teku team (Consensys)
|
||||
- enr:-KG4QOtcP9X1FbIMOe17QNMKqDxCpm14jcX5tiOE4_TyMrFqbmhPZHK_ZPG2Gxb1GE2xdtodOfx9-cgvNtxnRyHEmC0ghGV0aDKQ9aX9QgAAAAD__________4JpZIJ2NIJpcIQDE8KdiXNlY3AyNTZrMaEDhpehBDbZjM_L9ek699Y7vhUJ-eAdMyQW_Fil522Y0fODdGNwgiMog3VkcIIjKA
|
||||
- enr:-KG4QDyytgmE4f7AnvW-ZaUOIi9i79qX4JwjRAiXBZCU65wOfBu-3Nb5I7b_Rmg3KCOcZM_C3y5pg7EBU5XGrcLTduQEhGV0aDKQ9aX9QgAAAAD__________4JpZIJ2NIJpcIQ2_DUbiXNlY3AyNTZrMaEDKnz_-ps3UUOfHWVYaskI5kWYO_vtYMGYCQRAR3gHDouDdGNwgiMog3VkcIIjKA
|
||||
- enr:-KG4QL-eqFoHy0cI31THvtZjpYUu_Jdw_MO7skQRJxY1g5HTN1A0epPCU6vi0gLGUgrzpU-ygeMSS8ewVxDpKfYmxMMGhGV0aDKQtTA_KgAAAAD__________4JpZIJ2NIJpcIQ2_DUbiXNlY3AyNTZrMaED8GJ2vzUqgL6-KD1xalo1CsmY4X1HaDnyl6Y_WayCo9GDdGNwgiMog3VkcIIjKA
|
||||
- enr:-KG4QMOEswP62yzDjSwWS4YEjtTZ5PO6r65CPqYBkgTTkrpaedQ8uEUo1uMALtJIvb2w_WWEVmg5yt1UAuK1ftxUU7QDhGV0aDKQu6TalgMAAAD__________4JpZIJ2NIJpcIQEnfA2iXNlY3AyNTZrMaEDfol8oLr6XJ7FsdAYE7lpJhKMls4G_v6qQOGKJUWGb_uDdGNwgiMog3VkcIIjKA
|
||||
- enr:-KG4QF4B5WrlFcRhUU6dZETwY5ZzAXnA0vGC__L1Kdw602nDZwXSTs5RFXFIFUnbQJmhNGVU6OIX7KVrCSTODsz1tK4DhGV0aDKQu6TalgMAAAD__________4JpZIJ2NIJpcIQExNYEiXNlY3AyNTZrMaECQmM9vp7KhaXhI-nqL_R0ovULLCFSFTa9CPPSdb1zPX6DdGNwgiMog3VkcIIjKA
|
||||
# Prysm team (Prysmatic Labs)
|
||||
- enr:-Ku4QImhMc1z8yCiNJ1TyUxdcfNucje3BGwEHzodEZUan8PherEo4sF7pPHPSIB1NNuSg5fZy7qFsjmUKs2ea1Whi0EBh2F0dG5ldHOIAAAAAAAAAACEZXRoMpD1pf1CAAAAAP__________gmlkgnY0gmlwhBLf22SJc2VjcDI1NmsxoQOVphkDqal4QzPMksc5wnpuC3gvSC8AfbFOnZY_On34wIN1ZHCCIyg
|
||||
- enr:-Ku4QP2xDnEtUXIjzJ_DhlCRN9SN99RYQPJL92TMlSv7U5C1YnYLjwOQHgZIUXw6c-BvRg2Yc2QsZxxoS_pPRVe0yK8Bh2F0dG5ldHOIAAAAAAAAAACEZXRoMpD1pf1CAAAAAP__________gmlkgnY0gmlwhBLf22SJc2VjcDI1NmsxoQMeFF5GrS7UZpAH2Ly84aLK-TyvH-dRo0JM1i8yygH50YN1ZHCCJxA
|
||||
- enr:-Ku4QPp9z1W4tAO8Ber_NQierYaOStqhDqQdOPY3bB3jDgkjcbk6YrEnVYIiCBbTxuar3CzS528d2iE7TdJsrL-dEKoBh2F0dG5ldHOIAAAAAAAAAACEZXRoMpD1pf1CAAAAAP__________gmlkgnY0gmlwhBLf22SJc2VjcDI1NmsxoQMw5fqqkw2hHC4F5HZZDPsNmPdB1Gi8JPQK7pRc9XHh-oN1ZHCCKvg
|
||||
# Nimbus team
|
||||
- enr:-LK4QA8FfhaAjlb_BXsXxSfiysR7R52Nhi9JBt4F8SPssu8hdE1BXQQEtVDC3qStCW60LSO7hEsVHv5zm8_6Vnjhcn0Bh2F0dG5ldHOIAAAAAAAAAACEZXRoMpC1MD8qAAAAAP__________gmlkgnY0gmlwhAN4aBKJc2VjcDI1NmsxoQJerDhsJ-KxZ8sHySMOCmTO6sHM3iCFQ6VMvLTe948MyYN0Y3CCI4yDdWRwgiOM
|
||||
- enr:-LK4QKWrXTpV9T78hNG6s8AM6IO4XH9kFT91uZtFg1GcsJ6dKovDOr1jtAAFPnS2lvNltkOGA9k29BUN7lFh_sjuc9QBh2F0dG5ldHOIAAAAAAAAAACEZXRoMpC1MD8qAAAAAP__________gmlkgnY0gmlwhANAdd-Jc2VjcDI1NmsxoQLQa6ai7y9PMN5hpLe5HmiJSlYzMuzP7ZhwRiwHvqNXdoN0Y3CCI4yDdWRwgiOM
|
||||
- enr:-LK4QKWrXTpV9T78hNG6s8AM6IO4XH9kFT91uZtFg1GcsJ6dKovDOr1jtAAFPnS2lvNltkOGA9k29BUN7lFh_sjuc9QBh2F0dG5ldHOIAAAAAAAAAACEZXRoMpC1MD8qAAAAAP__________gmlkgnY0gmlwhANAdd-Jc2VjcDI1NmsxoQLQa6ai7y9PMN5hpLe5HmiJSlYzMuzP7ZhwRiwHvqNXdoN0Y3CCI4yDdWRwgiOM
|
||||
|
||||
@@ -11,11 +11,12 @@
|
||||
//! To add a new built-in testnet, add it to the `define_hardcoded_nets` invocation in the `eth2_config`
|
||||
//! crate.
|
||||
|
||||
use bytes::Bytes;
|
||||
use discv5::enr::{CombinedKey, Enr};
|
||||
use eth2_config::{instantiate_hardcoded_nets, HardcodedNet};
|
||||
use kzg::{KzgPreset, KzgPresetId, TrustedSetup};
|
||||
use pretty_reqwest_error::PrettyReqwestError;
|
||||
use reqwest::blocking::Client;
|
||||
use reqwest::{Client, Error};
|
||||
use sensitive_url::SensitiveUrl;
|
||||
use sha2::{Digest, Sha256};
|
||||
use slog::{info, warn, Logger};
|
||||
@@ -168,14 +169,8 @@ impl Eth2NetworkConfig {
|
||||
self.genesis_state_source != GenesisStateSource::Unknown
|
||||
}
|
||||
|
||||
/// The `genesis_validators_root` of the genesis state. May download the
|
||||
/// genesis state if the value is not already available.
|
||||
pub fn genesis_validators_root<E: EthSpec>(
|
||||
&self,
|
||||
genesis_state_url: Option<&str>,
|
||||
timeout: Duration,
|
||||
log: &Logger,
|
||||
) -> Result<Option<Hash256>, String> {
|
||||
/// The `genesis_validators_root` of the genesis state.
|
||||
pub fn genesis_validators_root<E: EthSpec>(&self) -> Result<Option<Hash256>, String> {
|
||||
if let GenesisStateSource::Url {
|
||||
genesis_validators_root,
|
||||
..
|
||||
@@ -190,10 +185,8 @@ impl Eth2NetworkConfig {
|
||||
)
|
||||
})
|
||||
} else {
|
||||
self.genesis_state::<E>(genesis_state_url, timeout, log)?
|
||||
.map(|state| state.genesis_validators_root())
|
||||
.map(Result::Ok)
|
||||
.transpose()
|
||||
self.get_genesis_state_from_bytes::<E>()
|
||||
.map(|state| Some(state.genesis_validators_root()))
|
||||
}
|
||||
}
|
||||
|
||||
@@ -211,7 +204,7 @@ impl Eth2NetworkConfig {
|
||||
///
|
||||
/// If the genesis state is configured to be downloaded from a URL, then the
|
||||
/// `genesis_state_url` will override the built-in list of download URLs.
|
||||
pub fn genesis_state<E: EthSpec>(
|
||||
pub async fn genesis_state<E: EthSpec>(
|
||||
&self,
|
||||
genesis_state_url: Option<&str>,
|
||||
timeout: Duration,
|
||||
@@ -221,15 +214,7 @@ impl Eth2NetworkConfig {
|
||||
match &self.genesis_state_source {
|
||||
GenesisStateSource::Unknown => Ok(None),
|
||||
GenesisStateSource::IncludedBytes => {
|
||||
let state = self
|
||||
.genesis_state_bytes
|
||||
.as_ref()
|
||||
.map(|bytes| {
|
||||
BeaconState::from_ssz_bytes(bytes.as_ref(), &spec).map_err(|e| {
|
||||
format!("Built-in genesis state SSZ bytes are invalid: {:?}", e)
|
||||
})
|
||||
})
|
||||
.ok_or("Genesis state bytes missing from Eth2NetworkConfig")??;
|
||||
let state = self.get_genesis_state_from_bytes()?;
|
||||
Ok(Some(state))
|
||||
}
|
||||
GenesisStateSource::Url {
|
||||
@@ -241,9 +226,9 @@ impl Eth2NetworkConfig {
|
||||
format!("Unable to parse genesis state bytes checksum: {:?}", e)
|
||||
})?;
|
||||
let bytes = if let Some(specified_url) = genesis_state_url {
|
||||
download_genesis_state(&[specified_url], timeout, checksum, log)
|
||||
download_genesis_state(&[specified_url], timeout, checksum, log).await
|
||||
} else {
|
||||
download_genesis_state(built_in_urls, timeout, checksum, log)
|
||||
download_genesis_state(built_in_urls, timeout, checksum, log).await
|
||||
}?;
|
||||
let state = BeaconState::from_ssz_bytes(bytes.as_ref(), &spec).map_err(|e| {
|
||||
format!("Downloaded genesis state SSZ bytes are invalid: {:?}", e)
|
||||
@@ -269,6 +254,17 @@ impl Eth2NetworkConfig {
|
||||
}
|
||||
}
|
||||
|
||||
fn get_genesis_state_from_bytes<E: EthSpec>(&self) -> Result<BeaconState<E>, String> {
|
||||
let spec = self.chain_spec::<E>()?;
|
||||
self.genesis_state_bytes
|
||||
.as_ref()
|
||||
.map(|bytes| {
|
||||
BeaconState::from_ssz_bytes(bytes.as_ref(), &spec)
|
||||
.map_err(|e| format!("Built-in genesis state SSZ bytes are invalid: {:?}", e))
|
||||
})
|
||||
.ok_or("Genesis state bytes missing from Eth2NetworkConfig")?
|
||||
}
|
||||
|
||||
/// Write the files to the directory.
|
||||
///
|
||||
/// Overwrites files if specified to do so.
|
||||
@@ -396,7 +392,7 @@ impl Eth2NetworkConfig {
|
||||
/// Try to download a genesis state from each of the `urls` in the order they
|
||||
/// are defined. Return `Ok` if any url returns a response that matches the
|
||||
/// given `checksum`.
|
||||
fn download_genesis_state(
|
||||
async fn download_genesis_state(
|
||||
urls: &[&str],
|
||||
timeout: Duration,
|
||||
checksum: Hash256,
|
||||
@@ -428,12 +424,7 @@ fn download_genesis_state(
|
||||
);
|
||||
|
||||
let client = Client::new();
|
||||
let response = client
|
||||
.get(url)
|
||||
.header("Accept", "application/octet-stream")
|
||||
.timeout(timeout)
|
||||
.send()
|
||||
.and_then(|r| r.error_for_status().and_then(|r| r.bytes()));
|
||||
let response = get_state_bytes(timeout, url, client).await;
|
||||
|
||||
match response {
|
||||
Ok(bytes) => {
|
||||
@@ -463,6 +454,18 @@ fn download_genesis_state(
|
||||
))
|
||||
}
|
||||
|
||||
async fn get_state_bytes(timeout: Duration, url: Url, client: Client) -> Result<Bytes, Error> {
|
||||
client
|
||||
.get(url)
|
||||
.header("Accept", "application/octet-stream")
|
||||
.timeout(timeout)
|
||||
.send()
|
||||
.await?
|
||||
.error_for_status()?
|
||||
.bytes()
|
||||
.await
|
||||
}
|
||||
|
||||
/// Parses the `url` and joins the necessary state download path.
|
||||
fn parse_state_download_url(url: &str) -> Result<Url, String> {
|
||||
Url::parse(url)
|
||||
@@ -507,11 +510,12 @@ mod tests {
|
||||
assert_eq!(spec, config.chain_spec::<GnosisEthSpec>().unwrap());
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn mainnet_genesis_state() {
|
||||
#[tokio::test]
|
||||
async fn mainnet_genesis_state() {
|
||||
let config = Eth2NetworkConfig::from_hardcoded_net(&MAINNET).unwrap();
|
||||
config
|
||||
.genesis_state::<E>(None, Duration::from_secs(1), &logging::test_logger())
|
||||
.await
|
||||
.expect("beacon state can decode");
|
||||
}
|
||||
|
||||
|
||||
@@ -2,13 +2,13 @@
|
||||
name = "eth2_wallet_manager"
|
||||
version = "0.1.0"
|
||||
authors = ["Paul Hauner <paul@paulhauner.com>"]
|
||||
edition = "2021"
|
||||
edition = { workspace = true }
|
||||
|
||||
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
||||
|
||||
[dependencies]
|
||||
eth2_wallet = { path = "../../crypto/eth2_wallet" }
|
||||
lockfile = { path = "../lockfile" }
|
||||
eth2_wallet = { workspace = true }
|
||||
lockfile = { workspace = true }
|
||||
|
||||
[dev-dependencies]
|
||||
tempfile = "3.1.0"
|
||||
tempfile = { workspace = true }
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
name = "filesystem"
|
||||
version = "0.1.0"
|
||||
authors = ["Mark Mackey <mark@sigmaprime.io>"]
|
||||
edition = "2021"
|
||||
edition = { workspace = true }
|
||||
|
||||
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
||||
|
||||
|
||||
@@ -2,10 +2,10 @@
|
||||
name = "lighthouse_metrics"
|
||||
version = "0.2.0"
|
||||
authors = ["Paul Hauner <paul@paulhauner.com>"]
|
||||
edition = "2021"
|
||||
edition = { workspace = true }
|
||||
|
||||
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
||||
|
||||
[dependencies]
|
||||
lazy_static = "1.4.0"
|
||||
lazy_static = { workspace = true }
|
||||
prometheus = "0.13.0"
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
name = "lighthouse_version"
|
||||
version = "0.1.0"
|
||||
authors = ["Paul Hauner <paul@paulhauner.com>"]
|
||||
edition = "2021"
|
||||
edition = { workspace = true }
|
||||
|
||||
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
||||
|
||||
@@ -11,4 +11,4 @@ git-version = "0.3.4"
|
||||
target_info = "0.1.0"
|
||||
|
||||
[dev-dependencies]
|
||||
regex = "1.5.5"
|
||||
regex = { workspace = true }
|
||||
|
||||
@@ -17,8 +17,8 @@ pub const VERSION: &str = git_version!(
|
||||
// NOTE: using --match instead of --exclude for compatibility with old Git
|
||||
"--match=thiswillnevermatchlol"
|
||||
],
|
||||
prefix = "Lighthouse/v4.4.1-",
|
||||
fallback = "Lighthouse/v4.4.1"
|
||||
prefix = "Lighthouse/v4.5.0-",
|
||||
fallback = "Lighthouse/v4.5.0"
|
||||
);
|
||||
|
||||
/// Returns `VERSION`, but with platform information appended to the end.
|
||||
|
||||
@@ -2,10 +2,10 @@
|
||||
name = "lockfile"
|
||||
version = "0.1.0"
|
||||
authors = ["Michael Sproul <michael@sigmaprime.io>"]
|
||||
edition = "2021"
|
||||
edition = { workspace = true }
|
||||
|
||||
[dependencies]
|
||||
fs2 = "0.4.3"
|
||||
fs2 = { workspace = true }
|
||||
|
||||
[dev-dependencies]
|
||||
tempfile = "3.1.0"
|
||||
tempfile = { workspace = true }
|
||||
|
||||
@@ -2,21 +2,21 @@
|
||||
name = "logging"
|
||||
version = "0.2.0"
|
||||
authors = ["blacktemplar <blacktemplar@a1.net>"]
|
||||
edition = "2021"
|
||||
edition = { workspace = true }
|
||||
|
||||
[features]
|
||||
test_logger = [] # Print log output to stderr when running tests instead of dropping it
|
||||
|
||||
[dependencies]
|
||||
slog = "2.5.2"
|
||||
slog-term = "2.6.0"
|
||||
tokio = { version = "1.26.0", features = ["sync"] }
|
||||
lighthouse_metrics = { path = "../lighthouse_metrics" }
|
||||
lazy_static = "1.4.0"
|
||||
sloggers = { version = "2.1.1", features = ["json"] }
|
||||
slog-async = "2.7.0"
|
||||
slog = { workspace = true }
|
||||
slog-term = { workspace = true }
|
||||
tokio = { workspace = true }
|
||||
lighthouse_metrics = { workspace = true }
|
||||
lazy_static = { workspace = true }
|
||||
sloggers = { workspace = true }
|
||||
slog-async = { workspace = true }
|
||||
take_mut = "0.2.2"
|
||||
parking_lot = "0.12.1"
|
||||
serde = "1.0.153"
|
||||
serde_json = "1.0.94"
|
||||
parking_lot = { workspace = true }
|
||||
serde = { workspace = true }
|
||||
serde_json = { workspace = true }
|
||||
chrono = { version = "0.4", default-features = false, features = ["clock", "std"] }
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
name = "lru_cache"
|
||||
version = "0.1.0"
|
||||
authors = ["Sigma Prime <contact@sigmaprime.io>"]
|
||||
edition = "2021"
|
||||
edition = { workspace = true }
|
||||
|
||||
[dependencies]
|
||||
fnv = "1.0.7"
|
||||
fnv = { workspace = true }
|
||||
|
||||
@@ -2,13 +2,13 @@
|
||||
name = "malloc_utils"
|
||||
version = "0.1.0"
|
||||
authors = ["Paul Hauner <paul@paulhauner.com>"]
|
||||
edition = "2021"
|
||||
edition = { workspace = true }
|
||||
|
||||
[dependencies]
|
||||
lighthouse_metrics = { path = "../lighthouse_metrics" }
|
||||
lazy_static = "1.4.0"
|
||||
lighthouse_metrics = { workspace = true }
|
||||
lazy_static = { workspace = true }
|
||||
libc = "0.2.79"
|
||||
parking_lot = "0.12.0"
|
||||
parking_lot = { workspace = true }
|
||||
jemalloc-ctl = { version = "0.5.0", optional = true }
|
||||
|
||||
# Jemalloc's background_threads feature requires Linux (pthreads).
|
||||
|
||||
@@ -2,22 +2,22 @@
|
||||
name = "monitoring_api"
|
||||
version = "0.1.0"
|
||||
authors = ["pawan <pawandhananjay@gmail.com>"]
|
||||
edition = "2021"
|
||||
edition = { workspace = true }
|
||||
|
||||
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
||||
|
||||
[dependencies]
|
||||
reqwest = { version = "0.11.0", features = ["json","stream"] }
|
||||
task_executor = { path = "../task_executor" }
|
||||
tokio = "1.14.0"
|
||||
eth2 = {path = "../eth2"}
|
||||
serde_json = "1.0.58"
|
||||
serde = "1.0.116"
|
||||
reqwest = { workspace = true }
|
||||
task_executor = { workspace = true }
|
||||
tokio = { workspace = true }
|
||||
eth2 = { workspace = true }
|
||||
serde_json = { workspace = true }
|
||||
serde_derive = "1.0.116"
|
||||
lighthouse_version = { path = "../lighthouse_version"}
|
||||
lighthouse_metrics = { path = "../lighthouse_metrics" }
|
||||
slog = "2.5.2"
|
||||
store = { path = "../../beacon_node/store" }
|
||||
lazy_static = "1.4.0"
|
||||
regex = "1.5.5"
|
||||
sensitive_url = { path = "../sensitive_url" }
|
||||
serde = { workspace = true }
|
||||
lighthouse_version = { workspace = true }
|
||||
lighthouse_metrics = { workspace = true }
|
||||
slog = { workspace = true }
|
||||
store = { workspace = true }
|
||||
lazy_static = { workspace = true }
|
||||
regex = { workspace = true }
|
||||
sensitive_url = { workspace = true }
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
[package]
|
||||
name = "oneshot_broadcast"
|
||||
version = "0.1.0"
|
||||
edition = "2021"
|
||||
edition = { workspace = true }
|
||||
|
||||
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
||||
|
||||
[dependencies]
|
||||
parking_lot = "0.12.0"
|
||||
parking_lot = { workspace = true }
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
[package]
|
||||
name = "pretty_reqwest_error"
|
||||
version = "0.1.0"
|
||||
edition = "2021"
|
||||
edition = { workspace = true }
|
||||
|
||||
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
||||
|
||||
[dependencies]
|
||||
reqwest = { version = "0.11.0", features = ["json","stream"] }
|
||||
sensitive_url = { path = "../sensitive_url" }
|
||||
reqwest = { workspace = true }
|
||||
sensitive_url = { workspace = true }
|
||||
|
||||
@@ -2,10 +2,10 @@
|
||||
name = "sensitive_url"
|
||||
version = "0.1.0"
|
||||
authors = ["Mac L <mjladson@pm.me>"]
|
||||
edition = "2021"
|
||||
edition = { workspace = true }
|
||||
|
||||
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
||||
|
||||
[dependencies]
|
||||
url = "2.2.1"
|
||||
serde = "1.0.116"
|
||||
url = { workspace = true }
|
||||
serde = { workspace = true }
|
||||
|
||||
@@ -2,10 +2,10 @@
|
||||
name = "slot_clock"
|
||||
version = "0.2.0"
|
||||
authors = ["Paul Hauner <paul@paulhauner.com>"]
|
||||
edition = "2021"
|
||||
edition = { workspace = true }
|
||||
|
||||
[dependencies]
|
||||
types = { path = "../../consensus/types" }
|
||||
lazy_static = "1.4.0"
|
||||
lighthouse_metrics = { path = "../lighthouse_metrics" }
|
||||
parking_lot = "0.12.0"
|
||||
types = { workspace = true }
|
||||
lazy_static = { workspace = true }
|
||||
lighthouse_metrics = { workspace = true }
|
||||
parking_lot = { workspace = true }
|
||||
|
||||
@@ -1,13 +1,13 @@
|
||||
[package]
|
||||
name = "system_health"
|
||||
version = "0.1.0"
|
||||
edition = "2021"
|
||||
edition = { workspace = true }
|
||||
|
||||
[dependencies]
|
||||
lighthouse_network = { path = "../../beacon_node/lighthouse_network" }
|
||||
types = { path = "../../consensus/types" }
|
||||
sysinfo = "0.26.5"
|
||||
serde = "1.0.116"
|
||||
lighthouse_network = { workspace = true }
|
||||
types = { workspace = true }
|
||||
sysinfo = { workspace = true }
|
||||
serde = { workspace = true }
|
||||
serde_derive = "1.0.116"
|
||||
serde_json = "1.0.58"
|
||||
parking_lot = "0.12.0"
|
||||
serde_json = { workspace = true }
|
||||
parking_lot = { workspace = true }
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
name = "target_check"
|
||||
version = "0.1.0"
|
||||
authors = ["Michael Sproul <michael@sigmaprime.io>"]
|
||||
edition = "2021"
|
||||
edition = { workspace = true }
|
||||
|
||||
[dependencies]
|
||||
static_assertions = "1.1.0"
|
||||
|
||||
@@ -2,13 +2,13 @@
|
||||
name = "task_executor"
|
||||
version = "0.1.0"
|
||||
authors = ["Sigma Prime <contact@sigmaprime.io>"]
|
||||
edition = "2021"
|
||||
edition = { workspace = true }
|
||||
|
||||
[dependencies]
|
||||
tokio = { version = "1.14.0", features = ["rt-multi-thread", "macros"] }
|
||||
slog = "2.5.2"
|
||||
futures = "0.3.7"
|
||||
exit-future = "0.2.0"
|
||||
lazy_static = "1.4.0"
|
||||
lighthouse_metrics = { path = "../lighthouse_metrics" }
|
||||
sloggers = { version = "2.1.1", features = ["json"] }
|
||||
tokio = { workspace = true }
|
||||
slog = { workspace = true }
|
||||
futures = { workspace = true }
|
||||
exit-future = { workspace = true }
|
||||
lazy_static = { workspace = true }
|
||||
lighthouse_metrics = { workspace = true }
|
||||
sloggers = { workspace = true }
|
||||
|
||||
@@ -2,12 +2,12 @@
|
||||
name = "test_random_derive"
|
||||
version = "0.2.0"
|
||||
authors = ["thojest <thojest@gmail.com>"]
|
||||
edition = "2021"
|
||||
edition = { workspace = true }
|
||||
description = "Procedural derive macros for implementation of TestRandom trait"
|
||||
|
||||
[lib]
|
||||
proc-macro = true
|
||||
|
||||
[dependencies]
|
||||
syn = "1.0.42"
|
||||
quote = "1.0.7"
|
||||
syn = { workspace = true }
|
||||
quote = { workspace = true }
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
[package]
|
||||
name = "unused_port"
|
||||
version = "0.1.0"
|
||||
edition = "2021"
|
||||
edition = { workspace = true }
|
||||
|
||||
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
||||
|
||||
[dependencies]
|
||||
lru_cache = { path = "../lru_cache" }
|
||||
lazy_static = "1.4.0"
|
||||
parking_lot = "0.12.0"
|
||||
lru_cache = { workspace = true }
|
||||
lazy_static = { workspace = true }
|
||||
parking_lot = { workspace = true }
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
name = "validator_dir"
|
||||
version = "0.1.0"
|
||||
authors = ["Paul Hauner <paul@paulhauner.com>"]
|
||||
edition = "2021"
|
||||
edition = { workspace = true }
|
||||
|
||||
[features]
|
||||
insecure_keys = []
|
||||
@@ -10,17 +10,17 @@ insecure_keys = []
|
||||
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
||||
|
||||
[dependencies]
|
||||
bls = { path = "../../crypto/bls" }
|
||||
eth2_keystore = { path = "../../crypto/eth2_keystore" }
|
||||
filesystem = { path = "../filesystem" }
|
||||
types = { path = "../../consensus/types" }
|
||||
rand = "0.8.5"
|
||||
deposit_contract = { path = "../deposit_contract" }
|
||||
tree_hash = "0.5.2"
|
||||
hex = "0.4.2"
|
||||
derivative = "2.1.1"
|
||||
lockfile = { path = "../lockfile" }
|
||||
directory = { path = "../directory" }
|
||||
bls = { workspace = true }
|
||||
eth2_keystore = { workspace = true }
|
||||
filesystem = { workspace = true }
|
||||
types = { workspace = true }
|
||||
rand = { workspace = true }
|
||||
deposit_contract = { workspace = true }
|
||||
tree_hash = { workspace = true }
|
||||
hex = { workspace = true }
|
||||
derivative = { workspace = true }
|
||||
lockfile = { workspace = true }
|
||||
directory = { workspace = true }
|
||||
|
||||
[dev-dependencies]
|
||||
tempfile = "3.1.0"
|
||||
tempfile = { workspace = true }
|
||||
|
||||
@@ -2,20 +2,20 @@
|
||||
name = "warp_utils"
|
||||
version = "0.1.0"
|
||||
authors = ["Paul Hauner <paul@paulhauner.com>"]
|
||||
edition = "2021"
|
||||
edition = { workspace = true }
|
||||
|
||||
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
||||
|
||||
[dependencies]
|
||||
warp = "0.3.2"
|
||||
eth2 = { path = "../eth2" }
|
||||
types = { path = "../../consensus/types" }
|
||||
beacon_chain = { path = "../../beacon_node/beacon_chain" }
|
||||
state_processing = { path = "../../consensus/state_processing" }
|
||||
safe_arith = { path = "../../consensus/safe_arith" }
|
||||
serde = { version = "1.0.116", features = ["derive"] }
|
||||
tokio = { version = "1.14.0", features = ["sync"] }
|
||||
warp = { workspace = true }
|
||||
eth2 = { workspace = true }
|
||||
types = { workspace = true }
|
||||
beacon_chain = { workspace = true }
|
||||
state_processing = { workspace = true }
|
||||
safe_arith = { workspace = true }
|
||||
serde = { workspace = true }
|
||||
tokio = { workspace = true }
|
||||
headers = "0.3.2"
|
||||
lighthouse_metrics = { path = "../lighthouse_metrics" }
|
||||
lazy_static = "1.4.0"
|
||||
lighthouse_metrics = { workspace = true }
|
||||
lazy_static = { workspace = true }
|
||||
serde_array_query = "0.1.0"
|
||||
|
||||
Reference in New Issue
Block a user