 So, okay, so, yes, okay. Once again, hello and welcome to this Hyperledger Sweden Meetup. And my name is Roland and I am happy to be your guest for today's session. And today I think it's a really awesome one because we have two guest speakers here. And the first one will be Raphael. He would like to introduce us his blockchain course. He has developed a blockchain course on education level. And he would like to present it to us and we will see how this goes and how we can contribute and how we can use this to improve our learning process. And the second one will be Ravi, and he is going also to present us a site project he has developed. And he has developed a so-called command line interface tool. And with this tool, we can, this tool can help to generate the configuration material for Hyperledger projects and especially for Fabric, but I think also for other projects. And, yeah, so this is a very short introduction from my side. And now I think the first one is Raphael. And when you're ready, Raphael, you can take over the session and present us your screen. And you can start if you're ready. Thank you, Roland. Thank you for that introduction. I think you need to stop your screen share so I can start mine. So good afternoon, everyone. It is a pleasure to be here. I would like to talk very briefly about a project that I've been developing in the last few months. And this project is a blockchain university level course that has been done in the context of the Hyperledger summer internship project. So my name is Raphael Balshior. I'm from Lisbon. I'm a PhD student. And I'm currently exploring blockchain interoperability. So how could we leverage several blockchains for new use case scenarios? How can we make blockchains talk to each other? And I think this is a very interesting area of research which also combines with the course I've been doing. You have my personal website there if you'd like to check some of those. I've been working with Dave Huseby from the Hyperledger Foundation. And this course focuses on fabric and hyperledger number. So the outcome of the internship was the course. We called it enterprise blockchain technologies. Because the idea is to direct the course more to enterprise blockchains, namely hyperledger projects, in a way that they can be taught at universities. So the idea is that we have a course that is extendable, extensible, and standalone. So universities can cherry-pick the modules that they want to use and easily adapt them to their audience. Currently we have two modules. The first one introduces blockchain. And the second one focuses on fabric and a little bit on number. The goals of the project. Firstly, it's to teach students the theory on blockchain. So what is blockchain? Which are the technologies that support blockchain? Which problems can it solve? For that, we divided, we associated several labs to fulfill this goal. The first laboratory talks about distributed systems. So what is state machine replication? What is a distributed system? How do separate nodes talk to each other? And how do they decide on the common truth? Which is essentially done via consensus. And to solidify this concept, we introduced the RAST algorithm, which is used on fabric. After that, some basic information on cryptography and security. So, symmetrical, symmetric cryptography. Cryptography, what is a digital signature? How can we guarantee strong authentication, authorization and accountability? And to solidify these concepts, we present RSA. RSA is not used on fabric. For digital signatures, it uses ECDSA. But RSA is quite an easy algorithm to understand. And it's typically used in universities to introduce these areas. So we thought it was a good fit. And finally, to finish the introduction on blockchain, we implement a very simple Python-based blockchain, which we call blockchain for students, perhaps for the lack of a better name. And in this blockchain, it's a proof-of-work-based blockchain. We explain some of the concepts underlying blockchain. So what is proof-of-work? How is the information structured into blocks? Each block containing a hash to the previous block. And these way, students can put their hands on the code and understand how all those concepts are linked and how they can be leveraged to build a real blockchain, let's say. So that was the first goal. The second goal is to introduce hyperlinked fabric, talk a bit about the chain code, the infrastructure, and finally, how to leverage all of this to build a full stack decentralized application on fabric. I should mention that while we have lots of information on public blockchain, so how to structure smart contracts and the infrastructure and the decentralized applications, on permission and blockchains, there are not so many examples. So for these, we have three labs. The first one introduces a use case that we implement with hyperlinked fabric, which is essentially a system for students to provide feedback about professors and about courses. Secondly, we elaborate on that system and we implement smart contracts. We explain what are smart contracts and how can they fulfill the needs, the requirements for the use case that we propose. We set up a simple version of the network of the infrastructure. After that, we leverage what we've learned before and we build a full stack decentralized application. So the on-chain component comprising the blockchain itself, the participants, the smart contracts, and then the off-chain components, which are basically web applications that contact with the blockchain. Finally, we had the last goal for this internship, which was to introduce AMBRA, Hyperloger AMBRA. Hyperloger AMBRA is another Hyperloger Lab project, whose goal is to provide an emulation platform for several blockchains based on the mini-net platform. So with AMBRA, you could set up in an easy way a fabric network and study how each component reacts as a function of the environment variable. So for instance, what happens if we dramatically reduce the memory that is associated to the order of peer? What are the implications on transaction throughput, on latency, for example? And this platform allows us to make conclusions on how robust is our network and how we can leverage a stronger network. Only two labs have been done. Actually, the second one was not finalized because there were some dependencies that we were out of our reach to fulfill, but Lab7 introduces AMBRA. So it explains what it is, what are the simple commands that you can leverage to create a network with AMBRA, and also a simple experiment. So regarding the structure, the project is hosted on GitHub. We have guides, instructor guides, and support code. The guides are documents that can be used by the teaching staff, so professors, people at companies, et cetera, for teaching the students the contents of the laboratory. That's the guide. The instructor's guide contains instructions on how to do it. So while the guide is aimed for students to solve, the instructor's guide provides hints and the solutions too for the teaching staff. And finally, the support folder contains all the support code that it's used on each of the labs. This is lab one. We can see a guide in an instructor's guide folder, like at every lab. And in the guide folder, you can see the content of the lab. Currently, we use LaTeX to define the contents. LaTeX is a processing, text processing tool which is widely used for technical reports, academic papers, et cetera. And we use this format because academics at universities are very used to this tool. While this is quite convenient, quite easy to use by academics, maybe perhaps it's not the most appropriate format to expose on GitHub. So one of the feature work directions is to migrate these LaTeX documents into Markdown, for example, so it's easier to access. And then the support code. Here in lab six, in this example, we can see that this is a typical structure for a fabric application. We have the chain code folder. We have the test network, which was forked from the samples repo. We have the binaries, and then we have configurations the specific files from our project. So every lab is available. It was pretested by some of the contributors. And it's on good shape to be tested by a broader audience. So this was great because we worked in a small team. There are already some contributors to the course, which I think them once again. And of course, this is an open source project. It's free. It's available that it is documented. So anyone who would like to leverage these courses to contribute is greatly welcome. There are some ways that you can leverage this course for your goals, which is consolidate the concepts on blockchain if you want to learn a bit more. If you want to teach or to disseminate technology. And also it provides a good boilerplate for implementing hyperledger fabric-based apps. So it contains pretty much everything that you need for a solid proof of concept, at least. So it contains the chain code. It contains a simple network. It contains a web application, which is the basis. For future work, as this course is very modular, we can introduce other hyperledger technology courses or even non-hyperledger technology courses. Modules, I mean. So for hyperledger cactus, which is the most recent hyperledger project dedicated to interoperability, Bazoo, Indie, Aries, well, lots of technology that we could use here. And that's in theory. There are other ways to contribute and other, let's say, work categories for the course, but those are the main ones. And this is my presentation. Thank you, everyone, for your attention. And I will be glad to answer questions. Okay. Thank you, Ravi. Thank you, Rafael, for your presentation. Yes. So I think one of my questions would be the conversion from latex to markstone. So I'm really used to latex for my university time, but I tried your course a little bit. And in your description, it is descriptive that you have to use, we can use Overleaf. So and this works very well, I think. But I can't work at locally with my local setup from tech studio. This doesn't work for me. But so it would be, I think it would be great that if there is a conversion to markstone, so that we can use it in a little bit easier way. And yeah, so, but you said it, that you work or in future, you will convert this course also to markstone. And I think it's a good way to do this. Okay. Are there any other questions? Yeah, just to elaborate a bit on that, thank you, Roland, for bringing that up. Definitely using Overleaf, it's quite easy, but we shouldn't rely on, let's say, external tools to use the course. And sometimes it's a bit cumbersome to set up a local latex instantiation that can compile the course because it has some dependencies on external packages. So definitely markstone would be a much easier way for the broad community to access the content. However, there is also, they are compiled PDFs from each laboratory on the release, but this is not very scalable. So definitely it needs to be converted to markstone, eventually. And maybe another question. Do you know how many students use your course or how many universities use your course? Thank you. At the moment, the course was just finished a couple of weeks ago, and it's not 100% finished, of course. I've been talking to the Hyperledger Education Materials Working Group, and we are in the process of contacting universities to see if they're interested. But I would say definitely yes. Most of the blockchain courses I've seen from universities are aimed for Ethereum, Bitcoin, public blockchains, and there is not so much material on enterprise blockchains. And with the interest of blockchain raising up, I think that eventually courses like this one would be very useful for universities and for enterprises that need to teach enterprise blockchains. Yeah, I think that's a good idea. So and it's true that there are not so many courses out there. When you look at the Linux Foundation, there are some courses. But I didn't find any other courses on the internet, for example. So and I think most people want to start with the blockchain. I want to go into this blockchain world. And they start with Fabric. And what I like on your course, I think, is that it's a little bit more about the traditional blockchain or blockchain in general. So when you start with Fabric, then you learn a lot of how Fabric, how you can configure Fabric in a script way. And maybe you don't know so much behind the technology. You don't know how proof of work works, the content algorithm works, or the cryptographic materials works, and Fabric CA or the certificate authority works. So in this in this blockchain world, there are a lot of technologies around this blockchain. And most courses only cover the specific items. So also when you look at the official hyperlature foundation preparation course for the admin certification, there you have only specific items which are covered. And there are not some surrounding technologies covered. And it makes some people, which are new to this technology, very difficult to introduce and to start with this technology. So I think it's a good idea to bring the people, not from zero, but from a certain level, a little bit closer to the specific elements of Fabric, for example, or maybe also other blockchain types. Public like permissions. I totally agree. I would just add a small comment. We tried to make this course a bit wider, perhaps try to eliminate a bit the bias of blockchain is crypto. So we tried to cover a bit consensus, proof of work, raft, which are quite different in our implementation of blockchain for students, and then more the more enterprise vision like blockchain. And this allows us to have a better foundation, I believe, to learn new watchings. When I started learning watching about three years ago, so not that long, I found it very, very difficult to get into the space, especially because Fabric is evolving so, so fast that it's pretty difficult to catch up. And also there are not so many courses on Fabric version two. This is one of the reasons that we decided to use version two on this course. Yes. So, okay, so there's one question in the chat. Why the $1 fee? So what does this question mean? No, sorry. The question was for Jaikar Joseph Jones, who sent a link to a meter group. I have a question though. Is the course available on Coursera or was it a MOOC platform or are you going to build one of your own? Hey, Omar. No, currently, no, currently, we're, let's say, the testing phase. If it's beyond Coursera, this version of the course, it should be totally open. I'm not sure if that's possible, I think so. But currently, it's only on GitHub. Probably it would benefit from having some more modules and classes before it is scaled in that direction. Okay, so you are building it still? Yeah, well, it's very extensible, as in universities that teach in semesters can just pick two modules and even the labs from those modules. So there is really no limitation on how much content can be added and there is no strict, let's say, flow for the labs. So the recommended is you to go for a module one and then module two, but you can only do module one or only module two. You can also do module two without doing module one. So that's the idea, that you learn what you need to learn. It's on a demand basis. Okay, I see. Thank you. Okay, so thank you Rafael for your presentation and your contribution. And now I would like to switch over to Ravi to his presentation. And you are ready, Ravi? Yeah, thanks, Roland. Am I audible? Yes, you are audible. You can start. Yeah, that's a nice presentation, Rafael. So probably definitely I'm going to be a part of your student in your university course. Well, okay, let me share my screen. Is that my screen was viewable for all? Please let me know. Yes, you can see it. Okay, that's right. Okay, good morning. Good afternoon. Good evening. All thanks for giving this chance to present this my site project. So the story of the site project I would call out here is I was learning a hyperlature. So while especially starting from fabric, I faced a lot of problems in configuring the tools, configuring the files. So let us apart every time when I want to modify some parameters, environment variables, I faced a lot of issues, a lot of errors. So that puts me on a journey to learn. But yes, that is a very good to learn, but that is what I thought of it. Let's have a configurator tool, a simple way of configuration tool that, you know, just that the simple modifications where we do a general, minor mistakes as a human error. So that is what I created this tool as a site project. Okay, especially this is going to be known for the learners who especially wants to learn a hyperlature platform. So currently it is just in hyperlature fabric, specifically in three environments with the different versions from 1.4.3 to 2.2.0. And the environment is single host environment and Kubernetes and the Docker of Swam. That's what the environments it has been tested and that's what we had tested it on this far. So it's all based and developed using a cell scripting and Python and Ansible for the configuration modifications. And we use the Docker Compose templates as usual that from the BYFN and UIFNs. There's another one that I have explained some time ago about this, how the BYFN and UIFN was working. It's also available in the GitHub repository. So it is an upgrade version of that. And what we can do with this tool, of course, yes, we can change their domain name however you want to, organization number, organizations, you can change organization name, you can change, you can define the orderers, you can define the order names, POS and CES. It is unlimited for all the numbers currently and unlimited channel names. And also you have a toggle between the versions, between the raft and the solo versions. And as I said, it is tested configuration in three environments, single ghosting and Docker Swam and Kubernetes. And I plan to do, expand this in further and they're going forward on this tool. So I think that's all about this from the presentation point. So if you're all good, we can move to the demo. So I am going to log in this tool. I hope you all see my screen. Yes, we are. Okay, so once you log into this tool, this tool, it is a web-enabled tool using Viti. So username passwords are listed in the website here. If you go down, it is there. You can use this login name and the passwords. So once you have this tool, you can log in and you can choose the frame. Currently it is an available for the fabric. So you can generate the configurations. So since you can choose any of these seven choices, so currently I'm choosing seven. And I can say some domain names here. I'm going to use for Kubernetes. So I'll say Kubernetes. And I will say default args. It's a default. Everything comes with a BYFN. That's why it's a staging area. And if you want to increase the numbers, definitely you can increase the numbers. So I'm going to give a default here and a name. You can again, you can give a name here. Default peer count is under Kubernetes. I have a template with a three node cluster for the demo purpose. So I'm going to choose a three node order. The order names are order 0, 1, 2. And number of CAs, again, a template for two templates as I've created now because of Kubernetes, we have two organizations. So each one will go to one CAs, go to each organizations. A chain code for demo, it's a single chain code. Single my channel. So once you provided this configuration, it generates a configuration tool. Updates the two files, config.dx file and a crypto config file. Along with your Docker compose files. So again, for now it's again wrapped. Here, we have a choice to select the environment. A single host of CAs for Kubernetes. Again, I'm going to do a Kubernetes here. The namespace for Kubernetes. I use shell of fabric. And once you're done, it will ask you an email. So you have to provide an email here so that the config will send in a zip format and do an email. So it's, so now it will generate and it will send an email. So if you look at the email, definitely it will be receiving it. So for this, for demo purpose, I already set the same configuration. I already downloaded into my lab mission. So you're able to see my screen. Yes. So I hope that you're able to see the fonts, right? You are able to readable. Yeah. So I received that email and I already received this one generated and I already downloaded that into my lab mission. So this is a file that I received over the email. And to run this, there are two things. Taranties. So you should your environment, Linux environment should table of prerequisites. This tool also generates that. So you have the prerequisites executed. Sorry. I downloaded. I assume the prerequisites to install the Docker compo, mini cube, environment and also download the fabric samples with the question of 2.2.0. You'll see that samples here. So the, the prerequisites was once I've done this. You can create some files. So you have here with the default. So I'm going to create a directory here, create a demo. And I'm going to pull this file. Hey, can you, can you go on mute? I think Omar, you're, it's a background noise we are receiving. Yeah. Thank you. Thank you. Thank you. So I'm going to extract. So you have this files. You have this screen. So you have all these files config, the config and the explorer. Creators, the configuration, the pod files. Okay. And this is the read me file. So you'll do this source. So it will give you, it will give you some instructions. You have to mount the volumes for the persistent data in the Kubernetes environment. So I'm going to give this as a environment and this will update my current folder structure. And I also want to mount, put that into the backend one. So it will be mounted in that backend. So now you have all the files here. Now, if you look at here, it says that you have to start executing this commands. So initially it will clean up anything if it is there and create a crypto artifacts. Right. So it's all, it's again, if you look out here, the read me file for the purpose, I just put all the environments here. All the scripts are there. So for us, I'm going to call the command. First one is a cleanup and create. So it executed artifacts. And the next is I'm going to do a replacement keys because in a two version, it is the private key files are in the private key earlier. It was random numbers. So of course you try to do this if you are running the different versions. So the next is I have to go and do a deployment. So if you are, I mean, if you want to do the commands, you always go tab in the next one. So first I have done this. And I have created, replaced the keys here. And now I'm going to deploy the parts. So it will start generating the names, namespace that we created and it will generate data parts now. So this is currently it is running. And others are probably if you go and look, the logs probably made trying to download the images. It's executed now. So all parts are downloaded and was able to run now. So we are good in this now. So I'm going to join the channel now. So join this command calling this particular service. So it is going to join the channel. So all the peers are joined the channel including auditor. And also the PS0 was become anchor peer now. So next I'm going to, so now what this template is going to be doing is going to execute the external chain code. That is what I have to do this Kubernetes. So the chain code will be a, what is it? Exclusive of Docker container, which is the feature of version 2. So before I start installing it, I'm going to build the chain code container. So I'm going to build the chain code. With this, the chain code is currently some marbles. I got chosen. Chain code was built and it's available. The mails are available. And now I'm going to install the chain code. Now the script is switching to R2 CLI here. So once it's switching to R2 CLI, it is again installing in the R2 as well. I'm getting approval. Yeah. So now you can see the two organizations are getting approved with this chain code. So now I'm going to start, I'm going to start the chain code. So now it's the chain code marbles was getting deployed for my organization. So here, if you look out here, the message R2 CCID, this is very important because once you install this CCID, this will be updated into the chain code containers for each container. So then that's where it is getting, I mean, the communication happens with the peer and the chain code respectively. That's good. So it's executed. So initially it was in the transactions and I was doing a query from the organization one and the same thing is now it is executing from the querying from the R2. So that you can see here, it was executing from the R2. And then it also executed, the other one was executed from the R2 here. This was executed and also querying it. From the R2. So this is what's done from the fabric point of view. Now, if you would like to start Explorer as part of a package, you can also start Explorer because the motto of this part is completely the person who comes out from the beginning to learn hyper ledger. So she should have complete package of it because he should be easily to understand what are the things that you have to give it, the changes, versions, commands, everything. So if you go from the menu based from there, you can able to understand from the fabric point of view to explore and kind of calibrate. So that's a package that can be reading out to understand the fabric one of the number of hyper ledger. Okay, so it says it's running now. So I'm just going to check it out so that it is able to connect it to the network or not. So yeah, it's connected and it started grabbing the blocks here. You can see you can get the blocks. So let's browse it before browsing. We come to know what is the services comparison. So currently I configured with 31313. So for that, I have this one. So if you look for just for it, we do the mini cube service Explorer. So you will get the service what services it was getting exported. I'm so sorry. It's not HL of 8. So this is the port that we have to run. Since this open to machine was running on the virtual machine on my Windows laptop. So I'm not able to browse this from my laptop. So what I am going to do is I have already started headless Firefox app in this open to machine. So for that, I'm going to use my X launch for the Windows environment. So if I'm going to use Firefox, yes, fine. Why this is not happening? Because I didn't export this to the session. So I'm going to open the new presentation. So this is I'm doing it clearly. I'm doing this mistakes. I'm going to run Firefox here. Do you able to see my Firefox screen? Yes. Well, okay. So let me put because always this happens here. I'm going to private window because some catchy is always there. So if you look at this, so you'll get explore over here. So you can completely that's a case. So the next time I was working out on the caliber that I'm going to integrate this and also working out on the multiple templates available or custom templates that you can mix around with the books. That's all about this too. Any questions? Yes. Thank you for this cool presentation. So I'm very expressed and impressed. And that's really cool work. I think so. I have tried your system in one week ago, but it doesn't work for me. And I did the mistake, I think so. But I think that's a really impressive project you did. So thank you for sharing this. And it's really, really cool stuff. I think so. Okay. So are there any questions out there? Maybe to the Kubernetes. So because this is new, I think. So in our series here in this hyper lecture study circle, we have always seen the Docker or Docker swarm. But we have not Kubernetes seen in action. So that's also cool that we have, that you did this with the demonstration with Kubernetes. So maybe any question to this from the community? Yes. First, I would like to join everybody here, I think, by congratulating for all this impressive work. I'm sure it would be of many users if it is publicly available. So the question is regarding the Kubernetes orientation. Is it production ready? And the second question is in which language do you, did you develop this implicit tool? And is it open source? And how can we contribute? So thank you again. Yes. So the first question, the Kubernetes, it is runs on the mini cube. So, but the configuration that the template that we have, yes, you can get it into the deployment to the production environment. Of course, you have to do some changes according to your local environment. But it's a template, it is going to send you, the tool is going to send you over the email. And you can deploy, whether you want to be deployed on your local mini cube system, or you can deploy it on any AWS or any environment, in production ready environment. That's the one. Number two, for the question, this tool is developed completely based on the shell scripting, bash shell scripting and Ansible and Python. These two, three major components have been used for developing this tool. Third, for the contribution, of course, yes, I'm going to put that into this tool, open source, into the, I mean, open source in this one. Before that, I was optimizing this. I was doing the optimization to answer the other question to Roland. I was optimizing this tool. So there are some errors was came in the last week. So that's where you may have to end up something. But definitely it is, I'm just fine tuning it and optimizing the script for the better performance. And also you're looking for the test cases and the contribution point of view and development point of view. Soon this is going, this tool is going to be available in the open source, towards it up. Is that answered your question? Yes, it is. And it's not. Yeah. So if you look at that, the web portal, HLTool.Knowledge Society, you have that link over there for the GitHub. It will be going to be available in that same location. That's what I was waiting for people can do test. And if they have any errors and issues, or probably if they open up some PR request or something, issues. So probably I can go and fix it and wouldn't elaborate. So that is what I was working out. Before I update to open source, I want to clear minor issues or major issues. Once that is done, definitely this tool is going to be available in open source. But I'm sorry, I didn't heard from the, is it Python or Python or is it Go or something? I understand here is a combination of Bash scripting and other things, but mainly what's the orientation? Yeah. So I also working out with Hyperlegislabs for this. So to put that because of other frameworks that I'm planning out. So yes, you can. And that's a question from chat. I just posted that link. Any other questions? Okay. So if there are no questions anymore, then I have to say thank you to all contributors to Raphael and Ravi for this really, really impressive session today. And yeah. So I think we are good in time for today. And if no questions, then we can close the session today. And we will see us again on the next session. Thank you for all. And stay safe and stay at home. Thank you, I say stay safe. See you. Thank you.