 topic for managing Hyperledger Fabric Network with Fabric Operations Console. So we have Vorat from IBM, a very seasoned architect where you can introduce yourself a little bit more if I miss anything. And here you are Vorat and go ahead. All right, wonderful. Thanks everybody for the interest in the Fabric Operations Console. Let me start sharing my screen. All right. So today we're going to talk about again the Fabric Operations Console. So I think people know from the recent announcement from IBM, the donation per se of the console to the open source community. So the console has been, you know, again, we have been using console in IBM for managing Fabric Networks as part of IBM Blockchain platform. So we, IBM, you know, donated the console part of it to the community, right, back when like, June 9th, and have made a lot of significant improvements, right? Well, excuse me, Vorat, do you mind making a full screen? Yeah, it's easier for some audience. All right, thank you. So again, you know, again, this is news that you can read upon. But what we are going to cover today is to cover the overview architecture of the console, right? And then like, you know, from that point on, it's more of a demo mode, right? You know, how to use the test network to begin against the console. And then we will demo like how you can easily create channels on the UI. And then you will also show, you know, how to use the lifecycle flow, right? You know, the typical proposal through the mid process. And then we will touch on some future topics. And we would love to hear from the community in terms of, you know, what other future topics you guys might be interested in. But, you know, we have some topics planned, right? And I can share with you guys. With that, right? So let's start with the architecture. So what is the console, right? So console again, is the tool that you can use to manage your existing fabric network, right? So let's assume you have peers, orders, CAs and such, right? But apparently, most people would use CLI or SDK or some sort, right? To manage it, like, you know, you want to create a channel, you know, you CLI, you know, which involves creating these animals and, you know, and all the necessary artifacts to, again, create a channel. So the idea is the UI will allow you to do all that easily. You know, that's primarily what the console does, right? So here is the picture that shows the different components that's involved. So console under the covers has multiple packages, right? You know, there is three parts to the package. We won't cover the details of it yet. You know, that may be one of the follow on topics, right? But it has the UI component, which is a, which is a React application. And then it has a node component to it that is responsible for doing all the API stuff. And then it also has a component for GRPC communication. It's a set of libraries that JavaScript libraries to be more specific that do GRPC stuff, right? So, and then the underlying database is, you know, CouchDB, right, for managing and maintaining some of the configuration information and such, right? So, and then the peers and orders already have, again, GRPC, they talk to GRPC, however, we have GRPC, the proxy that's sitting in between, again, the console and the peers and orders, that's the proxy in the calls, right? So, and then we also have to have country translator, basically, that's responsible for translating the request between a JSON protocol from vice versa. That's another, you know, component that sits, you know, in the mix, right? So, let me move on to the next one, which is a demo, right? So, so if I go back to the, let me make it bigger, right? So, I'm on the, again, the GitHub page, you know, for the console, right, it's under the hyper-digit labs, right? Again, it talks about all the capabilities, right? You know, viewing modifying channels, install instantiate, we have support for the 1.4 flow, which is the traditional CTS format, you know, for packaging, and then also the CouchGC format. So, again, I'm just going to give you guys a high-level overview today, and then we will have drill down on individual topics, right, as in the need, right? So, again, we talked about architecture, and what we are going to show today, right, in terms of demo, how you can use console against the test network that is set up with, again, in fabric, right? So, we do currently only support up to 2.2.3, in the sense, you know, that is the channelless, system channelless configuration feature that's in 2.3. The console does not support it, right? So, you know, we do rely on system channels for some of the information, so that's just something to keep in mind. And again, the script, we have a simple script, right? You know, you can look at the script, all it does is it pulls down 2.2.3, you know, using Docker to bring up peers, orders, CAs, and then create channels, so that's what this step does. Then the second step is to bring up console, so that is also console images published. So, again, so this step simply brings up console, it brings up CouchDB, it brings up, again, config translator for doing the translation between JSON and Protobufs. And then the last step is basically to run, create the assets, which is essentially the console takes JSON files as inputs, right, which can be in the zip file. And the JSON represents the peers, orders, and CAs, and MSP definitions, and all the rest, right? So, the create assets step basically takes the test network, right, and then it has the template JSON files for each of the assets, and then it basically pulls stuff, the latest certificates and all that from the test network, and then generates a zip file that's essentially, fit for the test network that can be ported into the console, right? Again, feel free to ask questions. I mean, I don't, you know, I want to keep it more, again, informal, right, so there is no, like, formal stuff, right? So, if you have questions, you know, feel free to ask. And so that's basically once you generate the zip file, you can import it, and then there is a set of steps we will go through to, again, create the certificates from the CA, attach it to the peers and orders, and create channels, right? Again, the steps are described here. I'm not going to go through them, you know, in the documentation, but we will show it in, you know, live, right, you know, as part of the presentation. So, Yuri, you know, David, are there any questions so far on what people have seen, I guess? No, we don't have anything on the trash, but yep. All right, let me make it clear. I just want to get familiar first and then maybe have questions later. What is the purpose of the proxy? So, there are the GRPC web proxy, I mean? Yeah, yeah. That is the one that's going to proxy the request, because way back when we started, right, we directly tried to talk to the peer using GRPC. We kept having crash issues, so back then we added GRPC proxy. It's simple, again, web proxy that just proxies the request from HTTP back to the peer to the GRPC. So, this takes basically a rest request and turns them into GRPC? That's exactly right. Oh, okay. Okay, thanks. And I know recently NGINX added GRPC web, I say, an option we haven't explored to see how to fit it in, but if people have time, they can explore it, but we settled on the GRPC web proxy and that has worked well for us. Ken has a question, can this connect to an existing network? Yeah, so the main requirement is to be able to add the GRPC web proxy in front of your peers and orders. If you're able to do that, you know, have the right core configuration, then it should work. So, since we are on it, I can quickly show you guys, right? Again, I want to keep it more informal, so I want to make sure people know the information to make it work, right? So, if you go into the scripts, so it builds the images, right? But then if you go into Docker and if you go into GRPC web, so this builds the GRPC, but then if you see the GRPC web Docker compose file, you can see, you know, again, how the proxies used to configure talking to an existing network. So, in this particular case, the certificates and the ports and the backend address and all that is running in Docker, but if you have, again, an existing network where you have peer backend address and the certificates and all, you should be able to kind of, again, use this as a template to, again, use this GRPC web image to connect it to your existing infrastructure. That's good. That's another question. Will it work if operation support is TLS-enabled by ShoNAC? It should work both ways, right? You know, you can do TLS and non-TLS, both of them work. So, in this particular case, the test network is TLS-enabled, but is that the question or are you talking about console with TLS and non-TLS? No, I was asking operations. I think at some point you also need the operation support, right? The fabric operation support, which is 9443 by default. Right. So, that, my question is, if that is TLS-enabled, how is that going to work? Yeah, it should work because, again, we proxy that request also, right? So, if you see, again, this picture, right? We proxy not just the GRPC, and maybe there's additional lines going from the console directly to the peer and order. We didn't draw that, but that is the connection from console. Console basically proxies TLS to put back to the orders and peers on the operations board. So, that should be fine as well. Okay. So, that sounds like you're interacting with the user interface side, right? Right. Right. So, what about interacting with different blockchains? Do you have like the cross-chain interoperability? No, this is purely, if the question is, you know, is this only hyper-legislative fabric? So, the answer is it's purely hyper-legislative. It doesn't go across Ethereum and other kinds of, you know, blockchain platforms. It's purely hyper-legislative. Okay. All right. That's good to go. Thanks. Right. Maybe last question to run out this round of Q&A. So, Kansa, for the question, can this be installed inside a Kubernetes cluster where my network is deployed? Yeah. Yeah. That's how, again, the console currently is the one, you know, that works in IBM blockchain platform which runs in OpenShift and Kubernetes and, you know, whatnot, right? So, you should be able to deploy it on to any Kubernetes. There is no restriction in terms of running it only in Docker. You should be able to work with it in Kubernetes. Yeah. Just to update on that, I'm from the blockchain automation framework. So, I've just checked in a hand chart for the Fabric Operations Console. Nice. Okay. All right. So, let's move on to the demo part, right? And then we can come back with additional questions. So, what I did to save some time is I ran the first command, the setup network. All it does is it pulls down Fabric223, as you can see. And then it basically starts up a network, right? This step took, I don't know, maybe depending on your connection speed, it needs to download all the binaries, right? The images and then start up it maybe like, I don't know, five, six minutes. I didn't want people to sit on the call for five minutes just staring at these. So, just so you know, again, the first step is you clone the repo, right? I cloned it to console. And then once you go into console, you just do setup network up. Again, this command is on the, again, the GitHub page, right? And then you, again, all it does is again check out and then download all these images. And then it's, again, it starts up again, peers, orderer, CAs. It's all done by the test network script. And at the end, you are left with a channel called my channel. And then it has the Fabcar smart contract installed on it, right? That's basically the current state, right? So, I do now have a test network with that. So, let me show you my Docker file just so you know, right? So, again, this downloaded all these images. I could run the command, but it's just easier to see. And then I have a few containers, right? Again, peers, orders, CAs, couch, CLI. So, it's all again, that command basically gets you up to the state, right? So, the next step is basically do the console step, right? So, let's go through the console step. Here's the screen. So, again, this will start, download and start the console, which is basically it, right? And it's fairly quick and easy in a process, right? And then the, so now the console is running. So, let's generate some assets, right? This is going to basically, you know, get the certificates and such, you know, and then use it against the template to generate a zip file, right? So, you would be, you know, so this is the zip file that will generate, right? So, let's go onto the console, right? So, the next step is to go into the UI. One thing I would point out is, so we use, you know, the subtle crypto, you know, the libraries, right, you know, that are browser-based and they expect you to run either on localhost or if you're running on non-localhost, it should be HTTPS, right? If it's not, then you're going to get, you know, if you see the browser logs, you will see messages saying like you cannot run this on non-TLS, right? So, ensure like if you are accessing the console or anything other than localhost, you know, it's TLS enabled, right? So, we'll have some documentation instruction and follow-on topic on like, you know, how to run it in a production kind of setup with TLS and all that. But, you know, for now, just be aware localhost, you know, should be fine, but if you change the port, I mean, not port, but the hostname, you need to ensure it's running on TLS. So, the default is admin and password, that's the starting one, of course. And immediately your presented will change your password, right? I know that is issues open, asking like, you know, can you like disable this, you know, the password change from, so, you know, from doing local development testing, I can just directly jump into the screen. So, you do know that. That's coming up later. Change it to some other password. And then now I'm asked to log in, right? So, it's, now you've got the console, basically that's it, right? So, you've got, again, a fabric network, you know, set up and you have the console, those are two different things. So, now we are going to import the test network into the console, that's the next step. Just a quick question there. On the previous step, when you did the login as admin just now, in that very last step, that's based on the credentials that were generated during the startup of the test network, correct? So, that credential is for the console, right? So, that information, if you go into Docker console, ENV, you can customize again, this is okay. Very good. Yep. Perfect. All right. Thank you. Yep. This is one of the future topics where we'll talk about some of these configuration options that are available. But yeah, that answered it. Thank you. Yep. So, now you have a clean console with nothing, right? So, the next step is to import your configuration. One thing I do want to mention is wallet is a concept, right? You know, again, rule. Actually, let's finish the import and then I can walk through that concept. So, import, right? That's the next step. And so, if you go into, again, GitHub console work area, you should see the new console asset supply, import that. So, it's importing all the, again, the test network components. And now, if you go back to the nodes, you should see all of the components imported, right? So, that basically has an ordering service CA, you know, two different CA's for each of the organizations. And then you got the order and you got the two px, right? So, the first step you would want to do is to be able to generate, again, you know, you know, the certificates for your, you know, talking to the peers and all of this, right? So, let's go into the order first. Then it says associate identity and the default password for all of the CA's, I think, for the test network. This is coming from test network, right? Admin admin to debut. So, now, as simple as that, right? So, now we've generated a certificate for the CA to talk to you. And then we are talking to the CA with the certificate. And you can list the, again, all the internal IDs and secrets that are registered on that CA. And the next step you will do is to generate a certificate for the admin identity, right? So, enroll an identity. It's the order admin. Order admin pw. That's the, you know, everything is suffixed with pw. And then I will just call it order admin. That's it, right? So, now I should be able to use this identity against my order. So, let's just do the same thing for each of the organizations, same thing. Admin pw. And then, again, order one admin, then generate order one admin. Then we're on the last one we will do for order two. Not really interesting. So, now we have certificates for all the peers and orders to talk to, right? So, all the registered certificate going to the wallet, right? That's where you see the certificates, right? So, if you click on one of them, you can see the certificate, right? Again, the, and the private key, right? So, those are available. You can export the identity which will give you the, you know, again, a JSON file that you can carry along between different consoles. That's something you can do. So, just for information, these certificates are only stored in the context of the browser. It's not stored anywhere else. So, they are in local storage, right? So, meaning the tricky thing is, right? Let's say you set up something, you work with the console and then you're like, you deleted everything and you recreate the environment, right? You're still going to have the console under this, you know, the local storage. You can go delete individually or you can just delete these two, you know, keys, right, from the local storage to basically clear, you know, the, all the wallet identity, right? Just to tip. But, okay, so now that we have the identities, let's just go associated with the orders and peers, right? So, now we're going to connect to the order and then it knows, you know, based on the order's certificate, what are the valid certificates to be associated? As you can see, it did not show the R1 stuff. That's it, right? So, as simple as that, right? So, you've got the order now, we pulled the system channel and you can see the, you know, the order, you know, the orders of this administrator. You can see who the consortium members are and, you know, again, you can even delete the consortium member, essentially updating the system channel and stuff, right? So, and then you can also see who the concentrers are on the system channel, which is again, the single order, right? So, if you have multiple concentrers, you should be able to see them there as well, right? And then do the same thing for the peers. So, for that peer, we're going to admin. And then now we can see the actual channel, right? So, that is my channel that has seven blogs. You can drill down into that, right? Into the channel. And then you can see that it has FAPR installed using the new tool lifecycle flow. And then you can see the transactions on it, right? Blocks and then transactions within it. So, this has some, again, sample data, right? So, you can see the read rate set, like in some form. And then you can also see the channel details, right? Again, what nodes are part of the channel participation in terms of like order, disorder is part of the channel, this peer is joined to the channel. And then you can see that one MSP and two MSP are the members of the channel and so on and so forth, right? If you have access control list, then you see that and then you can manage the anchor peers, right? So, if you want to delete anchor peers or add additional anchor peers, you can do that, right? So, fairly easily. So, these all would result in channel update transaction, right? So, depending on what you're doing, you might need to get signatures from other consoles or participants. But for this network, everything is local test network. So, you know, so you should be able to perform all the operations without relying on anybody, right? So, that's the channel. It's associated with the second organization also for completeness. And we got the, again, from the second peer, we can get the channels and then, you know, you can see channel information the same way, right? So, that's up to the channel part, right? So, next I would show you guys how to use the console to do the lifecycle flow. So, before I do that, right, are there any additional questions? Yeah, there are a few from the chat, some from the, a while ago, say, does it interoperable with hybrid address or tools? No, at the moment, it's no interoperability, right? It's purely fabric. Yeah, there's some great assets question that's been answered in the chat by itself. So, one from Dinesis, do you have any feature to add new work to the running hybrid network through this console? That's a good question, right? So, there is two parts, right? So, you can go to the ordering service, for example, and then say, like, I want to add another consortium member. So, if you already have a speed definition, you can fairly easily add it. But in this case, I don't have anything that's not added, so you don't see it. But if I go, you know, for the test, right, we can go create another MSP definition. So, you can go to the organization, I'll just create one for now, just to show you guys that option or three MSP, right, you can type. Then, I can use just one of the system names. And then, I'm not creating a CA, right? But I'm just going to use PW, right? Next. So, now that I have a new organization, I should be able to go down to the, again, the ordering service and then update the system channel and say, like, oh, now for the 3D is also a member, right? And then, if you have peers from that organization, obviously, you can add it, right? Now, import it, like, if it's running somewhere, so that's basically the process, right? Does that answer the question? Just to be clear on that, I think it's only adding the organization into the console, right? It is not actually creating the fabric peers. That's right. So, that's a good segment to what I wanted to mention, right? So, the IBT console that offering has options to add peers and orders and CAS, right, into an existing Kubernetes cluster. But the open source console does not have that capability, right? So, it's purely managing an existing fabric component, right? Not like provisioning and creating an existing component. That's not something that's possible from the console right now. So, Todd, still have the question about assets. So, what exactly is Create Assets script doing? How is it getting information? Right. So, the Create Assets script, let me just quickly walk through. So, it's a bunch of, you know, JQ commands, right? Basically, you know, it knows where the folder is. It's basically... So, it pulls the stuff from the local file system? Correct. Okay. Yeah, file system, and then it goes against the CA for DC models and then collects information. So, you should be able to see all the pieces it collects from this. So, this will only work then against a local deployment of fabric then? The Create Assets, correct. But you should be able to use the template to generate your own like configuration, right? Right. Okay. Yeah. But the key point to understand here is that the test network must be running in order for the Create Assets script to work. That's exactly right, right? Because it needs to have access to CA and such, right? To pull the... Yes. Okay. No more questions from the chat. Anyone want to ask questions? You can ask now. Where I can continue. One more quick one regarding the CA when you just added org3. I remember from when I used to use it at IBM that the sequence of events was that you would typically start with creating the CA for any new org you would want to add, correct? That's correct. Yes. So, the sequence of events would be to create the CA, populate it, add that member to the consortium and set up peers, right? Or maybe set up peers and then add. Yeah. I just want to make sure that that sequence of events still happens in the same sequence as it always has. Right. I just, you know, for re-use the existing CA, but yeah. I mean, typically you don't want to have same CA for two organizations. So, the best practice obviously is to have separate CA for separate organization. Yeah. I know you did it just for simplicity and speed of the demo, but typically you wouldn't do it that way. Yeah. That's exactly right. Yeah. In this case, the organization already is part of the consortium, right? You're not really changing anything on the channel configuration, correct? Well, this changes the system channel configuration. So, org3 is now part of the system channel. Yeah. So, you work on, okay. Okay. So, the system channel actually, the configuration gets changed. That's right. That's right. So, you're sending all the transactions like update channel configuration and sign off. Okay. But how do you know which organization to sign off? Well, this is system channel, right? So, the admin channel admin, you know, the order of admin, we sign as order of admin for this transaction. So, basically, I think, you know, the console knows the context of the channel and what operation it performs and then takes away some of the complexities with like, you know, how do I sign? What do I use to sign, right? If it has the information to, you know, it'll try to update, right? So, I can believe it just so we don't have it. So, this will remove it from the system channel. So, let's go on from system channel. All right. So, next step. So, the last piece of information I want to show before I give it the tongue, right? To show the mini fabric, you know, how mini fabric works against the console. I'll show the finishing part of it, which is using the tool lifecycle, right? So, let's go into the channel. So, I have already my channel and as you can see, the capability is already 2.0. So, you can see the three different capabilities on the channel, right? Application, ordering, and then the channel capability. What I'm going to do is to propose a new smart contract on that channel, right? Or one. And then I can afford a file, which is start GZ file. And if I go to, they have it under that. So, if I go into, so again, I'm going to install this smart contract, BTS. So, you know, then you get a question, do you want to install it on all peers for the given organization? So, if you remember, the first step I chose is I'm operating in the context of R1. So, if you have multiple peers for that organization, it's going to install it on all peers for that organization. But as you can see, it's like 1x, which is, I just have one peer for that organization. It's going to install it on just that one. And as part of the definition of the proposal, what do you want to call the name and the version for the proposal? And then you can use the default endorsement policy, or you can update it, right? To advance more if you choose to. Since there are two members on the channel by default, we say like one of these two members can endorse, but you can say like, you know, you can say I want both of them to endorse, right? If you want to do that. So, it's from the UI, you know, you can control the endorsements if you don't want to use the default, right, which is majority. And then next, and then if you have private data collection, right, you can, you know, use the JSON to export, you know, upload the JSON. So, part of the definition, you will get the PDC. And then again, you get a summary at the very end, right? Use the default endorsement and majority needs to approve for the lifecycle endorsement, which are all configurable. I'll show this as part of the channel creation after, right? So, then propose, right? That's the first step. We can bring up the analyzer tool lifecycle just so you can see. So, anyway, so I'm very impressed. But you can see the lifecycle process, right? You know what it looks like. Let me proceed. So what it is doing right now is it's installing the smart contract on the PRI tools. And then it's doing creating a definition for the given organization. And so that's the second step, right? It's proposed. And then the next step is to commit. That's the next step, right? If there are multiple organizations, you, since there are multiple organizations, I can approve as the other organization because I own everything. I have all the certificates for both of the organizations. I can do it on the same console. Let me do that. So I can approve the same smart contract. And then I install it on the second organization. So this is, I'm pretending to be the second organization in this scenario, right? And then installing on the second organization's tier. And it's a couple of seconds. So once it's done, I can commit it. And then from that point on, it's business as usual, right? You know, you can use your Fabric SDK client or anything to, you know, generate from that. So in a, in, in summary, I guess in a real world scenario, each organization will have their own fabric console, right? That's exactly right. And then approve and all that. Yeah. Exactly. So, okay. So now the status changed as you can see before it was proposed. And since both of them approved, now it's ready to commit, right? So we do a check to see, you know, both organizations approved because the fault policy was majority need to approve. So now you can commit the process because, you know, you have the, you know, the necessary approvals. And the commit can be as any one of the two organizations, right? So I'm going to just use one. And people have done it like using CLI or anything. It's a fairly involved process to like collect signature to this, right? Especially in a multi-console scenario. So anyway, so, so now as you can see this particular chain code is committed on to the channel. And then again, you can generate transactions on it. So that's the life cycle. So again, like Sonok said, right, you know, if it is on multi-console, you would do the approval on multi-console, different consoles, and then eventually commit. So the console facilitates all that. So again, that's one of the future topics, how we can set up that kind of scenario, multi-console production setup. You know, that could be one of the following sessions. So before I give control to Tom, one quick thing I want to show is you can obviously create a channel and join channels from the console. So when you create a channel, you know, you can say I want, so, so then I pick which order I want to do it on, and then I can choose the speed definition that I want to use, right? You know, I can say of one is the operator and use just a writer, you can do some of those as an access control stuff. And then one, and then I can say I'm creating as our one. And then you get to pick the application and order capabilities on the channel. So I'm going to say to all capabilities, then use the default for order. And this is the lifecycle policy since I chose to all as the type. Now I get additional options to do lifecycle endorsement. So how many need to endorse before you can change the definition of the, again, the smart contract instantiation definition, right? So you can specify or you can choose majority and it's going to lead to default. But know that you can customize some of these options. You can, again, change the blockade parameters, right, you know, how many message counts and the size and all that this is specifically application channel kind of capability, right? You can also do access list, right? So you can also do JSON if you have a big list of access control lists, so you can choose to do JSON. But again, you know, you can not too many use it, but if you do, that's an option available. And you see the summary, create channel. So this will create the channel on the order. And then I should be able to join. Then I can click on it. And then I see that there are two peers because again, it knows the channel members are those two. And then it gives me option to join both of those peers. And I can choose to make them anchor peers. Again, this is going to submit a channel change. And then add whichever the PRC chooses anchor peers, right? So join. That's it, right? So now I have created the second channel. I joined both of my peers and I made them anchor peers all in that, you know, as part of that step, right? And one last thing is, you know, obviously, you can drill down into a channel, and then you can put on the gear to make a change to the channel, right? If you want to add new members, lead, you know, add concentrates, you know, it's, it's, it should give you all the options you typically need. So I'm not going to go through the update process, but I'm going to stop sharing. But, you know, if you have questions, let me know. Okay. Just just a comment, Barab, thank you for doing the demo, very well done and very informative. And the way you stepped through it made a lot of sense, even for veteran users, I think it was a good refresher. So thanks. All right. Thanks, Chris. Thanks for the feedback. Again, if you, based on what you've seen, if you need any follow on topics, hopefully, you know, feel free to add it to the chat. So we'll come back with additional, you know, this is the first of many to come, right? So we'll have more of these sorts of deep dives, right? You know, we'll have, and then, you know, if you have comments to add, add it to the comments and we'll get back to you guys. Thank you. If you want to take control on the mini fabric. Yep. Okay. Thanks for that. Okay, my video. Yeah. While the video is setting up, just a time track. So we probably a ton, you may have a roughly 10 minute ish. But I think we can always schedule a nice event if you need more time. 10 minutes will be fine. Okay. So let me share my screen real quick. Can you guys see my screen? Yep. Okay. Okay. So this is where the mini fabric lives. Mini fabric is a tool to help you to very, very quickly, easily set up different versions of fabric network. The procedure to do that is extremely easy, which works, by the way, on Linux and Mac and Windows. So to get started, you just need Docker and nothing else. No Docker compose whatsoever. Just Docker will be good. Then you copy, paste this one line. If you're on Linux or Mac, if you're on Windows, copy this line, execute. The next step is to mini fabric. So that's all you have to do to set up a fabric network, which used a default spec. If you don't like that default spec, create your own spec. A spec will look like something like this, which you say how many organizations you want, how many peers in each organization, how many orders. That's all you have to do. That's it. Simple YAML file. If you don't care about the fabric layout, you just want to see how these things work, go ahead and use the default spec, which comes with the script. I have done this while Barada was talking. So as I said, you just need to do this one thing. I did extra flag. That's E, true. This basically says, when I set up fabric network, I want the endpoints of these nodes, older, peer, and even CA node, to be able to accessible from outside this machine. This machine actually is a virtual box, 1204 virtual machine, and only has four gigabytes of memory. So I just did this one command. If you want to try it on yourself, it's fine. Just follow the instruction here I just showed you, which will actually set up the fabric network and include the download images of the peer and order and start the network and then create a channel, simple channel, and install a sample chain code, all that kind of stuff. Set up your anchor peer and we can save from chain code, install, prove, commit, initialize, all that kind of stuff. So at this point, the fabric network is up running. But for this talk, I just want to show you how you can quickly set up a console, which works with the fabric network, you set up use minifabric. So to do that is really, really easy, just like everything minifabric does. You almost don't have to do with demo files or very complex peer command. So to bring that up, all I have to do is to say console up, that's all you have to do. It would take a few seconds to get things up running. So now the console is up running and notice that this console is not at the HTTP. It is actually at HTTPS. Now I just simply need to copy paste this to my browser, which I'm running all this stuff in the virtual box machine and I'm going to access this console actually from my Mac. Notice the IP address actually is the private IP address, because this is use the self-signed certificates and Firefox will actually tell me that. Okay, go ahead. Now, let me, this is so huge. Okay, so you have seen this the very first time you're trying to access the operation console, they will ask you to log in. Okay, so the default again is admin password. They will gladly ask you to change it. So you will have to change it. P-A-S-S-W-O-R-D-1, very creative. Okay, now I change the default password to a new password. They will ask me to log in. Great. Okay, now I'm in. So I have absolutely nothing, right? Because this is just set it up, right? So what do I do next? As Radha has showed you earlier, you can import the asset. The good news is that when you run this mini fab console up, the asset file has been created for you. So the file actually will be in this directory. First, console. The file actually is there. It's created for you without you doing anything. So the next thing is, because this is the file is on my waterbox machine, and I have to transmit that to my Mac. So I will do this. Okay, now the new file, you see that I've done this before. So now the file is actually on my desktop. So I would just want to use that file here from my desktop. Now I just want to import it. Now you can see that I have wallets from different organizations, right? I remember I talked about when I set up Fabric Network, I use the default spec file, which contains basically org zero, org one, two different organizations, and the example, that's for the order org. Now I import the asset. I'll see those nodes happily show the green. That actually means the console is working with the node. Otherwise, this will be white, okay? So channel, because I have not associated my wallets with those nodes, that's why we cannot work with those nodes. But I can easily do that. So if I click this one here, I can associate the identity. I remember we imported the asset, which includes wallets. And so I want to associate that. Now you can see it already start working in a pooled channel called my channel. If I named the channel something different, it would show a different channel. So actually, I just want to show you how easy to start up console and pick up the asset, which generated by the command that import the console. From this point on, you can follow what Varad had showed you, associate those wallets to different nodes, or deal with the certificate, say A node, like here, you can associate the identity, which should be by default is admin, admin PW. You associate that. Now you actually can start use the CA node that set up by Minifabric to do things. So all other functions really provided by a console. I don't need to repeat here. So I want to leave like two minutes for questions, if you guys have any. Yeah, there are a few questions. So one is Faso. Let's assume I'm writing an app on top of my tranquil. How do I access connection.yaml and crypto material when using Minifabric? And the other question is, what's the flag to start console on Minifabric? It doesn't appear on help. There's two questions. And just for a time's sake, that probably is the only type of question you can answer. Oh, so I was reading the question from the chat. So, Tom, to clarify, I think Faisal's question is, like at least in the IBM BS code app, you have the option to export the connection profile so that if you're writing an app through the SDK, you can utilize that. And I think it's a good question because I had the same one, right? How do you access the connection.json or if it's in YAML and then the crypto material for the wallet if you're writing an app on top of that? Faisal, I hope I captured what you're getting. Yes. Okay. So that's not really a console question. That's about Minifabric. So, Minifabric does this really well. If you actually go into the worst directory, this is like Minifabric working directory. Actually, it's in the worst directory. Yeah, probably we have to end those meetings. Sorry to interrupt, Tom. And everyone, please feel free to connect LinkedIn to Virat and Tom for further discussion. If there's more conversation, you can have the room longer. Yes, maybe I can leave the room and if you are okay, I'm not sure if that works for you. Yeah, I can stay on. Yeah, that's fine. If people have more questions, feel free. We can keep the room. Sounds good. Thank you, Juan. I have to drop now there. Okay. All right. So the connection profile. Actually, the connection profile will be created when you actually set up the network. So here, I just want to show this. So in this first directory, there is a directory called Profiles. In this profile directory, you will see costs of JSON and YAML files for different SDKs. And Minifabric really, really tried very hard to support developers regardless of using Go SDK or Java or Node. And they create those connection files for you. Let me just pick one here. Let's say it's for Java. And you can see, I mean, if you're familiar with the connection profile, this is it. It contains the embedded certificate for you. And you can pick this and fit into your application and start make transactions and connect with the Fabric network. Okay. I think there are a few other questions here. I think I can answer. I think Marco had a question on what was the flag to start the console when you're starting it via Minifab. Yep. Yep. Actually, it's it's this. It's called Minifab console up. And if you want to shut down the console, you do console down. That's all you have to do. And I keep it up for a minute. But if you want to see that, I think we also added in the Minifabric doc in the read me section, console up. Okay. It's at the very end because this feature was just added like a few weeks ago. Right here, you can use this to command burn up the Fabric network and start up the console. If you want to tear down things, just console down. That's all you have to do. Okay. I think that's all the questions we have. Thanks, Tom. Really good stuff. No, no problem. All right. Thanks, guys. Thanks for the interest. Thanks. Thanks everyone. Yeah, thank you.