chore: bump bitcoin + lightning-invoice deps

This commit is contained in:
Pavol Rusnak
2024-08-20 17:57:29 +02:00
committed by thesimplekid
parent 5807adcd3c
commit 1021ec5299
19 changed files with 45 additions and 54 deletions

View File

@@ -11,7 +11,7 @@ description = "CDK ln backend for cln"
[dependencies]
async-trait = "0.1"
bitcoin = { version = "0.30", default-features = false } # lightning-invoice uses v0.30
bitcoin = { version = "0.32.2", default-features = false }
cdk = { path = "../cdk", version = "0.4.0", default-features = false, features = ["mint"] }
cln-rpc = "0.1.9"
futures = { version = "0.3.28", default-features = false }

View File

@@ -11,14 +11,14 @@ description = "CDK fake ln backend"
[dependencies]
async-trait = "0.1.74"
bitcoin = { version = "0.30", default-features = false } # lightning-invoice uses v0.30
bitcoin = { version = "0.32.2", default-features = false }
cdk = { path = "../cdk", version = "0.4.0", default-features = false, features = ["mint"] }
futures = { version = "0.3.28", default-features = false }
tokio = { version = "1", default-features = false }
tracing = { version = "0.1", default-features = false, features = ["attributes", "log"] }
thiserror = "1"
uuid = { version = "1", features = ["v4"] }
lightning-invoice = { version = "0.31", features = ["serde"] }
lightning = "0.0.123"
lightning-invoice = { version = "0.32.0", features = ["serde", "std"] }
lightning = "0.0.124"
tokio-stream = "0.1.15"
rand = "0.8.5"

View File

@@ -23,8 +23,7 @@ use cdk::util::unix_time;
use error::Error;
use futures::stream::StreamExt;
use futures::Stream;
use lightning::ln::types::PaymentSecret;
use lightning_invoice::{Currency, InvoiceBuilder};
use lightning_invoice::{Currency, InvoiceBuilder, PaymentSecret};
use tokio::sync::Mutex;
use tokio::time;
use tokio_stream::wrappers::ReceiverStream;

View File

@@ -13,7 +13,7 @@ description = "CDK ln backend for lnbits"
async-trait = "0.1"
anyhow = "1"
axum = "0.6.20"
bitcoin = { version = "0.30", default-features = false } # lightning-invoice uses v0.30
bitcoin = { version = "0.32.2", default-features = false }
cdk = { path = "../cdk", version = "0.4.0", default-features = false, features = ["mint"] }
futures = { version = "0.3.28", default-features = false }
tokio = { version = "1", default-features = false }

View File

@@ -31,6 +31,6 @@ futures = { version = "0.3.28", default-features = false }
serde = { version = "1", default-features = false, features = ["derive"] }
bip39 = "2.0"
tower-http = { version = "0.4.4", features = ["cors"] }
lightning-invoice = { version = "0.31", features = ["serde"] }
lightning-invoice = { version = "0.32.0", features = ["serde", "std"] }
home = "0.5.5"
url = "2.3"

View File

@@ -13,7 +13,7 @@ description = "CDK ln backend for phoenixd"
async-trait = "0.1"
anyhow = "1"
axum = "0.6.20"
bitcoin = { version = "0.30", default-features = false } # lightning-invoice uses v0.30
bitcoin = { version = "0.32.2", default-features = false }
cdk = { path = "../cdk", version = "0.4.0", default-features = false, features = ["mint"] }
futures = { version = "0.3.28", default-features = false }
tokio = { version = "1", default-features = false }

View File

@@ -23,4 +23,4 @@ thiserror = "1"
tracing = { version = "0.1", default-features = false, features = ["attributes", "log"] }
serde = { version = "1", default-features = false, features = ["derive"] }
serde_json = "1"
lightning-invoice = { version = "0.31", features = ["serde"] }
lightning-invoice = { version = "0.32.0", features = ["serde", "std"] }

