1
0
forked from cheng/wallet
wallet/docs/manifesto/consensus.md
reaction.la 4721988d95
Fixed my plan for making SWIFT into Bitmessage,
added a link to it from socil networking
2024-08-06 16:37:28 +08:00

4.1 KiB

# 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.