The surging interest in blockchain has revitalized the search for efficient Byzantine fault-tolerant (BFT) protocols, which are used for blockchains to achieve consensus among replicated data blocks. Most existing BFT protocols perform well in fault-free cases, but they usually suffer from serious performance degradation when faults occur. In this paper, we present DBFT, a BFT protocol that realizes graceful performance degradation in normal cases. The major novelty of DBFT lies in the double-response mechanism, which lets replica nodes deterministically respond to clients twice: one is after the speculative execution phase and the other is after the commitment phase. The double-response mechanism can handle inconsistency in speculative execution, so as to alleviate performance degradation caused by faults. Moreover, DBFT does not involve clients in critical consensus operations so as to reduce the load of clients. The correctness properties, i.e., safety and liveness, of DBFT is rigorously proved. The performance of DBFT is evaluated via experiments and the results show that, DBFT outperforms similar BFT protocols obviously in normal cases.