Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
26 changes: 19 additions & 7 deletions crates/cdk-integration-tests/src/bin/start_regtest_mints.rs
Original file line number Diff line number Diff line change
Expand Up @@ -280,25 +280,37 @@ fn create_ldk_settings(
logging: LoggingConfig::default(),
},
mint_info: cdk_mintd::config::MintInfo::default(),
ln: cdk_mintd::config::Ln {
ln_backend: cdk_mintd::config::LnBackend::LdkNode,
payment_backend: cdk_mintd::config::PaymentBackend {
kind: cdk_mintd::config::PaymentBackendKind::LdkNode,
invoice_description: None,
min_mint: 1.into(),
max_mint: 500_000.into(),
min_melt: 1.into(),
max_melt: 500_000.into(),
ldk_node: Some(ldk_config.clone()),
..Default::default()
},
database: cdk_mintd::config::Database::default(),
auth_database: None,
mint_management_rpc: None,
prometheus: None,
auth: None,
cln: None,
lnbits: None,
lnd: None,
ldk_node: Some(ldk_config),
fake_wallet: None,
grpc_processor: None,
database: cdk_mintd::config::Database::default(),
auth_database: None,
mint_management_rpc: None,
prometheus: None,
auth: None,
using_deprecated_config: None,
ln: cdk_mintd::config::PaymentBackend {
ln_backend: cdk_mintd::config::PaymentBackendKind::LdkNode,
invoice_description: None,
min_mint: 1.into(),
max_mint: 500_000.into(),
min_melt: 1.into(),
max_melt: 500_000.into(),
..Default::default()
},
}
}

Expand Down
89 changes: 65 additions & 24 deletions crates/cdk-integration-tests/src/shared.rs
Original file line number Diff line number Diff line change
Expand Up @@ -201,20 +201,21 @@ pub fn create_fake_wallet_settings(
enable_swagger_ui: None,
},
mint_info: cdk_mintd::config::MintInfo::default(),
ln: cdk_mintd::config::Ln {
ln_backend: cdk_mintd::config::LnBackend::FakeWallet,
payment_backend: cdk_mintd::config::PaymentBackend {
kind: cdk_mintd::config::PaymentBackendKind::FakeWallet,
ln_backend: cdk_mintd::config::PaymentBackendKind::None,
invoice_description: None,
min_mint: DEFAULT_MIN_MINT.into(),
max_mint: DEFAULT_MAX_MINT.into(),
min_melt: DEFAULT_MIN_MELT.into(),
max_melt: DEFAULT_MAX_MELT.into(),
fake_wallet: fake_wallet_config,
cln: None,
lnd: None,
lnbits: None,
ldk_node: None,
grpc_processor: None,
},
cln: None,
lnbits: None,
lnd: None,
ldk_node: None,
fake_wallet: fake_wallet_config,
grpc_processor: None,
database: Database {
engine: DatabaseEngine::from_str(database).expect("valid database"),
postgres: None,
Expand All @@ -223,6 +224,22 @@ pub fn create_fake_wallet_settings(
mint_management_rpc: None,
auth: None,
prometheus: Some(Default::default()),
cln: None,
lnbits: None,
lnd: None,
ldk_node: None,
fake_wallet: None,
grpc_processor: None,
using_deprecated_config: None,
ln: cdk_mintd::config::PaymentBackend {
ln_backend: cdk_mintd::config::PaymentBackendKind::LdkNode,
invoice_description: None,
min_mint: 1.into(),
max_mint: 500_000.into(),
min_melt: 1.into(),
max_melt: 500_000.into(),
..Default::default()
},
}
}

Expand Down Expand Up @@ -254,25 +271,37 @@ pub fn create_cln_settings(
enable_swagger_ui: None,
},
mint_info: cdk_mintd::config::MintInfo::default(),
ln: cdk_mintd::config::Ln {
ln_backend: cdk_mintd::config::LnBackend::Cln,
payment_backend: cdk_mintd::config::PaymentBackend {
kind: cdk_mintd::config::PaymentBackendKind::Cln,
invoice_description: None,
min_mint: DEFAULT_MIN_MINT.into(),
max_mint: DEFAULT_MAX_MINT.into(),
min_melt: DEFAULT_MIN_MELT.into(),
max_melt: DEFAULT_MAX_MELT.into(),
cln: Some(cln_config.clone()),
..Default::default()
},
cln: Some(cln_config),
lnbits: None,
lnd: None,
ldk_node: None,
fake_wallet: None,
grpc_processor: None,
database: cdk_mintd::config::Database::default(),
auth_database: None,
mint_management_rpc: None,
auth: None,
prometheus: Some(Default::default()),
cln: None,
lnbits: None,
lnd: None,
ldk_node: None,
fake_wallet: None,
grpc_processor: None,
using_deprecated_config: None,
ln: cdk_mintd::config::PaymentBackend {
ln_backend: cdk_mintd::config::PaymentBackendKind::LdkNode,
invoice_description: None,
min_mint: 1.into(),
max_mint: 500_000.into(),
min_melt: 1.into(),
max_melt: 500_000.into(),
..Default::default()
},
}
}

