title: Durable network communication dilemma
body: <p>Lets imagine that we have a bank and an ATM. They communicate over network, which could fail. Is it possible to create a scenario, where communication between them is 100% durable. In this case it means, that:</p>
  
  <pre><code>client withdrawn physical amount of money
  &lt;=&gt;
  account balance updated accordingly
  </code></pre>
  
  <p>Let's check couple of scenarios:</p>
  
  <ul>
  <li>ATM sends a requests, bank sends a confirmation. Confirmation get lost, bank updated account but client haven't got the money.</li>
  <li>(if bank awaits confirmation from ATM to update balance) ATM sends a requests, bank sends a confirmation, ATM sends ack for reception. Ack got lost. ATM issued money, but bank never updated an account.</li>
  </ul>
  
  <p>So I never could create a solution, where failing network would not prevent money from getting lost on either side.</p>
  
  <p><strong>Please, advise.</strong></p>