Bitcoin Forum
February 02, 2023, 10:34:58 AM
 News: Latest Bitcoin Core release: 24.0.1 [Torrent]
 Home Help Search Login Register More
 Pages: [1]
 Author Topic: Proposal: PoS by pseudo-random race-condition  (Read 2798 times)
nomailing (OP)
Full Member

Offline

Activity: 126
Merit: 100

 October 13, 2013, 01:57:49 PMLast edit: December 05, 2013, 05:12:24 PM by nomailing

I would like to propose a simple PoS system, which I haven't seen proposed so far anywhere. Please let me know if you see a flaw in it or if you know that it was already proposed before.

The idea is the following:
The algorithm determines pseudo-randomly who is allowed to mine the next proof-of-stake block based on their public address and the corresponding balance in that address and the time since the last block was mined.

A person with public address p is eligible to mine the next proof-of-stake block k at unixtime:
tk,p = tk-1 + hash(p XOR rk) alpha / Ap + beta

where
• tk-1 is the unixtime of the last mined block,
• Ap is the amount of coins stored in public address p,
• alpha and beta are two globally adjusted parameters that control the mean frequency of new blocks (i.e. 10 minutes), and the standarddeviation (i.e. 5 minutes) of the block mining frequency
• rk is a pseudo random number that is generated in the same way at all nodes by concatenating certain bits of the hashes of previous block headers hk-N-1, hk-N-2,... in the following way:
rk=hash(hk-N-256)[1] hash(hk-N-255)[2] ... hash(hk-N-1)[256]
where the square brackets indicate which bit to use from the corresponding hash. Importantly, these pseudo random numbers rk are constituted by just one bit per previous block hash. This assures that no single party can take over the blockchain.

All nodes in the network will apply these rules and will not broadcast blocks with block height k from a person with address p, if the block is received before tk,p.
I think this system has major advantages in comparison to the other PoS systems proposed so far:
It is much easier to understand. You don't have to put your coins into some mechanism before you can mine PoS blocks. Furthermore it has no network overhead in comparison to PoW mining. If you set the network parameter N quite high, then the users will know pretty much in advance when they are eligible to mine a block.

Of course, there are some more details which I haven't described here yet. For example, the system has to penalize a person if he submits to different blocks when he is eligible to mine the PoS block. Furthermore there is a slightly more complicated algorithm which would have to determine which blockchain to follow in case of a chain split...