A computer-implemented method for communicating shared blockchain data in a blockchain network comprising N nodes participating in the consensus of the blockchain network, where N equals to 3f + 1, 3f + 2, or 3f + 3, wherein f is the maximum number of faulty nodes that can be tolerated within the blockchain network, wherein the N nodes comprise at least f + 1 shared storage nodes and no more than 2f + 2 consensus nodes, the method comprising: sending , by a first consensus node of the consensus nodes of the blockchain network, current state information associated with a current block of the blockchain to the at least f + 1 shared storage nodes of the blockchain network for storage, wherein the first consensus node stores the current state information in a current state tree configured to include state information that corresponds to one or more account states of one or more accounts of the blockchain network that are updated or added due to transactions newly added to the current block, wherein the at least f + 1 shared storage nodes store each historic state information associated with every block of the blockchain as a historic state tree, wherein the historic state tree includes key-value pairs, KVPs, with values being account states of accounts associated with the blockchain network and keys being hash values of the corresponding account states, and wherein the consensus nodes of the blockchain network store each a current state tree but no historic state tree; sending , by the first consensus node, a first hash value to at least one of the at least f + 1 shared storage nodes for retrieving a first account state stored in the historic state tree; receiving , by the first consensus node, the first account state in response to sending the first hash value; and verifying , by the first consensus node, that the first account state is part of the blockchain based on the first hash value. sending , by a first consensus node of the consensus nodes of the blockchain network, current state information associated with a current block of the blockchain to the at least f + 1 shared storage nodes of the blockchain network for storage, wherein the first consensus node stores the current state information in a current state tree configured to include state information that corresponds to one or more account states of one or more accounts of the blockchain network that are updated or added due to transactions newly added to the current block, wherein the at least f + 1 shared storage nodes store each historic state information associated with every block of the blockchain as a historic state tree, wherein the historic state tree includes key-value pairs, KVPs, with values being account states of accounts associated with the blockchain network and keys being hash values of the corresponding account states, and wherein the consensus nodes of the blockchain network store each a current state tree but no historic state tree; sending , by the first consensus node, a first hash value to at least one of the at least f + 1 shared storage nodes for retrieving a first account state stored in the historic state tree; receiving , by the first consensus node, the first account state in response to sending the first hash value; and verifying , by the first consensus node, that the first account state is part of the blockchain based on the first hash value. <EOS>