{"id":22025219,"url":"https://github.com/tari-project/tari","last_synced_at":"2026-04-02T14:47:28.395Z","repository":{"id":37734427,"uuid":"136459099","full_name":"tari-project/tari","owner":"tari-project","description":"The Tari protocol","archived":false,"fork":false,"pushed_at":"2025-05-06T14:02:45.000Z","size":152629,"stargazers_count":379,"open_issues_count":107,"forks_count":225,"subscribers_count":30,"default_branch":"development","last_synced_at":"2025-05-06T15:05:57.866Z","etag":null,"topics":["hacktoberfest","rust","tari"],"latest_commit_sha":null,"homepage":"https://tari.com","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/tari-project.png","metadata":{"files":{"readme":"README.md","changelog":"changelog-development.md","contributing":"Contributing.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":"CODEOWNERS","security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2018-06-07T10:09:08.000Z","updated_at":"2025-05-06T14:02:50.000Z","dependencies_parsed_at":"2023-09-27T19:45:13.909Z","dependency_job_id":"de430ea3-abd0-4e49-b9e2-602bc04cd9bd","html_url":"https://github.com/tari-project/tari","commit_stats":{"total_commits":4109,"total_committers":53,"mean_commits":77.52830188679245,"dds":0.7714772450717936,"last_synced_commit":"c1ac4ae3cc1384992a61db1591c12f7c2faa4814"},"previous_names":[],"tags_count":404,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tari-project%2Ftari","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tari-project%2Ftari/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tari-project%2Ftari/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tari-project%2Ftari/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/tari-project","download_url":"https://codeload.github.com/tari-project/tari/tar.gz/refs/heads/development","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254069454,"owners_count":22009557,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["hacktoberfest","rust","tari"],"created_at":"2024-11-30T07:15:03.740Z","updated_at":"2026-02-03T16:13:35.200Z","avatar_url":"https://github.com/tari-project.png","language":"Rust","funding_links":[],"categories":["Layer-1 and Cross-Chain"],"sub_categories":[],"readme":"\u003c!-- CI / Build Status --\u003e\n[![CI](../../actions/workflows/ci.yml/badge.svg?branch=development)](../../actions/workflows/ci.yml)\n[![Integration Tests](../../actions/workflows/integration_tests.yml/badge.svg?branch=development)](../../actions/workflows/integration_tests.yml)\n[![Docker Build](../../actions/workflows/build_dockers.yml/badge.svg?branch=development)](../../actions/workflows/build_dockers.yml)\n[![Binary Build](../../actions/workflows/build_binaries.yml/badge.svg?branch=development)](../../actions/workflows/build_binaries.yml)\n\n\u003c!-- Release \u0026 License --\u003e\n[![Release](https://img.shields.io/github/v/release/tari-project/tari?sort=semver)](https://github.com/tari-project/tari/releases)\n[![License](https://img.shields.io/github/license/tari-project/tari)](https://github.com/tari-project/tari/blob/development/LICENSE)\n\n[![Coverage Status](https://coveralls.io/repos/github/tari-project/tari/badge.svg?branch=development)](https://coveralls.io/github/tari-project/tari?branch=development)\n\n# The Tari protocol\n\nA number of applications have been developed by the Tari community to implement the Tari protocol. These are:\n\n- Minotari Base Node\n- Minotari Wallet\n- Minotari Miner\n- Minotari Merge Mining Proxy\n- Minotari MCP Servers (for AI integration)\n- Minotari Aurora wallets for Android and iOS\n\nThe core applications and MCP servers are documented in this README (see [wallet-android](https://github.com/tari-project/wallet-android) and [wallet-ios](https://github.com/tari-project/wallet-ios) for mobile wallets' repos).\n\n## Developers\nWant to contribute? Start by reading the [Contributing Guide](Contributing.md) and the [Reviewing Guide](docs/src/reviewing_guide.md).\n\n## Installing using binaries\n\n### Versions\nThe recommended running versions of each network are:\n\n| Network   | Version      |\n|-----------|--------------|\n| Mainnet   | 4.10.0       |\n| Nextnet   | 4.9.1-rc.0   |\n| Esmeralda | 4.10.0-pre.0 |\n\nFor more detail about versioning, see [Release Ideology](https://github.com/tari-project/tari/blob/development/docs/src/branching_releases.md).\n\n### Running test\nTests can be run by install Nextest with the following command:\n\n```bash\ncargo install cargo-nextest\n```\n\nThen run the tests with:\n\n```bash\ncargo +nightly ci-test\n```\n\n### Download\n\n[Download binaries](https://tari.com/downloads/) from [tari.com](https://www.tari.com/). This is the easiest way to run a Tari node, but you're\nessentially trusting the person that built and uploaded them that nothing untoward has happened.\n\nHashes of the binaries are available alongside the downloads.\nYou can get the hash of your download by opening a terminal or command prompt and running the following:\n\n(\\*nix)\n\n    shasum -a256 \u003cPATH_TO_BINARY_INSTALL_FILE\u003e\n\n(Windows)\n\n    certUtil -hashfile \u003cPATH_TO_BINARY_INSTALL_FILE\u003e SHA256\n\nIf the result doesn't match the published hash, don't run the binary.\nNote that this only checks that your binary was downloaded correctly; it cannot detect if the binary was replaced by a bad actor.\nIf you need to ensure that your binary matches the source, see [Building from source](#building-from-source) below.\n\n### Install\n\nAfter you have downloaded the binaries, you need to install them. This is easy to do, and works as follows:\n\n#### On \\*Nix\n\nAssuming you want to install the Tari applications into your home folder, run the following:\n\n    cd ~\n    tar -xf \u003cPATH_TO_BINARY_INSTALL_FILE\u003e\n\nAfter this, the Tari applications will be located in `~/tari_esmeralda_testnet` with a selection of\nsoft links to run them.\n\n#### On Windows\n\nJust double-click the installer and accept all the default prompts. The Tari applications will be located in the folder\nyou selected during installation, and can be run by double-clicking the various shortcuts or via the Windows menu\n(`Tari Testnet`).\n\n### Runtime links\n\n#### Use the one-click miner\n\nExecute the `start_all` soft link/shortcut; this will start everything you need\ndepending on the choices you make when prompted:\n\n- Tor services started by default\n- Minotari Base Node, or\n- Minotari Base Node \u0026 Minotari Wallet, or\n- Minotari Base Node \u0026 Minotari Wallet \u0026 Minotari Miner, or\n- Minotari Base Node \u0026 Minotari Wallet \u0026 Minotari Merge Mining Proxy \u0026 XMRig\n\n#### Start all applications individually\n\n- Execute the `start_minotari_node` soft link/shortcut; this will also start the Tor\n  services if not running already that needs to be running before the base node\n  can run (do not close the Tor console).\n\n- Execute the `start_minotari_console_wallet` soft link/shortcut; this will also start the\n  Tor services that needs to be running before the base node can run (do not\n  close the Tor console).\n\n  **Note**: The Tor console will output `[notice] Bootstrapped 100% (done): Done`\n  when the Tor services have fully started.\n\n- Depending on your choice of mining:\n\n  - SHA3 standalone mining\n    - Execute the `start_minotari_miner` soft link/shortcut.\n  - Merge mining with Monero\n    - Execute the `start_minotari_merge_mining_proxy` soft link/shortcut.\n    - Execute the `start_xmrig` shortcut.\n\n## Building from source\n\nTo build the Minotari codebase from source, there are a few dependencies you need to have installed.\n\n### Install development packages\n\nFirst you'll need to make sure you have a full development environment set up:\n\n#### (macOS)\n\n```\nbrew update\nbrew install coreutils tor openssl \\\n  cmake make libtool autoconf automake protobuf\n```\n\n#### (Ubuntu 18.04, including WSL-2 on Windows)\n\n```\nsudo apt-get update\nsudo apt-get -y install openssl libssl-dev pkg-config libsqlite3-dev clang git cmake libc++-dev libc++abi-dev libprotobuf-dev protobuf-compiler libncurses5-dev libncursesw5-dev\nsudo apt-get install -y wget apt-transport-https\nsudo wget -q \"https://packages.microsoft.com/config/ubuntu/$(lsb_release -rs)/packages-microsoft-prod.deb\"\nsudo dpkg -i packages-microsoft-prod.deb\nsudo apt-get update\nsudo add-apt-repository universe\nsudo apt-get install -y powershell\n```\n\n#### (Windows)\n\nPlease follow the instructions [located here](https://github.com/tari-project/tari/blob/development/buildtools/windows-dev-environment-notes.md) for instructions on setting up your build environment in Windows.\n\n### Build\n\nGrab a cup of coffee and begin the Tari build.\n\n(\\*nix)\n\n    cd tari\n    cargo build --release\n\n(Windows)\n\nThis is similar to building in Ubuntu, except the Microsoft Visual Studio environment must be sourced. Open the\nappropriate _x64\\x86 Native Tools Command Prompt for VS 2019_, and in your main Tari directory perform the\nbuild, which will create the executable inside your `%USERPROFILE%\\Code\\tari\\target\\release` directory:\n\n    cd %USERPROFILE%\\Code\\tari\n    cargo build --release\n\nA successful build should output something like this:\n\n```\n   Compiling minotari_wallet v0.0.9 (.../tari/base_layer/wallet)\n   Compiling minotari_wallet_ffi v0.0.9 (.../tari/base_layer/wallet_ffi)\n   Compiling minotari_node v0.0.9 (.../tari/applications/minotari_node)\n    Finished release [optimized] target(s) in 12m 24s\n```\n\nCompiled executables can be found at these paths::\n\n    ./target/release/minotari_node\n    ./target/release/minotari_console_wallet\n    ./target/release/minotari_merge_mining_proxy\n    ./target/release/minotari_miner\n    ./target/release/minotari_mcp_wallet\n    ./target/release/minotari_mcp_node\n\nAlternatively, `cargo` can build and install the executable into `~/.cargo/bin` (`%USERPROFILE%\\.cargo\\bin` on Windows), so it will be executable from anywhere\non your system:\n\n    cargo install --path=applications/minotari_node --force\n    cargo install --path=applications/minotari_console_wallet --force\n    cargo install --path=applications/minotari_merge_mining_proxy --force\n    cargo install --path=applications/minotari_miner --force\n    cargo install --path=applications/minotari_mcp_wallet --force\n    cargo install --path=applications/minotari_mcp_node --force\n\n### Run\n\nThe executables will either be inside your `~/tari/target/release` (on Linux) or `%USERPROFILE%\\Code\\tari\\target\\release`\n(on Windows) directory, or alternatively, inside your `~/.cargo/bin` (on Linux) `%USERPROFILE%\\.cargo\\bin` (on Windows)\ndirectory, depending on the build choice above, and must be run from the command line. If the former build method was\nused, you can run it from that directory, or you more likely want to copy it somewhere more convenient. Make sure to\nstart the Tor service `%USERPROFILE%\\Code\\tari\\applications\\minotari_node\\windows\\start_tor.lnk` if running on Windows. \nTor is included in the binary if running on Linux or Mac. \n\nRunning:\n\n    minotari_node\n\n    minotari_console_wallet\n\n    minotari_merge_mining_proxy\n\n    minotari_miner\n\n    minotari_mcp_wallet\n\n    minotari_mcp_node\n\nAlternatively, you can run the Tari applications from your source directory using `cargo`, and just omit the `--release`\nflag if you want to run in debug mode:\n\n    cargo run --bin minotari_node --release\n\n    cargo run --bin minotari_merge_mining_proxy --release\n\n    cargo run --bin minotari_console_wallet --release\n\n    cargo run --bin minotari_miner --release\n\n    cargo run --bin minotari_mcp_wallet --release\n\n    cargo run --bin minotari_mcp_node --release\n\nUsing all the default options, the blockchain database, wallet database, console wallet database, log files and all\nconfiguration files will be created in the `~/.tari` (on Linux) or `%USERPROFILE%\\.tari` (on Windows) directory.\nAlternatively, by specifying `--base-path \u003cbase-path\u003e` on the command line as well, all of this will be created in that\ndirectory.\n\n## Advanced build configurations\n\n- Vagrant: See [Building with Vagrant](https://github.com/tari-project/tari/issues/1407), using Vagrant to build and run a basenode, as cleanly as possible.\n\n## Using Docker\n\n### Running the base node with a Docker image\n\nMinotari Base Node Docker images can be found at https://quay.io/repository/tarilabs/minotari_node\n\nUsing `docker-compose.yaml`:\n\n```\nversion: \"3\"\n\nservices:\n  minotari_node:\n    image: quay.io/tarilabs/minotari_node:latest-nextnet\n    restart: unless-stopped\n    volumes:\n      - ./data:/root/.tari\n# These 2 params are required for an interactive docker-compose session\n    stdin_open: true\n    tty: true\n    expose:\n      - 18142\n    ports:\n      - \"18142:18142\"\n```\n\nThen run `docker-compose up -d` to start your docker service.\n\nCheck the running state with `docker-compose ps`:\n\n```\n        Name           Command    State            Ports\n------------------------------------------------------------------\ntbn_minotari_node_1   start.sh   Up      0.0.0.0:18142-\u003e18142/tcp\n```\n\nTo connect to the console, use `docker ps` to get the container ID to which to attach the `minotari_node`` in Docker:\n\n```\nCONTAINER ID        IMAGE                                    COMMAND             CREATED             STATUS              PORTS                      NAMES\n73427509a4bb        quay.io/tarilabs/minotari_node:v0.5.4   \"start.sh\"          45 minutes ago      Up 26 minutes       0.0.0.0:18142-\u003e18142/tcp   tbn_minotari_node_1\n```\n\nWith the container ID `73427509a4bb`, connect to the `minotari_node` console using `docker attach 73427509a4bb`:\n\n```\n\u003e\u003e help\nAvailable commands are:\nhelp, version, get-chain-metadata, list-peers, reset-offline-peers, ban-peer, unban-peer, list-connections, list-headers,\ncheck-db, calc-timing, discover-peer, get-block, search-utxo, search-kernel, search-stxo, get-mempool-stats,\nget-mempool-state, whoami, get-state-info, quit, exit\n\u003e\u003e get-chain-metadata\nHeight of longest chain : 5228\nGeometric mean of longest chain : 5892870\nBest block : 2c4f92854b2160324b8afebaa476b39be4004d2a7a19c69dd2d4e4da257bfee2\nPruning horizon : 0\nEffective pruned height : 0\n\u003e\u003e get-state-info\nCurrent state machine state:\nSynchronizing blocks: Syncing from the following peers:\n510c83279adc7cb7d7dda0aa07\nSyncing 5229/5233\n```\n\n---\n\n## Mining\n\nThe Tari protocol supports hybrid mining; stand-alone or pooled SHA3 mining using the Minotari Miner or merged mining with\nMonero using the Minotari Merge Mining Proxy in conjunction with XMRig (RandomX-based mining). Blocks to be won by\nstandalone and pooled SHA3 mining have been apportioned to approximately 50% and with Monero merged mining to approximately 50%.\nThis apportionment is deeply baked into the Tari protocol and part of the consensus rules. The 50/50 split is determined\nby slightly different block target times for each algorithm, that when combined will give an average block time of\napproximately 120 seconds. Each mining algorithm makes use of Linear Weighted Moving Average (LWMA) maths to gracefully adjust\nthe target difficulties to adhere to the respective target block times. Any block won by either mining algorithm will be\naccepted, and when there is a tie, a geometric mean calculation will be used to decide the winner. This system is\ncompletely fair without any additional empirical meddling to try force a certain outcome.\n\n### Tari SHA3 mining\n\nIn order to perform SHA3 mining with Tari, the following applications are needed:\n\n- A Minotari Base Node [_to supply blockchain metadata information_];\n- A Minotari Wallet [_to collect the Minotari block rewards (coinbase transactions)_];\n- A Minotari Miner [_to perform the mining_];\n\nIn order to perform pooled SHA3 mining with Tari, the following applications are needed:\n\n- For a pool operator:\n\n  - A Minotari Base Node [_to supply blockchain metadata information_];\n  - A Minotari Wallet [_to collect the Minotari block rewards (coinbase transactions)_];\n  - Miningcore [_pool software supporting various cryptocurrencies, configured for Tari_]\n\n- For a miner:\n  - A Minotari Wallet [_to collect the share rewards (pool payouts)_];\n  - A Minotari Miner [_to perform the mining_];\n\n#### Runtime prerequisites\n\nThe Minotari Base Node, Minotari Wallet and Minotari Miner can all run in the same directory. By performing the\ndefault installation as described in [Installing using binaries](#installing-using-binaries), all these applications\nwill be available.\n\nFor MiningCore see the [Linux](https://github.com/tari-project/miningcore/#building-on-debianubuntu) and [Windows](https://github.com/tari-project/miningcore/#building-on-windows) build instructions.\n\n#### Configuration prerequisites\n\nThe configuration prerequisites are the same for all four Tari applications. After performing a\n[default installation](#installing-using-binaries), locate the main configuration file (`config.toml`), which\nwill be created in the `~/tari_esmeralda_testnet/config` (on Linux) or `%USERPROFILE%\\.tari-testnet\\config` (on Windows)\ndirectory.\n\nWith the main configuration file, in addition to the settings already present, the following must also be enabled for\nthe Minotari Base Node and the Minotari Wallet, if they are not enabled already. Under sections **`base_node.esmeralda`** and **`wallet`** respectively:\n\n```\n[wallet]\n\ngrpc_address = \"http://127.0.0.1:18143\"\n```\n\n```\n[base_node.esmeralda]\ntransport = \"tor\"\nallow_test_addresses = false\ngrpc_enabled = true\ngrpc_base_node_address = \"http://127.0.0.1:18142\"\n```\n\nFor the Minotari Miner there are some additional settings under section **`miner`** that can be changed:\n\n- For SHA3 Mining:\n\n```\n[miner]\n# Number of mining threads\n# Default: number of logical CPU cores\n#num_mining_threads=8\n\n# GRPC address of base node\n# Default: value from `base_node.grpc_base_node_address`\n#base_node_grpc_address = \"http://127.0.0.1:18142\"\n\n# GRPC address of console wallet\n# Default: value from `wallet.grpc_address`\n#wallet_grpc_address = \"http://127.0.0.1:18143\"\n\n# Start mining only when base node is bootstrapped\n# and current block height is on the tip of network\n# Default: true\n#mine_on_tip_only=true\n\n# Will check tip with node every N seconds and restart mining\n# if height already taken and option `mine_on_tip_only` is set\n# to true\n# Default: 30 seconds\n#validate_tip_timeout_sec=30\n```\n\n\nUncomment `mining_pool_address` and `mining_wallet_address`. Adjust the values to your intended configuration.\n`mining_worker_name` is an optional configuration field allowing you to name your worker.\n\n#### Perform SHA3 mining\n\n- For SHA3 mining:\n  Tor and the required Tari applications must be started and preferably in this order:\n\n  - Tor(windows only):\n\n    - Windows: `Start Tor Serviecs` menu item or `start_tor` shortcut in the Tari installation folder.\n\n  - Tari Base Node:\n\n    - Linux/OSX: As per [Runtime links](#runtime-links).\n    - Windows: As per [Runtime links](#runtime-links) or `Start Base Node` menu item or\n      `start_minotari_node` shortcut in the Tari installation folder.\n\n  - Tari Console Wallet:\n\n    - Linux/OSX: As per [Runtime links](#runtime-links).\n    - Windows: As per [Runtime links](#runtime-links) or `Start Console Wallet` menu item or\n      `start_tari_console_wallet` shortcut in the Tari installation folder.\n\n  - Tari Miner:\n    - Linux/OSX: As per [Runtime links](#runtime-links).\n    - Windows: As per [Runtime links](#runtime-links) or `Start Miner` menu item\n      or `start_tari_miner` shortcut in the Tari installation folder.\n\nLook out for the following types of messages on the Tari Miner console to confirm that it is connected properly\nand performing mining:\n\n```\n2021-02-26 11:24:23.604202000 [minotari_miner] INFO  Connecting to base node at http://127.0.0.1:18151\n2021-02-26 11:24:23.606260800 [minotari_miner] INFO  Connecting to wallet at http://127.0.0.1:18161\n2021-02-26 11:24:23.721890400 [minotari_miner::miner] INFO  Mining thread 0 started\n2021-02-26 11:24:23.722287800 [minotari_miner::miner] INFO  Mining thread 1 started\n2021-02-26 11:24:23.722505500 [minotari_miner::miner] INFO  Mining thread 2 started\n2021-02-26 11:28:19.687855700 [minotari_miner::miner] INFO  Mining thread 2 stopped\n2021-02-26 11:28:19.688251200 [minotari_miner] INFO  Miner 2 found block header BlockHeader { hash: [...], version: 1,\n  height: 8493, prev_hash: [...], timestamp: Some(Timestamp { seconds: 1614331698, nanos: 0 }), output_mr: [...],\n  witness_mr: [...], total_kernel_offset: [...], nonce: 8415580256943728281, pow: Some(ProofOfWork { pow_algo: 2,\n  pow_data: [] }), kernel_mmr_size: 24983, output_mmr_size: 125474 } with difficulty 7316856839\n```\n\n### Tari merge mining\n\nIn order to perform merge mining with Tari, the following applications are needed:\n\n- A Minotari Base Node [_to supply blockchain metadata information_];\n- A Minotari Wallet [_to collect the Tari block rewards (coinbase transactions)_];\n- A Minotari Merge Mining Proxy [_to enable communication between all applications_];\n- XMRig [_to perform the mining_];\n- Monero wallet (specifically a stagenet wallet address during testnet; the one provided can be used, or a custom\n  one can be set up) [_to collect Monero block rewards (coinbase transactions)_].\n\nThe Minotari Merge Mining Proxy will be the communication gateway between all these applications and will coordinate all\nactivities. It will also submit finalized Minotari and Monero blocks to the respective networks when RandomX is solved at\nthe respective difficulties.\n\n#### Runtime prerequisites\n\nThe Minotari Base Node, Minotari Wallet and Minotari Merge Mining Proxy can all run in the same directory, whereas XMRig\nwill run in its own directory. By performing the default installation as described in\n[Installing using binaries](#installing-using-binaries), all these applications will be available.\n\nXMRig can also be build from sources. If that is your preference, follow these instructions: \u003chttps://xmrig.com/docs/miner/\u003e.\n\n#### Configuration prerequisites\n\n##### Minotari applications\n\nThe configuration prerequisites are the same for all three Minotari applications. After performing a\n[default installation](#installing-using-binaries), locate the main configuration file (`config.toml`), which\nwill be created in the `~/tari_esmeralda_testnet/config` (on Linux) or `%USERPROFILE%\\.tari-testnet\\config` (on Windows)\ndirectory.\n\nWith the main configuration file, in addition to the settings already present, the following must also be enabled if\nthey are not enabled already:\n\n- For the Minotari Base Node and the Minotari Wallet, under sections **`base_node.esmeralda`** and **`wallet`** respectively\n  ```\n  [wallet]\n  grpc_address = \"http://127.0.0.1:18143\"\n  ```\n  ```\n  [base_node.esmeralda]\n  transpo*_r_*t = \"tor\"\n  allow_test_addresses = false\n  base_node_grpc_address = \"http://127.0.0.1:18142\"\n  ```\n\nDepending on if you are using solo mining or self-select mining, you will use one of the following:\n\n###### Solo mining\n\n- For the Minotari Merge Mining Proxy, under section **`merge_mining_proxy`**\n\n  ```\n  [merge_mining_proxy]\n  monerod_url = [ # stagenet\n    \"http://stagenet.xmr-tw.org:38081\",\n    \"http://stagenet.community.xmr.to:38081\",\n    \"http://monero-stagenet.exan.tech:38081\",\n    \"http://xmr-lux.boldsuck.org:38081\",\n    \"http://singapore.node.xmr.pm:38081\",\n  ]\n\n  proxy_host_address = \"127.0.0.1:18081\"\n  proxy_submit_to_origin = true\n  monerod_use_auth = false\n  monerod_username = \"\"\n  monerod_password = \"\"\n  ```\n\n###### Self-Select mining\n\n- For the Minotari Merge Mining Proxy, under section **`merge_mining_proxy`**\n\n  ```\n  [merge_mining_proxy]\n  monerod_url = [ # stagenet\n    \"http://stagenet.xmr-tw.org:38081\",\n    \"http://stagenet.community.xmr.to:38081\",\n    \"http://monero-stagenet.exan.tech:38081\",\n    \"http://xmr-lux.boldsuck.org:38081\",\n    \"http://singapore.node.xmr.pm:38081\",\n  ]\n\n  proxy_host_address = \"127.0.0.1:18081\"\n  proxy_submit_to_origin = false\n  monerod_use_auth = false\n  monerod_username = \"\"\n  monerod_password = \"\"\n  ```\n\n**Note:** The ports `18081`, `18142` and `18143` shown in the example above should not be in use by other processes. If\nthey are, choose different ports. You will need to update the ports in the steps below as well.\n\nThe `monerod_url` set must contain valid addresses (`host:port`) for `monerod` that is running Monero mainnet (e.g.\n`[\"http://18.132.124.81:18081\"]`) or stagenet (e.g. `[\"http://monero-stagenet.exan.tech:38081\"]`), which can be a\npublic node or local instance. To test if the\n`monerod_url` address is working properly, try to paste `host:port/get_height` in an internet browser, for example:\n\n```\nhttp://18.132.124.81:18081/get_height\n```\n\nA typical response would be:\n\n```\n{\n  \"hash\": \"ce32dd0a6e3220d57c368f2cd01e5980a9b4d70f02b27274d67142d5b26cb4d6\",\n  \"height\": 2277206,\n  \"status\": \"OK\",\n  \"untrusted\": false\n}\n```\n\n_**Note:** A guide to setting up a local Monero stagenet on Linux can be found\n[here](https://github.com/tari-project/tari/blob/development/applications/minotari_merge_mining_proxy/monero_stagenet_setup.md)._\n\n##### XMRig configuration\n\nThe XMRig configuration must be prepared for either solo or pool merged mining with Monero. It is advisable to use a\nconfiguration file for XMRig as this offers more flexibility, otherwise, the configuration parameters can be passed\nin via the command line upon runtime.\n\n**Notes:**\n\n- Monero mainnet and stagenet wallet addresses can only be used with the corresponding network. The `monerod_url`\n  configuration setting (see [Minotari applications](#minotari-applications)) must also correspond to the chosen network.\n- For the solo mining configuration, Monero doesn't currently support requesting templates to mine on with the address\n  being a subaddress. It is possible to do with the self-select configuration since the template is requested by the miner\n  with the wallet address of the pool.\n\n###### Solo-mining\n\nThe [XMRig configuration wizard](https://xmrig.com/wizard) can be used to create a solo mining configuration file\nin JSON format:\n\n- Start -\u003e `+ New configuration`\n\n- Pools -\u003e `+ Add daemon`\n\n  - With `Add new daemon for Solo mining`, complete the required information, then `+ Add daemon`:\n    - `Host`, `Port`: This must correspond to the `proxy_host_address` in the Tari configuration file.\n    - `Secure connection (TLS)`: Uncheck.\n    - `Coin`: Monero.\n    - `Wallet address`: This must be your own stagenet or mainnet wallet address, or you can use these donation\n      addresses:\n      - Public stagenet address at https://coin.fyi/news/monero/stagenet-wallet-8jyt89#!\n        `55LTR8KniP4LQGJSPtbYDacR7dz8RBFnsfAKMaMuwUNYX6aQbBcovzDPyrQF9KXF9tVU6Xk3K8no1BywnJX6GvZX8yJsXvt`\n      - Mainnet address `\u003cEnter your own mainnet wallet address here\u003e`\n\n- Backends -\u003e Select `CPU` (`OpenCL` or `CUDA` also possible depending on your computer hardware).\n\n- Misc -\u003e With `Donate`, type in your preference.\n\n- Result -\u003e With `Config file`, copy or download, than save as `config.json`.\n\nUsing the public stagenet wallet address above, the resulting configuration file should look like this:\n\n```\n{\n    \"autosave\": true,\n    \"cpu\": true,\n    \"opencl\": false,\n    \"cuda\": false,\n    \"pools\": [\n        {\n            \"coin\": \"monero\",\n            \"url\": \"127.0.0.1:18081\",\n            \"user\": \"55LTR8KniP4LQGJSPtbYDacR7dz8RBFnsfAKMaMuwUNYX6aQbBcovzDPyrQF9KXF9tVU6Xk3K8no1BywnJX6GvZX8yJsXvt\",\n            \"tls\": false,\n            \"daemon\": true\n        }\n    ]\n}\n```\n\n###### Pool mining with Self-Select\n\nFor pool mining, the configuration file obtained from the [XMRig configuration wizard](https://xmrig.com/wizard) must\nbe augmented with Tari specific settings. Using the wizard, create the following:\n\n- Start -\u003e `+ New configuration`\n\n- Pools -\u003e `+ Add pool` -\u003e `Custom pool`\n\n  - With `Add new custom pool`, complete the required information, then `+ Add pool`:\n    - `Host`, `Port`: This must be for a Monero mainnet mining pool that supports the `self-select`.\n    - `Secure connection (TLS)`: Check/Uncheck (based on the pool requirements).\n    - `keepalive`: Check.\n    - `nicehash`: Uncheck.\n    - `User`: This must be your own mainnet wallet address, or you can use this address to donate to Monero:\n      - Public mainnet address at https://www.getmonero.org/get-started/contributing/\n        `888tNkZrPN6JsEgekjMnABU4TBzc2Dt29EPAvkRxbANsAnjyPbb3iQ1YBRk1UXcdRsiKc9dhwMVgN5S9cQUiyoogDavup3H`\n    - `Password`: A custom field that could be your wallet name or some other pool settings.\n    - `Coin`: Monero.\n    - `Algorithm`: rx/0.\n\n- Backends -\u003e Select `CPU` (`OpenCL` or `CUDA` also possible depending on your computer hardware).\n\n- Misc -\u003e With `Donate`, type in your preference.\n\n- Result -\u003e With `Config file`, copy or download, than save as `config.json`.\n\n- Add custom entries for `\"self-select\": \"127.0.0.1:18081\"` and `\"submit-to-origin\": true` in the `\"pools\"` section.\n\nMining pool `cryptonote.social` requires you to add a personalized handle to the wallet address so that you can\nquery your own pool statistics, separated by a full stop, i.e. `\u003cYOUR WALLET ADDRESS\u003e.\u003cpool specific user name\u003e`. For\ndemonstration purposes, `donatemonero` has been associated with the public mainnet wallet address above. If you go to\n\u003chttps://cryptonote.social/xmr\u003e and enter `donatemonero` in the `Username:` text box you will see some merge mining\nactivity for that address. The configuration file used for this exercise is shown below:\n\n```\n{\n    \"autosave\": true,\n    \"cpu\": true,\n    \"opencl\": false,\n    \"cuda\": false,\n    \"pools\": [\n        {\n            \"coin\": \"monero\",\n            \"algo\": \"rx/0\",\n            \"url\": \"cryptonote.social:5555\",\n            \"user\": \"888tNkZrPN6JsEgekjMnABU4TBzc2Dt29EPAvkRxbANsAnjyPbb3iQ1YBRk1UXcdRsiKc9dhwMVgN5S9cQUiyoogDavup3H.donatemonero\",\n            \"pass\": \"start_diff=220000;payment_scheme=pprop;donate=0.5\",\n            \"tls\": false,\n            \"keepalive\": true,\n            \"nicehash\": false,\n            \"self-select\": \"127.0.0.1:18081\",\n            \"submit-to-origin\": true\n        }\n    ]\n}\n```\n\n#### Perform merge mining\n\nTor and the required Minotari applications must be started, preferably in this order:\n\n- Tor(windows only):\n  - Windows: `Start Tor Serviecs` menu item or `start_tor` shortcut in the Tari installation folder.\n\n- Tari Base Node:\n\n  - Linux/OSX: As per [Runtime links](#runtime-links).\n  - Windows: As per [Runtime links](#runtime-links) or `Start Base Node` menu item or\n    `start_minotari_node` shortcut in the Tari installation folder.\n\n- Tari Console Wallet:\n\n  - Linux/OSX: As per [Runtime links](#runtime-links).\n  - Windows: As per [Runtime links](#runtime-links) or `Start Console Wallet` menu item or\n    `start_minotari_console_wallet` shortcut in the Tari installation folder.\n\n- Tari Merge Mining Proxy:\n  - Linux/OSX: As per [Runtime links](#runtime-links).\n  - Windows: As per [Runtime links](#runtime-links) or `Start Merge Mining Proxy` menu item\n    or `start_minotari_merge_mining_proxy` shortcut in the Tari installation folder.\n\nIn addition, select one of the merge mining options as outlined in solo or pool mining in the next paragraphs.\n\n##### Solo merged mining with Monero\n\nThis paragraph is applicable to solo mining Monero on mainnet or stagenet and solo mining Tari on testnet.\n\nSolo merged mining with Monero is supported using the `daemon` option.\n\n###### Merge Mining Proxy configuration\n\nAs mentioned previously, the `monerod_url` field in the `config.toml` should be enabled for the corresponding mainnet or stagenet network\nMonero wallet address:\n\n```\n# URL to monerod\n  monerod_url = [ # mainnet\n  \"http://18.132.124.81:18081\",\n  \"http://xmr.support:18081\",\n  \"http://node1.xmr-tw.org:18081\",\n  \"http://xmr.nthrow.nyc:18081\",\n  ]\n  monerod_url = [ # stagenet\n    \"http://stagenet.xmr-tw.org:38081\",\n    \"http://stagenet.community.xmr.to:38081\",\n    \"http://monero-stagenet.exan.tech:38081\",\n    \"http://xmr-lux.boldsuck.org:38081\",\n    \"http://singapore.node.xmr.pm:38081\",\n  ]\n```\n\n###### Runtime\n\nEnsure the `config.json` configuration file discussed in [Solo mining](#solo-mining) is copied to the XMRig build or\ninstall folder, then start XMRig:\n\n- Linux/OSX: Execute `./xmrig` in the XMRig build or install folder.\n- Windows: Execute `xmrig` in the XMRig build or install folder, or `Start XMRig` menu item or `start_xmrig`\n  shortcut in the Tari installation folder.\n\n  **Note**: On modern Windows versions, coin mining software is blocked by default, for example by Windows Defender.\n  Ensure that these processes are allowed to run when challenged:\n\n  - `PUA:Win32/CoinMiner`\n  - `PUA:Win64/CoinMiner`\n  - `App:XMRigMiner`\n\nLook out for the following outputs in the XMRig console to confirm that it is connected to the Merge Mining Proxy\nand accepting jobs:\n\n```\n* POOL #1      127.0.0.1:18081 coin monero\n```\n\n```\n[2021-01-21 12:10:18.960]  net      use daemon 127.0.0.1:18081  127.0.0.1\n[2021-01-21 12:10:18.960]  net      new job from 127.0.0.1:18081 diff 286811 algo rx/0 height 756669\n[2021-01-21 12:10:56.730]  cpu      rejected (0/1) diff 286811 \"Block not accepted\" (656 ms)\n[2021-01-21 12:10:57.398]  net      new job from 127.0.0.1:18081 diff 293330 algo rx/0 height 756670\n[2021-01-21 12:12:23.695]  miner    speed 10s/60s/15m 4089.0 4140.2 n/a H/s max 4390.9 H/s\n[2021-01-21 12:12:57.983]  cpu      accepted (1/1) diff 293330 (594 ms)\n```\n\nThe `cpu: rejected` and `cpu: accepted` messages originate from stagenet or mainnet `monerod`, and show the Monero\nstatistics. At this point, the mined and rejected Minotari coinbases should be visible in the Minotari Wallet.\n\n##### Pool merged mining with Monero (self select)\n\nThis paragraph is applicable to pool mining Monero on mainnet and solo mining Minotari on testnet.\n\nPool merged mining with Monero is supported using the\n[Stratum mode self-select](https://github.com/jtgrassie/monero-pool/blob/master/sss.md) option via XMRig. Two mining\npools we have tried out that support this feature are [monero-pool](https://github.com/jtgrassie/monero-pool), with\nits reference pool implementation running [here](http://monerop.com/), and\n[cryptonote.social](https://cryptonote.social/xmr). With normal self select mode, XMRig requests a Monero block\ntemplate from a third party and submits the solution to the mining pool. Minotari added a `submit-to-origin` option to the\nself select mode whereby, if a solution has been found that only matches the pool difficulty, XMRig will submit the\nsolution to the pool only; but if the achieved difficulty meets both that of the pool and Minotari, it will be submitted to\nthe Merge Mining Proxy as well as to the mining pool.\n\n###### Merge Mining Proxy configuration\n\nThe `monerod_url` field in the `config.toml` should be enabled for the mainnet value:\n\n```\n# URL to monerod\n  monerod_url = [ # mainnet\n  \"http://18.132.124.81:18081\",\n  \"http://xmr.support:18081\",\n  \"http://node1.xmr-tw.org:18081\",\n  \"http://xmr.nthrow.nyc:18081\",\n  ]\n```\n\n###### Runtime\n\nEnsure the `config.json` configuration file discussed in [Pool mining with self select](#pool-mining-with-self-select)\nis copied to the XMRig build or install folder, then start XMRig as before for solo mining.\n\nLook out for the following outputs in the XMRig console to confirm that it is connected to the pool and the Merge\nMining Proxy and accepting jobs:\n\n```\n* POOL #1      cryptonote.social:5555 coin monero self-select 127.0.0.1:18081 submit-to-origin\n```\n\n```\n[2021-01-18 11:40:48.392]  net      new job from cryptonote.social:5555 diff 220006 algo rx/0 height 2277084\n[2021-01-18 11:41:22.378]  origin   submitted to origin daemon (1/0)  diff 284557 vs. 371742\n[2021-01-18 11:41:22.812]  cpu      accepted (1/0) diff 220006 (433 ms)\n[2021-01-18 11:41:39.201]  miner    speed 10s/60s/15m 1562.2 1630.4 n/a H/s max 1710.0 H/s\n[2021-01-18 11:42:06.320]  cpu      accepted (2/0) diff 220006 (482 ms)\n```\n\nStatus essages `origin: submitted to origin daemon (1/0)` and\n`origin: not submitted to origin daemon, difficulty too low (1/1)` pertains to submissions to the Tari network,\nand `cpu: accepted (1/0)` to the pool.\n\nMined and rejected Tari coinbases should be visible in the Tari Console Wallet, and pool shares in the pool interface.\nIf you are using `cryptonote.social:5555` as in the example above, go to \u003chttps://cryptonote.social/xmr\u003e and type in\nyour wallet identity under `Username:` to see your shares, or try `taritest` if you used this configuration example.\n\n## AI Integration (MCP Servers)\n\nTari provides Model Context Protocol (MCP) servers that enable AI agents like Claude to interact securely with Tari blockchain functionality.\n\n### MCP Applications\n\n- **`minotari_mcp_wallet`**: Provides secure wallet operations for AI agents\n- **`minotari_mcp_node`**: Enables AI agents to query blockchain and node information\n- **`minotari_mcp_common`**: Shared infrastructure for building secure MCP servers\n\n### Quick Start\n\n1. **Start your Tari wallet with gRPC enabled**:\n   ```bash\n   minotari_console_wallet --enable-grpc\n   ```\n\n2. **Start the MCP wallet server** (read-only, safe for AI):\n   ```bash\n   minotari_mcp_wallet --mcp-enabled\n   ```\n\n3. **Start the MCP node server**:\n   ```bash\n   minotari_mcp_node --mcp-enabled\n   ```\n\n### Security Features\n\n- **Local-only binding**: Servers only bind to 127.0.0.1 for security\n- **Permission levels**: Separate read-only and control operations\n- **Rate limiting**: Configurable request limits per client\n- **Audit logging**: Comprehensive operation tracking\n- **User confirmation**: Optional confirmation for value transfers\n\nFor complete documentation, see:\n- [MCP Implementation Guide](docs/mcp/TARI_MCP_IMPLEMENTATION.md)\n- [Wallet MCP Server](applications/minotari_mcp_wallet/README.md)\n- [Common MCP Framework](applications/minotari_mcp_common/README.md)\n\nFor more information about the Model Context Protocol, visit [modelcontextprotocol.io](https://modelcontextprotocol.io/specification/2025-03-26).\n\n# Project documentation\n\n- [RFC documents](https://rfc.tari.com) are hosted on Github Pages. The source markdown is in the `RFC` directory.\n- Source code documentation is hosted on [docs.rs](https://docs.rs)\n- [RFC repo](https://github.com/tari-project/rfcs)\n\n## RFC documents\n\nThe RFCs are long-form technical documents proposing changes and features to the Tari network and ecosystem. \nThey are hosted at https://rfc.tari.com, and the RFC repo is at https://github.com/tari-project/rfcs.\n\n### Source code documentation\n\nRun\n\n    cargo doc\n\nto generate the documentation. The generated html sits in `target/doc/`. Alternatively, to open a specific package's documentation directly in your browser, run the following:\n\n    cargo doc -p \u003cpackage\u003e --open\n\n## Conversation channels\n\nWe're generally on [Discord](https://discord.gg/tari).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftari-project%2Ftari","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftari-project%2Ftari","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftari-project%2Ftari/lists"}