BitShares Forum

Main => General Discussion => Topic started by: bytemaster on April 04, 2014, 07:25:58 am

Title: Delegated Proof of Stake (DPOS) White Paper
Post by: bytemaster on April 04, 2014, 07:25:58 am
http://107.170.30.182/security/delegated-proof-of-stake.php
Title: Re: Delegated Proof of Stake (DPOS) White Paper
Post by: santaclause102 on April 04, 2014, 08:34:43 am
http://107.170.30.182/security/delegated-proof-of-stake.php

Why not publish / announce it on BTT so that people can give feedback and criticize it? This might uncover overseen flaws / inefficiencies before it is put into practice. This might also draw quality people / developers to the Bitshares community if they find the approach innovative (easy way of quality recruiting) and see an opportunity within the bitshares ecosystem and community to expand on their intellectual unrest. There also was a lot of good feedback for the BTS X attack vectors...

Here are some other approaches that might be of inspiration:
Peter Todd: http://sourceforge.net/p/bitcoin/mailman/message/31655380/   https://github.com/petertodd/decentralized-consensus-systems
Obelisk: http://libbitcoin.dyne.org/obelisk/
Nothing new probably: https://bitcointalk.org/index.php?topic=386460.0

Edit: Or some other circle (developer mailing list?) where you have a higher concentration of people that understand crypto currency protocols than on BTT...
Title: Re: Delegated Proof of Stake (DPOS) White Paper
Post by: stuartcharles on April 04, 2014, 12:06:02 pm
http://107.170.30.182/security/delegated-proof-of-stake.php

standing ovation from me, well done!
Title: Re: Delegated Proof of Stake (DPOS) White Paper
Post by: sumantso on April 04, 2014, 12:36:02 pm
Why not publish / announce it on BTT so that people can give feedback and criticize it? This might uncover overseen flaws / inefficiencies before it is put into practice. This might also draw quality people / developers to the Bitshares community if they find the approach innovative (easy way of quality recruiting) and see an opportunity within the bitshares ecosystem and community to expand on their intellectual unrest. There also was a lot of good feedback for the BTS X attack vectors...

+1

I am neutral regarding BTCtalk presence; but having more eyes to look at it can help a lot.
Title: Re: Delegated Proof of Stake (DPOS) White Paper
Post by: toast on April 04, 2014, 02:09:36 pm
Quote
Lastly, proof of work creates a barrier to entry that prevents incumbents from being easily displaced. Compared to Bitcoin, DPOS is at least 10x more decentralized in block production and perhaps infinitely more decentralized relative to market competition.

Quote
The process behind DPOS when combined with TaPOS produces a network that has more provable consensus behind it than Bitcoin, Peercoin, and Nxt by a factor of 3 or more.

Those are awfully specific assertions...
Title: Re: Delegated Proof of Stake (DPOS) White Paper
Post by: luckybit on April 04, 2014, 02:17:45 pm
http://107.170.30.182/security/delegated-proof-of-stake.php
Excellent.  +5%
Title: Re: Delegated Proof of Stake (DPOS) White Paper
Post by: vikram on April 04, 2014, 07:22:09 pm
Comments from: http://www.reddit.com/r/CryptoCurrency/comments/227be4/delegated_proof_of_stake_dpos_white_paper/cgk4j2a?context=3
Quote
This is very exciting; a really promising advancement. I have some concerns about their implementation, however:

Quote
    2.1 Becoming a Representative

    To become a representative you must register your public key with the network and be assigned a 32 bit unique identifier. This identifier can then be referenced in the header of every transaction.

32 bits only provides about 4 Billion possible IDs. Assuming that many will be lost, forgotten, etc., I think that this is not nearly enough. This is exactly the problem that currently plagues IPv4 and is the main reason why a transition to IPv6 is currently underway. There is no reason not to use 64 bits (or even just 48) as a rep's ID, and it provides the overhead that will assure that there will be enough unique IDs for the next hundred or even thousand years. 32 bits is emphatically not enough.

I understand that only 100 reps are working at a time (but why only 100?), but since being a rep is well-compensated, I foresee that most users of a currency that adopted this system would also "throw in their hat" to be potentially voted to be a "working" rep (among the 100) - and they will all need IDs.

Quote
    It may be possible for a single individual or organization to control multiple representatives in the chain, but this process would involve deceiving a large percentage of the shareholders into supporting sock-puppets.

This seems to just brush off the issue. I see no actual methods, incentives or reasons that would prevent sockpuppet representatives - after all, on the internet, nobody knows you're a dog (or a sockpuppet). The author assumes that "deceiving a large percentage of the shareholders" is somehow inherently more challenging than getting them to vote for a legitimate representative, but it certainly isn't as I can see it. Shareholders are still not going to be meeting most of these representatives in real life.

The only possible solution I can see to this would be a strong Web of Trust that can trace any sockpuppets to a common source - but since most trust signing is going to happen between pseudonyms on the internet, anyway, even this would probably just become "some silly formality" that users engage in without really understanding what they're doing, and a new sockpuppet would have no problem finding itself well validated in the web in a short time.

All in all, it's a very promising idea, and I don't think that these challenges I've described are impassible. I would look forward to a response (and perhaps even an updated proposal) from the author(s) on these concerns.
Title: Re: Delegated Proof of Stake (DPOS) White Paper
Post by: patrickb323 on April 04, 2014, 08:09:40 pm
nice job.

In a previous thread a requirement was mentioned for each representative having to put up some coin in holding to be eligible for this task?  did you determine that this was no longer necessary?

in section "Keeping Representatives Honest", your explanation states that it would be up to the wallet software to prevent new transactions tagged with an invalid-signing-representative id.   why wouldn't the network itself prevent these new transactions? Or the network could allow these transactions but overwrite with null for a representative id.   if some popular wallet software had a default representative id, and this representative was coerced or somehow turned malicious, the wallet might not prevent new transactions and thus the users could all still vote for the problematic representative.  I think the network itself needs to prevent this case I'm not rely on the wallet software.
Title: Re: Delegated Proof of Stake (DPOS) White Paper
Post by: muse-umum on April 04, 2014, 08:14:08 pm
Quote
Without the barriers to entry caused by proof of work, the honest majority would identify the attack and issue a fork of the code that ignored blocks produced by the attacker. It would be disruptive, but not fatal.

Sorry for my poor English and understanding. If these blocks are really ignored, what will happen to the valid transactions included in them ?

Would you implement something like how Bitcoin handles orphan blocks? (I can't find this part in PTS /Bitshares /keyhotee codes in Github)

https://en.bitcoin.it/wiki/Block_chain

Blocks in shorter chains (or invalid chains) are not used for anything. When the bitcoin client switches to another, longer chain, all valid transactions of the blocks inside the shorter chain are re-added to the pool of queued transactions and will be included in another block. The reward for the blocks on the shorter chain will not be present in the longest chain, so they will be practically lost, which is why a network-enforced 100-block maturation time for generations exists.

These blocks on the shorter chains are often called "orphan" blocks. This is because the generation transactions do not have a parent block in the longest chain, so these generation transactions show up as orphan in the listtransactions RPC call. Several pools have misinterpreted these messages and started calling their blocks "orphans". In reality, these blocks have a parent block, and might even have children.
Title: Re: Delegated Proof of Stake (DPOS) White Paper
Post by: vikram on April 04, 2014, 08:20:04 pm
all valid transactions of the blocks inside the shorter chain are re-added to the pool of queued transactions and will be included in another block.

Yes.
Title: Delegated Proof of Stake (DPOS) White Paper
Post by: bytemaster on April 04, 2014, 08:20:41 pm
Valid transactions from any source are included


Sent from my iPhone using Tapatalk (http://tapatalk.com/m?id=1)
Title: Re: Delegated Proof of Stake (DPOS) White Paper
Post by: bytemaster on April 04, 2014, 08:27:07 pm

nice job.

In a previous thread a requirement was mentioned for each representative having to put up some coin in holding to be eligible for this task?  did you determine that this was no longer necessary?

in section "Keeping Representatives Honest", your explanation states that it would be up to the wallet software to prevent new transactions tagged with an invalid-signing-representative id.   why wouldn't the network itself prevent these new transactions? Or the network could allow these transactions but overwrite with null for a representative id.   if some popular wallet software had a default representative id, and this representative was coerced or somehow turned malicious, the wallet might not prevent new transactions and thus the users could all still vote for the problematic representative.  I think the network itself needs to prevent this case I'm not rely on the wallet software.

After designing it out we realized that an individual has no control on whether their block gets included  even when they produce on time. 

It would allow the person after them to skip them and thus punish them.  This risk seemed worse than just not paying them. 


Sent from my iPhone using Tapatalk (http://tapatalk.com/m?id=1)
Title: Re: Delegated Proof of Stake (DPOS) White Paper
Post by: muse-umum on April 04, 2014, 08:30:25 pm
Valid transactions from any source are included


Sent from my iPhone using Tapatalk (http://tapatalk.com/m?id=1)

Thanks.
This part is very important. It would be better to have it known in whitepaper.
Title: Re: Delegated Proof of Stake (DPOS) White Paper
Post by: bytemaster on April 04, 2014, 08:32:56 pm
4 million potential candidates with annual renewal may already be too many.  I suspect we may want to make candidates pay to be considered to cut down on those not serious about the job. 


Sent from my iPhone using Tapatalk (http://tapatalk.com/m?id=1)
Title: Re: Delegated Proof of Stake (DPOS) White Paper
Post by: CLains on April 05, 2014, 07:07:34 pm
From bitcointalk, https://bitcointalk.org/index.php?topic=558316.msg6086884#msg6086884

Sounds great on paper - hoping to see it implemented somewhere soon!

Quick question: what prevents Ripple from utilizing DPOS to generate future unique node lists?

Title: Re: Delegated Proof of Stake (DPOS) White Paper
Post by: bytemaster on April 06, 2014, 12:47:28 am
From bitcointalk, https://bitcointalk.org/index.php?topic=558316.msg6086884#msg6086884

Sounds great on paper - hoping to see it implemented somewhere soon!

Quick question: what prevents Ripple from utilizing DPOS to generate future unique node lists?

Nothing prevents Ripple from doing this..
Title: Re: Delegated Proof of Stake (DPOS) White Paper
Post by: santaclause102 on April 06, 2014, 01:46:20 am
From bitcointalk, https://bitcointalk.org/index.php?topic=558316.msg6086884#msg6086884

Sounds great on paper - hoping to see it implemented somewhere soon!

Quick question: what prevents Ripple from utilizing DPOS to generate future unique node lists?

Nothing prevents Ripple from doing this..

The difference is: It wouldn't make much of a difference towards the current state of ripple because they control more than 50% of the money supply anyway... The more distributed BTS are the more decentralized it is!!
Title: Re: Delegated Proof of Stake (DPOS) White Paper
Post by: bytemaster on April 06, 2014, 02:06:33 am
From bitcointalk, https://bitcointalk.org/index.php?topic=558316.msg6086884#msg6086884

Sounds great on paper - hoping to see it implemented somewhere soon!

Quick question: what prevents Ripple from utilizing DPOS to generate future unique node lists?

Nothing prevents Ripple from doing this..

The difference is: It wouldn't make much of a difference towards the current state of ripple because they control more than 50% of the money supply anyway... The more distributed BTS are the more decentralized it is!!

Inside Ripple the 90% are divided among many players..... so it may still be of some use to them... especially if they ever want to sell.
Title: Re: Delegated Proof of Stake (DPOS) White Paper
Post by: santaclause102 on April 06, 2014, 02:34:24 am
From bitcointalk, https://bitcointalk.org/index.php?topic=558316.msg6086884#msg6086884

Sounds great on paper - hoping to see it implemented somewhere soon!

Quick question: what prevents Ripple from utilizing DPOS to generate future unique node lists?

Nothing prevents Ripple from doing this..

The difference is: It wouldn't make much of a difference towards the current state of ripple because they control more than 50% of the money supply anyway... The more distributed BTS are the more decentralized it is!!

Inside Ripple the 90% are divided among many players..... so it may still be of some use to them... especially if they ever want to sell.

Good point. But the potential for collusion is still higher than with BTS shareholders...
Title: Re: Delegated Proof of Stake (DPOS) White Paper
Post by: zhangweis on April 06, 2014, 01:32:11 pm
As each transaction contains hash of last block, we can easily get how many blocks it takes a transaction to be included into block chain. This could be a major indicator whether the delegated is performing well as of how much it delays transactions. This indicator can be shown to user (voter) in wallet when they vote. This can encourage delegated to work hard to include transactions as quickly as they can and also discourage cheating by delaying some transactions.
Title: Re: Delegated Proof of Stake (DPOS) White Paper
Post by: bytemaster on April 06, 2014, 01:49:58 pm
After talking with Stan on the way to NYC I have a rather significant improvement to DPOS that will make it much more robust:

Every vote for a delegate can be either *for* or *against* them.   A delegate is ranked according to the sum of the votes for them minus the votes against them.   With this process in place it is now possible for delegates to be fired relatively easily for misbehaving even if the vast majority of a delegates supporters are lazy and not paying attention. 

From Sergio Lerner:
Quote
For example, each node should measure:
1. The average latency of each representative
2. The ratio of transactions included in blocks versus the total number of transactions broadcasted (with enough fees).
3. The number of transactions rejected by this block without any reason (discrimination)
4. The number of times a representative has failed to broadcast the block
5. The number of times a representative has cheated by sending his block before his time slot.
6. The number of coins a representative has. (this could be computed if the representative uses the same pubkey for all his coins)

In addition to the statistics Sergio identified there would be the statistic on how often a delegate failed to reference a valid previous block that your client received in time.   This skipping behavior should be punished.

Then we want to have rules that self-regulate / balance the network without significant intervention by the vast majority of the users *or* that will automatically force users to make a judgement when the network needs it.   So here are some additional rules:

0) Assume every wallet has settings that allow the user to specify 10+ delegates that they trust.  They do this one time and never have to touch it unless there are major issues with their list.

1) No delegate may have more than 2% of the vote and this will be enforced by blocking transactions which would push the vote total above 2%.  Users will be warned anytime all of their delegates have over 1.25% of the vote which will give them ample time to select new delegates.   The pro-active users will switch and the inactive users will see their warning go away automatically once the pro-active users switch.   

2) When making a normal transaction the user's wallet always votes for the delegate in their top 10 list with the least votes and pulls votes from the delegate with the most votes.  This will tend to rebalance a user's votes over 10 delegates and help keep the delegate pool well balanced.

3) Any time a client detects any delegate misbehaving by failure to include transactions, produce blocks, or skipping the prior delegates block then the client automatically prioritizes negative votes for this delegate over positive votes for their behaving delegates.    It will not take long for the active transaction volume to accumulate enough negative votes to bump someone from the top 100.  On average it will take less than 24 hours for 0.25% of the share supply to move (assuming it only  moves once per year on average).  0.25% of the users voting against a delegate is likely enough to swing them out of the top 100, especially if clients switch their vote from being 'for' to being 'against' in which case it would be like losing 0.5% in net vote.   

4) Once a delegate is out of the top 200, negative votes are automatically reallocated to positive or negative votes for other delegates. 

5) Many clients can automatically add well behaved delegates to their own approved list after enough observation.  This will allow the network to be self-sustaining while allowing manual intervention by the shareholders if there is a problem. 

At this point we have a solid system that is mostly set it and forget it and which is easily maintained. 




Title: Re: Delegated Proof of Stake (DPOS) White Paper
Post by: CWEvans on April 06, 2014, 04:37:04 pm
Quote
1.3 Ripple Consensus

The Ripple consensus algorithm allows a group of nodes to agree to reach consensus based upon the concept of a unique node list. The initial unique node list is like a club where 51% of the club members must vote to include a new member. Consensus will follow this core 51% and those outside have no influence. Because this club starts out “centralized” it will remain “centralized” and if it ever becomes corrupted there is nothing the shareholders can do. Like Bitcoin and Peercoin, Ripple separates shareholders from voting rights and is thus much more centralized than other systems.

I'm putting that on a t-shirt!

Categorizing cryptocurrency systems according to the seat of voting power is extremely important.

Quote
2.5 Are 100 Representatives Decentralized?

The definition of decentralized is hard to pin down because it has become a buzzword. We consider the free market to be the ultimate form of decentralization and barriers to entry to be the basis of all centralization. Like many things, there are degrees of centralization so we will instead compare the relative centralization of Delegated Proof of Stake to the other alternatives.

This point is ignored wayyy too often. In every critique, one should state explicitly compared to what.

Quote
3.1 Preventing Exclusion of Transactions

Having 100 representatives each elected by the shareholders and being required to take turns means that any transaction that is approved of by even 1% of the shareholders can be included in less than 30 minutes. This means that no representative can benefit by excluding transactions that vote for other representatives.

This should be expanded on and include an example.

Quote
<h4>4.0 Transactions as Proof of Stake (TaPOS)</h4>

should be: <h3>4.0 Transactions as Proof of Stake (TaPOS)</h3>

Every vote for a delegate can be either *for* or *against* them.   A delegate is ranked according to the sum of the votes for them minus the votes against them.   With this process in place it is now possible for delegates to be fired relatively easily for misbehaving even if the vast majority of a delegates supporters are lazy and not paying attention. 

Although it probably would be overkill in this context, it might be of potential use in a general reputation-scoring system to weight the votes cast as a function of the voter's own ranking in the system.  This way, if a gang of trolls decided to attack a particular user, the impact could be mitigated by the fact that their reputations each carried very little weight.

2) When making a normal transaction the user's wallet always votes for the delegate in their top 10 list with the least votes and pulls votes from the delegate with the most votes.  This will tend to rebalance a user's votes over 10 delegates and help keep the delegate pool well balanced.

Some might find this to be unintuitive. When the time comes, maybe we'll want an animated video that illustrates the underlying logic. Two-and-a-half centuries of representative democracy has many, if not most, believing that first-past-the-post winner-take-all democracy is an immutable force of nature.
Title: Re: Delegated Proof of Stake (DPOS) White Paper
Post by: vikram on April 06, 2014, 06:04:25 pm
This is awesome. Dan, please update the whitepaper to reflect the updates when you get the time, so that we can continue to publicize it.
Title: Re: Delegated Proof of Stake (DPOS) White Paper
Post by: yidaidaxia on April 14, 2014, 05:45:28 pm
For these representatives, since they know they will generate the certain block at certain timeslot, I think they could define, generate and add some specific tx to the block they made based on the analysis of all the TXs in their hand before they produce the next block. By doing this, they could get additional profit. It's not fair to other players in the market since they manupilate the market directly although on a slight level.

In longterm, maybe we have to take this previlege and its profit as necessary cost of system, but not sure how this will impact the whole market operation and people's confidence to the market. However, during the group discussion of my friends, we have an idea which may resolve this issue.

As mentioned in whitepater, the activity of excluding some TXs on purpose will be found later then that representative might be removed from the list. But the key of this kind of manupilation is the representative could add his/her own tx after he/she checked up all the other TXs, which is almost impossible to be found and punished. So we should split all/each TX in 2 parts. In part one, the TX broadcasted w/ the detailed trade reques content "enclosed". When the representative receive it, he/she could just add this TX into the block to confirm that this TX is valid but no trading actually happened at that time. Then in next block, the part 2, the next representative's job is to "open the envelope" and complete the trading(e.g. match buy orders and sell orders ). Thus, meaningless to add TX even you know what the best deal for this block since the new added order could just be completed at next block.

Not sure if above proposal("envelope transaction") is technically possible and make sense for marketing perspective. Just want to raise this concern and idea for discussion in case the DPOS is so important and we all want to make it as better as possible.

Thanks.
Title: Re: Delegated Proof of Stake (DPOS) White Paper
Post by: xeroc on April 14, 2014, 06:01:11 pm
Could we link the BOD with their individual keyhotee ID such that cheating really hurts?
Title: Re: Delegated Proof of Stake (DPOS) White Paper
Post by: bytemaster on April 14, 2014, 08:45:57 pm
For these representatives, since they know they will generate the certain block at certain timeslot, I think they could define, generate and add some specific tx to the block they made based on the analysis of all the TXs in their hand before they produce the next block. By doing this, they could get additional profit. It's not fair to other players in the market since they manupilate the market directly although on a slight level.

