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.