diff --git a/broker/Cargo.toml b/broker/Cargo.toml index 23be8da..826a5f7 100644 --- a/broker/Cargo.toml +++ b/broker/Cargo.toml @@ -6,10 +6,10 @@ default-run = "sphinx-key-broker" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [dependencies] -vls-protocol = { git = "https://gitlab.com/Evanfeenstra/validating-lightning-signer", branch = "sphinx-key-1.1" } -vls-proxy = { git = "https://gitlab.com/Evanfeenstra/validating-lightning-signer", branch = "sphinx-key-1.1" } -vls-frontend = { git = "https://gitlab.com/Evanfeenstra/validating-lightning-signer", branch = "sphinx-key-1.1" } -vls-protocol-client = { git = "https://gitlab.com/Evanfeenstra/validating-lightning-signer", branch = "sphinx-key-1.1" } +vls-protocol = { git = "https://gitlab.com/Evanfeenstra/validating-lightning-signer", branch = "sphinx-key-1.2" } +vls-proxy = { git = "https://gitlab.com/Evanfeenstra/validating-lightning-signer", branch = "sphinx-key-1.2" } +vls-frontend = { git = "https://gitlab.com/Evanfeenstra/validating-lightning-signer", branch = "sphinx-key-1.2" } +vls-protocol-client = { git = "https://gitlab.com/Evanfeenstra/validating-lightning-signer", branch = "sphinx-key-1.2" } rumqttd = { git = "https://github.com/Evanfeenstra/rumqtt", branch = "metrics" } pretty_env_logger = "0.4.0" confy = "0.4.0" diff --git a/broker/src/main.rs b/broker/src/main.rs index 700ccb5..c2b5ad7 100644 --- a/broker/src/main.rs +++ b/broker/src/main.rs @@ -10,6 +10,7 @@ use crate::chain_tracker::MqttSignerPort; use crate::mqtt::start_broker; use crate::unix_fd::SignerLoop; use clap::{App, AppSettings, Arg}; +use bitcoin::Network; use std::env; use std::sync::Arc; use tokio::sync::{mpsc, oneshot}; @@ -50,6 +51,12 @@ fn main() -> anyhow::Result<()> { .long("dev-disconnect") .takes_value(true), ) + .arg( + Arg::new("network") + .about("Bitcoin network the broker will run on") + .long("network") + .default_value("regtest"), + ) .arg(Arg::from("--log-io ignored dev flag")) .arg(Arg::from("--version show a dummy version")) .arg(Arg::from("--test run a test against the embedded device")); @@ -69,9 +76,20 @@ fn main() -> anyhow::Result<()> { return Ok(()); } + let mut network = Network::Regtest; + if let Some(network_arg) = matches.value_of("network") { + network = match network_arg { + "bitcoin" => Network::Bitcoin, + "mainnet" => Network::Bitcoin, + "testnet" => Network::Testnet, + "signet" => Network::Signet, + _ => Network::Regtest, + }; + }; + let (tx, rx) = mpsc::channel(1000); let (status_tx, mut status_rx) = mpsc::channel(1000); - log::info!("=> start broker"); + log::info!("=> start broker on network: {}", network); let runtime = start_broker(rx, status_tx, "sphinx-1"); log::info!("=> wait for connected status"); // wait for connection = true @@ -85,6 +103,7 @@ fn main() -> anyhow::Result<()> { let frontend = Frontend::new( Arc::new(SignerPortFront { signer_port: Box::new(signer_port), + network, }), Url::parse(&btc_url).expect("malformed btc rpc url"), ); diff --git a/parser/Cargo.toml b/parser/Cargo.toml index 6860564..1062d14 100644 --- a/parser/Cargo.toml +++ b/parser/Cargo.toml @@ -5,7 +5,7 @@ edition = "2021" [dependencies] # vls-protocol = { path = "../../../evanf/validating-lightning-signer/vls-protocol" } -vls-protocol = { git = "https://gitlab.com/Evanfeenstra/validating-lightning-signer", branch = "sphinx-key-1.1" } +vls-protocol = { git = "https://gitlab.com/Evanfeenstra/validating-lightning-signer", branch = "sphinx-key-1.2" } serde = { version = "1.0", default-features = false } serde_bolt = { version = "0.2", default-features = false } diff --git a/persister/Cargo.toml b/persister/Cargo.toml index 8d6a952..d7a6c98 100644 --- a/persister/Cargo.toml +++ b/persister/Cargo.toml @@ -6,8 +6,8 @@ edition = "2021" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [dependencies] -lightning-signer-core = { git = "https://gitlab.com/Evanfeenstra/validating-lightning-signer", branch = "sphinx-key-1.1", default-features = false, features = ["std", "secp-lowmemory"] } -lightning-signer-server = { git = "https://gitlab.com/Evanfeenstra/validating-lightning-signer", branch = "sphinx-key-1.1", default-features = false, features = ["persist", "secp-lowmemory"] } +lightning-signer-core = { git = "https://gitlab.com/Evanfeenstra/validating-lightning-signer", branch = "sphinx-key-1.2", default-features = false, features = ["std", "secp-lowmemory"] } +lightning-signer-server = { git = "https://gitlab.com/Evanfeenstra/validating-lightning-signer", branch = "sphinx-key-1.2", default-features = false, features = ["persist", "secp-lowmemory"] } serde = { version = "1.0.105" } hex = "0.4.3" fsdb = "0.1.11" diff --git a/signer/Cargo.toml b/signer/Cargo.toml index 2ee8114..f39fb81 100644 --- a/signer/Cargo.toml +++ b/signer/Cargo.toml @@ -9,8 +9,8 @@ sphinx-key-parser = { path = "../parser" } sphinx-key-persister = { path = "../persister" } # vls-protocol-signer = { path = "../../../evanf/validating-lightning-signer/vls-protocol-signer", default-features = false, features = ["std", "secp-lowmemory"] } # vls-protocol-signer = { git = "https://gitlab.com/lightning-signer/validating-lightning-signer", default-features = false, features = ["secp-lowmemory"] } -vls-protocol-signer = { git = "https://gitlab.com/Evanfeenstra/validating-lightning-signer", branch = "sphinx-key-1.1", default-features = false, features = ["std", "secp-lowmemory"] } +lightning-signer-core = { git = "https://gitlab.com/Evanfeenstra/validating-lightning-signer", branch = "sphinx-key-1.2" } +vls-protocol-signer = { git = "https://gitlab.com/Evanfeenstra/validating-lightning-signer", branch = "sphinx-key-1.2", default-features = false, features = ["std", "secp-lowmemory"] } anyhow = {version = "1", features = ["backtrace"]} log = "0.4" - - +rand = { version = "0.8" } diff --git a/signer/src/lib.rs b/signer/src/lib.rs index 9a401a7..87748db 100644 --- a/signer/src/lib.rs +++ b/signer/src/lib.rs @@ -1,4 +1,7 @@ +mod randomstartingtime; + use lightning_signer::persist::Persist; +use randomstartingtime::RandomStartingTimeFactory; // use lightning_signer::persist::DummyPersister; use std::sync::Arc; use vls_protocol::model::PubKey; @@ -35,8 +38,16 @@ pub fn init(bytes: Vec, network: Network) -> anyhow::Result { .collect::>(); log::info!("allowlist {:?}", allowlist); let seed = init.dev_seed.as_ref().map(|s| s.0).expect("no seed"); + let starting_time_factory = RandomStartingTimeFactory::new(); log::info!("create root handler now"); - let root_handler = RootHandler::new(network, 0, Some(seed), persister, allowlist); + let root_handler = RootHandler::new( + network, + 0, + Some(seed), + persister, + allowlist, + &starting_time_factory, + ); log::info!("root_handler created"); let init_reply = root_handler .handle(Message::HsmdInit2(init)) diff --git a/signer/src/randomstartingtime.rs b/signer/src/randomstartingtime.rs new file mode 100644 index 0000000..00833d7 --- /dev/null +++ b/signer/src/randomstartingtime.rs @@ -0,0 +1,17 @@ +use lightning_signer::signer::StartingTimeFactory; +use rand::{rngs::OsRng, RngCore}; + +/// A starting time factory which uses entropy from the RNG +pub(crate) struct RandomStartingTimeFactory {} + +impl StartingTimeFactory for RandomStartingTimeFactory { + fn starting_time(&self) -> (u64, u32) { + (OsRng.next_u64(), OsRng.next_u32()) + } +} + +impl RandomStartingTimeFactory { + pub(crate) fn new() -> Box { + Box::new(RandomStartingTimeFactory {}) + } +} diff --git a/sphinx-key/Cargo.toml b/sphinx-key/Cargo.toml index 15882d6..fdfe769 100644 --- a/sphinx-key/Cargo.toml +++ b/sphinx-key/Cargo.toml @@ -20,6 +20,7 @@ pingpong = [] no_persist = [] [dependencies] +libc = "=0.2.127" bitflags = "1.3.2" esp-idf-sys = { version = "0.31.6", features = ["binstart"] } sphinx-key-signer = { path = "../signer", optional = true } diff --git a/tester/Cargo.toml b/tester/Cargo.toml index f907eca..a538ca9 100644 --- a/tester/Cargo.toml +++ b/tester/Cargo.toml @@ -8,8 +8,8 @@ edition = "2018" sphinx-key-signer = { path = "../signer" } sphinx-key-parser = { path = "../parser" } sphinx-key-crypter = { path = "../crypter" } -vls-protocol = { git = "https://gitlab.com/Evanfeenstra/validating-lightning-signer", branch = "sphinx-key-1.1" } -vls-protocol-signer = { git = "https://gitlab.com/Evanfeenstra/validating-lightning-signer", branch = "sphinx-key-1.1", default-features = false, features = ["std", "secp-lowmemory"] } +vls-protocol = { git = "https://gitlab.com/Evanfeenstra/validating-lightning-signer", branch = "sphinx-key-1.2" } +vls-protocol-signer = { git = "https://gitlab.com/Evanfeenstra/validating-lightning-signer", branch = "sphinx-key-1.2", default-features = false, features = ["std", "secp-lowmemory"] } # vls-protocol = { path = "../../../evanf/validating-lightning-signer/vls-protocol" } # vls-protocol-signer = { path = "../../../evanf/validating-lightning-signer/vls-protocol-signer", default-features = false, features = ["std", "secp-lowmemory"] } anyhow = {version = "1", features = ["backtrace"]}