Validated Objects: Specification, Implementation, and Applications
Guaranteeing the validity of concurrent operations on distributed objects is a key property for ensuring reliability and consistency in distributed systems. Usually, the methods for validating these operations, if present, are wired in the object implementation. In this work, we formalize the notion of a validated object, decoupling the object operations and properties from the validation procedure. We consider two types of objects, satisfying different levels of consistency: the validated totally-ordered object, offering a total ordering of its operations, and its weaker variant, the validated regular object. We provide conditions under which it is possible to implement these objects. In particular, we show that crash-tolerant implementations of validated regular objects are always possible in an asynchronous system with a majority of correct processes. However, for validated totally-ordered objects, consensus is always required if a property of the object we introduce in this work, persistent validity, does not hold. Persistent validity combined with another new property, persistent execution, allows consensus-free crash-tolerant implementations of validated totally-ordered objects. We demonstrate the utility of validated objects by considering several applications conforming to our formalism.
READ FULL TEXT