Patent Publication Number: US-2020294048-A1

Title: Blockchain-based data verification method and apparatus, and electronic device

Description:
CROSS-REFERENCE TO RELATED APPLICATIONS 
     This application is a continuation of PCT Application No. PCT/CN2019/080021, filed on Mar. 28, 2019, which claims priority to Chinese Patent Application No. 201810713248.0, filed on Jun. 29, 2018, and each application is hereby incorporated by reference in its entirety. 
    
    
     TECHNICAL FIELD 
     One or more implementations of the present specification relate to the blockchain field, and in particular, to data verification methods and apparatuses, and electronic devices. 
     BACKGROUND 
     A blockchain technology, also referred to as a distributed ledger technology, is a new technology in which a plurality of computing devices participate in “accounting” to maintain a complete distributed database. The blockchain technology has been widely used in many fields because of its features such as decentralization, openness and transparency, and participation of each computing device in recording data in a database, and fast data synchronization among computing devices. 
     SUMMARY 
     The present specification provides a blockchain-based data verification method, including: obtaining a data identifier of target data published by a data provider in a blockchain, where the data identifier indicates a storage location of the target data in the blockchain; determining whether the target data has been stored in the blockchain based on the data identifier; if the target data has been stored in the blockchain, obtaining the target data from the storage location indicated by the data identifier, where the target data stored in the blockchain carries verification information used to verify authenticity of the target data; and verifying authenticity of the obtained target data based on the verification information, and outputting a verification result to a data verifier. 
     Optionally, the target data published by the data provider carries a graphic code generated based on the data identifier; and obtaining a data identifier of target data published by a data provider in a blockchain includes: scanning and parsing the graphic code to obtain the data identifier of the target data in the blockchain. 
     Optionally, the data identifier is a transaction hash value of a transaction of the target data; and determining whether the target data has been stored in the blockchain based on the data identifier includes: performing Simplified Payment Verification (SPV) for the transaction based on a transaction hash value of the transaction of the target data, to determine whether the transaction has been stored in the blockchain. 
     Optionally, verifying authenticity of the obtained target data based on the verification information includes: executing an installed verification program to verify authenticity of the obtained target data based on the verification information; or invoking a smart contract published in the blockchain, executing a verification program defined in the smart contract, and verifying authenticity of the obtained target data based on the verification information. 
     Optionally, the target data stored in the blockchain further includes auxiliary information related to the authenticity verification; and the verification information is a hash value obtained by performing a hash calculation based on original content of the target data and the auxiliary information; and verifying authenticity of the obtained target data based on the verification information includes: performing a hash calculation on the original content of the target data and the auxiliary information to obtain a hash value; determining whether the calculated hash value is the same as a hash value carried in the target data stored in the blockchain; and if yes, determining that the obtained target data passed the authenticity verification, or if not, determining that the obtained target data has failed to pass the authenticity verification. 
     Optionally, the auxiliary information includes any one of or a combination of at least two of the following: an identifier of a data uploader; an upload timestamp of the target data; or an upload location of the target data. 
     Optionally, the method includes the following steps: outputting the target data obtained from the storage location indicated by the data identifier to the data verifier, so that the data verifier compares the outputted target data with the target data published by the data provider. 
     The present specification further provides a blockchain-based data verification apparatus, including: a first acquisition module, configured to obtain a data identifier of target data published by a data provider in a blockchain, where the data identifier indicates a storage location of the target data in the blockchain; a determining module, configured to determine whether the target data has been stored in the blockchain based on the data identifier; a second acquisition module, configured to: if the target data has been stored in the blockchain, obtain the target data from the storage location indicated by the data identifier, where the target data stored in the blockchain carries verification information used to verify authenticity of the target data; and a verification module, configured to: verify authenticity of the obtained target data based on the verification information, and output a verification result to a data verifier. 
     Optionally, the target data published by the data provider carries a graphic code generated based on the data identifier; and the first acquisition module is configured to: scan and parse the graphic code to obtain the data identifier of the target data in the blockchain. 
     Optionally, the data identifier is a transaction hash value of a transaction of the target data; and the determining module is configured to: perform SPV for the transaction based on a transaction hash value of the transaction of the target data, to determine whether the transaction has been stored in the blockchain. 
     Optionally, the verification module is configured to: execute an installed verification program to verify authenticity of the obtained target data based on the verification information; or invoke a smart contract published in the blockchain, execute a verification program defined in the smart contract, and verify authenticity of the obtained target data based on the verification information. 
     Optionally, the target data stored in the blockchain further includes auxiliary information related to the authenticity verification; and the verification information is a hash value obtained by performing a hash calculation based on original content of the target data and the auxiliary information; and the verification module is further configured to: perform a hash calculation on the original content of the target data and the auxiliary information to obtain a hash value; determine whether the calculated hash value is the same as a hash value carried in the target data stored in the blockchain; and if yes, determine that the obtained target data passed the authenticity verification, or if not, determine that the obtained target data has failed to pass the authenticity verification. 
     Optionally, the auxiliary information includes any one of or a combination of at least two of the following: an identifier of a data uploader; an upload timestamp of the target data; or an upload location of the target data. 
     Optionally, the second acquisition module is further configured to: output the target data obtained from the storage location indicated by the data identifier to the data verifier, so that the data verifier compares the outputted target data with the target data published by the data provider. 
     The present specification further provides an electronic device, including: a processor; and a memory, configured to store machine executable instructions; where by reading and executing the machine executable instructions that are stored in the memory and that correspond to a control logic for blockchain-based data verification, the processor is enabled to: obtain a data identifier of target data published by a data provider in a blockchain, where the data identifier indicates a storage location of the target data in the blockchain; determine whether the target data has been stored in the blockchain based on the data identifier; if the target data has been stored in the blockchain, obtain the target data from the storage location indicated by the data identifier, where the target data stored in the blockchain carries verification information used to verify authenticity of the target data; and verify authenticity of the obtained target data based on the verification information, and output a verification result to a data verifier. 
     According to the previously described technical solution, on one hand, it is determined, based on the data identifier published by the data provider, whether the target data has been stored in the blockchain, and authenticity of the information published by the data provider can be verified, so that the data verifier can quickly identify a false data identifier that is published by the data provider and that does not correspond to any data storage record in the blockchain. 
     On the other hand, after it is determined that the target data has been stored in the blockchain, authenticity verification is performed on the target data in the blockchain based on the verification information carried in the target data stored in the blockchain, so that the data verifier can determine whether the content of the target data in the blockchain has been tampered with, and quickly identify abnormal data. 
    
    
     
       BRIEF DESCRIPTION OF DRAWINGS 
         FIG. 1  is a schematic diagram illustrating a blockchain-based data verification method, according to an example implementation; 
         FIG. 2  is a diagram illustrating a consortium blockchain, according to an example implementation; 
         FIG. 3  is a schematic structural diagram illustrating an electronic device, according to an example implementation; and 
         FIG. 4  is block diagram illustrating a blockchain-based data verification apparatus, according to an example implementation. 
     
    
    
     DESCRIPTION OF IMPLEMENTATIONS 
     As the level of social digitalization increases, how to connect the real world and the digital world has become a key concern when the Internet goes deeper into more fields of life and industries. 
     For example, in a typical scenario, some products are sold on an e-commerce website, and because the users can only see some pictures (digital information) on the website, it is necessary to convince consumers that the digital information corresponds to a product in the real world in actual applications. 
     In view of this, the present specification provides a technical solution to verify authenticity of the digital information stored in the distributed database of the blockchain. 
     During implementation, a standard data storage format can be defined for the target data, and the target data is uploaded by the uploading client to the blockchain node device accessible by the uploading client according to the defined data storage format. The defined data storage format can include verification information used to verify authenticity of the target data. 
     After receiving the target data uploaded by the uploading client, the node device can publish the target data in the blockchain, and store the target data in the distributed database of the blockchain after the consensus processing among the node devices in the blockchain. 
     After the target data is successfully stored in the distributed database of the blockchain, the node device in the blockchain can return a data identifier indicating the storage location of the target data in the blockchain to the data provider through the uploading client. For example, in actual applications, the data identifier can specifically be a transaction hash value of a transaction of the target data. 
     Further, after the target data is successfully stored in the distributed database of the blockchain, the data provider can publish the target data and the data identifier of the target data in the blockchain returned by the node device in the blockchain, for example, through a website. 
     After viewing the target data published by the data provider and the data identifier of the target data in the blockchain, the data verifier can verify, through the verification client, authenticity of the target data published by the data provider. 
     First, the verification client can obtain the data identifier published by the data provider, and verify, based on the data identifier, whether the target data has been stored in the distributed database of the blockchain. 
     Further, if it is verified that the target data has been stored in the distributed database of the blockchain, the target data stored in the blockchain can be obtained from the storage location indicated by the data identifier, and then authenticity verification is performed on the target data based on the verification information carried in the target data, and a verification result is output to the data verifier by the verification client. 
     According to the previously described technical solution, on one hand, it is determined, based on the data identifier published by the data provider, whether the target data has been stored in the blockchain, and authenticity of the information published by the data provider can be verified, so that the data verifier can quickly identify a false data identifier that is published by the data provider and that does not correspond to any data storage record in the blockchain. 
     On the other hand, after it is determined that the target data has been stored in the blockchain, authenticity verification is performed on the target data in the blockchain based on the verification information carried in the target data stored in the blockchain, so that the data verifier can determine whether the content of the target data in the blockchain has been tampered with, and quickly identify abnormal data. 
     The following describes the present specification by using the implementations and with reference to the specific application scenarios. 
     Referring to  FIG. 1 ,  FIG. 1  illustrates a blockchain-based data verification method, according to an implementation of the present specification. The method is applied to a verification client in a blockchain and includes the following steps: 
     Step  102 : Obtain a data identifier of target data published by a data provider in a blockchain, where the data identifier indicates a storage location of the target data in the blockchain. 
     Step  104 : Determine whether the target data has been stored in the blockchain based on the data identifier. 
     Step  106 : If the target data has been stored in the blockchain, obtain the target data from the storage location indicated by the data identifier, where the target data stored in the blockchain carries verification information used to verify authenticity of the target data. 
     Step  108 : Verify authenticity of the obtained target data based on the verification information, and output a verification result to a data verifier. 
     The target data can specifically include any form of digital information that can be stored in a blockchain, that can be released through the Internet, and that corresponds to an object in the real world. 
     For example, in one scenario, the target data can specifically be a product quality inspection report issued by a brick-and-mortar quality inspection organization, and the merchant can release a picture of the product together with a picture of the product quality inspection report of the product when issuing the product through an electronic commerce platform. 
     The data identifier can specifically include any form of identification information indicating a storage location of the data stored in the blockchain. 
     For example, in an illustrated implementation, in a distributed database of a blockchain, data is typically recorded in a transaction, stored in a block in the blockchain, and the transaction stored in the block is typically organized into a Merkle tree based on the transaction hash value of the transaction. Therefore, to facilitate data retrieval, the data identifier can specifically be a transaction hash value of a transaction of data. The transaction of the data can be quickly located based on a transaction hash value. Of course, in actual applications, the data identifier can specifically be a transaction index of a transaction of the data. 
     The blockchain described in the present specification can specifically include any type of blockchain network. 
     For example, in an illustrated implementation, the blockchain can specifically be a consortium blockchain including a plurality of merchants, a plurality of quality inspection organizations, and a plurality of consumers. As a data uploader, the quality inspection organization can access any node device in the consortium blockchain through the uploading client, and upload the product quality inspection report to the node device in the form of digital information. The node device initiates consensus processing for the product quality inspection report in the blockchain, and stores the product quality inspection report in the distributed database of the blockchain after the consensus is passed. As a data provider, a merchant can release, through an electronic commerce platform, a product quality inspection report issued by a quality inspection organization. When viewing the product quality inspection report released by the merchant, the consumer can also initiate authenticity verification for the product quality inspection report by accessing any node device in the consortium blockchain through the verification client. 
     The following describes the technical solution of the present specification in detail based on an example in which the target data is a product quality inspection report, the blockchain is the previously described consortium blockchain including a plurality of merchants, a plurality of quality inspection organizations, and a plurality of consumers. 
     Referring to  FIG. 2 ,  FIG. 2  is a diagram illustrating a consortium blockchain, according to the present specification. 
     As shown in  FIG. 2 , a blockchain operator can pre-establish a consortium blockchain including a plurality of node devices. Merchants, product quality inspection organizations, and consumers can register in the consortium blockchain, and access the consortium blockchain as members of the consortium blockchain after obtaining legal identities in the consortium blockchain (for example, obtaining private key/public key pairs assigned by the consortium blockchain). 
     A specific process in which a merchant, a product quality inspection organization, and a consumer are registered in a consortium blockchain and join the consortium blockchain as members of the consortium blockchain is omitted in the present specification for simplicity. 
     Referring to  FIG. 2 , as a data uploader, the product quality inspection organization can access a node device in a consortium blockchain through an uploading client, and upload a product quality inspection report issued for a product entrusted by a merchant to the node device in the form of digital information. 
     As a data verifier, a consumer can access a node device in a consortium blockchain through a verification client. When viewing a product quality inspection report released by a merchant, the consumer can initiate authenticity verification for the product quality inspection report through the verification client. 
     It is worthwhile to note that the uploading client and the verification client each can be a web client (such as a blockchain browser) or a pre-installed application (APP), which is not specifically limited in the present specification. 
     In the present specification, the product quality inspection organization can define a standard data storage format for a product quality inspection report to be uploaded. After the product quality inspection organization issues a product quality inspection report for the product entrusted by the merchant, the product quality inspection report can be organized into a standard data storage format, signed based on the private key held by the product quality inspection organization, and then uploaded to the blockchain node device accessible by the uploading client. 
     The data storage format defined for the product quality inspection report can include three parts: original content of the data, verification information, and auxiliary information. The verification information is specifically used to verify authenticity of the data. The auxiliary information can be an auxiliary parameter related to the authenticity verification. 
     In an illustrated implementation, the verification information can be a hash value obtained by performing a hash calculation based on the original content of the product quality inspection report and the auxiliary information. The auxiliary information can include one of or a combination of at least two of the following: an identity of a data uploader, an upload timestamp, an upload location, etc. 
     In this case, the data storage format defined for the product quality inspection report can be shown in Table 1. 
     
       
         
           
               
               
               
             
               
                 TABLE 1 
               
               
                   
               
               
                 Number 
                 Field name 
                 Field content 
               
               
                   
               
             
            
               
                 1 
                 Content field 
                 Original content of data 
               
               
                 2 
                 Uploader identity field 
                 Identity of an uploader 
               
               
                 3 
                 Upload time field 
                 Upload timestamp of the data 
               
               
                 4 
                 Upload location field 
                 Upload location of the data 
               
               
                 5 
                 Verification information field 
                 A hash value calculated based 
               
               
                   
                   
                 on fields 1-4 
               
               
                   
               
            
           
         
       
     
     The specific form of the content field entry is not specifically limited in the present specification. For example, it can be in the form of a picture. 
     The uploader identity field entry can be any form of information indicating the identity of the uploader, for example, an identity card number, fingerprint information, or a digital certificate signature. 
     The upload time field entry should be based on the generally accepted world time, so as to prevent ambiguity caused by inconsistency in understanding the same time between people in different time zones. For example, people in the Beijing time zone and people in the New York time zone may have inconsistent understanding of the same time. 
     The address description in the upload location field should not cause ambiguity. For example, there is “Zhongshan Road” in many cities. The most appropriate way is to use unambiguous address expression such as longitude and latitude coordinates, GeoHash, etc. 
     In the present specification, after receiving the product quality inspection report uploaded by the uploading client, the node device in the consortium blockchain can first verify the signature of the product quality inspection report based on the public key corresponding to the private key held by the product quality inspection organization. If the signature verification is passed, it indicates that the product quality inspection report is the information uploaded by the legitimate product quality inspection organization. In this case, the target data can be published in the blockchain, and the product quality inspection report can be stored in the distributed database of the blockchain after the consensus processing among the node devices in the consortium blockchain is complete. 
     The consensus algorithm used in the consortium blockchain is not specifically limited in the present specification. For example, mainstream consensus algorithms suitable for use in a consortium blockchain, such as PBFT, can be used, or a related consensus algorithm can be independently developed by the operator of the consortium blockchain. 
     When the product quality inspection report is successfully stored in the distributed database of the blockchain, the node device in the blockchain can return a data identifier indicating the storage location of the product quality inspection report in the blockchain to the product quality inspection organization through the uploading client. 
     For example, in an illustrated implementation, the data identifier can specifically be a transaction hash value of a transaction of the product quality inspection report. 
     In the present specification, the product quality inspection organization can also send the generated product quality inspection report and the data identifier returned by the node device in the consortium blockchain to the merchant. After receiving the product quality inspection report and the data identifier that are sent by the product quality inspection organization, the merchant can publish the product quality inspection report and the data identifier to a consumer through a website. For example, a picture of a product can be published to a consumer together with a picture of the product through an electronic merchant platform. 
     After viewing the product quality inspection report released by the merchant and the data identifier of the product quality inspection report in the blockchain, the consumer can verify authenticity of the product quality inspection report released by the merchant through the verification client. 
     In an illustrated implementation, after viewing the data identifier of the product quality inspection report in the blockchain that is published by the merchant, the consumer can manually enter the data identifier on the user interface provided by the verification client. The verification client can obtain the data identifier manually input by the user, and then initiate, based on the obtained data identifier, verification of the product quality inspection report. 
     In another illustrated implementation, when publishing the product quality inspection report, the merchant can add a graphic code (such as a two-dimensional code or a bar code) of the product quality inspection report to the released product quality inspection report. 
     For example, if the data identifier is a transaction hash value of a transaction of the product quality inspection report, the merchant can generate a corresponding graphic code by using a character string corresponding to the transaction hash value as coding information, and then attach the generated graphic code to the picture of the released product quality inspection report. 
     In this case, the consumer can scan and parse the graphic code by using the verification client to obtain the data identifier carried in the graphic code, and then initiate, based on the parsed data identifier, verification of the product quality inspection report. 
     In the present specification, after the verification client obtains the data identifier of the product quality inspection report in the consortium blockchain that is published by the merchant, it can be determined, based on the data identifier, whether the product quality inspection report has been stored in the distributed database of the consortium blockchain. 
     In an illustrated implementation, the data identifier is a transaction hash value of the transaction of the product quality inspection report, and Simplified Payment Verification (SPV) can be performed on the transaction based on the transaction hash value, to determine whether the transaction has been stored in the distributed database of the consortium blockchain. 
     SPV is a protocol used to verify whether a transaction already exists in the distributed database of the blockchain. The following describes in detail a process of performing SPV on the transaction based on the transaction hash. 
     In actual applications, a block in a blockchain generally includes two parts: a block header and a block body (including a transaction). A transaction recorded in a block is generally organized into a Merkle tree in the form of a transaction hash value. 
     The detailed process of organizing a hash value of a transaction recorded in a Merkle tree is not specifically limited in the present specification. A person skilled in the art can implement the technical solution in the present specification by referring to related technologies. 
     When SPV is performed on a transaction based on a transaction hash value, a Merkle verification path of the transaction including a target block of the transaction in a Merkle tree can be obtained first. 
     The Merkle verification path is specifically a path formed by sibling nodes (that is, neighboring nodes) that are obtained by traversing the Merkle tree based on the transaction value of a transaction. When SPV is performed on a transaction, the Merkle verification path of the transaction can be used as a calculation parameter for inversely calculating a hash value corresponding to the root node of the Merkle tree at which the transaction is located. 
     It is worthwhile to note that the Merkle verification path can be manually submitted by the user, or can be proactively queried from the blockchain by the verification client. 
     For example, when the verification client proactively queries the Merkle verification path of the transaction in the Merkle tree including the target block of the transaction, the verification client can first locate the target block in which the transaction is located based on the transaction hash value of the transaction. 
     A process of locating a block in which a transaction is located based on a transaction hash value is omitted in the present specification for simplicity. For example, in the related art, a Bloom filter can be deployed to locate a block in which a hash value of a transaction is located. After locating the block in which the transaction is located, the Merkle verification path of the transaction in the Merkle tree can be further found from the located Merkle tree of the block. 
     In the present specification, after obtaining the Merkle verification path of the transaction in the Merkle tree including the target block of the transaction, the hash value of the block header of the target block (that is, the hash value of the root node of the Merkle tree of the target block) can be calculated based on the calculation procedure specified by the SPV protocol. Then, it can be determined whether the calculated hash value of the block header of the target block matches the hash value stored in the block header of the target block. If the calculated hash value of the block header of the target block matches the hash value stored in the block header of the target block, it can be determined that the transaction is included in the target block; that is, the product quality inspection report has been successfully stored in the distributed database of the consortium blockchain. Alternatively, if the calculated hash value of the block header of the target block does not match the hash value stored in the block header of the target block, it indicates that the transaction is not included in the target block; that is, the product quality inspection report is not successfully stored in the distributed database stored in the consortium blockchain. 
     In the present specification, when it is determined, through the previously described implementation process, that the product quality inspection report has been stored in the distributed database of the consortium blockchain, the product quality inspection report can be further obtained from the storage location indicated by the data identifier. 
     For example, if the data identifier is still the transaction hash value of the transaction of the product quality inspection report, the corresponding transaction can be located based on the transaction hash value, and then the product quality inspection report recorded in the transaction can be read from the located transaction. 
     After the product quality inspection report is obtained from the storage location indicated by the data identifier, the verification information carried in the standard storage format of the product quality inspection report can be further read, and then authenticity of the product quality inspection report obtained from the distributed database of the consortium blockchain can be verified based on the verification information. 
     In the present specification, the authenticity verification is specifically to verify whether the original content recorded in the product quality inspection report is tampered with. 
     For example, in some scenarios, after a product quality inspection report is issued by a product quality inspection organization, the product quality inspection report can be organized into a standard data storage format and then sent to a merchant for uploading. In this case, some less reputable merchants can maliciously modify certain fields in the product quality inspection report before uploading the report. 
     For another example, in other scenarios, the product quality inspection report can be illegally intercepted during transmission, and certain fields in the report can be maliciously modified. 
     By introducing the process for verifying authenticity of the product quality inspection report in the blockchain, consumers can quickly identify malicious modifications of the product quality inspection report listed above. 
     In the present specification, when the verification client verifies authenticity of the product quality inspection report obtained from the distributed database of the consortium blockchain based on the verification information carried in the product quality inspection report, the verification client can specifically execute a locally installed verification program, or can implement the verification by remotely invoking a smart contract deployed in the consortium blockchain. 
     In an illustrated implementation, a verification program can be installed on the verification client to verify authenticity of the product quality inspection report. 
     For example, the authenticity verification rule of the product quality inspection report can be released by the product quality inspection organization serving as a data uploader, and the developer of the verification client can develop corresponding program execution code (for example, a function corresponding to the execution logic of the verification rule) in the software environment of the verification client based on the verification rule published by the product quality inspection organization. 
     When the verification client determines that the product quality inspection report has been stored in the distributed database of the consortium blockchain, and obtains the product quality inspection report stored in the consortium blockchain, the verification client can read the verification information from the obtained product quality inspection report. For example, when the data storage format shown in Table 1 is used, the verification client can read the verification information from field 5 shown in Table 1. 
     Further, the verification program installed locally can be executed to verify authenticity of the product quality inspection report obtained from the consortium blockchain based on the read verification information. 
     In an illustrated implementation, a smart contract can alternatively be pre-deployed in the consortium blockchain, and a verification procedure for verifying authenticity of the product quality inspection report is defined in the smart contract. 
     For example, an operator of a consortium blockchain can develop corresponding contract code based on an authenticity verification rule for the product quality inspection report released by a product quality inspection organization as a data uploader, deploy a smart contract, and then publish the smart contract in the consortium blockchain. Then, a node device in the consortium blockchain can perform consensus processing on the smart contract, and store the smart contract in a distributed database of the consortium blockchain after the consensus processing is complete, so that a client accessing the consortium blockchain can remotely invoke the smart contract. 
     When the verification client determines that the product quality inspection report has been stored in the distributed database of the consortium blockchain, and obtains the product quality inspection report stored in the consortium blockchain, the verification client can read the verification information from the obtained product quality inspection report, construct a transaction based on the verification information, submit the transaction to the smart contract, initiate revocation of the smart contract, execute a verification program defined in the smart contract, and verify authenticity of the product quality inspection report obtained from the consortium blockchain based on the read verification information. 
     In an illustrated implementation, for example, the verification information is a hash value obtained by performing a hash calculation based on the original content of the product quality inspection report and the auxiliary information carried in the data storage format of the product quality inspection report. In this case, the verification program installed locally on the verification client is executed; or the smart contract is invoked remotely, and the verification program defined in the smart contract is executed. When authenticity verification is performed on the product quality inspection report, the hash value can be obtained through re-calculation based on the original content of the product quality inspection report and the auxiliary information carried in the data storage format of the product quality inspection report obtained from the consortium blockchain. 
     Further, the calculated hash value can be matched with the hash value that is carried in the data storage format of the product quality inspection report as the verification information, to determine whether the calculated hash value is the same as the hash value that is carried in the data storage format of the product quality inspection report as the check information. If the two are the same, it indicates that the content carried in the product quality inspection report stored in the consortium blockchain is not tampered with, and the product quality inspection report passes the authenticity verification; of course, if the two are different, it indicates that the content carried in the product quality inspection report stored in the consortium blockchain has been tampered with, and the product quality inspection report does not pass the authenticity verification. 
     After the authenticity verification for the product quality inspection report is complete, the authenticity verification result can be output by the verification client to a consumer. Then, the consumer can determine whether to purchase the product by referring to the authenticity verification result output by the verification client for the product quality inspection report. 
     In the present specification, the product quality inspection report obtained from the consortium blockchain can also be output to a consumer through the verification client, so that the consumer can compare the stored product quality inspection report in the consortium blockchain with the product quality inspection report released by the merchant. 
     In this way, the consumer can visually check whether the information recorded in the product quality inspection report released by the merchant is consistent with the information recorded in the product quality inspection report uploaded by the product quality inspection organization. 
     In actual applications, the product quality inspection report can be output to the consumer immediately after being obtained from the consortium blockchain; or the product quality inspection report can be selectively outputted to a consumer after the authenticity verification for the product quality inspection report is complete and the authenticity verification result is output to the consumer by the verification client. 
     For example, when the authenticity verification result indicates that the product quality inspection report has passed the authenticity verification, the product quality inspection report obtained from the consortium blockchain can be output and displayed to the consumer. On the contrary, if the product quality inspection report does not pass the authenticity verification, the product quality inspection report is no longer output to the consumer. In this way, it is ensured that the consumer can only view the product quality inspection report that has passed the authenticity verification. 
     It is worthwhile to note that the product quality inspection report in the above implementation is only an example of the target data. Clearly, in actual applications, the target data can alternatively be data in other forms other than the product quality inspection report. When the target data is data in another form other than a product quality inspection report, a person skilled in the art can implement the technical solution described in the present specification by referring to the implementation process described in the implementations. Details are omitted in the present specification for simplicity. 
     According to the previously described technical solution, on one hand, it is determined, based on the data identifier published by the data provider, whether the target data has been stored in the blockchain, and authenticity of the information published by the data provider can be verified, so that the data verifier can quickly identify a false data identifier that is published by the data provider and that does not correspond to any data storage record in the blockchain. 
     For example, if it is determined, based on the data identifier published by the merchant, that no product quality inspection report corresponding to the data identifier is stored in the blockchain, it indicates that the data identifier published by the merchant may be a false data identifier, that is, the product quality inspection report released by the merchant may not exist. 
     On the other hand, after it is determined that the target data has been stored in the blockchain, authenticity verification is performed on the target data in the blockchain based on the verification information carried in the target data stored in the blockchain, so that the data verifier can determine whether the content of the target data in the blockchain has been tampered with, and quickly identify abnormal data. 
     For example, if the product quality inspection report stored in the blockchain does not pass the authenticity verification, it indicates that the product quality inspection report can be illegally tampered with before or when the report is uploaded, so that the consumer can quickly identify the abnormality. 
     Corresponding to the previously described method implementations, the present specification further provides an implementation of a blockchain-based data verification apparatus. The implementations of the blockchain-based data verification apparatus in the present specification can be applied to an electronic device. The apparatus implementations can be implemented by using software, hardware, or a combination of software and hardware. The software implementation is used as an example. As a logical apparatus, the apparatus is formed by reading the corresponding computer program instructions in the non-volatile memory by the processor of the electronic device into the memory for execution. In terms of hardware,  FIG. 3  is a diagram illustrating a hardware structure of an electronic device in which a blockchain-based data verification apparatus is located. In addition to a processor, a memory, a network interface, and a non-volatile memory shown in  FIG. 3 , the electronic device can generally include other hardware based on other actual functions of the electronic device. Details are omitted here for simplicity. 
       FIG. 4  is a logical block diagram illustrating a blockchain-based data verification apparatus, according to an example implementation of the present specification. 
     Referring to  FIG. 4 , the blockchain-based data verification apparatus  40  can be applied to the electronic device shown in  FIG. 3 , and includes a first acquisition module  401 , a determining module  402 , a second acquisition module  403 , and a verification module  404 . 
     The first acquisition module  401  is configured to obtain a data identifier of target data published by a data provider in a blockchain, where the data identifier indicates a storage location of the target data in the blockchain. 
     The determining module  402  is configured to determine whether the target data has been stored in the blockchain based on the data identifier. 
     The second acquisition module  403  is configured to: if the target data has been stored in the blockchain, obtain the target data from the storage location indicated by the data identifier, where the target data stored in the blockchain carries verification information used to verify authenticity of the target data. 
     The verification module  404  is configured to: verify authenticity of the obtained target data based on the verification information, and output a verification result to a data verifier. 
     In this implementation, the target data published by the data provider carries a graphic code generated based on the data identifier; and the first acquisition module  401  is configured to: scan and parse the graphic code to obtain the data identifier of the target data in the blockchain. 
     In this implementation, the data identifier is a transaction hash value of a transaction of the target data; and the determining module  402  is configured to: perform SPV for the transaction based on a transaction hash value of the transaction of the target data, to determine whether the transaction has been stored in the blockchain. 
     In this implementation, the verification module  404  is further configured to: execute an installed verification program to verify authenticity of the obtained target data based on the verification information; or invoke a smart contract published in the blockchain, execute a verification program defined in the smart contract, and verify authenticity of the obtained target data based on the verification information. 
     In this implementation, the target data stored in the blockchain further includes auxiliary information related to the authenticity verification; and the verification information is a hash value obtained by performing a hash calculation based on original content of the target data and the auxiliary information; and the verification module  404  is further configured to: perform a hash calculation on the original content of the target data and the auxiliary information to obtain a hash value; determine whether the calculated hash value is the same as a hash value carried in the target data stored in the blockchain; and if yes, determine that the obtained target data passed the authenticity verification, or if not, determine that the obtained target data has failed to pass the authenticity verification. 
     In this implementation, the auxiliary information includes any one of or a combination of at least two of the following: an identifier of a data uploader; an upload timestamp of the target data; or an upload location of the target data. 
     In this implementation, the second acquisition module  403  is further configured to: output the target data obtained from the storage location indicated by the data identifier to the data verifier, so that the data verifier compares the outputted target data with the target data published by the data provider. 
     For the detailed implementation process of the functions and purposes of the modules in the apparatus, references can be made to the implementation process of the corresponding steps in the method, and details are omitted here for simplicity. 
     Because the apparatus implementation basically corresponds to the method implementation, for the related parts, references can be made to the description of the method implementation. The previously described apparatus implementation is merely an example, where the units described as separate parts can or does not have to be physically separate, and components displayed as units can or cannot be physical units, and can be located in one place or can be distributed on a plurality of network units. Based on the practical needs, some or all of these modules can be selected to implement the purpose of the present specification. A person of ordinary skill in the art can understand and implement the blockchain-based data processing apparatus without creative efforts. 
     The system, apparatus, module, or unit illustrated in the previously described implementations can be implemented by using a computer chip or an entity, or can be implemented by using a product with a certain function. A typical implementation device is a computer in the form of a personal computer, a laptop computer, a cellular phone, a camera phone, a smart phone, a personal digital assistant, a media player, a navigation device, an e-mail transceiver, a game console, a tablet computer, a wearable device, or any combination of at least two of these devices. 
     Corresponding to the previously described method implementation, the present specification further provides an implementation of an electronic device. The electronic device includes a processor and a memory configured to store a machine executable instruction, where the processor and memory are usually connected to each other through an internal bus. In other possible implementations, the electronic device can also include an external interface used to communicate with other devices or components. 
     In this implementation, by reading and executing the machine executable instructions that are stored in the memory and that correspond to a control logic for blockchain-based data verification, the processor is enabled to: obtain a data identifier of target data published by a data provider in a blockchain, where the data identifier indicates a storage location of the target data in the blockchain; determine whether the target data has been stored in the blockchain based on the data identifier; if the target data has been stored in the blockchain, obtain the target data from the storage location indicated by the data identifier, where the target data stored in the blockchain carries verification information used to verify authenticity of the target data; and verify authenticity of the obtained target data based on the verification information, and output a verification result to a data verifier. 
     In this implementation, the target data published by the data provider carries a graphic code generated based on the data identifier; and by reading and executing the machine executable instructions that are stored in the memory and that correspond to a control logic for blockchain-based data verification, the processor is enabled to: scan and parse the graphic code to obtain the data identifier of the target data in the blockchain. 
     In this implementation, the data identifier is a transaction hash value of a transaction of the target data; and by reading and executing the machine executable instructions that are stored in the memory and that correspond to a control logic for blockchain-based data verification, the processor is enabled to: perform SPV for the transaction based on a transaction hash value of the transaction of the target data, to determine whether the transaction has been stored in the blockchain. 
     In this implementation, by reading and executing the machine executable instructions that are stored in the memory and that correspond to a control logic for blockchain-based data verification, the processor is enabled to: execute an installed verification program to verify authenticity of the obtained target data based on the verification information; or invoke a smart contract published in the blockchain, execute a verification program defined in the smart contract, and verify authenticity of the obtained target data based on the verification information. 
     In this implementation, the target data stored in the blockchain further includes auxiliary information related to the authenticity verification; and the verification information is a hash value obtained by performing a hash calculation based on original content of the target data and the auxiliary information; and by reading and executing the machine executable instructions that are stored in the memory and that correspond to a control logic for blockchain-based data verification, the processor is enabled to: perform a hash calculation on the original content of the target data and the auxiliary information to obtain a hash value; determine whether the calculated hash value is the same as a hash value carried in the target data stored in the blockchain; and if yes, determine that the obtained target data passed the authenticity verification, or if not, determine that the obtained target data has failed to pass the authenticity verification. 
     In this implementation, by reading and executing the machine executable instructions that are stored in the memory and that correspond to a control logic for blockchain-based data verification, the processor is enabled to: output the target data obtained from the storage location indicated by the data identifier to the data verifier, so that the data verifier compares the outputted target data with the target data published by the data provider. 
     A person skilled in the art can easily figure out other implementations of the present specification after considering and practicing the present specification disclosed here. The present specification is intended to cover any variations, usage, or adaptations of the present specification that follow the general principles of the present specification and include common general knowledge or commonly used technical means in the art that are not disclosed in the present specification. The present specification and implementations are merely examples. The protection scope and spirit of the present specification are indicated by the following claims. 
     It should be understood that the present specification is not limited to the precise structures described above and illustrated in the accompanying drawings, and various modifications and changes can be made without departing from the scope thereof. The protection scope of the present specification should be defined by the appended claims. 
     The above descriptions are merely preferred implementations of one or more implementations of the present specification, and are not intended to limit the present specification. Any modification, equivalent replacement, improvement, etc., made without departing from the spirit and principles of the present specification shall fall within the protection scope of the present specification.