1
0
forked from cheng/wallet
wallet/docs/manifesto/consensus.md

92 lines
4.1 KiB
Markdown
Raw Permalink Normal View History

---
# katex
title: >-
consensus
sidebar: true
notmine: false
abstract: >-
consensus is a hard problem, and considerably harder when you have shards
Nakomoto Satoshi's implementation of Nakomoto consensus, aptly described
as wading through molasses, failed to scale
---
This document is work in progress, incomplete and inchoerent.
# Failure of Bitcoin consensus to scale
Mining pools, asics
# Monero consensus
RandomX prevented asics, because RandomX mining is best done on a general purpose CPU,
but as Monero got bigger, it came to pass that payouts got bigger. And because
more and more people were trying to mine a block, they got rarer and rarer
So miners joined in mining pools, so as to get smaller, but more regular and
predicable payouts more often. Which destroys the decentralization objective
of mining, giving the central authority running the mining pool dangerously great
power over the blockchain.
Monero's workaround for this is P2Pool, a mining pool without centralization.
But not everyone wants to use P2Pool.
Monero has a big problem with people preferring to mine in big pools, because
of the convenience provided by the dangerously powerful central authority.
It easier for the individual miner to let the center make all the decisions that
matter, but many of these decisions matter to other people, and the center could
make decisions that are contrary to everyone else's interests. Even if the
individual miner is better off than mining solo, this could well make everyone
including the individual miner worse off, because he and everyone may be
adversely affected by other people's decision to pool mine.
# POW
> why do you hate POW? Because of resource waste? I thought it was the
> reason for success of BTC. With proof of share, or proof of stake,
> there will be always discussions of pre-mine, centralization etc.
> Would it be the case?
Hate the resource waste. It offends me. Plus a system that does
not directly handle money, that is a a messaging system between
systems that do handle money, cannot incentivise the
necessary resource waste.
It could bill people for messaging, and the payments could go to the block winner, but then
it would be a dao or yet another crypto currency, and not a neutral platform that other daos
and crypto currencies could use.
Suppose we have a filecoin style proof of spacetime .
Which also wastes resources, but identifies those
peers that are contributing to the network by storing
information and are capable of passing it around,
and have lots of connections to other peers.
All peers that pass the proof of space test become
authorized consensus makers for
a certain number of blocks, say 8192 blocks.
The test is not too hard. Most peers are authorized.
We harvest randomness, possibly from the fact that parties
do not know each other's secret keys, possibly from the
proof of space time test, so that each round, or each group of rounds,
a peer gets a random weight, such that the inverse of the weight is uniformly
distributed between one and two to the fifty sixth
Which means the weight is non uniformly distributed, with a very few peers
having most of the weight.
Each peer goes with the consensus block that has the highest chain of weights that it knows of.
Actually that algorithm has pathologies that could lead to suprising chain re-organisations
-- a slightly more complex algorithm is needed.
Every time a proposed block consensus is shared, it now has addiitional support.\
The weights of the two peers that have that consensus
and have the highest weight of all peers having that consensus is propagated
among all the peers that have that consensus, and the weight of the consensus is the weight of
the lesser of the two peers, plus the weight of the lesser of the two peers of the block it
was built upon that were known to the peer that built upon it at the time he built upon it,
plus the weight of the block that block was built upon, and so on and so forth.
Thus the most well known chain is propagated, becoming more well known. The more
peers that know of a block, the greater the weight of the block.
It is a better algorithm, but a whole lot more work to implement than RandomX POW.