Expand Down Expand Up @@ -302,24 +331,36 @@ pub fn create_lnd_settings(
enable_swagger_ui: None,
},
mint_info: cdk_mintd::config::MintInfo::default(),
ln: cdk_mintd::config::Ln {
ln_backend: cdk_mintd::config::LnBackend::Lnd,
payment_backend: cdk_mintd::config::PaymentBackend {
kind: cdk_mintd::config::PaymentBackendKind::Lnd,
invoice_description: None,
min_mint: DEFAULT_MIN_MINT.into(),
max_mint: DEFAULT_MAX_MINT.into(),
min_melt: DEFAULT_MIN_MELT.into(),
max_melt: DEFAULT_MAX_MELT.into(),
lnd: Some(lnd_config),
..Default::default()
},
cln: None,
lnbits: None,
ldk_node: None,
lnd: Some(lnd_config),
fake_wallet: None,
grpc_processor: None,
database: cdk_mintd::config::Database::default(),
auth_database: None,
mint_management_rpc: None,
auth: None,
prometheus: Some(Default::default()),
cln: None,
lnbits: None,
lnd: None,
ldk_node: None,
fake_wallet: None,
grpc_processor: None,
using_deprecated_config: None,
ln: cdk_mintd::config::PaymentBackend {
ln_backend: cdk_mintd::config::PaymentBackendKind::LdkNode,
invoice_description: None,
min_mint: 1.into(),
max_mint: 500_000.into(),
min_melt: 1.into(),
max_melt: 500_000.into(),
..Default::default()
},
}
}
6 changes: 3 additions & 3 deletions crates/cdk-integration-tests/tests/happy_path_mint_wallet.rs
Original file line number Diff line number Diff line change
Expand Up @@ -583,12 +583,12 @@ async fn test_fake_melt_change_in_quote() {

#[tokio::test(flavor = "multi_thread", worker_threads = 1)]
async fn test_pay_invoice_twice() {
let ln_backend = match env::var("LN_BACKEND") {
let payment_backend = match env::var("PAYMENT_BACKEND") {
Ok(val) => Some(val),
Err(_) => env::var("CDK_MINTD_LN_BACKEND").ok(),
Err(_) => env::var("CDK_MINTD_PAYMENT_BACKEND").ok(),
};

if ln_backend.map(|ln| ln.to_uppercase()) == Some("FAKEWALLET".to_string()) {
if payment_backend.map(|ln| ln.to_uppercase()) == Some("FAKEWALLET".to_string()) {
// We can only perform this test on regtest backends as fake wallet just marks the quote as paid
return;
}
Expand Down
30 changes: 15 additions & 15 deletions crates/cdk-ldk-node/NETWORK_GUIDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -26,10 +26,10 @@ listen_port = 8085
[database]
engine = "sqlite"

[ln]
ln_backend = "ldk-node"
[payment_backend]
kind = "ldk-node"

[ldk_node]
[payment_backend.ldk_node]
bitcoin_network = "signet"
chain_source_type = "esplora"
esplora_url = "https://mutinynet.com/api"
Expand All @@ -42,7 +42,7 @@ webserver_port = 8091
### Environment Variables

```bash
export CDK_MINTD_LN_BACKEND="ldk-node"
export CDK_MINTD_PAYMENT_BACKEND="ldk-node"
export CDK_MINTD_LDK_NODE_BITCOIN_NETWORK="signet"
export CDK_MINTD_LDK_NODE_ESPLORA_URL="https://mutinynet.com/api"
export CDK_MINTD_LDK_NODE_RGS_URL="https://rgs.mutinynet.com/snapshot/0"
Expand All @@ -59,10 +59,10 @@ cdk-mintd
## Bitcoin Testnet

```toml
[ln]
ln_backend = "ldk-node"
[payment_backend]
kind = "ldk-node"

[ldk_node]
[payment_backend.ldk_node]
bitcoin_network = "testnet"
esplora_url = "https://blockstream.info/testnet/api"
rgs_url = "https://rapidsync.lightningdevkit.org/snapshot"
Expand All @@ -77,10 +77,10 @@ storage_dir_path = "~/.cdk-ldk-node/testnet"
⚠️ **WARNING**: Uses real Bitcoin!

```toml
[ln]
ln_backend = "ldk-node"
[payment_backend]
kind = "ldk-node"

[ldk_node]
[payment_backend.ldk_node]
bitcoin_network = "mainnet"
esplora_url = "https://blockstream.info/api"
rgs_url = "https://rapidsync.lightningdevkit.org/snapshot"
Expand All @@ -104,10 +104,10 @@ webserver_port = 8091
## Regtest (Development)

```toml
[ln]
ln_backend = "ldk-node"
[payment_backend]
kind = "ldk-node"

[ldk_node]
[payment_backend.ldk_node]
bitcoin_network = "regtest"
chain_source_type = "bitcoinrpc"
bitcoind_rpc_host = "127.0.0.1"
Expand All @@ -128,7 +128,7 @@ For complete regtest environment: `just regtest` (see [REGTEST_GUIDE.md](../../R
docker run -d \
--name cdk-mintd \
-p 8085:8085 -p 8091:8091 \
-e CDK_MINTD_LN_BACKEND=ldk-node \
-e CDK_MINTD_PAYMENT_BACKEND=ldk-node \
-e CDK_MINTD_LDK_NODE_BITCOIN_NETWORK=signet \
-e CDK_MINTD_LDK_NODE_ESPLORA_URL=https://mutinynet.com/api \
-e CDK_MINTD_LDK_NODE_RGS_URL=https://rgs.mutinynet.com/snapshot/0 \
Expand All @@ -140,7 +140,7 @@ docker run -d \
--name cdk-mintd \
-p 8085:8085 \
--network host \
-e CDK_MINTD_LN_BACKEND=ldk-node \
-e CDK_MINTD_PAYMENT_BACKEND=ldk-node \
-e CDK_MINTD_LDK_NODE_BITCOIN_NETWORK=mainnet \
-e CDK_MINTD_LDK_NODE_WEBSERVER_HOST=127.0.0.1 \
cashubtc/cdk-mintd:latest
Expand Down
8 changes: 4 additions & 4 deletions crates/cdk-ldk-node/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ CDK lightning backend for ldk-node, providing Lightning Network functionality fo

```bash
# Using environment variables (simplest)
export CDK_MINTD_LN_BACKEND="ldk-node"
export CDK_MINTD_PAYMENT_BACKEND="ldk-node"
export CDK_MINTD_LDK_NODE_BITCOIN_NETWORK="signet"
export CDK_MINTD_LDK_NODE_ESPLORA_URL="https://mutinynet.com/api"
export CDK_MINTD_LDK_NODE_RGS_URL="https://rgs.mutinynet.com/snapshot/0"
Expand Down Expand Up @@ -62,10 +62,10 @@ Or via environment variables:
### Config File Example

```toml
[ln]
ln_backend = "ldk-node"
[payment_backend]
kind = "ldk-node"

[ldk_node]
[payment_backend.ldk_node]
bitcoin_network = "signet" # mainnet, testnet, signet, regtest
esplora_url = "https://mutinynet.com/api"
rgs_url = "https://rgs.mutinynet.com/snapshot/0"
Expand Down
1 change: 1 addition & 0 deletions crates/cdk-mintd/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,7 @@ tracing-subscriber.workspace = true
tracing-appender.workspace = true
futures.workspace = true
serde.workspace = true
serde_json.workspace = true
bip39.workspace = true
tower-http = { workspace = true, features = ["compression-full", "decompression-full"] }
tower.workspace = true
Expand Down
24 changes: 12 additions & 12 deletions crates/cdk-mintd/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -80,7 +80,7 @@ cdk-mintd --work-dir /my/custom/path
**Environment variables only**:
```bash
export CDK_MINTD_LISTEN_PORT=3000
export CDK_MINTD_LN_BACKEND=fakewallet
export CDK_MINTD_PAYMENT_BACKEND=fakewallet
export CDK_MINTD_DATABASE=sqlite
cdk-mintd
```
Expand All @@ -89,10 +89,10 @@ cdk-mintd

### With LDK Node (Recommended for Testing)
```toml
[ln]
ln_backend = "ldk-node"
[payment_backend]
kind = "ldk-node"

[ldk_node]
[payment_backend.ldk_node]
bitcoin_network = "signet" # Use "mainnet" for production
esplora_url = "https://mutinynet.com/api"
rgs_url = "https://rgs.mutinynet.com/snapshot/0"
Expand All @@ -103,21 +103,21 @@ storage_dir_path = "/var/lib/cdk-mintd/ldk-node"

### With CLN Lightning Backend
```toml
[ln]
ln_backend = "cln"
[payment_backend]
kind = "cln"

[cln]
[payment_backend.cln]
rpc_path = "/home/bitcoin/.lightning/bitcoin/lightning-rpc"
# fee_percent = 0.02 # Optional, defaults to 2%
# reserve_fee_min = 2 # Optional, defaults to 2 sats
```

### With LND Lightning Backend
```toml
[ln]
ln_backend = "lnd"
[payment_backend]
kind = "lnd"

[lnd]
[payment_backend.lnd]
address = "https://localhost:10009"
macaroon_file = "/home/bitcoin/.lnd/data/chain/bitcoin/mainnet/admin.macaroon"
cert_file = "/home/bitcoin/.lnd/tls.cert"
Expand Down Expand Up @@ -190,7 +190,7 @@ All configuration can be done through environment variables:

```yaml
environment:
- CDK_MINTD_LN_BACKEND=ldk-node
- CDK_MINTD_PAYMENT_BACKEND=ldk-node
- CDK_MINTD_DATABASE=sqlite
- CDK_MINTD_LISTEN_HOST=0.0.0.0
- CDK_MINTD_LISTEN_PORT=8085
Expand Down Expand Up @@ -250,7 +250,7 @@ cdk-mintd --help

- `CDK_MINTD_DATABASE`: Database engine (`sqlite`/`postgres`/`redb`)
- `CDK_MINTD_DATABASE_URL`: PostgreSQL connection string
- `CDK_MINTD_LN_BACKEND`: Lightning backend (`cln`/`lnd`/`lnbits`/`ldk-node`/`fakewallet`)
- `CDK_MINTD_PAYMENT_BACKEND`: Lightning backend (`cln`/`lnd`/`lnbits`/`ldk-node`/`fakewallet`)
- `CDK_MINTD_LISTEN_HOST`: Host to bind to (default: `127.0.0.1`)
- `CDK_MINTD_LISTEN_PORT`: Port to bind to (default: `8085`)

Expand Down
Loading