Dual Pool Mining Proxy (DPMP)

Deterministic Stratum v1 infrastructure for intelligent dual-pool mining.

Overview

DPMP is a lightweight, high-reliability Stratum v1 mining proxy designed to sit between one or more miners and two upstream mining pools. It was designed primarily for Bitcoin solo-miners who run one or more ASIC miners (SHA-256) and want to split hash power across compatible coins/pools (i.e., BTC/BCH/DGB). Some miners, like the NerdQAxe++, have a built-in "dual pool mining" feature but the majority of miners out there do not.

So if you have one or more miners that do NOT have a built-in dual-pool mining feature (such as the Canaan Avalon Q or the Nano3S) and you would like, for example, to mine to a BTC pool and a Bitcoin Cash pool simultaneously, then DPMP is for you.

Home Dashboard

Oracle Auto-Balance
Oracle Auto-Balance panel with real-time network hashrate tracking.
Hashrate Allocation Slider
Live Hashrate Allocation slider for manual control.

In terms of allocating hashrate between the two pools, DPMP offers two modes of operation: Oracle Auto-Balance and Manual Hashrate Allocation. The Oracle Auto-Balance mode uses real-time network hashrate data (currently, we support BTC and BCH only) to dynamically adjust pool weights to put more hash power on the coin/pool with the lower relative network hashrate, while the Manual Hashrate Allocation mode allows users to set a fixed percentage of hashrate to each pool using an intuitive slider interface.

The Manual Hashrate Allocation pane is always available regardless of the pools you are mining to. So, for example, you could be mining to a Bitcoin pool and a Bitcoin Cash pool, or a Bitcoin Cash pool and a Digibyte pool, or two different Bitcoin pools...it doesn't matter, the Manual Hashrate slider will always be available.

For the Oracle Auto-Balance pane to be available, you MUST be mining to a Bitcoin pool and a Bitcoin Cash pool because those are the only two coins that we currently measure realtime network hashrate for (we hope to add others in the future). When you first set up your pools on the DPMP Config tab (e.g., Pool A Settings and Pool B Settings), in the Chain dropdown box you must select BCH for your Bitcoin Cash pool and BTC for your Bitcoin pool. Then you must check the 'Enable Auto-Balance' box in the Scheduler settings section. Once you make those changes and click on the APPLY + RESTART button, you will see the Oracle Auto-Balance pane on the Home tab of the DPMP Dashboard.

Note: You can switch between Auto-Balance and Manual Hashrate Allocation at any time by clicking on the button at the top-right of each pane, no restart required.

Metrics & Stats

Stats
Worker and pool-level metrics with SumDiff tracking.

Worker & Pool Stats

The Stats tab in the DPMP dashboard provides detailed metrics and statistics for each worker and pool. The Worker table includes hashrate, current difficulty, shares-per-second, best share, and rejected shares.

The Pool table shows pool name, slot, associated coin, latency, accepted/rejected shares, jobs, and total accepted difficulty (SumDiff).

Both tables can be sorted by clicking on any column header.

Configuration & Logs

Config
Full configuration interface with scheduler controls.
Logs
Structured JSON logs with downloadable export.

The Config tab is organized into sections, including Logging Settings, Pool Settings, and Scheduler Settings. Pool Settings is where you will define the two pools to be used in DPMP. If you want to utilize the Oracle Auto-Balance feature, you must configure a bitcoin-mining pool and a bitcoin-cash mining pool and assign the correct coin to each pool, and you must also check the 'Enable Auto-Balance' checkbox in the Scheduler Settings section.

The Logs tab provides a real-time view of DPMP's structured JSON logs, which include detailed information about miner connections, share submissions, pool interactions, and any errors or warnings. Logs can be filtered by event name, and exported (in Zip format) for further analysis or troubleshooting. You can configure the specific logging events to display in the Logging Settings section of the Config tab.

Pool Configuration

For each pool, you must supply a Host URL, the Port being used, and the Wallet Address you want to use with that pool. Optionally, you can assign a pool name (used only in the Pool Stats table on the Stats tab), and you can assign the associated coin in the Chain dropdown box. This is only necessary if you intend to use the Oracle Auto-Balance feature and, if you do, you will need to set up a Bitcoin and a Bitcoin Cash pool since those are the only two coins currently supported. When inputting your wallet addresses, be sure to double-check your work since any payouts will be sent to the wallet addresses that you define here.

Miner Configuration

When setting up your miners, you should point them to the IP address of the box on which you are running the DPMP proxy and you should use port 3351. For the wallet address, you can use any address you like since it won't be used (the wallet addresses defined on the DPMP Config tab are the only wallet addresses that the pools will see). You should append your workername to the end of the wallet address using a period to separate the two (i.e., '[wallet-address].[workername]'). Once you begin mining, DPMP will ignore any wallet addresses sent by your miner(s) and will strip out just the workername. When communicating with each pool, DPMP will use only the wallet addresses you defined in Pool A Settings and Pool B Settings, and it will append the workername it obtained from each miner.

Availability

DPMP is currently available for one-click install (umbrelOS 1.5) in our Umbrel Community App Store. We also have a bare-metal install available in our dpmpv2 repo.


If you would like to support the DPMP project, please consider a donation to either of the following addresses:

Bitcoin (BTC): bc1q9qrn7lsdnpy8w33dsdnu6cr4jdpg53zexgxh59
Bitcoin Cash (BCH): bitcoincash:qqlldmmc978u5u7uzas8cakxgfftraquxvjhcc8a3q

Questions or Comments? Contact us at: dpmp.project@gmail.com