 Okay, we're live on YouTube, you can take it away, Devin. Morning to everybody. Happy Monday morning. Oh, no, that's a lie. Happy Tuesday morning. That's a bad start. Oh, welcome to another Get Together with the Hyperledger Media and Entertainment Special Interest Group. For those of you who are new to us, as the name pretty much explains, we're a small group of dedicated individuals interested specifically in how Hyperledger can be applied to elements of media and entertainment, but writ large, so including everything, let's say, all the way to journalism, for example, is something that's attracted the opinion of the interest of quite a few members. So if you have any ideas for projects or for collaborations or if you'd like to give a presentation to us that you think might be of benefit to that broad range of applications, we'd certainly be very interested to hear from you. So you can obviously find us all with ease through the Hyperledger home site, or you can just look me up. My name is right there on Zoom. Just Google my name together with UCLA and various email opportunities will pop up. Today, we are, I think, particularly lucky to have with us Mr. Tong Lee from IBM, whose tool mini-fabric is something that I discovered quite some while ago, but continued to be enthused about and impressed by, for a very simple reason, Hyperledger, in fact, not only Hyperledger, but sort of related open source engineering or programming slash development opportunities very often have a high bar of or a low gateway of entry, depending on whichever metaphor you prefer, because they're just so damn difficult. And anything that makes the creation and management of networks easier is something that is going to make our lives simpler. It'll make the popularity and applicability of tools like Hyperledger much more impactful. And for those of us like myself who are involved in teaching, it's going to make it a lot more appealing to students as well. So if you haven't had an opportunity to play around with mini-fabric or you may have seen just one or two of Mr. Lee's videos or some of his presentations, I think you'll be really impressed by how useful and how simple this tool is. So on that very promising note, I'd like to hand it over to Mr. Lee and don't forget to be in touch with us either through Hyperledger. We are welcoming any questions you might have during or after the presentation, both here in the chat on Zoom, but also in the comments on YouTube because we're live streaming there. So either is wonderful and we'll aggregate them at the end and offer the questions to our guests. But in the meantime, thank you very much, Tom, for coming and over to you. Thank you, David. Thanks very much for that introduction. So as David has just said, Minifabric was created to ease the burden on the developers, regardless of your developed blockchain applications or you actually developing Hyperledger Fabric. They ease the burden on you to create Fabric Network. So we also promote the right way to use the Fabric in the easy way. So this is the goal for Minifabric and this is the reason why we created Minifabric. So Minifabric actually is a tool to help you to do many things. So I have these five basically categories that will be Minifabric support. We will not go into the details on all of them because like number four and five are more advanced features and but we do have documents that you can look into if you're interested. The very first one is help you to easily stand up a Fabric Network. Get everything ready and try different versions of Fabric. It's not a small task without a right tool. So we create this and allow you to do that very easily. You can simply just use a different parameter to set up different versions of Fabric Network and you'll be able to create channels, manipulate channels and add peers into those channels that you have. Minifabric also allow you to inspect those channels and see the channel configuration, which if you know Fabric, the channel configures a huge YAML file and it's very hard to grasp what actually in it. If you want to make some changes and you have to look for the needles in the ocean, then it's extremely difficult but Minifabric actually allow you to easily to update the channel. And they also allow you to install chain code and invoke chain code. Do some admin tasks, for example, approve, commit, initialize. Those are very typical chain-co-related operations that you can do on a Fabric Network. I will just briefly mention the policy and organization and artifacts that Minifabric allow you to do. Endorsement policy, once you have the channel created, you probably want to change something about who can endorse, how many endorsements necessary for a transaction to be considered valid. Also, when you're trying to expand your Fabric Network, how do you add a new organization? That's how you expand Fabric Network. Adding a new organization actually also involves a lot of steps but Minifabric actually make that a lot easier. Minifabric also creates artifacts. For example, when you develop your application, most likely you have your own chain code and then you will write some Go program or other program, Python, deal with those chain codes to produce transactions. That means you will have to connect with the Fabric Network. Minifabric actually produce those connection profiles, allow you to use for different programming client applications. For example, if you use Go, you can use the Go connection profile, if you use Python as Python connection profile. The problem is that why we produce those different connection profiles is because different language SDKs require slightly different connection profiles. But Minifabric creates often Java, Go, and Python and you can choose. Was there a question? So a little bit about Minifabric itself. So Minifabric is a hyperlator lab number so you can use the URL to get the source code and see how it was basically created and how it's working. And I always welcome the PRs to improve Minifabric. Because this leaves on GitHub, we actually created this automated test process and when you submit PR or when the PR gets merged, we run a lot of automated tests. You can see on the left hand side, we test different versions of Fabric. Start from 1.4 all the way to the latest 2.4, 1.4.4 all the way to 2.4. We purpose to run this to make sure that Minifabric not only support the latest Fabric release but also the older versions. And I understand other people still use the older version of Fabric to do things. And if you hit the Minifabric GitHub repository and you will see this very short readme document which tells you what steps you need to take and how you actually quickly start up your Fabric network. And from this instruction you can see there's only one, basically a batch command you have to copy and paste to your command line, that's how you get Minifabric, which by itself actually is a really short script, I think less than 30 lines for a batch code. If you run this on Windows, it's batch code actually, I think it's a little bit longer, but it's not outrageous. Then you can simply do a Minifabric up, do Minifabric down to stand up Fabric and also, you know, to spring down a Fabric network. It's a very hard level of Minifabric. So now where can you run Minifabric? Pretty much all the, you know, possible environment, we support Mac, we support Linux, different flavors, Linux, all work. And Windows, as I mentioned, all you have to have is the relatively new Docker environment, 18.03 or newer. This doesn't mean that if you have an older Docker environment, it won't run, it just means that we never test it on the older Docker environment. It may still run. But I mean, if you have a Docker environment, it will be enough. And we recently added Kubernetes support. You can very easily deploy Fabric network onto Kubernetes. This is the huge big feature for Minifabric. For a long time, we only supported Docker environment, but now you can do this against Microsoft Azure and GKE communities. And normally when I run this, I basically just use Votrobux to create a small Linux Ubuntu system on my Mac, and I run Minifabric actually inside the Votrobux virtual machine. I only give like a four gig of memory to the virtual machine, and it will run just fine. And later on, when we do the actual live demo, we're going to use the system like this. If you have any questions, please stop me, and we can have an interaction and some discussion. I don't like it. I've got a couple of questions on the chat. Okay. So the first question is, does it support JavaScript slash TypeScript for chain code creation? Okay, my understanding is not. This is not about Minifabric. It's more about, you know, what language can you use to develop your chain code? So this is really a fabric question. My understanding is that you can use Go, Python, Java. Other than this tree, I do not know if the TypeScript or JavaScript support it as a chain code. And the second question is, does it work on existing fabric networks? Okay. Yes, if you have fabric network already running, right, you can create, you can stand up in your organization, right? Or, I mean, existing, if you have all the certificates, everything, then you can stand up a peer, then you can join the peer. If it's a new organizer and you will have to join the org, new organization into the existing fabric network, then you can join the peer into one of the app channels. Yes, okay. Okay, other questions? Not for the moment, that's it. Okay, great. So here I listed, again, more detailed capabilities of Minifabric. As I said, you can easily stand up fabric network based on the default SPAC, which we will talk about in a few minutes. Or you can use your own SPAC, right? So this is highly customizable, whether you want to create like three organization fabric network or five, it's totally up to you. You can have your own SPAC. Once you're done with your work, say, hey, okay, I developed my chain code, tested my chain code, everything works fine. I'm done with it. I want to free up my environment. And you can simply tear down the deployed fabric network. Just one command, create channel, join peers to channels, install chain code, chain code approval, instantiate, commit or upgrade invocation and use different parameters. So nothing here in the Minifabric is hard to code it towards particular, you know, model of fabric network or particular chain code. So any chain code you have as long as a valid chain code, it should work on Minifabric created fabric network. Okay. And you can also do the query blocks and transactions. And as I mentioned, you can do is your channel configuration query what currently the configuration is and assigning the update to the channel configuration, all sort of things in support private data collection and add new organizations. You can also use Minifabric to set up multiple servers. They say you have five physical machines. You can use Minifabric actually set up different or same organization on those five servers, and you can join them together to make a bigger fabric network. Minifabric also create this connection profiles. I mentioned that also the wallet that you can use when you're trying to use the wallet to connect to the fabric network. Minifabric integrated with Explorer and the caliper, which allow you to inspect what is going on, what is happening when your chain code actually is running. I'm going to show you the channels the notes in your network, and also the transactions if you use explore caliper actually you can use to run some performance test. Later on actually we will show you how to use explore to inspect the transactions happening on your fabric network. One of the problems developer always face. Okay, I don't really care about developing fabric itself, but I try to do some applications based on fabric. So they normally don't know how the application gets developed and how to connect to the fabric. So we Minifabric actually provided sort of like a template. And there's some sample code against a particular chain code. If you install that chain code and you can you can run the app patients without any modification. I hear a lot of echoes. Sorry, I'll mute that person. Yeah, okay. Thank you. So you can run the applications. I will show you how the app applications look like or where you can put your application. So this is released to, you know, quickly get you started with application. So you can add new functions and new files, all that kind of stuff is get you started very quickly. All right, that's the highlights of the minifabric capability. Now we're going to move on to talk about, you know, how you can set up a fabric network. By default, as I said, minifabric come with a default spec file, which is a very simple YAML file and include basically two CAs. The A node is different. Actually, with different organization, you can see that one is all zero. One is org one and four peer nodes. You can see it's easy to hear. And it's three older nodes. By the way, minifabric only set up orders used the ETCD, the raft. It does not support use the, what is the other? Solo or Kafka. Kafka, Kafka, Kafka. Okay. We minifabric does not support Kafka, which a lot of people already abandoned. So now talk about this network spec file. As I mentioned, this is a YAML file. It used a very simple, like a DNS sort of naming convention. The first part would be the name for the node. Here, for example, this say A node name will be say A1. And the rest will be considered as the organization name. So in this case, the organization name will be org zero.example.com. The second one will be org one.example.com. Okay. This doesn't mean that these two organizations relate to each other. Basically, they just share some of the name, but they're considered different organizations. Okay. Now, I think, was it David? I mentioned that the solo. People ask me, if I want to do a solo installation, how do I do that use minifabric? Actually, it will be extremely easy. If you want to do a solo here, it's basically one older node. Solo really means that you have just one older node. So here you have one older node and two peers. So this is, you can customize, you can give minifabric a customized spec file. And minifabric will stand up the fabric like this, like this for you. Okay. Now, if you just say, hey, I don't care about other peer nodes, I just wanted to create older system. Here's how you do it. Right. In this example, you have five older nodes. Basically, in this spec file, you set orders and five nodes. Right. If you just want to set up one organization with just three peer nodes. So here's how you do that. Right. So this is very, very flexible. You can customize any way you want. And nothing is hard coded here. And I just made up those names. Ocean tree. I don't know if there is such thing working. Okay. All right. So we earlier said that we want to make the developed life a little easier. And here's actually how we can really accomplish that. You can use just one command here, say, minifab down to bring down the fabric. Right. All the containers will be bring down. Right. So if you want to clean up everything, include the certificates created, all the channels, all that kind of stuff. And you would do just say, hey, minifabric clean up. Right. And if you want to restart your fabric networking and do restart. Say, okay. I have tried fabric 2.3. And I want to see if my chain could actually work on fabric 1.4.8. So we're easy to do just say minifabric up dash I, then you give version number 1.4.8. When you do this, the fabric network minifabric startup will be just using fabric 1.4.8. So we actually support every point release since 1.4.4. Right. So even we didn't test every release as I showed you earlier, but if it's 1.4.7, which will also work. If you wonder what other commands that minifabric provide, you can certainly just say minifab dash H or simply just say minifab. It will show you a list of all the commands and supports. If you want to create a channel, simply give a name like this and the channel will be created. If you want to join the peers that currently on this network, you simply say minifabric. Right. So you can do a channel query. This actually will return you the channel configuration and you can see an endorsement policy of your channel or who actually which peer organization is part of your channel. Right. You will make configuration changes to the channel and you will have to sign the changes. So this is how you can do that. Right. And eventually you'll say hey channel update, then the channel update command will do that for you. Okay. So chain code. A lot of people when they start work with fabric. In many cases they're just trying to develop some applications. So most likely you will have to create your chain code and write some client application to deal with the chain code. So here actually shows you the structure and how you develop your chain to the where you're supposed to put the chain code. Then you can install the chain code. Onto the fabric network. So this is very clearly document in minifabric document. And you simply just need to write your bill program. And I put in this. That's a slash. I give a name. I created a folder and give a name. Then if it's a go chain code you put in the go directory. If it's a note. If it's a Java, then then you can put it in a different basically different directory and it will actually install that for you. Okay. So they say you have those files in this directory now. You can install that chain code. You just need to do minifabric install and give a name. That name must be this direct name here. Right. Then you can do approve and commit if it requires initialization. You're supposed to do it in initialization as well. Then you can do discovery. Then you can invoke that chain code you just installed. Okay. Once you invoke that chain code. That means you actually already submit the transaction and you should be able to do the block query. Then it shows what actually happened on your ledger questions here. All right. We actually have several questions building up in the chat. One of them is a clarification of an earlier question, which is. And I'm quoting here. Transcript is definitely supported by fabric, but I was wondering if it's anything different with minifabric. No. No. No. Well, I mean, if you talk about node, right? We, we, we officially say node. We normally don't say JavaScript when we talk about the SDKs. So, yeah. Yeah. Any chain code that you can develop, which support by fabric will, will just work here. Question two, is minifabric recommended for production or is it a development environment? The goal of minifabric is to help you learn and develop. But if you really wanted to use minifabric to set up production environment. Yes, you can. The problem is that you will have to manually produce those certificates that identify your organization, identify your node, but you really have to know what you, what you're doing. Right. Because if it's a production environment, you want the certificate to be a real certificate. You do not want your production node use the self-signed certificates. Right. That's the really the main issue here. If you produce those required certificates from a CA and you know where to put those certificates that minifabric can access. You're fine. There is one question here that's particularly complex. It's actually regarding an error message. I won't read the whole thing. Hopefully the last line is sufficient. Is there an S390X version of your recent update? 390X. The question is when setting up minifab on Ubuntu server and getting the following warning status, download newer image for hyperledger labs, minifab latest, etc. Does that ring a bell? If not, we can just forward it to you. We'll forward you the question afterwards. Yeah. For those questions, we actually have this fabric and mini Rocky channel. You can certainly post the question there. Or you can open the issue against minifabric and we can take a look at that. Fantastic. Yeah. The guy who answered the question actually said, thanks already. What fabric token life cycle is that supported as well? I think that's a feature and still in the works. So, I don't have a lot of knowledge of that. Or connect them. But if minifabric produce a true fabric network. Minifabric support fabric token. Minifabric will support it. Minifabric is really a tool. It's really a tool that gets you started with fabric. Allow you to set up fabric network. So, it does not reduce or improve the functions of fabric network. For those questions, do you use a dedicated statistical authority for the TLS certificates? Does minifabric bring up a TLS certificate authority? No, no, because that involves a lot of steps. So, the meaning fabric, if you do not provide your own certificates, minifabric will produce a self-signed certificate. It does not work with a particular CA. Say, okay, go ahead, issue me some bunch of certificates. It doesn't do that. And then the last one for the moment. Do you use fabric CA or cryptogen tool for generating certificates? Neither. Minifabric actually use open SSL to produce certificates, self-signed certificates. That's it for the moment. Okay, great. Thanks for the questions. Okay, I know a lot of people who deal with fabric network actually wanted to do some tests using minifabric. So here, we actually allow you to combine command together. For example, we talked about you can use minifab, install, prove individually, right? When you want to just install a chain code or approve the chain code, right? Here, actually, you can use just one command. Minifab, install, comment, approve, comment, initialize and to accomplish four things in one command. So this is particularly useful if you actually doing some automation work. Okay. So you can combine any two command available in the right sequence, as I showed you here, to do the work as long as the combination of the command actually makes sense. For example, if you do minifab, initialize, then comment, install, then you give a chain code name. That doesn't make sense, right? Because if you haven't installed the chain code yet, initialize will certainly fail, right? Minifabric actually, if you do that, it will give you error. Okay. Actually, with that, I want to switch to the demo of LiveDemo to show you actually how you can do this using Minifabric. I'm going to exit from the PowerPoint. I want to show you, this is the waterbox machine that I'm currently running, right? So this is really a small water machine running on my MacBook. So I'm going to use a terminal to connect this machine. Let me make this a bit bigger. Okay. I hope you can see my terminal. Okay. So this is the console of my water machine. And currently, I do not have any Docker container running. So when you, okay, when you look at the fabric network, the fabric network is brought up running. Actually, you will just see a bunch of containers running even on Kubernetes environment. There are still pods and containers, right? So what I want to show you here is that I don't have anything running currently. So I just have some of the Docker images, right? You probably already guessed that I have run the Fabric 2.3 and 2.2 earlier. So that's why I have those images. If I don't have this image when I try to bring up Fabric network, it will still work. It will just automatically download those images for you. So now I will go to this directory and remove. Actually, I think this directory is empty. It's completely empty. So there's nothing actually there. So what I want to do now is to, as I said earlier, just bring up this Fabric network. You can see here, that's what I was talking about. I combined all those basically command altogether to bring up the Fabric network. So if you use the Minifabric app, not only bring up Fabric network, but also actually create a channel, join the peers to the channel, and do the anchor update, generate profiles, install chain code, and do approval and commit and initialize and then do a discovery. So actually, it does all this all together when you do the Minifabric app command. Of course, you can do each step individually, but it will just take longer time. So this will take about four to five minutes to complete. You'll probably ask why I take that long is because we are actually doing a lot of things. For example, here is the generate certificates, then we actually start up network, then we install the chain codes, create channels, all those, especially install chain code, initialize all that kind of stuff. It takes some time. All right. So with that, I want to stop a little bit because this will take a little bit of time. I'll stop here, see if we still have some questions. Two new questions. Does Minifab support the implementation of the external chain code builder? No, it does not. I was trying to add that to Minifabric, but I haven't got that implement yet. Second question. Does Minifabric support the upgrading of a new fabric version to peers? No, no, it doesn't. So if you set up, I said 1.4.8, if you want to do a new one, then you have to clear up the old one and set up a new one. We don't have upgrades, say, from one fabric version to the other. But I don't think it would be difficult to add that. That's it. Okay. All right. Great. While we're waiting here, I want to talk about how you actually run, start up the explorer or run application. So let's talk about that. Okay. I mentioned earlier, if you want to see what's happening on your fabric network, you can certainly use Explorer to inspect transactions in channels, all that kind of stuff on your fabric network. To do that, it's very easy. The only thing you have to do is run this command called MinifabExplorerUp, which will actually integrate the explorer with the fabric network you just set up. Then this command will give you a link and allow you to hit that link from a browser. You will be able to see things happening. If you don't want the explorer running, then you just need to say ExplorerDown, then the Explorer integration will be removed. Okay. And you also can run application, simply say Minifab run app. Then the application that you put in the right place, like I showed here, it should be in the wires, APP directory with your program. And then you simply run this command. Then the things that you put in your application will start running. So later on, actually, we will show the example. Okay. Here, the network actually is already started. You can see this MinifabExplorer going through a lot of things. It tells you what it has done. And it also shows you the fabric network stats. Say, hey, those notes, remember those notes that we're talking about? And oh, okay. This just showed the peer and older notes. It doesn't show the CE notes. Then it's create a channel, join, do the anchor update, all that kind of stuff. Okay. Until you how long it took for the whole thing to be complete. Of course, you can do Minifab stats. It will show you the result, like I showed you earlier. Okay. So everything is up running. If I do a Docker PS, you will see a lot of things going on. Before I run Minifab app and there wasn't any containers running. Now you can see that you have the chain code container also running. Right. This container, image needs to be created when you install a chain code. Then has to start containers. So that's why it took longer time. All right. So because we already actually installed a chain code, like I said, is called a chain code is called simple. And the version that uses 1.0. Why it does that is because the spec file, all the default, I should do this Minifab stats. Because Minifabric has all the default here says if you want to install the chain code, so the chain code name is simple. And the version is 1.0. Right. That's how it knows, you know, what chain code to install the version to use. Right. When they initialize the chain code, they use this default. Right. Later on, I will show you if you install different chain code, then you can specify different initialization parameters. Okay. So since we have this chain code already installed, you know, initialized, we probably can invoke a transaction. Invoke. This invoke is a command. Tell Minifabric to try to do a transaction. This invoke actually is a method from the chain code itself. Give me a second. I don't remember all the command here. Invoke. Is the chain code. Okay. This chain code is still a very simple chain code. I think this is just to move the asset from one to the other. Okay. So this actually will produce something on the ledger. Okay. So it's completed successfully. Now, I want to see what actually happened on the ledger. I will do a block query. So block query actually shows you the last transaction. Now it produced this file. This file is a very typical block to block. It shows all the hash, you know, the height, the number of the block, which is seven. And of course it has to show the previous block hash. And they include all the transactions that happened on the on the fabric network. So here you can see that we use the method called invoke. Then we moved, you know, for unit from A to B. All right. I believe you can also do a query. I think query is another method on the on this simple chain code. If I remember right. Okay. So actually this now shows the payload is balanced to be 196. If we do another one. Okay. I give three. If I call it again, then his balance should change. It was a 96 196. Now it's 193. Okay. So if I do B and then balance should be different. You know, if it did be okay before. All right. Okay. So any questions here? Yep. Three fresh questions. Number one. If you define multiple peers in spec, which one will be the anchor peer? And is that configurable? No. No. Minifabric will make all the peers anchor peer. This is really just for the performance. Number two. How does mini fabric deploy the network? Sorry, the network on Kubernetes. Does it support the use of any Kubernetes? Package manager. Package manager like, like what? You could. Like. Like. Yeah. Like a kind. You mean. Helm. Oh, Helm. Oh, okay. Um. No, no, no. We actually do not use. Helm to deploy a fabric network onto. Kubernetes. We, if. Yeah. In the beginning of this presentation, we, I, I show a link. If you use that link, go to the repository. You can see that we actually use. Simply the. Ansible pack package to produce. Kubernetes deployment files. To. Set up fabric network on Kubernetes. We produce. Services. We, we use actually English controller to expose. In the point. We produce certificates. We use configure map. We use secrets or that kind of stuff. So, so we do not use Helm to deploy. We use Ansible. And the produce the deployment. Files. I'm not really sure that answer the question. Sorry. Lastly, for the moment. A question that I imagine is quite popular. Am I able to use mini fabric to build my minimum viable product? I would say yes. Many fabric, as I said earlier as well. Many fabric stand up fabric network for you. Which does not. Improve. A reduced. Capability of fabric network. Right. Let's say I stand up my fabric network. Use mini fabric. I developed my chain code. I tested. My chain code. On this network. I should be able to move this. A chain code onto. Any production. Fabric network. And I expect it will fully work. Right. There's nothing here that. Is. You know, you can accomplish, but you cannot complete with the fabric network. So. I hope that. Answer that question. Yep. Okay. All right. So how are we doing in terms of time? Oh, we only have five minutes left. Okay. So. Let's do. Okay. Let me bring up Explorer. X. Low. I can spell. All right. This will actually start up Explorer. And it tells you where you can hit that. So I'm going to. Bring my. Browser here. Okay. This also give you what the. I'm going to. Browser here. Okay. This also give you what the default. I'm. Username and password is. In case you forget. Explore. At the mean. Explore. Password. P W. Explore. At the mean. Okay. All right. We can see that. This. This dashboard to show you. A composition of this fabric network. As I said, they use the default. And we have four peers in the three order note. And. And say, hey, we're at the block. Number 11. Here I said 12 because we started with block zero. And then we have transactions. We have four notes. It doesn't count the older notes. And we only have one chain code. All right. So if you click on. Transactions. And we'll show you all the transactions. If you dig through those. Transactions you probably was. We'll see that. The transaction we just did from command line. Right. Next one. Or do actually. Install. Move. Commit. Visualize. Name should be. Samples. CC. Simple CC is also a. Chain code that. Come with. Minifabric. If you like a repository, actually, we have few. Chain code. Come with. Minifabric. Which give you like, you know, how we. Minifabric use those, how it was developed. Like, I think. Then. I use this command to. Initialize this thing. And then we should be able to see. Transactions. Happening. Here. And if you update, if everything goes well. Then we should see the chain code now. Change to two. And then we should be able to run that. The app run command. Which actually. I think it produced a lot of more. More transactions. But here it will. Again, every time you install chain code. We'll have to build the darker container image. And it will take some time. So we're at the last minute. We're at the last minute of this. Talk. I wonder if we can. Extend this a little bit. David. Yeah, we have the room. If you want to go longer, you can. Okay. Yeah. I just want to show after this. Samples to see. Installed approved. Then. Then I will run the app run. And then we should be able to see transactions happening from. So now this chain could actually installed. Now. See. This explore already show that we have to chain code. If I. Click here. Now we have a simple one. This actually get installed and we do the minifab up. Now I just install samples. Is it here? Right. So the reason why I want to install these samples is because. We have application. Here. This is. Very simple application. And they use the wallets and the connect to the fabric network. And then they do some transactions. Right. So this is application. And if you want to know how to start with application, this example you can use, or you just go ahead and make changes to this application. Then run the. Command here from the. What can directly is called a minifab. App run. It will just run this particular application. Hopefully we can see some transactions happening here. Did you guys notice that the. The blocks change in a number of transactions changed. So all because we're running that application that. Produce transactions. So if I. Here. Assess. You think you can see here, right? Sample CC. And still on my channel as a default channel. Right. I didn't invoke the transaction from. It's all from the. Actually the application. All right. I think that's the. Everything I would like to talk about in this. Session. And I want to hand it back to David. We don't have any questions. We don't have questions. We just have multiple people saying thank you. Great presentation, wonderful work, et cetera, et cetera. So thank you so much for squeezing everything in. Thank you, sir. Well, I think with that we are done. I put the link in the chat to. Tom's tutorials on YouTube, which. We'll give you an extra chance to. Look over some of the fundamental points that were covered today, but this precise presentation. Is also going to be archived in a matter of minutes. Maybe it will be up for you to look at. Either on YouTube or we'll actually embed it on the. Special interest group page. In the meanwhile, as I said, I've put my email up there. If you guys want to get in touch, if you want to get in touch with me personally or just get hold of the interest group and just send it to the general email there, stick it in the general chat, general channel. And don't be shy about giving us new ideas for presentations and for projects. They're all very much appreciated. So I think with that, thank you, Tom. And we will see everybody very soon. Thank you, sir. Bye for now. Bye.