Author Topic: Transactions as Proof-of-Stake & The End of Mining  (Read 87452 times)

0 Members and 1 Guest are viewing this topic.

Offline vikram

Paper on vulnerability of vanilla POS: http://www.reddit.com/r/BitcoinSerious/comments/1xpzb8/pos_is_more_vulnerable_to_51_attacks_than_pow/

I haven't looked thoroughly, but I don't think this affects TaPOS.

Offline bytemaster

It is entirely possible that I have not grasped some key aspect to how Ripple reaches consensus, but my analysis is based upon the following foundation:

1) If the first two nodes agree to reach consensus and they never add anyone else to their UNL list then no one else's opinion matters.   
2) If one of the two nodes adds a second person to his UNL list then there is a 50% chance of a fork because not everyone agrees.
3) You can minimize the likelihood of a fork so long as their is sufficient overlap in everyones UNL, however achieving sufficient overlap can be tricky.
4) Based upon my current understanding this only has the appearance of decentralization while effectively the only opinions that matter are those of the largest fully connected set in the UNL graph. 

So perhaps there is another means of solving this problem of setting up a UNL that is properly balanced with low likelihood of forking.    I suspect it is possible to avoid N^2 with the proper network topology, but am unsure how to guarantee the proper network topology in a decentralized manner.  After all, the 'center' of the network is constantly moving as new nodes are added and even if you start out properly balanced, you could find yourself outside the core to the point that either your opinion doesn't really matter or the network splits.  Remember, it doesn't matter who you put on your UNL... it matters who puts you on theirs.

I spent a lot of time talking about the ideal of not being centralized for a single block.  This is a huge advantage that Ripple has over random selection of block producers used by POS and POW.   I partially mitigate this problem in TaPOS because the difficulty of finding a block is reduced as the number of transactions increases.  This means that excluding a valid transaction from the block puts you at a disadvantage against everyone else.   Furthermore, even if you do produce a block and broadcast it, someone who produces a block with more CDD can always replace your head block which has fewer CDD, then the network could take your failed mining attempt and destroy your CDD anyway. 

Someone wanting to attempt this could only do so proportional to the percent of the share supply they control.   Combined with my market matching algorithm that penalizes those who walk the book in a single block, I believe I have mitigated any meaningful attempt at 'front running' the market by withholding transactions, especially because large transactions are likely accompanied by large amount of CDD. 

Conclusion, the 'consensus' is automatically to include everything and thus excluding transactions is a major risk of both wasting energy and your CDD.
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 alexkravets

  • Full Member
  • ***
  • Posts: 81
    • View Profile
If such an algorithm existed I would be very interested in it.

Latest newsletter http://goo.gl/I7r1mM says that Ripple-style consensus will be replaced with an earlier tweaked TaPOS.

Is there a version of TaPOS that solves the centralization-one-block at a time problem that all block-chain systems face ?

(Any miner who solves a block has a window to insert arbitrary transactions to front-run the market while removing transactions that would go against him).

Dan,

After I saw your remark about once-block-at-a-time centralization that all chains face (you too ethereum) I thought that was gonna be enough to not consider block-chains for a decentralized market ...

Your previous concerns about Ripple style consensus have all been debated and put to rest by the Ripple community almost a year ago.

There IS one issue which is a Ripple-like consensus system DOES start centralized (but already much less so than ANY chain with top 3 pools having 50% hash power) but over time decentralization is inevitable as more nodes join and users choose to customize their UNL lists.

N^2 growth in traffic objection as N nodes join does not apply in practice because nodes only exchange messages between low and high watermark of local peers not everyone.

Perceived lack of incentive to participate for nodes is addressed by two thing:

1. Running a consensus nodes is a constant near-zero cost and keeps falling with moore's law.
2. Running a consensus node benefits the owner in various secondary ways (lower latency access to network, etc) which should be plenty enough for brokers, banks & market makers to do.

Cheers ...

TL;DR: How does modified TaPOS address the centralized-one-block-at-a-time problem ?
« Last Edit: February 13, 2014, 10:22:59 am by alexkravets »


Offline bytemaster

