This document describes the two-phase commit protocol, which is used to ensure atomicity in distributed transactions. It involves two phases - a voting phase where participants vote to commit or abort, and a commit phase where the coordinator decides whether to commit or abort based on the votes. The protocol specifies the steps each participant and coordinator take to complete the transaction. It also discusses optimizations and how exceptions are handled.