In longterm, maybe we have to take this previlege and its profit as necessary cost of system, but not sure how this will impact the whole market operation and people's confidence to the market. However, during the group discussion of my friends, we have an idea which may resolve this issue.

As mentioned in whitepater, the activity of excluding some TXs on purpose will be found later then that representative might be removed from the list. But the key of this kind of manupilation is the representative could add his/her own tx after he/she checked up all the other TXs, which is almost impossible to be found and punished. So we should split all/each TX in 2 parts. In part one, the TX broadcasted w/ the detailed trade reques content "enclosed". When the representative receive it, he/she could just add this TX into the block to confirm that this TX is valid but no trading actually happened at that time. Then in next block, the part 2, the next representative's job is to "open the envelope" and complete the trading(e.g. match buy orders and sell orders ). Thus, meaningless to add TX even you know what the best deal for this block since the new added order could just be completed at next block.

Not sure if above proposal("envelope transaction") is technically possible and make sense for marketing perspective. Just want to raise this concern and idea for discussion in case the DPOS is so important and we all want to make it as better as possible.

Thanks.

Your solution is technically possible, but I do not think it solves any problems.   No one can be harmed by 'front running' because everyone always gets what they ask for.    The most a delegate cannot execute a buy and sell at the same time based upon picking and choosing transactions in the block so they must always pick a side of the market to be on.   This may given them a slight edge but nothing that would be a worthwhile problem to solve.  The 2 phase approach would require extra blockchain space, the fees charged to make these extra transactions are likely more than could be saved by delegates attempting to manipulate the network.

So while a delegate could gain some small benefit, statistical analysis would quickly reveal they are using this strategy and thus they would likely get voted out if anyone cared.   



Title: Re: Delegated Proof of Stake (DPOS) White Paper
Post by: bytemaster on April 14, 2014, 08:46:45 pm
Could we link the BOD with their individual keyhotee ID such that cheating really hurts?

A delegate could use the same public key as a way to win votes. 
Title: Re: Delegated Proof of Stake (DPOS) White Paper
Post by: xeroc on April 14, 2014, 08:59:13 pm
So I can 'downvote' his keyhotee id if he messes things up?
Title: Re: Delegated Proof of Stake (DPOS) White Paper
Post by: bytemaster on April 14, 2014, 10:49:33 pm
So I can 'downvote' his keyhotee id if he messes things up?

Keyhotee IDs have no built in voting system in the original design... just a global 'free' key/value pair system. 
Title: Re: Delegated Proof of Stake (DPOS) White Paper
Post by: bytemaster on April 15, 2014, 02:16:16 am
I have been putting together more detailed algorithm documentation here:

http://bitshares.org/documentation/group__dpos.html

If you see anything that needs correction or clarification let me know... the webpage is generated from the following doxygen file:

https://github.com/BitShares/bitshares_toolkit/blob/master/libraries/blockchain/dpos.dox

Title: Re: Delegated Proof of Stake (DPOS) White Paper
Post by: vikram on April 15, 2014, 05:52:05 am
I have been putting together more detailed algorithm documentation here:

http://bitshares.org/documentation/group__dpos.html

If you see anything that needs correction or clarification let me know... the webpage is generated from the following doxygen file:

https://github.com/BitShares/bitshares_toolkit/blob/master/libraries/blockchain/dpos.dox

My questions:

Quote
At all times every share is either voting for or against some delegate but not both.
Are shares already voting at genesis?

Quote
Every transaction moves a vote from one delegate to either the same delegate or another delegate.
Just a single vote or proportional to stake of transaction inputs? If the latter, then proportional to CDD, input BIPS, or what?

Quote
All delegates must register a unique identifier, that can be used to vote for or against them [...] delegates are registered using the bts::blockchain::claim_name_output class
How is the chain bootstrapped i.e. how are the first blocks created so that prospective delegates can register identifiers? What is the minimum number of delegates needed for the chain to operate?

Quote
When registering an identifier a signup fee equal to 100 times the average revenue per block must be paid. This will insure that a delegate must produce at least 1000 blocks to break even and discourage people from running for the delegate position that are not serious.
So a delegate receives 10% of the transaction fees for a block it signs, while the remaining 90% become company dividends?

Quote
Voting Algorithm [...] Delegate Scoring [...]
Is this simply the particular voting and ranking strategy that will be used by the reference wallet implementation?
Title: Re: Delegated Proof of Stake (DPOS) White Paper
Post by: bytemaster on April 15, 2014, 08:38:40 pm
Shares are already voting at genesis at an even 1% per delegate.

Every transaction moves 1 vote per 'satoshi' of the inputs.

100 delegates is the minimum, it is bootstrapped by us nominating them.... in practice the delegates will be only a small number of individuals with many keys. 

The blockchain tracks a moving average of the transaction fees and pays the delegate that average rather than based upon the transactions they include on their turn, this prevents perverse incentives.

The scoring / ranking strategy is all client side and thus can be changed at any time by any client developer. 
Title: Re: Delegated Proof of Stake (DPOS) White Paper
Post by: CWEvans on April 16, 2014, 03:12:57 pm
 +5%
Title: Re: Delegated Proof of Stake (DPOS) White Paper
Post by: clout on April 21, 2014, 05:45:04 am
does dpos or trustee model have faster block times and does that matter?
Title: Re: Delegated Proof of Stake (DPOS) White Paper
Post by: bytemaster on April 21, 2014, 05:46:15 am
Yes it does.  30 sec or better. 


Sent from my iPhone using Tapatalk (http://tapatalk.com/m?id=1)
Title: Re: Delegated Proof of Stake (DPOS) White Paper
Post by: clout on April 21, 2014, 05:50:57 am
Yes it does.  30 sec or better. 


Sent from my iPhone using Tapatalk (http://tapatalk.com/m?id=1)

so 10 - 30 secs with dpos, and how many with trustee
Title: Re: Delegated Proof of Stake (DPOS) White Paper
Post by: bytemaster on April 21, 2014, 05:51:47 am
Trustee could be faster.


Sent from my iPhone using Tapatalk (http://tapatalk.com/m?id=1)
Title: Re: Delegated Proof of Stake (DPOS) White Paper
Post by: clout on April 21, 2014, 06:00:13 am
so if there were not this overarching sentiment in the crypto space around decentraliztion the trustee model would win out?
Title: Re: Delegated Proof of Stake (DPOS) White Paper
Post by: bytemaster on April 21, 2014, 05:30:12 pm
so if there were not this overarching sentiment in the crypto space around decentraliztion the trustee model would win out?

Certainly.   It would solve 99% of problems, increase profits, and reduce overhead. 

As long as there was a social consensus on the chain of command then the network could go on very smoothly.   

Being decentralized has some big marketing advantages and increased robustness against a single server / key being lost or compromised.  So the risks are lower for users which increases value.   It also reduces regulatory risk.
Title: Re: Delegated Proof of Stake (DPOS) White Paper
Post by: bitbro on April 21, 2014, 05:36:59 pm
Shouldn't we launch both trustee and dpos?


Sent from my iPhone using Tapatalk
Title: Re: Delegated Proof of Stake (DPOS) White Paper
Post by: clout on April 21, 2014, 07:24:55 pm
https://bitsharestalk.org/index.php?topic=3812.0

Quote
We should have P2P fully integrated and tested this week under the trustee model.   At this point we will launch the chain with an intention of doing a hard-fork to activate DPOS once enough delegates have been elected and the system is sound.
Title: Re: Delegated Proof of Stake (DPOS) White Paper
Post by: Mrrr on April 23, 2014, 07:14:51 pm
I don't know whether this has been discussed before (if it is, do excuse me) but:

What is the incentive of the user to vote in the first place?

I'm talking about a direct incentive here.

Reason I'm asking is because of this:

Heavycoin had/has its 'revolutionary' block reward voting. I personally couldn't be arsed to change the presets of the miner I downloaded off the pool website.

Title: Re: Delegated Proof of Stake (DPOS) White Paper
Post by: bytemaster on April 23, 2014, 07:35:34 pm
I don't know whether this has been discussed before (if it is, do excuse me) but:

What is the incentive of the user to vote in the first place?

I'm talking about a direct incentive here.

Reason I'm asking is because of this:

Heavycoin had/has its 'revolutionary' block reward voting. I personally couldn't be arsed to change the presets of the miner I downloaded off the pool website.

Users don't have to think about it... their client will automatically vote against anyone who is not performing and otherwise vote for the default clients.  Through observation it all clients will learn who to vote for.   

Users don't have to think about who to vote for, it is all automatic unless they want to override the automatic settings.   Those wishing to become delegate must market and campaign for people to override the defaults.   This means they must provide motivation for people to take action such as:

1) increasing user dividends
2) offering other services as a side benefit

Title: Re: Delegated Proof of Stake (DPOS) White Paper
Post by: smiley35 on April 23, 2014, 07:41:40 pm
I don't know whether this has been discussed before (if it is, do excuse me) but:

What is the incentive of the user to vote in the first place?

I'm talking about a direct incentive here.

Reason I'm asking is because of this:

Heavycoin had/has its 'revolutionary' block reward voting. I personally couldn't be arsed to change the presets of the miner I downloaded off the pool website.

Users don't have to think about it... their client will automatically vote against anyone who is not performing and otherwise vote for the default clients.  Through observation it all clients will learn who to vote for.   

Users don't have to think about who to vote for, it is all automatic unless they want to override the automatic settings.   Those wishing to become delegate must market and campaign for people to override the defaults.   This means they must provide motivation for people to take action such as:

1) increasing user dividends
2) offering other services as a side benefit

Could you elaborate on that bytemaster. Increase the user dividend by changing the block you mean?

What other services for example?
Title: Re: Delegated Proof of Stake (DPOS) White Paper
Post by: Mrrr on April 23, 2014, 07:43:19 pm
I don't know whether this has been discussed before (if it is, do excuse me) but:

What is the incentive of the user to vote in the first place?

I'm talking about a direct incentive here.

Reason I'm asking is because of this:

Heavycoin had/has its 'revolutionary' block reward voting. I personally couldn't be arsed to change the presets of the miner I downloaded off the pool website.

Users don't have to think about it... their client will automatically vote against anyone who is not performing and otherwise vote for the default clients.  Through observation it all clients will learn who to vote for.   

Users don't have to think about who to vote for, it is all automatic unless they want to override the automatic settings.   Those wishing to become delegate must market and campaign for people to override the defaults.   This means they must provide motivation for people to take action such as:

1) increasing user dividends
2) offering other services as a side benefit

That's very smart. Thanks for the explanation.
Title: Re: Delegated Proof of Stake (DPOS) White Paper
Post by: cob on May 04, 2014, 07:09:56 pm
Is that 10% fee definite or can it float?

Is that what you meant by: "increasing user dividends"? Meaning a delegate could say I'll just take 8% commission and thus leave 92% to the shareholders.
Title: Re: Delegated Proof of Stake (DPOS) White Paper
Post by: bytemaster on May 04, 2014, 07:22:38 pm
Is that 10% fee definite or can it float?

Is that what you meant by: "increasing user dividends"? Meaning a delegate could say I'll just take 8% commission and thus leave 92% to the shareholders.

Yes
Title: Re: Delegated Proof of Stake (DPOS) White Paper
Post by: CLains on May 06, 2014, 03:52:53 pm
The bitcointalk DPOS thread is quite active, Clout defending against AnonyMint:

https://bitcointalk.org/index.php?topic=558316.msg6501774#msg6501774
Title: Re: Delegated Proof of Stake (DPOS) White Paper
Post by: xeroc on May 06, 2014, 04:10:01 pm
Wow.. nice thread .. thx for letting us know
Title: Re: Delegated Proof of Stake (DPOS) White Paper
Post by: bytemaster on May 06, 2014, 04:26:46 pm
Very interesting thread over there....

Title: Re: Delegated Proof of Stake (DPOS) White Paper
Post by: werneo on May 06, 2014, 08:00:57 pm
Bitcoin "has not solved the Byzantine Generals Problem... it just defined a rule set for consensus  that allows anyone with money to control the network and once controlled there are no alternatives."

BING, BADDA BOOM!

https://bitcointalk.org/index.php?topic=558316.msg6577007#msg6577007  *edited with correct link.
Title: Re: Delegated Proof of Stake (DPOS) White Paper
Post by: CLains on May 06, 2014, 08:31:32 pm
Instead of plotting a reply just videocall AnonyMint one evening and press record - he seems lonely.
Title: Re: Delegated Proof of Stake (DPOS) White Paper
Post by: bytemaster on May 08, 2014, 06:15:33 pm
Recent update... the number of delegates must be a ODD number to prevent the potential of a chain split of equal length.     We had discussed making the number of delegates PRIME, but this seems to be an unnecessary considering a it does not prevent a 3-way split from potentially forming two equal length chains. 

At every time interval (30 sec) exactly one block can be produced (or not produced).   If the network splits this means that two chains with opposite holes will be produced until the missing delegates are fired.   Assuming both sides of the fork replace their delegates at an equal rate then the chain that started out with the most delegates will always have the most blocks and thus be the best.   

If you get a chain fork that lasts for a prolonged period of time then which ever chain is most effective at keeping delegates online will ultimately win.   To be effective at this will require that the delegates that were disconnected be replaced rapidly; however, to replace them requires shareholders to switch votes or to vote against them.   This means that the fork is ultimately resolved by how the shareholders are divided by the network split rather than just how the delegates are divided.   

What will likely happen in the event of such a split is that all shareholders will become aware of the split immediately and also know which side of the split they are on.  Many delegates can immediately detect that they are on a minority fork and could choose to let the minority fork die by voluntarily not producing blocks for it.   Only in the event of hostile delegates would the minority delegates & shareholders attempt to 'make a run for it'... 

Conclusion: having an ODD number of delegates makes it easy to identify a minority fork and the shareholders and delegates will act accordingly. 

There is one last 'far-out-there' attack where the network is divided into 3 or more pieces less than 50%... in this case the delegates would have to stay online producing blocks until they could confirm that their 3rd is the largest 3rd.  If they are in the smallest 3rd then they should stop producing blocks to let that third die.

These corner cases are all ultimately resolved by the longest-chain standard and it is inconceivable to think that a consensus would not force once fork or another to win out.
Title: Re: Delegated Proof of Stake (DPOS) White Paper
Post by: tonyk on May 08, 2014, 06:33:39 pm
'This means that the fork is ultimately resolved by how the shareholders are divided by the network split rather than just how the delegates are divided.'

How are the shareholders divided?
 Are they (the shareholders) actually divided?  or only their vote/s is divided.
Title: Re: Delegated Proof of Stake (DPOS) White Paper
Post by: bytemaster on May 08, 2014, 07:43:31 pm
'This means that the fork is ultimately resolved by how the shareholders are divided by the network split rather than just how the delegates are divided.'

How are the shareholders divided?
 Are they (the shareholders) actually divided?  or only their vote/s is divided.

Their ability to change their vote is divided by their ability to broadcast to the network.
Title: Re: Delegated Proof of Stake (DPOS) White Paper
Post by: tonyk on May 08, 2014, 08:51:03 pm
Quite possibly I am missing significant piece of the puzzle here but:
Do shareholders broadcast their vote through delegates only? (I was under the impression that it is done through any active/online wallet/node, no matter if they are delegates or not?)
If my understanding is correct, the # of initial delegates *working* on any of the now competing forks, will be a factor, but not the deciding factor which fork survives. (In that regards you can choose # of delegates not divisible by 2,3 and 5, just for a good measure). Far more important will be fast, organize action of significant part of the shareholders – in that regard single-minded 25% shareholder (group of shareholders), will be the likely winners even if they chose to support the fork with let say 1/3 of the initial delegates
Title: Re: Delegated Proof of Stake (DPOS) White Paper
Post by: bitmeat on May 08, 2014, 09:18:55 pm
Not sure there is a much better one, but making number of delegates odd, seems like an ad-hoc bandaid solution to a fundamental problem.


Sent from my iPhone using Tapatalk
Title: Re: Delegated Proof of Stake (DPOS) White Paper
Post by: bitmeat on May 08, 2014, 09:21:08 pm
When designing a DPOS you have to assume that at some point the delegates may decide to act together and coordinate in their own interest and misrepresent information. Are there mechanisms in place to prevent that from happening?


Sent from my iPhone using Tapatalk
Title: Re: Delegated Proof of Stake (DPOS) White Paper
Post by: bytemaster on May 08, 2014, 11:31:10 pm
Not sure there is a much better one, but making number of delegates odd, seems like an ad-hoc bandaid solution to a fundamental problem.


Sent from my iPhone using Tapatalk

Being odd only handles a single, rare, corner case and is not a key feature or bandaid.   It would probably work just fine being even.  We only recognized this corner case after much thought about the edge conditions of our algorithm.
Title: Re: Delegated Proof of Stake (DPOS) White Paper
Post by: bytemaster on May 08, 2014, 11:41:22 pm
When designing a DPOS you have to assume that at some point the delegates may decide to act together and coordinate in their own interest and misrepresent information. Are there mechanisms in place to prevent that from happening?

Sent from my iPhone using Tapatalk

Assuming 51% of the delegates decide to collude they could block transactions just like a 51% in bitcoin.   However, they could not sign alternative blocks without getting fired.   If the average shareholder elects people that will collude to harm the network then the network will end up getting hard-forked and continue with new delegates... not pleasant but not the end of the world and certainly much better than Bitcoin mining pools colluding.   

If less than 51% are colluding they will get fired for signing false blocks and would certainly get caught.   

Light weight clients could query multiple delegates which are unlikely to collude to defraud them... this is a similar principle to Ripple.   

As the delegates have a stake in the network, an income stream, and their ability to retain control after attempting to harm the network is near 0 I don't see this as a legitimate threat.

Title: Re: Delegated Proof of Stake (DPOS) White Paper
Post by: bitmeat on May 08, 2014, 11:56:04 pm
Perhaps their income stream could be locked for a certain length of time sufficient enough to encourage good behavior. Like what they get paid is actually payable within the next year in chunks. Just a thought.


Sent from my iPhone using Tapatalk
Title: Re: Delegated Proof of Stake (DPOS) White Paper
Post by: cob on May 09, 2014, 03:26:52 am
Perhaps their income stream could be locked for a certain length of time sufficient enough to encourage good behavior. Like what they get paid is actually payable within the next year in chunks. Just a thought.

Cool idea. As long as it's not too long. Since there might be ups and downs in the market. Also might be costly to run a top notch Delegate computer and bills might need to be paid. Nothing insane like ASICs of course.
I'm guessing the payment would be withheld just long enough to make sure no collusion happened.
Title: Re: Delegated Proof of Stake (DPOS) White Paper
Post by: bitmeat on May 09, 2014, 04:13:36 am
The cost of doing a digital signature is practically free. There is no way this will need a top notch computer. That's the whole point - delegates put money upfront to reserve their spot, sort of like a license to print money haha :) but there are checks and balances that if they do something nefarious they would lose the license and the money they put up.


Sent from my iPhone using Tapatalk
Title: Re: Delegated Proof of Stake (DPOS) White Paper
Post by: sudo on May 09, 2014, 07:21:49 am
When designing a DPOS you have to assume that at some point the delegates may decide to act together and coordinate in their own interest and misrepresent information. Are there mechanisms in place to prevent that from happening?

Sent from my iPhone using Tapatalk

Assuming 51% of the delegates decide to collude they could block transactions just like a 51% in bitcoin.   However, they could not sign alternative blocks without getting fired.   If the average shareholder elects people that will collude to harm the network then the network will end up getting hard-forked and continue with new delegates... not pleasant but not the end of the world and certainly much better than Bitcoin mining pools colluding.   

