BitShares Forum

Main => General Discussion => Topic started by: Bhuz on October 07, 2015, 01:09:44 pm

Title: Order of witnesses signing blocks
Post by: Bhuz on October 07, 2015, 01:09:44 pm
Hi guys,
I have a question / idea...but not knowing exactly how the DPOS 2.0 protocol works, maybe this idea is based on wrong assumption and/or is not feaseble for implementation or security problems...you tell me :)

My assumption is that even if the order of witnesses signing blocks seems random, it really is deterministic, based on...previous hashes?... I don't know, but still, is deterministic.

At this point, could we change the way in which the order is determined?
Maybe the protocol should take into account the latency between witnesses?

It should knows all the latency from a witness to the others, for each witness, and then maybe with a modified version of Dijkstra algo (some kind of algo for shortest paths), it could find the best routing through all the witnesses.

This could lower the average latency between consecutive witnesses and so it could be easier to decrease the blocks interval (specially for 1 sec) without the necesity of increasing the bandwidth, and above all it should also decrease (kind of eliminate) the number of missing blocks due to:
1)high latency between very distance node
2)nodes with not so high bandwidth capacity

Since we anyway should aim to a good decentralization of witnesses around the world in different regions and continents, this approach could really keep the overall latency very low.
...or maybe not?!
Title: Re: Order of witnesses signing blocks
Post by: Bhuz on October 08, 2015, 02:21:43 pm
Anyone? xD
Title: Re: Order of witnesses signing blocks
Post by: bytemaster on October 08, 2015, 02:26:45 pm
Not all nodes get the same latency metrics from the peers so latency data cannot be factored into consensus *UNLESS* a witness publishes / signs the latency values they see.
If a witness publishes / signs the values they see then they can fake the values they publish in order to control who they get paired with.

The reason witnesses are randomized is to prevent victimization of one witness by another.  Introducing these kinds of things into the protocol would de-randomize it and open up attack vectors.