The EIP 918 Minable token standard — http://eips.ethereum.org/EIPS/eip-918 — has a specification for merge mining but as of yet that hasn’t been an implementation of it on the main net.
With 0xLitecoin — http://0xltc.org — I have released the first implementation of the merge mining based on the EIP918 spec. The article as described below is currently live in http://mike.rs Mike.rs’ pool and exists on this smart contract:
What is Merge Mining?
Merged mining is the process of allowing two different crypto currencies based on the same algorithm to be mined simultaneously. Miners of 0xBitcoin can automatically become miners of 0xBitcoin and 0xLitecoin if their mining pool supports merge mining. Additionally the standard allows for many tokens to be simultaneously merge-mined, allowing for a new explosion of PoW mined ethereum tokens.
Technically, how does Merge Mining work?
First an explanation of 0xBitcoin mining:
When a miner mines 0xBitcoin, they are finding a Nonce (an arbitrary number that can be used just once) that when hashed with the miner’s ethereum address (the pool’s address, or if solo mining the solo miners address, or if a mint helper contract is used, the mint helper contract’s address) and the current challenge for 0xBitcoin. A nonce is repeatedly selected such that the nonce, eth address and challenge when hashed together, are less than the mining target of the contract. The mining target is inversely related to the difficulty ( high difficulty, low mining target)
A general mining function written in python for finding a valid nonce for mined token 0xbitcoin, is as follows:
def mine(challenge, public_address, mining_target):
nonce = generate_random_number()
hash1 = int(sha3.keccak_256(challenge+public_address+nonce).hexdigest(), 16)
if hash1 < mining_target:
return nonce, hash1
How does Merge Mining work?
0xLTC actually uses the same algorithm for mining and the exact same challenge as 0xBitcoin. This means that a valid nonce (solution) for 0xBitcoin can be fully accepted by the 0xLTC contract and vice-versa. Metaphorically, tokens for 0xLTC and 0xBTC are both locked inside of the contract using the same “lock” and can both be unlocked with the same key.
A mining pool can take care of the technical implementations of this, so a token miner running any of the open source token miners linked here simply needs to point their miner at the pool, and they will be mining 0xBitcoin, 0xLTC and any future merge mined tokens supported by the pool!
Why and what’s next?
The “Why” of 0xLitecoin is to demonstrate how new tokens can be created, that are:
- distributed to, and don’t distract miners away from 0xBitcoin
- don’t have an ICO or require any expenditure of capital from token earners
- sets a new standard for future mineable tokens to take instead of taking an ICO
I will feel that the token merge mining standard will have success when a platform that had their sites on doing an ICO and instead chooses to make their token merge-mined with 0xBitcoin, launches their own compatible open source pool and finds success with their utility token without requiring the potentially fraud filled ICO path.
Why is it named 0xLitecoin?
Litecoin is very similar to bitcoin, the main differences are the mining algorithm, the block times which allow faster transfers and the idea that there are 4x as many coins distributed in 10 minutes. I wanted to launch a merge-mining token that can be different from 0xBitcoin, and have the differences be undestood. 0xLitecoin has 4 times as many tokens distributed per 0xBitcoin mint, just like litecoin vs bitcoin.
This stack overflow write up of how merge mining works for bitcoin and name coin is very clear https://bitcoin.stackexchange.com/a/275 keep in mind that token mining has some differences, as token mining does not directly secure the block chain, but instead work contributes to token distribution.
- There’s a brand new token called 0xLitecoin that is merge mined with 0xBitcoin
- Mining 0xBTC on Mike.rs’ pool will also give you 0xLTC (more pools to come)
- When minting a block of 0xBTC a message can be sent to the 0xLTC contract which releases a block of 0xLTC as well — this is token merge mining.
- As new mineable tokens are created, if they are merge mined with 0xBitcoin, it keeps their hash power fully on 0xBitcoin, and doesn’t detract hash power away from 0xBitcoin for the new token.
- The difficulty of 0xLTC is the same as 0xBTC so there’s no gas bid war stuff like with other new mineable tokens