fix: use personal rpc for register, if set with flag

This commit is contained in:
dr-frmr 2024-03-24 20:45:32 -06:00
parent aa46605596
commit 9ecc630d63
No known key found for this signature in database
2 changed files with 24 additions and 11 deletions

View File

@ -47,6 +47,7 @@ async fn serve_register_fe(
ws_networking: (tokio::net::TcpListener, bool),
http_server_port: u16,
testnet: bool,
maybe_rpc: Option<String>,
) -> (Identity, Vec<u8>, Keyfile) {
// check if we have keys saved on disk, encrypted
// if so, prompt user for "password" to decrypt with
@ -67,7 +68,15 @@ async fn serve_register_fe(
let (tx, mut rx) = mpsc::channel::<(Identity, Keyfile, Vec<u8>)>(1);
let (our, decoded_keyfile, encoded_keyfile) = tokio::select! {
_ = register::register(tx, kill_rx, our_ip, ws_networking, http_server_port, disk_keyfile, testnet) => {
_ = register::register(
tx,
kill_rx,
our_ip,
ws_networking,
http_server_port,
disk_keyfile,
testnet,
maybe_rpc) => {
panic!("registration failed")
}
Some((our, decoded_keyfile, encoded_keyfile)) = rx.recv() => {
@ -323,6 +332,7 @@ async fn main() {
(ws_tcp_handle, flag_used),
http_server_port,
on_testnet, // true if testnet mode
matches.get_one::<String>("rpc").cloned(),
)
.await;
@ -331,14 +341,7 @@ async fn main() {
None => {
match password {
None => {
serve_register_fe(
&home_directory_path,
our_ip.to_string(),
(ws_tcp_handle, flag_used),
http_server_port,
on_testnet, // true if testnet mode
)
.await
panic!("Fake node must be booted with either a --fake-node-name, --password, or both.");
}
Some(password) => {
match fs::read(format!("{}/.keys", home_directory_path)).await {

View File

@ -121,6 +121,7 @@ pub async fn register(
http_port: u16,
keyfile: Option<Vec<u8>>,
testnet: bool,
maybe_rpc: Option<String>,
) {
// Networking info is generated and passed to the UI, but not used until confirmed
let (public_key, serialized_networking_keypair) = keygen::generate_networking_key();
@ -153,13 +154,22 @@ pub async fn register(
};
// This ETH provider uses public rpc endpoints to verify registration signatures.
let url = if testnet {
let url = if let Some(rpc_url) = maybe_rpc {
rpc_url
} else if testnet {
"wss://ethereum-sepolia-rpc.publicnode.com".to_string()
} else {
"wss://optimism-rpc.publicnode.com".to_string()
};
let connector = WsConnect { url, auth: None };
let client = ClientBuilder::default().ws(connector).await.unwrap();
let Ok(client) = ClientBuilder::default().ws(connector).await else {
panic!(
"Error: runtime could not connect to ETH RPC.\n\
This is necessary in order to verify node identity onchain.\n\
Please make sure you are using a valid WebSockets URL if using \
the --rpc flag, and you are connected to the internet."
);
};
let provider = Arc::new(Provider::new_with_client(client));