Introducing the MerkleMine


Livepeer’s launch on Ethereum’s main net is coming up very soon. Most Livepeer Token (LPT) will be generated through the protocol by participants who do work on the network by staking, transcoding, and delegating. But since one needs token in order to stake to begin doing work in the first place (unless you can get others to stake towards you), there needs to be an initial state of token spread across the potential users of the network. This post is an introduction to an algorithm called the Merkle Mine which is one method for setting up this genesis state.

The Merkle Mine

First of all, note that the Merkle Mine is a technical algorithm. For the full and exact details, you’re best off reading:

Second, please let it be clear that Merkle mining is not proof of work mining.

In summary, a Merkle Mine accomplishes the following:

  1. Participation is open to all users with a certain minimum Ethereum balance at a given block number.
  2. The genesis state contains a merkle root indicating the inclusion of all these accounts in the genesis state.
  3. Users generate their own token by submitting a merkle proof that proves their inclusion in this genesis state. The algorithm for constructing the proof is published, and is in the above linked specification.
  4. Optionally there can be a slow start period in which only accounts can submit their own proofs. Essentially a user can only generate their own token during this period.
  5. After the end of the slow start, the 3rd party mining period beings. During this time any user can submit a proof on behalf of any other user who has not yet generated their token. The newly generated token is split between the caller and receiver, with the proportion of the split growing increasingly in the caller’s favor over time.

The completion of the Merkle Mine generation results in the following outcomes:

  1. A staking protocol can be accessed and participated in by all existing participants in the Ethereum network.
  2. Those who generate their own token can begin participating very early, and note that the protocol uses inflation to allocate work towards those who participate, so taking proactive action works to a user’s benefit.
  3. Over time the incentive to generate token on other’s behalf grows

How to generate Livepeer Token using MyCrypto, MyEtherwallet (Ledger, Trezor support)
Livepeer Genesis and MerkleMine Parameters

For ease of use, the MerkleMine Dapp is here -