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

0 Members and 1 Guest are viewing this topic.

Offline MolonLabe

  • Full Member
  • ***
  • Posts: 58
    • View Profile
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?

Offline liondani

  • Hero Member
  • *****
  • Posts: 3737
  • Inch by inch, play by play
    • View Profile
    • My detailed info
  • BitShares: liondani
  • GitHub: liondani
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  :)
« Last Edit: May 22, 2014, 02:20:53 pm by liondani »

Offline bytemaster

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.
For the latest updates checkout my blog: http://bytemaster.bitshares.org
Anything said on these forums does not constitute an intent to create a legal obligation or contract between myself and anyone else.   These are merely my opinions and I reserve the right to change them at any time.

Offline santaclause102

  • Hero Member
  • *****
  • Posts: 2486
    • View Profile
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. 

Offline JoeyD

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?

Offline santaclause102

  • Hero Member
  • *****
  • Posts: 2486
    • View Profile
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... 

Offline HackFisher

  • Hero Member
  • *****
  • Posts: 883
    • View Profile
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.
Anything said on these forums does not constitute an intent to create a legal obligation or contract between myself and anyone else.   These are merely my opinions and I reserve the right to change them at any time.

Offline sudo

  • Hero Member
  • *****
  • Posts: 2255
    • View Profile
  • BitShares: ags
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%

Offline xeroc

  • Board Moderator
  • Hero Member
  • *****
  • Posts: 12922
  • ChainSquad GmbH
    • View Profile
    • ChainSquad GmbH
  • BitShares: xeroc
  • GitHub: xeroc
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

Offline bitmeat

  • Hero Member
  • *****
  • Posts: 1116
    • View Profile

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!

Offline bytemaster

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.
For the latest updates checkout my blog: http://bytemaster.bitshares.org
Anything said on these forums does not constitute an intent to create a legal obligation or contract between myself and anyone else.   These are merely my opinions and I reserve the right to change them at any time.

Offline bytemaster

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
For the latest updates checkout my blog: http://bytemaster.bitshares.org
Anything said on these forums does not constitute an intent to create a legal obligation or contract between myself and anyone else.   These are merely my opinions and I reserve the right to change them at any time.

Offline santaclause102

  • Hero Member
  • *****
  • Posts: 2486
    • View Profile
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

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?
« Last Edit: May 13, 2014, 09:01:03 am by delulo »

Offline jwiz168

  • Sr. Member
  • ****
  • Posts: 409
    • View Profile
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

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.

Offline bytemaster

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

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. 
For the latest updates checkout my blog: http://bytemaster.bitshares.org
Anything said on these forums does not constitute an intent to create a legal obligation or contract between myself and anyone else.   These are merely my opinions and I reserve the right to change them at any time.