diff --git a/src/main/java/fucoin/Main.java b/src/main/java/fucoin/Main.java
index 2a6e947a169ad4b78333d4dd8519b55b49a02a9b..3d9aee4dc1624be257d4e686ba92627b5e4325d5 100644
--- a/src/main/java/fucoin/Main.java
+++ b/src/main/java/fucoin/Main.java
@@ -24,7 +24,7 @@ import java.util.*;
 
 
 public class Main {
-
+    
     private static ActorSystem cSystem;
 
     static {
diff --git a/src/main/java/fucoin/actions/transaction/ActionCommitDistributedCommittedTransfer.java b/src/main/java/fucoin/actions/transaction/ActionCommitDistributedCommittedTransfer.java
index 6c4b4802bf2eec96adc231fa770ecab65c37cbd0..1d1a7b2cb376b5ba83ffa9f6708d049b8a350a02 100644
--- a/src/main/java/fucoin/actions/transaction/ActionCommitDistributedCommittedTransfer.java
+++ b/src/main/java/fucoin/actions/transaction/ActionCommitDistributedCommittedTransfer.java
@@ -42,11 +42,6 @@ public class ActionCommitDistributedCommittedTransfer extends ClientAction {
         wallet.addLogMsg("ActionCommitDistributedCommittedTransfer is granted? " + granted);
         if (granted) {
 
-            Integer sourceAmount = wallet.amounts.getOrDefault(source, 0);
-            Integer targetAmount = wallet.amounts.getOrDefault(target, 0);
-            wallet.amounts.put(source, sourceAmount - amount);
-            wallet.amounts.put(target, targetAmount + amount);
-
             if (source.compareTo(self) == 0) {
                 wallet.setAmount(wallet.getAmount() - amount);
                 wallet.addTransactionLogMessageSuccess("Sent " + amount + " FUC to " + target.path().name());
@@ -58,6 +53,12 @@ public class ActionCommitDistributedCommittedTransfer extends ClientAction {
         } else {
             wallet.addLogMsg("abort transaction with id" + id);
 
+            // rollback
+            Integer sourceAmount = wallet.amounts.getOrDefault(source, 0);
+            Integer targetAmount = wallet.amounts.getOrDefault(target, 0);
+            wallet.amounts.put(source, sourceAmount + amount);
+            wallet.amounts.put(target, targetAmount - amount);
+
             if (source.compareTo(self) == 0) {
                 wallet.addTransactionLogMessageFail("Failed to send " + amount + " FUC to " + target.path().name() + " (Commit has not been granted)");
             }
diff --git a/src/main/java/fucoin/actions/transaction/ActionPrepareDistributedCommittedTransfer.java b/src/main/java/fucoin/actions/transaction/ActionPrepareDistributedCommittedTransfer.java
index 7e7de88bf5a58168b49d67a333dedd266fe90cb7..bb961e89fc1db5c4ab45b81f20a1905d2d97a3f2 100644
--- a/src/main/java/fucoin/actions/transaction/ActionPrepareDistributedCommittedTransfer.java
+++ b/src/main/java/fucoin/actions/transaction/ActionPrepareDistributedCommittedTransfer.java
@@ -32,6 +32,13 @@ public class ActionPrepareDistributedCommittedTransfer extends Transaction {
                         //sender have enough money
                         && wallet.amounts.getOrDefault(source, 0) >= amount));
 
+        // precautionly update own ledger to prevent double spending (respectively agreeing)
+        Integer sourceAmount = wallet.amounts.getOrDefault(source, 0);
+        Integer targetAmount = wallet.amounts.getOrDefault(target, 0);
+        wallet.amounts.put(source, sourceAmount - amount);
+        wallet.amounts.put(target, targetAmount + amount);
+
+
         sender.tell(new ActionPrepareDistributedCommittedTransferAnswer(source, target, amount, timestamp, granted, id), self);
     }