How MIX Blockchain will prevent 51% attacks

Jonathan Brown
MIX Blockchain
Published in
3 min readJan 16, 2019

With even Ethereum Classic having a successful 51% attack it has become abundantly clear that merely following the chain with the the most work done is not sufficient security for proof-of-work blockchains.

I have devised 3-layer system for MIX Blockchain that massively improves security and finality. It can be implemented on any PoW blockchain.

Layer 1: Maximum re-org depth

Each node will accept a maximum chain re-org depth of 64 blocks. This is similar to what Bitcoin Cash have implemented.

Of course, this protection assumes the attacker merely tries to re-org the chain as a whole. A more sophisticated attacker can still perform a double-spend. After making a deposit to an exchange the attacker would wait for 63 blocks to be mined, then send a single block directly to the node of the exchange. Simultaneously the attacker would send a re-org with a double-spend to all the other nodes on the network. This way the exchange thinks it has received the deposit and the rest of the network thinks it has gone somewhere else.

This is a much harder attack to pull off. The IP address of the exchange’s node would have to be determined and software would have to be written to send the right blocks to the right nodes at exactly the right time. It would certainly be possible, though.

Layer 2: Double spend detection

Because no node will re-org after 64 blocks nodes can have very high confidence in information about forks that currently exist on the network.

An exchange can detect a fork and even check for a specific double-spend.

This way, a transaction can have finality after < 20 mins.

Layer 3: Node reconciliation

If nodes do get forked off the main chain due to an attack like this they will want to have a deep re-org to rejoin the majority chain.

Because this only happens in extreme circumstances, the bar to decide which chain is being mined by the majority can be set very high. Once the chain a node is following is sufficiently far behind another chain, the node will re-org to join the longest chain.

Because MIX has a low hash rate, a node should probably wait until another chain is 24 hours ahead before deep re-orging. This can be reduced as hash rate increases.

Note that when a node is stuck on the wrong chain, it will still get a fairly good representation of the state. Even when the attacker stops mining, a node following that chain will still get all the transactions in the pending block until it switches to the longest chain.

Of course, a node operator can manually direct the node to follow a specific chain also.

Implementation

There are two full-node implementations for MIX: Parity and MIX Geth.

Stock Parity already supports stage 1 with the following parameters:

--pruning=fast --pruning-history=64 --pruning-memory=0

MIX Geth will be updated in the next few days to implement the max re-org depth.

For stages 2 & 3 I will hire developers to implement and fully test these features in Parity and MIX Geth.

--

--