Thanks for joining today. My name is Mark Rakhmalovic. I'm with Oracle, and with me, actually, remotely, we have Gurav Sarkar, who is our senior manager for blockchain product management. He's going to be helping me with the demo. We're going to talk a little bit about local development tooling and show you a blockchain upbuilder, which is a technology that Oracle has developed over the last couple of years to work with Archipelager Fabric to automatically generate chain code. And while it started as a more genetic capability, we have also added support for both fungible and non-fungible tokens in it. So we'll show you what that looks like. Just a couple of words on the Oracle Blockchain platform. It's basically Hyperledger Fabric. There's a lot of extensions. We started working on it about 2017. It released the platform in 2018 in the market. So it's been out there for about four years or so, around 200, 250 maybe customers using it. It's basically a full Hyperledger Fabric platform with Oracle editions, operations and management monitoring capabilities, API gateway for REST APIs, event subscriptions and integration capabilities, standard Hyperledger peers, ordering service, membership service for the network. And then all of the pre-assembled components around container management, identity management, operations, zero downtime patching, all of the kind of enterprise-grade features that many of our customers need and expect in the enterprise. So plus a lot of security, confidentiality, capabilities we have added. We have an integration to stream the data into Oracle Database from the history updates so that you could apply analytics, machine learning, et cetera. It works with other non-Oracle nodes as well. And we have an on-premise version. This is predominantly used in the cloud. That's 80% of our customers are cloud-based in Oracle Cloud Infrastructure. But 10 to 20% are using our OPP Enterprise Edition, which is a virtual machine software appliance kind of form factor. And we provide a bunch of integrations, of course, with various applications, Oracle and third party and so on. We have been doing a lot of work over the years to simplify the infrastructure build, right? So customers used to struggle a lot in the early days of particularly Hyperlegia Fabric with all of the dependencies and all of the complexities and version updates and all the rest now. Basically come to our cloud, a couple clicks. It's blockchain as a service. Everything's pre-provisioned. It takes about 10, 15 minutes. It kills the entire environment up and running. It's easy to integrate with all of the capabilities we built in. There is a lot of security measures added into a troll-based access control. Access control is for chain code users to be able to have fine-grain accessibility management, management operations monitoring without requiring a PhD, ability to extend easily, add new nodes, expand the network and all of that. So we've done a lot of this work to help simplify the adoption of blockchain for customers. But then we found they're still spending a lot of time building the actual applications because blockchain, ledger, et cetera, it's all infrastructure. You need to have the smart contracts and all of those application components that you need to make it valuable in your business. So we have done two things. One is we've created a partner community. We have a very strong partner ecosystem with a variety of industry solutions that customers can adopt for different use cases. And then we decided there's still going to be people who are going to need custom build, who are going to want to implement custom applications. And so we've created a tool called Blockchain UpBuilder. It's a low-code development tool that provides a lot of productivity help to developers, but it can also automatically generate chain codes from a specification. It's essentially built in order to allow non-blockchain experts to build simple to medium complexity blockchain applications without writing code. And so when we initially created it, you could specify whatever data assets you wanted to manage. You would define the data schemas, et cetera, and then it would automatically generate all of the crowd kind of persistence business logic around that. The next phase was to add tokenization support for both fungible and non-fungible tokens. So the way that this works is that you can essentially create a specification file, and that's in YAML adjacent format. And then after you've defined the data assets, the properties, validation rules, et cetera, you automatically generate the chain code and scaffold the project. Once this is available, you can go ahead and use it as it's built with all of the basic crowd methods, create, update, query, delete, et cetera. But you can also add your own custom logic on top, should you need to. And so it could be either no-code or low-code kind of environment. And we'll show you how to add custom implementation methods in the demo in a minute. Then you can deploy it to a local environment with a built-in Hyperledge Fabric infrastructure, and you can test it locally. Once you've done testing and debugging, et cetera, you can package and deploy it automatically using the tool to blockchain platform nodes or any other third-party Hyperledge Fabric nodes. You could just standard Hyperledge Fabric packaging. And you can start exercising it in your environment. So a lot of value here, obviously, automated code generation is a customization with custom methods, much faster deployment and testing. If you're deploying to a remote environment to test, difficult to debug, you have to go back and force. By the time you're actually ready, it's going to take a number of iterations and it's going to be slow. While you can test and debug in a local environment, it's much, much faster. So much higher productivity for developers. And then when you package and deploy it, in our case, you also automatically benefit from all of the APIs we expose. Every chain code method is now automatically available as the rest APIs that you can invoke. And we're going to show you that. So what you're going to see in the demo is a Visual Studio Code extension version of the blockchain upbuilder. We also have a command line version for CI CD integration, for power users, developers who don't want the UI, but most people would use the GUI. In there, we can tailor the specification file. We will tailor fungible and unfungible tokens. We will then automatically scaffold the project, generate the chain code, extend it with some custom methods for marketplace operations. So we're going to have a little bit of an NFT marketplace in the demo. Then we deploy it, expose the APIs, go through a one-time setup to initialize the token system, set up accounts and roles, and then run through the actual transactions on the marketplace. Minting, issuing NFTs, buying, selling, etc. for fiat payments, as well as tokens through those rest APIs. So let me switch over now and have a graph. Graph is there with us. Talks through a little bit more details of the demo. Sure. Thanks a lot, Mark. So even though I'm demoing it remotely, I'll ensure that you fill me just beside you. So for the demo, we have selected a use case, which we all can correlate to, and this use case is related to the NFT art collection marketplace. If you see, the museums are looking for an alternate source of revenue from the people between 20 to 30 years who are highly active on the internet, but rarely ever visit museums. So in this use case, the NFT platform provider onwards the museums first and provide the NFT minting privilege, so which means that the museum curators can only meet the NFTs. Now NFT platform provider also onwards the NFT buyers who are given some tangible tokens initially because they are getting onboarded for the very first time. The museum curator means, so what happens next is the museum curator means the art token and the consumer one purchases the art token by paying it through the fiat currency. Once the consumer one purchases the token, he can resell. He can resell the NFT and he moves towards the seller side. And if he resells, he will, so now the consumer two can purchase the art token by paying through the fungible token. So he paid through the fungible token and in return they got specific art token. So this is the entire application that we are going to implement through the blockchain app. And the blockchain app will automatically generate the chain code. It will help you to deploy the chain code into the blockchain cloud services. And also you can do the testing. But for the testing, we'll use the REST APIs which are readily available from the Oracle Blockchain platform. We'll use a postman to execute those. So before, so let us quickly jump into the blockchain app builder. As Mark mentioned, this is the blockchain app builder, this code extension. So if you see over here, there's an old written over here, it's an Oracle Blockchain platform related one. So here you can define, so there are three things over here. One is a chain code, specifications, and environment. So the starting point for blockchain app builder is the specification. So you need to specify a, what kind of asset you are going to build with the blockchain app. So if you see over here, we are going to build an art collection asset, what kind of asset it is. So it's a non-fungible whole non-fungible token. And the standard that is followed here is ES721. The class signifies that we are providing additional methods on top of ES721. The second part is this declarative specification file is a behavior definition. So you can define different behaviors like English, so on and so forth. So it would create when it generates the code automatically to create all the methods that are relevant for this behavior. The two very important part over here is metadata and the properties. So metadata is the one which cannot be changed once it is created. So the token owner cannot change this metadata information like the painting name, the description, painter name, all so on and so forth. But there are few attributes which can be updated by the token owner, like the price of the specific asset or the on-sell flag. If you'd like to put it again into the marketplace, you'd set the on-sell flag to true. And on top of it, there are custom methods support. So you can define any number of custom methods here. So for this use case, we are defining three custom methods, one sell, two post it into the marketplace for selling purpose, buy with direct payment. This is to buy the NFT through the fiat currency and buy with loyalty tokens. So this is with the fungible token that you would like to purchase with. So let me quickly jump into how to create the chain code.  So I have already filled it in for the paucity of time. So we have the name, the language support you can have, go or typescript and specification and the location. So I'll just quickly create it. So it would take a minute's time to get this specific chain code created. So it would automatically generate the chain code. I'll show you already generated chain code over here. So let me take you to directly automatically generate chain code. Yeah. So by the time I just move to this, so this is the controller file. So the controller file has a complete code. It would be created over here. So you can see all the controller file is available here. The controller file contains two different types of things. One is SDK method. So this is where the SDK method is. And then on top of it, we have the wrapper method. So this is the wrapper method. What we have between the SDK and the wrapper method, we have the authorization check. So we have the authorization check, which you can also customize, right? And this is just a graph I can add. This is essentially implementing our all by security mechanism that you can extend. Right. One minute left. And then you'll be having the model file. So model is having the entire data structure for you. So and if you see here in this controller file, we have, sorry, this, so in the controller file, we can add the custom method. So here at the very end, we have these are the three custom method signatures that are created, but you can actually replace this custom method. So I have some custom methods already created. I'll just replace it here. So I'll just replace it, save it. So now, so once you are, once you have saved it, now your custom method is available for deploy. So you can just select it. Sorry. You can just go ahead and deploy because we're running short on time here. Right. So, so, so we can, we can just deploy it. And then you can see from the execute, there are in number of methods which are automatically generated here. Now I will quickly jump into the postman collection. So this is the postman collection to test the readily available REST APIs. So we have three different personas here, the museum curator, consumer one is a Michael who will be purchasing it through the Fiat currency and then the Gary, consumer Gary is who is going to purchase it through the loyalty token. So I'll quickly mint it. So the first step is to mint the NFT. And if you see it would actually mint the NFT with all the details that have been provided into the specification file. You once it is minted, you can directly put it into the marketplace. So it just setting the marketplace means putting it in the marketplace with the price set for that. And you can check the transaction history. So if you see over here, this is where the transaction history. So you initially your price was set to zero and this on-sell flag was false. But later on it was price was set to 250 and on-sell flag is set to true. So, and now, now the consumer Michael would like to purchase it. So he is going to purchase it with the price of 250. So he has successfully purchased it and he would like to resell it. Now if he wants to resell this NFT, so it would again go back to the seller site and now the Gary is going to purchase it through the loyalty token. So this is where the buy with loyalty token method comes into play and Gary would be able to purchase this. So Gary has successfully purchased it. And if you check the transaction, the entire token history. So this is where the token history is. So you can see that the owner details. So this is ending with 41 whereas the previous one as the owner was 20. So the entire history is tracked of this token history is tracked and you can develop any tokenization applications very quickly and very easily with the help of blockchain. Thanks Gurav. If you could go to the summary. We'll just finalize here. But what you saw basically was a set of capabilities that really help many companies and developers to accelerate the process of adopting the blockchain. Sometimes there are challenges in terms of infrastructure. Sometimes people have complex development tasks, etc. This blockchain upbuilder you have low code, no code approach. Auto generation of tokens was fungible and non fungible tokens as well as any generic assets can be included. And you have integrated testing and deployment which improves quite a bit the productivity of the developers. In Oracle over the last five years we've been working within the hyperlegic community and in our blockchain platform. We have really focused on making it easy and quick to adopt with the blockchain infrastructure and all of the things that showed at the beginning, the development tools, tokenization SDK. We also implemented MVCC related optimization in the fabric peers to allow multiple transactions for the same accounts to be committed within the same block which is somewhat of a limitation in original fabric. But we have created optimizations to work around that so they can actually run at very high performance. We've done some testing, you know, with hundreds of transactions per second in this kind of environment. So with that I'll stop and, you know, if you have any questions, happy to take a couple questions here. We have additional information on our blog post recently on the NFTs. We created actually in Oracle Cloud Infrastructure, there is this thing called architecture center where you can go in and look at various solution playbooks, architecture, reference architectures, etc. There is one specifically for the NFT marketplace which goes through this in quite a bit more detail, obviously, more than we had, you know, in 15 minutes here. But again, thanks for joining. And yeah, I think it's using the original Shim API, if I'm not mistaken. We could check, let's check offline on that. I'm not 100% sure, but I think it's using the Shim one.


