| Here's how you can do this. You have 3 accounts: A, B and in-flight. 1. Debit A, Credit in-flight. 2. Credit B, Debit in-flight. If 1. fails, nothing happened and everything is consistent. If 2. fails, you know (because you have money left on in-flight), and you can retry later, or refund A. This way at no point your total balance decreases, so everything is always consistent. |
This isn't an easy-to-solve problem when it comes to distributed computing.