Fundamentals of fault-tolerant distributed computing in asynchronous environments (ACM computing surveys, 1999)