My name is Jill Bauer. I am an ESL instructor at North Seattle Community College. This video is an introduction to nonverbal communication. Nonverbal communication is what we do with our face, eyes, body, and voice when we communicate. This is why some people call nonverbal communication body language. Nonverbal communication is not about what we say, but how we say it. Here is a very common example. If someone asks me a yes-no question, I can answer without saying a word. I can nod my head to say yes, or I can shake my head to say no. Here are four areas of nonverbal communication. Facial expressions, eye contact, gestures, and personal space. First, facial expressions. Facial expressions are the way we move our face when we are talking and listening. The most common type of facial expression is a smile. However, facial expressions can also be negative. For example, if someone furrows their brow, it means that they move their eyebrows closer together like this. This could mean that someone is confused, worried, or maybe just thinking. Second, eye contact. Eye contact is a very important type of nonverbal communication. Eye contact means to look at another person in the eyes. If I do not make eye contact, I might look down or maybe to the side. Third, gestures. Another important area is gestures. They are body or hand movements. For example, if someone asks me a question, I might say I don't know, like this. I don't know. I move my shoulders and my hands. This is an example of a gesture. Some people gesture a lot when they talk, so we say they are talking with their hands. Fourth, personal space. Personal space is the amount of room or space between two people. I can stand very close to a person or very far away from a person. Personal space changes from culture to culture. It also changes from person to person. Some people need a lot of personal space. They will be uncomfortable if I stand too close to them. There are other types of nonverbal communication, such as voice and touch. Remember that nonverbal communication is any way that we communicate with our face, eyes, body, or voice.