# Coordinator Alias (Same as longAlias) COORDINATOR_ALIAS="Local Dev" # 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' # LND directory can not be specified, instead 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 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' # Postgresql Database POSTGRES_DB='postgres' POSTGRES_USER='postgres' POSTGRES_PASSWORD='example' 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' # 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' AUTO_UNLOCK_PWD='1234' LND_GRPC_HOST='localhost:10009' REDIS_URL='redis://localhost:6379/1' # 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, https://bitpay.com/rates/BTC, https://criptoya.com/api/btc # Host e.g. robosats.com HOST_NAME = '' HOST_NAME2 = '' I2P_ALIAS = '' I2P_LONG = '' LOCAL_ALIAS = '' # SECURITY WARNING: keep the secret key used in production secret! SECRET_KEY = 'django-insecure-6^&6uw$b5^en%(cu2kc7_o)(mgpazx#j_znwlym0vxfamn2uo-' # e.g. robotestagw3dcxmd66r4rgksb4nmmr43fh77bzn2ia2eucduyeafnyd.onion ONION_LOCATION = '' # Geoblocked countries (will reject F2F trades). # List of A3 country codes (see fhttps://en.wikipedia.org/wiki/ISO_3166-1_alpha-3) # Leave empty '' to allow all countries. # Example 'NOR,USA,CZE'. GEOBLOCKED_COUNTRIES = 'ABW,AFG,AGO' # Link to robosats alternative site (shown in frontend in statsfornerds so users can switch mainnet/testnet) ALTERNATIVE_SITE = 'RoboSats6tkf3eva7x2voqso3a5wcorsnw34jveyxfqi2fu7oyheasid.onion' ALTERNATIVE_NAME = 'RoboSats Mainnet' # Telegram bot token TELEGRAM_TOKEN = '' TELEGRAM_BOT_NAME = 'RoboCoordinatorNotificationBot' # Telegram chat id to receive admin notifications TELEGRAM_COORDINATOR_CHAT_ID = 'AdminNotificationChatId' # 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 = 'none' NOTICE_MESSAGE = '' # Lightning node open info, url to amboss and 1ML NETWORK = 'testnet' NODE_ALIAS = 'šŸ¤–RoboSatsāš”(RoboDevs)' NODE_ID = '033b58d7......' # Total trade fee as fraction FEE = 0.002 # Maker/taker fee split. As seen in https://bisq.wiki/Trading_fees . It is implicit that TAKER_FEE_SPLIT = (1 - MAKER_FEE_SPLIT) # Shall incentivize order making MAKER_FEE_SPLIT=0.125 # 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 # displayed (and have special badges), while coordinators that do not donate might eventually lose frontend/client support. # Leaving the default value (20%) will grant the DevFund contributor badge. DEVFUND = 0.2 # 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 # Coordinator Order size limits in Satoshi # Minimum order size (must be bigger than DB constrain in /robosats/settings.py MIN_TRADE, currently 20_000 Sats) MIN_ORDER_SIZE = 20000 # Minimum order size (must be smaller than DB constrain in /robosats/settings.py MAX_TRADE, currently 5_000_000 Sats) MAX_ORDER_SIZE = 500000 # For CLTV_expiry calculation # Assume 8 min/block assumed BLOCK_TIME = 8 # Safety multiplier in case of mining speed up (CLTV expiry will be times X larger than real time needs for locked bonds/escrow) MAX_MINING_NETWORK_SPEEDUP_EXPECTED = 1.7 # Expiration time for locking collateral in SECONDS EXP_MAKER_BOND_INVOICE = 300 EXP_TAKER_BOND_INVOICE = 200 # ROUTING # Proportional routing fee limit (fraction of total payout: % / 100) PROPORTIONAL_ROUTING_FEE_LIMIT = 0.001 # Base flat limit fee for routing in Sats (used only when proportional is lower than this) MIN_FLAT_ROUTING_FEE_LIMIT = 10 MIN_FLAT_ROUTING_FEE_LIMIT_REWARD = 2 # Routing timeouts REWARDS_TIMEOUT_SECONDS = 30 PAYOUT_TIMEOUT_SECONDS = 90 DEBUG_PERMISSIONED_PAYOUTS = False # Allow self keysend on keysend function (set true to debug keysend functionality) 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) SWAP_LAMBDA = 8.8 # LINEAR. 4 parameters needed: min/max fees and min/max balance points. E.g. If 25% or more of liquidity # is onchain the fee for swap is 2% (minimum), if it is 12% fee is 6%, and for 0% fee is 10%. # Minimum swap fee as fraction (1%) MIN_SWAP_FEE = 0.008 # Liquidity split point (LN/onchain) at which we use MIN_SWAP_FEE MIN_SWAP_POINT = 0.35 # Maximum swap fee as fraction (~10%) MAX_SWAP_FEE = 0.1 # Liquidity split point (LN/onchain) at which we use MAX_SWAP_FEE MAX_SWAP_POINT = 0 # Min and Max amount allowed for Swap MIN_SWAP_AMOUNT = 10000 MAX_SWAP_AMOUNT = 1000000 # Spend Unconfirmed UTXOS (more capital efficient, more risky) SPEND_UNCONFIRMED = False # Mining fee confirmation target SUGGESTED_TARGET_CONF = 4 MINIMUM_TARGET_CONF = 24 # Fraction rewarded to user from the slashed bond of a counterpart. # It should not be close to 1, or could be exploited by an attacker trading with himself to DDOS the LN node. SLASHED_BOND_REWARD_SPLIT = 0.5 # Username for HTLCs escrows ESCROW_USERNAME = 'admin'