If less than 51% are colluding they will get fired for signing false blocks and would certainly get caught.   

Light weight clients could query multiple delegates which are unlikely to collude to defraud them... this is a similar principle to Ripple.   

As the delegates have a stake in the network, an income stream, and their ability to retain control after attempting to harm the network is near 0 I don't see this as a legitimate threat.


Once  delegates do evil,is there  any other punishment  besides fire? Such as destroy certain amount bts of these bad delegates?
Title: Re: Delegated Proof of Stake (DPOS) White Paper
Post by: sudo on May 09, 2014, 07:27:05 am
Perhaps their income stream could be locked for a certain length of time sufficient enough to encourage good behavior. Like what they get paid is actually payable within the next year in chunks. Just a thought.


Sent from my iPhone using Tapatalk


 +5%   to be a Delegate.Certain amount of bts  should be locked by system.
the 10% fee win unlock until the block is verifyed  about certain blocks later
such as  block 1000 is handled by Delegate1, when block 1100 is confirmed ,the fee of block 1000 is unlocked.
Title: Re: Delegated Proof of Stake (DPOS) White Paper
Post by: santaclause102 on May 12, 2014, 08:21:31 pm
What about will the tx fees be for a DPOS tx? It should be the same no matter how high tx volume is because, as far as I know, the reward for the delegates should depend on the tx volume?
Title: Re: Delegated Proof of Stake (DPOS) White Paper
Post by: bytemaster on May 12, 2014, 10:24:02 pm
What about will the tx fees be for a DPOS tx? It should be the same no matter how high tx volume is because, as far as I know, the reward for the delegates should depend on the tx volume?

TRX Fee is proportional to the number of bytes for most transactions.  Fee adjusts like bitcoin difficulty does... if the block sizes get too big the fee goes up, if they shrink the fee falls.   

The network only makes a lot of money once transaction demand starts to be more than bandwidth allotments.
Title: Re: Delegated Proof of Stake (DPOS) White Paper
Post by: santaclause102 on May 12, 2014, 10:35:13 pm
What about will the tx fees be for a DPOS tx? It should be the same no matter how high tx volume is because, as far as I know, the reward for the delegates should depend on the tx volume?

TRX Fee is proportional to the number of bytes for most transactions.  Fee adjusts like bitcoin difficulty does... if the block sizes get too big the fee goes up, if they shrink the fee falls.   

The network only makes a lot of money once transaction demand starts to be more than bandwidth allotments.
So if the average byte size of a block is small but I post a tx with a lot of bytes, than that wouldn't cost me much? That would not be a good incentive structure... Would it?
What about would the tx fee be when the (average or individual? See question above in this post) tx byte size is the one of a simple tx (transfer tokens from adr. A to Adr. B)? 
Title: Re: Delegated Proof of Stake (DPOS) White Paper
Post by: bytemaster on May 12, 2014, 10:54:43 pm
Min trx size is 140 bytes. 




Sent from my iPhone using Tapatalk (http://tapatalk.com/m?id=1)
Title: Re: Delegated Proof of Stake (DPOS) White Paper
Post by: santaclause102 on May 12, 2014, 10:58:22 pm
Min trx size is 140 bytes. 

Sent from my iPhone using Tapatalk (http://tapatalk.com/m?id=1)
sorry bm dont wanna keep you from work... I wanted to estimate the tx FEE not the tx size...
Quote
What about would the tx fee be when the (average or individual? See question above in this post) tx byte size is the one of a simple tx (transfer tokens from adr. A to Adr. B)? 
Title: Re: Delegated Proof of Stake (DPOS) White Paper
Post by: bytemaster on May 12, 2014, 11:11:59 pm
1 share per byte. 


Sent from my iPhone using Tapatalk (http://tapatalk.com/m?id=1)
Title: Re: Delegated Proof of Stake (DPOS) White Paper
Post by: bitmeat on May 12, 2014, 11:16:21 pm
?!? 1BTS per byte meaning a transaction will charge at least 140 BTS? I think I missed an important detail here.


Sent from my iPhone using Tapatalk
Title: Re: Delegated Proof of Stake (DPOS) White Paper
Post by: bytemaster on May 12, 2014, 11:24:53 pm
1 share is a satoshi. 


Sent from my iPhone using Tapatalk (http://tapatalk.com/m?id=1)
Title: Re: Delegated Proof of Stake (DPOS) White Paper
Post by: bytemaster on May 12, 2014, 11:27:13 pm
That is just the min.  Delegates and wallets will likely require more until we know a solid price. 


Sent from my iPhone using Tapatalk (http://tapatalk.com/m?id=1)
Title: Re: Delegated Proof of Stake (DPOS) White Paper
Post by: santaclause102 on May 12, 2014, 11:33:13 pm
1 share per byte. 

Sent from my iPhone using Tapatalk (http://tapatalk.com/m?id=1)

But 1 share could be worth a lot. 140 XTS per tx would be a bit much.   Answered above
Background: I calculated the bitcoin real tx fee to be around 28 USD per every tx: There are about 400 tx per block with btc atm https://blockchain.info/charts/n-transactions-per-block -> 25 btc / 400 tx = 0.0625 btc = 28.125 USD per tx, which is the average cost per tx the network has, which is paid to miners.
To estimate the efficiency gain I wanted to have a comparable measure for a DPOS network.
You mentioned before that if a DPOS chain would roughly have the tx volume Bitcoin has now, a delegate would earn 25,000 USD per year ->  25000 * 100 (delegates) * 10 (as delegates only get 10 % of fees) = 25000000 tx fees per year / 365 = 68493 / 24 = 2854 / 6 = 475.64 / 400 (tx volme pper 10 minutes like now with bitcoin) = 1.19 USD tx fee per tx
That though surely would be not the direct way to estimate tx fees... 
Title: Re: Delegated Proof of Stake (DPOS) White Paper
Post by: bytemaster on May 13, 2014, 12:20:47 am
Dpos aims for a max around 8 trx per sec.


Sent from my iPhone using Tapatalk (http://tapatalk.com/m?id=1)
Title: Re: Delegated Proof of Stake (DPOS) White Paper
Post by: bytemaster on May 13, 2014, 12:38:20 am
If you increase the min fee to $0.01 then the network would earn $5 per min and a delegate would earn 0.005 per min. 0.30 per hour for a total $600 per year. 

We can therefore calculate the delegate pay based upon the average dollar value of the trx fee.

The challenge is pegging the fee to a dollar amount in some reasonable way. 







Sent from my iPhone using Tapatalk (http://tapatalk.com/m?id=1)
Title: Re: Delegated Proof of Stake (DPOS) White Paper
Post by: BTSdac on May 13, 2014, 01:47:45 am
Dpos aims for a max around 8 trx per sec.


Sent from my iPhone using Tapatalk (http://tapatalk.com/m?id=1)
+5%
only 8trx per sec ?
Title: Re: Delegated Proof of Stake (DPOS) White Paper
Post by: jwiz168 on May 13, 2014, 02:16:05 am
If you increase the min fee to $0.01 then the network would earn $5 per min and a delegate would earn 0.005 per min. 0.30 per hour for a total $600 per year. 

We can therefore calculate the delegate pay based upon the average dollar value of the trx fee.

The challenge is pegging the fee to a dollar amount in some reasonable way. 

Sent from my iPhone using Tapatalk (http://tapatalk.com/m?id=1)

what is the operating time for a day? 24 hours?

Base on this

0.005/min   0.30/hour  ??/day  600/year <--- how did this calculated ?

Title: Re: Delegated Proof of Stake (DPOS) White Paper
Post by: bytemaster on May 13, 2014, 02:38:33 am
If you increase the min fee to $0.01 then the network would earn $5 per min and a delegate would earn 0.005 per min. 0.30 per hour for a total $600 per year. 

We can therefore calculate the delegate pay based upon the average dollar value of the trx fee.

The challenge is pegging the fee to a dollar amount in some reasonable way. 

Sent from my iPhone using Tapatalk (http://tapatalk.com/m?id=1)

what is the operating time for a day? 24 hours?

Base on this

0.005/min   0.30/hour  ??/day  600/year <--- how did this calculated ?

I did that wrong $2628 per year is the proper number.

I calculated it as if it were a salary for 2000 hours per year. 
Title: Re: Delegated Proof of Stake (DPOS) White Paper
Post by: jwiz168 on May 13, 2014, 02:52:53 am
If you increase the min fee to $0.01 then the network would earn $5 per min and a delegate would earn 0.005 per min. 0.30 per hour for a total $600 per year. 

We can therefore calculate the delegate pay based upon the average dollar value of the trx fee.

The challenge is pegging the fee to a dollar amount in some reasonable way. 

Sent from my iPhone using Tapatalk (http://tapatalk.com/m?id=1)

what is the operating time for a day? 24 hours?

Base on this

0.005/min   0.30/hour  ??/day  600/year <--- how did this calculated ?

I did that wrong $2628 per year is the proper number.

I calculated it as if it were a salary for 2000 hours per year.

 +5%

so it is 24 hour operation. Thank you for clarifying this.
Title: Re: Delegated Proof of Stake (DPOS) White Paper
Post by: santaclause102 on May 13, 2014, 08:55:42 am
If you increase the min fee to $0.01 then the network would earn $5 per min and a delegate would earn 0.005 per min. 0.30 per hour for a total $600 per year. 

We can therefore calculate the delegate pay based upon the average dollar value of the trx fee.

The challenge is pegging the fee to a dollar amount in some reasonable way. 

Sent from my iPhone using Tapatalk (http://tapatalk.com/m?id=1)

8 tx per second max. seems not like much. Visa seems to be able to do 10,000 per second http://www.washingtonpost.com/blogs/the-switch/wp/2013/11/12/bitcoin-needs-to-scale-by-a-factor-of-1000-to-compete-with-visa-heres-how-to-do-it/
    And acc. to this http://de.slideshare.net/MrCollectrix/future-opportunities-and-economic-challenges-for-cryptoledgers-trends-and-speculative-possibilities-of-frictionless-trustless-asset-management?ref=http://www.ofnumbers.com/ Slide 26, Ripple can do 100-10000, NXT 4, Litecoin 28 and Dodge 70 (each tx per second).

Reading this, it seems to me that it might make sense to lower the number of delegates because of two reasons: Each further delegate adds to the overall network costs. And (not discussed above) there will be a limited number of candidates that are known to the forum atm (maybe 10), the others could be filled by malicious actors and that proportionally more so if there are many delegates.

What do you think?
Title: Re: Delegated Proof of Stake (DPOS) White Paper
Post by: bytemaster on May 13, 2014, 12:44:23 pm
The limit is purely based on target bandwidth for a single chain.  We can technically handle more than any of those mentioned


Sent from my iPhone using Tapatalk (http://tapatalk.com/m?id=1)
Title: Re: Delegated Proof of Stake (DPOS) White Paper
Post by: bytemaster on May 21, 2014, 10:18:59 pm
I have changed the spec for DPOS to select the delegate randomly rather than sequentially to prevent an attack whereby a delegate could tweak their vote so they are always scheduled to be the next delegate.

The random number selection is also useful for lotto dac.
Title: Re: Delegated Proof of Stake (DPOS) White Paper
Post by: bitmeat on May 21, 2014, 10:36:05 pm

I have changed the spec for DPOS to select the delegate randomly rather than sequentially to prevent an attack whereby a delegate could tweak their vote so they are always scheduled to be the next delegate.

The random number selection is also useful for lotto dac.

+5% nice catch and great work!
Title: Re: Delegated Proof of Stake (DPOS) White Paper
Post by: xeroc on May 22, 2014, 05:55:54 am
Now this seems to be pretty same thing as what transparent forging 2 at nxt is supposed to do. Although no sources are available for tf2
Title: Re: Delegated Proof of Stake (DPOS) White Paper
Post by: sudo on May 22, 2014, 06:34:26 am
I have changed the spec for DPOS to select the delegate randomly rather than sequentially to prevent an attack whereby a delegate could tweak their vote so they are always scheduled to be the next delegate.

The random number selection is also useful for lotto dac.

 +5% +5%
Title: Re: Delegated Proof of Stake (DPOS) White Paper
Post by: HackFisher on May 22, 2014, 08:40:33 am
I have changed the spec for DPOS to select the delegate randomly rather than sequentially to prevent an attack whereby a delegate could tweak their vote so they are always scheduled to be the next delegate.

The random number selection is also useful for lotto dac.

+5%
Save a lot of time of lotto DAC effort on secret things, and the delegates random schedule makes the random number more safe from attack now.
I implemented an async secret transaction broadcastor for delegates to use, but now we have built-in mechanism which we can use directly, great.
Title: Re: Delegated Proof of Stake (DPOS) White Paper
Post by: santaclause102 on May 22, 2014, 08:45:23 am
Wouldn't it make sense to lower the number of delegates at the beginning when there are probably just a few candidates that are known and can be trusted. When the thing gets as bigger and more people know about it we will have more trustworthy people with real world identities... 
Title: Re: Delegated Proof of Stake (DPOS) White Paper
Post by: JoeyD on May 22, 2014, 11:40:57 am
Latching on to Delulos question and after listening to the mumble-recording I've got a couple of questions as well.

How is the firing and hiring of delegates handled? I somewhat understand how the popularity vote works, but not what happens when one delegate is fired. Is there a digital dug-out, where reserve delegates are waiting to be put into the playing field? Also if for security reasons there needs to be an odd number of delegates how is that handled, are delegates dynamically removed or hired when the total is an even number? Can the total number of delegates vary dynamically by user vote or does it require a hard-fork?
Title: Re: Delegated Proof of Stake (DPOS) White Paper
Post by: santaclause102 on May 22, 2014, 01:14:01 pm
I think there is a list of delegates ordered by the number of votes they got that goes beyond 100. I guess the list is as long as there are delegates that fullfill the requirements and have at least one vote for them... I think I read it in the whitepaper somewhere implicitly. 
Title: Re: Delegated Proof of Stake (DPOS) White Paper
Post by: bytemaster on May 22, 2014, 01:48:16 pm
I think there is a list of delegates ordered by the number of votes they got that goes beyond 100. I guess the list is as long as there are delegates that fullfill the requirements and have at least one vote for them... I think I read it in the whitepaper somewhere implicitly.

Exactly.
Title: Re: Delegated Proof of Stake (DPOS) White Paper
Post by: liondani on May 22, 2014, 02:15:45 pm
Would it be a good idea to "fire" every X time the last y (even number) delegates (with the lowest votes)  from the 99 first delegates even if they have a good reputation so the other delegates on the list (after the 99 first) have the chance to proof they can make also a very good job and collect more votes after they proove it.The same time everybody on the  list compete each other to give the best results (having excellent equipmment etc.) so they try to be as higher on the list as possible ... Could it be the case that the first 1-2 years nobody get fired because they are all "trustfull" (until they proove the opposite) and when we really need new "realy" trustfull delegates we don't find them anymore because they don't are anymore on the waiting list? Maybe my suggestion is worthless because I don't understand the concept verry well... at least I am trying to help  :)
Title: Re: Delegated Proof of Stake (DPOS) White Paper
Post by: MolonLabe on May 22, 2014, 02:41:31 pm
I'm confused about something.

Here's what I'm imagining:

Phase 1: Establish Large Stake
a] Borrow 1 million USD
b] Purchase 1 million USD's worth of BTS (or 4% of the total or whatever).
c] Send these transactions to yourself a few times, using these votes to appoint different versions of yourself as a few delegates in a row. Play by the rules for now, including saving up as much coin age as possible.
d] Sell BTS for ~1 million, right as your delegates are in a row (you may have some profit or loss here).
e] Repay your loan.

Phase 2: Build Fake Chains
a] Enter a VM/Supercomputing environment where you can easily do many calculations per second.
b] Take the current blockchain from point (1.d), where you have a few delegates in a row.
c] Using the existing 'real' transaction history, build several thousand parallel chains, one with the 1d sale transaction (which is broadcast), but all others without (which are private).
d] When the last delegate-controlled-by-you is up, proceed to Phase 3.

Phase 3: Profit
a] Broadcast the fake chains, and have your last delegate sign them all quickly (you won't even have to validate, as you know your own chains inside the VM). The thousand attack-chains are now the longest, but none include the 1c sale transaction. Have your delegate refuse to sign the 'real' chain (although you can claim he just 'did not get to it' in time with so many other chains to sign).
b] The next delegate will pick the longest chain (the attack chain) and sign it.
c] One or all of your delegates will be fired (or, possibly, the average user will never notice that anything happened, and none will be fired).
d] In a few blocks, double-spend-sell BTS in step 1d for 1 million.
e] Free million!


What are the problems with this?
Title: Re: Delegated Proof of Stake (DPOS) White Paper
Post by: bytemaster on May 22, 2014, 02:55:16 pm
Would it be a good idea to "fire" every X time the last y (even number) delegates (with the lowest votes)  from the 99 first delegates even if they have a good reputation so the other delegates on the list (after the 99 first) have the chance to proof they can make also a very good job and collect more votes after they proove it.The same time everybody on the  list compete each other to give the best results (having excellent equipmment etc.) so they try to be as higher on the list as possible ... Could it be the case that the first 1-2 years nobody get fired because they are all "trustfull" (until they proove the opposite) and when we really need new "realy" trustfull delegates we don't find them anymore because they don't are anymore on the waiting list? Maybe my suggestion is worthless because I don't understand the concept verry well... at least I am trying to help  :)

This is an interesting concept.  Effectively all you are doing is increasing the number of delegates and forcing the lower delegates to 'take turns'.
Title: Re: Delegated Proof of Stake (DPOS) White Paper
Post by: bytemaster on May 22, 2014, 03:03:36 pm
I'm confused about something.

Here's what I'm imagining:

Phase 1: Establish Large Stake
a] Borrow 1 million USD
b] Purchase 1 million USD's worth of BTS (or 4% of the total or whatever).
c] Send these transactions to yourself a few times, using these votes to appoint different versions of yourself as a few delegates in a row. Play by the rules for now, including saving up as much coin age as possible.
d] Sell BTS for ~1 million, right as your delegates are in a row (you may have some profit or loss here).
e] Repay your loan.

Phase 2: Build Fake Chains
a] Enter a VM/Supercomputing environment where you can easily do many calculations per second.
b] Take the current blockchain from point (1.d), where you have a few delegates in a row.
c] Using the existing 'real' transaction history, build several thousand parallel chains, one with the 1d sale transaction (which is broadcast), but all others without (which are private).
d] When the last delegate-controlled-by-you is up, proceed to Phase 3.

Phase 3: Profit
a] Broadcast the fake chains, and have your last delegate sign them all quickly (you won't even have to validate, as you know your own chains inside the VM). The thousand attack-chains are now the longest, but none include the 1c sale transaction. Have your delegate refuse to sign the 'real' chain (although you can claim he just 'did not get to it' in time with so many other chains to sign).
b] The next delegate will pick the longest chain (the attack chain) and sign it.
c] One or all of your delegates will be fired (or, possibly, the average user will never notice that anything happened, and none will be fired).
d] In a few blocks, double-spend-sell BTS in step 1d for 1 million.
e] Free million!


What are the problems with this?

Step 1:  buy a large amount of BTS with borrowed money
Step 2:  appoint yourself to be a delegate
Step 3:  once delegate, build a large number of fake chains in secret...
Step 4:  sell a large amount of BTS
Step 5:  reveal your fake chain.

The attack only works if you buy 51% of the delegates because regardless of how much computational power you have you can only produce one block per delegate per round (a round is where every delegate produces a block).   The time stamps on the blocks are deterministic and always incrementing by the block interval.   The result is that your secret chain would only be able to produce 4% of the blocks that the public chain was producing and thus would be much shorter.  You wouldn't even be able to vote other delegates out or do anything in secret that would allow you to produce blocks faster.   

The only way for your secret chain to get longer is to produce blocks with timestamps in the future, but those blocks would be rejected by all peers. 

Lastly, once you did reveal your secret chain (or if it were accidentally discovered) evidence that you signed two blocks with the same timestamp will get you fired from both chains.

