A data verification method comprising: receiving, by a blockchain device, a first set of root hashes from a security protocol device; generating, by the blockchain device a chain data string according to the first set of root hashes by performing a hashing and chaining operation, wherein the hashing and chaining operation generates the chain data string to comprise a plurality of data sets chained in a series manner, each of the plurality of data sets comprises a root hash of the first set of root hashes and a corresponding chain hash, a chain hash in a first one of the plurality of data sets is generated by hashing an initial chain hash, a chain hash in each of the plurality of data sets after the first one of the plurality of data sets is generated by hashing a former data set in the plurality of data sets; receiving, by the security protocol device, a read request that requests for reading K root hashes from the chain data string, wherein K is a positive integer larger than 1; in response to receiving the read request, reading, by the security protocol device, from the blockchain device a particular chain hash in a last data set of a data section of the chain data string, the data section consisting of K data sets of the plurality of data sets; reading, by the security protocol device, a second set of root hashes consisting of K-1 root hashes from a database device, each root hash of the second set of root hashes corresponds to a root of a binary tree stored in the database device in an off-chain manner; performing, by the security protocol device, the hashing and chaining operation on the second set of root hashes to determine a calculated chain hash; and verifying, by the security protocol device, correctness of K-1 binary trees stored in the database device to which the second set of root hashes corresponds by comparing the particular chain hash with the calculated chain hash. receiving, by a blockchain device, a first set of root hashes from a security protocol device; generating, by the blockchain device a chain data string according to the first set of root hashes by performing a hashing and chaining operation, wherein the hashing and chaining operation generates the chain data string to comprise a plurality of data sets chained in a series manner, each of the plurality of data sets comprises a root hash of the first set of root hashes and a corresponding chain hash, a chain hash in a first one of the plurality of data sets is generated by hashing an initial chain hash, a chain hash in each of the plurality of data sets after the first one of the plurality of data sets is generated by hashing a former data set in the plurality of data sets; receiving, by the security protocol device, a read request that requests for reading K root hashes from the chain data string, wherein K is a positive integer larger than 1; in response to receiving the read request, reading, by the security protocol device, from the blockchain device a particular chain hash in a last data set of a data section of the chain data string, the data section consisting of K data sets of the plurality of data sets; reading, by the security protocol device, a second set of root hashes consisting of K-1 root hashes from a database device, each root hash of the second set of root hashes corresponds to a root of a binary tree stored in the database device in an off-chain manner; performing, by the security protocol device, the hashing and chaining operation on the second set of root hashes to determine a calculated chain hash; and verifying, by the security protocol device, correctness of K-1 binary trees stored in the database device to which the second set of root hashes corresponds by comparing the particular chain hash with the calculated chain hash.