# Reliable Integrity Preservation Analysis of Video Contents with Support of Blockchain Systems
## 4 Evaluation
### Implemented Software Tool  
The proposed scheme is implemented into a software tool (The source codes of our implemented tool can be found at the github site, [[https://github.com/wanlee02/[PERSON]_WhereCamFrom](https://github.com/wanlee02/[PERSON]_WhereCamFrom)]([https://github.com/wanlee02/[PERSON]_WhereCamFrom](https://github.com/wanlee02/[PERSON]_WhereCamFrom)), accessed on 15 August 2022.). The software modules in the front-end server are implemented with the Javascript and HTML languages and managed by the Nodejs package. The software modules in the back-end blockchain system are implemented with the Solidity language, constructed in the form of smart contracts, and managed by the Truffle package. As mentioned in Section 3, the software codes in the blockchain systems are constructed as digital programming codes called smart contracts. Each smart contract has the maximum size constraint: 24 Kbytes on bytecode. So the software codes are divided into 20 modules and each module is implemented into a single smart contract. The 20 smart contract modules are connected with links to their addresses in the blockchain system. Five smart contracts store signature databases of camera devices and five smart contracts store signature databases of video editing tools. The remaining 10 smart contracts compare the extracted signature with two databases and searching the stored result with the transferred hash value. Figure 7 shows the graphic user interface for the main function of the integrity analysis mechanism, explained in Section 3.1. It is the output display of Chrome browser that is operated by the software modules in the front-end server with an IP address of 201.121.139.90 and a port number of 8080. The button \"File Open\" starts the uploading process of an input video file. The button \"Analysis\" starts the integrity analysis process of the input video file. The software modules in the front-end server just extracts the meta data of the input video file, excluding multimedia contents, and transmits it to the software modules in the back-end blockchain system. Then the software modules in the back-end blockchain system extracts the code characteristic from the transmitted metadata, compares it with the prepared signatures, and determines whether the integrity of the input video file is original, non-original or unknown. The integrity analysis result is displayed as _Original_, _Edited_ or _Unknown_ as shown in the bottom tree boxes of Figure 7, where _Edited_ represents non-original video contents. The result _Unknown_ occurs when the extracted codec characteristic is not found in the two signature databases, i.e., the signature databases are insufficiently prepared in advance. The decision of integrity analysis is transmitted to the software modules in the front-end server. The matched name of digital camera device or video editing tool is also transmitted. The module in the front-end server displays the transmitted decision as shown in Figure 7.  
Figure 7: Graphic User Interface for the integrity analysis mechanism. Figure 8 shows the graphic user interface for supplementary functions of the integrity analysis mechanism. The button \"Analysis & Store\" stores the integrity analysis result in the blockchain systems with a hash value of the input file. When storing the integrity analysis result is completed, the integrity analysis requests of the same input file can be replaced with the fast search operation, instead of extracting long metadata from the input file and comparing the metadata with prepared signatures. The button \"Search\" starts the search operation for the stored integrity analysis result with a 32-bytes hash value of the input file. Figure 9 shows the graphic user interface for the function of integrity preservation trace between an original file and its retouched file, explained in Section 3.2. The button \"File Open\" provides the uploading process of the original video file and its retouched non-original video file.