After looking at the math it is clear to me that if a block is even a few CDD shy of the target for the minimum threshold no one will mine because the difficulty would be so much higher that it will not be profitable. 

Therefore in order to 'mine' every block must destroy the minimum number of coindays.  This means that for the blockchain to progress shareholders everywhere must be ready to use their accumulated coindays to mine.   So the question becomes how to divide the transaction fees between the miners and the dividends.   This is another case where I hate to employ price fixing so whether I set it at 100% like NXT, 50% like the original BTS white paper, or 1% like I have suggested recently the result is price fixing.

Fortunately I have a solution that is fair for all and avoids price fixing.  When a miner uses their own coindays to secure the network, they get a percentage of the fees in that block proportional to percentage of the CDD they provided vs those provided by 3rd party transactions.   This means that dividends are earned when security is provided entirely by real network transactions and that mining fees are earned when security is provided by the miner using their own CDD to secure the network. 

This should motivate miners to consume as many CDD as they can as quickly as they can to earn the maximum fees and move the network along.   

The next question people may have is how will transaction fees be priced?   Minimum fee will be set such that if the blockchain was running a full capacity (512K per block) that 1% of the share supply per year would be earned as dividends.  Then I will adjust the fee like I adjust difficulty to maintain an average block size of 512K and a maximum block size of 1 MB.   So if demand picks up then so do fees and when demand falls below 512K below fees will fall back to the minimum.

Could a minimum threshold on CDD make it difficult to bootstrap fledgling DACs which start out with very little activity?

Also, I found this post interesting: http://blog.ethereum.org/2014/02/01/on-transaction-fees-market-based-solutions/

The minimum threshold on CDD is not a problem when miners are rewarded with BTS from TRX fees for the CDD they destroy. I have carefully worked through things to make sure the chain does not 'hang' for lack of CDD.

I read that ethereum post and am going to offer my opinion as an economist:
1) They are attempting to set prices without using market forces which brings up all kinds of fallacies and problems:
  a) They assume that price can be calculated from costs... the input theory of prices which is the way all centrally planned systems attempt to manage their economies. 
  b) They assume that price can be voted on democratically.  This is flawed for the same reasons all voting systems are flawed, the minority loses.
  c) They assume prices can be calculated in the absence of voluntary trade.

2) They assume that a blockchain needs to grow to handle more than 7 trx per second which is based upon the one-chain to rule them all mentality.

3) Miners collect the fees, but users bear the costs.  Without a dividend system there is no way to compensate the average user for the costs on the network nor to reward them for holding and not transacting.   

I contend that a fixed bandwidth target with fees dynamically adjusting to match the supply/demand for transactions is the best market-based way of setting fees for a fixed definition of decentralization (bandwidth usage).   

If you are going to allow the blockchain size to grow then you create a prediction market that will set the target block size.  This way people can hedge their positions and it is resistant to sybil attacks.

 

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 vikram

After looking at the math it is clear to me that if a block is even a few CDD shy of the target for the minimum threshold no one will mine because the difficulty would be so much higher that it will not be profitable. 

Therefore in order to 'mine' every block must destroy the minimum number of coindays.  This means that for the blockchain to progress shareholders everywhere must be ready to use their accumulated coindays to mine.   So the question becomes how to divide the transaction fees between the miners and the dividends.   This is another case where I hate to employ price fixing so whether I set it at 100% like NXT, 50% like the original BTS white paper, or 1% like I have suggested recently the result is price fixing.

Fortunately I have a solution that is fair for all and avoids price fixing.  When a miner uses their own coindays to secure the network, they get a percentage of the fees in that block proportional to percentage of the CDD they provided vs those provided by 3rd party transactions.   This means that dividends are earned when security is provided entirely by real network transactions and that mining fees are earned when security is provided by the miner using their own CDD to secure the network. 

This should motivate miners to consume as many CDD as they can as quickly as they can to earn the maximum fees and move the network along.   

The next question people may have is how will transaction fees be priced?   Minimum fee will be set such that if the blockchain was running a full capacity (512K per block) that 1% of the share supply per year would be earned as dividends.  Then I will adjust the fee like I adjust difficulty to maintain an average block size of 512K and a maximum block size of 1 MB.   So if demand picks up then so do fees and when demand falls below 512K below fees will fall back to the minimum.

