Author

Topic: Proposal: PoS by pseudo-random race-condition (Read 2833 times)

full member
Activity: 126
Merit: 100
October 13, 2013, 08:57:49 AM
#1
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...

Please let me know what you think about it...

I think it is quite new in a sense, that you use the previous blocks as a pseudo random number stream. The system uses these random numbers to directly compute a ranking of all public addresses holding some amount of coins. The person with the lowest tk,p is the first one who is able to submit the next block. In case this person is offline, another person will take over the role, just a few seconds or minutes later. So all users will take part in the ranking without even knowing/computing the score of the other users. You just wait until you see that you are eligible to mine the block and nobody else has done it so far.
Jump to: