A Byzantine fault tolerance algorithm-based blockchain consensus method, comprising: initiating , by a first consensus node of a consortium blockchain, a consensus proposal, wherein the consensus proposal comprises a first proposal digest, and the first proposal digest is generated based on a transaction set that needs to be proposed and a first newest block hash maintained by the first consensus node; generating , by a second consensus node of the consortium blockchain in response to the consensus proposal, a second proposal digest based on a second newest block hash maintained by the second consensus node and the transaction set; detecting, by the second consensus node, whether the first proposal digest matches the second proposal digest; and if the first proposal digest does not match the second proposal digest, determining, by the second consensus node, one of the first consensus node and the second consensus node as a forked node and the other as a non-forked node, and skipping , by the second consensus node, consensus on the consensus proposal if the second consensus node determines that the first proposal digest does not match the second proposal digest, or otherwise participating, by the second consensus node, in consensus on the consensus proposal if the second consensus node determines that the first proposal digest matches the second proposal digest, wherein the first newest block hash and the second newest block hash are hash values of N blocks preceding newest blocks in distributed ledgers respectively maintained by the first consensus node and the second consensus node, and N is a positive integer. initiating , by a first consensus node of a consortium blockchain, a consensus proposal, wherein the consensus proposal comprises a first proposal digest, and the first proposal digest is generated based on a transaction set that needs to be proposed and a first newest block hash maintained by the first consensus node; generating , by a second consensus node of the consortium blockchain in response to the consensus proposal, a second proposal digest based on a second newest block hash maintained by the second consensus node and the transaction set; detecting, by the second consensus node, whether the first proposal digest matches the second proposal digest; and if the first proposal digest does not match the second proposal digest, determining, by the second consensus node, one of the first consensus node and the second consensus node as a forked node and the other as a non-forked node, and skipping , by the second consensus node, consensus on the consensus proposal if the second consensus node determines that the first proposal digest does not match the second proposal digest, or otherwise participating, by the second consensus node, in consensus on the consensus proposal if the second consensus node determines that the first proposal digest matches the second proposal digest, wherein the first newest block hash and the second newest block hash are hash values of N blocks preceding newest blocks in distributed ledgers respectively maintained by the first consensus node and the second consensus node, and N is a positive integer. <EOS>