Bitcoin Forum
May 07, 2024, 04:53:13 AM *
News: Latest Bitcoin Core release: 27.0 [Torrent]
 
  Home Help Search Login Register More  
  Show Posts
Pages: [1]
1  Bitcoin / Bitcoin Discussion / Proof-of-Nominal-Work on: March 26, 2014, 01:49:46 PM
This is a proposal of an alternative Proof, I call it Proof-of-Nominal-Work. The idea of nominal work is borrowed from Proof-of-Stake.


We should set restrictions on who has the right to generate a particular block (let's call them privileged miners).
If only a few miners have the right to generate a particular block, and who particularly is determined by the transactions history and couldn't be calculated beforehand, than there is a probability that an attacker will not be among privileged miners.

The more miners there are, the greater is the probability that an attacker will be unlucky. And if mining requires so little resources that it can be performed on a smartphone, then there are no reason why all users can't be miners.

Actually we should not totally forbid other miners to generate blocks (so that not to stop transaction processing forever in case all the privileged miners are offline), but rather make them generate blocks much slower than the privileged miners.




Details.
=====
We introduce a notion of nominal hashing power. We set two predefined values of nominal hashing power: one for privileged miners (BigPower) and a default one (SmallPower). The BigPower must be many times greater than SmallPower, for example, SmallPower is 1 hash per second and BigPower is 100 hashes per second.

We also introduce a notion of nominal block generation time. Nominal time is calculated by dividing block's nonce by nominal hashing power of the miner who generated the block. For example, if the nonce of the block is 3011, and it was generated by a privileged miner, its nominal time is 30.11 seconds, but if it was generated not by a privileged miner, its nominal time is 3011 seconds.

As in PoW, we set such difficulty which with BigPower gives us blocks every desired period of time. Since real hashing power of even the slowest processor is much greater than 100 hashes per second, a block generation will take only a part of a second.





Block generation.
=================
Block generation is performed like in PoW, except that a block must be signed by the miner before calculating block's hash, so that nodes who will later receive the block may know which nominal hashing power value to use to calculate block's nominal time.

Block acceptance
=================
2) When chosing which block to accept nodes compare their nominal times.

Choosing miners
===============
Privileged miners for a particular block are determined by an earlier block many blocks deeper in the chain and transactions in some many blocks peceding that block. For example, privileged miners for block 3027 are determined by block 2027 and transactions in blocks 1027 through 2026.

Algorithm:

while(required number of miners are not chosen){
    winner_transaction = (hash % number_of_transactions) + 1;
    if (not winner_transaction_address in privileged_miners){
        privileged_miners[] = winner_transaction_address;
    }
    hash += 1;
}



Why
===============
Using nominal work instead of real work lets perform mining on smartphones, it gives us millions of miners online. Big number of miners makes it possible to choose smaller percent of them as Privileged Miners thus reducing the chance of an attacker to be among them while still keeping high probability that at least some of honest privileged miners will be online.

Determining privileged miners by a block that is many blocks deep in the chain makes it harder for an attacker to successfully build sufficiently long blockchain, because he must be lucky many times in a row.


Considerations
==============
Concerning double spending: the shorter block generation time, the longer chain an attaker will have to build for the same period of time, the less is probability that he can do it long enough so to wait until he receives what he paid for, the less time a seller will have to wait to be reasonably sure that the payment he received will not be reverted.


The more transactions ordinary users will make, the more difficult and more expensive (if transaction fee is required) it is for an attacker to increase his chances to become a privileged miner. So this solution will better work with a demurrage and widely used currency. 

Pages: [1]
Powered by MySQL Powered by PHP Powered by SMF 1.1.19 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!