hashicorp / raft

Golang implementation of the Raft consensus protocol
Mozilla Public License 2.0
8.28k stars 997 forks source link

Randomly creating a cluster of chosen nodes for block verification (out of all the nodes based on a particular type of asset transaction(s)) in a raft based consensus algorithm #381

Closed UAvinash7 closed 4 years ago

UAvinash7 commented 4 years ago

Is there any functionality in hashicorp raft library that allows randomly creation of cluster of nodes for a block that is proposed for block verification from majority of nodes in that particular cluster and canonical chain addition based on the particular type of transaction (transaction may be classified on asset/commodity type) that a block.

Here in this context, block contains a particular asset/commodity type transaction(s) only and nodes that form a cluster for block verification and canonical chain addition is subscribed for that particular type of asset/commodity type transactions only.

After this block is processed, then the cluster should be dissolved and based on the client requests this process should be getting executed again from scratch.

By this approach, i would like to add randomness in the nodes that are forming a cluster based on the location from where client request is getting initiated and forming cluster in the nearby nodes only rather than getting block verified in some other continent (as per the existing raft mechanism) and then propagating the verified block across the entire network.

Any leads to achieve this ideology will be really helpful to me.

Hoping for a favourable reply.

Thanks in advance! @evanphx @topfunky

banks commented 4 years ago

Hi @UAvinash7

Interesting problem. As far as I understand it though you are proposing a very different algorithm to Raft here - something at the intersection of Byzantine Consensus and Generalised Consensus where there isn't just a single state machine to keep in sync between replicas but something much more complex.

That's way beyond the scope of this library unfortunately so I don't think we can help there.

If you need a raft implementation to use as part of a larger system that implements some of these other things this might be useful, but I don't recognise from your description anything that looks like regular raft consensus which is tightly focused on non-byzantine state machine replication.

schristoff commented 4 years ago

Closing this for now - thanks for this discussion :)