DPoR Payments, current situation and proposals

in #gridcoin7 years ago (edited)

Greetings Steemit community and accept my first post. This and the following posts are going to be extracts, mostly proposals, from Gridcoin development wiki. Delayed DPoR payments raised a lot of concerns and dissatisfaction with the recent introduction of stake kernel V8. Also the funds raised will be used for 50% power and 50% donation for grcpool, for beginners.

First excuse me going a little off topic: The difficulty number sharply decreased with the transition. This was expected. But let me assure you, that the creation of blocks is also harder. Thus the two cancel each other. Remember that the changes were extensively tested in testnet before releasing. Since the transition, both the average block spacing (94.8s) and average difficulty were within bounds. You can expect more stats and analysis from me in the future, but now get back to topic.

GridcoinBlocks_Header_Blur.png

This document (original location) is about the Question:

  • How and when to pay BOINCers their Rewards.

Once this document is good enough, we can have a poll for which proposal to implement.

Current situation

When a block is minted the accrued BOINC reward is paid as whole to the minter on top of the PoS interest. Therefore BOINCer has to wait for PoS to receive their rewards.

In an attempt to make this waiting time shorter, and also secure the blockchain not only by investor coins, magnitude is added to miners stake weight for the kernel v3. This was however found insecure, so it was removed in kernel v8.

User Dutch pointed out the downsides of removal of magnitude from kernel v8. We must work towards both shortening the time miners must wait to get a reward and restoring their share in securing the block chain.

Beacon Minting

(TomasBrod) I propose that in addition to coins keys, one can mint with the beacon keys with different difficulty and research based weight. The kernel is in the formula below, but we need to talk about weight and difficulty computation more.

ProofHash = H( BeaconPubKey + StakeModifier + nTimeTx );

Weight for this kind of stake can depend on the owed amount or current magnitude or some combination of both. This is yet to be decided. Single CPID/beacon is allowed to mint only if the last reward for that cpid (either via standard PoS or this beacon mint) to that CPID was more than x1 (30) hours ago.

Difficulty is computed using the standard mechanism. The target block time for beacon mint is set to x2 (12) minutes. But there must be at least x3 (4) standard PoS blocks in between to mitigate an age bunkering 51 attack.

Rewards to a CPID are tracked the same way for both PoS and this mint. What is rewarded in this new block is not in standard PoS blocks. Established miners are expected to have high balance and thus get all reward in PoS.

Superblock payment

The idea is to pay all BOINC reward in the superblock. Or provide means of claiming the reward promised in the superblock.

quezacoatl: There is the idea to generate all POR
payments in superblocks so miners do not need to stake
to receive POR anymore. POS is then only used for
network security while the "NN2.0" takes care of the
research payments.

This option does not deal with giving BOINCers share in securing the blockchain (stake weight). But most importantly, we do not know yet what "NN 2.0" is.

Refined Kernel v3

The fundamental issue with kernel v3 is that the magnitude boost is applied to all UTXOs. A simple solution to this problem would be to simply spread the RSA_weight (the magnitude dependent boost) over all the UTXOs. This is as easy as applying a weight proportional to magnitude/number_of_UTXOs.

The problem with this approach is that the validator does not know the number of UTXOs in the wallet that staked the block.

A way around this might be to allow the magnitude boost only for UTXOS that are linked to the Gridcoin address that sent the beacon. That way the validator could look up the number of UTXOs of the address. Blocks are rejected if the number of UTXOs linked with that address is wrong or the magnitude boost is applied to a UTXO of a different address.

But this workaround is still hard to implement. Wallet on it's own does not track which UTXOs are linked to CPID and scanning the blockchain every time will be too slow.

The magnitude weight would work like an additional balance equally divided amongst all UTXOs of the beacon address.

Giving this magnitude boost only to the address from beacon is still not an option, as users can have many UTXOs to the same address. Also requiring users to move coins to special address to stake will cause a lot of confusion.

