Solution to the lost-update / mid-air-collision race condition that arises when multiple senders can change the same resource. The protocol adds a version parameter: a read returns the current version, and any change request carries the version the sender based its decision on. The receiver rejects the request if the version is stale, giving the sender an opportunity to re-read and retry from the beginning. Easy to apply to protocols and the recommended solution for many communication patterns, including DELETE operations with concurrent updaters.