mirror of
https://github.com/sigp/lighthouse.git
synced 2026-04-19 22:08:30 +00:00
Add --testnet mainnet and start HTTP server before genesis (#1862)
## Issue Addressed
NA
## Proposed Changes
- Adds support for `--testnet mainnet`
- Start HTTP server prior to genesis
## Additional Info
**Note: This is an incomplete work-in-progress. Use Lighthouse for mainnet at your own risk.**
With this PR, you can check the deposits:
```bash
lighthouse --testnet mainnet bn --http
```
```bash
curl localhost:5052/lighthouse/eth1/deposit_cache | jq
```
```json
{
"data": [
{
"deposit_data": {
"pubkey": "0x854980aa9bf2e84723e1fa6ef682e3537257984cc9cb1daea2ce6b268084b414f0bb43206e9fa6fd7a202357d6eb2b0d",
"withdrawal_credentials": "0x00cacf703c658b802d55baa2a5c1777500ef5051fc084330d2761bcb6ab6182b",
"amount": "32000000000",
"signature": "0xace226cdfd9da6b1d827c3a6ab93f91f53e8e090eb6ca5ee7c7c5fe3acc75558240ca9291684a2a7af5cac67f0558d1109cc95309f5cdf8c125185ec9dcd22635f900d791316924aed7c40cff2ffccdac0d44cf496853db678c8c53745b3545b"
},
"block_number": 3492981,
"index": 0,
"signature_is_valid": true
},
{
"deposit_data": {
"pubkey": "0x93da03a71bc4ed163c2f91c8a54ea3ba2461383dd615388fd494670f8ce571b46e698fc8d04b49e4a8ffe653f581806b",
"withdrawal_credentials": "0x006ebfbb7c8269a78018c8b810492979561d0404d74ba9c234650baa7524dcc4",
"amount": "32000000000",
"signature": "0x8d1f4a1683f798a76effcc6e2cdb8c3eed5a79123d201c5ecd4ab91f768a03c30885455b8a952aeec3c02110457f97ae0a60724187b6d4129d7c352f2e1ac19b4210daacd892fe4629ad3260ce2911dceae3890b04ed28267b2d8cb831f6a92d"
},
"block_number": 3493427,
"index": 1,
"signature_is_valid": true
},
```
This commit is contained in:
@@ -8,8 +8,8 @@
|
||||
//! https://github.com/sigp/lighthouse/pull/605
|
||||
//!
|
||||
use eth2_config::{
|
||||
include_altona_file, include_medalla_file, include_spadina_file, include_zinken_file,
|
||||
testnets_dir,
|
||||
include_altona_file, include_mainnet_file, include_medalla_file, include_spadina_file,
|
||||
include_zinken_file, testnets_dir,
|
||||
};
|
||||
|
||||
use enr::{CombinedKey, Enr};
|
||||
@@ -56,8 +56,9 @@ const ALTONA: HardcodedNet = define_net!(altona, include_altona_file);
|
||||
const MEDALLA: HardcodedNet = define_net!(medalla, include_medalla_file);
|
||||
const SPADINA: HardcodedNet = define_net!(spadina, include_spadina_file);
|
||||
const ZINKEN: HardcodedNet = define_net!(zinken, include_zinken_file);
|
||||
const MAINNET: HardcodedNet = define_net!(mainnet, include_mainnet_file);
|
||||
|
||||
const HARDCODED_NETS: &[HardcodedNet] = &[ALTONA, MEDALLA, SPADINA, ZINKEN];
|
||||
const HARDCODED_NETS: &[HardcodedNet] = &[ALTONA, MEDALLA, SPADINA, ZINKEN, MAINNET];
|
||||
pub const DEFAULT_HARDCODED_TESTNET: &str = "medalla";
|
||||
|
||||
/// Specifies an Eth2 testnet.
|
||||
@@ -66,6 +67,8 @@ pub const DEFAULT_HARDCODED_TESTNET: &str = "medalla";
|
||||
#[derive(Clone, PartialEq, Debug)]
|
||||
pub struct Eth2TestnetConfig {
|
||||
pub deposit_contract_address: String,
|
||||
/// Note: instead of the block where the contract is deployed, it is acceptable to set this
|
||||
/// value to be the block number where the first deposit occurs.
|
||||
pub deposit_contract_deploy_block: u64,
|
||||
pub boot_enr: Option<Vec<Enr<CombinedKey>>>,
|
||||
pub genesis_state_bytes: Option<Vec<u8>>,
|
||||
@@ -239,7 +242,8 @@ impl Eth2TestnetConfig {
|
||||
file.read_to_end(&mut bytes)
|
||||
.map_err(|e| format!("Unable to read {:?}: {:?}", file, e))
|
||||
})?;
|
||||
Some(bytes)
|
||||
|
||||
Some(bytes).filter(|bytes| !bytes.is_empty())
|
||||
} else {
|
||||
None
|
||||
};
|
||||
@@ -269,7 +273,7 @@ mod tests {
|
||||
use super::*;
|
||||
use ssz::Encode;
|
||||
use tempdir::TempDir;
|
||||
use types::{Eth1Data, Hash256, V012LegacyEthSpec, YamlConfig};
|
||||
use types::{Eth1Data, Hash256, MainnetEthSpec, V012LegacyEthSpec, YamlConfig};
|
||||
|
||||
type E = V012LegacyEthSpec;
|
||||
|
||||
@@ -279,13 +283,23 @@ mod tests {
|
||||
let config =
|
||||
Eth2TestnetConfig::from_hardcoded_net(net).expect(&format!("{:?}", net.name));
|
||||
|
||||
// Ensure we can parse the YAML config to a chain spec.
|
||||
config
|
||||
.yaml_config
|
||||
.as_ref()
|
||||
.unwrap()
|
||||
.apply_to_chain_spec::<E>(&E::default_spec())
|
||||
.unwrap();
|
||||
if net.name == "mainnet" {
|
||||
// Ensure we can parse the YAML config to a chain spec.
|
||||
config
|
||||
.yaml_config
|
||||
.as_ref()
|
||||
.unwrap()
|
||||
.apply_to_chain_spec::<MainnetEthSpec>(&E::default_spec())
|
||||
.unwrap();
|
||||
} else {
|
||||
// Ensure we can parse the YAML config to a chain spec.
|
||||
config
|
||||
.yaml_config
|
||||
.as_ref()
|
||||
.unwrap()
|
||||
.apply_to_chain_spec::<V012LegacyEthSpec>(&E::default_spec())
|
||||
.unwrap();
|
||||
}
|
||||
|
||||
assert_eq!(
|
||||
config.genesis_state_bytes.is_some(),
|
||||
|
||||
Reference in New Issue
Block a user