See also

https://github.com/Erkan-Yilmaz/GRC/issues/42

Ability to mint multiple consecutive blocks by the same entity weakens the network resistance to double spend attacks. The main problem of using any kind of age (coinage or reward=magnitude*days) is that one can create many accounts with small initial weight, then go offline to acquire more weight by age and then come back and stake them all.

Sort:  

Great summary!

It is worth mentioning that the stake times with V8 aren't the abyssmal "several months unless you have hundreds of thousands of GRC" we heard so much about before the switch. For me, personally, I have not seen any reduced staking frequency. Granted, V8 hasn't run for a long time so we'll see what happens in the long run.

I'm in favor of the superblock payments, or a similar mechanism where the time-to-payout is as short as possible. I think we should separate proof of research and proof of stake since they perform very different tasks. PoS drives the network forward while proof of research drives research forward. In my opinion it doesn't make any sense to have to drive the network forward in order to claim your PoR rewards.

I've said it before, but PoS reward is instant gratification for work done at that moment while the PoR reward is paid for work done from now up to 6 months back.

I agree. I think separating the blockchain protocol from the incentive protocol, as they are 2 different things with GRC, could allow us more flexibility with both.

I look forward to learning more from these discussions.

Im not a dev, so excuse the stupidity of my suggestion in advance, but re the Kernel v3 refinement, could you not just affix the Magnitude boost to one random UTXO in a users wallet?

If the UTXO becomes an input you select another available UTXO for the next block staking event.

The network must be able to verify, that minter applied this boost to only one of his UTXOs.

Finally some news from the devs on steemit. I'm still in the pool but trying to learn as good as possible. What you are mentioning is above my head atm. I hope I remember a bit of it and one day can get more involved with the code.

Thanks a lot for the effort!

If you remember, tomasbrod was that punk, who ruined GridCoin 1M block event...

What happened to your rep? :-)

bullshark wrote: "What happened to your rep? :-)"

Gridcoin fanboys (vortac & co) are little bit retarded, that happened ;D

Have a small pity upvote

There was a guy with very low mag (like 1) and he "magically" get few blocks in a row including 1 mlnth

The same guy who fixed that (and many other) security issue? While I agree that the timing of @tomasbrod's hack was both terrible and genius at the same time, he has also done a hell of a lot for the security of the coin. The stake hack around the millionth block is patched. By @tomasbrod.

and genius at the same time

Yeah I disagree, as do many others. That is a PR disaster and incredibly unprofessional. Also great to see a dev shit all over the millionth block event team who spent over a month on it.

Upvoting just to help this guy get a rep better than 1, haha.

NN 2.0 = Neural Network Version 2.0 (NN with cruncher paying SB (Superblock))

Thanks for summarizing this for us tomasbrod and thanks for your dev work on security.

boinc
Courtesy of @joshoeah

Congratulations @tomasbrod! You have completed some achievement on Steemit and have been rewarded with new badge(s) :

Award for the number of upvotes received

Click on any badge to view your own Board of Honor on SteemitBoard.
For more information about SteemitBoard, click here

If you no longer want to receive notifications, reply to this comment with the word STOP

By upvoting this notification, you can help all Steemit users. Learn how here!

Welcome to Steemit!

We have all been waiting for you, we are glad you could make it.
I have given you a upvote to help you out!

Hope you love Steemit as much as we do.

Give these a read:

Chat with us:

If this post was helpful, please leave an upvote. It helps me to keep helping new users.

I'm sunnybooster, a booster for accounts not posts. Send me 0.5 STEEM or SBD to get a week of upvotes! If you don't yet know what this is its fine.

I am a bot and this was automated. I exist to help out new members and attempt to get them hooked

Coin Marketplace

STEEM 0.29
TRX 0.12
JST 0.033
BTC 63464.16
ETH 3111.33
USDT 1.00
SBD 3.98