View File

@@ -18,7 +18,7 @@ wallet = ["cdk/wallet"]
[dependencies]
async-trait = "0.1"
cdk = { path = "../cdk", version = "0.4.0", default-features = false }
bitcoin = { version = "0.30", default-features = false } # lightning-invoice uses v0.30
bitcoin = { version = "0.32.2", default-features = false }
sqlx = { version = "0.6.3", default-features = false, features = ["runtime-tokio-rustls", "sqlite", "macros", "migrate"] }
thiserror = "1"
tokio = { version = "1", features = [
@@ -28,4 +28,4 @@ tokio = { version = "1", features = [
] }
tracing = { version = "0.1", default-features = false, features = ["attributes", "log"] }
serde_json = "1"
lightning-invoice = { version = "0.31", features = ["serde"] }
lightning-invoice = { version = "0.32.0", features = ["serde", "std"] }

View File

@@ -13,7 +13,7 @@ description = "CDK ln backend for Strike api"
async-trait = "0.1"
anyhow = "1"
axum = "0.6.20"
bitcoin = { version = "0.30", default-features = false } # lightning-invoice uses v0.30
bitcoin = { version = "0.32.2", default-features = false }
cdk = { path = "../cdk", version = "0.4.0", default-features = false, features = ["mint"] }
futures = { version = "0.3.28", default-features = false }
tokio = { version = "1", default-features = false }

View File

@@ -20,15 +20,10 @@ bench = []
[dependencies]
async-trait = "0.1"
anyhow = { version = "1.0.43", features = ["backtrace"] }
base64 = "0.22" # bitcoin uses v0.13 (optional dep)
bitcoin = { version= "0.30", features = [
"serde",
"rand",
"rand-std",
] } # lightning-invoice uses v0.30
bitcoin = { version= "0.32.2", features = ["base64", "serde", "rand", "rand-std"] }
ciborium = { version = "0.2.2", default-features = false, features = ["std"] }
cbor-diag = "0.1.12"
lightning-invoice = { version = "0.31", features = ["serde"] }
lightning-invoice = { version = "0.32.0", features = ["serde", "std"] }
once_cell = "1.19"
regex = "1"
reqwest = { version = "0.12", default-features = false, features = [

View File

@@ -176,7 +176,7 @@ pub enum Error {
SerdeJsonError(#[from] serde_json::Error),
/// Base64 error
#[error(transparent)]
Base64Error(#[from] base64::DecodeError),
Base64Error(#[from] bitcoin::base64::DecodeError),
/// From hex error
#[error(transparent)]
HexError(#[from] hex::Error),

View File

@@ -4,7 +4,7 @@ use std::collections::{HashMap, HashSet};
use std::str::FromStr;
use std::sync::Arc;
use bitcoin::bip32::{ChildNumber, DerivationPath, ExtendedPrivKey};
use bitcoin::bip32::{ChildNumber, DerivationPath, Xpriv};
use bitcoin::secp256k1::{self, Secp256k1};
use serde::{Deserialize, Serialize};
use tokio::sync::RwLock;
@@ -38,7 +38,7 @@ pub struct Mint {
/// Active Mint Keysets
keysets: Arc<RwLock<HashMap<Id, MintKeySet>>>,
secp_ctx: Secp256k1<secp256k1::All>,
xpriv: ExtendedPrivKey,
xpriv: Xpriv,
}
impl Mint {
@@ -52,8 +52,7 @@ impl Mint {
supported_units: HashMap<CurrencyUnit, (u64, u8)>,
) -> Result<Self, Error> {
let secp_ctx = Secp256k1::new();
let xpriv =
ExtendedPrivKey::new_master(bitcoin::Network::Bitcoin, seed).expect("RNG busted");
let xpriv = Xpriv::new_master(bitcoin::Network::Bitcoin, seed).expect("RNG busted");
let mut active_keysets = HashMap::new();
let keysets_infos = localstore.get_keyset_infos().await?;
@@ -1396,7 +1395,7 @@ impl From<MintKeySetInfo> for KeySetInfo {
#[instrument(skip_all)]
fn create_new_keyset<C: secp256k1::Signing>(
secp: &secp256k1::Secp256k1<C>,
xpriv: ExtendedPrivKey,
xpriv: Xpriv,
derivation_path: DerivationPath,
derivation_path_index: Option<u32>,
unit: CurrencyUnit,
@@ -1486,7 +1485,7 @@ mod tests {
fn mint_mod_generate_keyset_from_xpriv() {
let seed = "test_seed".as_bytes();
let network = Network::Bitcoin;
let xpriv = ExtendedPrivKey::new_master(network, seed).expect("Failed to create xpriv");
let xpriv = Xpriv::new_master(network, seed).expect("Failed to create xpriv");
let keyset = MintKeySet::generate_from_xpriv(
&Secp256k1::new(),
xpriv,

View File

@@ -52,7 +52,7 @@ pub enum Error {
Utf8ParseError(#[from] FromUtf8Error),
/// Base64 error
#[error(transparent)]
Base64Error(#[from] base64::DecodeError),
Base64Error(#[from] bitcoin::base64::DecodeError),
/// Parse Url Error
#[error(transparent)]
UrlParseError(#[from] url::ParseError),

View File

@@ -6,8 +6,8 @@ use std::collections::HashMap;
use std::fmt;
use std::str::FromStr;
use base64::engine::{general_purpose, GeneralPurpose};
use base64::{alphabet, Engine as _};
use bitcoin::base64::engine::{general_purpose, GeneralPurpose};
use bitcoin::base64::{alphabet, Engine as _};
use serde::{Deserialize, Serialize};
use url::Url;
@@ -119,7 +119,7 @@ impl FromStr for Token {
};
let decode_config = general_purpose::GeneralPurposeConfig::new()
.with_decode_padding_mode(base64::engine::DecodePaddingMode::Indifferent);
.with_decode_padding_mode(bitcoin::base64::engine::DecodePaddingMode::Indifferent);
let decoded = GeneralPurpose::new(&alphabet::URL_SAFE, decode_config).decode(s)?;
match is_v3 {
@@ -234,7 +234,7 @@ impl FromStr for TokenV3 {
let s = s.strip_prefix("cashuA").ok_or(Error::UnsupportedToken)?;
let decode_config = general_purpose::GeneralPurposeConfig::new()
.with_decode_padding_mode(base64::engine::DecodePaddingMode::Indifferent);
.with_decode_padding_mode(bitcoin::base64::engine::DecodePaddingMode::Indifferent);
let decoded = GeneralPurpose::new(&alphabet::URL_SAFE, decode_config).decode(s)?;
let decoded_str = String::from_utf8(decoded)?;
let token: TokenV3 = serde_json::from_str(&decoded_str)?;
@@ -344,7 +344,7 @@ impl FromStr for TokenV4 {
let s = s.strip_prefix("cashuB").ok_or(Error::UnsupportedToken)?;
let decode_config = general_purpose::GeneralPurposeConfig::new()
.with_decode_padding_mode(base64::engine::DecodePaddingMode::Indifferent);
.with_decode_padding_mode(bitcoin::base64::engine::DecodePaddingMode::Indifferent);
let decoded = GeneralPurpose::new(&alphabet::URL_SAFE, decode_config).decode(s)?;
let token: TokenV4 = ciborium::from_reader(&decoded[..])?;
Ok(token)

View File

@@ -88,7 +88,7 @@ impl PublicKey {
/// Verify schnorr signature
pub fn verify(&self, msg: &[u8], sig: &Signature) -> Result<(), Error> {
let hash: Sha256Hash = Sha256Hash::hash(msg);
let msg = Message::from_slice(hash.as_ref())?;
let msg = Message::from_digest_slice(hash.as_ref())?;
SECP256K1.verify_schnorr(sig, &msg, &self.inner.x_only_public_key().0)?;
Ok(())
}

View File

@@ -7,7 +7,7 @@ use bitcoin::hashes::Hash;
use bitcoin::secp256k1;
use bitcoin::secp256k1::rand::rngs::OsRng;
use bitcoin::secp256k1::schnorr::Signature;
use bitcoin::secp256k1::{KeyPair, Message, Scalar};
use bitcoin::secp256k1::{Keypair, Message, Scalar};
use serde::{Deserialize, Deserializer, Serialize};
use super::{Error, PublicKey};
@@ -81,8 +81,8 @@ impl SecretKey {
/// Schnorr Signature on Message
pub fn sign(&self, msg: &[u8]) -> Result<Signature, Error> {
let hash: Sha256Hash = Sha256Hash::hash(msg);
let msg = Message::from_slice(hash.as_ref())?;
Ok(SECP256K1.sign_schnorr(&msg, &KeyPair::from_secret_key(&SECP256K1, &self.inner)))
let msg = Message::from_digest_slice(hash.as_ref())?;
Ok(SECP256K1.sign_schnorr(&msg, &Keypair::from_secret_key(&SECP256K1, &self.inner)))
}
/// Get public key

View File

@@ -11,7 +11,7 @@ use std::collections::BTreeMap;
#[cfg(feature = "mint")]
use bitcoin::bip32::DerivationPath;
#[cfg(feature = "mint")]
use bitcoin::bip32::{ChildNumber, ExtendedPrivKey};
use bitcoin::bip32::{ChildNumber, Xpriv};
use bitcoin::hashes::sha256::Hash as Sha256;
use bitcoin::hashes::Hash;
#[cfg(feature = "mint")]
@@ -288,7 +288,7 @@ impl MintKeySet {
/// Generate new [`MintKeySet`]
pub fn generate<C: secp256k1::Signing>(
secp: &Secp256k1<C>,
xpriv: ExtendedPrivKey,
xpriv: Xpriv,
unit: CurrencyUnit,
max_order: u8,
) -> Self {
@@ -328,8 +328,7 @@ impl MintKeySet {
currency_unit: CurrencyUnit,
derivation_path: DerivationPath,
) -> Self {
let xpriv =
ExtendedPrivKey::new_master(bitcoin::Network::Bitcoin, seed).expect("RNG busted");
let xpriv = Xpriv::new_master(bitcoin::Network::Bitcoin, seed).expect("RNG busted");
Self::generate(
secp,
xpriv
@@ -343,7 +342,7 @@ impl MintKeySet {
/// Generate new [`MintKeySet`] from xpriv
pub fn generate_from_xpriv<C: secp256k1::Signing>(
secp: &Secp256k1<C>,
xpriv: ExtendedPrivKey,
xpriv: Xpriv,
max_order: u8,
currency_unit: CurrencyUnit,
derivation_path: DerivationPath,

View File

@@ -2,7 +2,7 @@
//!
//! <https://github.com/cashubtc/nuts/blob/main/13.md>
use bitcoin::bip32::{ChildNumber, DerivationPath, ExtendedPrivKey};
use bitcoin::bip32::{ChildNumber, DerivationPath, Xpriv};
use thiserror::Error;
use tracing::instrument;
@@ -37,7 +37,7 @@ pub enum Error {
impl Secret {
/// Create new [`Secret`] from xpriv
pub fn from_xpriv(xpriv: ExtendedPrivKey, keyset_id: Id, counter: u32) -> Result<Self, Error> {
pub fn from_xpriv(xpriv: Xpriv, keyset_id: Id, counter: u32) -> Result<Self, Error> {
let path = derive_path_from_keyset_id(keyset_id)?
.child(ChildNumber::from_hardened_idx(counter)?)
.child(ChildNumber::from_normal_idx(0)?);
@@ -51,7 +51,7 @@ impl Secret {
impl SecretKey {
/// Create new [`SecretKey`] from xpriv
pub fn from_xpriv(xpriv: ExtendedPrivKey, keyset_id: Id, counter: u32) -> Result<Self, Error> {
pub fn from_xpriv(xpriv: Xpriv, keyset_id: Id, counter: u32) -> Result<Self, Error> {
let path = derive_path_from_keyset_id(keyset_id)?
.child(ChildNumber::from_hardened_idx(counter)?)
.child(ChildNumber::from_normal_idx(1)?);
@@ -68,7 +68,7 @@ impl PreMintSecrets {
pub fn from_xpriv(
keyset_id: Id,
counter: u32,
xpriv: ExtendedPrivKey,
xpriv: Xpriv,
amount: Amount,
amount_split_target: &SplitTarget,
) -> Result<Self, Error> {
@@ -102,7 +102,7 @@ impl PreMintSecrets {
pub fn from_xpriv_blank(
keyset_id: Id,
counter: u32,
xpriv: ExtendedPrivKey,
xpriv: Xpriv,
amount: Amount,
) -> Result<Self, Error> {
if amount <= Amount::ZERO {
@@ -141,7 +141,7 @@ impl PreMintSecrets {
/// factor
pub fn restore_batch(
keyset_id: Id,
xpriv: ExtendedPrivKey,
xpriv: Xpriv,
start_count: u32,
end_count: u32,
) -> Result<Self, Error> {
@@ -194,7 +194,7 @@ mod tests {
"half depart obvious quality work element tank gorilla view sugar picture humble";
let mnemonic = Mnemonic::from_str(seed).unwrap();
let seed: [u8; 64] = mnemonic.to_seed("");
let xpriv = ExtendedPrivKey::new_master(Network::Bitcoin, &seed).unwrap();
let xpriv = Xpriv::new_master(Network::Bitcoin, &seed).unwrap();
let keyset_id = Id::from_str("009a1f293253e41e").unwrap();
let test_secrets = [
@@ -216,7 +216,7 @@ mod tests {
"half depart obvious quality work element tank gorilla view sugar picture humble";
let mnemonic = Mnemonic::from_str(seed).unwrap();
let seed: [u8; 64] = mnemonic.to_seed("");
let xpriv = ExtendedPrivKey::new_master(Network::Bitcoin, &seed).unwrap();
let xpriv = Xpriv::new_master(Network::Bitcoin, &seed).unwrap();
let keyset_id = Id::from_str("009a1f293253e41e").unwrap();
let test_rs = [

View File

@@ -4,7 +4,7 @@ use std::collections::{HashMap, HashSet};
use std::str::FromStr;
use std::sync::Arc;
use bitcoin::bip32::ExtendedPrivKey;
use bitcoin::bip32::Xpriv;
use bitcoin::hashes::sha256::Hash as Sha256Hash;
use bitcoin::hashes::Hash;
use bitcoin::key::XOnlyPublicKey;
@@ -51,7 +51,7 @@ pub struct Wallet {
pub localstore: Arc<dyn WalletDatabase<Err = cdk_database::Error> + Send + Sync>,
/// The targeted amount of proofs to have at each size
pub target_proof_count: usize,
xpriv: ExtendedPrivKey,
xpriv: Xpriv,
client: HttpClient,
}
@@ -80,8 +80,7 @@ impl Wallet {
seed: &[u8],
target_proof_count: Option<usize>,
) -> Result<Self, Error> {
let xpriv = ExtendedPrivKey::new_master(Network::Bitcoin, seed)
.expect("Could not create master key");
let xpriv = Xpriv::new_master(Network::Bitcoin, seed).expect("Could not create master key");
Ok(Self {
mint_url: MintUrl::from_str(mint_url)?,