Could a minimum threshold on CDD make it difficult to bootstrap fledgling DACs which start out with very little activity?

Also, I found this post interesting: http://blog.ethereum.org/2014/02/01/on-transaction-fees-market-based-solutions/

Offline bytemaster

If such an algorithm existed I would be very interested in it.
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 alexkravets

  • Full Member
  • ***
  • Posts: 81
    • View Profile
Mr bytemaster,

Imagine there was a modified Ripple consensus algorithm that would not need any (local) static UNL lists ... i.e. the consensus process would be done exactly as it is today in Ripple, but transaction withholding ( since transactions are digitally signed and hence self-validating AND impossible to replay, transaction withholding is the only way to attack vector left to try to frustrate the consensus) AND validation and other forms of peer message spam (as distinct from transnational spam which is controlled through adaptively escalating fees) is also handled by such a modified version.

Would such a modified Ripple consensus satisfy ALL your decentralization, instant (as permitted by bandwidth and speed of light lower bound on convergence time) confirmation and lack of UNL cartel requirements ?

(Note, your earlier remark about N^2 load growth inside ripple network as number of peer nodes growth would apply but only in the case of each peer wanting to connect to all others, instead they have the usual low and high watermark P2P networking code)

Offline Troglodactyl

  • Hero Member
  • *****
  • Posts: 960
    • View Profile
For a trading platform chain I think people will be comfortable with much longer block times than they are payment system focused chain.  Of course we're likely to see some clones with experimental new target times once it takes off anyway.

Offline yidaidaxia

  • Full Member
  • ***
  • Posts: 179
    • View Profile
Thanks for your feedback and detailed explaination. Now I see the point and agree w/ you that, currently, decentralization is more important than fast trasaction. But 5 min is still too long to current people's mind set/expectation, let's see if we could educate people to accept that and the system/market could operate effectively. The only way to do this is to conduct the bitshares XT, so looking forward to 2/28 now.  :)


Target block time is 5 minutes.

If I understand it correctly, that means every transaction need at least 5 min to complete. I think it's too long for a efficient system where people could do their bitassets trading business on it..  Any idea to reduce the transaction time.? I know it's difficutly since ripple way does not work as your assessment.

In a decentralized system you are limited by the speed of light if you want stability.   Strictly speaking blockchains do not need to be decentralized to serve their purpose.   Someone could implement the exact same transaction model on a central server and as long as the blockchain was public record you could trust them and if they were shutdown someone could just migrate the chain to a new server.  Such a chain could offer instant confirmations and still be trust-free, but centralized.

Thus I content that decentralization has costs but is not necessary for the trust-free revolution.   For now people expect things to be fully decentralized because of regulatory issues. 

Ripple consensus is ultimately a fig leaf of decentralization that is only slightly better than having a dedicated central server with automatic fail over.   The purpose of consensus is to agree on the next closed ledger so I can see it working something like this:

Everyone agrees to let Sam decide on the next closed ledger and he can have that role until he abuses it even once or he dies.  Then we have a chain of command where if Sam is no longer able to perform the job (arrested, etc) then Alice takes over.   Alice could even be set up behind a TOR hidden service.    Neither Sam nor Alice could generate alternative chains without getting caught their alternative chains would be rejected.  Furthermore, Alice could simply sign everything Sam produces and therefore they would have to collude to produce an alternative chain.

I think you can see from this that decentralization of block production is more a necessity of marketing than of security of the network.  Though some could argue that it is a necessity of security for those that would end up signing every block as they would become giant targets for government shutdown.  In the future, once governments lose this war against crypto, then many centralized services will compete to offer instant transactions based upon the premise of open/audit-able blockchains.
PTS: PmUT7H6e7Hvp9WtKtxphK8AMeRndnow2S8   /   BTC: 1KsJzs8zYppVHBp7CbyvQAYrEAWXEcNvmp   /   BTSX: yidaidaxia (暂用)
新浪微博: yidaidaxia_郝晓曦 QQ:36191175试手补天