Conclusion: this attack is just the 51% attack carried out with leverage.   However, it has one other problem.  The main chain ignores all forks older than a certain date provided you have the majority of delegates producing blocks on your fork.   The secret chain wouldn't be accepted even if it were 'longer'. 
Title: Re: Delegated Proof of Stake (DPOS) White Paper
Post by: santaclause102 on May 22, 2014, 03:24:18 pm
Wouldn't it make sense to lower the number of delegates at the beginning when there are probably just a few candidates that are known and can be trusted. When the thing gets as bigger and more people know about it we will have more trustworthy people with real world identities...
Any opinion on this bm?
Title: Re: Delegated Proof of Stake (DPOS) White Paper
Post by: Amazon on May 22, 2014, 03:26:20 pm
Wouldn't it make sense to lower the number of delegates at the beginning when there are probably just a few candidates that are known and can be trusted. When the thing gets as bigger and more people know about it we will have more trustworthy people with real world identities...
Any opinion on this bm?

I think we should set the rules fixed and hard coded from the beginning
Title: Re: Delegated Proof of Stake (DPOS) White Paper
Post by: bytemaster on May 22, 2014, 03:27:52 pm
Wouldn't it make sense to lower the number of delegates at the beginning when there are probably just a few candidates that are known and can be trusted. When the thing gets as bigger and more people know about it we will have more trustworthy people with real world identities...
Any opinion on this bm?

A delegate does not equal an individual (networks are ignorant of the the concept of individuals).   So it is entirely possible to have 1000 delegates controlled by 7 trusted individuals.   The key is to set the threshold for allowing someone to become a delegate and to moderate this with confirmation time.    Anyone who is unable to secure 1% or so of the support of the shareholders is likely not a good candidate.   However, requiring 5% may be too much. 

Reducing the number of delegates helps to increase the pay-per-delegate which increases the competition to be delegates and thus the quality of service.  There is probably a balance between too many and too few.
Title: Re: Delegated Proof of Stake (DPOS) White Paper
Post by: bytemaster on May 22, 2014, 03:53:27 pm
I also changed the implementation to only re-rank the delegates once per round where a around is N blocks where N == the number of active delegates.

Title: Re: Delegated Proof of Stake (DPOS) White Paper
Post by: MolonLabe on May 22, 2014, 05:19:39 pm

The attack only works if you buy 51% of the delegates because regardless of how much computational power you have you can only produce one block per delegate per round (a round is where every delegate produces a block).   
No, I am saying you have a few delegates in a row, and attack within a single round.

Lastly, once you did reveal your secret chain (or if it were accidentally discovered) evidence that you signed two blocks with the same timestamp will get you fired from both chains.
I know.

Conclusion: this attack is just the 51% attack carried out with leverage.   However, it has one other problem.  The main chain ignores all forks older than a certain date provided you have the majority of delegates producing blocks on your fork.   The secret chain wouldn't be accepted even if it were 'longer'. 

The whitepaper says:
2.4 Resolving Chain Forks
Like proof of work and other proof of stake systems, the best block chain is the longest valid chain.

But, how does the the software know which chain is valid? If two blocks are signed, the delegate is fired, but which block succeeds? I assume the NEXT delegate (which I also control) will decide, that is how I double spend.
Title: Re: Delegated Proof of Stake (DPOS) White Paper
Post by: liondani on May 22, 2014, 05:37:56 pm
Would it be a good idea to "fire" every X time the last y (even number) delegates (with the lowest votes)  from the 99 first delegates even if they have a good reputation so the other delegates on the list (after the 99 first) have the chance to proof they can make also a very good job and collect more votes after they proove it.The same time everybody on the  list compete each other to give the best results (having excellent equipmment etc.) so they try to be as higher on the list as possible ... Could it be the case that the first 1-2 years nobody get fired because they are all "trustfull" (until they proove the opposite) and when we really need new "realy" trustfull delegates we don't find them anymore because they don't are anymore on the waiting list? Maybe my suggestion is worthless because I don't understand the concept verry well... at least I am trying to help  :)

This is an interesting concept.  Effectively all you are doing is increasing the number of delegates and forcing the lower delegates to 'take turns'.

What if the number of the effective delegates is a % of something that has to do with the "chain growth"/market cap/average number of transactions per day for the last x months ? I mean in the begining the 99 delegates will be more than enough.But after 3 years if we make the hypothesis that the marketcap for DPOS-PTS2 is in the 5 top places I would personally be not comfortable with 99 delegates... When I think 99 delegates take the fees for million's of transactions it seems centralized in my mind... to many power/"money" to a few delegates...So it would be reasonable the odd number of delegates to change proportional to maybe "average transactions" (per day) or "average fee value" etc. combined with my first proposal to give the change to more delegates to participate...
Title: Re: Delegated Proof of Stake (DPOS) White Paper
Post by: bytemaster on May 22, 2014, 05:46:13 pm

The attack only works if you buy 51% of the delegates because regardless of how much computational power you have you can only produce one block per delegate per round (a round is where every delegate produces a block).   
No, I am saying you have a few delegates in a row, and attack within a single round.

Lastly, once you did reveal your secret chain (or if it were accidentally discovered) evidence that you signed two blocks with the same timestamp will get you fired from both chains.
I know.

Conclusion: this attack is just the 51% attack carried out with leverage.   However, it has one other problem.  The main chain ignores all forks older than a certain date provided you have the majority of delegates producing blocks on your fork.   The secret chain wouldn't be accepted even if it were 'longer'. 

The whitepaper says:
2.4 Resolving Chain Forks
Like proof of work and other proof of stake systems, the best block chain is the longest valid chain.

But, how does the the software know which chain is valid? If two blocks are signed, the delegate is fired, but which block succeeds? I assume the NEXT delegate (which I also control) will decide, that is how I double spend.

A round is all delegates producing one block (approximately).   A transaction isn't confirmed until 51% of the delegates have produced a block after it.

If you have N delegates in a row then you can produce N blocks (or not)... the delegate at N+1 (GOOD_GUY) will build off of the longest chain he has seen, which if you kept your attack chain secret would be a block HEAD-N.   If you made it public he would build off of your blocks.   

Now you release your secret chain and invalidate GOOD_GUYs block because the network would switch over to your chain. 

So to attack the network requires not broadcasting your secret chain and having a large number of sequential delegates in a row.   Fortunately, the potential for this attack to exist is calculate-able based upon the data received by each client.   If I have missed the last N blocks, then I must wait until I have received 2N valid blocks after the gap. 

At 99 delegates and 30 second block interval you will have complete confirmation in 25 minutes.  If no delegates have missed a block then it will be impossible for someone to produce a longer chain and you have complete confirmation in 30 seconds.




Title: Re: Delegated Proof of Stake (DPOS) White Paper
Post by: MolonLabe on May 22, 2014, 06:51:06 pm
Let me try again. Same basic idea.

1] You owned a large number of coins at some time in address A, and have 2 or 3 delegates in a row, but have since sold the coins.
2] You go back in time, and build a large fake chain which ONLY contains a new series of transactions, all of them from address A to other addresses for which you have the private key.
3] You use these transactions to elect an entirely new set of 100 delegates (as you control the only votes). This may not be possible quickly, but when you cant, you simply claim that the other delegates (who aren't here) failed to sign your block (and disqualified them). For a while, there might be only 3 delegates actually signing on this chain, but you quickly establish 100.
4] Reconstruct most of the rest of the transaction history, optionally including "sending the large number of coins from step 1 where they really went in real life". You control 100% of the delegates, and can see the real chain, so this is trivial. Rebuild reality up to the present day.
5] Repeat 2-4 1000 times with different delegate public keys, so all 1000 fake + 1 real chains look almost the same, but have different delegate groups.
6] Release the 1000 chains and wait for one of them to stick, using a Sybil attack (new nodes don't know which chain is real). You have now made yourself 100% of the delegates and can double spend as you wish.
Title: Re: Delegated Proof of Stake (DPOS) White Paper
Post by: bytemaster on May 22, 2014, 07:11:00 pm
Quote
2] You go back in time, and build a large fake chain which ONLY contains a new series of transactions, all of them from address A to other addresses for which you have the private key.
3] You use these transactions to elect an entirely new set of 100 delegates (as you control the only votes). This may not be possible quickly, but when you cant, you simply claim that the other delegates (who aren't here) failed to sign your block (and disqualified them). For a while, there might be only 3 delegates actually signing on this chain, but you quickly establish 100.

This is not possible, someone with a minority of shares cannot elect 100 delegates.  All shares are voting for someone at some time.  You can change your vote, but not create new votes.   End result is that if you control 10% of the shares, you can only effect 10% of the delegate selection and thus your secret chain would only ever be able to produce 1/10 of the blocks of the public chain.
Title: Re: Delegated Proof of Stake (DPOS) White Paper
Post by: MolonLabe on May 22, 2014, 07:54:41 pm
Quote
2] You go back in time, and build a large fake chain which ONLY contains a new series of transactions, all of them from address A to other addresses for which you have the private key.
3] You use these transactions to elect an entirely new set of 100 delegates (as you control the only votes). This may not be possible quickly, but when you cant, you simply claim that the other delegates (who aren't here) failed to sign your block (and disqualified them). For a while, there might be only 3 delegates actually signing on this chain, but you quickly establish 100.

This is not possible, someone with a minority of shares cannot elect 100 delegates.  All shares are voting for someone at some time.  You can change your vote, but not create new votes.   End result is that if you control 10% of the shares, you can only effect 10% of the delegate selection and thus your secret chain would only ever be able to produce 1/10 of the blocks of the public chain.

I don't have a minority, I have all the votes, don't I?
Title: Re: Delegated Proof of Stake (DPOS) White Paper
Post by: JoeyD on May 22, 2014, 08:00:59 pm
Quote
2] You go back in time, and build a large fake chain which ONLY contains a new series of transactions, all of them from address A to other addresses for which you have the private key.
3] You use these transactions to elect an entirely new set of 100 delegates (as you control the only votes). This may not be possible quickly, but when you cant, you simply claim that the other delegates (who aren't here) failed to sign your block (and disqualified them). For a while, there might be only 3 delegates actually signing on this chain, but you quickly establish 100.

This is not possible, someone with a minority of shares cannot elect 100 delegates.  All shares are voting for someone at some time.  You can change your vote, but not create new votes.   End result is that if you control 10% of the shares, you can only effect 10% of the delegate selection and thus your secret chain would only ever be able to produce 1/10 of the blocks of the public chain.

I don't have a minority, I have all the votes, don't I?
You only got the votes in your separate private chain though, the rest of the network probably would not accept you alternate reality, provided it doesn't go back all the way to the genesisblock.

Or are you talking about isolating unsupecting people in your alternate reality, that would require quite a bit of control over network connections as well, but would not affect the main network I suspect.
Title: Re: Delegated Proof of Stake (DPOS) White Paper
Post by: bytemaster on May 22, 2014, 09:42:33 pm
Quote
2] You go back in time, and build a large fake chain which ONLY contains a new series of transactions, all of them from address A to other addresses for which you have the private key.
3] You use these transactions to elect an entirely new set of 100 delegates (as you control the only votes). This may not be possible quickly, but when you cant, you simply claim that the other delegates (who aren't here) failed to sign your block (and disqualified them). For a while, there might be only 3 delegates actually signing on this chain, but you quickly establish 100.

This is not possible, someone with a minority of shares cannot elect 100 delegates.  All shares are voting for someone at some time.  You can change your vote, but not create new votes.   End result is that if you control 10% of the shares, you can only effect 10% of the delegate selection and thus your secret chain would only ever be able to produce 1/10 of the blocks of the public chain.

I don't have a minority, I have all the votes, don't I?
You only got the votes in your separate private chain though, the rest of the network probably would not accept you alternate reality, provided it doesn't go back all the way to the genesisblock.

Or are you talking about isolating unsupecting people in your alternate reality, that would require quite a bit of control over network connections as well, but would not affect the main network I suspect.

If you go all the way back to the genesis block and have 10% in the genesis block balance...  you will never be able to produce a chain more than 1/10 the length of the public chain.  It just is not possible. 

Remember: a block is not produced every 30 seconds unless all delegates are on line.  If a delegate is not on line to produce a block in that timeslot the time slot is skipped and that chain is forever one block shorter than it could have been. 

 

Title: Re: Delegated Proof of Stake (DPOS) White Paper
Post by: MolonLabe on May 23, 2014, 03:41:39 am
You only got the votes in your separate private chain though, the rest of the network probably would not accept you alternate reality, provided it doesn't go back all the way to the genesisblock.

Or are you talking about isolating unsupecting people in your alternate reality, that would require quite a bit of control over network connections as well, but would not affect the main network I suspect.
How does a node which just connected 10 minutes ago know which of the two realities is 'alternate'?

If you go all the way back to the genesis block and have 10% in the genesis block balance...  you will never be able to produce a chain more than 1/10 the length of the public chain.  It just is not possible. 

Remember: a block is not produced every 30 seconds unless all delegates are on line.  If a delegate is not on line to produce a block in that timeslot the time slot is skipped and that chain is forever one block shorter than it could have been. 
Only at first. Eventually I am producing a block every 30 seconds with all the delegates I control. In my alternate reality I am, temporarily, only broadcasting the transactions which allow my delegates to take over. Don't the transactions elect delegates? And everyone is fired after one round for failing to produce a block, anyway.

This would result in a permanently shorter blockchain, though, by (I assume 100 dels and I control 4) 96. However, could I not continue to build this chain, waiting for a cumulative total of 97 blocks to be missed (for one reason or another)? My chain could include the exact same transactions, such that when I substitute it for the existing chain people don't notice (except the delegates, who are are fired immediately). Even if this takes months, it would be worth doing. Eventually 97 blocks will be missed somewhere. Then I will have the longest chain?

Let me also ask this: What if I'm 8th and 9th in line, person 7 submits their block, but I lie and claim that person 7 didn't submit a block. I sign block 8 on top of block 6, then I sign block 9 on top of block 8. What does person 10 decide to do? My chain is now longer. Does person 10 fire person 7? For your sake I hope not, but I don't see how person 10 intends to proceed. What if I also control person 11 (but no others, only those 3)? The reverse of this attack is to selfish-mine two blocks in a row, or ddos a delegate to stop him from learning of a block in time. Surely one of these two attacks must hurt, if the other does not.
Title: Re: Delegated Proof of Stake (DPOS) White Paper
Post by: tonyk on May 23, 2014, 04:03:19 am
I do not think a delegate is fired for not submitting a block… other than that, interesting thoughts.
Title: Re: Delegated Proof of Stake (DPOS) White Paper
Post by: BitShares.com on May 23, 2014, 04:05:32 am
Just some ideas...

1. Have a parallel, secondary pool of unpaid 'dugout' delegates that create test blocks on a side-chain, so they can build reputation and build stats about latency, etc.. Clients are aware of this side-chain and change their votes according to these stats.

2. Have an unlimited number of delegates. Only the top 100 with the most votes get paid. Block creation alternates between the top 100 and the rest.

3. Some combination of the above two-- have 100 paid delegates, and 200 unpaid 'campaigning' delegates, from the top 300. Block creation alternates between the elected 100 and the campaigning 200. In order to become a campaigning delegate, you need to be a top contender from the dugout delegate side-chain, which holds an unlimited number of delegates.
Title: Re: Delegated Proof of Stake (DPOS) White Paper
Post by: HackFisher on May 23, 2014, 04:12:11 pm
Thinking about following case, two continuous delegate are happen to be the same, for example

Delegate Alice finds that she happen to be the delegates of two continuous block (she can check that while mining, 1% chance each block), x block, and x+1 block

So in the x block, Alice know that she will be the delegate of x+1 block (1% chance), and maybe she can selectively choose the secret_x for x + 1 to publish, to make the updated random seed[x+1] as she wish, making that she will be the delegate of x+2 block, and so on...

random seed updating might need to involve more secrets etc....
Title: Re: Delegated Proof of Stake (DPOS) White Paper
Post by: HackFisher on May 23, 2014, 04:27:57 pm

random seed updating might need to involve more secrets etc....

Or guarantee that per round, each delegate can only produce one block in this round, the randomness could reducing in this case.
Title: Re: Delegated Proof of Stake (DPOS) White Paper
Post by: bytemaster on May 23, 2014, 08:35:30 pm
Thinking about following case, two continuous delegate are happen to be the same, for example

Delegate Alice finds that she happen to be the delegates of two continuous block (she can check that while mining, 1% chance each block), x block, and x+1 block

So in the x block, Alice know that she will be the delegate of x+1 block (1% chance), and maybe she can selectively choose the secret_x for x + 1 to publish, to make the updated random seed[x+1] as she wish, making that she will be the delegate of x+2 block, and so on...

random seed updating might need to involve more secrets etc....

Random Seed Updating uses the following forumula:

R = HASH( R + revealed_secret ).

Alice will not know R until the future and thus in the present cannot choose secret for x+1. 

Title: Re: Delegated Proof of Stake (DPOS) White Paper
Post by: HackFisher on May 24, 2014, 12:29:15 am
Thinking about following case, two continuous delegate are happen to be the same, for example

Delegate Alice finds that she happen to be the delegates of two continuous block (she can check that while mining, 1% chance each block), x block, and x+1 block

So in the x block, Alice know that she will be the delegate of x+1 block (1% chance), and maybe she can selectively choose the secret_x for x + 1 to publish, to make the updated random seed[x+1] as she wish, making that she will be the delegate of x+2 block, and so on...

random seed updating might need to involve more secrets etc....

Random Seed Updating uses the following forumula:

R = HASH( R + revealed_secret ).

Alice will not know R until the future and thus in the present cannot choose secret for x+1.

In Alice's turn x, Alice will reveal the secret he created before, and current random seed R[ x ] is known of course, according to this he could calculate out next random seed R[x+1], to check whether x + 1 will or not be her turn.

If x and x + 1 are both Alice, and she knows that now in x, then she can selectively choose the secret which she will reveal in x+1, to make R[x+2] = HASH(R[x+1] + revealed_secret) and decide x+2 will be Alice's turn.

The condition is that Alice has to wait for two continuous turn x , x+1, which is not very difficult 1 - (99%)^x.

True that Alice could not determine who will be the next delegate, but with known that x, and x+1 are both her turn, she can choose to create attack and determine the delegate of x+2, in current seed update algorithm.
Title: Re: Delegated Proof of Stake (DPOS) White Paper
Post by: bytemaster on May 24, 2014, 01:36:00 am
Thinking about following case, two continuous delegate are happen to be the same, for example

Delegate Alice finds that she happen to be the delegates of two continuous block (she can check that while mining, 1% chance each block), x block, and x+1 block

So in the x block, Alice know that she will be the delegate of x+1 block (1% chance), and maybe she can selectively choose the secret_x for x + 1 to publish, to make the updated random seed[x+1] as she wish, making that she will be the delegate of x+2 block, and so on...

random seed updating might need to involve more secrets etc....

Random Seed Updating uses the following forumula:

R = HASH( R + revealed_secret ).

Alice will not know R until the future and thus in the present cannot choose secret for x+1.

In Alice's turn x, Alice will reveal the secret he created before, and current random seed R[ x ] is known of course, according to this he could calculate out next random seed R[x+1], to check whether x + 1 will or not be her turn.

If x and x + 1 are both Alice, and she knows that now in x, then she can selectively choose the secret which she will reveal in x+1, to make R[x+2] = HASH(R[x+1] + revealed_secret) and decide x+2 will be Alice's turn.

The condition is that Alice has to wait for two continuous turn x , x+1, which is not very difficult 1 - (99%)^x.

True that Alice could not determine who will be the next delegate, but with known that x, and x+1 are both her turn, she can choose to create attack and determine the delegate of x+2, in current seed update algorithm.

I see what you are saying... so you can essentially mine your way to controlling the network by selecting your secrets in such a way that you will always be selected.  It wouldn't even require very much mining.  And because one individual could control multiple delegates they could essentially hand control back and forth between delegates.   

To resolve this issue the 'random order' would have to be set at once and not change for a complete round.
Title: Re: Delegated Proof of Stake (DPOS) White Paper
Post by: bytemaster on May 24, 2014, 01:59:37 am
I have updated the delegate selection routine to work as follows:

Once every N blocks I take the top N delegates by vote and perform a random shuffle using the current random seed.

No delegate will be able to gain control over the rounds and every delegate will get an opportunity exactly once per round.

Title: Re: Delegated Proof of Stake (DPOS) White Paper
Post by: xeroc on May 24, 2014, 02:05:48 am
I am pretty impressed on how fast things move currently ... having a hard time following all updates!! .. and thats a good sign imho +5%
Title: Re: Delegated Proof of Stake (DPOS) White Paper
Post by: bytemaster on May 24, 2014, 02:38:02 am
I am pretty impressed on how fast things move currently ... having a hard time following all updates!! .. and thats a good sign imho +5%

The development team has really come together these past few weeks.  Things are happening faster, work is being divided more efficiently, communication is improving.   I can really feel the difference and the github commits will reveal it as well.
Title: Re: Delegated Proof of Stake (DPOS) White Paper
Post by: xeroc on May 24, 2014, 02:39:26 am
I am pretty impressed on how fast things move currently ... having a hard time following all updates!! .. and thats a good sign imho +5%

The development team has really come together these past few weeks.  Things are happening faster, work is being divided more efficiently, communication is improving.   I can really feel the difference and the github commits will reveal it as well.
they do ...

+5%

Thanx for all the hard work to all of you!!!!
Title: Re: Delegated Proof of Stake (DPOS) White Paper
Post by: Stan on May 24, 2014, 03:07:16 am
I am pretty impressed on how fast things move currently ... having a hard time following all updates!! .. and thats a good sign imho +5%

The development team has really come together these past few weeks.  Things are happening faster, work is being divided more efficiently, communication is improving.   I can really feel the difference and the github commits will reveal it as well.

they do ...

+5%

Thanx for all the hard work to all of you!!!!

Here's the plot of software updates per day as the toolkit has matured, the team has learned to use it, and they started working together in a pizza-and-red-bull-powered pressure cooker in an underground bunker somewhere deep in the bowels of Blacksburg, VA...

(https://static.squarespace.com/static/51fb043ee4b0608e46483caf/t/53800c59e4b0870ae9a428e6/1400900697721/?format=750w)

Feel free to browse all the statistics at GitHub and see for yourself.

Title: Re: Delegated Proof of Stake (DPOS) White Paper
Post by: jae208 on May 24, 2014, 03:56:26 am
Wow I must say that that is very impressive  8)

 +5% +5% +5% +5% +5% +5%
Title: Re: Delegated Proof of Stake (DPOS) White Paper
Post by: solaaire on May 24, 2014, 06:35:58 am
awesome work guys. this may seem like a strange request, but would any of you guys mind sharing some newer photos of the office, your workstations, or maybe a pic of the recently united crew? i know yall are busy and its an exciting time... but im excited too damnit! I wanna see some of the cool stuff thats happening over there, and i know im not the only one! Plus photos are very... tangible and can go a long way in helping people feel connected to a project or experience
Title: Re: Delegated Proof of Stake (DPOS) White Paper
Post by: xeroc on May 24, 2014, 07:47:22 am
And we nees some for a community newsletter
Title: Re: Delegated Proof of Stake (DPOS) White Paper
Post by: Agent86 on May 24, 2014, 10:23:59 pm
Quote
2] You go back in time, and build a large fake chain which ONLY contains a new series of transactions, all of them from address A to other addresses for which you have the private key.
3] You use these transactions to elect an entirely new set of 100 delegates (as you control the only votes). This may not be possible quickly, but when you cant, you simply claim that the other delegates (who aren't here) failed to sign your block (and disqualified them). For a while, there might be only 3 delegates actually signing on this chain, but you quickly establish 100.

This is not possible, someone with a minority of shares cannot elect 100 delegates.  All shares are voting for someone at some time.  You can change your vote, but not create new votes.   End result is that if you control 10% of the shares, you can only effect 10% of the delegate selection and thus your secret chain would only ever be able to produce 1/10 of the blocks of the public chain.

I don't have a minority, I have all the votes, don't I?
You only got the votes in your separate private chain though, the rest of the network probably would not accept you alternate reality, provided it doesn't go back all the way to the genesisblock.

Or are you talking about isolating unsupecting people in your alternate reality, that would require quite a bit of control over network connections as well, but would not affect the main network I suspect.

If you go all the way back to the genesis block and have 10% in the genesis block balance...  you will never be able to produce a chain more than 1/10 the length of the public chain.  It just is not possible. 

Remember: a block is not produced every 30 seconds unless all delegates are on line.  If a delegate is not on line to produce a block in that timeslot the time slot is skipped and that chain is forever one block shorter than it could have been.

So what if people are willing to sell their private keys to addresses, such as those in the genesis block, that are now empty.  People will be happy to sell this info because it doesn't cost them anything.  They might not even be invested in the chain anymore.  And you can use these old keys to build your alternate reality where you control a bigger stake.
Title: Re: Delegated Proof of Stake (DPOS) White Paper
Post by: bytemaster on May 24, 2014, 10:55:09 pm
Quote
2] You go back in time, and build a large fake chain which ONLY contains a new series of transactions, all of them from address A to other addresses for which you have the private key.
3] You use these transactions to elect an entirely new set of 100 delegates (as you control the only votes). This may not be possible quickly, but when you cant, you simply claim that the other delegates (who aren't here) failed to sign your block (and disqualified them). For a while, there might be only 3 delegates actually signing on this chain, but you quickly establish 100.

This is not possible, someone with a minority of shares cannot elect 100 delegates.  All shares are voting for someone at some time.  You can change your vote, but not create new votes.   End result is that if you control 10% of the shares, you can only effect 10% of the delegate selection and thus your secret chain would only ever be able to produce 1/10 of the blocks of the public chain.

I don't have a minority, I have all the votes, don't I?
You only got the votes in your separate private chain though, the rest of the network probably would not accept you alternate reality, provided it doesn't go back all the way to the genesisblock.

Or are you talking about isolating unsupecting people in your alternate reality, that would require quite a bit of control over network connections as well, but would not affect the main network I suspect.

If you go all the way back to the genesis block and have 10% in the genesis block balance...  you will never be able to produce a chain more than 1/10 the length of the public chain.  It just is not possible. 

Remember: a block is not produced every 30 seconds unless all delegates are on line.  If a delegate is not on line to produce a block in that timeslot the time slot is skipped and that chain is forever one block shorter than it could have been.

So what if people are willing to sell their private keys to addresses, such as those in the genesis block, that are now empty.  People will be happy to sell this info because it doesn't cost them anything.  They might not even be invested in the chain anymore.  And you can use these old keys to build your alternate reality where you control a bigger stake.

It doesn't matter, after a few rounds of 99% delegate participation the chain declares an automatic snapshot.  So the longest chain is only a short-term metric. 
Title: Re: Delegated Proof of Stake (DPOS) White Paper
Post by: xeroc on May 27, 2014, 09:16:02 am
I am trying to compile a list of 'features' and quotes for DPOS
http://pad.bitshares.org/p/Upcoming_Newsletter_articles

http://pad.bitshares.org/p/DPOS_FeatureList

Goals is to be able to teach others what exactly DPOS is and how it compares to NXT, Ripple, satoshi-blockchain.

I'd probably need some help as I might haved mixed things up :-(
Title: Re: Delegated Proof of Stake (DPOS) White Paper
Post by: xeroc on May 27, 2014, 12:22:20 pm
As the collection of quotes and descriptions rapidly growed I dedicated a own pad to the DPOS features

http://pad.bitshares.org/p/DPOS_FeatureList
Title: Re: Delegated Proof of Stake (DPOS) White Paper
Post by: Agent86 on May 27, 2014, 09:58:27 pm
Suggestion:

Try to make voting "anonymous".  I think it is not desirable if a delegate can buy votes (selectively give back transaction fees to those that vote for the delegate).

An attacking entity can operate at a loss and pay people to vote for their delegates.
Title: Re: Delegated Proof of Stake (DPOS) White Paper
Post by: bytemaster on May 27, 2014, 10:36:20 pm
Suggestion:

Try to make voting "anonymous".  I think it is not desirable if a delegate can buy votes (selectively give back transaction fees to those that vote for the delegate).

An attacking entity can operate at a loss and pay people to vote for their delegates.

And everyone that knows the attacking entity is doing this will vote AGAINST them and thus nullify any benefit that group was attempting to gain.
Title: Re: Delegated Proof of Stake (DPOS) White Paper
Post by: Stan on May 30, 2014, 07:41:32 pm
awesome work guys. this may seem like a strange request, but would any of you guys mind sharing some newer photos of the office, your workstations, or maybe a pic of the recently united crew? i know yall are busy and its an exciting time... but im excited too damnit! I wanna see some of the cool stuff thats happening over there, and i know im not the only one! Plus photos are very... tangible and can go a long way in helping people feel connected to a project or experience

Actually, Brian plans to make a video of life on the BitShares Bridge and take you deep inside the BitShares Bunker.  He will be filming it on Monday.
Title: Re: Delegated Proof of Stake (DPOS) White Paper
Post by: solaaire on May 30, 2014, 08:19:44 pm
awesome work guys. this may seem like a strange request, but would any of you guys mind sharing some newer photos of the office, your workstations, or maybe a pic of the recently united crew? i know yall are busy and its an exciting time... but im excited too damnit! I wanna see some of the cool stuff thats happening over there, and i know im not the only one! Plus photos are very... tangible and can go a long way in helping people feel connected to a project or experience

Actually, Brian plans to make a video of life on the BitShares Bridge and take you deep inside the BitShares Bunker.  He will be filming it on Monday.

even better, looking forward to it  :)
Title: Re: Delegated Proof of Stake (DPOS) White Paper
Post by: santaclause102 on June 01, 2014, 11:57:19 pm
Can it be detected is a delegate hosts his server with amazon or another cloud service. If that is the prefered method and it is not detectable but Amauon knows what they are hosting this could be a point of control by central entities?
See https://bitsharestalk.org/index.php?topic=4813.15
Title: Re: Delegated Proof of Stake (DPOS) White Paper
Post by: toast on June 02, 2014, 01:31:29 am
Can it be detected is a delegate hosts his server with amazon or another cloud service. If that is the prefered method and it is not detectable but Amauon knows what they are hosting this could be a point of control by central entities?
See https://bitsharestalk.org/index.php?topic=4813.15

