diff --git a/etc/gen_gen/Cargo.toml b/etc/gen_gen/Cargo.toml index f1d394592..ae0c73829 100644 --- a/etc/gen_gen/Cargo.toml +++ b/etc/gen_gen/Cargo.toml @@ -17,14 +17,20 @@ path = "src/bin/gen_gen.rs" chrono = "0.4.4" cuckoo_miner = "0.4.2" curl = "0.4.19" -grin_core = "0.4.2" -grin_chain = "0.4.2" -grin_keychain = "0.4.2" +grin_core = { path = "../../core" } +grin_chain = { path = "../../chain" } +grin_keychain = { path = "../../keychain" } grin_miner_plugin = "0.4.2" -grin_store = "0.4.2" -grin_util = "0.4.2" +grin_store = { path = "../../store" } +grin_util = { path = "../../util" } +grin_wallet = { path = "../../wallet" } +rpassword = "2.0.0" serde_json = "1" [patch.crates-io] +grin_api = { path = "../../api" } grin_core = { path = "../../core" } +grin_chain = { path = "../../chain" } grin_keychain = { path = "../../keychain" } +grin_util = { path = "../../util" } +grin_wallet = { path = "../../wallet" } diff --git a/etc/gen_gen/src/bin/gen_gen.rs b/etc/gen_gen/src/bin/gen_gen.rs index 037e0b3e7..874480b5f 100644 --- a/etc/gen_gen/src/bin/gen_gen.rs +++ b/etc/gen_gen/src/bin/gen_gen.rs @@ -21,6 +21,7 @@ use std::{fs, io, path, process}; use chrono::prelude::Utc; use chrono::{Datelike, Duration, Timelike}; use curl; +use rpassword; use serde_json; use cuckoo_miner as cuckoo; @@ -29,6 +30,7 @@ use grin_core as core; use grin_miner_plugin as plugin; use grin_store as store; use grin_util as util; +use grin_wallet as wallet; use grin_core::core::hash::Hashed; use grin_core::core::verifier_cache::LruVerifierCache; @@ -40,6 +42,7 @@ static BCHAIR_URL: &str = "https://api.blockchair.com/bitcoin/blocks?limit=2"; static GENESIS_RS_PATH: &str = "../../core/src/genesis.rs"; static PLUGIN_PATH: &str = "./cuckaroo_mean_cuda_29.cuckooplugin"; +static WALLET_SEED_PATH: &str = "./wallet.seed"; fn main() { if !path::Path::new(GENESIS_RS_PATH).exists() { @@ -54,6 +57,12 @@ fn main() { PLUGIN_PATH ); } + if !path::Path::new(WALLET_SEED_PATH).exists() { + panic!( + "File {} not found, make sure you're running this from the gen_gen directory", + WALLET_SEED_PATH + ); + } // get the latest bitcoin hash let h1 = get_bchain_head(); @@ -72,10 +81,14 @@ fn main() { gen.header.timestamp = Utc::now() + Duration::minutes(30); gen.header.prev_root = core::core::hash::Hash::from_hex(&h1).unwrap(); - // TODO get the proper keychain and/or raw coinbase - let keychain = ExtKeychain::from_random_seed().unwrap(); - let key_id = ExtKeychain::derive_key_id(0, 1, 0, 0, 0); - let reward = core::libtx::reward::output(&keychain, &key_id, 0, 0).unwrap(); + // build the wallet seed and derive a coinbase from local wallet.seed + let seed = wallet::WalletSeed::from_file( + &wallet::WalletConfig::default(), + &rpassword::prompt_password_stdout("Password: ").unwrap() + ).unwrap(); + let keychain: ExtKeychain = seed.derive_keychain().unwrap(); + let key_id = ExtKeychain::derive_key_id(2, 1, 0, 0, 0); + let reward = core::libtx::reward::output(&keychain, &key_id, 0).unwrap(); gen = gen.with_reward(reward.0, reward.1); { @@ -284,6 +297,7 @@ fn setup_chain(dir_name: &str, genesis: core::core::Block) -> chain::Chain { core::pow::verify_size, verifier_cache, false, + Arc::new(util::Mutex::new(util::StopState::new())), ) .unwrap() } @@ -322,3 +336,4 @@ fn get_json(url: &str) -> serde_json::Value { } serde_json::from_slice(&body).unwrap() } + diff --git a/p2p/src/msg.rs b/p2p/src/msg.rs index 6e77ac076..f347cbed7 100644 --- a/p2p/src/msg.rs +++ b/p2p/src/msg.rs @@ -36,7 +36,7 @@ pub const PROTOCOL_VERSION: u32 = 1; pub const USER_AGENT: &'static str = concat!("MW/Grin ", env!("CARGO_PKG_VERSION")); /// Magic number expected in the header of every message -const MAGIC: [u8; 2] = [0x54, 0x34]; +const MAGIC: [u8; 2] = [0x53, 0x35]; /// Max theoretical size of a block filled with outputs. const MAX_BLOCK_SIZE: u64 = diff --git a/servers/src/grin/seed.rs b/servers/src/grin/seed.rs index 3e5a39117..e79d23e11 100644 --- a/servers/src/grin/seed.rs +++ b/servers/src/grin/seed.rs @@ -24,14 +24,18 @@ use std::net::{SocketAddr, ToSocketAddrs}; use std::sync::{mpsc, Arc}; use std::{cmp, io, str, thread, time}; +use crate::core::global; use crate::p2p; use crate::p2p::ChainAdapter; use crate::pool::DandelionConfig; use crate::util::{Mutex, StopState}; // DNS Seeds with contact email associated -const DNS_SEEDS: &'static [&'static str] = &[ - "t4.seed.grin-tech.org", // igno.peverell@protonmail.com +const MAINNET_DNS_SEEDS: &'static [&'static str] = &[ + "mainnet.seed.grin-tech.org", // igno.peverell@protonmail.com +]; +const FLOONET_DNS_SEEDS: &'static [&'static str] = &[ + "floonet.seed.grin-tech.org", // igno.peverell@protonmail.com ]; pub fn connect_and_monitor( @@ -331,7 +335,12 @@ fn listen_for_addrs( pub fn dns_seeds() -> Box Vec + Send> { Box::new(|| { let mut addresses: Vec = vec![]; - for dns_seed in DNS_SEEDS { + let net_seeds = if global::is_testnet() { + FLOONET_DNS_SEEDS + } else { + MAINNET_DNS_SEEDS + }; + for dns_seed in net_seeds { let temp_addresses = addresses.clone(); debug!("Retrieving seed nodes from dns {}", dns_seed); match (dns_seed.to_owned(), 0).to_socket_addrs() {