Merkle Mine —A short note

Keerthi Nelaturu
Coinmonks

--

https://forum.livepeer.org/t/introducing-the-merklemine/204

What is Merkle Mine ?

Merkle mine is an algorithmic process of generating initial tokens for interested participants in a staking protocol. In today’s ecosystems when a new staking protocol needs to be deployed, tokens are distributed by having ICOs or by airdropping, both of which are deemed to concentrated token distribution.

Merkle mining facilitates a decentralized process to generate a genesis state for Proof of Stake (POS) protocols.

What it tries to achieve ?

It’s a unique way of token distribution to avoid concentrated participation across the network. It will be one of the first algorithmic process any staking protocol can use for starting the initial state of the network.

How it works ?

It’s a two-step process.

First Step — the slow start period (3 months).

The protocol is launched by creating the genesis state in effect setting certain Merkle parameters. The parameters are evaluated based on a snapshot of the Ethereum network at a certain block height.

Ex: For main net release, Livepeer protocol has chosen to take snapshot at a block height 5264265. At this block height, they collected account addresses of all the Ethereum accounts who have a balance > 0.1 ETH. This is the minimum staking amount required for participating in the Livepeer protocol. The total number of accounts having that balance at that block turned out to be around 2598071. Each account will be eligible to receive 2.44 LTP tokens. By this they generated a total of 6,343,700 LTP tokens (2598071 * 2.44) in the genesis state.

To claim their respective 2.44 LTP tokens, one must submit a proof and the proof will have to confirm two things:

1. The account was included in the snapshot at the genesis state.

2. The account had the 0.1 ETH balance when the snapshot was taken.

If unclaimed, the tokens will remain to be claimed by others in the second stage of merkle mining.

Second Step — The claiming period starts after 3 months and lasts for 15 months.

In this stage, proofs can be submitted by not only the account holders included in genesis state, but also external ETH accounts. The external account are submitting proofs on behalf of the already included accounts.

Ex: There is an account Alice who has 0.1 ETH at the time of snapshot. Alice has not claimed 2.44 LTP before slow start period. Then Bob who can be either included/not included in the genesis state, can submit a proof on behalf of Alice. Once accepted, the token will be distributed between Bob and Alice depending on conditions in the Merkle Mine algorithm e.g. how far in the claiming period is Bob submitted the proof.

Bob can submit proofs on behalf of any number of unclaimed account holders. There is no restriction on this.

Assumption is the tokens remaining will be claimed by the end of the 15 month period. After this claiming period, the merkle mining process ends.

Where it was implemented ?

Currently, Livepeer is the first protocol using this Merkle Mine process. They are the ones who proposed this algorithm and have provided tools for calculating and submitting proofs.. Their code is open sourced on GitHub.

Issues

In order to submit proofs, the accounts need to use gas. At one point during the claiming period, 30% of network gas was because of the Livepeer transactions. There should be some way to limit the storage requirements for each of these transactions.

Useful Links

  1. Introduction to Merkle Mine — https://forum.livepeer.org/t/introducing-the-merklemine/204
  2. Github Repo for Merkle Mine — https://github.com/livepeer/merkle-mine
  3. Technical Specification — https://github.com/livepeer/merkle-mine/blob/master/SPEC.md
  4. Livepeer token Miner — https://github.com/livepeer/minecraft
Read Today’s Top story

Get Best Software Deals Directly In Your Inbox

--

--

Keerthi Nelaturu
Coinmonks

PhD Candidate at University of Toronto. Want to learn and write about everything in Computer Science. Photographer.