seredat / karbowanec

Karbo (Karbovanets) - Digital Exchange Medium - cryptocurrency made in Ukraine, CryptoNote protocol implementation.
https://karbo.io/
Other
104 stars 66 forks source link

Signed Proof-of-Work #146

Closed aivve closed 2 years ago

aivve commented 3 years ago

“Marathon Digital Holdings announced on March 30, 2021 the launching of the first Bitcoin mining pool in North America that is fully compliant with the United States regulations, including anti-money laundering and the Office of Foreign Asset Control's standards. The mining process will include an algorithm that is able to exclude transactions from personas that are named on the Department of Treasury's Specially Designated Nationals and Blocked Persons List".

This reminds us of the importance of censorship resistance and proves that any centralization of mining, including mining pools is bad.

Therefore, hereby we are introducing botnet and mining pools resistant solo mining approach, called “Signed Proof-of-Work”. The main idea behind SPoW is to sign header data with the private key of the miner and that the address in the coinbase transaction corresponds to this key. For CryptoNote this is a bit more complicated to implement but we made it.

Authors: @volbil, @aivve

Same as https://github.com/Karbovanets/karbo/pull/28

Blockchain dependant hash is used to strengthen botnets and pools resistance.

Instead of payment proof in initial Karbo2 proposal, the miner's view_private_key is used to prevent pool operator from issuing only spend_private_key to miners, because without view_private_key it's impossible to steal reward.

aivve commented 3 years ago

It appears to be compatible with karbo2 version 👍 in a testnet

aivve commented 3 years ago

It appears to be compatible with karbo2 version 👍 in a testnet

No, those two are not compatible but not due to these changes. The difficulty calculation needs to be compared and made compatible, especially when it comes to alt. blocks.

aivve commented 3 years ago

So, at first, we were using payment proof to prove that the specified miner address received the reward. But in this approach pool operator could give miners only secret spend key but not secret view key and without the last one miner can't really spend (steal) the reward. Therefore we replaced the reward proof with the miner's secret view key.

aivve commented 3 years ago

Consider ways to reduce stored data, because now we store signature, miner's public address and secret view key.