The five consensus algorithms #5: Virtual-voting by Dr. Leemon Baird

one technology used for distributed ledger technologies is virtual voting that's what the hash graph is so the hash graph is virtual voting which is different from the other four technologies so the five technologies were proof of work and leader based and economy based and voting based the fifth one is virtual voting based so how does this compare remember that the proof of work is very inefficient the proof of work based systems and they also have problems with if you partition it bad things can happen and they have problems with fairness fairness of access fairness awarding fairness of timestamps in the leader based systems you have a real DDoS problem that you didn't have before distributed denial-of-service where computers on the internet attack one computer can shut down the whole network bleeder based system has a problem with that plus the fairness problems fairness of access fairness of ordering fairness of timestamps and then the third category was the economy based systems and for those we don't have proofs of any kind of fairness and we have no idea what kinds of attacks might or might not work and so maybe we have problems with all of these things and we particularly can imagine problems with partitions and problems with malicious nodes tricking the others into losing money or tricking the others into not participating or whatever there's all sorts of subtle attacks and we have no proofs at all we have no guarantees that these subtle attacks won't work or that we can't make new subtle attacks in the future so the economy based systems have a variety of problems here and then there was voting based systems that have beautiful math proofs and are completely inefficient a pure voting based system is impractical plus you don't have fairness unless you go to an incredibly inefficient system to try to put in fairness but you generally don't have fairness so these are the problems with the other four technologies the virtual voting avoids all those problems you might also say well what if we did something that combined what if we used pure voting to pick a leader or a group of leaders and then the leaders take turns being leader for two seconds each combine the voting with the leader based or what if we had some kind of a system where we bring it down to a small group of people and then we have one leader proposes a block and then we vote on whether we like the block or not and we have proposers that are leaders and then we have voting on that turns out there's lots of ways of building hybrids and whenever you build a hybrid you end up with all the vulnerability flaws of the one and all the vulnerability flaws of the other both so hybrids from a security viewpoint from a fairness viewpoint went and I'm a service to your point hybrids are worse than two component parts the whole is less than some of the parts why would you do a hybrid Oh usually for Speed I'm that's usually what you need the only virtual voting you get more speed than the hybrid and you get none of those security problems so here's what virtual voting is start for hash graph and this is the way it was originally developed start with the voting based systems the pure voting based systems they go back decades they come from the distributed systems community they come from the fault tolerance communities different communities going way back they have beautiful math proofs of Byzantine fault tolerance and even asynchronous purely truly asynchronous Byzantine fault tones the form the strongest kind of guarantees but they're hopelessly inefficient and there is currently research going on on how to make them better and there's little tiny incremental improvements and people are still getting PhDs in and in publishing papers in it in their in journals and conferences and none of them are deployed because they're so slow but the math is beautiful so start with that math and then the hash graph said could we do a voting system with no votes let's build a voting system with all the math proofs of the voting system but no votes because that's the inefficient part is all those votes so imagine this you want to spread out your transactions as fast as possible to give them to everybody so you do a gossip algorithm the gossip algorithm is you give your transactions to random people who give them random people who give them the random people and it spreads exponentially fast like wildfire and pretty soon everybody knows the transactions everybody gets every transaction fast no leader no taking turns nobody is different from anyone else everyone is equal there's no DDoS attacks there's no way that a malicious node can do anything bad we've digitally signed our transactions so you can't Forge and everything is beautiful that gets the word out as fast as possible but there's no consensus on order so we haven't solved the problem but it's fast gossip is going to be fast but then we add something else we had a tiny bit of information to each transaction or each group of transactions very little extra just a few more bytes so maybe one percent more bytes going over the Internet no bandwidth cost really and what we get is not only does everybody know the transactions they know the complete history of everyone who talked to everyone you will know exactly who Alice has talked to any what order she talked to them and when she talked to Bob you'll know who talked to Bob right before that conversation and then who talked to him before that and you'll know every time somebody gossiped who they gossiped with but when you gossip you tell them all the transactions you know and you tell them about the graph itself about this history itself in other words we're not just gossiping about transactions we are gossiping about gossip by doing gossip about gossip we get this beautiful view of what everybody knows and because I know exactly what Alice knows and when she knew it I can run the voting algorithm incorporating votes from Alice without all Alice ever sending those votes I can just predict how she ought to have voted and vote for her in my head and I can figure out how I should how Bob would have voted if he had voted so there's no need for him to send me votes I can run the entire voting algorithm in my head without anybody ever sending me a vote without anybody ever sending a receipt so you could won one of these voting algorithms that has the beautiful math proofs and strong strong security without any voting error actually happening in fact we can go even further and we get math proofs that will have fairness in our results so what kind of speed do we get gossip about gossip with virtual voting lets you run right at the limit of the speed of the internet whatever your bandwidth limits are that's about how fast your transactions per second can be you're never gonna get faster than that and how secure is it Byzantine fault tolerant with asynchronous Byzantine fault tolerant these strongest kind of security possible and the strongest fairness we have mathematical proofs of fairness you get all the benefits of the pure voting systems plus the fairness and it's totally efficient you can do it very very fast and so that is why the virtual voting system is what you would actually deploy rather than the voting system and nobody's ever deployed a voting system and it avoids all the problems of the other three technologies the proof-of-work and the leader based and the economy based and it definitely avoids the problems of hybrids where you've glued together several of these systems and that is hash graph hash graph is the virtual voting based DLT

You May Also Like