It can't be detected, and the most Amazon/DO/etc would be able to do is shut down the delegate.
Title: Re: Delegated Proof of Stake (DPOS) White Paper
Post by: xeroc on June 02, 2014, 06:34:22 am
It can't be detected, and the most Amazon/DO/etc would be able to do is shut down the delegate.
.. or steal the privkey ?!
Title: Re: Delegated Proof of Stake (DPOS) White Paper
Post by: JoeyD on June 02, 2014, 08:52:09 am
It can't be detected, and the most Amazon/DO/etc would be able to do is shut down the delegate.
.. or steal the privkey ?!

Do you have to use your priv-key on the server itself? Is it not possible to transfer an encrypted wallet via ssh and not enter priv-keys on the hosted server?

Oh hang on, amazon can read the memory as well, so you might need a complex encryption setup that also encrypts data in memory. Haven't looked at ram-encryption so I'm unfamiliar with the possibilities there.
Title: Re: Delegated Proof of Stake (DPOS) White Paper
Post by: BTSdac on June 06, 2014, 11:33:09 am

1.DPOS system have 100 delegates ,and how many backup delegates DPOS system have , you konw enough backup delegates is necessary in case DDOS attack to formal delegates 
2.if there is no outside attack, DPOS have  100 delegates ,  how many delegates must online at least to keep the system runing well,  how many delegates can been replace in one round?
3.Is there a award to backup delegates for keeping online?
Title: Re: Delegated Proof of Stake (DPOS) White Paper
Post by: MolonLabe on June 06, 2014, 01:01:30 pm
Quote
2] You go back in time, and build a large fake chain which ONLY contains a new series of transactions, all of them from address A to other addresses for which you have the private key.
3] You use these transactions to elect an entirely new set of 100 delegates (as you control the only votes). This may not be possible quickly, but when you cant, you simply claim that the other delegates (who aren't here) failed to sign your block (and disqualified them). For a while, there might be only 3 delegates actually signing on this chain, but you quickly establish 100.
...
...
You only got the votes in your separate private chain though, the rest of the network probably would not accept you alternate reality, provided it doesn't go back all the way to the genesisblock.

Or are you talking about isolating unsupecting people in your alternate reality, that would require quite a bit of control over network connections as well, but would not affect the main network I suspect.
...

So what if people are willing to sell their private keys to addresses, such as those in the genesis block, that are now empty.  People will be happy to sell this info because it doesn't cost them anything.  They might not even be invested in the chain anymore.  And you can use these old keys to build your alternate reality where you control a bigger stake.

It doesn't matter, after a few rounds of 99% delegate participation the chain declares an automatic snapshot.  So the longest chain is only a short-term metric. 

Now I get the feeling that you aren't even trying...
What difference do snapshots make? My alternate reality can also contain snapshots after a few rounds of 99% participation. It can have exactly the same tx, but with different delegates.

When new nodes connect, how will they know what to do? I can make dozens of chains that all have networks which look exactly like the original network, or different in any way I choose.

You can guarantee that new nodes will only connect to honest peers? How exactly do you do that?
Title: Re: Delegated Proof of Stake (DPOS) White Paper
Post by: toast on June 06, 2014, 02:31:44 pm
If you have less than 50% of the stake from any point in time, how do you make a chain longer than 49 delegates?
The order is picked once per round, no matter how you shuffle it you can't get enough in a row because you can't vote in enough fake delegates. This is a major advantage over nxt TF and I think it actually addresses nothing-at-stake. Everyone knows the original stake distribution and delegate list.

Sent from my SCH-I535 using Tapatalk

Title: Re: Delegated Proof of Stake (DPOS) White Paper
Post by: MolonLabe on June 08, 2014, 10:17:09 pm
To try again...

A new node connects and sees two chains:

Chain 1 : 100 + 99 + 98 + 100 + 100 + 97 + ... + 100 + 99 = 4589 blocks of a possible 5000
Chain 2 : 100 + 99 + 49 + 49 + 49 + 52 + 59 + 60 + 100 + 100 + 100 + ... + 100 = 4590 blocks of a possible 5000

Both follow all the rules, have snapshots, etc. Which chain does this node select as reality?

I assumed that the network still operates if 51% of the delegates are tracked down and murdered, and their computers destroyed. Perhaps that assumption was false?
Title: Re: Delegated Proof of Stake (DPOS) White Paper
Post by: bytemaster on June 08, 2014, 10:30:26 pm
To try again...

A new node connects and sees two chains:

Chain 1 : 100 + 99 + 98 + 100 + 100 + 97 + ... + 100 + 99 = 4589 blocks of a possible 5000
Chain 2 : 100 + 99 + 49 + 49 + 49 + 52 + 59 + 60 + 100 + 100 + 100 + ... + 100 = 4590 blocks of a possible 5000

Both follow all the rules, have snapshots, etc. Which chain does this node select as reality?

I assumed that the network still operates if 51% of the delegates are tracked down and murdered, and their computers destroyed. Perhaps that assumption was false?

The network still operates but requires input from the shareholders to elect new delegates.   So the scenario you laid out is not possible because the 'secret' chain would never have input from the shareholders necessary to change votes away from the non-participating delegates.
Title: Re: Delegated Proof of Stake (DPOS) White Paper
Post by: MolonLabe on June 08, 2014, 10:59:01 pm
I control the secret chain, and the transactions in it.

Therefore, I control "input from the shareholders necessary to change votes away from the non-participating delegates"?

If not, how does that input come about?

After the secret chain is built, I can add in transactions from the original chain, just a little later.
Title: Re: Delegated Proof of Stake (DPOS) White Paper
Post by: toast on June 08, 2014, 11:07:43 pm
I control the secret chain, and the transactions in it.

Therefore, I control "input from the shareholders necessary to change votes away from the non-participating delegates"?

If not, how does that input come about?

After the secret chain is built, I can add in transactions from the original chain, just a little later.

So best case you migrate the transactions that vote in the delegates in the non-secret chain and then what? You can't make that chain longer without their signature, and you can't forge stake-vote.

You can make a secret chain only if you control 51% stake at any *single* point in time (within 100 block window), including sometime in the past (you could find old keys). So wide initial distribution matters
Title: Re: Delegated Proof of Stake (DPOS) White Paper
Post by: bytemaster on June 08, 2014, 11:23:53 pm
I control the secret chain, and the transactions in it.

Therefore, I control "input from the shareholders necessary to change votes away from the non-participating delegates"?

If not, how does that input come about?

After the secret chain is built, I can add in transactions from the original chain, just a little later.

You do not control the private keys of the shareholders so you cannot update their balances and thus change their votes.

Every time a user makes a transfer from User A to User B they also update what votes the shares used in the transfer are voting for.  Thus unless you can change every balance you cannot change votes.  Therefore votes for delegates are 'stuck' until a shareholder acts.
Title: Re: Delegated Proof of Stake (DPOS) White Paper
Post by: MolonLabe on June 08, 2014, 11:29:20 pm
In addition to owning a few accounts which were once delegates, I own an account which once held 10% of the total BTS. I can send these amounts to myself, while excluding all other transactions.

For a time, I control 100% of the votes seen by the attack-chain.
Title: Re: Delegated Proof of Stake (DPOS) White Paper
Post by: toast on June 08, 2014, 11:30:59 pm
In addition to owning a few accounts which were once delegates, I own an account which once held 10% of the total BTS. I can send these amounts to myself, while excluding all other transactions.

For a time, I control 100% of the votes seen by the attack-chain.

You would only adjust 10% of the vote, not 100%. The votes you don't control stay on delegates they voted for.
Title: Re: Delegated Proof of Stake (DPOS) White Paper
Post by: MolonLabe on June 08, 2014, 11:35:25 pm
Assume there are 1234 votes.

I control 10%, or 123 of them.

However, I also control the delegate, who can exclude transfers. So I exclude all the votes that aren't mine.

Votes cast: 123, Votes controlled by me: 123

I control 123/123 = 100% of the votes.
Title: Re: Delegated Proof of Stake (DPOS) White Paper
Post by: toast on June 08, 2014, 11:44:12 pm
Assume there are 1234 votes.

I control 10%, or 123 of them.

However, I also control the delegate, who can exclude transfers. So I exclude all the votes that aren't mine.

Votes cast: 123, Votes controlled by me: 123

I control 123/123 = 100% of the votes.

The remaining 1234 - 123 remain on their original vote. They don't have to make a transaction every block to keep their votes, they have to make a transaction to *move* their votes.

So you moved 123 / 1234 = 10% of the votes.
Title: Re: Delegated Proof of Stake (DPOS) White Paper
Post by: toast on June 08, 2014, 11:46:07 pm
Each deposit ("unspent transaction output") counts for the votes.
In every block, 100% of the stake is casting their vote, whether there is a transaction that moved it or not.
Title: Re: Delegated Proof of Stake (DPOS) White Paper
Post by: MolonLabe on June 09, 2014, 12:05:50 am
In that case, how does this solve the nothing-at-stake problem?

I collect old accounts totaling >50%, and build a new chain with a different vote/delegate history. I control >50% of the coins/votes at all times, and can build a chain which, at the very end, looks almost exactly like the real chain.
Title: Re: Delegated Proof of Stake (DPOS) White Paper
Post by: toast on June 09, 2014, 12:23:44 am
I collect old accounts totaling >50%

You are right, I assumed this wasn't possible.

Two points:
* Remember it has to be >50% stake within a particular 1 hour window. I think it'd be *more* difficult to do this than getting 50% of the current stake. "Buying all old keys with nonzero balance between 12 and 1am on DD-MM-YYYY. Don't tell any delegates or else they'll add a checkpoint!"

* Even so, this would only affect nodes that have never been online and are trying to sync for the first time, since we do not look back farther than a few rounds of full participation when considering forks.

Title: Re: Delegated Proof of Stake (DPOS) White Paper
Post by: Agent86 on June 09, 2014, 12:53:05 am
Would it make things more robust if there was a delay between the time that a delegate got the number of votes needed and the time they actually became an active delegate?  The reason I ask is we have the ability to vote against a delegate, but if whenever we try to vote against a delegate, the voters for that delegate just quickly all switch to another delegate (controlled by the same person) the people trying to vote against them might have to give up because they can't keep track of trying to switch their votes fast enough to keep that person from being a delegate?  I was also thinking if you register a delegate but fall below some minimum threshold of support for that delegate for a certain number of blocks, the delegate becomes inactive and is subject to the waiting period before it can become an active delegate after getting votes.  This way people will have a much shorter list of active delegates and delegates with at least minimum support to consider when deciding to vote for or against them and they can't be surprised by a delegate coming out of left field.

I doubt early on we'll have much need to vote against delegates anyway, but this is just something that occurred to me.

Also for down the road, I agree with others that "100 delegates" strikes people as a magic/arbitrary number and maybe we can explore what are the pros and cons of more or less delegates, What would be involved with changing it later... hard fork?  Could it be dynamic? or have shareholders also vote for the total number of delegates?
Title: Re: Delegated Proof of Stake (DPOS) White Paper
Post by: toast on June 09, 2014, 01:08:33 am
Would it make things more robust if there was a delay between the time that a delegate got the number of votes needed and the time they actually became an active delegate?  The reason I ask is we have the ability to vote against a delegate, but if whenever we try to vote against a delegate, the voters for that delegate just quickly all switch to another delegate (controlled by the same person) the people trying to vote against them might have to give up because they can't keep track of trying to switch their votes fast enough to keep that person from being a delegate?  I was also thinking if you register a delegate but fall below some minimum threshold of support for that delegate for a certain number of blocks, the delegate becomes inactive and is subject to the waiting period before it can become an active delegate after getting votes.  This way people will have a much shorter list of active delegates and delegates with at least minimum support to consider when deciding to vote for or against them and they can't be surprised by a delegate coming out of left field.

Our protection against this is that the registration fee is equal to about two weeks' worth of block production, so this attack will drain their stake. Each delegate's stats are visible in the client and eventually you will have the option to let your client auto-downvote misbehaving delegates. While they attack, all they can do is exclude transactions and increase average confirmation time.

Quote
Also for down the road, I agree with others that "100 delegates" strikes people as a magic/arbitrary number and maybe we can explore what are the pros and cons of more or less delegates, What would be involved with changing it later... hard fork?  Could it be dynamic? or have shareholders also vote for the total number of delegates?

Hard fork is always possible, as is dynamic adjustment. The dynamic option is worth discussing in depth as its own topic.
Side note, our actual magic number is 97 because it is prime.
Title: Re: Delegated Proof of Stake (DPOS) White Paper
Post by: bytemaster on June 09, 2014, 01:14:52 am
Quote
Would it make things more robust if there was a delay between the time that a delegate got the number of votes needed and the time they actually became an active delegate?  The reason I ask is we have the ability to vote against a delegate, but if whenever we try to vote against a delegate, the voters for that delegate just quickly all switch to another delegate (controlled by the same person) the people trying to vote against them might have to give up because they can't keep track of trying to switch their votes fast enough to keep that person from being a delegate?  I was also thinking if you register a delegate but fall below some minimum threshold of support for that delegate for a certain number of blocks, the delegate becomes inactive and is subject to the waiting period before it can become an active delegate after getting votes.  This way people will have a much shorter list of active delegates and delegates with at least minimum support to consider when deciding to vote for or against them and they can't be surprised by a delegate coming out of left field.

This particular attack would only matter if the attacker had 51% of the delegates.   They get in power and the only thing they can do is 'not produce a block' or 'not include a transaction' and thus I do not see what they could gain.
Title: Re: Delegated Proof of Stake (DPOS) White Paper
Post by: Agent86 on June 09, 2014, 01:25:33 am
Our protection against this is that the registration fee is equal to about two weeks' worth of block production, so this attack will drain their stake. Each delegate's stats are visible in the client and eventually you will have the option to let your client auto-downvote misbehaving delegates.

Ok, maybe this is enough but it seems that people could still cycle through their old delegates that got voted down without paying new registration fees right?  People can't waste their down votes on old stale delegates that got voted out a long time ago.

This particular attack would only matter if the attacker had 51% of the delegates.   They get in power and the only thing they can do is 'not produce a block' or 'not include a transaction' and thus I do not see what they could gain.

I guess I'm thinking of it as much in political terms as in compromising the network.  There are other reasons to want to be a delegate other than to attack the network (profit) and other reasons to down-vote delegates (such as delegates that are returning fees only to people voting for them).
Title: Re: Delegated Proof of Stake (DPOS) White Paper
Post by: toast on June 09, 2014, 01:42:42 am
Another thing to consider is that if an attacker acquires a big stake and starts repeatedly voting in bad delegates, you can hard-fork and exclude their stake from the new network. Unlike other POS systems it is very easy to identify which stake belongs to the bad actor.
Title: Re: Delegated Proof of Stake (DPOS) White Paper
Post by: liondani on June 09, 2014, 02:52:50 pm
Could it be dynamic? or have shareholders also vote for the total number of delegates?

+5% for dynamic number of delegates

Sent from my ALCATEL ONE TOUCH 997D using Tapatalk

Title: Re: Delegated Proof of Stake (DPOS) White Paper
Post by: bytemaster on June 09, 2014, 02:54:25 pm
Could it be dynamic? or have shareholders also vote for the total number of delegates?

+5% for dynamic number of delegates

Sent from my ALCATEL ONE TOUCH 997D using Tapatalk

I think we can make it dynamic with a 'minimum number of delegates'...

Title: Re: Delegated Proof of Stake (DPOS) White Paper
Post by: MolonLabe on June 09, 2014, 03:13:52 pm
I collect old accounts totaling >50%

You are right, I assumed this wasn't possible.

Two points:
* Remember it has to be >50% stake within a particular 1 hour window. I think it'd be *more* difficult to do this than getting 50% of the current stake. "Buying all old keys with nonzero balance between 12 and 1am on DD-MM-YYYY. Don't tell any delegates or else they'll add a checkpoint!"

* Even so, this would only affect nodes that have never been online and are trying to sync for the first time, since we do not look back farther than a few rounds of full participation when considering forks.

How does a checkpointing change anything?

In this scheme, "a checkpoint" seems to be exactly the same as "a new block was discovered/signed", which would make it irrelevant...the attack nodes can have their own 'checkpoints'.
Title: Re: Delegated Proof of Stake (DPOS) White Paper
Post by: toast on June 09, 2014, 03:16:52 pm
I collect old accounts totaling >50%

You are right, I assumed this wasn't possible.

Two points:
* Remember it has to be >50% stake within a particular 1 hour window. I think it'd be *more* difficult to do this than getting 50% of the current stake. "Buying all old keys with nonzero balance between 12 and 1am on DD-MM-YYYY. Don't tell any delegates or else they'll add a checkpoint!"

* Even so, this would only affect nodes that have never been online and are trying to sync for the first time, since we do not look back farther than a few rounds of full participation when considering forks.

How does a checkpointing change anything?

In this scheme, "a checkpoint" seems to be exactly the same as "a new block was discovered/signed", which would make it irrelevant...the attack nodes can have their own 'checkpoints'.

Checkpoint built into the client, like BTC or PPC. Delegates issue an alert to update to preempt any serious attack.
Don't want to go down that path too far because it's essentially the same as "what happens if BTC gets 51% attacked", it's not part of the security model which I think is sound on its own.
Title: Re: Delegated Proof of Stake (DPOS) White Paper
Post by: bytemaster on June 09, 2014, 03:37:58 pm
Your attack requires cooperation of shareholders to give up their original keys....  it is not worth considering if there is a large number of initial shareholders.
Title: Re: Delegated Proof of Stake (DPOS) White Paper
Post by: BTSdac on June 11, 2014, 11:52:26 am
Your attack requires cooperation of shareholders to give up their original keys....  it is not worth considering if there is a large number of initial shareholders.
HI BM
I saw many discuss about the 51% attack, these attacks are done by stakeshould,  what if  many delegates are attacked by DDOS?
BR
Title: Re: Delegated Proof of Stake (DPOS) White Paper
Post by: xeroc on June 11, 2014, 11:57:29 am
Your attack requires cooperation of shareholders to give up their original keys....  it is not worth considering if there is a large number of initial shareholders.
HI BM
I saw many discuss about the 51% attack, these attacks are done by stakeshould,  what if  many delegates are attacked by DDOS?
BR
Delegates just sign blocks .. they do not need to reveal their IP address ..
Also one can set up backup-delegate machines to take over. I dont see any problems here.

BTW. you can even run a delegate through the onion network tor
Title: Re: Delegated Proof of Stake (DPOS) White Paper
Post by: BTSdac on June 11, 2014, 12:18:27 pm
Your attack requires cooperation of shareholders to give up their original keys....  it is not worth considering if there is a large number of initial shareholders.
HI BM
I saw many discuss about the 51% attack, these attacks are done by stakeshould,  what if  many delegates are attacked by DDOS?
BR
Delegates just sign blocks .. they do not need to reveal their IP address ..
Also one can set up backup-delegate machines to take over. I dont see any problems here.

BTW. you can even run a delegate through the onion network tor
there are many methods  and not diffclut to find the IP of delegate
yes, there are backup-delegates , and how many delegates can been replaced one round?
Title: Re: Delegated Proof of Stake (DPOS) White Paper
Post by: xeroc on June 11, 2014, 01:58:45 pm
Your attack requires cooperation of shareholders to give up their original keys....  it is not worth considering if there is a large number of initial shareholders.
HI BM
I saw many discuss about the 51% attack, these attacks are done by stakeshould,  what if  many delegates are attacked by DDOS?
BR
Delegates just sign blocks .. they do not need to reveal their IP address ..
Also one can set up backup-delegate machines to take over. I dont see any problems here.

BTW. you can even run a delegate through the onion network tor
there are many methods  and not diffclut to find the IP of delegate
yes, there are backup-delegates , and how many delegates can been replaced one round?
No need for replacing .. just unlocking the wallet and let the other machine start signing the blocks .. easy handover

finding an IP address is quit difficult if you are in a P2P address and not directly connected to the delegate. The delegate might be hidden behind a usual (relay-)node which can be DDOS, but not the delegate then.
Title: Re: Delegated Proof of Stake (DPOS) White Paper
Post by: bytemaster on June 11, 2014, 02:21:25 pm
Also all nodes and all traffic is encrypted so you would have to be directly connected to a node to find out if they are the one to produce the block and they might not even be the one that produced it they could just be the first one to have received it.


Sent from my iPhone using Tapatalk (http://tapatalk.com/m?id=1)
Title: Re: Delegated Proof of Stake (DPOS) White Paper
Post by: BTSdac on June 11, 2014, 11:28:35 pm
Also all nodes and all traffic is encrypted so you would have to be directly connected to a node to find out if they are the one to produce the block and they might not even be the one that produced it they could just be the first one to have received it.


Sent from my iPhone using Tapatalk (http://tapatalk.com/m?id=1)
Hi BM
thank your reply , you konw i am a newbi
i just want konw if 51 delegates is out of network ,can chain runing well?
BR
Title: Re: Delegated Proof of Stake (DPOS) White Paper
Post by: alt on June 11, 2014, 11:55:23 pm
let's assume, when bitshares release, Chinese network cut off from American,
2 seperate bts chain is running well in each network.
one day, the network is connect again.
which chain will win?

For btc, it's simple, the longer chian win.
From test these days, many chains run seperate without merge.
Title: Re: Delegated Proof of Stake (DPOS) White Paper
Post by: bytemaster on June 12, 2014, 01:45:06 am
let's assume, when bitshares release, Chinese network cut off from American,
2 seperate bts chain is running well in each network.
one day, the network is connect again.
which chain will win?

For btc, it's simple, the longer chian win.
From test these days, many chains run seperate without merge.

The same rule applies here as well (longest chain wins).  The trouble we have with many forks running in parallel is at the network layer.  We have code that hasn't been merged in that should keep them all in sync.   I was hoping that network forks would be rare and that the test would be functional without any forks. 

Title: Re: Delegated Proof of Stake (DPOS) White Paper
Post by: BTSdac on June 12, 2014, 02:14:11 am
I am a little investor of AGS and PTS, I have an idea about how to reduce volume of block chain using snapshot,  English is not my native language , I hope I can been understood.
1.   The purpose of snapshot in my express is different from normal , this snapshot is to replace blocks before them to reduce this size of block chain.
2.   Perform a snapshot per N block; and the next block is a special block , its header include the hash both previous block and this snapshot.  We also can set the confirm time of this block is longer than others, maybe need  all delegates honored.
3.   Each block after this snapshot include the status if honor this snapshot.
4.   Each translation include the status if honor this snapshot
5.   if the snapshot was honored by N block, and was honored by translation witch hold 90% stockholder , this snapshot is a formal snapshot.  The blocks before this snapshot can been ignore . ignore the blocks before this snapshot have risk ,so there have N block time to check if there is no attack/ scam in the snapshot ,  if  select N equal 100,000, it mean , every delegate check this snapshot 1000 times if there are 100 delegates, and every client also check this snapshot when a translation is done, and the meantime ,any node can select to keep all block for checking.
6.    If all process was finished smoothly, block chain only include a snapshot +N blocks no matter how many years this chain have been running , the volume of a snapshot maybe is constant,   if N equal  100,000, consider 30 sec per block , it is about 34 days , so all the size of block chain is equal a constant volume  +  volume of 34 days translation. It doesn’t increase as time passing  .
Title: Re: Delegated Proof of Stake (DPOS) White Paper
Post by: bytemaster on June 12, 2014, 02:18:44 am
I am a little investor of AGS and PTS, I have an idea about how to reduce volume of block chain using snapshot,  English is not my native language , I hope I can been understood.
1.   The purpose of snapshot in my express is different from normal , this snapshot is to replace blocks before them to reduce this size of block chain.
2.   Perform a snapshot per N block; and the next block is a special block , its header include the hash both previous block and this snapshot.  We also can set the confirm time of this block is longer than others, maybe need  all delegates honored.
3.   Each block after this snapshot include the status if honor this snapshot.
4.   Each translation include the status if honor this snapshot
5.   if the snapshot was honored by N block, and was honored by translation witch hold 90% stockholder , this snapshot is a formal snapshot.  The blocks before this snapshot can been ignore . ignore the blocks before this snapshot have risk ,so there have N block time to check if there is no attack/ scam in the snapshot ,  if  select N equal 100,000, it mean , every delegate check this snapshot 1000 times if there are 100 delegates, and every client also check this snapshot when a translation is done, and the meantime ,any node can select to keep all block for checking.
6.    If all process was finished smoothly, block chain only include a snapshot +N blocks no matter how many years this chain have been running , the volume of a snapshot maybe is constant,   if N equal  100,000, consider 30 sec per block , it is about 34 days , so all the size of block chain is equal a constant volume  +  volume of 34 days translation. It doesn’t increase as time passing  .

Solid idea.  The challenge is in defining what to include in the state and how to download it.   With DPOS we have some options not available to other systems, but it is still challenging.
Title: Re: Delegated Proof of Stake (DPOS) White Paper
Post by: liondani on June 12, 2014, 05:18:50 am


6.    If all process was finished smoothly, block chain only include a snapshot +N blocks no matter how many years this chain have been running , the volume of a snapshot maybe is constant,   if N equal  100,000, consider 30 sec per block , it is about 34 days , so all the size of block chain is equal a constant volume  +  volume of 34 days translation. It doesn’t increase as time passing  .

 +5%
Title: Re: Delegated Proof of Stake (DPOS) White Paper
Post by: BTSdac on June 12, 2014, 01:34:49 pm
I am a little investor of AGS and PTS, I have an idea about how to reduce volume of block chain using snapshot,  English is not my native language , I hope I can been understood.
1.   The purpose of snapshot in my express is different from normal , this snapshot is to replace blocks before them to reduce this size of block chain.
2.   Perform a snapshot per N block; and the next block is a special block , its header include the hash both previous block and this snapshot.  We also can set the confirm time of this block is longer than others, maybe need  all delegates honored.
3.   Each block after this snapshot include the status if honor this snapshot.
4.   Each translation include the status if honor this snapshot
5.   if the snapshot was honored by N block, and was honored by translation witch hold 90% stockholder , this snapshot is a formal snapshot.  The blocks before this snapshot can been ignore . ignore the blocks before this snapshot have risk ,so there have N block time to check if there is no attack/ scam in the snapshot ,  if  select N equal 100,000, it mean , every delegate check this snapshot 1000 times if there are 100 delegates, and every client also check this snapshot when a translation is done, and the meantime ,any node can select to keep all block for checking.
6.    If all process was finished smoothly, block chain only include a snapshot +N blocks no matter how many years this chain have been running , the volume of a snapshot maybe is constant,   if N equal  100,000, consider 30 sec per block , it is about 34 days , so all the size of block chain is equal a constant volume  +  volume of 34 days translation. It doesn’t increase as time passing  .

Solid idea.  The challenge is in defining what to include in the state and how to download it.   With DPOS we have some options not available to other systems, but it is still challenging.
to download the chain , for a new node ,first get the current block No. Nc,  ,  then download the block from Nc-(Nc Mod N) , and check the comfirm status of this snapshot that every was included in blocks  , if this snapshot is comfirmed by N blocks , the client don`t need to download the blocks before this snapshot ,otherwise, downland the prevoius N blocks .
Title: Re: Delegated Proof of Stake (DPOS) White Paper
Post by: HackFisher on June 12, 2014, 01:41:19 pm
I am a little investor of AGS and PTS, I have an idea about how to reduce volume of block chain using snapshot,  English is not my native language , I hope I can been understood.
1.   The purpose of snapshot in my express is different from normal , this snapshot is to replace blocks before them to reduce this size of block chain.
2.   Perform a snapshot per N block; and the next block is a special block , its header include the hash both previous block and this snapshot.  We also can set the confirm time of this block is longer than others, maybe need  all delegates honored.
3.   Each block after this snapshot include the status if honor this snapshot.
4.   Each translation include the status if honor this snapshot
5.   if the snapshot was honored by N block, and was honored by translation witch hold 90% stockholder , this snapshot is a formal snapshot.  The blocks before this snapshot can been ignore . ignore the blocks before this snapshot have risk ,so there have N block time to check if there is no attack/ scam in the snapshot ,  if  select N equal 100,000, it mean , every delegate check this snapshot 1000 times if there are 100 delegates, and every client also check this snapshot when a translation is done, and the meantime ,any node can select to keep all block for checking.
6.    If all process was finished smoothly, block chain only include a snapshot +N blocks no matter how many years this chain have been running , the volume of a snapshot maybe is constant,   if N equal  100,000, consider 30 sec per block , it is about 34 days , so all the size of block chain is equal a constant volume  +  volume of 34 days translation. It doesn’t increase as time passing  .

Solid idea.  The challenge is in defining what to include in the state and how to download it.   With DPOS we have some options not available to other systems, but it is still challenging.
to download the chain , for a new node ,first get the current block No. Nc,  ,  then download the block from Nc-(Nc Mod N) , and check the comfirm status of this snapshot that every was included in blocks  , if this snapshot is comfirmed by N blocks , the client don`t need to download the blocks before this snapshot ,otherwise, downland the prevoius N blocks .

I'm thinking that is quite similar to checkpoint, only the difference is that this checkpoint is checked by delegates (Aka, representing the shareholders)?
Title: Re: Delegated Proof of Stake (DPOS) White Paper
Post by: Agent86 on June 15, 2014, 04:02:16 am
I feel like the current delegate voting system could use "refinement".

The purpose of voting is to try to accurately reflect the views of the stakeholders.  I don't think this is sufficiently accomplished in the current proposal.

I propose instead of having to choose 1 delegate to vote for or against, allow people to vote for however many delegates they want to support.  This will give a much clearer picture of how the community really feels.

In the current system, in order to "downvote" someone who does something like excludes transactions, you unfortunately must withdraw your support for someone you want to support in order to cast your downvote.  It's also a strange balancing act where the vote you would like to cast is dependent on the votes cast by others.  If a candidate has all the votes they need, you need to go find another candidate to vote for.  If a candidate is going to be downvoted out of being a delegate by others, there's no need for you to use your stake to downvote.

I propose you just vote for any delegate you support.  Delegates are selected on how broad their appeal is to stakeholders.  There could be a minimum of 97 delegates but an uncapped maximum where everyone who has over 50% community support is automatically a delegate.  This seems fair to me.  It would be great if all our delegates had over 50% community support backing them (also gets rid of "magic" number of delegates).

If a delegate messes up it's no problem to withdraw your support for that delegate without affecting your support of others.

Delegates could also see if they have lots of community support or if they are "on thin ice".  If a delegate had a ton of community support e.g. 95%, It might be rational for them to decide to run an additional delegate and they could have 2 delegates.  I might be happy to vote for a trusted core developer to run multiple delegates, say 5 delegates, but at some point I'm not willing to vote for their 6th delegate because I think that is starting to get greedy.  So people with lots of community support can gauge that support and potentially run more delegates than someone with less community support.
Title: Re: Delegated Proof of Stake (DPOS) White Paper
Post by: tonyk on June 15, 2014, 04:22:17 am
I feel like the current delegate voting system could use "refinement".

The purpose of voting is to try to accurately reflect the views of the stakeholders.  I don't think this is sufficiently accomplished in the current proposal.

I propose instead of having to choose 1 delegate to vote for or against, allow people to vote for however many delegates they want to support.  This will give a much clearer picture of how the community really feels.

In the current system, in order to "downvote" someone who does something like excludes transactions, you unfortunately must withdraw your support for someone you want to support in order to cast your downvote.  It's also a strange balancing act where the vote you would like to cast is dependent on the votes cast by others.  If a candidate has all the votes they need, you need to go find another candidate to vote for.  If a candidate is going to be downvoted out of being a delegate by others, there's no need for you to use your stake to downvote.

I propose you just vote for any delegate you support.  Delegates are selected on how broad their appeal is to stakeholders.  There could be a minimum of 97 delegates but an uncapped maximum where everyone who has over 50% community support is automatically a delegate.  This seems fair to me.  It would be great if all our delegates had over 50% community support backing them (also gets rid of "magic" number of delegates).

If a delegate messes up it's no problem to withdraw your support for that delegate without affecting your support of others.

Delegates could also see if they have lots of community support or if they are "on thin ice".  If a delegate had a ton of community support e.g. 95%, It might be rational for them to decide to run an additional delegate and they could have 2 delegates.  I might be happy to vote for a trusted core developer to run multiple delegates, say 5 delegates, but at some point I'm not willing to vote for their 6th delegate because I think that is starting to get greedy.  So people with lots of community support can gauge that support and potentially run more delegates than someone with less community support.

You sound like the most self-doubtful person I have ever met (other than myself).
I think that if you run under 49% of all delegates and you are doing it under Agent86 you will be safe. Just learn from other people’s mistakes and never post before logging off from the main account…
Title: Re: Delegated Proof of Stake (DPOS) White Paper
Post by: Agent86 on June 15, 2014, 04:45:10 am
You sound like the most self-doubtful person I have ever met (other than myself).
I think that if you run under 49% of all delegates and you are doing it under Agent86 you will be safe. Just learn from other people’s mistakes and never post before logging off from the main account…
I guess I'm trying to talk more broadly about what method of electing delegates will be most fair, hardest to game etc.  It seems like there may be a lot of people that want to be delegates especially if they are well compensated.
Title: Re: Delegated Proof of Stake (DPOS) White Paper
Post by: tonyk on June 15, 2014, 06:37:05 am
You sound like the most self-doubtful person I have ever met (other than myself).
I think that if you run under 49% of all delegates and you are doing it under Agent86 you will be safe. Just learn from other people’s mistakes and never post before logging off from the main account…
I guess I'm trying to talk more broadly about what method of electing delegates will be most fair, hardest to game etc.  It seems like there may be a lot of people that want to be delegates especially if they are well compensated.

As you may have already noticed, I am one of the most stupid people on this forum… but I do not think that there are more than 25-30 people (you must know the exact number anyway) ready and willing to run BTS TX delegate nodes.
If BTS X is success the number will be much bigger and ever improving… no matter the formula though you will be able to run as many of those delegates as you choose. You will have the necessary trades to keep your delegates in the top 100 just because the market will need a magic hand to keep parity for months and months… So as I said – do not get too greedy, keep them delegates of yours below 50%, never post before logging off from the main account… and on aside note that I already gave you - sell BTC at $680 if/whenever the market touches that price.
TK
Title: Re: Delegated Proof of Stake (DPOS) White Paper
Post by: Agent86 on June 15, 2014, 04:52:49 pm
I think that if you run under 49% of all delegates and you are doing it under Agent86 you will be safe. Just learn from other people’s mistakes and never post before logging off from the main account…
keep them delegates of yours below 50%, never post before logging off from the main account…
Ok, I guess you're saying I'm a sockpuppet?  Sorry I missed it; not the case.
Title: Re: Delegated Proof of Stake (DPOS) White Paper
Post by: liondani on June 15, 2014, 07:28:50 pm
I propose instead of having to choose 1 delegate to vote for or against, allow people to vote for however many delegates they want to support.  This will give a much clearer picture of how the community really feels.

 +5% +5% +5%

but with well studied restrictions like...
a)vote for X delegates max.
b)my first voted delegate takes Y points, the second Y-1 points .... etc...
c)make your suggestions...
Title: Re: Delegated Proof of Stake (DPOS) White Paper
Post by: toast on June 15, 2014, 07:42:51 pm
I propose instead of having to choose 1 delegate to vote for or against, allow people to vote for however many delegates they want to support.  This will give a much clearer picture of how the community really feels.


