1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
[]
= "https://mint.thesimplekid.dev/"
= "127.0.0.1"
= 8085
= ""
# input_fee_ppk = 0
# enable_swagger_ui = false
# Set keyset version preference.
# true = Force upgrade to V2 (Version01).
# false = Force downgrade to V1 (Version00).
# If unset (default), existing keysets are preserved, but new ones use V2.
# use_keyset_v2 = true
[]
# Prefer explicit fields over inline tables for readability and ease of overrides
= 600
= 120
[]
# Where to output logs: "stderr" (standard error stream), "file", or "both" (default: "both")
# output = "both"
# Log level for console output (default: "info")
# console_level = "info"
# Log level for file output (default: "debug")
# file_level = "debug"
[]
= false
# address = "127.0.0.1"
# port = 8086
#[prometheus]
#enabled = true
#address = "127.0.0.1"
#port = 9090
#
[]
# memory or redis
= "memory"
= 60
= 60
# `key_prefix` and `connection_string` required for redis
# key_prefix = "mintd"
# connection_string = "redis://localhost"
# NOTE: If [mint_management_rpc] is enabled these values will only be used on first start up.
# Further changes must be made through the rpc.
[]
# name = "cdk-mintd mutiney net mint"
# Hex pubkey of mint
# pubkey = ""
# description = "These are not real sats for testing only"
# description_long = "A longer mint for testing"
# motd = "Hello world"
# icon_url = "https://this-is-a-mint-icon-url.com/icon.png"
# contact_email = "hello@cashu.me"
# Nostr pubkey of mint (Hex)
# contact_nostr_public_key = ""
# tos_url = "https://example.com/terms-of-service"
[]
# Database engine (sqlite/postgres) defaults to sqlite
= "sqlite"
# PostgreSQL configuration (when engine = "postgres")
[]
# PostgreSQL connection URL
# Can also be set via CDK_MINTD_POSTGRES_URL or CDK_MINTD_DATABASE_URL environment variables
# Environment variables take precedence over config file settings
= "postgresql://user:password@localhost:5432/cdk_mint"
# TLS mode: "disable", "prefer", "require" (optional, defaults to "disable")
= "disable"
# Maximum number of connections in the pool (optional, defaults to 20)
= 20
# Connection timeout in seconds (optional, defaults to 10)
= 10
# Auth database configuration (optional, only used when auth is enabled)
[]
# PostgreSQL connection URL for authentication database
# Can also be set via CDK_MINTD_AUTH_POSTGRES_URL environment variable
# Environment variables take precedence over config file settings
= "postgresql://user:password@localhost:5432/cdk_mint_auth"
# TLS mode: "disable", "prefer", "require" (optional, defaults to "disable")
= "disable"
# Maximum number of connections in the pool (optional, defaults to 20)
= 20
# Connection timeout in seconds (optional, defaults to 10)
= 10
[]
# Required ln backend `cln`, `lnd`, `fakewallet`, 'lnbits', 'ldknode'
= "fakewallet"
# min_mint=1
# max_mint=500000
# min_melt=1
# max_melt=500000
# [cln]
# rpc_path = "/path/to/.lightning/bitcoin/lightning-rpc"
# bolt12 = true # Optional, defaults to true
# fee_percent = 0.02 # Optional, defaults to 2%
# reserve_fee_min = 2 # Optional, defaults to 2 sats
# [lnbits]
# admin_api_key = ""
# invoice_api_key = ""
# lnbits_api = ""
# fee_percent = 0.02 # Optional, defaults to 2%
# reserve_fee_min = 2 # Optional, defaults to 2 sats
# Note: Only LNBits v1 API is supported (websocket-based)
# [lnd]
# address = "https://localhost:10009"
# cert_file = "/path/to/.lnd/tls.cert"
# macaroon_file = "/path/to/.lnd/data/chain/bitcoin/mainnet/admin.macaroon"
# fee_percent = 0.02 # Optional, defaults to 2%
# reserve_fee_min = 2 # Optional, defaults to 2 sats
# [ldk_node]
# fee_percent = 0.02 # Optional, defaults to 2%
# reserve_fee_min = 2 # Optional, defaults to 2 sats
# bitcoin_network = "signet" # mainnet, testnet, signet, regtest
# chain_source_type = "esplora" # esplora, bitcoinrpc
#
# # IMPORTANT: LDK Node Seed Configuration
# # For NEW nodes: ldk_node_mnemonic MUST be set. This is the BIP39 mnemonic used to derive
# # the LDK node's keys. Keep this secure and backed up!
# # For EXISTING nodes: If omitted, the node will use its stored seed from the storage directory.
# # This maintains backward compatibility with nodes created before this configuration was added.
# ldk_node_mnemonic = "your twelve or twenty-four word mnemonic phrase here"
#
# # Mutinynet configuration (recommended for testing)
# esplora_url = "https://mutinynet.com/api"
# gossip_source_type = "rgs" # Use RGS for better performance
# rgs_url = "https://rgs.mutinynet.com/snapshot/0"
# storage_dir_path = "~/.cdk-ldk-node/mutinynet"
# log_dir_path = ".cdk-ldk-node/ldk-node/ldk_node.log"
#
# # Testnet configuration
# # bitcoin_network = "testnet"
# # esplora_url = "https://blockstream.info/testnet/api"
# # rgs_url = "https://rapidsync.lightningdevkit.org/snapshot"
# # storage_dir_path = "~/.cdk-ldk-node/testnet"
#
# # Mainnet configuration (CAUTION: Real Bitcoin!)
# # bitcoin_network = "mainnet"
# # esplora_url = "https://blockstream.info/api"
# # rgs_url = "https://rapidsync.lightningdevkit.org/snapshot"
# # storage_dir_path = "~/.cdk-ldk-node/mainnet"
#
# # Bitcoin RPC configuration (when chain_source_type = "bitcoinrpc")
# bitcoind_rpc_host = "127.0.0.1"
# bitcoind_rpc_port = 18443
# bitcoind_rpc_user = "testuser"
# bitcoind_rpc_password = "testpass"
#
# # Node configuration
# ldk_node_host = "127.0.0.1"
# ldk_node_port = 8090
#
# # Gossip source configuration
# gossip_source_type = "p2p" # p2p (direct peer-to-peer) or rgs (rapid gossip sync)
#
# # Webserver configuration for LDK node management interface
# webserver_host = "127.0.0.1" # Default: 127.0.0.1
# webserver_port = 0 # 0 = auto-assign available port
[]
= ["sat"]
= 0.02
= 1
= 1
= 3
# [grpc_processor]
# gRPC Payment Processor configuration
# supported_units = ["sat"]
# addr = "127.0.0.1"
# port = 50051
# tls_dir = "/path/to/tls"
#
# Note: To support custom payment methods (e.g., paypal, venmo, cashapp),
# your gRPC payment processor should return them in the `custom` field of
# the get_settings() response. The mint will automatically create routes
# for these methods (e.g., /v1/mint/quote/paypal, /v1/mint/paypal, etc.)
# [auth]
# Set to true to enable authentication features (defaults to false)
# auth_enabled = false
# openid_discovery = "http://127.0.0.1:8080/realms/cdk-test-realm/.well-known/openid-configuration"
# openid_client_id = "cashu-client"
# mint_max_bat=50
# Authentication settings for endpoints
# Options: "clear", "blind", "none" (none = disabled)
# mint = "blind"
# get_mint_quote = "none"
# check_mint_quote = "none"
# melt = "none"
# get_melt_quote = "none"
# check_melt_quote = "none"
# swap = "blind"
# restore = "blind"
# check_proof_state = "none"
# Transaction limits for DoS protection (optional, defaults shown)
[]
# Maximum number of inputs allowed per transaction (swap/melt)
= 1000
# Maximum number of outputs allowed per transaction (mint/swap/melt)
= 1000