Table of Contents
"Merged mining works like this, you have two totally separate block chains, they are not related in any way nor does either contain any data from the other. When you mine you generate hashes that may be the solution to the current block, this is very very improbable per hash, its like a lottery where everyone generates tickets until someone finds the winning one. Normally you make tickets and check them against the Bitcoin block chain to see if they are the solution. With merged mining you create a ticket and check it against both the Bitcoin block chain and the Namecoin block chain, Bitcoin and Namecoin know nothing about each other, they are two totally different lotteries with different winning numbers, you just sent a copy of your ticket to both. Since you are sending the same ticket to two lotteries you increase your chances of winning one or the other. No Bitcoin data goes into Namecoin no Namecoin data into Bitcoin they remain totally separate, you simply run both the Namecoin and Bitcoin clients on the same machine and submit hashes to both networks, if your hash is the solution to the Namecoin block you get Namecoins if you hash is the solution to the Bitcoin block you get Bitcoins, its exactly like if you where mining on just one network, except you submit the same work twice."
The major goal of this change - proposed by vinced - is to use one miner to mine (at least) two blockchains. For that reason you'll have one parent blockchain and at least one auxiliary blockchain. As the most common usage of merged mining will be merging the mining of bitcoin/namecoin we'll assume bitcoin as parent blockchain and namecoin as auxiliary blockchain throughout the document. The technical fundamentals have been outlined by Mike Hearn The proof of concept has been coded by vinced and is already ready for testing (see resources).
- Namecoin Forum
- Bitcoin Forum
- GitHub code repository
- Projects README
- Technical Fundamentals
- stackexchange re: Merged Mining
- Increased network security for both block chains (more hashing power, as you no longer need to choose between mining one or the other).
- Mining becomes more profitable (mining two currencies at the same hash rate for the same kWh. If you don't care about Namecoin you can just sell the mined NMC for BTC).
- It is possible to have several auxiliary blockchains. Thus if there are more bitcoinlike implementations they all might have a better start as long as pool operators are willing to add them to their pools.
For bitcoin users and miners in general it's a low hanging fruit BUT:
- For namecoin users this means a major change, as the blockchains won't be compatible between the version below block 19200 and above 19200.
- This all is completely untested. Okay, not completely. But it is in review and testing stage.
- A further daemon means more overhead for pool operators. However if merged mining gets common it might make sense to integrate it into pushpoold
- The pool operator has to administrate (at least) two blockchains.
- As long as the bitcoind parent patch is not in the stock bitcoind, pool operators have to patch bitcoind
- Pool operators who want to use merged mining need to adapt it to their pool frontend
- In theory a miner doesn't know if his pool does merged mining. Thus a pool operator could take all the coins from aux chain for himself. But I guess if you are not trusting your pool operator you are mining solo anyway.
There are separate repositories for namecoind an bitcoind with merged mining support. You can check out either of the source code and compile it like you are used to. There are no additional dependencies.
For namecoind grab the latest version from vinceds repo and follow the instructions found in the doc directory for your platform or just use the latest version from dot-bit main page. The current implementation starts merged mining on block 19200 on production blockchain and on block 0 if you have configured testnet blockchain.
Download the latest version from vinceds merged mine repository and follow the instructions found in the doc directory for your platform
merged-mine-proxy is a python script. Please download the latest version from vinceds mergedmine repo
If you want to participate in testing please use one of the pools below. Please keep in mind that the software may not considered as stable at the moment. Most pools are in alpha/testing mode and are running on testnet. Thus don't expect to get any payouts from the pools. Use them only for testing.
This is the alpha version of MasterPool:
At the moment we are in the process of testing miners. You can easily participate testing untested miners by pointing your miners to one of the testing Pools.
|Miner||Mining Proxy||Merged Mining||Pool|
|cpuminer||1.0.2||n/a||n/a||RC3||OK||Tested by nodemaster|
|Phoenix + phatk||1.48||Bitcoin Mining Proxy||RC3||OK||Tested by nodemaster|
|Phoenix + phatk||1.50||Flexible Mining Proxy||RC3||OK||Forum|
|Phoenix + poclbm||1.50||Flexible Mining Proxy||RC3||OK||Forum|
There is no need to change anything for the client (he miner). The user still get one URL and port and is supposed to point his miner to that direction. The change thus is completely transparent for the miner. He won't even recognize that he is mining on more than one blockchain. However for the pools there are some major changes if (and only then) they want to support merged mining. The bitcoind (as parent blockchain) needs to be patched. An appropriate patch has been created by vinced. Namecoind (as auxiliary blockchain) need to be changed (done by vinced, too) and you'll need an additional daemon that makes sure that the results are added to both blockchains. This daemon is called merged-mine-proxy and is already ready for testing (again, coded by vinced).
In order to verify that a client has done hashing on the namecoin blockchain it is nessecary to add a proof that the work has been done on the bitcoin blockchain to the namecoin blockchain. In order to make it possible to have this proof created by the bitcoin blockchain the bitcoind needs a patch. This patch makes it possible for the bitcoind to cryptograhically sign, that there there was work submitted to the namecoin blockchain as well.
Status: Patch ready for testing. Need to ask if it gets implemented to stock bitcoind
The namecoind now needs to accept the cryptographically signed proof from the bitcoind.
Status: Patch ready for testing. Proposed for block 19200.
This is the daemon all miners connect to. The daemon itself knows how to connect to the bitcoind and the namecoind checking if shares are valid for one of its downstream blockchains. Furthermore it requests getworks from the parent (which must be patched, see above) and delivers it to the miners.
Status: Ready for testing. Implemented using python.
We need more or less an entire namecoind update for all users at the same time. This is no easy going. All users need to be prepared. As blocks generated with the namecoind with merged mining patch will be rejected by older clients and vice versa. This is one reason why we use bitcoind as parent. Using bitcoind as aux blockchain would nearly be impossible as there are way too many clients that would need to be updated. Using bitcoind as parent gives a smooth migration path for bitcoin users. But bear with the poor namecoin users who need time.
No, not at all. The old blocks are checked based on the old rules. Thus you don't need to worry.
Yes. To cite vinced: "This means a majority of the hash power must upgrade." At the moment all blocks generated with the new code from the repository given above are rejected by the network. Means they'll get orpahend/invalid. At block X all needs to change, because only one blockchain will survive.
No. The patches are only relevant for pool operators. However it might be possible that the patch gets included into an upcoming bitcoin release.
No. Your miners will still work like before.
No. You are still able to only mine for namecoins. But you have to upgrade namecoind on block X like every users because only one blockchain will survive. Regarding bitcoins you are still able to have a bitcoin only pool. Here you have no need to upgrade bitcoind. Just ignore the merged mining hype. No need to worry about blockchains.
Long pollings might be issued if a new block is generated on one of the blockchains. But this will result in getting new work for both blockchains. On the other hand you could decide to use long polling only on the blockchains which seems better for you. This however would disable long polling for the other blockchain.
Yes. nodemaster already did a quick test and it seems to work. Just point you pushpoold to a properly configured merged-mine-proxy instead of namecoind.