 Hey, good morning, good afternoon and good evening everyone. Welcome to Hyperlegia India Chapters event. And today we have Teri Vaan who is gracefully accepted invitation to speak to this quorum. I know many of you have joined in from across the globe. And today's topic for presentation is minting MFTs with fabric. So without much delay, let's get started and invite our speaker for today, Teri Vaan, to take off from here. Okay. Thanks everyone. And I will do the sharing. Today's sharing is about the fabric. I reused the fabric sample chain code in the community. And you can see maybe everyone know there's token ERC 721, but we can use this chain code to do a lot of things. I will introduce some, I will introduce my CLI. I will introduce the minting CLI and apps and also a REST4 API and reuse the community chain code and also some syncing in MFT because I find some interesting things there. I will show you later. This is the architect. The whole story is here. The IPFS will be the storage backbone, the storage backbone behind our chain code and applications. Here is the requirement before we start. If you want to reproduce the whole code in your machine and then the chain code, of course. Oh, okay. Full screen. Okay. Full screen. Let me shoot in full screen. Okay. Now it's in full screen. Okay. Let's continue. And then this is very normal for like everyone knows our community chain code and also the Tesla network will be used here. And then set up. I will do a quick review on the steps and then I will do a demo on that. So you can see if you need a Linux machine and install everything before we start and clone the GitHub here and then install everything. The sample code in JavaScript and after installation, we do a link. The minting CLI command line can be accessed from all passes. And then normally we do the wallet. This is what's different. I will be addressing later. This is what we different from the ethernet, ethernet programs. We use certificates, means public keys and private keys. And then the config. The config part is all about the IPFS servers in the back end. You can use your own IPFS servers. Or I'm using the, I'm using an, on this address, I'm using an outside IPFS servers, not in the data, in another data center. It's much stable. If you, if you wanted to set up the demo IPFS server, sometimes it's a little tricky. And some, some data centers doesn't allow us to do that. So better to use this one. You can say this one here and continue. Here is the chain code. Here's the chain, all the parameters for the chain code we are using. The China LAM here, the chain code LAM, the same chain code LAM in the community and also MSP informations and user IDs. We set it here. And then commands. Commands means cause the cause, it's a CLI command line, command line applications. So a help was provided. When you see some, when we don't, don't, then make sure, not make sure what the command is for and we can use this one. It will be usage and options. And then this is do a mint. Cause sometimes the, the IPFS doesn't work well. So I, so I, I put almost every command lines and feedbacks here. This is the mint. We'll see later. I will in the demo. Also, we are being a demo. And then this is a screenshot. The screenshot shows here. The usage is simple. We just put, we just, we just copy and paste and then waiting for the response. You can see standard. There's a standard, standard chain code transactions. And then you will see it. Standard chain code to transact. And then the second one, you can see the feedback, the token ID. I marked in blue, the token ID, the, the owner and also the token URL. The token URL, maybe it's the unique one in the IPFS server. So this is very important. I will talk, talk later, the on-chain code and off-chain code. On-chain code is small, very small. Most off-chain code as we know in the IPFS server actually it's not only, not in the server. The server is only the hash, actually it's everywhere. I've seen the distributed the file system all over the world. What's the owner and the token URLs are on the chain? We see. Then we, we, after, after we do the mint, we will, we will show what we need to just know. Just like we input the token here and then the, the, the A is for asset means here. You can see we just put the token ID and we'll see the transactions and get the response. The A here, the A here stands for whether we need a base 64 encoded content for the content. You, you can have a look at this. Then we do the transfer. The transfer we are doing is also very simple. Put the token ID here and from, from minter to recipient. And then you can see the screenshot. The minter we do transfer here. The transfer is token to the, to the final, the final owner here. I just put the, the final owner for the, for the recipient. And then we can see it works. It, it transferred. Yeah. We, we, we use the, the show, the show function again. And we can see the owner address changed for front-end. I also, I also prepare the rest for APIs for front-end. So, so it will be, we can see the UI and not only the command lines here. Only a show function is is, is ready in this demo. You can see, yeah, this is what the UI actually is the same information as we in the command line. And also this is for art for something, the same information, but it looks much easier. The whole story is here. Yes. I react to server and also what's, what's the response the transactions during the, the browser and also the server, something, yeah. I will do the QA, in the QA session, just the live your questions in the, in the chat window. Yeah. And also here you can see the rest for it, the rest for APIs in C-U-I-L command lines. Yeah. Just just, just to show it. Yeah. The transfer, also the transfer, the rest for API for the transfer you can see we do a post message here and give the information, a token ID and from home to home. And then it works. Okay. We come to the, the most exciting part is the trouble shorting part because when I, when I, when I use the, the chain code in our community, I find some, some, some issues there. Then I find there's a lot, a few things we need to address. Yes. The first thing is that every time we use a full, full pass to the, to the fire and then it works much better. And also the first time when I, I do some configurations in the server, but it doesn't work actually because the data center, the data center was forbidden the ports. You can see the ports, 4,001 and 5,001 normally they're forbidden and we need open it. And also in the demo, we first I use, I use like something like a plain text fire, like a ticket there to mint, mint this plain text fire as the, as the NFT, as NFT, but actually the same code segments, the same program can be used for pictures and logs. Only we cannot see the, the, the plain text because they are not plain text. So I just mentioned here. We can, I will show you in the, in the screenshot for PNG fires, means pictures, logs. Here is, here is, this is the ports, all the ports seconds in my server. You can have a look. You can have a look. I add the, this 4, this 4, I add this 4 ports here. Otherwise, it doesn't work. Make sure you have all the ports open. This is a screenshot for the PNG fires. For other pictures it's the same. You can see the base 40, the base 64 part will be very long because it's not a, it's not a plain text, but it's a picture. So means it's, it's very long. Yes. And here is the same. You can see the IPFS address was created for our logos, fabric logos. Yeah. Maybe here is the, maybe someone, some of, maybe some of the questions are also addressed here for the same one because I also found this, this things cause we are using a, for every NFT, for every NFT, there is IPFS in the back end, but for IPFS as we know, the CID is the unique identity. In our, in our chain code actually not to the, not to the token ID. Actually the token ID is created by fabric, but actually the NFT itself, they need a unique, unique ID in the IPFS. But since comes that if we are using the same parameters or same settings, the CID are the same even in the IPFS world. That means we can have different token IDs with the same CIDs. That's a, that's a good question. This is a, we need to think about it. So I just put one page here. Actually not only one page. You can see here. And also if we are using the same, same like the same pictures or same arts, same pictures or same arts, same pictures or same, same other, like, like text files, pictures, but we are using a different CID version. And the, and the SHA 200, 256 or another kind of parameters to generate the C, to generate the CID will be different. You can see the multi-hush. If, if a different multi-hush or a different CID version was used, even the same picture or same, the same source file will get a different IPFS ID. That's interesting. So make sure, make sure, make sure we are, we are also using the same, same settings for the same thing in our system. Then this is the, we all, we all go back to see what's on the chain and off the chain data. As I mentioned before, the, the on-chain data is only a few information is on-chain data. We cannot save too much as on the chain. Yeah, this is the code segment. Actually, we are using the Mint with token URL chain code here. We submit the transaction here. Only three fields are recorded on the chain. The token ID, the monthly data URL, which is much important. I marked here, marked in blue, the monthly data URL. And then we go back, we go into the chain code, URC, because we are fabric is a community chain code. It's different from the Bitcoin or Ethernet. So the owner, we always know who is the owner, and we can get the owner client identity. So the minter will, we will use from the context in the chain, in the chain code context. And then the chain code context, we got the, we got the ID, the minter ID, and minter ID will come here. And also with the token ID, we generated for fabric and also the token URL, which means the URL in IPFS here. So only three fields are on the chain. The other things will be the distributed file system of IPFS. So they're not too much, too much workload or storage workload in the chain code in the chain on the blockchain. Okay, this is the transaction log. We just addressed again for the transaction log, you can see the minter data address, which is only the unique address in IPFS, if we are using the same setting. And also the minter address means token UILs in the above. You can see very similar, the same, not only similar actually the same. Okay, this is the address of the chain code and also the global NFT project, which was started only a few weeks ago. I already joined the, I already joined the, it's much complex, not like today's demo, it's a simple one. This is who am I? Yes, I will address. This is who am I? I worked for IBM China for years and then I'm now a freelancer and a folks on blockchain. And also I do some, I'm a speaker in the global forum on high pleasure, also in blockchain security area. Let me, let me show you some, let me show the demos, the recording of the demos, you can have a look and then we'll go into the QA session. The demo will we'll do a happy pass from the very beginning to the end for what we are talking about today. And you can have a look and have ideas on what this demo is doing. So there is no audio, one can check what is happening. So Terry it will be nice if you can speak about what's happening on the recording. Okay. Okay. This is means transfer. We do the, the owner address. Here you see the owner address and also token ID here, owner address here. Then we do exporting to make it easier. Otherwise, the command line will be very long. We set the receiver as the final owner. Okay. Okay. We copy, copy and paste. Let's transfer. Have a look at the command options and usages. Let's transfer. Paste here. Wait. Transaction comes. Oh, it works. You can token from this address to the final one. Then we show again. Show token ID. Here it comes. The owner become final. That's it. Let's have a look at the UI. We need to refresh the pages. Every time I refresh the pages, the token ID will become the initial one. Let's replace the initial one with the token ID we just transferred. Copy the token ID here. This is what we transferred. Wait. Here it comes. The response is here. Take it away. Final owner and information in it. This is content in base 64 encoded. If it's a picture, the base 64 content will be very long now in the UI. This is for the happy demo pass. Okay. It will be in the QA session. Also, I let me put the two links here and then we will begin the QA session. I will put the links in the chat. This is the code segment for today's demo. It's a simple one. We do have a complex one. A lot of guys, community contributors are involved here. Let me do a little promotion here. This one is a for NFT. It's a high-pleasure lab project. A lot of guys are joined and also welcome everyone to join and have a look. In the QA session, you can have a look at this page. It is a community high-pleasure lab project for the NFT. It's here. Information here. Let's do the QA session. Let's do the QA session from the very beginning. If I miss something, you can remind me. Let's see what's in the chat window. Maybe I can help you to address the question one by one. Yes, yes. Sure. I'm thinking. Persona, does ERC-721 standard supported in high-pleasure question from Ashutosh? Yes. We have a community samples in the chain code for ERC-721. We cannot say the standard supported, but we can use it. Actually, the demo program, we can also use the demo program for other blockchains. That means I only modified the on-chain steps in the application and reuse the chain code generation processes. Other processes for the IPFS part are the same for B2COM or other blockchain technologies. Yes. Yes, I also can add like 721 is just some kind of guidelines, some kind of some definitions. It could be implemented in any language. What the high-pleasure fabric developer did. They just implemented what the 721 specification provided in Ethereum. They just implemented those standard in a chain code. Yes. That's correct. That's correct thing. So, now the next question is from Fahad. He's asking a question, one question like confirming there's no cost of minting NFTs on the high-pleasure platform unlike Ethereum because Ethereum is a guest who's involved. And second question, can this work for public blockchain type solution where the front end is public facing user interface and the back end is in high-pleasure? So, actually he went to ask, can this work for a public blockchain type solution where the front end is public facing user interface and the back end in a high-pleasure? The first, confirming there's no cost. Yes, there's no cost. But for Ethereum, there's cost. As I know, there's some gas fees in other blockchain technologies. But for fabric, yes, there's no cost. So, the second question is? Second question, maybe around like, because high-pleasure, mainly the permission and private blockchain and NFTs generally build on the public blockchain. So, building on Ethereum, building on a high-pleasure, how it could be exposed or maybe having some kind of public facing interface. That's his question actually. Yes, that's possible. We can do like this. Yes, that's possible. Different UI, but back end is high-pleasure. It's possible. Just like we are doing. And there's another question from Saiye. He's asking like, why and what's the scenario and condition when we use the high-pleasure for NFTs? It means there's a use case why someone to build NFTs on fabric, high-pleasure fabric. Actually, because I'm very familiar with fabric. So, then I think maybe we can do with fabric. And also, I think there's a chain code someone already contributed the chain code in the community example. So, I do it. This is why I do it. Yes. I guess, Terry, the question, I see a similar question next, right? So, probably what they're asking is, in conventional ways when we mint the NFTs, it solves the purpose of proving ownership of the NFT, which anybody can access. Now, what is the differentiation that we get over here? Or how do we achieve the same things when we build NFTs on fabric? Okay. I mean, it's kind of business cases. So, my personal view, like suppose someone want to build the NFT and tokenize, you know, some kind of enterprise and business business network, then they can mint NFTs on fabric. Another reason would be if they don't want to be in future perspective, want to be volatile about the cryptocurrency and the case fees. This could be another scenario where someone could use a fabric for building NFTs. Yes, you are right. It's cheaper. And also, you know, who is your partners? Because in fabric world, everyone knows who are trading with who. Yeah. And there's another question from Astus. How hyperlid is solving duplicate arts with different CIDs to stop double listing? Because I think this is a very common issue in NFT world, where people say like there are multiple blockchains, and maybe one art could be created as an NFT on the multiple platforms, because all blockchains are not integrated. So, how the hyperlid will solve this duplicate art problem? Yes, it's not only for fabric, because everyone who are using the same IPFS, this is like why I put a page for thinking. This is also I'm dotting. Yes. But luckily, everything can be traced in blockchain world. So, when problem comes, you will know why the where is the problem. So, it's also acceptable. Okay. And I think there's another question from Vikram. Does it use the account model or UTXO model? This NFT sample you use, is followed the account model or UTXO model? I think it's the account model I think. UT. And I understand the transaction, I think there's some kind of which Bitcoin generally follows in the data. It's not UTXO. You can say it's an account model, because the owner address is actually X509 certificate. It's actually a certificate. It's an account model. You can say it's a similar account model. And as I remember, there is a UTXO sample chain code in the community fabric samples. You can have a look there. It's quite different. I just have a look. UTXO means you still have it's not NFT. It's two concepts. UTXO is not it's not it's not unique. Actually, UTXO is different. Another like how do we ensure an identity and continuity of NFT ownership fabric? Interface. Yes, interface implemented. The interface is implemented in the chain code. It doesn't touch the chain code, but you can have a look at the chain code part. The chain code is the same chain code in the community examples. All follow the ERC721. ERC721 interface. But ERC721 enumerator as well, or just ERC721 base? Interoperation. Assignal. Assignal in a demo, there's no interoperation with ERC. Yeah, it's only in fabric. The demo is very simple, only in fabric. But we can add code segment for Ethernet. This is come to the same question, what fabric is created? Fabric is like, as I know, fabric is like everyone knows who is trading for. The certificates are almost clear, unless you use identity mix MSP. Maybe you can use identity mix MSP for some confidential reasons, but for fabric it should be everyone knows who owns the NFT. Yes, UTXO is for... Yes, UTXO is for fungible tokens only. Yes, for NFT there's no UTXO. Account model, let me put the questions on the screen. It's an account model slower than UTXO. Normally, the bottleneck is not in blockchain, as I know. I see the bottleneck actually in the IPFS, means the IPFS is... Sometimes we will wait a few seconds for the IPFS CID. So maybe that's the problem. Next question. Can we not use the certificate series number rather than the C-Lam, the common name? Yes, you can use... Yes, we can use common name here, but yes, it's okay. You can use the common name here. Equally project. Equally project. Maybe we can... I'm not sure for 1155. Yeah, actually asking, is there any C-1115 token sample? So already community have a similar chain code for like we have for NFT. I said the link already. Yes, yes, I see it here. The link is here. Yeah, we also have a sample there, but it's not today's topic, yes. Looks like we have all the questions here now. All the questions are here now. Is there any other questions? You can just leave a message in the chat window. Okay. You can reach me at the... I will put my email address here. And also you can reach me at the GitHub. Yeah, at the GitHub. Yeah, this is my email address. If you just drop me an email, I will reply when I see it. Just drop me an email. A junior has come. Yeah, junior. Junior Gordon has come. Since junior. Indeed, it was great presentation. Thank you, Terry. Yeah, thank you. Great presentation. So if there are no more questions, I would like to quickly remind our audience that there are a couple of opportunities that you can participate. So there is Hyperlegion mentorship program. The deadline for submissions is March 9th. So you have three more days to submit your ideas. And there is also mentee opportunity opening up. Once the mentorship projects get shortlisted, if you are interested in internship opportunities, the official Hyperlegion internship, which is provided by Alina Foundation, you can apply through those programs and you can join them. So deadlines for this is next three days. So please make sure you utilize this time and propose your ideas. And there is the links for that can be found on chat. There is also another opportunity for you for which you can again propose your ideas if you would like to as a group and participate in building a project. So that's Hyperlegion challenge. You can find the website information about that as well on the chat. And yeah, those who are proposing to Hyperlegion challenge, if you don't have a mentor, we can help you find a mentor. And if you propose your problem statements before 8th of this month, March, you are also eligible to propose the same project to mentorship program as well. And even if you don't have a mentor, we will help you get a mentor from the community. That's regarding the challenge. Please make use of these opportunities and we look forward to having you in our next sessions. So yes, we will paste the meeting recording on the YouTube. Soon after this call, you will find more information on the Hyperlegion YouTube channel. You can also follow us on Hyperlegion Foundation's LinkedIn page or maybe Hyperlegion India chapter LinkedIn page. We will be updating you about next events. And also don't forget to join the Discord channel. So Hyperlegion recently moved the official channel from Rocketchart to Discord. So if you are not still joined, please join the Discord. And you will find all the community discussions happening on the Discord channel. So let me share the LinkedIn page link as well. So that's the wiki and that's the LinkedIn page. So once again, thank you. Thank you, Terry. And audience, if you have more requests or if you need more detailed session on the NFT itself, please feel free to reach out and we are happy to again get in touch with Terry and request for more session and looking forward to your feedback.