Some thoughts: what do we want to test? the lieutenants should be able to agree upon a consensus TODO: unit tests for algms TODO: OptionParser: --output / -o (for formatting as graph) NOTE: visualize / graph using: https://github.com/glejeune/Ruby-Graphviz OM(m) - Oral Message algorithm / method SM(m) - Signed Message algorithm / method advanced: OM(m,p) (not fully connected graph) OM(m) Setup: n nodes, 1 of which is the general, and the rest (n-1) of which are lieutenants Input: m faulty nodes Output: Value v agreed upon by the n-1 lieutenants Acknowledgments: Lamport, Leslie; Robert Shostak, Marshall Pease - "The Byzantine Generals Problem": http://research.microsoft.com/en-us/um/people/lamport/pubs/byz.pdf Dr. Dobbs's site helped me understand the algorithms better in the times when the above paper got too tough: http://www.drdobbs.com/cpp/the-byzantine-generals-problem/206904396 Helpful slides from Dr. Indranil Gupta's class on Advanced Topics in Distributed Systems: http://www.cs.uiuc.edu/class/sp07/cs525/slides_040507.ppt Tony Arcieri, for his awesome Celluloid actor framework for Ruby