Author Topic: Delegated Proof of Stake (DPOS) White Paper  (Read 76253 times)

0 Members and 1 Guest are viewing this topic.

Offline tonyk

  • Hero Member
  • *****
  • Posts: 3308
    • View Profile
Too bad there's no prediction market for these things

1. Too bad there are no prediction market DACs period ( be it BTS X, truthcoin….or any other… even feed based)

2. We can arrange it between ourselves if you have $20 to bet the next time I have a gut feeling something like this coming… :)
« Last Edit: June 22, 2014, 06:42:07 am by tonyk »
Lack of arbitrage is the problem, isn't it. And this 'should' solves it.

Offline toast

  • Hero Member
  • *****
  • Posts: 4001
    • View Profile
  • BitShares: nikolai
x-posting from here: https://bitsharestalk.org/index.php?topic=5164.msg68359#msg68359

Dan and I talked some more over dinner today and I think we have won him over.

Once he was convinced that there is unlikely to be a large honest stakeholder who does nothing but downvote bad delegates at huge opportunity cost then cat&mouse becomes unsolvable and that is the core issue behind all the reasons Agent86 listed. After thinking through some possible transaction compression techniques and realizing that it only makes the transaction about 3x as large, I am happy to announce that we are probably going to go with approval voting.

Some things to discuss: Should you still be able to downvote delegates with your stake? We are leaning towards yes but have not thought through it very carefully.

I am totally not surprised by this development.

Too bad there's no prediction market for these things
Do not use this post as information for making any important decisions. The only agreements I ever make are informal and non-binding. Take the same precautions as when dealing with a compromised account, scammer, sockpuppet, etc.

Offline tonyk

  • Hero Member
  • *****
  • Posts: 3308
    • View Profile
x-posting from here: https://bitsharestalk.org/index.php?topic=5164.msg68359#msg68359

Dan and I talked some more over dinner today and I think we have won him over.

Once he was convinced that there is unlikely to be a large honest stakeholder who does nothing but downvote bad delegates at huge opportunity cost then cat&mouse becomes unsolvable and that is the core issue behind all the reasons Agent86 listed. After thinking through some possible transaction compression techniques and realizing that it only makes the transaction about 3x as large, I am happy to announce that we are probably going to go with approval voting.

Some things to discuss: Should you still be able to downvote delegates with your stake? We are leaning towards yes but have not thought through it very carefully.

I am would have bet some money on this not being so easy.
« Last Edit: June 23, 2014, 01:25:48 am by tonyk »
Lack of arbitrage is the problem, isn't it. And this 'should' solves it.

Offline toast

  • Hero Member
  • *****
  • Posts: 4001
    • View Profile
  • BitShares: nikolai
x-posting from here: https://bitsharestalk.org/index.php?topic=5164.msg68359#msg68359

Dan and I talked some more over dinner today and I think we have won him over.

Once he was convinced that there is unlikely to be a large honest stakeholder who does nothing but downvote bad delegates at huge opportunity cost then cat&mouse becomes unsolvable and that is the core issue behind all the reasons Agent86 listed. After thinking through some possible transaction compression techniques and realizing that it only makes the transaction about 3x as large, I am happy to announce that we are probably going to go with approval voting.

Some things to discuss: Should you still be able to downvote delegates with your stake? We are leaning towards yes but have not thought through it very carefully.
Do not use this post as information for making any important decisions. The only agreements I ever make are informal and non-binding. Take the same precautions as when dealing with a compromised account, scammer, sockpuppet, etc.

Offline Agent86

  • Sr. Member
  • ****
  • Posts: 471
  • BTSX: agent86
    • View Profile
"-Is it as easy to vote out bad delegates?"
Yes. In fact it's much easier to vote out bad delegates than in the current system and much less likely that bad delegates get voted in in the first place.  In the current system if someone has enough stake to vote themselves in as a delegate (less than 1% required) it will be next to impossible to get rid of them as a delegate if they want to vote for themselves.

