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)