Offline wan3646886

  • Jr. Member
  • **
  • Posts: 21
    • View Profile

Offline wan3646886

  • Jr. Member
  • **
  • Posts: 21
    • View Profile

Offline bytemaster

After looking at the math it is clear to me that if a block is even a few CDD shy of the target for the minimum threshold no one will mine because the difficulty would be so much higher that it will not be profitable. 

Therefore in order to 'mine' every block must destroy the minimum number of coindays.  This means that for the blockchain to progress shareholders everywhere must be ready to use their accumulated coindays to mine.   So the question becomes how to divide the transaction fees between the miners and the dividends.   This is another case where I hate to employ price fixing so whether I set it at 100% like NXT, 50% like the original BTS white paper, or 1% like I have suggested recently the result is price fixing.

Fortunately I have a solution that is fair for all and avoids price fixing.  When a miner uses their own coindays to secure the network, they get a percentage of the fees in that block proportional to percentage of the CDD they provided vs those provided by 3rd party transactions.   This means that dividends are earned when security is provided entirely by real network transactions and that mining fees are earned when security is provided by the miner using their own CDD to secure the network. 

This should motivate miners to consume as many CDD as they can as quickly as they can to earn the maximum fees and move the network along.   

The next question people may have is how will transaction fees be priced?   Minimum fee will be set such that if the blockchain was running a full capacity (512K per block) that 1% of the share supply per year would be earned as dividends.  Then I will adjust the fee like I adjust difficulty to maintain an average block size of 512K and a maximum block size of 1 MB.   So if demand picks up then so do fees and when demand falls below 512K below fees will fall back to the minimum.   
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

Target block time is 5 minutes.

If I understand it correctly, that means every transaction need at least 5 min to complete. I think it's too long for a efficient system where people could do their bitassets trading business on it..  Any idea to reduce the transaction time.? I know it's difficutly since ripple way does not work as your assessment.

In a decentralized system you are limited by the speed of light if you want stability.   Strictly speaking blockchains do not need to be decentralized to serve their purpose.   Someone could implement the exact same transaction model on a central server and as long as the blockchain was public record you could trust them and if they were shutdown someone could just migrate the chain to a new server.  Such a chain could offer instant confirmations and still be trust-free, but centralized.

Thus I content that decentralization has costs but is not necessary for the trust-free revolution.   For now people expect things to be fully decentralized because of regulatory issues. 

Ripple consensus is ultimately a fig leaf of decentralization that is only slightly better than having a dedicated central server with automatic fail over.   The purpose of consensus is to agree on the next closed ledger so I can see it working something like this:

Everyone agrees to let Sam decide on the next closed ledger and he can have that role until he abuses it even once or he dies.  Then we have a chain of command where if Sam is no longer able to perform the job (arrested, etc) then Alice takes over.   Alice could even be set up behind a TOR hidden service.    Neither Sam nor Alice could generate alternative chains without getting caught their alternative chains would be rejected.  Furthermore, Alice could simply sign everything Sam produces and therefore they would have to collude to produce an alternative chain.

I think you can see from this that decentralization of block production is more a necessity of marketing than of security of the network.  Though some could argue that it is a necessity of security for those that would end up signing every block as they would become giant targets for government shutdown.  In the future, once governments lose this war against crypto, then many centralized services will compete to offer instant transactions based upon the premise of open/audit-able blockchains.
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 yidaidaxia

  • Full Member
  • ***
  • Posts: 179
    • View Profile
Target block time is 5 minutes.

If I understand it correctly, that means every transaction need at least 5 min to complete. I think it's too long for a efficient system where people could do their bitassets trading business on it..  Any idea to reduce the transaction time.? I know it's difficutly since ripple way does not work as your assessment.
PTS: PmUT7H6e7Hvp9WtKtxphK8AMeRndnow2S8   /   BTC: 1KsJzs8zYppVHBp7CbyvQAYrEAWXEcNvmp   /   BTSX: yidaidaxia (暂用)
新浪微博: yidaidaxia_郝晓曦 QQ:36191175试手补天