Integrate Witti testnet (#1193)

* Update for latest master

* Shift delay inside loop

* Clean up genesis service

* Tidy

* Tidy logs

* Address Michael's comments

* Add pre-genesis logging

* Remove est time till genesis

* Fix time formatting

* Tidy

* Update docs for Witti

* Update JS for Witti

* Ensure deposit data is 0x-prefixed hex

* Hard code witti testnet dir

* Add --auto-register warning

* Integrate local sigp testnet source

* Reword warning
This commit is contained in:
Paul Hauner
2020-05-26 15:31:41 +10:00
committed by GitHub
parent 9718c5db07
commit ad4e5adabc
11 changed files with 50 additions and 28 deletions

View File

@@ -19,6 +19,7 @@ rand = "0.7.2"
deposit_contract = { path = "../deposit_contract" }
rayon = "1.3.0"
tree_hash = { path = "../../consensus/tree_hash" }
hex = "0.4.2"
[dev-dependencies]
tempfile = "3.1.0"

View File

@@ -175,13 +175,14 @@ impl<'a> Builder<'a> {
if path.exists() {
return Err(Error::DepositDataAlreadyExists(path));
} else {
let hex = format!("0x{}", hex::encode(&deposit_data));
OpenOptions::new()
.write(true)
.read(true)
.create(true)
.open(path.clone())
.map_err(Error::UnableToSaveDepositData)?
.write_all(&deposit_data)
.write_all(hex.as_bytes())
.map_err(Error::UnableToSaveDepositData)?
}

View File

@@ -27,6 +27,9 @@ pub enum Error {
UnableToReadPassword(PathBuf),
UnableToDecryptKeypair(KeystoreError),
UnableToReadDepositData(io::Error),
DepositDataMissing0xPrefix,
DepositDataNotUtf8,
DepositDataInvalidHex(hex::FromHexError),
DepositAmountDoesNotExist(PathBuf),
UnableToReadDepositAmount(io::Error),
UnableToParseDepositAmount(std::num::ParseIntError),
@@ -160,7 +163,16 @@ impl ValidatorDir {
if !path.exists() {
return Ok(None);
}
let deposit_data_rlp = read(path).map_err(Error::UnableToReadDepositData)?;
let deposit_data_rlp = read(path)
.map_err(Error::UnableToReadDepositData)
.and_then(|hex_bytes| {
let hex = std::str::from_utf8(&hex_bytes).map_err(|_| Error::DepositDataNotUtf8)?;
if hex.starts_with("0x") {
hex::decode(&hex[2..]).map_err(Error::DepositDataInvalidHex)
} else {
Err(Error::DepositDataMissing0xPrefix)
}
})?;
// Read and parse `ETH1_DEPOSIT_AMOUNT_FILE`.
let path = self.dir.join(ETH1_DEPOSIT_AMOUNT_FILE);

View File

@@ -6,7 +6,7 @@ use std::path::Path;
use tempfile::{tempdir, TempDir};
use types::{test_utils::generate_deterministic_keypair, EthSpec, Keypair, MainnetEthSpec};
use validator_dir::{
Builder, ValidatorDir, ETH1_DEPOSIT_TX_HASH_FILE, VOTING_KEYSTORE_FILE,
Builder, ValidatorDir, ETH1_DEPOSIT_DATA_FILE, ETH1_DEPOSIT_TX_HASH_FILE, VOTING_KEYSTORE_FILE,
WITHDRAWAL_KEYSTORE_FILE,
};
@@ -145,6 +145,13 @@ impl Harness {
// Ensure the amount is consistent.
assert_eq!(data.deposit_data.amount, amount);
// Check that the eth1 deposit data file is a valid format.
let hex =
String::from_utf8(fs::read(validator.dir().join(ETH1_DEPOSIT_DATA_FILE)).unwrap())
.unwrap();
assert!(hex.starts_with("0x"), "deposit data should have 0x prefix");
hex::decode(&hex[2..]).unwrap();
} else {
// If there was no deposit then we should return `Ok(None)`.
assert!(validator.eth1_deposit_data().unwrap().is_none());