Commit
- Acquire
- Sort write records
- Acquire their headers (CAS current value with transaction pointer)
- Read-check
- Check validity of read records
- Update transaction status to SUCCESSFUL (or FAILED)
- Release
- On success, replace data poiters in headers with pointers to shadow copies
- On failure, replace them with old values