Who
Netcoin Newbie
I'm going to need a SWAT team ready to mobilize, a pot of coffee, twelve jammy dodgers and a Fez!
Posts: 68
|
Post by Who on Aug 18, 2014 19:02:59 GMT
There has been a lot of discussion recently about the viability of POS (Proof of Stake) as a mechanism to secure the network. The main concern was highlighted by an exchange being hacked and a large percentage of POS coins being stolen. I should point out that the POS mechanism itself had nothing to do with enabling the actual theft. The main issue highlighted by this action was that a weak link was exploited in the crypto services using the coin and somebody got control of a very large number of coins. In a traditional POS only coin, this user obtained a lot of power to control the block chain. That is bad for POS, especially as this user clearly displayed malicious intent by hacking the exchange and stealing the coins in the first place.
I want to explain why I truly believe that the changes to the POS protocol we implemented in Netcoin make it far less susceptible to very large volumes controlling the network.
I'll start with a quick recap on how traditional POS works
Stake Weight The central idea behind POS is to find a way to bias the ability to sign blocks towards people who are demonstrating that they back the coin (have a stake in the coin) by holding large numbers of coins for considerable periods of time. The more coins you have, and the longer you hold them, the stronger your 'Stake Weight' grows as you compete with others on the network to sign transactions in POS blocks. Like Proof of Work (POW), its still a game of 'rolling dice' a small number of times to achieve a minimum score. The longer you hold coins, and the more NET you stake, the bigger the numbers on your particular 'dice', so you have a better chance of hitting the minimum than somebody with fewer coins, and/or somebody who obtained their coins only recently.
When you do hit the minimum score required to sign a stake block, the coins you stake are 'spent' back to yourself. In addition you earn (mint) a reward for signing the block. The age of the coins you staked resets to zero because you spent the old coins and received new ones. You start again with very low numbers on your 'staking dice' to try to win the next block. As time passes, your stake weight grows again, but in the meantime others get a chance to win stake blocks, and thus the power to sign blocks passes around the network, but always biased towards the people who have been holding more coins for long periods of time.
The problem is that a person with a huge proportion of the network coins will have such a strong stake-weight that their 'staking dice' will obtain very big numbers much faster than the average minion on the network. They will sign a large number of blocks, drive up the staking difficulty and potentially get to a position where they are making block chains with a massive staking weight backing them that will be preferred over the 'minions' chains by the protocol.
There is a mechanism built into POS coins that attempts to mitigate this risk. It is called block-splitting. The idea is that whenever somebody successfully signs a block using 'young' coins, they probably have a very high coin value being staked compared to the average minion in the network. They are potentially getting to wield too much staking power. In this situation they will sign the POS block, but then the coins and the associate reward will be divided into two separate future staking attempts, each with about half the staking power as the block that just signed. This in theory gives other people on the network a better chance to sign a future POS block.
When I looked into this in the source code I was surprised to see that while block splitting is done in the wallet, it is not actually enforced by the peers on the network. It works fine as 'voluntary policy' to try to acheive a network POS nirvana of fairness, but it is not a hard and fast rule. I can take a POS coins' source code, remove the lines that split the output into two, and my wallet and staking will still work on the network.
Meee and I thought about this for some time, then decided that what this code was actually trying to do was limit the amount of weight that could build up in order to stake a block. We also spoke to users of other POS coins who told us that constant block splitting was breaking down their wallet balances into tiny fragments and the wallet software was grinding to a halt under the load of trying to process hundreds or even thousands in some cases of tiny coins.
The "Fair Weight" idea is born It was from this point that we decided to take a different approach that we will call "Fair-Weight". We simply decided to cap the total number of coins that are allowed to count towards the stake weight of any single stake attempt to 100,000 NET. We would also ensure this rule was enforced by the protocol and applied by the peers when validating another users stake attempt.
The bottom line is this:
If in future a single user or entity manages to obtain tens of millions of NET by any means, their staking weight behaves as though they had just 100,000 NET.
In other words, everybody with 100,000 net or more is playing the staking game on a level playing field. You might try to remove this limit in the source code, and make a new wallet, but the network peers will still apply the limit and reject your attempt to stake.
This also means we do not need to implement the block-splitting mechanism that has dogged the performance of so many other POS coins.
Then you also have to remember, that regardless of what happens with POS block staking, there is a parallel POW mining mechanism that is also constantly competing with the POS mechanism to sign the current transactions.
As far as we know, this 'Fair Weight' idea has never been done before.
Removing block-splitting and enforcing a hard coin-value limit in stake-weight is a fundamental change from the original POS code, but it makes complete sense, and does exactly what block splitting was trying to achieve in the first place. It creates the level playing field on which all the premier league coin holders can play their staking game.
who (Netcoin developer)
Netcoin (NET)- Your Currency on Your Terms
|
|
|
Post by Admin on Aug 18, 2014 20:02:05 GMT
Bravo Who! Bravo! I think you said all there is to be said and nailed it! Thanks so much for all your efforts it's been great to work with you on this and the dscussions we've had trying to thrash out the best, fairest POS we could think of. Now I want to see your article on PIR! But yes stake splitting gave a select few an advantage, because they know how to do a bit of coding and can compile the source code, the splitting was supposed to curb advantage and it failed in my opinion... If it is not enforced by the network then it needs to go, simple as that. Great work Who! I loved it! Very nicely explained.
|
|
|
Post by bluetoothmms on Aug 19, 2014 3:52:33 GMT
I don't get any of this in technical sense but Netcoin POS must be far safer than any other POS out there. Wow! Great Job!
|
|
|
Post by Admin on Aug 19, 2014 4:20:59 GMT
I don't get any of this in technical sense but Netcoin POS must be far safer than any other POS out there. Wow! Great Job! Yeah man he did really well! 3 cheers for who... No, that's not a question XD Friday can not come soon enough!
|
|
|
Post by digitaldemon on Aug 19, 2014 12:39:23 GMT
Sounds like a great idea! However, I am a wee bit confused. If I understand this correctly, the system behaves as tho' everyone has staked UP TO 100,000 NET. The "Fair Weight" idea is born
It was from this point that we decided to take a different approach that we will call "Fair-Weight". We simply decided to cap the total number of coins that are allowed to count towards the stake weight of any single stake attempt to 100,000 NET. We would also ensure this rule was enforced by the protocol and applied by the peers when validating another users stake attempt. The bottom line is this: If in future a single user or entity manages to obtain tens of millions of NET by any means, their staking weight behaves as though they had just 100,000 NET.
But, in an earlier post (describing PIR) various percentage rates of POS are listed alongside stake amounts that go up to 10 million!! NET % 0 10 1,000 15 10,000 20 100,000 30 1,000,000 80 10,000,000 100 10,000,000,000 100
Okay so here are some if the percentage rates, remember that it is a sliding scale,Is this not something of a contradiction? Or am I missing something?
|
|
|
Post by Admin on Aug 19, 2014 13:08:10 GMT
Sounds like a great idea! However, I am a wee bit confused. If I understand this correctly, the system behaves as tho' everyone has staked UP TO 100,000 NET. The "Fair Weight" idea is born
It was from this point that we decided to take a different approach that we will call "Fair-Weight". We simply decided to cap the total number of coins that are allowed to count towards the stake weight of any single stake attempt to 100,000 NET. We would also ensure this rule was enforced by the protocol and applied by the peers when validating another users stake attempt. The bottom line is this: If in future a single user or entity manages to obtain tens of millions of NET by any means, their staking weight behaves as though they had just 100,000 NET.
But, in an earlier post (describing PIR) various percentage rates of POS are listed alongside stake amounts that go up to 10 million!! NET % 0 10 1,000 15 10,000 20 100,000 30 1,000,000 80 10,000,000 100 10,000,000,000 100
Okay so here are some if the percentage rates, remember that it is a sliding scale,Is this not something of a contradiction? Or am I missing something? Yes... Weight and your percentage rate are 2 seperate things and are in no way related. Weight was simply a means to decide when you should stake. Imagine weight is the same as hashrate and percentage rate is your block reward. (using mining as an analogy). And imagine we're all solo mining. Its a bit like that... Your hashrate wouldn't affect the block reward. Only when you get it. Hope this helps
|
|
Who
Netcoin Newbie
I'm going to need a SWAT team ready to mobilize, a pot of coffee, twelve jammy dodgers and a Fez!
Posts: 68
|
Post by Who on Aug 19, 2014 21:23:42 GMT
Admin is right. The stake _weight_ is limited to counting only up to 100,000 NET. This caps the amount of staking power and levels the playing field in terms of chance of signing a block. However the percentage rate and reward is then calculated based on the full NET value of the coins that you staked.
|
|
|
Post by digitaldemon on Aug 20, 2014 8:37:17 GMT
Yes, I see! (said the blind man)
No matter how many coins you hold, only the first 100,000 are actually counted for staking purposes. But your entire coin holding is used to determine the PIR%, which is then applied to that first 100,000. Thanks guys.
|
|
|
Post by Admin on Aug 20, 2014 19:34:55 GMT
Yes, I see! (said the blind man)
No matter how many coins you hold, only the first 100,000 are actually counted for staking purposes. But your entire coin holding is used to determine the PIR%, which is then applied to that first 100,000. Thanks guys. Hmmm well, actually no mate I don't think this is correct... Sorry but I just want to make it clear... If you say put 10 million coins in your wallet... They would gain "weight" at an astonishing rate, Because weight = coins X time or "age" So the older they are the more weight you have, you see? Now, this would mean that you would stake very fast, much faster than anyone else. So to curb this what POS has done is split the coins into 2 blocks when you stake, so now you have 2 X 5 million blocks (plus change from the stake)... But you see this splitting is not enforced. I can take my wallet and modify it to take the splitting out! Then I will have an advantage and see a staking performance boost. So for one we decided to remove this splitting feature entirely. Now we still have the problem of you with your 10 mill block eating up a lot of the blocks... So... To counter this we have set a maximum weight... So you will reach this maximum weight very fast as you have a huge block of coins, but then it will stop there and not grow anymore weight. Someone else has say 100,000 coins block, they will reach the maximum slower but eventually you'll both have the same weight and therefore an equal chance to get your stake. The payout % will be calculated and paid out on the FULL amount... So if you have 10 million you get 100% yearly interest applied to the full 10 million, if the other guy has 100,000 he will have 15% yearly interest applied. But both have them applied to the full amount. I hope this makes it a little clearer, if you have anymore questions then please ask as I am sure there are others that would love to know too
|
|
Who
Netcoin Newbie
I'm going to need a SWAT team ready to mobilize, a pot of coffee, twelve jammy dodgers and a Fez!
Posts: 68
|
Post by Who on Aug 20, 2014 21:14:05 GMT
(Admin, you beat me to it while I was having fun making this reply.. Although 100,000 gets 30%, not 15%) Heres an example comparing traditional POS with Fair-weight POS
Tigger has 60,000 coins. Its been 30 days since he last staked them successfully. Mostly because he keeps bouncing his router onto the floor and losing his sync. Eeyore is lucky enough to have 3 million coins. Not that you'd think it to look at him. Eeyore hasn't opened his wallet for 15 days because he has been waiting for Pooh under a tree after Successfully Texting an Arrangement. Eeyore considered Texting to be a rather Difficult Feat for a donkey with hooves. For the first time in his life, Eeyore felt a little bit proud of himself while he patiently waited for Pooh. Pooh has been a fortnight waiting for Eeyore under a Bee, which is a Difficult Feat for a bear because bees will dash around so. The Bee has been a fortnight trying to work out why any-place he lands in this until recently Flowery and Colourful world now looks, feels and tastes like a bear.
Note, in what follows, just pretend 'coindays' are lottery tickets where exactly one person is guaranteed to win the draw. Normal POSEeyores Stake Weight 3 million coins * 15 days = 45 million coindays Tigger's Stake Weight 60,000 * 30 = 1.8 million coindays The total number of coindays is 46.8 million Tigger has 1.8M = 4% (1 in 25 chance) Eeyore has 45M of that total = 96% (24 in 25 chance) Netcoin Fair-Weight POS
Tigger is staking less than 100,000, so his weight is unaffected at 1.8 million coindays Eeyores weight is taken as 100,000 * 15 days = 1.5 million coindays Total number = 3.3 million Tigger 1.8 million (55% chance) ( 11 in 20 chance) Eeyore 1.5 million (45% chance) (9 in 20 chance) In this case, because Tigger has been waiting for twice a long as Eeyore to succeed in staking (30 days vs. 15 days), Tigger actually gained a slight advantage over Eeyore in the chance stakes Effect of Netcoin Fair-weight on the relative chance of two competing POS users
|
|
| Normal POS | Netcoin Fair Weight POS | Normal POS | Netcoin Fair Weight POS | | Coins
(NET) | Age days | CoinAge Million- coindays | CoinAge Million- coindays | chance
| chance
| Eeyore | 3,000,000 | 15 | 45 | 1.5 | 96% | 45% | Tigger | 60,000 | 30 | 1.8 | 1.8 | 4% | 55% | Total | 3,060,000 |
| 46.8 | 3.3 | 100% | 100% |
Eeyore was not in the least bit surprised that Tigger had somehow gained a better chance than him in this example. "Oh well, that figures. How Just Like Him" droned Eeyore, resolutely. If Eeyores Does win. The PIR is worked out based on his entire 3 million stake. ALL 3 million NET get staked and have their age reset to zero and the interest due is paid on the full 3 Million NET.
Surely that will cheer Eeyore up!
|
|