Author

Topic: What is most best way to agree on something if all actors are known? (Read 496 times)

hero member
Activity: 527
Merit: 500
Classic one is Paxos though Raft is easier to understand and proven to be as correct.


Proofs of correctness for distributed algorithms depend critically on the assumptions made about the behavior of the components (nodes and network communications).  If one has mastered the subject matter in sufficient detail to have any hope of building successful implementations, then one will have little trouble following Paxos.  If one hasn't reached this level of mastery,  my suggestion is to do some serious study before charging off and designing any systems that rely on distributed protocols.  (And before that, one should understand how to prove correctness of programs.) It is also advisable to be familiar with the various "impossibility" results for distributed systems, lest one try to invent something that is impossible.

The issues involved are far more subtle than may appear at first glance.



Thank you everyone!

Raft seems reasonably easy and apparently is correct.  Is there a reason not to use that?  Seems to me like it'd be relatively easy to implement.  Because yes, doing research would be great but need to be nimble since it's a startup app.

How resistant is Raft to 51% attack?  I guess a 51% attacker would just try to block or vote for each other as leader?  Anyone know performance?   Seems to me like bandwidth might be an issue if people are agreeing via the internet... which is one reason something blockchain like might be better and I do have a lot of blockchain experience by this point.

Edit: Actually I may want to tweak this a little bit.  If anyone who is an expert in this field would like to discuss my ideas an tweaks that work a little bit better given our known information, I would be willing to pay something, either equity or cash.
sr. member
Activity: 278
Merit: 251
Classic one is Paxos though Raft is easier to understand and proven to be as correct.


Proofs of correctness for distributed algorithms depend critically on the assumptions made about the behavior of the components (nodes and network communications).  If one has mastered the subject matter in sufficient detail to have any hope of building successful implementations, then one will have little trouble following Paxos.  If one hasn't reached this level of mastery,  my suggestion is to do some serious study before charging off and designing any systems that rely on distributed protocols.  (And before that, one should understand how to prove correctness of programs.) It is also advisable to be familiar with the various "impossibility" results for distributed systems, lest one try to invent something that is impossible.

The issues involved are far more subtle than may appear at first glance.



sr. member
Activity: 467
Merit: 266
Classic one is Paxos though Raft is easier to understand and proven to be as correct.
staff
Activity: 4200
Merit: 8441
When all the actors are known the problem you're trying to solve is called "distributed consensus" and there are many fine algorithms for it.
hero member
Activity: 527
Merit: 500
Let's say that I and my friends want to basically have a mini-version of Bitcoin.  We don't have to rely on Proof of Work because we know who the actors are and we can basically say that they all have equal mining power that is linked to their known public keys (aka wallet addresses).

Is the best way to come to agreement still to build a blockchain?  Assume we aren't that great of friends and can't just trust each other. Or are there better ways for coming to agreement when the miners are known?

Better can be faster or more secure or something else I'm not thinking of.

Note: I'm applying it to a different type of problem but occurs to me that Bitcoiners probably know their techy stuff and it might lead to an interesting conversation.

Thanks!
Jump to: