######################################################################################################################## # # # Common Configuration Options (CommonConfig, AutoUpdateConfig, MetricsConfig) # # # ######################################################################################################################## [common] #override_from="stagenet" #base_path="/.tari" [stagenet.auto_update] # Customize the hosts that are used to check for updates. These hosts must contain update information in DNS TXT records. update_uris = ["updates.stagenet.taripulse.com"] [auto_update] # Name server for auto update (default = "1.1.1.1:53/cloudflare.net") #name_server = "1.1.1.1:53/cloudflare.net" # Customize the hosts that are used to check for updates. These hosts must contain update information in DNS TXT # records. (default = []) #update_uris = [] #use_dnssec = false #download_base_url = "" # Customize the location of the update SHA hashes and maintainer-signed signature. #hashes_url = "https://
/hashes.txt" #hashes_sig_url = "https://
/hashes.txt.sig" # This interval in seconds to check for software updates. Setting this to 0 disables checking. check_interval = 300 [metrics] # server_bind_address = "127.0.0.1:5577" # push_endpoint = http://localhost:9091/metrics/job/base-node ######################################################################################################################## # # # Peer Seeds Configuration Options (PeerSeedsConfig) # # # ######################################################################################################################## [p2p.seeds] # DNS name servers to use for DNS seeds, in order of preference. # (default: dns_seed_name_servers = [ # "system", # "1.1.1.1:853/cloudflare-dns.com", # "8.8.8.8:853/dns.google", # "9.9.9.9:853/dns.quad9.net" #] #dns_seed_name_servers = [ # "system", # "1.1.1.1:853/cloudflare-dns.com", # "8.8.8.8:853/dns.google", # "9.9.9.9:853/dns.quad9.net" #] # All DNS seed records must pass DNSSEC validation (default: dns_seeds_use_dnssec = false) #dns_seeds_use_dnssec = false [nextnet.p2p.seeds] # DNS seeds hosts - DNS TXT records are queried from these hosts and the resulting peers added to the comms peer list. # (Default: peer_seeds = []) dns_seeds = ["seeds.nextnet.tari.com"] peer_seeds = [ "18a07e52ef6616d74a31b4c26d34fb7debdbe6d8b0261f6fff67e5801da8ee5d::/onion3/6huatttx2xvnhg7pui22rqweegmyjp7mr6wkppqjwrcqgzqqnv2okfad:18141", "928b89d44afcebd5ae305113409f0d0c6237278a6451e19e270245358d945b1e::/ip6/2001:41d0:701:1000::4716/tcp/18189", "0c42312a2bdd7d17b12047b515d36c982e56573cc5e9d6d19cf29210624ec02b::/ip4/148.113.143.145/tcp/18189", "0c42312a2bdd7d17b12047b515d36c982e56573cc5e9d6d19cf29210624ec02b::/onion3/on77pvjtgvpsyrfzzmusvtdknuy6l44av5ifxaeo2hvaarcanccta4qd:18141", "0e99cc89439546d3a59d02fb498d6e1bd7dbeee17c2cecea1966244b8f83b77d::/onion3/kjwvw4tg4pvgqrzaks7atnf7kjesteoxt5wpjd4b6lusezkqxgiktoqd:18141", "928b89d44afcebd5ae305113409f0d0c6237278a6451e19e270245358d945b1e::/ip4/51.75.94.140/tcp/18189", "463cb7d9238a30901b88370dac817da738a722f5fb0d340ab4eb52b747f3e149::/onion3/qugw4hf5zsopghjlrbcm6crggzbozp4tfbu4duadrf55nyb5dijm6pqd:18141", "0e99cc89439546d3a59d02fb498d6e1bd7dbeee17c2cecea1966244b8f83b77d::/ip4/57.128.24.58/tcp/18189", ] [stagenet.p2p.seeds] # DNS seeds hosts - DNS TXT records are queried from these hosts and the resulting peers added to the comms peer list. # (Default: peer_seeds = []) dns_seeds = ["seeds.stagenet.tari.com"] # Custom specified peer seed nodes (Default: peer_seeds = []) #peer_seeds = ["a062ae2345b0db0df9fb1504b99511e23d98f8513f9b5503efcc6dad8eca7e47::/ip4/54.77.66.39/tcp/18189"] [esmeralda.p2p.seeds] # DNS seeds hosts - DNS TXT records are queried from these hosts and the resulting peers added to the comms peer list. # (Default: peer_seeds = []) dns_seeds = ["seeds.esmeralda.tari.com"] # Custom specified peer seed nodes (Default: peer_seeds = []) peer_seeds = [ "1e08628960f75b7e324f010b2ee609a9e28097e9101f4d769d474a38b6ee2d76::/ip4/51.83.102.25/tcp/18189", "1e08628960f75b7e324f010b2ee609a9e28097e9101f4d769d474a38b6ee2d76::/ip6/2001:41d0:303:a619::1/tcp/18189", "1e08628960f75b7e324f010b2ee609a9e28097e9101f4d769d474a38b6ee2d76::/onion3/tadnxyokalnqjtvu6mlhxndcq4v2tlolotpvrflscdmi7lcautao3had:18141", "4cdfb70e0b38b60c6a3573b2870e32bc3d846419c606ea379f43650b80f38409::/ip4/51.83.4.85/tcp/18189", "4cdfb70e0b38b60c6a3573b2870e32bc3d846419c606ea379f43650b80f38409::/ip6/2001:41d0:303:9a55::1/tcp/18189", "4cdfb70e0b38b60c6a3573b2870e32bc3d846419c606ea379f43650b80f38409::/onion3/mhfptgpcj6htjkr5zwurom32wvt7x76ovqzn2ttnwo2bnku6baeaaiyd:18141", ] [igor.p2p.seeds] # DNS seeds hosts - DNS TXT records are queried from these hosts and the resulting peers added to the comms peer list. # (Default: peer_seeds = []) dns_seeds = ["seeds.igor.tari.com"] # Custom specified peer seed nodes (Default: peer_seeds = []) #peer_seeds = ["a062ae2345b0db0df9fb1504b99511e23d98f8513f9b5503efcc6dad8eca7e47::/ip4/54.77.66.39/tcp/18189"] [mainnet.p2p.seeds] # DNS seeds hosts - DNS TXT records are queried from these hosts and the resulting peers added to the comms peer list. # (Default: peer_seeds = []) dns_seeds = ["seeds.tari.com"] # Custom specified peer seed nodes (Default: peer_seeds = []) peer_seeds = [ "44c1ebed4ec5a6b3b325601e83ff3924f89e8943e15c5e82dfffe83754482b26::/ip4/54.36.113.0/tcp/18189", "c00684151e75650c63a5d3e4fd4221ce19c4fbffd1a921caaecf06f8a4a65f0f::/ip4/15.235.48.4/tcp/18189", "02577fd02c9f1fdef52c8de153c17c1af4f29ede2495ee008b334479456e1a5c::/ip4/54.36.117.26/tcp/18189", "8cc21698e3930da90fd8a9663fedf9d4d56d6ecd7dedec07f8b3590e82061503::/ip4/54.36.112.71/tcp/18189", "94a4b29148621479b1c1dffb1a2f5680dcf2c0cfb901152e245d6ec299821f61::/ip4/91.134.83.67/tcp/18189", "1850155828616111f97cc739bf5f3d433d7f07edd477cbf5a3eec0dfe7547c61::/ip4/54.36.117.109/tcp/18189", "5819ba1c9ddc57d8c82d60b6b3e8c1d8dd369c3336c47112b7483f4ca5fef315::/ip4/15.235.44.167/tcp/18189", "d6a0d9c3f75ae3cb4d06e314a5f5dceb9cc7ad34f7e8be4126ee25253b039726::/ip4/15.235.44.135/tcp/18189", "de568a57a62bff39322fff935523c5f670e379783293c88b1c525b776b568d41::/ip4/15.235.49.151/tcp/18189", "fabf65440daa00a8033a7d0c966d68815f17feb6a25bc60c75bc5d4a84c41123::/ip4/15.235.49.169/tcp/18189", "7c8e6530294e8bb7ff45b0f39e8bf8ea4e461b3df15a2df1ba3fa3a9bcc9ef71::/ip4/15.235.224.202/tcp/18189", "ecf3f88c40d0b299cf0d0ff30e7ce8dd5a021c0806b8487426f0de89e4766177::/ip4/141.95.111.150/tcp/18189", "54e491e0d88633170a98898f5d89ccc6b4f7ec22252afc23fe645d5bab453734::/ip4/198.244.203.249/tcp/18189", "54e491e0d88633170a98898f5d89ccc6b4f7ec22252afc23fe645d5bab453734::/ip6/2001:41d0:803:f900::/tcp/18189", "94a4b29148621479b1c1dffb1a2f5680dcf2c0cfb901152e245d6ec299821f61::/ip6/2001:41d0:40d:4300::/tcp/18189", "7c8e6530294e8bb7ff45b0f39e8bf8ea4e461b3df15a2df1ba3fa3a9bcc9ef71::/ip6/2402:1f00:8005:ca00::/tcp/18189", "c00684151e75650c63a5d3e4fd4221ce19c4fbffd1a921caaecf06f8a4a65f0f::/ip6/2607:5300:205:300::d28/tcp/18189", "d6a0d9c3f75ae3cb4d06e314a5f5dceb9cc7ad34f7e8be4126ee25253b039726::/ip6/2607:5300:205:300::afc/tcp/18189", "fabf65440daa00a8033a7d0c966d68815f17feb6a25bc60c75bc5d4a84c41123::/ip6/2607:5300:205:300::5f4/tcp/18189", "02577fd02c9f1fdef52c8de153c17c1af4f29ede2495ee008b334479456e1a5c::/ip6/2001:41d0:701:1000::5bf/tcp/18189", "1850155828616111f97cc739bf5f3d433d7f07edd477cbf5a3eec0dfe7547c61::/ip6/2001:41d0:701:1000::f36/tcp/18189", "5819ba1c9ddc57d8c82d60b6b3e8c1d8dd369c3336c47112b7483f4ca5fef315::/ip6/2607:5300:205:300::196b/tcp/18189", "de568a57a62bff39322fff935523c5f670e379783293c88b1c525b776b568d41::/ip6/2607:5300:205:300::2396/tcp/18189", "ecf3f88c40d0b299cf0d0ff30e7ce8dd5a021c0806b8487426f0de89e4766177::/ip6/2001:41d0:701:1000::3dd/tcp/18189", "44c1ebed4ec5a6b3b325601e83ff3924f89e8943e15c5e82dfffe83754482b26::/ip6/2001:41d0:701:1000::43ca/tcp/18189", "8cc21698e3930da90fd8a9663fedf9d4d56d6ecd7dedec07f8b3590e82061503::/ip6/2001:41d0:701:1000::3e6d/tcp/18189", "02577fd02c9f1fdef52c8de153c17c1af4f29ede2495ee008b334479456e1a5c::/onion3/bukg4svrs4r3hdtx4s2vle6ekipi4v7bshenfwjalymvax7akivyhkyd:18141", "1850155828616111f97cc739bf5f3d433d7f07edd477cbf5a3eec0dfe7547c61::/onion3/miubwm3dbl5uh4ci7jgvq5jeyhr6sora4fivjm5fkjflyt543cqx2kqd:18141", "44c1ebed4ec5a6b3b325601e83ff3924f89e8943e15c5e82dfffe83754482b26::/onion3/kimfu5ch2lwo4wm4y6xgi5kvuqnrobdgiyis2okcc27alf3qavuruxqd:18141", "54e491e0d88633170a98898f5d89ccc6b4f7ec22252afc23fe645d5bab453734::/onion3/b5zgqd6emm6p2zmj7gdniysbxvmtvltrwshsyfxjoq26xqfjoicge5id:18141", "5819ba1c9ddc57d8c82d60b6b3e8c1d8dd369c3336c47112b7483f4ca5fef315::/onion3/f4n5yh62a3aml5y4lrf7xhqjzgqen2r75ubze2aritezw73qk2uzirad:18141", "7c8e6530294e8bb7ff45b0f39e8bf8ea4e461b3df15a2df1ba3fa3a9bcc9ef71::/onion3/5husjyv2zskwjh2wzbuirbq4gk5uiyx4gnn277r3yoxv4oucn72tmeyd:18141", "8cc21698e3930da90fd8a9663fedf9d4d56d6ecd7dedec07f8b3590e82061503::/onion3/yur5nsnkbpfvs4f5h65y652igcqjfv35okchify44kr77evkyfpnleqd:18141", "94a4b29148621479b1c1dffb1a2f5680dcf2c0cfb901152e245d6ec299821f61::/onion3/x4cc7t4z5bhzz2qoj5qkfje6jnisz5gvzixeygvzwgi6sg3rhpo5rlqd:18141", "c00684151e75650c63a5d3e4fd4221ce19c4fbffd1a921caaecf06f8a4a65f0f::/onion3/xfa5ijw7747cmjwkbjx6fhobgy4rgx5uozc3dnp7lif7gw7c3dzg6kad:18141", "d6a0d9c3f75ae3cb4d06e314a5f5dceb9cc7ad34f7e8be4126ee25253b039726::/onion3/kuibpj4742riknkddi4vlrdgklipf6uf5f6b4vdwsklr4iigxrm367qd:18141", "de568a57a62bff39322fff935523c5f670e379783293c88b1c525b776b568d41::/onion3/xwsoa6q4ijugfar22uoggu22wt6ttmtg2egkyo4fs6ptfjtq3kbrulid:18141", "ecf3f88c40d0b299cf0d0ff30e7ce8dd5a021c0806b8487426f0de89e4766177::/onion3/3dcfberbstruf3g2g5slacw2ls3nj6qmad2fxumqop3m65llagnhj6yd:18141", "fabf65440daa00a8033a7d0c966d68815f17feb6a25bc60c75bc5d4a84c41123::/onion3/k7egeg7alhhgr5vbjgatdd6g2rlvy3l6pd3kxvget2q437jqh7q6cuid:18141", ] # Custom specified peer seed nodes (Default: peer_seeds = []) ######################################################################################################################## # # # Base Node Configuration Options (BaseNodeConfig) # # # ######################################################################################################################## # A Minotari base node is core to the network, providing several functions such as propogation, validation and management. # These options configure how the base node operates (e.g. gRPC settings, database type, timeout periods, etc.) # All base node configuration options can be commented out if you do not wish to run a base node. # While users can use remote nodes, running your own base node adds resilience to the network, provides additional security, # and direct access to the blockchain. [igor.base_node] # A path to the file that stores your node identity and secret key (default = "config/base_node_id.json") identity_file = "config/base_node_id_igor.json" [esmeralda.base_node] # A path to the file that stores your node identity and secret key (default = "config/base_node_id.json") identity_file = "config/base_node_id_esmeralda.json" [stagenet.base_node] # A path to the file that stores your node identity and secret key (default = "config/base_node_id.json") identity_file = "config/base_node_id_stagenet.json" [nextnet.base_node] # A path to the file that stores your node identity and secret key (default = "config/base_node_id.json") identity_file = "config/base_node_id_nextnet.json" [base_node] #mining_enabled = false #second_layer_grpc_enabled = false # Set to false to disable the base node GRPC server (default = true) grpc_enabled = true # The socket to expose for the gRPC base node server (default = "http://127.0.0.1:18142") #grpc_address = "/ip4/127.0.0.1/tcp/18142" # gRPC authentication method (default = "none") #grpc_authentication = { username = "admin", password = "xxxx" } # Use gRPC over TLS (default = false) #grpc_tls_enabled = false # Uncomment all gRPC server methods that should be allowed (only active when `grpc_enabled = true`) grpc_server_allow_methods = [ "get_version", #"check_for_updates", #"get_sync_info", #"get_sync_progress", "get_tip_info", "identify", #"get_network_status", "list_headers", #"get_header_by_hash", #"get_blocks", #"get_block_timing", #"get_constants", #"get_block_size", #"get_block_fees", "get_tokens_in_circulation", "get_network_difficulty", "get_new_block_template", "get_new_block", "get_new_block_with_coinbases", "get_new_block_template_with_coinbases", "get_new_block_blob", "submit_block", "submit_block_blob", "submit_transaction", "search_kernels", "search_utxos", "fetch_matching_utxos", #"get_peers", #"get_mempool_transactions", "transaction_state", "list_connected_peers", "get_mempool_stats", "get_active_validator_nodes", "get_validator_node_changes", "get_shard_key", "get_template_registrations", "get_side_chain_utxos", "search_payment_references", "search_payment_references_via_output_hash", ] # A path to the file that stores your node identity and secret key (default = "config/base_node_id.json") #identity_file = "config/base_node_id.json" # Spin up and use a built-in Tor instance, only works on macos/linux and must comment out 'tor.control_address' below. # This requires that the base node was built with the optional "libtor" feature flag. (default = true) #use_libtor = false # A path to the file that stores the tor hidden service private key, if using the tor transport. # (default = "config/tor_id.json") #tor_identity_file = "config/base_node_tor_id.json" # The type of database backend to use. Currently supported options are "memory" and "lmdb". LMDB is recommnded for # almost all use cases. (default = "lmdb") #db_type = "lmdb" # The relative path to store persistent data (default = "data/base_node") #data_dir = "data/base_node" # The relative path to store the lmdb blockchain data (default = "db") #lmdb_path = "db" # The maximum amount of VMs that RandomX will be use (default = 5) #max_randomx_vms = 5 # Bypass range proof verification to speed up validation (default = false) #bypass_range_proof_verification = false # This allowlist provides a method to force syncing from any known nodes you may choose, for example if you have a # couple of nodes that you always want to have in sync. If set this node will only sync to the nodes in this set. # force_sync_peers = ["public_key1::address1", "public_key2::address2",... ] # The maximum amount of seconds wait for remote base node responses for messaging-based requests. #messaging_request_timeout = 60 # The time interval between status line updates in the CLI (default = 5 s) #status_line_interval = 5 # The buffer size constants for the publish/subscribe connector channel, connecting comms messages to the domain layer: # (min value = 30, default value = 1500). #buffer_size = 1500 # Liveness metadata auto ping interval between peers (default = 30 s) #metadata_auto_ping_interval = 30 # Obscure GRPC error responses (default = false) #report_grpc_error = false # Interval between each request to the dns server for hte checkpoints to compare it with the local blockchain (default = 120 s) # tari_pulse_interval = 120 # Interval which the node will use to discover and dial the seed peers. # tari_pulse_health_check = 600 # 10 mins [base_node.lmdb] #init_size_bytes = 16_777_216 # 16 *1024 * 1024 #grow_size_bytes = 16_777_216 # 16 *1024 * 1024 #resize_threshold_bytes = 4_194_304 # 4 *1024 * 1024 [base_node.storage] # The maximum number of orphans that can be stored in the Orphan block pool. #orphan_storage_capacity = 720 # The pruning horizon that is set for a default configuration of the blockchain db. #pruning_horizon = 0 # The chain height interval used to determine when a pruned node should perform pruning. #pruning_interval = 50 # Set to true to record all reorgs. Recorded reorgs can be viewed using the list-reorgs command. Default = false track_reorgs = true # Clean out #cleanup_orphans_at_startup = false [base_node.mempool] # The maximum number of transactions that can be stored in the Unconfirmed Transaction pool #unconfirmed_pool.storage_capacity = 40_000 # The maximum number of transactions that can be skipped when compiling a set of highest priority transactions, # skipping over large transactions are performed in an attempt to fit more transactions into the remaining space. #unconfirmed_pool.weight_tx_skip_count = 20 # The minimum fee accepted by the mempool #unconfirmed_pool.min_fee = 50, # The height horizon to clear transactions from the reorg pool. #reorg_pool.expiry_height = 5 # Number of peers from which to initiate a sync. Once this many peers have successfully synced, this node will # not initiate any more mempool syncs. Default: 2 #service.initial_sync_num_peers = 2 # The maximum number of transactions to sync in a single sync session Default: 10_000 #service.initial_sync_max_transactions = 10_000 # The maximum number of blocks added via sync or re-org to triggering a sync #service.block_sync_trigger = 5 [base_node.state_machine] # The initial max sync latency (seconds). If a peer fails to stream a header/block within this deadline another sync # peer will be selected. If there are no further peers the sync will be restarted with an increased by # `max_latency_increase`. [default = 240] blockchain_sync_config.initial_max_sync_latency = 240 # If all sync peers exceed latency increase allowed latency by this value (seconds) [default = 10] blockchain_sync_config.max_latency_increase = 10 # Longer ban period (seconds) for potentially malicious infractions (protocol violations etc.) [default = 2 hours] #blockchain_sync_config.ban_period = 7_200 # 2 * 60 * 60 # Short ban period (seconds) for infractions that are likely not malicious (slow to respond spotty connections etc) # [default = 4 minutes] #blockchain_sync_config.short_ban_period = 240 # An allowlist of sync peers from which to sync. No other peers will be selected for sync. If empty sync peers # are chosen based on their advertised chain metadata. [default = []] #blockchain_sync_config.forced_sync_peers = [] # Number of threads to use for validation [default = 6] #blockchain_sync_config.validation_concurrency = 6 # The RPC deadline to set on sync clients. If this deadline is reached, a new sync peer will be selected for sync. # [default = 240] blockchain_sync_config.rpc_deadline = 240 # The maximum amount of VMs that RandomX will be use (default = 0) #max_randomx_vms = 0 # The amount of blocks this node can be behind a peer before considered to be lagging (to test the block # propagation by delaying lagging, but also to give it time to receive the block via propagation, which is more network # efficient) # Note that time_before_considered_lagging will override this setting if the node sees a stronger chain for longer than # that configured time. # (default = 1) #blocks_behind_before_considered_lagging = 1 # The amount of time this node can know about a stronger chain before considered to be lagging. # This is to give a node time to receive the block via propagation, which is usually less network # intensive. Be careful of setting this higher than the block time, which would potentially cause it # to always be behind the network (default = 10) (in seconds) #time_before_considered_lagging = 10 #This is the amount of metadata events that a node will wait for before decide to start syncing for a peer, choosing the best peer out of the list #initial_sync_peer_count = 5, [base_node.p2p] # The node's publicly-accessible hostname. This is the host name that is advertised on the network so that # peers can find you. # _NOTE_: If using the `tor` transport type, public_addresses will be ignored and an onion address will be # automatically configured #public_addresses = ["/ip4/172.2.3.4/tcp/18189",] # Optionally bind an additional TCP socket for inbound Tari P2P protocol commms. # Use cases include: # - allowing wallets to locally connect to their base node, rather than through tor, when used in conjunction with # `tor_proxy_bypass_addresses` # - multiple P2P addresses, one public over DNS and one private over TOR # - a "bridge" between TOR and TCP-only nodes # auxiliary_tcp_listener_address = "/ip4/127.0.0.1/tcp/9998" # Path to the SQLite databasse (relative to data_dir) used for the peer database. #datastore_path = "peer_db" # Name to use for the peer database #peer_database_name = "peers" # The maximum number of concurrent Inbound tasks allowed before back-pressure is applied to peers #max_concurrent_inbound_tasks = 100 # The maximum number of concurrent outbound tasks allowed before back-pressure is applied to outbound messaging queue #max_concurrent_outbound_tasks = 100 # Set to true to allow peers to provide test addresses (loopback, memory etc.). If set to false, memory # addresses, loopback, local-link (i.e addresses used in local tests) will not be accepted from peers. This # should always be false for non-test nodes. #allow_test_addresses = false # CIDR for addresses allowed to enter into liveness check mode on the listener. #listener_liveness_allowlist_cidrs = [] # Enables periodic socket-level liveness checks. Default: Disabled listener_self_liveness_check_interval = 15 # The maximum simultaneous comms RPC sessions allowed (default value = 100). Setting this to -1 will allow unlimited # sessions. #rpc_max_simultaneous_sessions = 100 # The maximum comms RPC sessions allowed per peer (default value = 10). #rpc_max_sessions_per_peer = 10 # If true, and the maximum per peer RPC sessions is reached, the RPC server will close an old session and replace it # with a new session. If false, the RPC server will reject the new session and preserve the older session. # (default value = true). #pub cull_oldest_peer_rpc_connection_on_full = true [base_node.p2p.transport] # -------------- Transport configuration -------------- # Use TCP to connect to the Tari network. This transport can only communicate with TCP/IP addresses, so peers with # e.g. tor onion addresses will not be contactable. (default = "tor") #type = "tor" # The address and port to listen for peer connections over TCP. (use: type = "tcp") #tcp.listener_address = "/ip4/0.0.0.0/tcp/18189" # Configures a tor proxy used to connect to onion addresses. All other traffic uses direct TCP connections. # This setting is optional however, if it is not specified, this node will not be able to connect to nodes that # only advertise an onion address. (default = ) #tcp.tor_socks_address = # Optional tor SOCKS proxy authentication (default = "none") #tcp.tor_socks_auth = "none" # Configures the node to run over a tor hidden service using the Tor proxy. This transport recognises ip/tcp, # onion v2, onion v3 and dns addresses. (use: type = "tor") # Address of the tor control server #tor.control_address = "/ip4/127.0.0.1/tcp/9051" # SOCKS proxy auth (default = "none") #tor.socks_auth = "none" # Use this socks address instead of getting it from the tor proxy. (default = ) #tor.socks_address_override = # Authentication to use for the tor control server (default = "auto") #tor.control_auth = "auto" # or "password=xxxxxx" # The onion port to use. #tor.onion_port = 18141 # When these peer addresses are encountered when dialing another peer, the tor proxy is bypassed and the connection is # made directly over TCP. /ip4, /ip6, /dns, /dns4 and /dns6 are supported. (e.g. ["/dns4/my-foo-base-node/tcp/9998"]) #tor.proxy_bypass_addresses = [] # When using the tor transport and set to true, outbound TCP connections bypass the tor proxy. Defaults to 'true' for # better network performance for TCP nodes; set it to 'false' for better privacy. #tor.proxy_bypass_for_outbound_tcp = true # If set, instructs tor to forward traffic the provided address. (e.g. "/dns4/my-base-node/tcp/32123") (default = OS-assigned port) #tor.forward_address = # If set, the listener will bind to this address instead of the forward_address. You need to make sure that this listener is connectable from the forward_address. #tor.listener_address_override = # Use a SOCKS5 proxy transport. This transport recognises any addresses supported by the proxy. # (use: type = "socks5") # The address of the SOCKS5 proxy. Traffic will be forwarded to tcp.listener_address. # (Default = "/ip4/127.0.0.1/tcp/8080") #socks.proxy_address = "/ip4/127.0.0.1/tcp/9050" # SOCKS proxy auth (Default = "none", or assign "username_password=username:xxxxxxx") #socks.auth = "none" # Use a Memory proxy transport. (use: type = "memory") #memory.listener_address = "/memory/0" [base_node.p2p.dht] # The `DbConnectionUrl` for the Dht database. Default: In-memory database database_url = "data/base_node/dht.db" # The maximum number of peer nodes that a message has to be closer to, to be considered a neighbour. Default: 8 #num_neighbouring_nodes = 6 # Number of random peers to include. Default: 4 #num_random_nodes = 6 # Connections above the configured number of neighbouring and random nodes will be removed (default: false) #minimize_connections = false # Send to this many peers when using the broadcast strategy. Default: 8 #broadcast_factor = 8 # Send to this many peers when using the propagate strategy. Default: 4 #propagation_factor = 4 # The amount of time added to the current time will be used to check if the message has expired or not. Default: 3 hours #saf.msg_validity = 10_800 # 3 * 60 * 60 // 3 hours # The maximum number of messages that can be stored using the Store-and-forward middleware. Default: 100,000 #saf.msg_storage_capacity = 100_000 # A request to retrieve stored messages will be ignored if the requesting node is not within one of this nodes _n_ # closest nodes. Default 10 #saf.num_closest_nodes = 10 # The maximum number of messages to return from a store and forward retrieval request. Default: 100 #saf.max_returned_messages = 50 # The time-to-live duration used for storage of low priority messages by the Store-and-forward middleware. # Default: 6 hours #saf.low_priority_msg_storage_ttl = 21_600 # 6 * 60 * 60 // 6 hours # The time-to-live duration used for storage of high priority messages by the Store-and-forward middleware. # Default: 3 days #saf.high_priority_msg_storage_ttl = 259_200 # 3 * 24 * 60 * 60 // 3 days # The limit on the message size to store in SAF storage in bytes. Default 500 KiB #saf.max_message_size = 524_288 # 512 * 1024 # When true, store and forward messages are requested from peers on connect (Default: true) #saf.auto_request = true # The maximum allowed time between asking for a message and accepting a response #saf.max_inflight_request_age = 120 # The maximum number of peer nodes that a message must be closer than to get stored by SAF. Default: 8 #saf.num_neighbouring_nodes = 8 # The max capacity of the message hash cache. Default: 2,500 #dedup_cache_capacity = 2_500 # The periodic trim interval for items in the message hash cache. Default: 300s (5 mins) #dedup_cache_trim_interval = 300 # 5 * 60 # The number of occurrences of a message is allowed to pass through the DHT pipeline before being deduped/discarded # Default: 1 #dedup_allowed_message_occurrences = 1 # The duration to wait for a peer discovery to complete before giving up. Default: 2 minutes #discovery_request_timeout = 120 # 2 * 60 # Set to true to automatically broadcast a join message when ready, otherwise false. Default: false #auto_join = true # The minimum time between sending a Join message to the network. Joins are only sent when the node establishes # enough connections to the network as determined by comms ConnectivityManager. If a join was sent and then state # change happens again after this period, another join will be sent. Default: 10 minutes #join_cooldown_interval = 120 # 10 * 60 # The interval to update the neighbouring and random pools, if necessary. Default: 2 minutes #connectivity.update_interval = 120 # 2 * 60 # The interval to change the random pool peers. Default = 2 hours #connectivity.random_pool_refresh_interval = 7_200 # 2 * 60 * 60 # Length of cooldown when high connection failure rates are encountered. Default: 45s #connectivity.high_failure_rate_cooldown = 45 # The minimum desired ratio of TCPv4 to Tor connections. TCPv4 addresses have some significant cost to create, # making sybil attacks costly. This setting does not guarantee this ratio is maintained. # Currently, it only emits a warning if the ratio is below this setting. Default: 0.1 (10%) #connectivity.minimum_desired_tcpv4_node_ratio = 0.1 # True to enable network discovery, false to disable it. Default: true #network_discovery.enabled = true # A threshold for the minimum number of peers this node should ideally be aware of. If below this threshold a # more "aggressive" strategy is employed. Default: 50 #network_discovery.min_desired_peers = 50 # The period to wait once the number of rounds given by `idle_after_num_rounds` has completed. Default: 30 mins #network_discovery.idle_period = 1_800 # 30 * 60 # The minimum number of network discovery rounds to perform before idling (going to sleep). If there are less # than `min_desired_peers` then the actual number of rounds performed will exceed this value. Default: 10 #network_discovery.idle_after_num_rounds = 10 # Time to idle after a failed round. Default: 5 secs #network_discovery.on_failure_idle_period = 5 # The maximum number of sync peer to select for each round. The selection strategy varies depending on the current state. # Default: 5 #network_discovery.max_sync_peers = 5 # The maximum number of peers we allow per round of sync. (Default: 500) #network_discovery.max_peers_to_sync_per_round = 500 # Initial refresh sync peers delay period, when a configured connection needs preference. (Default: Disabled) #network_discovery.initial_peer_sync_delay = 0 # Length of time to ban a peer if the peer misbehaves at the DHT-level. Default: 6 hrs #ban_duration = 21_600 # 6 * 60 * 60 # Length of time to ban a peer for a "short" duration. Default: 60 mins #ban_duration_short = 3_600 # 60 * 60 # The maximum number of messages over `flood_ban_timespan` to allow before banning the peer (for `ban_duration_short`) # Default: 100_000 messages #flood_ban_max_msg_count = 100_000 # The timespan over which to calculate the max message rate. # `flood_ban_max_count / flood_ban_timespan (as seconds) = avg. messages per second over the timespan` # Default: 100 seconds #flood_ban_timespan = 100 # Once a peer has been marked as offline, wait at least this length of time before reconsidering them. # In a situation where a node is not well-connected and many nodes are locally marked as offline, we can retry # peers that were previously tried. Default: 2 hours #offline_peer_cooldown = 7_200 # 2 * 60 * 60 # Addresses that should never be dialed (default value = []). This can be a specific address or an IPv4/TCP range. # Example: When used in conjunction with `allow_test_addresses = true` (but it could be any other range) # `excluded_dial_addresses = ["/ip4/127.*.0:49.*/tcp/*", "/ip4/127.*.101:255.*/tcp/*"]` # or # `excluded_dial_addresses = ["/ip4/127.0:0.1/tcp/122", "/ip4/127.0:0.1/tcp/1000:2000"]` excluded_dial_addresses = [] # Enables the DHT to forward messages to other nodes in the network - communication nodes only (Default: false) #enable_forwarding = false # setting this to some version will reject peers that dont meet the min version or the agent string in the correct string. # peer string should match X/X/X/X/{VERSION} where the last segment is the version in semer versioning scheme #peer_validator_config.min_peer_version = "" # Wallet Query HTTP service details # `external_address` is optional, but if not set, then wallet wont be able to call our endpoint. # This address must be accessible by the wallet (on a global scale over the internet). [base_node.http_wallet_query_service] #port = 9000 #external_address = "http://127.0.0.1:9000" ######################################################################################################################## # # # Wallet Configuration Options (WalletConfig) # # # ######################################################################################################################## [wallet] # The buffer size constants for the publish/subscribe connector channel, connecting comms messages to the domain layer: # (min value = 300, default value = 50000). #buffer_size = 50000 # The relative path to store persistent data (default = "data/wallet") #data_dir = "data/wallet" # The relative folder to store your local key data and transaction history. (default = "db/console_wallet.db") # DO NOT EVER DELETE THIS FILE unless you (a) have backed up your seed phrase and (b) know what you are doing! #db_file = "db/console_wallet.db" # The main wallet db sqlite database backend connection pool size for concurrent reads (default = 16) #db_connection_pool_size = 16 # Console wallet password. Should you wish to start your console wallet without typing in your password, the following # options are available: # 1. Start the console wallet with the --password=secret argument, or # 2. Set the environment variable MINOTARI_WALLET_PASSWORD=secret before starting the console wallet, or # 3. Set the "password" key in this [wallet] section of the config # (default = ) #password = "secret" # The auto ping interval to use for contacts liveness data (default = 30 s) #contacts_auto_ping_interval = 30 # How long a contact may be not seen before being determined to be offline (default = 30 s) #contacts_online_ping_window = 30 # When running the console wallet in command mode, use these values to determine what "stage" and timeout to wait # for sent transactions. # The stages are: # - "DirectSendOrSaf" - The transaction was initiated and was accepted via Direct Send or Store And Forward. # - "Negotiated" - The recipient replied and the transaction was negotiated. # - "Broadcast" - The transaction was broadcast to the base node mempool. # - "MinedUnconfirmed" - The transaction was successfully detected as mined but unconfirmed on the blockchain. # - "Mined" - The transaction was successfully detected as mined and confirmed on the blockchain. # The default values are: "Broadcast", 300 #command_send_wait_timeout = 300 #command_send_wait_stage = "Broadcast" # Wallets currently will choose the best outputs as inputs when spending, however since a lurking base node can # generate a transaction graph of inputs to outputs with relative ease, a wallet may reveal its transaction # history by including a (non-stealth address) one-sided payment. # If set to `true`, then outputs received via simple one-sided transactions, won't be automatically selected as # further transactions, but can still be selected individually as specific outputs. #autoignore_onesided_utxos = false # Set to true to enable grpc. (default = false) #grpc_enabled = false # The socket to expose for the gRPC base node server (default = "http://127.0.0.1:18143") #grpc_address = "/ip4/127.0.0.1/tcp/18143" # gRPC authentication method (default = "none") #grpc_authentication = { username = "admin", password = "xxxx" } # A custom base node peer that will be used to obtain metadata from, example # "0eefb45a4de9484eca74846a4f47d2c8d38e76be1fec63b0112bd00d297c0928::/ip4/13.40.98.39/tcp/18189" # (default = ) #custom_base_node = "none" # A list of base node peers that the wallet should use for service requests and tracking chain state in the form # ["public_key::net_address", ...] (default = []) #base_node_service_peers = [] # The amount of times wallet recovery will be retried before being abandoned (default = 3) #recovery_retry_limit = 3 # The default uT fee per gram to use for transaction fees (default = 5) #fee_per_gram = 5 # Number of required transaction confirmations used for UI purposes (default = 3) #num_required_confirmations = 3 # Spin up and use a built-in Tor instance, only works on macos/linux and must comment out 'tor.control_address' below. # This requires that the base node was built with the optional "libtor" feature flag. (default = true) #use_libtor = false # A path to the file that stores your node identity and secret key (default = "none") #identity_file = "none" # Notification script file for a notifier service. Allows you to execute a script or program when these transaction # events are received by the console wallet (default = "none"): # - transaction received # - transaction sent # - transaction cancelled # - transaction mined but unconfirmed # - transaction mined and confirmed # An example script is available here: applications/minotari_console_wallet/src/notifier/notify_example.sh #notify_file = "/path/to/script" # The cool down period between balance enquiry checks in seconds; requests faster than this will be ignored. # For specialized wallets processing many batch transactions this setting could be increased to 60 s to retain # responsiveness of the wallet with slightly delayed balance updates (default = 5): #balance_enquiry_cooldown_period = 5 #The defaul offset for scanning from the birthday, it will start at the birthday - the offset #birthday_offset = 2 #The scanning interval in secs to poll the base node for new blocks #scanning_interval = 60 # The URL of the HTTP client to use for base node service requests #http_server_url="http://127.0.0.1:9000" # The fallback url address to use if the base node at http_server_url does not respond #fallback_http_server_url = "https://rpc.esmeralda.tari.com" [wallet.transactions] # This is the timeout period that will be used for base node broadcast monitoring tasks (default = 30) broadcast_monitoring_timeout = 180 # This is the timeout period that will be used for chain monitoring tasks (default = 60) chain_monitoring_timeout = 60 # This is the timeout period that will be used for sending transactions directly (default = 20) direct_send_timeout = 180 # This is the timeout period that will be used for sending transactions via broadcast mode (default = 60) broadcast_send_timeout = 180 # This is the timeout period that will be used for low power moded polling tasks (default = 300) #low_power_polling_timeout = 300 # This is the timeout period that will be used to resend transactions that did not make any progress (default = 600) #transaction_resend_period = 600 # This is the timeout period that will be used to ignore repeated transactions (default = 300) #resend_response_cooldown = 300 # This is the timeout period that will be used to expire pending transactions (default = 259200) #pending_transaction_cancellation_timeout = 259200 # 3 days # This is the number of block confirmations required for a transaction to be considered completely mined and # confirmed. (default = 3) #num_confirmations_required = 3 # The number of batches the unconfirmed transactions will be divided into before being queried from the base node # (default = 20) #max_tx_query_batch_size = 20 # This option specifies the transaction routing mechanism as being directly between wallets, making # use of store and forward or using any combination of these. # (options: "DirectOnly", "StoreAndForwardOnly", DirectAndStoreAndForward". default: "DirectAndStoreAndForward"). #transaction_routing_mechanism = "DirectAndStoreAndForward" # This is the size of the event channel used to communicate transaction status events to the wallet's UI. A busy console # wallet doing thousands of bulk payments or used for stress testing needs a fairly big size (>10000) (default = 1000). transaction_event_channel_size = 25000 # This is the timeout period that will be used to re-submit transactions not found in the mempool (default = 600) #transaction_mempool_resubmission_window = 600 [wallet.outputs] # If a large amount of tiny valued uT UTXOs are used as inputs to a transaction, the fee may be larger than the # transaction amount. Set this value to `false` to allow spending of "dust" UTXOs for small valued transactions # (default = true). prevent_fee_gt_amount = false # Ignores dust below this value, value in micro MinoTari, defaults to 100 # dust_ignore_value: 100, # This is the size of the event channel used to communicate output manager events to the wallet. A busy console # wallet doing thousands of bulk payments or used for stress testing needs a fairly big size (>3000) (default = 250). event_channel_size = 3500 # The number of confirmations (difference between tip height and mined height) required for the output to be marked as # mined confirmed (default = 3) #num_confirmations_required = 3 # The number of batches the unconfirmed outputs will be divided into before being queried from the base node # (default = 100) #tx_validator_batch_size = 100 # Number of seconds that have to pass for the wallet to run revalidation of invalid UTXOs on startup. # If you set it to zero, the revalidation will be on every wallet rerun. Default is 3 days. #num_of_seconds_to_revalidate_invalid_utxos = 259200 [wallet.base_node] # Configuration for the wallet's base node service # The refresh interval #base_node_monitor_max_refresh_interval = 30 # The RPC client pool size (default = 5) #base_node_rpc_pool_size = 5 # This is the size of the event channel used to communicate base node events to the wallet. (default = 250). #event_channel_size = 250 [wallet.p2p] # The node's publicly-accessible hostname. This is the host name that is advertised on the network so that # peers can find you. # _NOTE_: If using the `tor` transport type, public_address will be ignored and an onion address will be # automatically configured #public_addresses = ["/ip4/172.2.3.4/tcp/18188",] # Optionally bind an additional TCP socket for inbound Tari P2P protocol commms. # Use cases include: # - allowing wallets to locally connect to their base node, rather than through tor, when used in conjunction with # `tor_proxy_bypass_addresses` # - multiple P2P addresses, one public over DNS and one private over TOR # - a "bridge" between TOR and TCP-only nodes #auxiliary_tcp_listener_address = "/ip4/127.0.0.1/tcp/9998" # Path to the SQLite databasse (relative to data_dir) used for the peer database. #datastore_path = "peer_db" # Name to use for the peer database #peer_database_name = "peers" # The maximum number of concurrent Inbound tasks allowed before back-pressure is applied to peers #max_concurrent_inbound_tasks = 100 # The maximum number of concurrent outbound tasks allowed before back-pressure is applied to outbound messaging queue #max_concurrent_outbound_tasks = 100 # Set to true to allow peers to provide test addresses (loopback, memory etc.). If set to false, memory # addresses, loopback, local-link (i.e addresses used in local tests) will not be accepted from peers. This # should always be false for non-test nodes. #allow_test_addresses = false # CIDR for addresses allowed to enter into liveness check mode on the listener. #listener_liveness_allowlist_cidrs = [] # Enables periodic socket-level liveness checks. Default: Disabled # listener_self_liveness_check_interval = 15 # User agent string for this node #user_agent = "" # The maximum simultaneous comms RPC sessions allowed (default value = 100). Setting this to -1 will allow unlimited # sessions. #rpc_max_simultaneous_sessions = 100 # The maximum comms RPC sessions allowed per peer (default value = 10). #rpc_max_sessions_per_peer = 10 #rpc_max_sessions_per_peer = 10 # If true, and the maximum per peer RPC sessions is reached, the RPC server will close an old session and replace it # with a new session. If false, the RPC server will reject the new session and preserve the older session. # (default value = true). #pub cull_oldest_peer_rpc_connection_on_full = true [wallet.p2p.transport] # -------------- Transport configuration -------------- # Use TCP to connect to the Tari network. This transport can only communicate with TCP/IP addresses, so peers with # e.g. tor onion addresses will not be contactable. (default = "tor") #type = "tor" # The address and port to listen for peer connections over TCP. (use: type = "tcp") #tcp.listener_address = "/ip4/0.0.0.0/tcp/18189" # Configures a tor proxy used to connect to onion addresses. All other traffic uses direct TCP connections. # This setting is optional however, if it is not specified, this node will not be able to connect to nodes that # only advertise an onion address. (default = ) #tcp.tor_socks_address = # Optional tor SOCKS proxy authentication (default = "none") #tcp.tor_socks_auth = "none" # Configures the node to run over a tor hidden service using the Tor proxy. This transport recognises ip/tcp, # onion v2, onion v3 and dns addresses. (use: type = "tor") # Address of the tor control server #tor.control_address = "/ip4/127.0.0.1/tcp/9051" # SOCKS proxy auth (default = "none") #tor.socks_auth = "none" # Use this socks address instead of getting it from the tor proxy. (default = ) #tor.socks_address_override = # Authentication to use for the tor control server (default = "auto") #tor.control_auth = "auto" # or "password=xxxxxx" # The onion port to use. #tor.onion_port = 18141 # When these peer addresses are encountered when dialing another peer, the tor proxy is bypassed and the connection is # made directly over TCP. /ip4, /ip6, /dns, /dns4 and /dns6 are supported. (e.g. ["/dns4/my-foo-base-node/tcp/9998"]) #tor.proxy_bypass_addresses = [] # When using the tor transport and set to true, outbound TCP connections bypass the tor proxy. Defaults to 'true' for # better network performance for TCP nodes; set it to 'false' for better privacy. #tor.proxy_bypass_for_outbound_tcp = true # If set, instructs tor to forward traffic the provided address. (e.g. "/ip4/127.0.0.1/tcp/0") (default = ) #tor.forward_address = # Use a SOCKS5 proxy transport. This transport recognises any addresses supported by the proxy. # (use: type = "socks5") # The address of the SOCKS5 proxy. Traffic will be forwarded to tcp.listener_address. # (Default = "/ip4/127.0.0.1/tcp/8080") #socks.proxy_address = "/ip4/127.0.0.1/tcp/9050" # SOCKS proxy auth (Default = "none", or assign "username_password=username:xxxxxxx") #socks.auth = "none" # Use a Memory proxy transport. (use: type = "memory") #memory.listener_address = "/memory/0" [wallet.p2p.dht] # The `DbConnectionUrl` for the Dht database. Default: In-memory database database_url = "data/wallet/dht.db" # The maximum number of peer nodes that a message has to be closer to, to be considered a neighbour. Default: 8 num_neighbouring_nodes = 5 # Number of random peers to include. Default: 4 num_random_nodes = 1 # Connections above the configured number of neighbouring and random nodes will be removed (default: false) minimize_connections = true # Send to this many peers when using the broadcast strategy. Default: 8 #broadcast_factor = 8 # Send to this many peers when using the propagate strategy. Default: 4 #propagation_factor = 4 # The amount of time added to the current time will be used to check if the message has expired or not. Default: 3 hours #saf.msg_validity = 10_800 # 3 * 60 * 60 // 3 hours # The maximum number of messages that can be stored using the Store-and-forward middleware. Default: 100,000 #saf.msg_storage_capacity = 100_000 # A request to retrieve stored messages will be ignored if the requesting node is not within one of this nodes _n_ # closest nodes. Default 10 #saf.num_closest_nodes = 10 # The maximum number of messages to return from a store and forward retrieval request. Default: 100 #saf.max_returned_messages = 50 # The time-to-live duration used for storage of low priority messages by the Store-and-forward middleware. # Default: 6 hours #saf.low_priority_msg_storage_ttl = 21_600 # 6 * 60 * 60 // 6 hours # The time-to-live duration used for storage of high priority messages by the Store-and-forward middleware. # Default: 3 days #saf.high_priority_msg_storage_ttl = 259_200 # 3 * 24 * 60 * 60 // 3 days # The limit on the message size to store in SAF storage in bytes. Default 500 KiB #saf.max_message_size = 524_288 # 512 * 1024 # When true, store and forward messages are requested from peers on connect (Default: true) #saf.auto_request = true # The maximum allowed time between asking for a message and accepting a response #saf.max_inflight_request_age = 120 # The maximum number of peer nodes that a message must be closer than to get stored by SAF. Default: 8 #saf.num_neighbouring_nodes = 8 # The max capacity of the message hash cache. Default: 2,500 #dedup_cache_capacity = 2_500 # The periodic trim interval for items in the message hash cache. Default: 300s (5 mins) #dedup_cache_trim_interval = 300 # 5 * 60 # The number of occurrences of a message is allowed to pass through the DHT pipeline before being deduped/discarded # Default: 1 #dedup_allowed_message_occurrences = 1 # The duration to wait for a peer discovery to complete before giving up. Default: 2 minutes #discovery_request_timeout = 120 # 2 * 60 # Set to true to automatically broadcast a join message when ready, otherwise false. Default: false #auto_join = true # The minimum time between sending a Join message to the network. Joins are only sent when the node establishes # enough connections to the network as determined by comms ConnectivityManager. If a join was sent and then state # change happens again after this period, another join will be sent. Default: 10 minutes #join_cooldown_interval = 120 # 10 * 60 # The interval to update the neighbouring and random pools, if necessary. Default: 2 minutes connectivity.update_interval = 300 # 2 * 60 # The interval to change the random pool peers. Default = 2 hours #connectivity.random_pool_refresh_interval = 7_200 # 2 * 60 * 60 # Length of cooldown when high connection failure rates are encountered. Default: 45s #connectivity.high_failure_rate_cooldown = 45 # The minimum desired ratio of TCPv4 to Tor connections. TCPv4 addresses have some significant cost to create, # making sybil attacks costly. This setting does not guarantee this ratio is maintained. # Currently, it only emits a warning if the ratio is below this setting. Default: 0.1 (10%) connectivity.minimum_desired_tcpv4_node_ratio = 0.0 # True to enable network discovery, false to disable it. Default: true #network_discovery.enabled = true # A threshold for the minimum number of peers this node should ideally be aware of. If below this threshold a # more "aggressive" strategy is employed. Default: 50 network_discovery.min_desired_peers = 16 # The period to wait once the number of rounds given by `idle_after_num_rounds` has completed. Default: 30 mins #network_discovery.idle_period = 1_800 # 30 * 60 # The minimum number of network discovery rounds to perform before idling (going to sleep). If there are less # than `min_desired_peers` then the actual number of rounds performed will exceed this value. Default: 10 #network_discovery.idle_after_num_rounds = 10 # Time to idle after a failed round. Default: 5 secs #network_discovery.on_failure_idle_period = 5 # The maximum number of sync peer to select for each round. The selection strategy varies depending on the current state. # Default: 5 #network_discovery.max_sync_peers = 5 # The maximum number of peers we allow per round of sync. (Default: 500) #network_discovery.max_peers_to_sync_per_round = 500 # Initial refresh sync peers delay period, when a configured connection needs preference. (Default: Disabled) network_discovery.initial_peer_sync_delay = 25 # Length of time to ban a peer if the peer misbehaves at the DHT-level. Default: 6 hrs ban_duration = 120 # 2 mins # Length of time to ban a peer for a "short" duration. Default: 60 mins ban_duration_short = 60 # 1 min # The maximum number of messages over `flood_ban_timespan` to allow before banning the peer (for `ban_duration_short`) # Default: 100_000 messages #flood_ban_max_msg_count = 100_000 # The timespan over which to calculate the max message rate. # `flood_ban_max_count / flood_ban_timespan (as seconds) = avg. messages per second over the timespan` # Default: 100 seconds #flood_ban_timespan = 100 # Once a peer has been marked as offline, wait at least this length of time before reconsidering them. # In a situation where a node is not well-connected and many nodes are locally marked as offline, we can retry # peers that were previously tried. Default: 2 hours #offline_peer_cooldown = 7_200 # 2 * 60 * 60 # Addresses that should never be dialed (default value = []). This can be a specific address or an IPv4/TCP range. # Example: When used in conjunction with `allow_test_addresses = true` (but it could be any other range) # `excluded_dial_addresses = ["/ip4/127.*.0:49.*/tcp/*", "/ip4/127.*.101:255.*/tcp/*"]` # or # `excluded_dial_addresses = ["/ip4/127.0:0.1/tcp/122", "/ip4/127.0:0.1/tcp/1000:2000"]` excluded_dial_addresses = [] # Enables the DHT to forward messages to other nodes in the network - communication nodes only (Default: false) #enable_forwarding = false # setting this to some version will reject peers that dont meet the min version or the agent string in the correct string. # peer string should match X/X/X/X/{VERSION} where the last segment is the version in semer versioning scheme #peer_validator_config.min_peer_version = "" ######################################################################################################################## # # # Miner Configuration Options (MinerConfig) # # # ######################################################################################################################## [miner] # GRPC address of base node (default = "http://127.0.0.1:18142") base_node_grpc_address = "http://127.0.0.1:18142" # GRPC authentication for the base node (default = "none") #base_node_grpc_authentication = { username = "miner", password = "xxxx" } # GRPC TLS communication is turned on by defining the domain name for the service (default = "none") #base_node_grpc_tls_domain_name = "localhost" # Number of mining threads (default: number of logical CPU cores) num_mining_threads = 1 # Start mining only when base node is bootstrapped and current block height is on the tip of network (default = true) #mine_on_tip_only = true # Will check tip with node every N seconds and restart mining if height already taken and option `mine_on_tip_only` is # set to true (default = 30 s) #validate_tip_timeout_sec = 30 # Stratum Mode configuration - mining pool address (e.g. "miningcore.tari.com:3052") #mining_pool_address = "miningcore.tari.com:3052" # Stratum Mode configuration - mining wallet address/public key # (e.g. "20B19870ABEE8ABC6ACC77AE4E6CA169057645B27C35334B74446B4D3EE52150") #stratum_mining_wallet_address = "f2HRDbEBUJKBJVWtGneP7pDng7u3VTpgjAqDB1YywgCgx8ff5yUWzke2Do6gpvBbFn4MDTY7nwTpyB8Paor85zAjUYi" # Stratum Mode configuration - mining worker name (e.g. "worker1") (default = "") #stratum_mining_worker_name = "worker1" # The extra data to store in the coinbase, usually some data about the mining pool. # Note that this data is publicly readable, but it is suggested you populate it so that # pool dominance can be seen before any one party has more than 51%. #coinbase_extra = "minotari_miner" # Base node reconnect timeout after any GRPC or miner error (default: 10 s) #wait_timeout_on_error = 10 # The Tari wallet address (valid address in hex) where the mining funds will be sent to - must be assigned # e.g. "78e724f466d202abdee0f23c261289074e4a2fc9eb61e83e0179eead76ce2d3f17" wallet_payment_address = "f2HRDbEBUJKBJVWtGneP7pDng7u3VTpgjAqDB1YywgCgx8ff5yUWzke2Do6gpvBbFn4MDTY7nwTpyB8Paor85zAjUYi" # Range proof type - revealed_value or bullet_proof_plus: (default = "revealed_value") #range_proof_type = "revealed_value" # The mining algorithm to use - options are Sha3x or RandomXT (the Tari version of RandomX). (default = "Sha3X") #proof_of_work_algo = "Sha3X" ######################################################################################################################## # # # Merge Mining Configuration Options (MergeMiningProxyConfig) # # # ######################################################################################################################## [merge_mining_proxy] # Use dynamic monerod URL obtained form the official Monero website (https://monero.fail/) (default: true) #use_dynamic_fail_data = true # The monero fail URL to get the monerod URLs from - must be pointing to the official Monero website. # Valid alternatives are: # - mainnet: 'https://monero.fail/?chain=monero&network=mainnet&all=true' (default) # - stagenet: `https://monero.fail/?chain=monero&network=stagenet&all=true` # - testnet: `https://monero.fail/?chain=monero&network=testnet&all=true` #monero_fail_url = "https://monero.fail/?chain=monero&network=mainnet&all=true" # URL to monerod (you can add your own server here or use public nodes from https://monero.fail/), only if # 'use_dynamic_fail_data = false' or if the server at 'monero_fail_url' is not available # (default: The 'monerod_url = [ # mainnet ...' list below) #monerod_url = [# stagenet # "http://stagenet.xmr-tw.org:38081", # "http://node.monerodevs.org:38089", # "http://node3.monerodevs.org:38089", # "http://xmr-lux.boldsuck.org:38081", # "http://singapore.node.xmr.pm:38081", #] #monerod_url = [ # mainnet # "http://node.c3pool.org:18081", # "http://xmr-full.p2pool.uk:18089", # "http://monero.stackwallet.com:18081", # "http://xmr.support:18081", # "https://xmr-01.tari.com", # "http://node1.xmr-tw.org:18081", # "http://monero-g2.hexhex.online:18081", # "http://137.220.120.19:18089", # "http://185.218.124.120:18489", # "http://185.218.124.120:18789", # "https://xmr-de-2.boldsuck.org:18081", # "http://46.32.46.171:18081", # "http://185.218.124.120:18089", # "http://185.218.124.120:18589", # "http://xmr-de-1.boldsuck.org:18081", # "http://185.218.124.120:18889", # "http://pinodexmr.hopto.org:18081", # "http://node.tincloud.eu:18081", # "http://183.6.24.33:18081", # "http://147.45.196.232:18089", # "http://h-helix.com:18089", # "http://185.218.124.120:18689", # "http://185.218.124.120:18289", # "https://node.tincloud.eu", # "https://xmr-de.boldsuck.org:18081", # "https://monero.booze.org", # "https://xmr.mailia.be:18088", # "https://xmr.lolfox.au", # "https://xmr1.doggett.tech:18089", # "https://node.icefiles.nz:18081", # "http://45.8.132.220:18089", # "http://82.147.85.13:18089", #] # Username for curl. (default = "") #monerod_username = "" # Password for curl. (default = "") #monerod_password = "" # If authentication is being used for curl. (default = false) #monerod_use_auth = false # The Minotari base node's GRPC address. (default = "http://127.0.0.1:18142") #base_node_grpc_address = "http://127.0.0.1:18142" # GRPC authentication for the base node (default = "none") #base_node_grpc_authentication = { username = "miner", password = "xxxx" } # Address of the minotari_merge_mining_proxy application. (default = "/ip4/127.0.0.1/tcp/18081") #listener_address = "/ip4/127.0.0.1/tcp/18081" # In sole merged mining, the block solution is usually submitted to the Monero blockchain # (monerod) as well as to the Minotari blockchain, then this setting should be "true". With pool # merged mining, there is no sense in submitting the solution to the Monero blockchain as the # pool does that, then this setting should be "false". (default = true) #submit_to_origin = true # The merge mining proxy can either wait for the base node to achieve initial sync at startup before it enables mining, # or not. If merge mining starts before the base node has achieved initial sync, those Minotari mined blocks will not be # accepted. (default = true) #wait_for_initial_sync_at_startup = true # When mining for minotari, you might want to check the achieved difficulty of the mined minotari block before submitting # This setting this can be disabled to allow you to always submit minotari blocks even if the difficulty does not meet the # required. (default = true) #check_tari_difficulty_before_submit = true # The maximum amount of VMs that RandomX will be use (default = 5) #max_randomx_vms = 5 # The extra data to store in the coinbase, usually some data about the mining pool. # Note that this data is publicly readable, but it is suggested you populate it so that # pool dominance can be seen before any one party has more than 51%. (default = "tari_merge_mining_proxy") #coinbase_extra = "tari_merge_mining_proxy" # The Tari wallet address (valid address in hex) where the mining funds will be sent to - must be assigned # e.g. "78e724f466d202abdee0f23c261289074e4a2fc9eb61e83e0179eead76ce2d3f17" wallet_payment_address = "f2HRDbEBUJKBJVWtGneP7pDng7u3VTpgjAqDB1YywgCgx8ff5yUWzke2Do6gpvBbFn4MDTY7nwTpyB8Paor85zAjUYi" # Range proof type - "revealed_value" or "bullet_proof_plus": (default = "revealed_value") #range_proof_type = "revealed_value" # Use p2pool to submit and get block templates (default = false) #p2pool_enabled = false, # The timeout duration for connecting to monerod (default = 2s) #monerod_connection_timeout = 2 ######################################################################################################################## # # # Validator Node Configuration Options (ValidatorNodeConfig) # # # ######################################################################################################################## [validator_node] # A path to the file that stores your node identity and secret key (default = "validator_node_id.json") #identity_file = "validator_node_id.json" # A path to the file that stores the tor hidden service private key, if using the tor transport # (default = "validator_node_tor_id.json") #tor_identity_file = "validator_node_tor_id.json" # The node's publicly-accessible hostname. This is the host name that is advertised on the network so that # peers can find you. # _NOTE_: If using the `tor` transport type, public_address will be ignored and an onion address will be # automatically configured (default = ) #public_address = # The Minotari base node's GRPC address. (default = "http://127.0.0.1:" the value is based on network) #base_node_grpc_address = "http://127.0.0.1:18142" # The Minotari console wallet's GRPC address. (default = "http://127.0.0.1:" the value is based on network) #wallet_grpc_address = "127.0.0.1/tcp/18143" # How often do we want to scan the base layer for changes. (default = 10) #base_layer_scanning_interval = 10 # The relative path to store persistent data (default = "data/validator_node") #data_dir = "data/validator_node" # JSON-RPC listener address (default = "127.0.0.1:18200") #json_rpc_address = "127.0.0.1:18200" # HTTP UI listener address (default = "127.0.0.1:5000") #http_ui_address = "127.0.0.1:5000" # Set to true to enable auto registration for each epoch (default = true) #auto_register = true [validator_node.p2p] #transport = "tor" ######################################################################################################################## # # # Collectibles Configuration Options (CollectiblesConfig) # # # ######################################################################################################################## [collectibles] # GRPC address of validator node (default = "http://127.0.0.1:18144") #validator_node_grpc_address = "http://127.0.0.1:18144" # GRPC address of base node (default = "http://127.0.0.1:18142") #base_node_grpc_address = "http://127.0.0.1:18142" # GRPC address of wallet (default = "http://127.0.0.1:18143") #wallet_grpc_address = "http://127.0.0.1:18143" ######################################################################################################################## # # # Indexer Configuration Options (IndexerConfig) # # # ######################################################################################################################## [indexer] # A path to the file that stores your node identity and secret key (default = "indexer_id.json") #identity_file = "indexer_id.json" # A path to the file that stores the tor hidden service private key, if using the tor transport # (default = "indexer_tor_id.json") #tor_identity_file = "indexer_tor_id.json" # The node's publicly-accessible hostname. This is the host name that is advertised on the network so that # peers can find you. # _NOTE_: If using the `tor` transport type, public_address will be ignored and an onion address will be # automatically configured (default = ) #public_address = # The Minotari base node's GRPC address. (default = "http://127.0.0.1:" the value is based on network) #base_node_grpc_address = "http://127.0.0.1:18142" # How often do we want to scan the base layer for changes. (default = 10) #base_layer_scanning_interval = 10 # The relative path to store persistent data (default = "data/indexer") #data_dir = "data/indexer" # JSON-RPC listener address (default = "127.0.0.1:18300") #json_rpc_address = "127.0.0.1:18300" # HTTP UI listener address (default = "127.0.0.1:15000") #http_ui_address = "127.0.0.1:15000" # Substate addresses to keep watching #address_watchlist=[] # How often do we want to scan the dan layer for change. (default = 10) #dan_layer_scanning_internal=10 [indexer.p2p] #transport = "tor" ######################################################################################################################## # # # DAN Wallet Daemon Configuration Options () # # # ######################################################################################################################## [dan_wallet_daemon] # JSON-RPC listener address (default = "127.0.0.1:9000") # listen_addr = "127.0.0.1:9000" # Signaling server address (default = "127.0.0.1:9100") # signaling_server_addr = "127.0.0.1:9100" # Validator node endpoint url (default = "http://127.0.0.1:18200/json_rpc") # validator_node_endpoint = "http://127.0.0.1:18200/json_rpc"