I have not gone into the details of your voting system (yet) but it is guest like the regular ‘majoritarian voting system’ – over 50% of votes you are in, less you are out.
In that system voting out somebody is not direct. It is more voting somebody else in, which is my main concern i.e I kind of like ‘direct firing’ of bad actors/delegates.
It will take a lot of broad trust to get in in the first place, you have to convince a lot of people that you are a trustworthy, capable member of the community to make the grade.  If you betray that trust, I believe your reversal of support will be swift and vigorous.

Offline tonyk

  • Hero Member
  • *****
  • Posts: 3308
    • View Profile
"-Is it as easy to vote out bad delegates?"
Yes. In fact it's much easier to vote out bad delegates than in the current system and much less likely that bad delegates get voted in in the first place.  In the current system if someone has enough stake to vote themselves in as a delegate (less than 1% required) it will be next to impossible to get rid of them as a delegate if they want to vote for themselves.

I have not gone into the details of your voting system (yet) but it is guest like the regular ‘majoritarian voting system’ – over 50% of votes you are in, less you are out.
In that system voting out somebody is not direct. It is more voting somebody else in, which is my main concern i.e I kind of like ‘direct firing’ of bad actors/delegates.
Lack of arbitrage is the problem, isn't it. And this 'should' solves it.

Offline Agent86

  • Sr. Member
  • ****
  • Posts: 471
  • BTSX: agent86
    • View Profile
How do you vote if you do not have transaction? What I am missing?
You don't, voting requires a transaction.
(you make a transaction to yourself)
« Last Edit: June 19, 2014, 09:20:39 pm by Agent86 »

Offline Agent86

  • Sr. Member
  • ****
  • Posts: 471
  • BTSX: agent86
    • View Profile
Ok, my solution to "lazy" voters.  Voters should have: THE RIGHT TO ABSTAIN.

For instance: I am a shareholder but I know that I'm a busy guy with other things going on and there are other shareholders who are more on top of things.  I am going to put my shares in cold-storage for a year.  I should have the right to send those shares to cold storage in a state of abstention where I am removed from the voting process.  It doesn't make sense to have your shares voting for a particular delegate when your shares are in cold storage and you have no idea what the delegate you are voting for is doing.  I think this is especially useful for approval voting.  I think it will make the system more reactive and efficient.