This is already how it is, you can split your stake however you like.
Title: Re: Delegated Proof of Stake (DPOS) White Paper
Post by: Agent86 on June 15, 2014, 08:17:01 pm
I propose instead of having to choose 1 delegate to vote for or against, allow people to vote for however many delegates they want to support.  This will give a much clearer picture of how the community really feels.

 +5% +5% +5%

but with well studied restrictions like...
a)vote for X delegates max.
b)my first voted delegate takes Y points, the second Y-1 points .... etc...
c)make your suggestions...
I think there is diminishing returns in making things more complicated.
You can think of it as a Yes/No question:  Do you want this person to be a delegate?  Do you trust this person as a delegate?
The answer to this question is likely "yes" for more than one delegate.

If you especially like and want to support a particular community member you can choose to support them to have more than one delegate but you would never want one person to control all of them.
Title: Re: Delegated Proof of Stake (DPOS) White Paper
Post by: Agent86 on June 15, 2014, 08:23:09 pm
I propose instead of having to choose 1 delegate to vote for or against, allow people to vote for however many delegates they want to support.  This will give a much clearer picture of how the community really feels.

This is already how it is, you can split your stake however you like.

There is a qualitative difference between:

1 BTS supports delegate 1
1 BTS supports delegate 2
1 BTS supports delegate 3
1 BTS supports delegate 4
1 BTS supports delegate 5

