diff --git a/app/controllers/blockchain.js b/app/controllers/blockchain.js
index befbe364d47008079ab42b908494590684faa055..3c04c582217c7094f6d046b3d9ec1c355af46761 100644
--- a/app/controllers/blockchain.js
+++ b/app/controllers/blockchain.js
@@ -154,37 +154,29 @@ function BlockchainBinding (server) {
 
   this.hardship = function (req, res) {
     res.type('application/json');
-    var member = "";
-    var nextBlockNumber = 0;
-    async.waterfall([
-      function (next){
-        ParametersService.getPubkey(req, next);
-      },
-      function (pubkey, next){
-        member = pubkey;
-        server.dal.isMember(pubkey, next);
-      },
-      function (isMember, next){
-        if (!isMember)
-          next('Not a member');
-        else
-          BlockchainService.current(next);
-      },
-      function (current, next){
+    return co(function *() {
+      let nextBlockNumber = 0;
+      try {
+        let search = yield ParametersService.getSearchP(req);
+        let idty = yield IdentityService.findMemberWithoutMemberships(search);
+        if (!idty) {
+          throw 'Identity not found';
+        }
+        if (!idty.member) {
+          throw 'Not a member';
+        }
+        let current = yield BlockchainService.current();
         if (current) {
           nextBlockNumber = current ? current.number + 1 : 0;
         }
-        globalValidator(conf, blockchainDao(null, server.dal)).getTrialLevel(member, next);
-      }
-    ], function (err, nbZeros) {
-      if(err){
-        res.send(404, err);
-        return;
+        let nbZeros = yield globalValidator(conf, blockchainDao(null, server.dal)).getTrialLevel(idty.pubkey);
+        res.send(200, JSON.stringify({
+          "block": nextBlockNumber,
+          "level": nbZeros
+        }, null, "  "));
+      } catch(e) {
+        res.send(400, e);
       }
-      res.send(200, JSON.stringify({
-        "block": nextBlockNumber,
-        "level": nbZeros
-      }, null, "  "));
     });
   };
 
diff --git a/app/lib/streams/bma.js b/app/lib/streams/bma.js
index 9a30291d2defc0305102fdbe8e0ef9bf1c74787c..fc3dad18dba76407d7bf3ef00745bfee40ec58f8 100644
--- a/app/lib/streams/bma.js
+++ b/app/lib/streams/bma.js
@@ -69,7 +69,7 @@ module.exports = function(server, interfaces, httpLogs) {
   answerForGet( '/blockchain/block/:number',    blockchain.promoted);
   answerForGet( '/blockchain/blocks/:count/:from',    blockchain.blocks);
   answerForGet( '/blockchain/current',          blockchain.current);
-  answerForGet( '/blockchain/hardship/:pubkey', blockchain.hardship);
+  answerForGet( '/blockchain/hardship/:search', blockchain.hardship);
   answerForGet( '/blockchain/with/newcomers',   blockchain.with.newcomers);
   answerForGet( '/blockchain/with/certs',       blockchain.with.certs);
   answerForGet( '/blockchain/with/joiners',     blockchain.with.joiners);