{"id":25970562,"url":"https://github.com/gideonbature/bitcoin-gui-rs","last_synced_at":"2026-02-14T02:03:45.322Z","repository":{"id":280664331,"uuid":"938433352","full_name":"GideonBature/bitcoin-gui-rs","owner":"GideonBature","description":"- A POC GUI outside of Bitcoin Core using multiprocess - using the Tauri rust GUI framework","archived":false,"fork":false,"pushed_at":"2025-03-21T01:12:04.000Z","size":162398,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-07T14:37:54.088Z","etag":null,"topics":["bitcoin","gui","poc","rust","tauri"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/GideonBature.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2025-02-25T00:22:41.000Z","updated_at":"2025-03-21T01:12:08.000Z","dependencies_parsed_at":"2025-03-04T17:38:17.876Z","dependency_job_id":null,"html_url":"https://github.com/GideonBature/bitcoin-gui-rs","commit_stats":null,"previous_names":["gideonbature/bitcoin-gui-rs"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/GideonBature/bitcoin-gui-rs","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GideonBature%2Fbitcoin-gui-rs","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GideonBature%2Fbitcoin-gui-rs/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GideonBature%2Fbitcoin-gui-rs/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GideonBature%2Fbitcoin-gui-rs/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/GideonBature","download_url":"https://codeload.github.com/GideonBature/bitcoin-gui-rs/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GideonBature%2Fbitcoin-gui-rs/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29431593,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-13T22:20:51.549Z","status":"online","status_checked_at":"2026-02-14T02:00:07.626Z","response_time":53,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["bitcoin","gui","poc","rust","tauri"],"created_at":"2025-03-04T23:17:46.785Z","updated_at":"2026-02-14T02:03:45.317Z","avatar_url":"https://github.com/GideonBature.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003c!-- # Tauri + React + Typescript\n\nThis template should help get you started developing with Tauri, React and Typescript in Vite.\n\n## Recommended IDE Setup\n\n- [VS Code](https://code.visualstudio.com/) + [Tauri](https://marketplace.visualstudio.com/items?itemName=tauri-apps.tauri-vscode) + [rust-analyzer](https://marketplace.visualstudio.com/items?itemName=rust-lang.rust-analyzer) --\u003e\n\n# bitcoin-gui-rs\n\n## Overview\n\n`bitcoin-gui-rs` is a Proof of Concept (POC) for a standalone GUI application that interacts with Bitcoin Core using a Rust-based GUI framework (Tauri). Bitcoin Core's multiprocess feature separates its components into different executables (`bitcoin-node`, `bitcoin-wallet`, `bitcoin-gui`), and each of them can be run as different processes, with the `bitcoin-node` connected to the bitcoin network and the `bitcoin-wallet` and `bitcoin-gui` connected to the `bitcoin-node` through a socket pair, using an IPC for communication between them everything through a capnp proton, but in this POC, the GUI is treated as an independent binary (`bitcoin-node`) that communicates with Bitcoin Core via a Rust IPC interface.\n\nYou can check more about Bitcoin Multiprocess from this [document](https://github.com/ryanofsky/bitcoin/blob/pr/ipc/doc/design/multiprocess.md) by ryanofsky. This work was heavily inspired by His work.\n\n## Features\n- Standalone GUI built with Rust (Tauri).\n- Communicates with Bitcoin Core through an IPC interface.\n- Supports interactions with the Bitcoin Core Regtest network.\n- Provides basic chain functionalities.\n\n## Prerequisites\n\nEnsure you have the following dependencies installed:\n\n1. **System Dependencies (Linux, macOS, Windows)** - [System Dependencies](https://v2.tauri.app/start/prerequisites/#system-dependencies)\n2. **Rust** – [Rust](https://v2.tauri.app/start/prerequisites/#rust)\n3. **Compile Bitcoin Core Build (with multiprocess enabled - PR #29409)**\n\n    ```sh\n    # Clone Bitcoin Core and checkout the PR\n    git clone https://github.com/bitcoin/bitcoin.git\n    cd bitcoin\n    git fetch origin pull/29409/head:pr29409\n    git checkout pr29409\n\n    # Build dependencies with multiprocess support\n    make -C depends HOST=aarch64-apple-darwin MULTIPROCESS=1 NO_QT=1\n\n    # Configure and build Bitcoin Core\n    export HOST_PLATFORM=\"aarch64-apple-darwin\"\n\n    # Build (works for macOS)\n    cmake -B multiprocbuild/ \\\n        --toolchain=depends/$HOST_PLATFORM/toolchain.cmake \\\n        -DOPENSSL_ROOT_DIR=/opt/homebrew/opt/openssl@3 \\\n        -DOPENSSL_CRYPTO_LIBRARY=/opt/homebrew/opt/openssl@3/lib/libcrypto.dylib \\\n        -DOPENSSL_SSL_LIBRARY=/opt/homebrew/opt/openssl@3/lib/libssl.dylib \\\n        -DOPENSSL_INCLUDE_DIR=/opt/homebrew/opt/openssl@3/include \\\n        -DZLIB_ROOT=/opt/homebrew/opt/zlib \\\n        -DZLIB_LIBRARY=/opt/homebrew/opt/zlib/lib/libz.dylib \\\n        -DZLIB_INCLUDE_DIR=/opt/homebrew/opt/zlib/include\n\n    # Final build process\n    cmake --build multiprocbuild/ --parallel $(sysctl -n hw.logicalcpu)\n    ```\n\n## Setting up the Development Environment\n\n### 1. Start Bitcoin Core in Regtest Mode\n\nRegtest (Regression Test Mode) allows local Bitcoin connect which is great for quickly testing out the bitcoin blockchain without connecting to the mainnet nor testnet.\n\n- **Run two regtest nodes, one `bitcoind` and one `bitcoin-node`**\n\n    Inorder to have a readily available funded wallet, we'll use a `bitcoind` with a regular Bitcoin Core wallet on it, connected to the `bitcoin-node` node.\n\n    Start the `bitcoind` node, create a wallet on it (I'll call it bene), and fund the wallet by mining some blocks:\n\n    ```sh\n    mkdir regular_bitcoind_wallet\n\n    ./multiprocbuild/src/bitcoind -regtest -datadir=$PWD/regular_bitcoind_wallet -daemon\n\n    ./multiprocbuild/src/bitcoin-cli -regtest -datadir=$PWD/regular_bitcoind_wallet createwallet bene\n\n    ./multiprocbuild/src/bitcoin-cli -regtest -datadir=$PWD/regular_bitcoind_wallet -rpcwallet=bene generatetoaddress 110 $(./multiprocbuild/src/bitcoin-cli -regtest -datadir=$PWD/regular_bitcoind_wallet -rpcwallet=bene getnewaddress)\n    ```\n    Alternatively, you can just start the `bitcoind` without a wallet using the command:\n    ```sh\n    bitcoind --regtest\n    ```\n\n    Now start the `bitcoin-node` node in a different datadir, connected to the first node, with no JSONRPC server:\n    ```sh\n    mkdir datadir_bitcoin-node\n\n    ./multiprocbuild/src/bitcoin-node -regtest -datadir=$PWD/datadir_bdk_wallet -server=0 -port=19444 -connect=127.0.0.1:18444 -ipcbind=unix -debug=ipc\n    ```\n    Take note of the *`-ipcbind=unix`* to create the interface and optional *`-debug=ipc`* to observe IPC messages.\n\n## Usage\n\n### Run the Tauri Application\n\n1. Clone this repository and navigate to the project directory:\n```sh\n# clone the repository\ngit clone https://github.com/GideonBature/bitcoin-gui-rs.git\n\n# move into the project directory\ncd bitcoin-gui-rs/bitcoin-gui\n```\n\n2. Install dependencies:\n```sh\nnpm install  # or yarn install\n```\n3.  Rename `.env.example` to `.env` and add the path to the socket file created by running bitcoin-node in regtest with multiprocess.\n```rust\nSOCKET_PATH=\"/path/to/bitcoin-core/socket/file.sock\";\n```\n\n4. Run the application:\n```sh\nnpm run tauri dev\n```\n- The bitcoin-gui will open with a dashboard as shown below:\n![Bitcoin GUI Dashboard](./gui-images/Rust%20GUI%20Dashboard.png)\nFor now only the some of the Blockchain functions have been implemented, others will still be added.\n\n- To check for some Blockchain Information, simply click on `Blockchain Information` button and you will be met with the `Bitcoin Information Dashboard` as shown in the image below:\n\n    ![Blockchain Information Dashboard](./gui-images/Blockchain%20Information%20Dashboard.png)\n\n- To check for Blockchain Tip Block Count, simply click on `Get Block Count` button and you will get the `Chain Tip Block Count` as shown in the image below:\n\n    ![Blockchain Get Block Count](./gui-images/GetBlockCount.png)\n\n- To check for Blockchain Tip Block Hash, simply click on `Get Best Block Hash` button and you will get the `Chain Tip Block Hash` as shown in the image below:\n\n    ![Blockchain Get Block Hash](./gui-images/GetBlockHash.png)\n\n- To check for Blockchain Block Hash (by height), simply click on `Get Block Hash` button on the `Get Block Hash (by Height)` component and you will get the `Block Hash` of any block at a height as shown in the image below:\n\n    ![Blockchain Get Block Hash](./gui-images/GetBlockHash(byHeight).png)\n\n- To check for Blockchain Block Information (by height), simply click on `Get Block` button on the `Get Block (by Height)` component and you will get the `Block Information` of any block at a height as shown in the image below:\n\n    ![Blockchain Get Block Hash](./gui-images/GetBlockByHeight.png)\n\n## Note\nThis project is in no way production ready, with some functions both from the bitcoin-node and bitcoin-wallet that are yet to be implemented. For now it is still in active development.\n\n## Acknowledgements\n\nI found this [bitcoin-ipc tool](https://github.com/bitcoin-dev-tools/bitcoin-ipc) useful for generating a rust IPC interface for bitcoin core via rust-capnproto. Also, was inspired by pseudorandom's work on [BlockTalk](https://github.com/pseudoramdom/BlockConnect/tree/main).\n\n## Contributing\nFeel free to open issues and pull requests to improve the project.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgideonbature%2Fbitcoin-gui-rs","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgideonbature%2Fbitcoin-gui-rs","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgideonbature%2Fbitcoin-gui-rs/lists"}