compared to:
5 BTS supports delegates 1,2,3,4 & 5

I hope you can see the difference here.

It is MUCH easier under the current system for a person with a big stake to vote themselves to be a delegate without appealing for broad community support.
Under my proposal it is possible for a delegate to show that over 50% of stake supports their position as delegate.  Under current proposal this is not possible.
Current proposal appears to me to make buying votes possible.  My proposal I don't believe it is possible.
Downvoting under the current system requires people to remove their support for their desired delegates in order to downvote.  Your client seems like it has to do some complicated analysis to constantly monitor which of your liked delegates need support and which don't.  Why not just allow people to state who they want as their delegates and express that will all their stake?
Title: Re: Delegated Proof of Stake (DPOS) White Paper
Post by: bytemaster on June 15, 2014, 08:34:05 pm
I propose instead of having to choose 1 delegate to vote for or against, allow people to vote for however many delegates they want to support.  This will give a much clearer picture of how the community really feels.

This is already how it is, you can split your stake however you like.

There is a qualitative difference between:

1 BTS supports delegate 1
1 BTS supports delegate 2
1 BTS supports delegate 3
1 BTS supports delegate 4
1 BTS supports delegate 5

compared to:
5 BTS supports delegates 1,2,3,4 & 5

I hope you can see the difference here.

It is MUCH easier under the current system for a person with a big stake to vote themselves to be a delegate without appealing for broad community support.
Under my proposal it is possible for a delegate to show that over 50% of stake supports their position as delegate.  Under current proposal this is not possible.
Current proposal appears to me to make buying votes possible.  My proposal I don't believe it is possible.
Downvoting under the current system requires people to remove their support for their desired delegates in order to downvote.  Your client seems like it has to do some complicated analysis to constantly monitor which of your liked delegates need support and which don't.  Why not just allow people to state who they want as their delegates and express that will all their stake?

A key part of our design was to make voting for delegates a low-overhead as possible.  Your proposal would require every transaction to update N delegates where N is unbounded. 

In reality there is no difference between 1 BTS supports 1-5 and 5 BTS supports 1,2,3,4 & 5 because all you did was perform a constant multiplier on the vote.

Title: Re: Delegated Proof of Stake (DPOS) White Paper
Post by: bytemaster on June 15, 2014, 08:37:59 pm
I think that it is perfectly fine for someone to vote for themselves without broad community appeal.  They have appealed to a 'broad' percent of the shareholders (themselves) and thus have equal rights as any other similar group of shareholders. 

They cannot do much harm and if they did attempt to harm then they will generate broad community disapproval pulling a relatively little amount from many candidates to concentrate it as a negative vote on one candidate. 
Title: Re: Delegated Proof of Stake (DPOS) White Paper
Post by: Agent86 on June 15, 2014, 09:02:06 pm
Your proposal would require every transaction to update N delegates where N is unbounded. 

Why?  You don't need to update all delegates in each transaction.  The transaction could just specify changes, or no change at all.  You wouldn't necessarily bother to change the delegate elections unless you have a reasonable stake that you intend to keep for a while, then you could send a transaction to yourself specifying new delegate elections and stating all prior delegate elections are void.

Yes, voting for a ton of delegates could make the size of your transaction large and therefore the transaction fee more expensive so you wouldn't be ridiculous with it because you would have to pay for it. (probably no more expensive or large than splitting up your stake/transactions to specify that you are voting for different delegates in current proposal anyway)
Title: Re: Delegated Proof of Stake (DPOS) White Paper
Post by: toast on June 15, 2014, 09:03:54 pm
By your proposal, the more people you vote for, the more your vote matters. Someone voting for 100 delegates will have 100x more voting power than someone voting for 1. If you suggest normalizing it then that's the same as splitting stake-vote.

How exactly would you tally votes in this scheme?
Title: Re: Delegated Proof of Stake (DPOS) White Paper
Post by: liondani on June 15, 2014, 09:25:09 pm
I think that it is perfectly fine for someone to vote for themselves without broad community appeal.  They have appealed to a 'broad' percent of the shareholders (themselves) and thus have equal rights as any other similar group of shareholders. 

They cannot do much harm and if they did attempt to harm then they will generate broad community disapproval pulling a relatively little amount from many candidates to concentrate it as a negative vote on one candidate.

Maybe you find this interesting...
"How Bad is Selfish Voting?"
http://www.cs.cmu.edu/~arielpro/papers/votePoA.aaai13.pdf (http://www.cs.cmu.edu/~arielpro/papers/votePoA.aaai13.pdf)
Title: Re: Delegated Proof of Stake (DPOS) White Paper
Post by: Agent86 on June 15, 2014, 09:28:03 pm
By your proposal, the more people you vote for, the more your vote matters. Someone voting for 100 delegates will have 100x more voting power than someone voting for 1.
That's not true. How so?  You can't vote for the same delegate 100x times.

If you want to throw as much weight as you can behind one candidate you support them exclusively (just denying support to potential competitors).

You could make 1000 delegates and vote for each of them but that gets you nowhere because they still each only have as much support as your personal stake can provide.  No one else has any reason to vote for them.  Other candidates on the up and up will get much more broad support and your delegates will never become delegates.

How exactly would you tally votes in this scheme?

You tally votes by simply ranking delegates by total amount of stake that supports them.  Top 97 delegates are active or anyone with over 50% even if that means more than 97 active delegates.
Title: Re: Delegated Proof of Stake (DPOS) White Paper
Post by: bytemaster on June 15, 2014, 09:41:43 pm
By your proposal, the more people you vote for, the more your vote matters. Someone voting for 100 delegates will have 100x more voting power than someone voting for 1.
That's not true. How so?  You can't vote for the same delegate 100x times.

If you want to throw as much weight as you can behind one candidate you support them exclusively (just denying support to potential competitors).

You could make 1000 delegates and vote for each of them but that gets you nowhere because they still each only have as much support as your personal stake can provide.  No one else has any reason to vote for them.  Other candidates on the up and up will get much more broad support and your delegates will never become delegates.

How exactly would you tally votes in this scheme?

You tally votes by simply ranking delegates by total amount of stake that supports them.  Top 97 delegates are active or anyone with over 50% even if that means more than 97 active delegates.

The issue is in tracking total stake that supports them.  That means every 'balance' in the blockchain would have to have N delegates attached to it instead of just 1.   When you spend that balance you subtract from N delegates and reallocate your votes for those shares to M delegates. 

What you are asking for is that each delegate sink or swim based upon an independent election.  This is no longer 'delegation' but rather popularism.

If you require all delegates to get at least 51% net support then you are asking all of the users to evaluate all of the candidates and that is much to high a burden.    If you lower the threshold then it opens the network up to attack by individuals with large minority shares that can move faster than people can 'vote out' their candidates. 

So I see such a system resulting in either no delegates getting to the threshold or an attacker creating 10000 delegates giving them all a bunch of support faster than anyone can vote them all out.  It would become very costly to vote against 10000 delegates produced by the attacker. 



 
Title: Re: Delegated Proof of Stake (DPOS) White Paper
Post by: Agent86 on June 15, 2014, 09:48:20 pm
To clarify what may be a misunderstanding, I'm am proposing to eliminate the ability to "downvote".  You either support someone to be a delegate or you don't: it's binary. (right now it's positive, neutral, down)
As soon as you see one of your delegates behaving badly you automatically pull support.
Title: Re: Delegated Proof of Stake (DPOS) White Paper
Post by: toast on June 15, 2014, 09:54:15 pm
To clarify what may be a misunderstanding, I'm am proposing to eliminate the ability to "downvote".  You either support someone to be a delegate or you don't: it's binary. (right now it's positive, neutral, down)
As soon as you see one of your delegates behaving badly you automatically pull support.

If you don't have downvotes you incentivize centralization because a delegate can offer to pay dividends to only his supporters.
Lack of support in a system where there's no cost to supporting someone isn't a punishment
Title: Re: Delegated Proof of Stake (DPOS) White Paper
Post by: Agent86 on June 15, 2014, 10:30:28 pm
To clarify what may be a misunderstanding, I'm am proposing to eliminate the ability to "downvote".  You either support someone to be a delegate or you don't: it's binary. (right now it's positive, neutral, down)
As soon as you see one of your delegates behaving badly you automatically pull support.

If you don't have downvotes you incentivize centralization because a delegate can offer to pay dividends to only his supporters.
Lack of support in a system where there's no cost to supporting someone isn't a punishment

Again, I think you are wrong.  If a delegate is offering to buy votes (pay dividends to supporters) I think they are very unlikely to get the kind of broad support needed to compete as a delegate under my proposal.   As long as they don't reach the level of being an active delegate (perhaps as much as 50% support) than there is no reward to the supporters.  If for some reason more than half the stake still wants this person to be a delegate, after they have offered to buy votes (and probably called out for it on the forums) than so be it.  --But everyone else can jump in and support them too without withdrawing their support for other delegates.  Now this person who is paying dividends only to their "supporters" is paying dividends equally to all shareholders, which is fine and kind of what we wanted to see anyway.

Under the current proposal, someone buying votes could very likely succeed.  They only need support of a very small percentage of the stake to become a delegate (by definition 1% makes them an active delegate but probably a lot less).  Then their supporters (maybe they only need to vote for themselves if they are a big holder) get the kickback that offers no benefit to the rest of the network.  Now you are hoping that others discover this behavior (how?) and use their votes to downvote.  But really their is a huge cost to being the hero that finds out this behavior and downvotes because now you can't vote for the delegate that you want.  So most likely you don't bother and the vote buyer gets away with it.  Not to mention, as I already pointed out, If the vote buyers are colluding they can play cat and mouse and switch their vote to a new delegate that you haven't voted down and then you'll have to track them down again to try to vote them down.  long story short you'll give up.
Title: Re: Delegated Proof of Stake (DPOS) White Paper
Post by: Agent86 on June 16, 2014, 02:24:43 am
The issue is in tracking total stake that supports them.  That means every 'balance' in the blockchain would have to have N delegates attached to it instead of just 1.   When you spend that balance you subtract from N delegates and reallocate your votes for those shares to M delegates. 
I don't think you need to "subtract from N delegates" each time you spend. 

Stake supports delegates: 1,2, & 3.
transaction says "add delegate 4"
Stake supports delegates 1,2,3, & 4.
transaction "remove delegate 2, add delegate 5"
Stake supports delegates 1,3,4, & 5
transaction "remove all prior delegates, add delegates 6 and 7"
stake supports only delegates 6 & 7.
transaction with no change
Stake continues to support delegates 6 & 7

What you are asking for is that each delegate sink or swim based upon an independent election.  This is no longer 'delegation' but rather popularism.
I guess if you make that distinction, then delegation encourages delegates to support the interests of the faction that delegates to them, popularism encourages delegates to appeal to all shareholders and support the interests of the whole DAC.

If you require all delegates to get at least 51% net support then you are asking all of the users to evaluate all of the candidates and that is much to high a burden.    If you lower the threshold then it opens the network up to attack by individuals with large minority shares that can move faster than people can 'vote out' their candidates. 

So I see such a system resulting in either no delegates getting to the threshold or an attacker creating 10000 delegates giving them all a bunch of support faster than anyone can vote them all out.  It would become very costly to vote against 10000 delegates produced by the attacker. 
There is no bottom "threshold",  It's basically the 100 accounts that have the most support are active delegates.  So no chance that no one reaches the threshold.  (I said that 50% could be used as a threshold to add additional delegates only in the situation that all active delegates already have over 50% support)

