 All right, the live stream is on. The court to the cloud is on. Okay. Well, I'd like to welcome everybody to the Building and Decentralized Application GAP, Morgan State Seminar. Today, Tuesday, June 6th, 2023. As with all Linux Foundation meetings, this is held on the Linux Foundation Antitrust Policy and the Linux Foundation Code of Conduct, our technical oversight committee chairperson likes to say be excellent to each other, which sums up our code of conduct. I'm now going to turn this over to Professor Mdad. Thank you, Sean. Welcome. Hello and welcome. I'm Ali Mdad. I'm the director of the National Fintech Center at Morgan State University. That serves not only Morgan, but also more than 60 other HBCUs around the country. I want to welcome all of you who are joining us today for this important webinar. We thank Sean Bohan, David Boswell, and Guy Jones for their constant support through Hyperledger, organizing a number of important and outstanding, I should say, webinars and workshops over the past few years. We also thank Jim Sullivan and Kyle Nielson of the Blockchain Academy for preparing this informative session. They will deconstruct and adapt and take us through different stages of the development. And we want to welcome again all of you and invite you to come back to the Fintech Center's website for the recording of this session and also additional information about the wonderful work that the Blockchain Academy is doing in educating and providing very informative courses and sessions without further ado, it's my pleasure to introduce Jim and Kyle. Hey, thank you so much, Dr. Mdad. Hello, everyone. My name is Kyle Nielson. I am the Customer Relations Manager at the Blockchain Academy and I'm going to share with you a little bit about the Blockchain Academy. So then we'll hand it over to Jim to walk us through this presentation. So the Blockchain Academy is an ecosystem and we provide emerging technology education, specifically around Blockchain, AI, Web3 technology. Our mission is truly to help the global workforce to engage with this technology and not to be afraid of it as many people are afraid of new things and sometimes change can be a little scary, but we see a problem and that problem is that there's a skills gap and so we want to bridge that skills gap with not only technical folks, but also non-technical folks. Web3 world is going to grow very rapidly and change a lot of the ways that businesses operate. So we will be certifying, we have a distributed platform that allows for this education to be utilized in mass and by partnering with communities and universities like Morgan State and Dr. Mdad. We hope that we can propel the education and the knowledge of Web3 faster than it ever was going to be before. So I'm going to now pass it over to Jim Sullivan. He is our head instructor and CTO at the Blockchain Academy and he's going to take us through this workshop. Thank you. Great. Well, thanks so much to Sean and thanks again to all of you Sean and thanks again to, well, thank you Kyle. Thank you Sean, thanks David of the Linux Foundation, David Boswell, Sean Bowen, Dr. Mbad and everyone at Morgan State. We'd like to again extend our thanks to the Linux Foundation and Morgan State for sponsoring this presentation and we're happy to be here. As Dr. Mbad stated, we are going to start off with deconstructing a decentralized application. So we, and then we will be moving on to this demonstration of the Ethereum virtual machine on hyperledger fabric and we'll be making, we'll be very, we're very happy to be making a special announcement about that and support for the EVM on the hyperledger fabric. Hopefully everybody can see my desktop, my desktop presentation. Is that, is that coming in clearly? Yes. We need fun. You're good to go, Jim. Okay. So, okay, fantastic. So again, we're going to be looking at running a smart contract and DAP and we're going to also look at running that on hyperledger fabric and as Dr. Mbad said, we're going to take the, we're going to be deconstructing the decentralized application. So we'll take a look at it in that way and so we'll take a look at all the parts, putting it together, the architecture and we'll also provide links to a GitHub so everybody else can with this video and also some instructions that we're happy to provide. You'll be able to repeat all the steps. We'll also talk about why use the EVM for hyperledger fabric applications briefly on that and we'll look at the EVM support for hyperledger fabric applications and then finally we will have another demonstration of a distributed application or DAP on hyperledger fabric and then we can talk about some next steps. So at the end of this presentation, you don't have to worry about this too much now. We will bring this back up again, but you will get the chance to either scan the QR code or navigate to one of these websites. There are four next steps just so we don't want to present everything and then have you wondering what to do next. There'll be an opportunity to take some recourses. Also on take a hyperledger fabric course as well, hands-on, completely self-guided tour. There may be an opportunity to for a live workshop. You can stay tuned for that. There is an access code, so as soon as you register, there is an access code so you can be brought to these free sessions. Before we get started, let's just take a brief look again at the architecture of hyperledger fabric. So as everybody knows, hyperledger fabric is a consortium blockchain. So it's not a private blockchain like we think of a lot of times with either Ethereum or Solana or Bitcoin. This is meant to be used for business, for the enterprise. And it can either be for a single enterprise or multiple enterprises. So it really has a lot of value with a consortium of enterprises use hyperledger fabric. So we have our two enterprises here or organizations. And we can see here there are several peers. As you can imagine, right? There are several nodes that run on the blockchain network. And here is where the ledger is actually housed. So transactions are initiated by a client application. And then they are sent to the peers for endorsement and also for ordering. And then all of the peers take care of again endorsing signing the transactions. They reach finality and then the entire ledger is updated for both enterprises. So sometimes you see organizations on an architectural diagram and this is exactly what they're talking about. And there is also an ordering peer here that orders all of the transactions because as you can imagine, order of transactions is very important when we are completing, right? When we're executing several transactions. There is a book. So please, if you get a chance for programming in Solidity for DAP development. So please navigate out. It's called Programming in Solidity. And you can see here it is available Kindle Direct Publishing. So if you get a chance, please navigate out to Amazon and take a look at it. And we will be updating it. It does need a little bit of updating, but everything in here is quite current. And please give us a book review as well. Let's take a look at a distributed application as we get started. So DAP as it's often called DAP stands for Decentralized Application. So the way the DAP is constructed is it has a blockchain component and that is the distributed part. Not all of a distributed application is distributed. However though, the smart contract that's running on the blockchain, that is absolutely distributed. So that is continuously running everywhere. And then what we do is we build an interface on top of the smart contract. And the interface can include other logic. And that part runs on a web server. Now quite often this is not decentralized. There are different ideas for making at least multiple copies of the web server available. And obviously that can be done with things like with different profiles you're able to contact. And we all know that a web server can be set up to point to several different instances. So there are many, many ways, many different levels to construct our decentralized application. Either way though, it is a typical web application or mobile application that has a user interface. The user interacts with the web server and the web application. The web application has logic to actually call the smart contract. And that smart contract is running on every node on the blockchain. So if you're familiar with the architecture for web or mobile applications, you'll be able to pick up distributed applications pretty quickly. Really the big difference is this layer and I'm not trying to minimize in any way. This is not trivial at all, the blockchain layer. But again, if you're familiar, there is a special code. We'll take a brief look at it. That's able to call and interact with the smart contract on the blockchain. So you can go ahead and execute all different types of transactions, play games, exchange NFTs, free aid NFTs. So there's a lot of options you have with distributed applications. The way we start off is, first off, we need a smart contract. So there are many tools available for building smart contracts. As you can imagine, the Ethereum virtual machine, which can run on more than just Ethereum, you're probably picking that up. So just like the Java virtual machine can be installed to run on many hosts, many environments, the Ethereum virtual machine can run on many hosts, many environments. We're not limited at all to the EVM. However, the EVM is popular. It has a large market share and it has a rich community and a rich set of tools. So this is what we'll be looking at today. And one of the products that we'll be looking at, one of the tools is called Remix. And Remix is here at remix.etherium.org. It is a browser-based IDE. And just like IDEs, it's built of like most of the IDs I'm sure you're familiar with out there, hard hat or visual studio code. It's got a console, it's got an editor, it's got a file explorer. So we'll take a brief look at Remix. And Remix is where we will build our smart contracts. We'll start off in Remix. Get them working first, debug, understand them as much as possible. And then we will take the next steps then to compile them on, to compile the smart contracts onto the blockchain. And some of the other tools that are provided and in our DAP, how we will deconstruct it, we'll be using the truffle suite of tools. And one of the tools we will be using is Ganache. So there is a, I guess you could say, you could see Ganache if you look closely here. There is a, I guess you could say a candy theme when it comes to the truffle suite. And again, one of the tools is Ganache. Ganache gives us actually a local blockchain. So we can install locally a blockchain. And that is also our Web3 provider. Within our browser, because we're going to have a browser-based application or a distributed application, we are going to use MetaMask, which comes in the form of a web plugin. And we can use MetaMask for our wallet application, because most often you are going to interact with the blockchain with some type of a wallet, and you want that wallet to be convenient. There are lots of different ways to implement the wallet, but MetaMask is popular, and we'll take a brief look at how we can configure MetaMask. For our browser and for our blockchain. If we look closely here on the truffle documentation, one of the environments or one of the tools or one of the products or one of the blockchains that is supported by truffle, look at this hyperledger fabric right on here. Court at one time, I believe they have dropped support at least for now. They may be coming back, but we can see also Filecoin, Quorum, Tezos. So this is a, it's really, it's going to be quite useful to be able to use these tools on hyperledger fabric. So one of the things that we will be doing, maybe we'll take a look first, is we will be configuring, we'll be configuring Ganache as our web three provider or our blockchain provider. And then we will have our smart contract compiled on to Ganache. So we're going to use truffle. You can kind of see it in the background here. Truffle is going to compile that smart contract on to Ganache. And then from that point, we're going to have code. We're going to have special code, which is right here, which is going to be running at least for right now locally. And we're going to use this code to first of all build our web or our mobile pages, but also interact with our smart contract. If you look closely here, you can see web three provider and we can see where the web three provider is running. And it has command line code for calling the smart contract. And you obviously can do much more than just call a smart contract. We'll also see an example there where you can interact with even a other tools that are provided. You can interact like a full stack application. So say you wanted to maintain a list of users. You can have a local centralized MySQL database that you can offload some of the work to for maybe user login or other items such as that, or maybe to keep images in if you want to have some type of a search application. So you can have that multi-level type of approach, which is like full, sometimes we call that full stack plus. We have the database level. We have the web application level. We have the user interface level. And then we also have the block, the blockchain level. So almost like a full stack loss approach. And we just looked at this and we'll be putting it all together. So let's take a look at a live demo here of deconstructing our DAP. And you can see here there is a GitHub link down here. This will be available to everybody at the end of this presentation. So you don't have to worry too much about writing, jotting anything down quite yet. Let's take a look. So we'll first begin with remix. So this is remix. And just let me just make this a little bit bigger. And this is our smart contract. So our smart contract runs using a very popular programming language called Solidity. And like just, and if you want to learn more about Solidity, one of the sources is the book that we referenced at the beginning of the presentation. The name of the smart contract is Tali. And Tali does something really simple. It increases. So there's a function here called increase and there's a function here called decrease. So there's an initialization, just like you would expect. And then we can get a count of a value. And our count, our initial value is zero. So by increase, we'll increase it by one. By decrease, we will decrease it by one. So first thing we're going to do is come over here and we're going to compile Tali. So that just ran. And what this does, it gives us two very important items. It gives us an ABI, which is an application binary interface. So Solidity doesn't execute on the virtual environment, on the EVM or Ethereum virtual machine. It compiles down to a bytecode. And that's in the ABI. So if we take a quick look here, let's go and let's click on this again onto the clipboard. And let me make this a little bit bigger and get an idea of, so this is actually compiled to data structure or data format called JSON. You can see the name value pairs there. So that's what happened with our smart contract. We can see the integers, how they're put in here, the inputs, we can see how they're indexed. And we can even see on here the function calls that are on here. And the other item that the compile, when we compile gives us is something called a bytecode. And we'll be actually needing this, at least right now. We'll be going through this on hyperledger fabric. Let me get a chance, but you won't stay on that permanently, but there's our bytecode right there. So there will be ways to automate these processes in the future on hyperledger fabric. So for right now, we get the application binary interface and the bytecode. And again, you can see increase here that we have for our function. And if we look a little further up, you can see decrease there for our function. And so now let's go out here and then our next step would be to use truffle to compile the smart contract. So first thing we need is, well, the next thing we need is a project. So our project, and unfortunately I can't make this any bigger, but we have a project here that we use and we keep our smart contract, our tally contract in here. So the same contract that we will be running is right here within our node project. And bear with me here in one second. Before we move to this point, we want to go ahead and we also want to deploy this smart contract. And we want to make sure that it is running the way we would expect. So we can get our count value right now, clicking this button. The good thing about remix is it gives us this user and once we have our smart contract coded and when once we have it compiled, gives us this user interface. It's really simple. It's not all that fancy, but they give it to us for free. So we, it's a great way to test our smart contract and it also has a debug module as well. So we can get our current count at zero. Let's click on the increase button and that brings back a success. And we can increase again. And we can also take a look at get some feedback of what would be going into the blockchain because this is the simulated output to the blockchain. Let's get our count now. So we've clicked on increase twice and now our count is two. And let's just decrease it once. And now get our count. All right. Now it's back to one. So we see here, our tally contract is working. So great. So what we would do is get our source code and we would go into our project and we would put tally in here again. Here's tally again. You can see it. And we would compile it onto the blockchain. And we'll take a closer look at all of these components here for our project. But let's, so here's where we would access our smart contract, which is tally. So we've already compiled it. So what we would do next is just to make sure everything is running correctly, we would actually run the truffle console. And this comes back. And the first thing we would do is we would create a new instance because tally has been filed to the, to our web three provider to ganache. So let's take a look at ganache. So here's ganache running for us. So we can see here, and we're going to be using this count. And what ganache is giving us again is a blockchain. We can look in here. We can see the individual blocks of the blockchain. And it also gives us account numbers. So here this is our public address. And it also, well, it also gives us a private key here. We can also see a private key. And we, it also gives us some virtual currency to work with. So what we're going to do is now that we have tally compiled, we're going to say a new instance, we're going to create this object new instance, which is going to become our, kind of our tally contract. So it is running there. And what we can do right now, is we can literally type now new instance, and it brings back all this information that is part of that smart contract. But let's take a look at the address at. So it, the smart contract will have an address on the blockchain. So we can call the address. And look at that. So it brings back our address right here on our ganache tool. And the way that we clear truffle is control L. So we'll do that periodically. Right now let's, let's call a function. Remember that get count that we saw a little earlier. So we have new instance and we'll call get count on it. And again, get count was right. Oh, right here. So we're going to call it. It'll, it'll return the current count, which we initialized to zero. So what, what we'll do now is, since we used result, RES stands for result will do result zero. And the zero is actually right here. And I know this is hard to read. It's bringing back a BN, which stands for big number. We don't want, we don't always want big numbers. So you can call this function on here and convert it to a simple integer by just a, just a two number and see how it just brought back zero there. So now let's, let's call increase. So we've already used result zero. So let's, let's call our next result result one and that'll actually create. So everything now this, this increase has been essentially added to result one. And again, we can return result one where we can call get count on result one. Let's, let's do that and call result. And it's called it result two. So I know this part looks, looks a little tedious and we can see now it's increased from zero to one because we call the increase. And again, we can do that same thing we can say to number. I know this looks a little tedious, but this is all about constructing and or deconstructing our gap. So you can see here how we're actually to, we are actually able to call our smart contract from the command line. And you might say, well, why are we doing that? Because this is what our gap is going to do. Everything that we're running right here is the, this is what the gap is doing through source code from behind the scenes. Let's try one more time to run another increase. And again, that's we, we have result three and let's call it get count on it. We'll just take the source code from up here and copy it in, paste it in. Oh, I, I, I, I, we shouldn't, we have to use result four that identifier was already declared. So we have to use result four and again, we'll call it get count on result four. So we'll do constant. RES four, RES four. So everything that we're, we're looking at right now, this is the same thing our, our DAP is doing from behind this up. Okay. We'll make it, does five and RES five is now at two. And one of the items that we would do is the two number. Again, we would probably put that again in our DAP because we don't want a big number coming back like this for users. This is a lot for them to look at. And then let's, let's try the decrease. So in order to avoid any kind of issue here, let's spell out the word result. And what I'm going to do is clear. And that'll be the decrease and let's, let's bring our count back on results six this time. Cause you can't reuse these and then let's just try result six and that brought it back to a one. So we can see our contract is working. But again, we can see here that now our, our count is back to one, but this is a good idea of what's going on behind the scenes. Cause if we look back at our presentation briefly, we saw right here, what's going on here? Well, this source code that's right here, this is what is, this is executing those commands that we just saw. So it's important for us to know that in our deconstruction. And now that we have, now that we have all of that running, let's take a look at a different DAP. So our other DAP is going to be called election. And one of the big use cases for blockchain is going to be voting, right? And then not just voting in, in our elections that we have for government, it could be really any type of voting that we want to have. We want to get some data on that we want to have, maybe it's in marketing. It could be in many different, many different contexts. So we want to be able to have, have get votes, tally votes, but validate that they are fair. So this one, we have candidates. We create a candidate with our smart contract. Again, we're back here in remix. We put some rules in here. We initialize some candidates. We have an ad candidate where we add their name, give them an ID number, candidate count is their ID number. But also we vote and look at this, we're going to require that somebody has not vote, that they haven't voted before. So once you vote once you get your, your address actually a variable for your address set to true and you won't be able to vote anymore. And we'll actually just, because that's the one big rule in this smart contract that we want to validate that is working. So let's again, so we've coded up in Solidity. We have a vote function. We have an ad candidate function. We have a constructor to initialize. So notice it's calling ad candidate here and adding all of our candidates for the ballot. And then we are using these functions here just to build up some data structures and to make things public out to the log. And again, we will put a user interface on here so we can capture the tally easily because this is obviously not all that user friendly. So again, we'll click on the compile. I already ran into an issue here. Oh, look at this, bear with me here one second. Let's see if we can get another copy of this smart contract into a different browser. So we can see here election and we'll click on the compile here. And again, we have the ABI and the bytecode and we are able then to deploy. And again, we can see our candidates. So we know who our candidates are. We can see candidate one. We can just put a one in here and bring back the information on that candidate. Notice this candidate who is Ryan Williams. This is a little hard to see. The vote count is zero. And let's look at the vote count for candidate number two. Also vote count zero and maybe four candidates six. Okay, all vote count zero. We can look at our current candidate account is six. And here we can actually put in an address here on the voters and bring back that information. I don't want to just go up and copy the address but we can also bring back the different addresses for the voters. But let's actually run our vote application. So again, we put in a candidate ID here. So suppose we want to vote for Bryant. Put in candidate number two, click vote. And that was successful. And now let's take a look at the vote count for Bryant. Put in candidate number two. And now notice it's up to one. Suppose I try to vote again. Suppose I say, I don't want that part. So this is the big test. So let's come in here. The, suppose I want to vote for candidate four instead. I click here. Now it's saying, oh, I can't vote anymore. Now it's zero. So we can look here, right? And we can see, and did candidate four get my vote? You can put four in. And the vote for candidate four is still zero. So that rule is being enforced here on the blockchain. I can't vote again. So now what we would do is we would take the source code and let's take a look again. And then we would look to build up a project. We go in here into election. And here is our smart contract here. The same smart contract that we just ran and tested. All in there. And what else is here? And we actually have that, that source code. So we can come in here and there is this source code that now calls the smart contract once it is deployed. If we take a look here again, we can see a web three provider. If we look down here, we can see the election is act. The contract is actually being being loaded. The candidates here are being listed. So you can see here we can return candidates. So that same, those same steps we were going through those fairly tedious looking steps. This, this is called web three JS. This web three JS is actually call is actually executing. Those same, those same commands in order to build our, our DAP forth. And one other thing that I like here is we have a, well, we also have the HTML, which builds that initial presentation, that web page. So we're going to call this the coolest kid in the class, the coolest kid election results. Some other things that Truffle can do for us, Truffle can actually run testing for us, which some of you may be familiar with unit testing. So unit testing validates that all these functions are still running. So we're actually able to call the vote function and then pass in what we think the results should be, what, what, what the correct results would be. And then maybe some error messages in the event that a bug gets introduced, because a bug can get introduced, right? To our applications that we always want to make sure that they are up and running. So we can see here we are actually calling up on the vote counts. So we're recording that. I like this. I like the testing. We continuously, we can continuously run the testing. Let's take a look at an example here where we can type Truffle test. And it's going to go into our test folder. And we, I already compiled this. So it's saying everything is up to date. But here, I don't know if you can see it. It's actually running the tests. So we had four passing tests. Oh, we had one failing test because the, I added a different candidate. So the vote counts were off. So Ryan Williams was not expected in that, in those tests, but that's what this is good, right? Now, you know, okay, now I have to go in and update my tests. So I have four passing tests and one failing. And we can continuously validate that this is still running, right? That whole idea of regression testing is there. And all those same good practices from software development are still here in the development of our DAP. So now we see that what is our DAP made of? Well, it's made of Truffle here. Again, let's remember this, this account here, 6315 and it currently has 98 ether in it. And so we've already run our tests. Let's take a look at our browser. So MetaMask, we talked about earlier, is going to be providing the wallet. We can see here that we have 97.99 ether. And there's that 6315. It's kind of hard to see, but this is now MetaMask is pointing to Truffle here that's running on the desktop. And again, we can see these blocks here of our blockchain, our virtual blockchain. And this is a good thing to do. This gives us, you know, gives users, test users the same experience as the live blockchain network. It allows us to test and validate before we spend some real value out there on the network. And it's, it's really fast. So these types of tools are available to the EBM community. And another, you know, it obviously is another great tool that will be, you'll be able to use on hyperledger fabric very soon. Let's go back in here to Truffle. And let's start up our project. So let's clear this. And we are using Node.js. So in order to start this, it's npm run, in this case, dev. And notice there are, there also are a few dependencies here. And let's just take a quick look here. If we go in, going here to election, there are some dependencies right here. The one good thing about the, about this DAP that we have built, it's relatively simple. If we look here, we're, we only have really one dependency. Let's close that too. And that is, I opened up the wrong file. That is the light server that we just saw light up. And you can have a lot of dependencies, but then you've got to make sure that none of those dependencies get deprecated. So this is the one that we use a lot for learning because it tends to be very robust. And that all is part of this project here. You have the read me file that's right here that explains that everybody had to run it, right? And npm run dev. But I am going to stop it for one second because I do want to take you through a formula, at least a simulated compile. Just clear this. And let's call truffle. And instead of compile, we're just going to do migrate. Migrate does do compile. And it also migrates it to the target. And the target we have set for this is a local target. You'll see in the feedback. So it compiled our contract. It also, we also had it set for local host. So it's compiling it to the local host. And if we look closely here in our contracts folder, we can see today's date right in there. So we actually in a way recompiled. And we're getting all this feedback here. So this is something that we can expect to say. So now let's clear this again. And do our, and now let's go to our browser. And in this case, it's going to be local host. And it's with node it's running on port 3000. So we can see here our smart contract. And again, just to remind everybody what this should look like. We have these candidates. So we see here. Ryan, Ryan, Brian, Sean, Alan, Paul, and me, Jenny. So these are all of our candidates here and all of our smart contract. Notice there are no boats is surrounded by some of the items that we put in our HTML and in our web three JavaScript. And then we have our dropdown again with our candidates. So this is how we're going to vote. So I wanted to vote for candidate for last time. I accidentally voted for candidate two. So let's vote for candidate for this time. And notice our, our addresses right here, our identity, our identity is coming right here from the blockchain. So I need an account on this blockchain and nobody else will know the private key and the public key. And also we don't know who this is. So this is just ours. So we can click vote here. Refresh this, resynchronize. Okay. There it is. Now, Meta mask is opening. It's asking us to confirm. We click confirm. And now we get back the results. So we can see here, Alan has one vote and take a look at this. I cannot vote again. So this ID right now, at least in this election has no other way to vote. And this is permanently reported. And we can take a look here. At the blocks. We'll see that there was a new block just mined right now. So we can see June 6th. It's kind of hard to see, but this block of five 47 was just mined right now. We can go in and take a look at some of the details. If we wanted to, but this shows us the simplicity, right? This is, this is a real deconstruction here. We're looking at kind of the, a lot of the internals. Of DAP development. We're looking at some of the, a lot of the internals of DAP development. So, and here it is running here. So let's take a look at the same principles over on, on hyper ledger fabrics. So just give me one second here. I'm going to stop sharing here. And I'm going to just bring up a different desktop with hyper ledger fabric. Okay. Can, can everyone hear me now? We can hear you, Jim. Thanks for being there shortly. Okay. So we've got a, we've got a, we're, we're very happy to announce that we will be bringing the new maintainers for the, the EVM. This is our first announcement here. So the, the on three 60 team powered by the blockchain economy or the new maintainers of the fabric EVM lab, which is right now it's a lab. So it's got to make its way up to a product, but is the fabric EVM library. So look for that there. We expect that to be out very soon. We're going, we're still moving through the application process, but we will be again, supporting this, this product had gone end of life. It was previously known as hyper ledger burrow and had gone end of life, but the EVM is so ubiquitous, so popular. The community is so big. We, we thought this was a real gap, not having this available for a hyper ledger fabric. So we were very happy to be able to bring this back to the community to allow all the EVM developers and the tools to be available on hyper ledger fabric. Because again, there is, it has a lot to offer and hyper ledger fabric has a lot to offer. So we saw that as a gap. So we were very happy to be, again, to be the linkers of this product and allowing the same process that we just saw for building and deconstructing adapt and then building a new gap or building other hyper ledger applications using solid EVM. So we're really happy to be part of it. A few things there. Again, there are tools that are still currently use the, what was the old product of the EVM. We can take a look here, products that their documentation still contains the instructions to, to use the EVM hyper ledger fabric. And we can see here the truffle suite still uses hyper ledger fabric EVM for EVM. So we can see here that we can use that same truffle suite. We can see, we will see the, the exports that are part of the project using port 5000. We'll take a look at that. We'll actually see that we use port 5000. A few things. We might go through the whole installation process. I've taken you through a lot of command line activity. So I don't want to, don't want to bring everybody through that again, but we will actually see on here, there is a container on hyper ledger fabric where EVM actually runs. It's called EVM CC. If you look closely here, you can actually see it here at EVM CC. We might take a quick look at it. Then we're actually going to use NodeJS and Web3 to work with the smart contracts on hyper ledger fabric. And again, we can see here, we can use it natively as well. So for native type of applications or work with NodeJS and Web3. So it does work both ways. You can, obviously we have remix available to us on, for our hyper ledger fabric application. So one of the greats, we'll actually be running a contract. We'll demo a contract and then we'll actually run that on hyper ledger fabric, but we'll have remixes that visual development fire. And again, we can see here we have native, natively hyper ledger fabric. We can see here that we are, the Ethereum version machine. And we're also running, so we're running it natively right from the fabric container, right from the clear command line. And we're also able to get into Web3 and NodeJS running on the same host. And here you can see the big numbers that we, the big number that we just saw. And this is a, what else will, this is the same type of architecture only involved involving hyper ledger fabric where we will have a Web3 proxy here which will be running our hyper ledger fabric. And again, this will be running our DAF. And we can see here the fabric EDM library is supporting that. So let's go in and take a look at our demo before we get in further. That's all. I'm just going to put the presentation back up here for one second while we pause sharing the one. Hey, Jim, if you have not paused sharing, we can still see. Let me see what I'm sharing here. Okay, yeah, that's what I want. I just want to just bring this back up here. I just had to read, for whatever reason we start this instance, it became a little unresponsive. Not a problem. We can see currently your PowerPoint deck. Okay, great. So let's resume sharing here. So let's go through some steps here on hyper ledger fabrics. Let's exit this. Now I have a few little items over here that we'll go through first. So we already have our Web3 provider running. So if we look here, we can see, let me make this bigger. So this is running on Fort 5000 and this is our Web3 provider and it's actually running out of this window right here. If you look closely here, this is running what we call Fab3. So this is the EVM running on Fort 5000. You can see it right here. Let's take a look here at Remix. What we're going to do here is we're going to run an application called student list. And so you can again see our source code right here. And we're going to run this out of hyper ledger fabric. So let's do our compile year of student list and let's do our deployment. And we can create a student or we can mark a student as absence. But here are our initialized students. We have four of them here and we can create a new student we can call Williams. And let's bring back some information on student number one. So we see Tim Baker. Notice Tim Baker, the present flag is set to false. So we'll toggle that a little bit later. Now we have a student 5 which I believe is Ryan. Now they came back and let's create another one called and that should give a student 6. Okay, so now let's go in and let's we know that student 5 is currently marked as our student 5 here. It's currently marked as absent. So let's mark let's make a student 5 let's mark as present. Let's mark Ryan as present. And this flag now should should become true. It is. Same thing with column. Let's do the same thing with column. And now when we run this now the present flag should be also true over column, which is great. So what we're going to do is do the same contract that we see running here and we're going to deploy it on to see this we'll go through these steps. Now for us we're going to have to use the API. So in our compiler here we're going to have to use the API and the bytecode. So that's going to be really important for us to but there will be obviously tools for us in the future in the very near future that will be a little more threatening. So we already have EVM loaded but we said we'd take a look at it so let's open up a new terminal and make this a little bit bigger. We can see one of these peers said EVM CC right here and that is our Ethereum version and so that's where and we could see all the rest of the hyperledger network. Remember we saw the peers at the very beginning. Here's the orderer here is the the CA and we also have our EVM CC here. So that is and that's also working with the VAB3 or the EVM provider. So out of this window here now let's type, let me make this a little bit bigger let's just type node here and start node JS and the next thing we're going to do is we're going to create this Web3 object. Now again, this is the same thing that our DAP will be doing and we will get a brief demo of the DAP. Okay, great. So that's returning our feedback and now we're going to set that Fort 5000 that application running on Fort 5000 to our Web3 object and again what's running on Fort 5000 this is our EVM provider and that always has to be up and running at least in the background again here it is right here on localhost on Fort 5000 so that's key and every even what we saw earlier we do have to we can return our accounts and we do have to set a default account that is required here so paste let's up. Now we have an account here and we do have to set a default account so we'll use a default account that came back so we'll copy this in paste here and what we're going to do is take this account that came back right here and we're going to set that as our default account and control L clears the screen here so now we have our account set up now we're going to use this ABI so we this is the same ABI that we got from here where it says ABI for the smart contract so this is how we're going to deploy the smart contract so right now we're not using any tools we will be able to use tools like Truffle shortly so we just this product needs just a little bit of maturing it is running it was end of life so it just needs a little bit of maturity and you actually through the Truffle suite so we can use tools like that so we can actually make skip this step well we wouldn't be skipping this step but we would be using a tool for this step but essentially what we did was we took the ABI and we set it equal to this simple simple storage ABI and next we're going to take simple storage well shortly we're going to take simple storage ABI and we're going to add it to our our simple storage variable our simple storage bytecode we've got to also get the bytecode because the ABI and the bytecode are very important for deploying our smart contract and we actually need this bytecode now and I already have it right here so I'm going to just bytecode really long oh good that worked okay that's always a toughy there in any type of the demo and so now we have our simple storage bytecode so now we're going to create this simple storage object and we're going to pass into it our ABI that we just set shortly or we just did just before so see simple storage ABI so we're going to create this object into storage and break that worked now we're going to deploy our smart contract so this is the deploy step so we're going to deploy the ABI and the bytecode we're going to run this command to deploy sometimes it's a little slow okay great so that ran now we're going to create a smart contract object that we're going to call smart contract and this step here remember we needed the contract address we definitely need the smart contract address so let's do a control L here and this step we still have to go up and find our smart contract address again we won't have to do this with tools the tools will return so tools like truffle but this is our smart smart contract address right up here which we'll just copy into the buffer because it's a little much and into our here that we're using in our next command we'll need the smart contract we'll save that great so now we're going to now define our our smart contract object remember we used new instance a little earlier instead we're going to use my contract paste and now we're going to create now all that simple storage which included the ABI the bytecode it's at this address and now we're going to use my contract for that object that worked so let's do control L now and let's call some functions so my contract hopefully everybody can see this clearly dot and remember students and let's return some information on student one I believe that was Tim Baker who look at that Tim Baker and Tim Baker is set to false let's bring back some information on student number three and sometimes at least on this version it throws a little air on the endorser the endorser here is part of the hyperledger fabric network I guess what this is good is it showing this chain or this is actually chain code or this is actually code that is running against all of the nodes in hyperledger fabric so no doubt about that but if you're a little persistent there it is it comes right back and we can also do the add students create student in this case so it was a create student function right let's take a look it's definitely called create student so let's make sure that I know we had in this demo we have to type it in but we'll actually see a dapp where we are rendering a web page shortly but it is still my contract dot create student and it gives us that and it has to be a string so we can send it as Ryan Williams and if it returns an arrow we can do it a second time and now Ryan is there and we can also do one for Kyle okay great so we can control all that and let's bring back students by just so we can figure out where we are okay student five is Ryan and we can also bring back student six and see that that is Kyle and the other thing we can do is we can do the my con we can run that instead of two number we can also do two string in order to make it a little more friendly for our application so see how this came back now where it's just one string of text so we can see that Kyle is number student ID number six the name Kyle Nielsen and we can see Kyle is currently set to false as far as absent or present and we can these are just some of the commands that are out there right now and if we look at our smart contract let's take a look again at our smart contract it's a toggle present and then we pass in an ID so let's do again let's bring back maybe student five get a status on Ryan as well so there's Ryan we'll see Ryan through the flag set for false so let's mark them present here my contract and in this case it's going to be toggle present and so we put in a student ID so we know that for Ryan student ID five as we can see it right here okay that ran so if we run again the details we should see now this for student number five for Ryan Williams the flag is now set to true and it is alright fantastic let's do the same thing for Kyle let's do a control L and toggle present this time it sticks in there on my network here my hyperledger network things are running a little slow today so everybody fair with me and again this is the types of commands that we run in our DAF and it will actually our web page and the code that we use that middleware code is actually going to be doing this for us okay great that came back and tells here on and we see oh okay so the flag now for Kyle is set to true so that is how so again when deconstructing our app and on hyperledger fabric same idea we have a smart contract we can use now now that we're using the EVM we can use remix and we can get everything working again we can deploy this we can create we can bring back details here on student number say two right we can see this all comes back Rob sins I don't know if you can see that but the present flag is at the false and Rob sins is student number two so we can toggle present and now we should see that it comes back as true so so what we get the contract working here in remix and we do the whole compile steps that we just went through the compile the contract to the EVM provider here on hyperledger fabric and we are able to work with our work both with the tools and the EVM and this is the beginning of our so let's take a look now at a dapp let's keep our fingers crossed that the little error that we saw doesn't come back to us so I'm going to bring up the dapp now that takes a little bit to run but we'll go over that so what I'm going to do again is pause sharing briefly let me bring up our case anybody wants to take down any information it's right here slightly so what we can do is use that same type of contract code to bring back or to build a web page that actually calls the smart contract so hopefully everybody can see my screen again looks like you can let me know if you can't let me make this a little bit bigger so zoom in so the same roster this part sometimes runs a little slow okay good so it's opening our application and you might recognize I don't know if you've ever watched me give a demo of this before I tend to reuse this same same CSS same style here the web page try restarting it here one more time looks like this is giving me a bit of a tricky time today with the yarn but we will why don't we open it up for questions right now and we'll see if we can get this back up and running short you can see if we can get this back up why don't we open it up if anybody has questions right now hey Kyle do you want to lead on questions or would you like me to feel free to take it away the first question and these are going to be in the order when they were received Benjamin asked is Layer 2 also supported in what we're doing with EVM hyperledger fabric yes so all of that will be supported yes so the same as what was supported previously with the previous product it is also going to be supported with the new product absolutely cool Dawood on YouTube asked and I think we've answered his question as we went on but I'm confused here Gnash is for Ethereum protocol slash blockchain whereas the hyperledger fabric is for private permission networks how come both are the same and I think he was I then explained that this was a workshop about deconstructing gaps and the fact that we have the new EVM hyperledger fabric lab starting up next up we will there is going to be support for it it won't be the exact same support but there is going to be support for for Gnash and for products like that so it might not be the exact same but it's still going to be there is going to be support for items like for tools like that cool Andrew asked what about the marketing and tokenomics which would be needed for ADAPT well it's going to be a little bit of a different experience with hyperledger fabric so all the same use cases that you would use for hyperledger fabric are are going to be the same use cases you would use the EVM for so it's not going to be like we're going out now to a public blockchain and using hyperledger fabric it's going to be it will be a different experience it will still be an enterprise blockchain it will be an enterprise blockchain that is using hyperledger fabric cool and it will be an enterprise blockchain that's using the EVM Lacoste asked why and this goes back to when you were doing the demo portion of your presentation Jim is res one added to res zero and it's because those objects with trouble once those objects are used one time you can't use it again so if we call get count on a result one when we are when we do another get it has to be we can't reuse res one it's just one of those syntax things so once that variable it's when we say let res one equal a certain amount we can't go in and use it that's all cool was the smart contract deployed from remix to a local instance of ganache he was somewhat unclear about using both remix and truffle oh well we both on both demonstrations it was local yes so everything was done right within the context of of my computer and where was it deployed it was deployed locally as well the smart contract was deployed to ganache Anthony asked will the smart contract source code be shared with participants oh yeah we have the github out there we have the github out there super okay and I will put a pin in that because I have a comment on that in a minute I think we have two or three more questions and we can check on the demo are there any startup projects like scaffold dash eith in hyper ledger in regards to dApps I would say that the new lab Jim do you want to talk a little bit about that well we will have equivalence to that we won't have that right away but we are we will have those we will be featuring tools like that yes awesome getting to the most recent questions shell core asked this blockchain thing can we master it with no programming to a little programming knowledge well there is we have a very simple example but you also will need for the more complex obviously the more skills you have you are going to be able to build we are going to be able to put those skills together to build dApps of greater complexity on hyper ledger fabric awesome and before we go check on that demo I would like to do a shout out I don't see her on the list of attendees anymore but Ashley from Wilmington was in the chat answering questions and that was really awesome I really appreciate her doing that because she has knowledge about building dApps and she was sharing what she knew so that was brilliant that is it for the questions that we have captured so far Jim okay all right good well yeah it looks like I am having trouble here with my virtual image of the networking for whatever reason it is not connecting the virtual network isn't connecting just trying to go through the steps here to get the just do we have anything else anybody else Kyle anyone else want to share anything well I just do a little bit of troubleshooting here yeah I just wanted to extend another thank you to everyone for joining and we are going to share documentation with everyone who has joined their links, relevant links to the communities to the presentation to the free courses that we are providing to everyone and thank you if you have any questions please feel free to reach out to any of us we are at your service just trying to get the reboot here and get the network back and running here it seems like for my hyperledger dApps some of the libraries that require internet access and my virtual network is not up and running so I apologize for that everyone right now just trying to do this reboot here not a problem while you are doing that I am sharing in the chat I have done it a couple of times so far but we got a couple of links in here the Morgan State FinTech Center the Blockchain Academy as well as free courses a link to free courses for seminar participants the Blockchain Academy with an access code programming and solidity this is the book Jim shared at the start written by Jim available on Amazon the Wiki page for the seminar series so this Wiki page we have done three of these so far one on the business case for decentralized identity one on the technical underpinnings of decentralized identity so the business case was more not really for the business students but for folks who are not necessarily focused but on the concept and the business case for it whereas the technologies involved the second seminar was really gotten to the not hands-on weeds but where are the components that make up decentralized identity within the hyperledger ecosystem so Aries, Indy the open wall foundation etc the next link on this set is a Wiki page for this seminar that Wiki page once this ends the Blockchain Academy team are my new favorite workshop givers because they got me the deck before the workshop started I'm going to put that on the Wiki page we're going to grab all these links we're going to have the YouTube video embedded there and I will make sure that Tanisha and the fintech center get the video and all the links as well to share with the students who were able to join us this is still being live streamed on YouTube we turn off comments on YouTube just because we get bombed with nonsense sometimes but you can always check in with the hyperledger discord as well as hyperledger's github the last two links that are on there the github is covering all of our projects so the graduated projects like sawtooth, fabric, Indy, Aries the incubated projects things like a non-creds I know Bezu is one of the graduates but a non-creds bevel now called cacti firefly a number of projects the incubated tag and then we have labs and the labs are really where community members can raise their hand and say hey I want to do x with y and z and as Jim mentioned before this new lab that they're launching actually started its life back in 2017 as a project called burrow fun fact they became a project the week after the project that I was working on Indy was added to hyperledger which is pretty great but the burrow team moved on and bringing this lab back is actually opening up a lot of capabilities both for interop and working with ethereum but also for ways for folks to participate in the community so we're super excited about that new lab getting approved are there any new where do I get a hold of the document glenn we are going to have all the links on the wiki page for this seminar so the slides links to the github repos links to places like discord if you have questions etc someone asked me about the first page of a concept of DAP mc might want to check the recording after professor mdad give a note that's great oh and gary made a comment there's an increasing move towards low code programming I would say the work that jim has been showing is not low code no code but as an industry we are moving that way so I agree with that and there will be products that actually support the EVM for low code no code so you will be able to use them for hyperledger fabric as a matter of fact if we go back right here this I can show you right now this product was actually a low code no code here this product right here is our Simba actually does support hyperledger fabric where it has in the past if you look at their documentation that is a low code no code product now I like low code no code I'm not trying to say I don't like it you are limited certainly there's something behind the scenes generating the code and you are entering some type of a model you are going to have some limitations with low code no code so it's not always the answer but yeah we really like the product so we want to be able to support low code and no code no question about it and as someone who used to work at a number of startups low code no code means you can prototype you can test ideas really quickly which is exciting before you get down into you know fully dressed architecture review and figure out where we're going you can play around and low code no code which makes it fun um Jim any luck on that uh let me try one more time no worries this happens to me too man it's all good I mean messages sorry somebody yeah some my image virtual networks used to try one more time I tried it different I tried connecting to a different wifi so let's see what happens here and while Jim's doing that if you want to watch the video again or share it with a colleague or friend or roommate or or coworkers or fellow student um you will find it in the hyper ledger youtube channel which is it is yeah the live stream link the direct link for the live stream is up there if you go to the hyper ledger youtube channel um I have issues with this other people don't really click on the live tab um the live tab will take you to this and other events that we live stream it doesn't automatically go into our videos section uh that is something that frustrates me greatly but that's what they decided to do and that's okay um let me see I will put the link in uh zoom chat right now yes no luck it looks like I've gotta have my my network connection is uh not working here but this would normally this would render that same that student smart contracts but uh for whatever reason the components here some of the styles or something a uh internet act so I can't even get to so I just have to check with the network here on this image are there any other questions for Jim or Kyle um I don't want to leave anybody out I'm going to check actually as I said I'll check the YouTube to make sure no one else is asking questions there and there is the qr code there if you want to scan it and get access to the page that the blockchain academy set up we'll also have all this stuff on our wiki and we'll get it to the Morgan State team as well again thank you so much yeah we'll uh we'll look to follow up with a demo of our maybe we'll somehow attack it or get it out somehow to our presentation it's out there of this uh of this running here uh we apologize we sometimes that's one thing you have to make sure that uh like like anything else these days we use javascript uh some of the components some of the libraries uh do have to have uh external access so that's the no it was great thank you thank you so much Jim thank you to thank you Jim and Kyle from the blockchain academy uh thank you professor and Nisha from Morgan State fintech center um the special access code glenn if you scroll up in the chat it's there but it's also going to be on the wiki page on hyperledger's site give me a second glenn i'll post it but i want to thank all those folks this is a seminar um we are planning additional seminars for uh the fall semester um as well as possible workshops we got a you know we're working on what what are the uh the workshops that that would have the most impact for the students um and faculty at uh Morgan State and the other hbc is um thank you everybody for joining us and and thank you to everyone who asked questions and was and was uh attending and watching um again this is going to be on here's the free course for seminar participants i just put it in the chat glenn um that's not the right link hang on one second um this has been really great we really thank everybody for uh joining us and we hope uh it was it was valuable there we go all right uh take care everyone have a good one everybody hey uh glenn check the chat i just put the uh access code thank you sean thank you for coordinating thank you for everybody have a great day i'm gonna stay on here for another minute or two so folks can copy and paste things okay bye bye thanks thanks everybody you glenn got it all right good okay let me check the youtube stream no other questions there all right