 Okay, I think it's now time, so I'd like to start my presentation. So, hello everyone, I'm Taku Shimosa from Hitachi. So today I'd like to present the verifying transactions in the Hyperledger Fabric Ledger with the blockchain verifier. So first of all, I'd like to start with the why we need a verification in the blockchain ledger. So the one reason would be that compliance to the regulations. So enterprise systems, especially the banking systems require some auditing that is required by the rules or the loads. So, and the second reason would be that adding some reliability to the smart contracts and the blockchain-based systems. So such kind of the additional checks on the past transactions with the data in the blockchain-based system will include that one is included the complex checks that need too much time to perform during that execution of the transaction or some checks that need comparison with external systems. Whether checks, the needed verification with the other data that became after the transactions are invoked. The third reason would be the detection of faults in the blockchain nodes. It is to detect some corruption of data that is caused by some hardware faults or the software bugs whether it is smart contracts or the blockchain platforms. So if that could happen, regularly the checking the contents of the ledger will detect such corruption and then we can do some fix on that corruption. So that to increase the availability of the blockchain nodes or the blockchain network which that appear is participating in. So to do this verification, we are developing the tool that is named the blockchain verifier, a tool to verify the blockchain ledgers. The target users of this tool will include the internal or external auditors or the blockchain network administrators. These two have three main functions. One is to verify the integrity of the ledgers and snapshots and compare them with those in the other peers so that it can detect local alteration of the ledgers or some local change or faults that is caused by some faults in the blockchain nodes. The second function is to allow application-specific logic to perform additional checks. I will explain it later, but it is to detect bugs or the flaws in the smart contract logic. What you are also additional checks required by the regulations such as the anti-money laundering checks that is required in the banking transferring systems. The third is to generate reports for the checks that is performed. And the current leader of this tool is supporting the Hyperledger Fabric version 1.4 and version 2.0 something. It is actually approved as one of the Hyperledger Labs and available at this URL. So please check it out later at this URL. This figure shows the example use case of this tool in the auditing scene. So the user and his auditor. The auditor can be internal. Internal means that they are in the independent section inside some organization. Or it can be external. That means that they can be in external organization which has some contact with some particular organization that is participating in the blockchain network. And they can do the check or the verification using this blockchain verifier. Either is periodically or continuously. Periodically means that that is in the case in the traditional auditing. Like performing these kinds of checks at the end of the quarter or the year or the half year or whatever, etc. But if this blockchain verifier is connected to the blockchain network, they can do the checks continuously. That is continuously flowing the transaction that is involved in the blockchain network into this tool. And this figure shows that input and output and the checks performed in this tool. So the input is obvious. That is a ledger of the blockchain. And the output is that the verification results or the report. That is what checks is performed with either this tool and what was the result for the checks. And the checks that performed in the blockchain verifier that includes it for the ones for the blocks or the ones for the transactions. So that includes for the blocks, this tool checks the hash values or the signatures for the blocks and the transactions. For the transactions, it includes the input versions or the invariance inside the transactions. And for the checks that is performed by the blockchain verifier, there are two types, two levels of the checks. One is a platform level checks and the other is application level checks. The platform level checks are independent of the applications and common to the specific blockchain platforms. So this will be the general checks on the immutability and the consistency and the consensus. And it is performed by the plugin to the blockchain verifier. For example, that the fabric block plugin, as this name shows, performs checks for the hybrid fabric ledgers. The second type of the checks is application level checks. So these checks are specific to each application. So this should be written by the application developers. And the blockchain verifier provides APIs to write the check programs to write the such check programs with the application developers. And what properties should be checked by this blockchain verifier? So these four properties should be provided by the blockchain platform, blockchain systems. And here I showed the immutability and the consensus and the consistency and the correctness. And this table shows that which checks will verify the validated properties, which properties. For example, for the immutability, these platform level checks such as hash value checks on the blocks and transactions and signatures on the blocks and endorsements and hash comparison with the other peers will make sure, ensure that the ledger has the immutability. For the consensus, the signed checks and policy checks will provide, will ensure the consensus. And the versions of the read-write set in the transactions in the ledgers will ensure that there is a consistency in that ledger. And for the correctness, we, actually that the platform level 6 will not provide the correctness because the platform intercept does not know what is correct for the smart contracts or the transactions that is invoked by the product using the smart contracts. So the application level checks should write, should check such kind of properties. In the other words, these three properties will be checked by the platform level checks. And only for the correctness, the application level checks should be checked for these properties. So application level check. So these are the, as I said, they are the check logics that should be written by the application developers. But what checks should this logic should perform? So this is some example. One is to run another logic that is equivalent to the smart contract. So this will ensure that the smart contract is correct by comparing the result that is yielded by another implementation. That is making sure that the correctness by using the diversity in the implementation. The second example would be that checking the invariance in the smart contract. For the trivial example, for when the money is transferred, the transaction should, sorry, that the input, the sum of the input for the transaction should be always the sum of, this should be identical to the sum of the output of that transaction. So we call it the invariance and to seeking such kind of an invariance, we'll ensure that the correctness of the smart contract with the transactions, that is the result of the smart contract. And the second would be that the performing additional checks against the external systems. And the blockchain verifier provides the APIs to access keys and transactions with the check logics so that they can write this kind, perform this kind of the checks. So I will show that some one example checker, an application level checker for the Fabcar smart contract. Fabcar is an example chain code that is in the hyperlinked Fabric repository. It is to manage the car assets and the two main functions in the Fabcar smart contracts. One is a create car, that is, that adds a car into the ledger and the other is a change car owner to change the, that is, to change the car owner. And the checks to perform, this shows that some checks, some example checks to be performed by this application level check. And so I will show that this, I will highlight this, the second one, the create car function does not override the existing key. Actually, that this is, there's some bug in the, sorry, this chain code. And the chain code does not check that if the key already exists or not when creating a new car. So, so using, so using the same ID for the new, for the new car, due to this create car function will result in that overwriting the old car assets by the new car without any checks. So this shows, this is some example script that do the, that check. This is written by the TypeScript under this transaction provided by the blockchain verifier. So this is what the application level check, developer is expected to write for the application level checks. So first it checks when what is the function for the this transaction and it gets the right set. And it tries to get the value for that key, the same key that is the new cars key from that state that is available at the time of the invoke of this invocation of the this transaction. If this is successful, that means that there is a key with the same name at the time of the this transaction. So this checker will report error. That is a failure for the this check. So actually that the calling that using the same ID for that to satisfy the transaction create the car functions will be successful. But actually that this should not be successful. So this checker script will find that this is error. And actually this is a result of the running the this check against the real ledger and it will report this check failed. And it will report in the JSON format and this includes that which checks failed for this ledger. Okay. So recently, so this is just a summary of that recent update for this tool that is to support the hyper-ledger Fabric Ledger. And it includes some features to compare the ledgers with the multiple ledgers from the other peers. And we're planning to integrate some more tools that is available that is the proposed for the hyper-ledger Fabric. And so on to for the better compatibility with the hyper-ledger Fabric Ledger. So again, that this tool is available at the hyper-ledger labs and available at this repository URL. And we welcome you any contribution or feedback. And also you can feel so please feel free to feel free to contact me with using the email or the rocket chat or whatever. So thank you very much. So I think, yeah, I have no question here. So if you have any question, please contact me in any of these two, this contact.