using atomic transactions. If a card happens to not be owned by the trading user, the entire trade is being rolled back. Rollback behaviour is a bit weird though, since we have to rollback manually even in a managed transaction.