mirror of
https://github.com/aljazceru/cdk.git
synced 2026-02-03 12:16:12 +01:00
chore: bump bitcoin + lightning-invoice deps
This commit is contained in:
committed by
thesimplekid
parent
5807adcd3c
commit
1021ec5299
@@ -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 }
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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 }
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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 }
|
||||
|
||||
@@ -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"] }
|
||||
|
||||
@@ -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"] }
|
||||
|
||||
@@ -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 }
|
||||
|
||||
@@ -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 = [
|
||||
|
||||
@@ -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),
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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),
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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(())
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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 = [
|
||||
|
||||
@@ -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)?,
|
||||
|
||||
Reference in New Issue
Block a user