diff --git a/compose/env-sample/clntn/compose.env b/compose/env-sample/clntn/compose.env
index e2712d4..2daee38 100644
--- a/compose/env-sample/clntn/compose.env
+++ b/compose/env-sample/clntn/compose.env
@@ -1,4 +1,4 @@
-ROBOSATS_DOCKER_TAG='latest'
+ROBOSATS_DOCKER_TAG='7dfe995@sha256:402f383bc644444ed07363a2ee086450eaf48332367c8be54d2a9e1b506dabb6'
STATIC='/custom_path/testnet/static'
DATABASE='/custom_path/testnet/database'
diff --git a/compose/env-sample/clntn/robosats.env b/compose/env-sample/clntn/robosats.env
index d8a00fb..04a8e27 100644
--- a/compose/env-sample/clntn/robosats.env
+++ b/compose/env-sample/clntn/robosats.env
@@ -1,27 +1,32 @@
-# # LND directory to read TLS cert and macaroon
-# CLN_DIR='/cln/'
-# MACAROON_PATH='data/chain/bitcoin/testnet/admin.macaroon'
+# Coordinator Alias (Same as longAlias)
+COORDINATOR_ALIAS="coordinator_NAME_CLN"
+# Lightning node vendor: CLN | LND
+LNVENDOR='CLN'
-# # If LND directory is not specified, cert and macaroon can be provided as base64 strings
-# # base64 ~/.lnd/tls.cert | tr -d '\n'
-# LND_CERT_BASE64='LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNLVENDQWRDZ0F3SUJBZ0lRQ0VoeGpPZXY1bGQyVFNPTXhKalFvekFLQmdncWhrak9QUVFEQWpBNE1SOHcKSFFZRFZRUUtFeFpzYm1RZ1lYVjBiMmRsYm1WeVlYUmxaQ0JqWlhKME1SVXdFd1lEVlFRREV3d3dNakJtTVRnMQpZelkwTnpVd0hoY05Nakl3TWpBNE1UWXhOalV3V2hjTk1qTXdOREExTVRZeE5qVXdXakE0TVI4d0hRWURWUVFLCkV4WnNibVFnWVhWMGIyZGxibVZ5WVhSbFpDQmpaWEowTVJVd0V3WURWUVFERXd3d01qQm1NVGcxWXpZME56VXcKV1RBVEJnY3Foa2pPUFFJQkJnZ3Foa2pPUFFNQkJ3TkNBQVNJVWdkcVMrWFZKL3EzY0JZeWd6ZDc2endaanlmdQpLK3BzcWNYVkFyeGZjU2NXQ25jbXliNGRaMy9Lc3lLWlRaamlySDE3aEY0OGtIMlp5clRZSW9hZG80RzdNSUc0Ck1BNEdBMVVkRHdFQi93UUVBd0lDcERBVEJnTlZIU1VFRERBS0JnZ3JCZ0VGQlFjREFUQVBCZ05WSFJNQkFmOEUKQlRBREFRSC9NQjBHQTFVZERnUVdCQlEwWUJjZXdsd1BqYTJPRXFyTGxzZnJscEswUFRCaEJnTlZIUkVFV2pCWQpnZ3d3TWpCbU1UZzFZelkwTnpXQ0NXeHZZMkZzYUc5emRJSUVkVzVwZUlJS2RXNXBlSEJoWTJ0bGRJSUhZblZtClkyOXVib2NFZndBQUFZY1FBQUFBQUFBQUFBQUFBQUFBQUFBQUFZY0V3S2dRQW9jRUFBQUFBREFLQmdncWhrak8KUFFRREFnTkhBREJFQWlBd0dMY05qNXVZSkVwanhYR05OUnNFSzAwWmlSUUh2Qm50NHp6M0htWHBiZ0lnSWtvUQo3cHFvNGdWNGhiczdrSmt1bnk2bkxlNVg0ZzgxYjJQOW52ZnZ2bkk9Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K'
-# # base64 ~/.lnd/data/chain/bitcoin/testnet/admin.macaroon | tr -d '\n'
-# LND_MACAROON_BASE64='AgEDbG5kAvgBAwoQsyI+PK+fyb7F2UyTeZ4seRIBMBoWCgdhZGRyZXNzEgRyZWFkEgV3cml0ZRoTCgRpbmZvEgRyZWFkEgV3cml0ZRoXCghpbnZvaWNlcxIEcmVhZBIFd3JpdGUaIQoIbWFjYXJvb24SCGdlbmVyYXRlEgRyZWFkEgV3cml0ZRoWCgdtZXNzYWdlEgRyZWFkEgV3cml0ZRoXCghvZmZjaGFpbhIEcmVhZBIFd3JpdGUaFgoHb25jaGFpbhIEcmVhZBIFd3JpdGUaFAoFcGVlcnMSBHJlYWQSBXdyaXRlGhgKBnNpZ25lchIIZ2VuZXJhdGUSBHJlYWQAAAYgMt90uD6v4truTadWCjlppoeJ4hZrL1SBb09Y+4WOiI0='
+# LND configuration (only needed if LNVENDOR='LND')
+# LND directory to read TLS cert and macaroon
+#LND_DIR='/lnd/'
+#MACAROON_PATH='data/chain/bitcoin/testnet/admin.macaroon'
-# CLN directory
+# If LND directory is not specified, cert and macaroon can be provided as base64 strings
+# base64 ~/.lnd/tls.cert | tr -d '\n'
+#LND_CERT_BASE64='LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNLVENDQWRDZ0F3SUJBZ0lRQ0VoeGpPZXY1bGQyVFNPTXhKalFvekFLQmdncWhrak9QUVFEQWpBNE1SOHcKSFFZRFZRUUtFeFpzYm1RZ1lYVjBiMmRsYm1WeVlYUmxaQ0JqWlhKME1SVXdFd1lEVlFRREV3d3dNakJtTVRnMQpZelkwTnpVd0hoY05Nakl3TWpBNE1UWXhOalV3V2hjTk1qTXdOREExTVRZeE5qVXdXakE0TVI4d0hRWURWUVFLCkV4WnNibVFnWVhWMGIyZGxibVZ5WVhSbFpDQmpaWEowTVJVd0V3WURWUVFERXd3d01qQm1NVGcxWXpZME56VXcKV1RBVEJnY3Foa2pPUFFJQkJnZ3Foa2pPUFFNQkJ3TkNBQVNJVWdkcVMrWFZKL3EzY0JZeWd6ZDc2endaanlmdQpLK3BzcWNYVkFyeGZjU2NXQ25jbXliNGRaMy9Lc3lLWlRaamlySDE3aEY0OGtIMlp5clRZSW9hZG80RzdNSUc0Ck1BNEdBMVVkRHdFQi93UUVBd0lDcERBVEJnTlZIU1VFRERBS0JnZ3JCZ0VGQlFjREFUQVBCZ05WSFJNQkFmOEUKQlRBREFRSC9NQjBHQTFVZERnUVdCQlEwWUJjZXdsd1BqYTJPRXFyTGxzZnJscEswUFRCaEJnTlZIUkVFV2pCWQpnZ3d3TWpCbU1UZzFZelkwTnpXQ0NXeHZZMkZzYUc5emRJSUVkVzVwZUlJS2RXNXBlSEJoWTJ0bGRJSUhZblZtClkyOXVib2NFZndBQUFZY1FBQUFBQUFBQUFBQUFBQUFBQUFBQUFZY0V3S2dRQW9jRUFBQUFBREFLQmdncWhrak8KUFFRREFnTkhBREJFQWlBd0dMY05qNXVZSkVwanhYR05OUnNFSzAwWmlSUUh2Qm50NHp6M0htWHBiZ0lnSWtvUQo3cHFvNGdWNGhiczdrSmt1bnk2bkxlNVg0ZzgxYjJQOW52ZnZ2bkk9Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K'
+# base64 ~/.lnd/data/chain/bitcoin/testnet/admin.macaroon | tr -d '\n'
+#LND_MACAROON_BASE64='AgEDbG5kAvgBAwoQsyI+PK+fyb7F2UyTeZ4seRIBMBoWCgdhZGRyZXNzEgRyZWFkEgV3cml0ZRoTCgRpbmZvEgRyZWFkEgV3cml0ZRoXCghpbnZvaWNlcxIEcmVhZBIFd3JpdGUaIQoIbWFjYXJvb24SCGdlbmVyYXRlEgRyZWFkEgV3cml0ZRoWCgdtZXNzYWdlEgRyZWFkEgV3cml0ZRoXCghvZmZjaGFpbhIEcmVhZBIFd3JpdGUaFgoHb25jaGFpbhIEcmVhZBIFd3JpdGUaFAoFcGVlcnMSBHJlYWQSBXdyaXRlGhgKBnNpZ25lchIIZ2VuZXJhdGUSBHJlYWQAAAYgMt90uD6v4truTadWCjlppoeJ4hZrL1SBb09Y+4WOiI0='
+
+# CLN directory (only needed if LNVENDOR='CLN')
CLN_DIR='/cln/testnet/'
CLN_GRPC_HOST='localhost:9999'
CLN_GRPC_HOLD_HOST='localhost:9998'
+# Bitcoin Core Daemon RPC, used to validate addresses
+BITCOIND_RPCURL = 'http://127.0.0.1:18332'
+BITCOIND_RPCUSER = 'robosats_testnet_bitcoind'
+BITCOIND_RPCPASSWORD = 'robosats_testnet_bitcoind'
+
# Auto unlock LND password. Only used in development docker-compose environment.
# It will fail starting up the node without it.
# To disable auto unlock, comment out 'wallet-unlock-password-file=/tmp/pwd' from 'docker/lnd/lnd.conf'
-
-# Bitcoin Core Daemon RPC, used to validate addresses
-BITCOIND_RPCURL = 'http://127.0.0.1:18332'
-BITCOIND_RPCUSER = 'robodev'
-BITCOIND_RPCPASSWORD = 'robodev'
-
LND_GRPC_HOST='localhost:10009'
REDIS_URL='redis://localhost:6379/1'
@@ -37,9 +42,9 @@ POSTGRES_HOST='127.0.0.1'
POSTGRES_PORT='5432'
# Tor proxy for remote calls (e.g. fetching prices or sending Telegram messages)
+USE_TOR='True'
TOR_PROXY='127.0.0.1:9050'
-
# List of market price public APIs. If the currency is available in more than 1 API, will use median price.
MARKET_PRICE_APIS = 'https://blockchain.info/ticker, https://api.yadio.io/exrates/BTC'
@@ -63,6 +68,13 @@ THE_OTHER_ROBOSATS = 'robosats6tkf3eva7x2voqso3a5wcorsnw34jveyxfqi2fu7oyheasid.o
# Telegram bot token
TELEGRAM_TOKEN = ''
TELEGRAM_BOT_NAME = ''
+# Notify new messages in-chat app (fiat exchange step) if at least X minutes has passed since the last chat message.
+CHAT_NOTIFICATION_TIMEGAP = 5
+
+# Maintainance notice or and other coordinator messages on client start
+# Style of the notice on the client app, use None for no notice: 'None' | 'Warning' | 'Success' | 'Error' | 'Info'
+NOTICE_SEVERITY = 'info'
+NOTICE_MESSAGE = 'This is a coordinator message with LINK'
# Lightning node open info, url to amboss and 1ML
NETWORK = 'testnet'
@@ -75,6 +87,16 @@ FEE = 0.002
# Shall incentivize order making
MAKER_FEE_SPLIT=0.125
+# Time out penalty for canceling takers in SECONDS
+PENALTY_TIMEOUT = 60
+# Time between routing attempts of buyer invoice in MINUTES
+RETRY_TIME = 1
+
+# Store Order Logs in DB. Verbose logging for each order as property of the order object in DB. Useful for debugging and for learning
+# the order flow for new robosats coordinators (prints a pretty timestamped table on the coordinator panel on each order). But a bit heavy
+# on write operations and can potentially affect performance for every request.
+DISABLE_ORDER_LOGS = False
+
# Robosats Development Fund donation as fraction. 0.2 = 20% of successful orders proceeds are donated via keysend.
# Donations to the devfund are important for the sustainabilty of the project, however, these are totally optional (you
# can run a coordinator without donating devfund!). Coordinators with higher devfund donations % will be more prominently
@@ -82,21 +104,6 @@ MAKER_FEE_SPLIT=0.125
# Leaving the default value (20%) will grant the DevFund contributor badge.
DEVFUND = 0.2
-# Bond size as percentage (%)
-DEFAULT_BOND_SIZE = 3
-MIN_BOND_SIZE = 1
-MAX_BOND_SIZE = 15
-
-# Time out penalty for canceling takers in SECONDS
-PENALTY_TIMEOUT = 60
-# Time between routing attempts of buyer invoice in MINUTES
-RETRY_TIME = 1
-
-# Store Order Logs in DB. Verbose logging for each order as property of the order object in DB. Useful for debugging and for learning
-# the order flow for new robosats coordinators (prints a pretty timestamped table on the coordinator panel on each order). But a bit heavy
-# on write operations and can potentially affect performance for every request.
-DISABLE_ORDER_LOGS = False
-
# Coordinator activity limits
MAX_PUBLIC_ORDERS = 100
@@ -114,16 +121,6 @@ MAX_MINING_NETWORK_SPEEDUP_EXPECTED = 1.7
EXP_MAKER_BOND_INVOICE = 300
EXP_TAKER_BOND_INVOICE = 200
-# Time a order is public in the book HOURS
-DEFAULT_PUBLIC_ORDER_DURATION = 24
-MAX_PUBLIC_ORDER_DURATION = 24
-MIN_PUBLIC_ORDER_DURATION = 0.166
-
-# Default time to provide a valid invoice and the trade escrow MINUTES
-INVOICE_AND_ESCROW_DURATION = 180
-# Time to confim chat and confirm fiat (time to Fiat Sent confirmation) HOURS
-FIAT_EXCHANGE_DURATION = 24
-
# ROUTING
# Proportional routing fee limit (fraction of total payout: % / 100)
PROPORTIONAL_ROUTING_FEE_LIMIT = 0.001
@@ -141,7 +138,6 @@ ALLOW_SELF_KEYSEND = False
# REVERSE SUBMARINE SWAP PAYOUTS
# Disable on-the-fly swaps feature
DISABLE_ONCHAIN = False
-MAX_SWAP_ALLOWED = 500000
# Shape of fee to available liquidity curve. Either "linear" or "exponential"
SWAP_FEE_SHAPE = 'exponential'
# EXPONENTIAL. fee (%) = MIN_SWAP_FEE + (MAX_SWAP_FEE - MIN_SWAP_FEE) * e ^ (-LAMBDA * onchain_liquidity_fraction)
diff --git a/compose/env-sample/lndtn/compose.env b/compose/env-sample/lndtn/compose.env
index df3542b..108ae5a 100644
--- a/compose/env-sample/lndtn/compose.env
+++ b/compose/env-sample/lndtn/compose.env
@@ -1,4 +1,4 @@
-ROBOSATS_DOCKER_TAG='latest'
+ROBOSATS_DOCKER_TAG='7dfe995@sha256:402f383bc644444ed07363a2ee086450eaf48332367c8be54d2a9e1b506dabb6'
STATIC='/custom_path/testnet/static'
DATABASE='/custom_path/testnet/database'
@@ -16,7 +16,7 @@ POSTGRES_USER='postgres'
POSTGRES_PASSWORD='example'
BITCOIND_VERSION='24.0.1-alpine'
-LND_VERSION='v0.16.4-beta'
+LND_VERSION='v0.17.0-beta'
NGINX_CONFD='./nginx/tn.conf.d'
WELLKNOWN='./nginx/tn.well-known'
diff --git a/compose/env-sample/lndtn/robosats.env b/compose/env-sample/lndtn/robosats.env
index 56aca13..03c0ece 100644
--- a/compose/env-sample/lndtn/robosats.env
+++ b/compose/env-sample/lndtn/robosats.env
@@ -1,3 +1,8 @@
+# Coordinator Alias (Same as longAlias)
+COORDINATOR_ALIAS="coordinator_NAME"
+# Lightning node vendor: CLN | LND
+LNVENDOR='LND'
+
# LND directory to read TLS cert and macaroon
LND_DIR='/lnd/'
MACAROON_PATH='data/chain/bitcoin/testnet/admin.macaroon'
@@ -8,15 +13,19 @@ LND_CERT_BASE64='LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNLVENDQWRDZ0F3SUJBZ0l
# base64 ~/.lnd/data/chain/bitcoin/testnet/admin.macaroon | tr -d '\n'
LND_MACAROON_BASE64='AgEDbG5kAvgBAwoQsyI+PK+fyb7F2UyTeZ4seRIBMBoWCgdhZGRyZXNzEgRyZWFkEgV3cml0ZRoTCgRpbmZvEgRyZWFkEgV3cml0ZRoXCghpbnZvaWNlcxIEcmVhZBIFd3JpdGUaIQoIbWFjYXJvb24SCGdlbmVyYXRlEgRyZWFkEgV3cml0ZRoWCgdtZXNzYWdlEgRyZWFkEgV3cml0ZRoXCghvZmZjaGFpbhIEcmVhZBIFd3JpdGUaFgoHb25jaGFpbhIEcmVhZBIFd3JpdGUaFAoFcGVlcnMSBHJlYWQSBXdyaXRlGhgKBnNpZ25lchIIZ2VuZXJhdGUSBHJlYWQAAAYgMt90uD6v4truTadWCjlppoeJ4hZrL1SBb09Y+4WOiI0='
-# Auto unlock LND password. Only used in development docker-compose environment.
-# It will fail starting up the node without it.
-# To disable auto unlock, comment out 'wallet-unlock-password-file=/tmp/pwd' from 'docker/lnd/lnd.conf'
+# CLN directory (only needed if LNVENDOR='CLN')
+CLN_DIR='/cln/testnet/'
+CLN_GRPC_HOST='localhost:9999'
+CLN_GRPC_HOLD_HOST='localhost:9998'
# Bitcoin Core Daemon RPC, used to validate addresses
BITCOIND_RPCURL = 'http://127.0.0.1:18332'
-BITCOIND_RPCUSER = 'robodev'
-BITCOIND_RPCPASSWORD = 'robodev'
+BITCOIND_RPCUSER = 'robosats_testnet_bitcoind'
+BITCOIND_RPCPASSWORD = 'robosats_testnet_bitcoind'
+# Auto unlock LND password. Only used in development docker-compose environment.
+# It will fail starting up the node without it.
+# To disable auto unlock, comment out 'wallet-unlock-password-file=/tmp/pwd' from 'docker/lnd/lnd.conf'
LND_GRPC_HOST='localhost:10009'
REDIS_URL='redis://localhost:6379/1'
@@ -32,9 +41,9 @@ POSTGRES_HOST='127.0.0.1'
POSTGRES_PORT='5432'
# Tor proxy for remote calls (e.g. fetching prices or sending Telegram messages)
+USE_TOR='True'
TOR_PROXY='127.0.0.1:9050'
-
# List of market price public APIs. If the currency is available in more than 1 API, will use median price.
MARKET_PRICE_APIS = 'https://blockchain.info/ticker, https://api.yadio.io/exrates/BTC'
@@ -58,6 +67,13 @@ THE_OTHER_ROBOSATS = 'robosats6tkf3eva7x2voqso3a5wcorsnw34jveyxfqi2fu7oyheasid.o
# Telegram bot token
TELEGRAM_TOKEN = ''
TELEGRAM_BOT_NAME = ''
+# Notify new messages in-chat app (fiat exchange step) if at least X minutes has passed since the last chat message.
+CHAT_NOTIFICATION_TIMEGAP = 5
+
+# Maintainance notice or and other coordinator messages on client start
+# Style of the notice on the client app, use None for no notice: 'None' | 'Warning' | 'Success' | 'Error' | 'Info'
+NOTICE_SEVERITY = 'info'
+NOTICE_MESSAGE = 'This is a coordinator message with LINK'
# Lightning node open info, url to amboss and 1ML
NETWORK = 'testnet'
@@ -70,6 +86,16 @@ FEE = 0.002
# Shall incentivize order making
MAKER_FEE_SPLIT=0.125
+# Time out penalty for canceling takers in SECONDS
+PENALTY_TIMEOUT = 60
+# Time between routing attempts of buyer invoice in MINUTES
+RETRY_TIME = 1
+
+# Store Order Logs in DB. Verbose logging for each order as property of the order object in DB. Useful for debugging and for learning
+# the order flow for new robosats coordinators (prints a pretty timestamped table on the coordinator panel on each order). But a bit heavy
+# on write operations and can potentially affect performance for every request.
+DISABLE_ORDER_LOGS = False
+
# Robosats Development Fund donation as fraction. 0.2 = 20% of successful orders proceeds are donated via keysend.
# Donations to the devfund are important for the sustainabilty of the project, however, these are totally optional (you
# can run a coordinator without donating devfund!). Coordinators with higher devfund donations % will be more prominently
@@ -77,21 +103,6 @@ MAKER_FEE_SPLIT=0.125
# Leaving the default value (20%) will grant the DevFund contributor badge.
DEVFUND = 0.2
-# Bond size as percentage (%)
-DEFAULT_BOND_SIZE = 3
-MIN_BOND_SIZE = 1
-MAX_BOND_SIZE = 15
-
-# Time out penalty for canceling takers in SECONDS
-PENALTY_TIMEOUT = 60
-# Time between routing attempts of buyer invoice in MINUTES
-RETRY_TIME = 1
-
-# Store Order Logs in DB. Verbose logging for each order as property of the order object in DB. Useful for debugging and for learning
-# the order flow for new robosats coordinators (prints a pretty timestamped table on the coordinator panel on each order). But a bit heavy
-# on write operations and can potentially affect performance for every request.
-DISABLE_ORDER_LOGS = False
-
# Coordinator activity limits
MAX_PUBLIC_ORDERS = 100
@@ -109,16 +120,6 @@ MAX_MINING_NETWORK_SPEEDUP_EXPECTED = 1.7
EXP_MAKER_BOND_INVOICE = 300
EXP_TAKER_BOND_INVOICE = 200
-# Time a order is public in the book HOURS
-DEFAULT_PUBLIC_ORDER_DURATION = 24
-MAX_PUBLIC_ORDER_DURATION = 24
-MIN_PUBLIC_ORDER_DURATION = 0.166
-
-# Default time to provide a valid invoice and the trade escrow MINUTES
-INVOICE_AND_ESCROW_DURATION = 180
-# Time to confim chat and confirm fiat (time to Fiat Sent confirmation) HOURS
-FIAT_EXCHANGE_DURATION = 24
-
# ROUTING
# Proportional routing fee limit (fraction of total payout: % / 100)
PROPORTIONAL_ROUTING_FEE_LIMIT = 0.001
@@ -136,7 +137,6 @@ ALLOW_SELF_KEYSEND = False
# REVERSE SUBMARINE SWAP PAYOUTS
# Disable on-the-fly swaps feature
DISABLE_ONCHAIN = False
-MAX_SWAP_ALLOWED = 500000
# Shape of fee to available liquidity curve. Either "linear" or "exponential"
SWAP_FEE_SHAPE = 'exponential'
# EXPONENTIAL. fee (%) = MIN_SWAP_FEE + (MAX_SWAP_FEE - MIN_SWAP_FEE) * e ^ (-LAMBDA * onchain_liquidity_fraction)