Let's say a big holder, I'll even give him 10%, wants to attack the network by creating 10000 delegates.  Everyone sees this and no one has any incentive at all to vote for those 10000 delegates except for the attacker.  (there are no downvotes, so people don't have to bother voting him down).  The only way his 10,000 delegates get active is if the rest of the 90% of the commmunity can't get it together enough to give 100 delegates more than 10% support each.  People would probably be voting for just about anyone able to run delegates that wasn't one of this ridiculous group of 10,000.   

There is nothing for this attacker to gain by doing this and everything to lose.  He runs the risk of having his giant and otherwise hugely valuable 10% stake be forked out completely by the rest of the community or otherwise become worthless, not to mention wasting a bunch of money registering 10,000 delegates for no reason and looking like a jerk for doing so.

Assuming that running a delegate is a profitable position, rational economic actors operating within the current voting system will end up voting for themselves or for delegates that kickback to them.  The down voting can't stop this behavior.  Anyone trying to be a hero by downvoting will miss his own opportunity to vote for himself or for someone giving him a kickback, he also misses the opportunity to vote for a candidate that is trying to benefit the whole DAC, he also will never be able to stamp out the activity of everyone voting for themselves or giving kickbacks so stopping one of these actors only leaves more spoils for others doing the same thing.  An entity willing to run delegates at a loss and give big kickbacks could quite likely surreptitiously gain over 50% of the delegates over time by appealing to people's profit motive (see GHash.IO as example). This entity need not be heavily invested in the chain.
Title: Re: Delegated Proof of Stake (DPOS) White Paper
Post by: carpet ride on June 16, 2014, 11:14:35 pm
This seems to be a long thread and this topic could be buried in here somewhere, but did anyone consider the approval voting system or rank voting when putting the ideas in place for this system?   I am sure that if DPOS is a success, copy cats will use alternate voting processes. 

http://en.wikipedia.org/wiki/Approval_voting

http://en.wikipedia.org/wiki/Ranked_voting_system
Title: Re: Delegated Proof of Stake (DPOS) White Paper
Post by: toast on June 17, 2014, 12:50:42 am
This seems to be a long thread and this topic could be buried in here somewhere, but did anyone consider the approval voting system or rank voting when putting the ideas in place for this system?   I am sure that if DPOS is a success, copy cats will use alternate voting processes. 

http://en.wikipedia.org/wiki/Approval_voting

http://en.wikipedia.org/wiki/Ranked_voting_system

Agent86 is proposing approval voting, I think it could be ok but I have to think about it more carefully. Ranked voting is probably too expensive to recompute each block as you have to do full instant runoff each time - not sure though
Title: Re: Delegated Proof of Stake (DPOS) White Paper
Post by: toast on June 17, 2014, 12:53:41 am
I suppose we should read from here down and consider what the various tradeoffs would imply in a DPOS system

http://en.wikipedia.org/wiki/Approval_voting#Effect_on_elections
Title: Re: Delegated Proof of Stake (DPOS) White Paper
Post by: liondani on June 17, 2014, 01:30:13 am
I suppose we should read from here down and consider what the various tradeoffs would imply in a DPOS system

http://en.wikipedia.org/wiki/Approval_voting#Effect_on_elections

hope they will not suprise all of you...
Title: Re: Delegated Proof of Stake (DPOS) White Paper
Post by: toast on June 17, 2014, 02:11:59 am
Regarding multiple-winner approval voting:

Quote
Approval voting can be extended to multiple winner elections. The naive way to do so is as block approval voting, a simple variant on block voting where each voter can select an unlimited number of candidates and the candidates with the most approval votes win. This does not provide proportional representation and is subject to the Burr dilemma, among other problems.

Other ways of extending Approval voting to multiple winner elections have been devised. Among these are proportional approval voting[48] for determining a proportional assembly, and Minimax Approval[49] for determining a consensus assembly where the least satisfied voter is satisfied the most.
Title: Re: Delegated Proof of Stake (DPOS) White Paper
Post by: Agent86 on June 17, 2014, 11:30:42 pm
Yea, I guess my voting proposal is called "approval voting"
Regarding multiple-winner approval voting:

Quote
Approval voting can be extended to multiple winner elections. The naive way to do so is as block approval voting, a simple variant on block voting where each voter can select an unlimited number of candidates and the candidates with the most approval votes win. This does not provide proportional representation and is subject to the Burr dilemma, among other problems.

Other ways of extending Approval voting to multiple winner elections have been devised. Among these are proportional approval voting[48] for determining a proportional assembly, and Minimax Approval[49] for determining a consensus assembly where the least satisfied voter is satisfied the most.
So the wiki has a sentence that says it's not good for multi-winner voting (without citation).  However following their links shows that multi-winner approval voting is the preferred method of:

American Statistical Association (ASA)
Game Theory Society (GTS)
American Mathematical Society (AMS)
Mathematical Association of America (MAA)

Maybe these guys are on to something?

I think doing our homework on voting theory is well worth the time but we also need to look at how it relates to our unique application with unique attributes.  For instance, our elections are "real time" so everyone can see who everyone else is voting for and the system has a chance to come to "equilibrium."  I think this is potentially a huge advantage over systems with a single time point vote.

Ranking is not needed because ranking is used for "instant run off" elections.  You need this because if you voted for a candidate that didn't stand a chance you only find out later and wish you could have put your vote to better use.  But with "real time" voting you can look at the layout and vote accordingly.  No one has more info than anyone else.

The main complaint against approval voting seems to be that it doesn't provide "proportional representation."  For instance if 60% of population is Repubican and 40% is Democrat and they elect reps by nationwide approval voting, all the winners could be republican.  And I guess the idea is that congress should have 40% democrats if 40% of population is democrat.  Personally, I don't agree with the premise.  The point of voting is to come to a consensus and your 40% democrats aren't going to get their way when anything is voted on in congress anyway. "proportional representation" seems chaotic.  This way you can have a congress with a single digit approval rating and everyone gets voted back in because they only have to aggressively court their own constituents by doing things like sending pork barrel projects back to their districts and they don't give a rat's a$$ what the rest of the country thinks of them.  Do we need to make sure there is a rep in congress to represent the interests of the 5% of the population that are extreme racists?  Do they need proportional representation?  What other subgroup of extremists need to have their views "represented"?  It's silly IMHO. Perhaps the existence of 2 political parties in the first place is an indication of a broken system.

The other complaint I found against approval voting (for single position election) is that it could advantage a strategic voter with better info.  For example, approving of your second choice could cause your first choice to lose when they otherwise wouldn't, but if you had good polling data you would know who to support.  I think this is solved by the fact that we vote in "real time."

Anyway, approval voting seems significantly more robust to me than current implementation, easier to understand, and MUCH more useful if we hope to put money into the hands of delegates who advance the interests of the DAC in other ways.

Reaction time may be worth discussing because a lot of people will have large stakes in cold storage, not everyone is ready to voice an opinion and vote out a bad actor on the drop of a hat.  How much damage can a delegate that turns bad do if they aren't voted out instantly?  I feel like bytemaster has said a bad delegate can't do much damage and can't gain much but I would like clarification.  BM?

Sidenote suggestion:
When somebody gets assessed a 5% one year inactivity fee, their stake votes should automatically be removed from the voting algorithm because they are clearly "asleep at the wheel" assuming they haven't lost their private keys.
Title: Re: Delegated Proof of Stake (DPOS) White Paper
Post by: toast on June 17, 2014, 11:59:34 pm
I'll ask BM to examine this more carefully, I am warming up to it a bit.

I want to clear up what we were discussing about the extra space requirements: You are right that transactions do not necessarily have to be significantly bigger as you only need to broadcast the diff. But it is very easy for an attacker to max out the bandwidth, forcing other people to pay a higher transaction fee once they want to vote using the stake they received from him (trx fee is per-byte).

More importantly, storage requirement (not the blockchain, the constructed chain DB) increases to the same amount as it would be if you put the entire new vote set in each transaction.

Quote
How much damage can a delegate that turns bad do if they aren't voted out instantly?  I feel like bytemaster has said a bad delegate can't do much damage and can't gain much but I would like clarification.

A bad delegate can:
* exclude transactions
* miss blocks on purpose (delay confirmations)
* exacerbate an current fork by a block
* pay only his supporters out of his income

The last one is the only one that could complicate things. The only stable situations I can imagine are if he would always get voted out in favor of someone paying normal dividends, or if every delegate is paying only his supporters and the situation looks almost identical.
Title: Re: Delegated Proof of Stake (DPOS) White Paper
Post by: Agent86 on June 19, 2014, 12:40:32 am
it is very easy for an attacker to max out the bandwidth, forcing other people to pay a higher transaction fee once they want to vote using the stake they received from him (trx fee is per-byte).
I think I addressed this by allowing a transaction to simply state "all prior delegate selections are void"  It doesn't need to individually specify to not vote for each delegate that was previously selected.
More importantly, storage requirement (not the blockchain, the constructed chain DB) increases to the same amount as it would be if you put the entire new vote set in each transaction.
I'm not sure I agree with this either.  The constructed database doesn't even have to specify which particular stake each vote comes from, it just needs to collect the aggregate votes for each delegate and then add or subtract from that accordingly.

A bad delegate can:
* exclude transactions
* miss blocks on purpose (delay confirmations)
* exacerbate an current fork by a block
* pay only his supporters out of his income

The last one is the only one that could complicate things. The only stable situations I can imagine are if he would always get voted out in favor of someone paying normal dividends, or if every delegate is paying only his supporters and the situation looks almost identical.

I think "approval voting" will not reward vote buying.  So I'm not worried about delegates only paying their supporters using approval voting.  Bad delegates will get voted out even if it isn't immediate and it doesn't seem like they have much to gain by misbehaving.

If all delegates only pay their own supporters the situation is not at all "almost identical."  It means that delegates can't give money to a developer or spend money on a marketing campaign that benefits everyone, because their voters just want as much of a kickback as they can get.  It's not a good situation.  If delegate positions can be bought than someone can buy over 50% of the delegates.

I would be very surprised if we don't eventually move away from the current voting proposal or get out-competed by someone else who does it right.  I'm not saying it would be an immediate disaster because there probably isn't anyone interested in creating problems.

Also from a user experience perspective it is way easier to just select the delegates you like, rather than having these trust scores and balancing which stake goes to which delegate and when to downvote etc. It's a turn off, hard to understand, and is flawed anyway.  Why try to get people used to it?
Title: Re: Delegated Proof of Stake (DPOS) White Paper
Post by: carpet ride on June 19, 2014, 01:12:05 am
Since the topic has picked up some steam, I think it's worth noting that there are a quite a few more voting methods, such as Penrose, Kemeny-Young, and the maximum likelihood method

See a more complete list here: http://en.wikipedia.org/wiki/Category:Voting_systems

Title: Re: Delegated Proof of Stake (DPOS) White Paper
Post by: gamey on June 19, 2014, 01:28:59 am

This is interesting.  It does become quite apparent that downvoting costs a user where upvoting can only help them. (using a few assumptions)

Looking at the different voting systems would be very useful. 

Perhaps separating downvoting from upvoting so they are no longer mutually exclusive.  So you get both an upvote and a downvote.  That means that the choice to downvote will not have a cost associated with it. I need to reread a lot of this thread though to understand the implications.
Title: Re: Delegated Proof of Stake (DPOS) White Paper
Post by: toast on June 19, 2014, 02:03:20 am
it is very easy for an attacker to max out the bandwidth, forcing other people to pay a higher transaction fee once they want to vote using the stake they received from him (trx fee is per-byte).
I think I addressed this by allowing a transaction to simply state "all prior delegate selections are void"  It doesn't need to individually specify to not vote for each delegate that was previously selected.

point for you!

Quote
More importantly, storage requirement (not the blockchain, the constructed chain DB) increases to the same amount as it would be if you put the entire new vote set in each transaction.
I'm not sure I agree with this either.  The constructed database doesn't even have to specify which particular stake each vote comes from, it just needs to collect the aggregate votes for each delegate and then add or subtract from that accordingly.

No, I think you can't get around storing the votes because you have to know who to subtract the vote from (or with diffs, who you are allowed to subtract from). I think it is amortized w.r.t. transaction fees paid but it will still increase our max blockchain size by a large constant factor, terabytes instead of 100s of GB.

Quote
Quote
A bad delegate can:
* exclude transactions
* miss blocks on purpose (delay confirmations)
* exacerbate an current fork by a block
* pay only his supporters out of his income

The last one is the only one that could complicate things. The only stable situations I can imagine are if he would always get voted out in favor of someone paying normal dividends, or if every delegate is paying only his supporters and the situation looks almost identical.

I think "approval voting" will not reward vote buying.  So I'm not worried about delegates only paying their supporters using approval voting.  Bad delegates will get voted out even if it isn't immediate and it doesn't seem like they have much to gain by misbehaving.

If all delegates only pay their own supporters the situation is not at all "almost identical."  It means that delegates can't give money to a developer or spend money on a marketing campaign that benefits everyone, because their voters just want as much of a kickback as they can get.  It's not a good situation.  If delegate positions can be bought than someone can buy over 50% of the delegates.

I would be very surprised if we don't eventually move away from the current voting proposal or get out-competed by someone else who does it right.  I'm not saying it would be an immediate disaster because there probably isn't anyone interested in creating problems.

There will almost certainly be improvements to the voting system. The more important question is, when do we cross the point of no return? The scary thought is that it could be right out of the gate, but I'm not sure.

Quote
Also from a user experience perspective it is way easier to just select the delegates you like, rather than having these trust scores and balancing which stake goes to which delegate and when to downvote etc. It's a turn off, hard to understand, and is flawed anyway.  Why try to get people used to it?

This is also a good point.


Let's try to think of a solution to the storage requirements for approval voting.
Title: Re: Delegated Proof of Stake (DPOS) White Paper
Post by: Agent86 on June 19, 2014, 02:15:38 am

No, I think you can't get around storing the votes because you have to know who to subtract the vote from (or with diffs, who you are allowed to subtract from). I think it is amortized w.r.t. transaction fees paid but it will still increase our max blockchain size by a large constant factor, terabytes instead of 100s of GB.

Let's try to think of a solution to the storage requirements for approval voting.
+5%
Title: Re: Delegated Proof of Stake (DPOS) White Paper
Post by: gamey on June 19, 2014, 02:57:45 am
All the various compression methods any decent programmer should be aware of.  If you guys think it is too much data then perhaps a separate chain.  The requirements of a chain that keeps track of funds and decisions regarding funds is far different than the requirements of knowing who voted for who.  Voting state is not required to be kept forever.  So a smaller chain that is pruned would be sufficient.  It adds to complexity but not terribly so.

Sent from my SM-N900P using Tapatalk

Title: Re: Delegated Proof of Stake (DPOS) White Paper
Post by: toast on June 19, 2014, 03:04:21 am
I am already assuming compression and maximum pruning. A side chain doesn't save space since it is required for validation.

Sent from my SCH-I535 using Tapatalk

Title: Re: Delegated Proof of Stake (DPOS) White Paper
Post by: gamey on June 19, 2014, 05:35:26 am
I am already assuming compression and maximum pruning. A side chain doesn't save space since it is required for validation.

Sent from my SCH-I535 using Tapatalk

So if you prune the vote sidechain every week (or day) it still blows up so much to be an issue?  Wow.  I guess I can see that with the possible number of delegates etc.  I always kinda assume my suggestions are obvious to you guys, but I post them on the off chance they're not.... never know.
Title: Re: Delegated Proof of Stake (DPOS) White Paper
Post by: toast on June 19, 2014, 05:47:21 am
I am already assuming compression and maximum pruning. A side chain doesn't save space since it is required for validation.

Sent from my SCH-I535 using Tapatalk

So if you prune the vote sidechain every week (or day) it still blows up so much to be an issue?  Wow.  I guess I can see that with the possible number of delegates etc.  I always kinda assume my suggestions are obvious to you guys, but I post them on the off chance they're not.... never know.

If you could prune the sidechain every week then you could prune the main chain every week too. As long as you need the sidechain to validate a block then it's pointless to not just include that data in the main chain, the client will need both.
Title: Re: Delegated Proof of Stake (DPOS) White Paper
Post by: gamey on June 19, 2014, 07:13:06 am
I am already assuming compression and maximum pruning. A side chain doesn't save space since it is required for validation.

Sent from my SCH-I535 using Tapatalk

So if you prune the vote sidechain every week (or day) it still blows up so much to be an issue?  Wow.  I guess I can see that with the possible number of delegates etc.  I always kinda assume my suggestions are obvious to you guys, but I post them on the off chance they're not.... never know.

If you could prune the sidechain every week then you could prune the main chain every week too. As long as you need the sidechain to validate a block then it's pointless to not just include that data in the main chain, the client will need both.

I guess it has to be one big deterministic machine from the genesis block.  I mean that would obviously be the most simple and trustful way to do it. However, it isn't so intuitive to me that this is necessary.  It seems that perhaps once the blocks are signed etc and within a certain amount of days the voting data could be discarded.  I guess it would be the same as discarding the hash values from blocks.

So why couldn't there be a chain/list of hashes to validate the blocks?  So you keep the voting info around for some reasonable time in a separate chain and discard/prune it.  The main chain has hashes for longterm/auxillary validation.

What am I missing that dictates the voting information has to be stored indefinitely ?  Once someone changes their vote why do you need to keep around all the historical votes ?
Title: Re: Delegated Proof of Stake (DPOS) White Paper
Post by: liondani on June 19, 2014, 07:39:33 am


. What am I missing that dictates the voting information has to be stored indefinitely ?  Once someone changes their vote why do you need to keep around all the historical votes ?

+5%




Sent from my ALCATEL ONE TOUCH 997D using Tapatalk

Title: Re: Delegated Proof of Stake (DPOS) White Paper
Post by: Agent86 on June 19, 2014, 11:38:46 am
Quote
More importantly, storage requirement (not the blockchain, the constructed chain DB) increases to the same amount as it would be if you put the entire new vote set in each transaction.
I'm not sure I agree with this either.  The constructed database doesn't even have to specify which particular stake each vote comes from, it just needs to collect the aggregate votes for each delegate and then add or subtract from that accordingly.

No, I think you can't get around storing the votes because you have to know who to subtract the vote from (or with diffs, who you are allowed to subtract from). I think it is amortized w.r.t. transaction fees paid but it will still increase our max blockchain size by a large constant factor, terabytes instead of 100s of GB
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?
Title: Re: Delegated Proof of Stake (DPOS) White Paper
Post by: bytemaster on June 19, 2014, 01:26:34 pm
A lot of time and effort has gone into designing the voting system as it is today.   While many kinds of voting are possible in theory we are trying to work within the following constraints:

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.

2) Voting shouldn't cost anything and should be transparently invoked as part of normal operation. 

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.   

Title: Re: Delegated Proof of Stake (DPOS) White Paper
Post by: Agent86 on June 19, 2014, 04:02:46 pm
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.
Title: Re: Delegated Proof of Stake (DPOS) White Paper
Post by: Agent86 on June 19, 2014, 04:04:19 pm
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%.
Title: Re: Delegated Proof of Stake (DPOS) White Paper
Post by: toast on June 19, 2014, 04:06:20 pm
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
Title: Re: Delegated Proof of Stake (DPOS) White Paper
Post by: gamey on June 19, 2014, 07:23:34 pm
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.
Title: Re: Delegated Proof of Stake (DPOS) White Paper
Post by: Agent86 on June 19, 2014, 08:44:40 pm
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.)
Title: Re: Delegated Proof of Stake (DPOS) White Paper
Post by: gamey on June 19, 2014, 08:53:10 pm
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.
Title: Re: Delegated Proof of Stake (DPOS) White Paper
Post by: tonyk on June 19, 2014, 09:02:35 pm
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?
Title: Re: Delegated Proof of Stake (DPOS) White Paper
Post by: Agent86 on June 19, 2014, 09:13:32 pm
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.
Title: Re: Delegated Proof of Stake (DPOS) White Paper
Post by: Agent86 on June 19, 2014, 09:15:19 pm
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)
Title: Re: Delegated Proof of Stake (DPOS) White Paper
Post by: tonyk on June 20, 2014, 05:02:22 pm
"-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.
Title: Re: Delegated Proof of Stake (DPOS) White Paper
Post by: Agent86 on June 20, 2014, 05:07:28 pm
"-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.
Title: Re: Delegated Proof of Stake (DPOS) White Paper
Post by: toast on June 22, 2014, 03:26:41 am
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.
Title: Re: Delegated Proof of Stake (DPOS) White Paper
Post by: tonyk on June 22, 2014, 04:55:46 am
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.
Title: Re: Delegated Proof of Stake (DPOS) White Paper
Post by: toast on June 22, 2014, 04:59:17 am
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
Title: Re: Delegated Proof of Stake (DPOS) White Paper
Post by: tonyk on June 22, 2014, 06:40:29 am
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… :)