- vec![
- // Bitfinex
- // (hex_utils::to_compressed_pubkey("033d8656219478701227199cbd6f670335c8d408a92ae88b962c49d4dc0e83e025").unwrap(), "34.65.85.39:9735".parse().unwrap()),
+ const WALLET_OF_SATOSHI: &str = "035e4ff418fc8b5554c5d9eea66396c227bd429a3251c8cbc711002ba215bfc226@170.75.163.209:9735";
+ let list = env::var("LN_PEERS").unwrap_or(WALLET_OF_SATOSHI.to_string());
+ let mut peers = Vec::new();
+ for peer_info in list.split(',') {
+ peers.push(resolve_peer_info(peer_info).expect("Invalid peer info in LN_PEERS"));
+ }
+ peers
+}
+
+fn resolve_peer_info(peer_info: &str) -> Result<(PublicKey, SocketAddr), &str> {
+ let mut peer_info = peer_info.splitn(2, '@');
+
+ let pubkey = peer_info.next().ok_or("Invalid peer info. Should be formatted as: `pubkey@host:port`")?;
+ let pubkey = Vec::from_hex(pubkey).map_err(|_| "Invalid node pubkey")?;
+ let pubkey = PublicKey::from_slice(&pubkey).map_err(|_| "Invalid node pubkey")?;
+
+ let socket_address = peer_info.next().ok_or("Invalid peer info. Should be formatted as: `pubkey@host:port`")?;
+ let socket_address = socket_address
+ .to_socket_addrs()
+ .map_err(|_| "Cannot resolve node address")?
+ .next()
+ .ok_or("Cannot resolve node address")?;