From f10dd7168c86f197133524f9cd38d183a90e013b Mon Sep 17 00:00:00 2001 From: benthecarman Date: Mon, 22 Jan 2024 23:03:58 +0000 Subject: [PATCH] Add util function for hodl invoice detection --- mutiny-core/src/utils.rs | 13 ++++++------- mutiny-wasm/src/lib.rs | 8 ++++++++ 2 files changed, 14 insertions(+), 7 deletions(-) diff --git a/mutiny-core/src/utils.rs b/mutiny-core/src/utils.rs index 2abc5592f..c818dc584 100644 --- a/mutiny-core/src/utils.rs +++ b/mutiny-core/src/utils.rs @@ -221,12 +221,11 @@ pub fn get_monitor_version(bytes: &[u8]) -> u64 { u64::from_be_bytes(bytes[2..10].try_into().unwrap()) } -#[cfg(not(test))] -pub const HODL_INVOICE_NODES: [&str; 1] = - ["031b301307574bbe9b9ac7b79cbe1700e31e544513eae0b5d7497483083f99e581"]; - -#[cfg(test)] -pub const HODL_INVOICE_NODES: [&str; 2] = [ +/// Nodes that give hodl invoices, we want to warn users against this. +pub const HODL_INVOICE_NODES: [&str; 5] = [ "0279be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798", // pubkey of ONE_KEY - "031b301307574bbe9b9ac7b79cbe1700e31e544513eae0b5d7497483083f99e581", + "031b301307574bbe9b9ac7b79cbe1700e31e544513eae0b5d7497483083f99e581", // ZeusPay + "02187352cc4b1856b9604e0a79e1bc9b301be7e0c14acbbb8c29f7051d507127d7", // Robosats + "0282eb467bc073833a039940392592bf10cf338a830ba4e392c1667d7697654c7e", // Robosats + "037ff12b6a4e4bcb4b944b6d20af08cdff61b3461c1dff0d00a88697414d891bc7", // Robosats ]; diff --git a/mutiny-wasm/src/lib.rs b/mutiny-wasm/src/lib.rs index 63bfde369..9f2c513ae 100644 --- a/mutiny-wasm/src/lib.rs +++ b/mutiny-wasm/src/lib.rs @@ -1705,6 +1705,14 @@ impl MutinyWallet { let npub = parse_npub_or_nip05(&npub).await?; Ok(npub.to_bech32().expect("bech32")) } + + /// If the invoice is from a node that gives hodl invoices + #[wasm_bindgen] + pub async fn is_potential_hodl_invoice(invoice: String) -> Result { + let invoice = Bolt11Invoice::from_str(&invoice)?; + Ok(mutiny_core::utils::HODL_INVOICE_NODES + .contains(&invoice.recover_payee_pub_key().to_hex().as_str())) + } } #[cfg(test)]