In the current implementation you could probably just downvote an untrusted delegate on purpose (of course I'm not a fan of current implementation for many previously mentioned reasons.)

You need them to vote by default so that the network is optimized on performance metrics.

What do you think about giving everyone a downvote and an upvote ?  You're the one that realized that downvoting has a large opportunity cost if we start to pay delegates much.  So what would happen if they added a vote in both directions?  I am not pushing the idea, but it is one possible solution.  Make either vote optional and independent of each other.  It would increase the complexity of the type of games that could be played with voting, but it does remove the one problem of downvotes having opportunity cost.

Gamey, I encourage you to think about how approval voting works and what the ramifications are.

I thought about giving every share a vote in both directions some time ago:
https://bitsharestalk.org/index.php?topic=4660.msg60688#msg60688
I think it's an improvement but it just doesn't solve the problem.

Quote
You need them to vote by default so that the network is optimized on performance metrics.
I agree that you want to encourage participation and informed voting (client watches delegate performance and gives voting alerts or auto votes)
But, people with large shares in cold storage are not "optimizing the network" one way or another.
And their misplaced votes can make the network much less optimized.

Offline tonyk

  • Hero Member
  • *****
  • Posts: 3308
    • View Profile
Ok, my solution to "lazy" voters.  Voters should have: THE RIGHT TO ABSTAIN.

For instance: I am a shareholder but I know that I'm a busy guy with other things going on and there are other shareholders who are more on top of things.  I am going to put my shares in cold-storage for a year. I should have the right to send those shares to cold storage in a state of abstention where I am removed from the voting process.  It doesn't make sense to have your shares voting for a particular delegate when your shares are in cold storage and you have no idea what the delegate you are voting for is doing.  I think this is especially useful for approval voting.  I think it will make the system more reactive and efficient.

In the current implementation you could probably just downvote an untrusted delegate on purpose (of course I'm not a fan of current implementation for many previously mentioned reasons.)


Is this https://bitsharestalk.org/index.php?topic=5091.msg66905#msg66905
 close to being correct (i.e. explains the current implementation)?

How do you vote if you do not have transaction? What I am missing?
Lack of arbitrage is the problem, isn't it. And this 'should' solves it.

Offline gamey

  • Hero Member
  • *****
  • Posts: 2253
    • View Profile
Ok, my solution to "lazy" voters.  Voters should have: THE RIGHT TO ABSTAIN.

For instance: I am a shareholder but I know that I'm a busy guy with other things going on and there are other shareholders who are more on top of things.  I am going to put my shares in cold-storage for a year.  I should have the right to send those shares to cold storage in a state of abstention where I am removed from the voting process.  It doesn't make sense to have your shares voting for a particular delegate when your shares are in cold storage and you have no idea what the delegate you are voting for is doing.  I think this is especially useful for approval voting.  I think it will make the system more reactive and efficient.

In the current implementation you could probably just downvote an untrusted delegate on purpose (of course I'm not a fan of current implementation for many previously mentioned reasons.)

You need them to vote by default so that the network is optimized on performance metrics.

What do you think about giving everyone a downvote and an upvote ?  You're the one that realized that downvoting has a large opportunity cost if we start to pay delegates much.  So what would happen if they added a vote in both directions?  I am not pushing the idea, but it is one possible solution.  Make either vote optional and independent of each other.  It would increase the complexity of the type of games that could be played with voting, but it does remove the one problem of downvotes having opportunity cost.
I speak for myself and only myself.

Offline Agent86

  • Sr. Member
  • ****
  • Posts: 471
  • BTSX: agent86
    • View Profile
Ok, my solution to "lazy" voters.  Voters should have: THE RIGHT TO ABSTAIN.

For instance: I am a shareholder but I know that I'm a busy guy with other things going on and there are other shareholders who are more on top of things.  I am going to put my shares in cold-storage for a year.  I should have the right to send those shares to cold storage in a state of abstention where I am removed from the voting process.  It doesn't make sense to have your shares voting for a particular delegate when your shares are in cold storage and you have no idea what the delegate you are voting for is doing.  I think this is especially useful for approval voting.  I think it will make the system more reactive and efficient.

In the current implementation you could probably just downvote an untrusted delegate on purpose (of course I'm not a fan of current implementation for many previously mentioned reasons.)

Offline gamey

  • Hero Member
  • *****
  • Posts: 2253
    • View Profile
Toast is right you need to store who everyone is voting for (multiple delegates instead of 1),  If you make a transaction that says I only want to vote for delegate 4, You need to know that your stake was previously voting for delegates 1,2,&3 to know who to take votes away from.  (sorry, I posted without thinking)

Maybe people would have less reason to split up their stake to vote for different people?
I think people have to pay an annual registration fee for delegates so maybe this keeps people from registering junk delegates?

Storing who everyone is voting for is not the same as storing the full history of voting.  I still wonder if you actually need the full history. I still wonder why all the voting stuff has to be stored indefinitely. I woke up and thought to myself "oh duh! It is a transaction with an associated cost."  Then I see Bytemaster say it costs nothing.  So I'm still not sure, but I got to throw the idea out there.

Paying registration fee for delegates is ok but realize the network is supposed to resilient.  You limit the # of delegates and you start hurting resiliency at some point.

As far as Bytemaster calling the network's users "lazy" and being offended. He is designing a system around what will be typical user behavior.  Agent, we're both nerds on a forum willing to show up on Saturday mornings and do this stuff.  We're far from typical.  Most people are lazy.  The assumption that user's will be lazy about voting is one thing I trust.

However you have a point about well (overly?) paid delegates causing perverse incentives. This is one thing that concerns me. Once delegates start being paid a lot, you've added an incentive to start monkeying with who is a delegate over reasons that are not aligned with the network's health.  There is nothing significantly punitive to stop people.

Let me give one brief example of unforeseen consequences and I'll shut-up.  NXT has large transaction fees.  Any wallet can mine blocks. I once withdrew from Cryptsy and it took 5 days with nothing happening. The short of the story is that I finally got paid but it was on a block with numerous other transactions.  People excuse the Cryptsy withdrawal delay saying it has to be manually done because it is "new".  Well I wrote a script to automate NXT payments and I know there is absolutely nothing complicated that couldn't readily be adapted from a bitcoind forked coin accounting code.  I theorize that Cryptsy waits for when they are forging a block and then throws on all their transactions so they get the transaction fee.  I may very well be wrong but it makes sense and seems quite plausible.  So by forging off a large wallet + large transaction fees, NXT introduced a weird incentive that has one of the more popular exchanges taking days to withdraw.  This is all done at the expense of other forgers and the end user.  Who would have seen that outcome of this incentive? 

I'm  afraid if you pay delegates too much + voting system then we will end up with many unforeseen malignant behaviors. So the utmost care must be taken when designing these things. I put far more faith in Bytemaster than most smart people and hope his team gets it close enough to optimal, but they need to keep in mind that paying delegates a lot is very likely going to cause bad behavior down the road when the money becomes significant. There are too many actors involved for me to even attempt analyzing it in my head.  In addition the ability of the delegate to afford to pay for sophisticated schemes comes into play. It goes beyond my analytical ability.
I speak for myself and only myself.

Offline toast

  • Hero Member
  • *****
  • Posts: 4001
    • View Profile
  • BitShares: nikolai
Quote
3) Voting is a way of exercising your influence over a percent of the block production proportional to your stake via a delegate.  It should not result in the majority dictating the rules on who all delegates should be or those with a minority opinion will have no representation among the delegates.   

It's already like this, if you are a majority you can vote out the minority and use the rest of the votes on who you want
Do not use this post as information for making any important decisions. The only agreements I ever make are informal and non-binding. Take the same precautions as when dealing with a compromised account, scammer, sockpuppet, etc.

Offline Agent86

  • Sr. Member
  • ****
  • Posts: 471
  • BTSX: agent86
    • View Profile
It should not result in the majority dictating the rules on who all delegates should be or those with a minority opinion will have no representation among the delegates.
Recognizing this reality, we can embrace it fully and allow 51% of the delegates to fire any other delegate… All networks are only as secure as the trust you place in the 51%.

Offline Agent86

  • Sr. Member
  • ****
  • Posts: 471
  • BTSX: agent86
    • View Profile
1) most users are lazy and will not vote, if they did vote most users wouldn't know how to evaluate delegate performance.  This means the voting process needs to be simple with a reasonable automatic voting algorithm based only on statistical data about a delegates performance.
Bytemaster, the users you're calling "lazy" are the shareholders and this community! If the shareholders don't care who does?  I think you'll find people care more than you think, especially if delegates are paid well.   Ignoring poorly designed incentives means you rely on writing a client that votes in a sort of automated altruistic way and hoping people don't care enough to change it.  It's like having no mandatory transaction fees but writing a client that pays them by default and hoping people are too lazy to change the default.

My voting proposal is more simple, can also be automated, and critically, the automated voting aligns with the interests of the shareholder.

I agree a lot of effort has gone into coding this and we are perhaps close to a product that could be released and for some investors that's all they care about now.  So if we have to release this to satisfy the calls for immediate product than it is what it is.  But I think it's short sighted.
3) Voting is a way of exercising your influence over a percent of the block production proportional to your stake via a delegate.  It should not result in the majority dictating the rules on who all delegates should be or those with a minority opinion will have no representation among the delegates.
I think this tyranny of the majority fear is a misunderstanding.  All these institutions and DACs are "majority rules."  They are all subject to 51% attacks by the majority.  DACs are great in that they allow very low barriers to entry/exit and everyone is part of the DAC by their own volition; it's a free market with lots of options.