diff --git a/app/service/PeeringService.js b/app/service/PeeringService.js
index 970f114cfcb3f0862fb045394034af3cdfc0298b..5e72b3ddebb3f930ff6bdd4aaeba384b89243b3a 100644
--- a/app/service/PeeringService.js
+++ b/app/service/PeeringService.js
@@ -42,24 +42,37 @@ function PeeringService(server, pair, dal) {
       done = eraseIfAlreadyRecorded;
       eraseIfAlreadyRecorded = false;
     }
+    return that.submitP(peering, eraseIfAlreadyRecorded)
+    .then((res) => done(null, res))
+    .catch(done);
+  };
+
+  this.submitP = function(peering, eraseIfAlreadyRecorded, cautious){
     let thePeer = new Peer(peering);
     let sp = thePeer.block.split('-');
     let blockNumber = sp[0];
     let blockHash = sp[1];
     let sigTime = 0;
     let block;
+    let makeCheckings = cautious || cautious === undefined;
     return co(function *() {
-      let goodSignature = localValidator(null).checkPeerSignature(thePeer);
-      if (!goodSignature) {
-        throw 'Signature from a peer must match';
+      if (makeCheckings) {
+        let goodSignature = localValidator(null).checkPeerSignature(thePeer);
+        if (!goodSignature) {
+          throw 'Signature from a peer must match';
+        }
       }
       if (thePeer.block == constants.PEER.SPECIAL_BLOCK) {
         thePeer.statusTS = 0;
         thePeer.status = 'UP';
       } else {
         block = yield dal.getBlockByNumberAndHashOrNull(blockNumber, blockHash);
-        if (!block) {
+        if (!block && makeCheckings) {
           throw constants.PEER.UNKNOWN_REFERENCE_BLOCK;
+        } else if (!block) {
+          thePeer.block = constants.PEER.SPECIAL_BLOCK;
+          thePeer.statusTS = 0;
+          thePeer.status = 'UP';
         }
       }
       sigTime = block ? block.medianTime : 0;
@@ -84,10 +97,8 @@ function PeeringService(server, pair, dal) {
       peerEntity.hash = String(sha1(peerEntity.getRawSigned())).toUpperCase();
       yield dal.savePeer(peerEntity);
       let res = Peer.statics.peerize(peerEntity);
-      done(null, res);
       return res;
-    })
-      .catch(done);
+    });
   };
 
   var peerFifo = async.queue(function (task, callback) {
diff --git a/bin/ucoind b/bin/ucoind
index 92df68f223e7795c4cf1c4e684f2daee62968f6a..ff70da7dd8d7e750cc6376cffd5392268557ac41 100755
--- a/bin/ucoind
+++ b/bin/ucoind
@@ -156,7 +156,7 @@ program
         return Q.nfcall(node.network.peering.get)
           .then(function(peering){
             logger.info('Apply peering ...');
-            return Q.nfcall(server.PeeringService.submit, peering, ERASE_IF_ALREADY_RECORDED)
+            return server.PeeringService.submitP(peering, ERASE_IF_ALREADY_RECORDED, !program.nocautious)
               .then(function() {
                 logger.info('Applied');
                 return server.dal.getPeer(server.PeeringService.pubkey)