 Welcome, everybody. Thanks for joining us today. We're going to get started in just a couple of minutes. Hi, everyone. Thank you for joining us today. We'll get started in a couple of minutes. Good morning. Good afternoon. Good evening from wherever you are. Welcome. We'll get started in about one minute. Just waiting for others to file in. Okay, let's go ahead and get started. So welcome to Hyperledger Foundation's in depth with Kaleido. We have Nick Gasky here today, who's the customer success manager at Kaleido. He's going to share a lot of really useful, helpful, practical information with you. I hope you all look forward to the session. My name is Karen Otoni. I'm director of ecosystem here at Hyperledger and I'll be the host for today. I'll be monitoring the chat and the Q&A box. So you'll see me jump in here and there. First of all, a few housekeeping items I want to emphasize that all are welcome here in the Hyperledger community. We hope that you are joining from anywhere and everywhere. And we are here to help make this experience in the Hyperledger community one that is welcoming to you. As with all meetings at Hyperledger, we have an antitrust policy. You can find it on our wiki and on our website. This will be recorded and any slides shown will also be available on our website. We're also live on YouTube as well. So welcome to everybody who's joining live. We encourage these sessions to be very interactive and engaging so feel free to post questions in the chat. We also have the Q&A box. If it feels like relevant to what Nick may be discussing at that time, we may even ask you to come off of mute if that's something you want to do and ask your question live as well. So we're here to make this hour really useful and productive for you. So without further ado, let me introduce Nick. Thanks for joining us today and we look forward to what you're going to share. Awesome. Thanks so much, Karen, and thanks everyone for attending wherever you are in the world. Hope everyone is staying safe and staying healthy as we're hopefully nearing the end of this three year pandemic. So my name is Nick Gasky. I help lead customer success and client enablement at Kaleido. I've been with Kaleido for a little over four years prior to that. I was at IBM working on Hyperledger Fabric in the open source community and also with the product offerings for the IBM blockchain platform. So about six years of enterprise blockchain experience for me. Let me actually stop sharing real quick. So what I'm going to start with, I'm going to take you guys through Kaleido. I just want everyone to know that what I'm going to be showing you, you guys can actually do this alongside with me. You don't need to be a programmer. You don't need to be a coder. It is like intuitive as straightforward as it gets. So the only thing you have to do is just create a free Kaleido account. So if you visit Kaleido.io, you'll see this try it for free button and it'll take you about 30 seconds to create an account. And then you can follow alongside me with exactly what I'm doing. So I just want everyone to be aware of that in case you want to put your hands on the keyboard and just press a few buttons. So what's Kaleido? Kaleido is a digital transformation platform. We have blockchain as a service as the beating heart of the network. But we also have a lot of additional components, many of which you'll see as we start getting into the demo. We're built for modern business networks. So we're completely agnostic to specific use cases or industries. And the production projects running on Kaleido really do span the gamut all the way from government entities to retail and entertainment with, you know, supply chain health care trade finance insurance sitting somewhere in the middle. Our platform is radically simple, both for using the, you know, graphic user interface also for developers who want to use APIs. So we put a rest API behind every single piece of functionality, whether that's doing admin crud operations or whether it's just talking to the blockchain and issuing transactions. And then the third thing, which is really important for this community is we're built for the enterprise. So, you know, really hard and constructs like high availability, disaster recovery, enterprise key management, etc. Those are all either built in as first class citizens or they're pluggable or integratable components. So collider, we offer a breadth of different blockchain orchestration so we can see down here at the bottom that we have a number of hyper ledger projects, sort of under our umbrella. So we support hyper ledger fabric hyper ledger basu additional Ethereum variants like forum and get alongside our three quarter. One thing that makes collider really unique is we don't pigeonhole you into a specific protocol or a specific cloud or even a specific region. So the orchestrations are as flexible and configurable as you want. You can create multiple blockchain environments across different protocols you can have your nodes running in AWS and in Azure, or you could have a super hybrid orchestration with one node in AWS one node in Azure and maybe another node running on premise you know behind your DMZ. What we've noticed and what we'll get into kind of what I mean by full stack blockchain but you know over the last six years working with these myriad different customers. We've seen that blockchain is incredibly important right everyone on this call knows that, but it's a really small fraction of the overall piece that you need when you build an app. There's tons of additional components you want to integrate with your back office systems that you've made big investments with. You need API is unique interfaces, you need questions and answers around privacy around encrypted data. And you need to be able to deal with an Ethereum things like digital assets or maybe even sort of bleeding edge constructs like zero knowledge proofs. So all of these features are encapsulated inside of collider. Again, either as a first class citizen, or as a very easily easily pluggable component. The last thing I touched on sort of enterprise grade but this kind of speaks it into life. We have, you know, great security certifications ISO 27 K sock to type to really cool key management constructs like keeping your private keys in a cloud hsm for example. And then all those other things HADR answers for business continuity or running your, you know, blockchain nodes or other processes on premise or in your own private cloud. So that's it for the slides. I promise this will be all interactive from this point on. So let's go ahead and hop into collider. So the first thing we're going to do is we're going to go ahead and create a business network we're going to create a fictitious consortium here right and so I'll just call this example business consortium. And the first thing we'll be asked to do is select a home region. This is collider saying I need you to whitelist a specific cloud in a specific underlying region so that you can deploy nodes and deploy services into this availability zone right here. So I could use AWS in the states since that's where we're located on the East Coast, but now I see the option to bring on additional regions or even additional clouds. So I could turn this into a multi region multi cloud network and accommodate for, you know, a very diverse consortia, not everyone uses AWS not everyone uses Azure. This is AWS or Azure right hence private stack and hence all the integrations that we provide. I'll keep it simple and just use AWS in the states today, but it's that easy to sort of onboard whitelist additional clouds and additional regions. So boom, there's a name space for our business network, and we can choose to expand this business network in one of two ways. So my organization org ABC is attributed the first membership inside of this business network. And for early stage projects or for sort of a proxy operating approach, what we've seen as a useful technique is just creating multiple membership objects. Right, so you can mock out how your network is ultimately going to look, or you can create a membership for another participant, and you can be, you know, quote unquote a benevolent dictator and you can operate those resources on their behalf. Once you've hardened out the topology hardened your source code your application tiers looking good, then you can actually decentralize your network. You can bring on additional organizations that have their own collider accounts to own and operate you know their own collider resources autonomously under their own control. So we'll say example external organization admin at email.com. So that is going to allow you to implement role based access control so when you found a network and you onboard another participant, you have the ability to choose what they can do or what they can't do, should they be able to create basic nodes that are validators, should they be able to onboard other participants, should they be able to manage your blockchain environments and upgrade the releases and the versions. So you can allocate and present these permissions as you see fit. Right, so we'll offload that invitation and boom we've done, you know, all of our housekeeping at the network level. Now if we drill down a level underneath our network. We have a construct called environments, and then collider you can have many, many, many environments right so I talked about being able to have a fabric environment a basic environment like a port environment, etc. And so this allows you for you know very very, you know, high speed experimentation iteration, and also allows you to create you know very elegant very logical DevOps pipeline. So let's go ahead and create an environment now. So we see two doors to go through. I'm going to come back to Firefly but at a high level Firefly is an orchestration layer that encapsulates a lot of the features that I'm going to show you. API events, tokens, encrypted private data transfers, etc. So it's just like this macro API that's very, very easy to program against. Let's you get data into the blockchain, let's you keep data off of the blockchain, do stuff with digital assets, etc. It's really kind of a, you know, I'll use orchestration layer for multi party systems. So I'm going to just create a standard blockchain service right here. And now colliders asking me okay what sort of high level protocol are we interested in. Do we want to go through the Ethereum door do we want to go through the hyper ledger fabric door do I want to go through the and on this webinar we're going to go through both of these doors today we're going to take a look at Ethereum and we're going to take a look at hyper ledger fabric. So let's start by going through the Ethereum door and providing a name for our environment. And as I said you can have many, many environments right so development sandbox user acceptance testing pre prod production etc. I'm going to go with a cloud only orchestration but we see their support for a hybrid orchestration, where if I wanted I could have, you know, a node running on my local laptop right here that could securely tunnel and securely connect back to fully hosted nodes. Okay, so we've gone through the Ethereum door we've chosen a name for our environment. Now colliders saying okay now tell me what kind of configuration you want to use your node client your Ethereum variant and choose a corresponding consensus algorithm. So, since this is a hyper ledger webinar we're of course going to choose the hyper ledger client, and I'm just going to go with they sue and proof of authority, but we also see that IDFT 2.0 is also an option here. There are some advanced settings that you can choose to input here. So we have you can choose a custom chain ID if you want, you can manipulate the block period POA defaults to five seconds but you can raise that up to 10 seconds if you want. So every blockchain every environment actually gets bootstrapped inside of the Genesis block with a billion ether. This is a private permission blockchain so that ether has no intrinsic value. But as we'll see here in a second you can choose to charge gas prices for your transactions, or you could use the, you know that ether as a facsimile of a fungible token, or for just other utility inside of your network. So you can charge gas prices for your convenience more than anything else. So we'll click finish and now we have the namespace for this basic POA environment, and we'll go ahead and bring it to life by creating some nodes. So I have two memberships ABC and XYZ. So we'll bind the first node to membership ABC. We'll click next. I'm going to get with a bunch of existing cloud services that I have. So maybe I have a KMS instance or I have an S3 bucket or I have a cloud watch logging group or I have VPCs. All of these things are very, very easy to layer in directly to your run times on flight. I'm going to skip those for today. And then the last thing we need to do is just choose the footprint size for our node based on you know how much throughput our application needs how much horizontal scale our application needs. So we can choose if this node is going to be a validator or just a replicator. So I'll click finish and boom, we've brought this blockchain to life. So I'll very quickly go ahead and add another node for our other membership right here. Just call this node to, and we'll fire through this, click finish. And now we have a three node network. We have three nodes because in collido you actually get a free validator by default, you have a system monitor node that's going to do all of this rich indexing and it's going to expose data and metrics so that we can dive deeper, you know, into transactions into smart contracts into, you know, rich block information. So we'll give these guys a few seconds to come up. And while they're coming up, let's take a look at how we're going to teach collido about a smart contract. Let's scroll over to some slides here. So we have a service called smart contract management. And again this is going to fit directly in with your existing change management systems whether you sort of have a local orchestration, whether you're using you know sort of GitHub, for example, collido will allow you to import your source code, however you want you can go from a private GitHub public GitHub you can go directly from your machine with a you know solidity file, or even if you want you can actually compile the code, and just the bytecode and the binary interface. The takeaway is that once you've done this, your entire network will have line of sight into the business logic into the smart contract that's being executed. But the real real valuable thing is that as soon as you teach collido about a smart contract, we will expose rest apis for all of those exercisable methods inside of the solidity. We don't need to use SDKs like Web three JavaScript or ethers or net theorem anymore. We just do waste basic web development here and we can fire in you know async JSON payloads and collido will do all of the translation to turn that into a properly signed and sequenced a theorem transaction object. We have Apache Kafka as the message bus so you get reliable delivery into the system. It's just a really, really straightforward kind of easy interface to, you know, send transactions into the network without having to become an Ethereum or blockchain expert. So let's dive back into collido we can see that our nodes are joining and coming up. So as those are fully initializing I'll go ahead and show you how to create a smart contract project. So we're going to go up to our business network view. We're going to click on the apps right here and we're going to create an Ethereum app. So I'm going to call this simple storage. I'm just going to import this source code from GitHub right here and we'll see how easy this is to do on collido. So I've created the namespace for this application project. It's not really interesting all I've said is it's Ethereum and it's going to be coming from GitHub. So what I need to do now is actually need to create a compilation, a new version of this source code right and collido is asking me okay well where is the source code you said this is coming from GitHub I need the URL now. So let's go ahead and give collido the URL man we're going to give it a very trivial smart contract. We'll do some stuff with tokens here in a second which is a bit more interesting. But this is a very basic contract that makes it you know really easy to make sense of these REST APIs. So it has a single invocable method called set right here, which will change the state of this global variable stored data to some positive integer that's less than 100. That's that's about it and then there's a couple getters that get in a query right here to say hey what's the current world state of this variable. So let's grab this URL, and let's go ahead and import it into collido. And collido will do all the other auto detecting of the soul see if you're you know sort of Ethereum versioning as well. So as this is compiling let's hop back to our environment make sure that everyone has come up and started we see the monitor and both notes are up and running. So that's good. So as soon as this thing has properly compiled we can go and promote this source code into the environment. So we can go back here give this a few more seconds to compile, and then we can go ahead and teach our collido environment that I named development about these available API is right here. And when this actually does completely finish what we'll see is we'll see the bytecode and we'll see that a bi that binary interface. And this is really what collido needs to expose those REST APIs right here. And so we can see how easy this would be to, you know, say hey here's sort of like where we're doing our change management. I want to iterate on the smart contract logic and I want to upload you know a new version with you know an additional object or an additional, you know variable inside of it or an additional method becomes really really easy to kind of, you know promote these up into collido push them into your dev or staging environment make sure they're working. Once it's hardened, you can go straight into production without changing your code. So I'll promote this into that environment. I'll choose a name for the API's column SS and just quick finish right here. And what this does is this gives this development environment that I've created a definition of the REST APIs inside of that simple storage smart contract. I will have a open API interface that's accessible that's exercisable inside of this environment that I can use to speak to the blockchain, genuinely. So we will simply just deploy this smart contract and then I'll hop into an environment with a lot more going on. So let's go ahead and view this API, we're viewing it through the interface on node number one. And the other cool thing I guess I should mention is that, you know when you promote this source code to the environment, every single node gets taught about these API's. So you don't need to transfer source code out of band you don't need to upload. You know any binaries or any files you know by yourself, soon as one participant in the network pushes some smart contract logic. Every single participant every single node has its own unique accessible interface to speak to it. So let's give this a quick refresh right here. And let's go ahead and view these API's. Okay. So this will expose a exercisable swagger interface inside of the console, and what I'll be able to do going a little slowly. What I'll be able to do is I'll be able to just call the available root post method. And I'll be able to use that to deploy this smart contract. If this comes up today. Okay, here we go. Sorry for the slowness. Okay, so we're going to take this root post method. And what we'll see is I'm doing this inside of collido but everything I'm doing you can very very easily do programmatically right so here's the request URL that we would be posting to to deploy this smart contract. We just need to give it an initial value to that constructor right so I'll give it 123 right here. And then we have another query parameter. So we have the query parameter that says hey this is the address that's going to sign the smart contract. This is the default account on node number one that I'm viewing this API through. But then we have another parameter here that says, Hey, do you want to apply like a human friendly name to this smart contract versus dealing with hexadecimal strings. And yeah, of course we do. So I'll call this SS 123. We can go ahead and execute that. And this will be our first actual blockchain transaction. This will be an instantiation of this this source code. And this will be a deployment into the network. And what we'll notice when this actually finishes this is a synchronous call so it's waiting for it to execute before it returns the receipt is that we're going to have an instance. So we had a gateway, we had a definition of this smart contract which was these apis, but now we're going to have a specific instance right, we're going to have a smart contract endpoint that we can actually call. Again, going real slowly today so I'm going to do a quick refresh, and we'll hop out of this environment and go into a different one. But the idea is that. Okay, so let's hop into the different environment. I've already done this and another one. So let's go here go to smart contracts go to simple storage, and we see that I've deployed an instance onto the blockchain right here. So rather than calling you know this full hexadecimal string right here which is a basic Ethereum smart contract address. We can use the Clito rest apis and we can just call this convenient endpoint right here SS 123. Okay, so let's go ahead and invoke this real quick. So we can view this instance API will view it through node number one right here. Looks like this environment is going way faster, which is awesome. So let's go ahead and call this set method right here, and we'll just change the existing value to 99 right here. Again, signing with this, this identity on node number one, submitting the transaction synchronously. So you can just go ahead and click execute. So we'll do this and I'll take you into postman and we'll get a little closer to how this would be done programmatically right here. Okay, so that's is that's how easy it is to use inside of collider right just point to a URL it could be open Zeppelin it could be your local GitHub for could be you know whatever solidity that you care about whether it's on your machine or in GitHub. So in the form piles, we will expose rest apis for you. So just making life easy for developers to speak to speak to these endpoints right here. Okay, so let's talk to it from postman now. So we can go into a postman terminal, and we can go ahead and say, Hey, what's the current status of this smart contract right here right so what we want to do is we want to call instances. And then we can just call this query method right here. Okay, so we can do a quick query, and we should get back a value of 99, which we just absurded. Okay, so very straightforward there. Every endpoint in collido conscious I'm giving everyone a lot of information but the platform is very rich has a lot of functionality and sophistication. In TLS every endpoint in collido has boundary security. So if you're programmatically, you know, speaking to your node or trying to call a service endpoint, like IPFS for example, those calls are protected over TLS so you need strongly generated, you know, username password credentials and passed over basic all. And those are accessible inside of the security tab inside of your environment right here. So you can cycle these however often as you want right make them as you know short lived credentials or they can be static long lived credentials as well. Okay, so pressing forward. Now let's go ahead and use postman use these programmatic API is to change the value so let's change it from 99 to 98 for example. Okay, and the other parameter that we want to look at the query parameter is this thing called KLD sync right x dash collido sync. So that's us telling collido, hey, I want you to wait for this transaction to actually get executed before you return me the transaction receipt. Well, that doesn't make a whole lot of sense in high throughput scenarios right, we need to send thousands or tens of thousands or hundreds of thousands of transactions into the network. It's not tenable for us to wait five 1011 seconds for that receipt to come back. So we support firing in async. It has Apache Kafka under the covers. So what you'll get back basically is you'll get back a, you know, an act from the Kafka topic saying, yeah, I got your transaction here's a unique request ID that you can query downstream to see the status of this transaction. So what we'll do is we'll actually send this transaction in as a sync right here with our argument of 98, and then we'll query this unique ID downstream. We're going to fire that one in, and it comes back pretty much in real time right about 50 100 milliseconds right here. And then what we can do is we can take this unique ID right here, and we can query this guy downstream. So instead of calling slash instances, we're going to call slash replies right here, and provide that unique ID that Kafka threw back to us. Right. If we do this query too quickly, before the transaction is actually mind, right, we're going to get a null response right so you just need to write some logic into your, you know, sort of into your server side code to say, you know, if no, then back off retry wait, you know 100 milliseconds 500 milliseconds etc. And then retry this call. So that's sort of the approach for synchronous versus asynchronous really really straightforward. All you need to do again is just upload that source code into collido. Cool. Okay, so I said we would do some stuff with tokens, and we will. So now let's hop down here to this digital asset section. Go ahead and click on our dashboard. And what I've done is I've deployed an ERC 20 mintable and burnable token. And the cool thing in collido is that you don't need to bring your own tokens we provide token templates. I've brought in from open Zeppelin obviously where you can say hey I just want to vanilla ERC 20 or I want to vanilla ERC 721 or I want it to be mintable or I want it to be mintable and burnable. Right. And so what I've done is I've created an ERC 20 right here with mintable and burnable characteristics. And I've applied the majority of the balance to node number one right here his default account. So if I go ahead and select that account inside of the dashboard I see that I have close to a million tokens right here. But what we can do again is we can use these rest apis to do stuff with these tokens right so maybe I want to transfer some tokens to another recipient in the network right. So this is the default Ethereum account on the other node inside of my environment node number two zero eight one six six. So if we go to that node and take a look at it we'll see that it has some allocation of this hlt token that I deployed right. So we can go and view the details we can view account details right here we saw that it has no ether balance from the ether pool. But as soon as this loads right here we'll see that it has a balance for this hyper ledger token and a balance of 200 right there. And what we can do with our apis is we could say hey I want to transfer 100 more of these tokens from this holder the guy that had close to a million tokens and I want to send them to this other participant inside of the network this identity. These addresses can be anything right they can be in your metamask they can be in a HD wallet they can be held in a cloud hsm right this just needs to be a standard Ethereum hexadecimal string right here. Right so we can go ahead and fire this off right here transfer 100 additional tokens. This is a synchronous call again so it's going to wait for it to fully execute. And then we can go back to the receipt in back in about five seconds right proof of authority is five second intervals. And now we can just do a quick query we can say hey, Mr account you just transferred 100 tokens your balance was 999 800 what's your current balance right now right that's what the balance was, it should be 100 less than that, and it is right here. Right. And so the dashboard is really friendly right the dashboard is an admin utility very easy to kind of like stand up resources and do some. It is lightweight blockchain transactions, but obviously as you're getting closer to building out an application, you want to get into post man then you want to start getting into, you know, sort of no JS or whatever your favorite languages on server code, and actually calling these rest API is synchronously or asynchronously. Cool. Okay, pressing forward, let's look at another feature inside of collido. And these are not collido specific features by the way I don't want to make this sort of a collido centric sort of webinar. They are encapsulated inside of collido but everything I'm showing you has actually been open sourced into a hyper ledger project called firefly. So this rest API gateway for example that we call it connect that is a firefly project, this outbound portion of event that means this is part of firefly, the ability to plug you know different blockchain orchestrations, whether it's basu whether it's get whether it's fabric, right those are all encapsulated inside of firefly. So, let's take a peek at how events work inside of collido. So, for the folks that are familiar with with solidity and with event interfaces. It's easy to define an event inside of your solidity code, right you just create that event object. And then when you have invocable functions that result in a state change, you can you can allow for that event to be emitted. And on collido, as soon as you have uploaded your smart contract will auto index the availability of every signature every event, you know that you're allowed to subscribe to, and all you have to do is tell collido where you want those to be delivered. So just think of them being delivered to your application, but more closely the cloud architecture think, you know, a Lambda function sitting behind the API gateway on AWS. And the takeaway of events is that you never have to query the blockchain for the current world state, you never have to do WebSocket polling on your nodes to start listening for events. But perhaps your most valuable is you're going to have an off chain local cache of all of the historical events and all of the current state information. So you can choose to automate logic and react to these events, but you also have that local database that will support hyper efficient super rich queries. So events are especially valuable. And let's take a look at how one of them looks. So from postman, I was invoking my first note I was invoking node number one with those transactions. So what we'll do is we'll go to node number two, and we can prove that I was actually talking to node number one right so here's the node ID and E ji or jl right there. So if we go into the strings right here, we see that this is the specific node ID that I've been talking to. What we want to do is we want to invoke this smart contract from node number one, but we want to have node number to configure an event stream, execute this transaction and emit an event. Right. And so that's an example of right a multi party system where you have different participants sending data into the network right think supply chain think healthcare think trade trade finance whatever, where you know different disparate participants need real time notification of state changes that are happening in the network. So let's go to node number two and go ahead and create an event stream. So I will call this simple storage, since that's the smart contract that we're going to use. And I'm going to deliver it via web hook web sockets are supported as well. I'm going to click next. And now polite is saying, okay, cool, you're defined an event stream tell us where you want this data to be delivered. I'm not going to use an API gateway I'm just going to use this free little sub domain service right here request catcher. And here's the endpoint I'm going to use SS 123 dot request catcher dot com slash test. So that's what I'll teach collider about right here. If you're doing this you know in production, you know put a bear token and protect these polls obviously. So I'll click finish. And cool, you defined an event stream. Here's your unique event stream ID, and you've told us where you want it to go. Now, tell us what data you're actually interested in. If we go back to the smart contract that we use simple storage, we see that we have an event defined right here. Right. And all this event is going to do is it's going to tell us what was the argument that we passed to this set method right. The argument that we, you know, Claire declared the inside integer to be transitioned to, we'll get a bunch of additional rich information like the smart contract address the transaction hash, you know block number time stamp etc. But specifically we'll get the signature, and we'll get the inputs right here. Right so we can think of this as you know, interesting financial information or state changes inside of supply chain, right. We're going to call our event for the description data stored. We'll choose a gateway API, right we got to talk Lido. Alright, where are you supposed to find this signature. We're going to go ahead and find it inside of that simple storage API. And now, Clito saying, Oh cool, here's that data stored event that you're interested in. So we can take all the events we can take them from a specific block number. We can take them from all of the contracts that match the signature, or we can take them from a smart contract instance. So this gives you an idea of how you can granularly scope these events right to different pipes and you know sort of compartmentalize your logic. So I'll just say hey give me all the events right here. So we'll finish that and that'll create the subscription. And then what we should be able to do is go back into postman we should be able to invoke the smart contract coming from node number one. So the event stream that's been configured on node number two should emit the event to this endpoint that we just configured. So let's give that a go see if it works. So let's change this value down to 97 this time. Okay, so we'll fire this in. Let's fire it in synchronously this time. So we'll change this from false to true, and we'll fire away. So if you're lucky if we got this close enough to the new block interval this can execute in three seconds. Sometimes if you're far enough away from the block interval miss a specific block and you may have to wait six or seven seconds. So this took about four and a half seconds for that to execute. We go back to request catcher right here we see that ingested an event. Right. So some interesting blockchain information around the number around the transaction hash. So to the end here we see the signature that it matched. And then we see the inputs right. And so this is like the real valuable piece right you're able to see, you know, what was the smart contract logical was a method that was invoked. But what's the state change that you know my business or my application actually cares about. And that's event streams in a nutshell. So sprinting forward because I do want to show fabric and I want to show a little bit of firefly as well. Let's just take a peek at some of the other pieces inside of the dashboard. So we have a very rich block explorer where you can drill deep into specific transactions so here's the one I just sent. We can see the method exposed right here we can see the inputs we can see who signed it what smart contract can do for a system admin we have rich, you know, health and monitoring dashboard where we can, you know, have, you know, scoped views of different resources different run times across different intervals and different timeframes right here. We can dive into, you know, one specific runtime node number one for example if we wanted, or we can see the macro view of the network. So just kind of like a really useful thing for, you know, sys admins kind of like the root users of the system. If we go to the dashboard for our network. We can also see an audit log right of everything that's happened so kind of like all of the interesting crud operations that have happened in the system. So, you know, this becomes valuable when you truly decentralized your network and maybe you have, you know, six or, you know, a dozen different participants that are doing stuff in your network. You'd like to have, you know, unequivocal cohesive line of sight into what's actually happening inside of the system. What we can get is we'll just take a look a little deeper onto a specific node right here. So we can go into the logs and we can see, you know, kind of the core base who logs right here. It's happily humming along mining blocks executing transactions, but we can switch the context here and we can actually see the rest API gateway logs. So this will show us transactions coming into the network for example, and it'll show us event streams coming out of the network right. And so this is, this is, you know, really useful for you to be able to potentially stream these logs right into cloud watch or into some rich cabana dashboard, for example. And you can make sense of, you know, what's happening on the flight arrest API versus what's happening at your application tier as well. So what we're doing with Basu, or with many of the protocols under the umbrella is you can extend them and you can add your own sort of custom bespoke configurations. So we'll say just example config right here. But next, and now we can see the default config parameters that we have like the target gas limit and RPC cap. We can sort of literally inflate or deflate this the same for the gas cap. We can choose if we wanted to run our node, you know, as a full archive node we can change the logging levels etc. We can choose our tune our rest API gateway etc. And these are, you know, not binary choices you can, you know, add these configurations you can remove these configurations. Same with the cloud configurations as well. So the system is, you know, is as flexible as you need it to be in the scope of your consortium and the scope of your application. Last thing I'll show you is the security tab right here. So this is what we needed in order for my postman calls to successfully authenticate into collido. So that via app creds app creds are bound to a membership just like your node was bound to a membership or service was bound to a membership. Those need to have sort of a one to one correlation. Right. So if I tried to call node number one with app creds from XYZ, that wouldn't work. If I tried to call node number two with app creds from ABC, that wouldn't work right so we can just say example creds right here, and we'll see sort of an ephemeral view of this username password. Every time you'll see the secret so you either need to jot this down or you need to just regenerate the secret collido obviously for security reasons doesn't persist this on your behalf. We do assault hash verification. So this is the only thing we actually persist is the ID. Cool. Okay, let me hop a little closer into the world of firefly now. So what I am going to show if I can find the right tab here. So the same interface for speaking to fabric. I can find wherever I put it. I just want to show the architectural diagram super quickly. Okay, so this is the open API specification for all of the API is the API surface of that connect so dealing with the certificate authority dealing with events dealing with transactions. This is all open source under the hyper ledger umbrella. So you can go grab these API's chuck them into swagger hub or whatever your favorite you know YAML conversion tool is, and you can program directly against these right here. We have a cheat code in our dev environment where I'm going to use swagger just for sort of ease of use inside of this demo, but every call that I'm making everyone else can make as well. So let me switch context right here and we'll go into a different account. I don't have any questions Karen, but do interrupt me if there's anything pressing. It would be relevant to just pause here since you're switching into, you know, using different networks. Someone call a crew here did ask about how they could connect their services to their website or use it for a marketplace. And if anyone else has questions, while we pause here. Let us know. I think it may be better to take that one offline specifically with the whomever asked that question but I think the takeaway is that, you know, what I'm trying to show you with all of these services and all of these interfaces is that your existing systems of record your existing e commerce systems. Your existing back office systems. You don't need to reinvent the wheel to be able to layer collido and layer blockchain functionality into there. Right. It's a simple integration with it with rest apis, you know, with hashing private data from your existing data with using our event streams to ingest data from different participants inside of your network. So it really becomes a matter of if you're creating a marketplace you know sort of using blockchain as the beating heart of it. You know what are the assets that we're dealing with right are we dealing with real world assets are we talking digital twins and NFTs of you know actual, you know tangible constructs are we talking about tokens. Are we talking about, you know, something else, you know, so I think it's, you know, not a not a black and white conversation it really depends you know specifically on the use case on the requirements of the customer. But what I can say is having worked, you know, with, you know, a wide variety of you know, huge enterprise customers in healthcare and banking, you know, in insurance and retail. It's really, really a lightweight lift to, you know, kind of extend the functionality of your existing systems with collido and with whichever blockchain sort of orchestration that makes sense for for your use case. A couple questions related to what you just talked about as well so Jose is asking if it works like a private blockchain where you can set gas, can you set the gas to zero if you want. Yeah, so gas defaults to zero by default so so we're talking about free transactions right running 10 million transactions on collido over the next two days you're not paying for transactions. Our business is a SAS business so you pay for what you use, namely your nodes so if your nodes are up and running, then you pay an hourly fee for those nodes, your environment is paused your nodes are paused you don't pay collido anything. But you do have the ability to manipulate your blockchain right so if you do want to use that ether pool and charge for transactions you have that you have that possibility, you have that availability to you. But by default, everything is a gas prices zero. Awesome. Thank you. And then someone else has asked, do the configurable parameters on protocol configurations of hyper ledger basu have more options than quorum. Um, I don't know that there's anything out of the box on basu that quorum doesn't have, you know, quorum has a private transaction manager, you know, basu has a private transaction manager. But the majority of the parameters that we're talking about is sort of like the type of node you want to run, whether it's you know full node archive node, whether you know you sort of want to up your logging level, you know, info debug etc. But the real parameters you can tune are sort of like those gas prices and that RPC gas cap, which are the same defaults as quorum and basu. But if we looked a little deeper down onto those protocol configs, we could see that we could do some really, really valuable tuning right on that REST API gateway and on that underlying Kafka tier. But no, I think the the answer to that question is there more or less apples to apples kind of on the protocol configs. Cool. Thanks, Nick. That's it for now. So let's go. Great questions. Yeah, that's super. So what we're going to take a look at is the same interface and we're going to talk to fabric. The easy way now. So what I showed you there was the whole footprint of Firefly projects under the Hyperledger umbrella so there's at least half a dozen of those. This is really similar to sort of what you just saw right here. But what this means is, you don't need to have a client wallet you don't need to do certificate signing requests going into a CA. You don't need to collect signatures for endorsement policies and be responsible for, you know, reliably submitting transactions up to an ordering service or subscribing to events. Again, all of this is dealt with for you in collido with Apache Kafka as the message bus. So let's just take a quick look at how easy this is to do with fabric. So I have a web UI here, which I'll open real quickly and what I've done is I've just deployed another fairly basic piece of chain code into this environment. So, again, Hyperledger Explorer. Okay, that's acting up so we'll just skip that right there but I was just going to show you that we have a chain code deployed. And what we're going to do is we're just going to go ahead and access this collido connect interface right here. So I need app credentials to do that. So I'll create some called ABC, and I'm just going to go to this endpoint right here, which should expose some accessible swagger for me. Okay, it doesn't like the creds and the URL so just needs a refresh, and we're good. So I'm just going to go down the line here and do all of the logical steps inside of fabric. We're going to register an identity we're going to enroll an identity we are going to invoke our smart contract and make a state change. We're going to query for the current status of you know the assets inside of our smart contract. Send something in asynchronously and grab the receipt, and then we're going to configure an event stream and subscribe to some type of subscription. So let's start by creating an identity in the system. So I'll create one for user to, and we'll enroll him as a client. So click execute and I'll be returned the secret right here. So I can grab this secret, and then I can do the enroll call. So we'll go close to this enroll endpoint right here. So we'll say try it out user to provide the secret, and we'll go ahead and enroll this guy. And then what we can do is we can actually query this user we get back the 200 response, and we'll be able to see the enrollment certificate and we'll be able to see the CA certificate and all those. Otherwise terribly unpleasant things that you have to do with certificate signing requests and dealing with certificate authorities. So this was all of two API calls which took, you know, probably eight total lines of JSON right there to properly enroll a user. And this this sort of embeds your wallet your client identity to see don't have to worry about signing you don't have to worry about, you know, endorsement collection. Again, all of this is encapsulated, robustly inside of this layer. So what I have inside of my network is I've deployed this asset transfer basic chain code. So what I did is I just compiled the go binary for this chain code, I uploaded it into the smart contract management system on collider. And I pressed a couple buttons and it deployed it into my environment it instantiated that smart contract. Again, that's also backed by a rest API just like Ethereum. So what we're going to do is we're going to invoke this smart contract and we're going to call this pre asset method right here. So back to Swagger. And let's open transactions right here. So we're going to say send transaction, the signer is going to be user to the channel is going to be the default channel that collider created for free for us. We don't bother creating a channel and collider either right we'll do the bootstrapping of the default channel for you by default, so that you just have a ready to use channel to, you know, deploy chain code on to and immediately send transactions into the network. So I named my chain code package asset transfer. So I have two teas right there, and our function is going to be create asset right here. So we need to give it some arcs which I have on my note pad. So we want to give it some arcs that look like this right here. And we can fire this in. So I need to actually change these quotes, they did the prettified quotes. And let's make this more interesting. Whoops. I need to put the quote right here. So we'll make this blue, we'll give it a size of one, we'll give it to myself since I'm doing the demo and we'll give it a value of 100 right here. So we can fire this in. And again this came in synchronously right here so we see the transaction receipt, and now we see the transaction ID, which we can track downstream. So let's go ahead and do that. We'll grab this transaction ID right here. Let's close up this method. And let's go ahead and say, hey, tell me some more details about this transaction. So I'm going to give it the transaction ID. Tell it what channel it's supposed to come from default channel, who signed that transaction user to. So we can go and say that and now we see some more rich information right we see the full object of the body we can see the proposal hash, the name of the chain code I invoked etc. Okay, so that was a synchronous one. And, as you can imagine, we can do this just as easily asynchronously. So let's send this in false. Let's change this to asset to will change it to purple. We'll give it to Karen. And since Karen special will make it worth 1000. We can execute that and immediately it returns right it's just this fire and forget more or less to that Kafka topic so we can take this receipt ID right here. And similar to eat connect, we'll just call the receipts endpoint. So we can go to get receipts ID, but try it out, give it that receipt ID, and this will return us the transaction ID, which in turn we can go and call that transaction ID endpoint, and we'll send that information about Karen's new asset that we just created. So finally we can just overwrite this right here, execute, and we'll see the new asset that we just created asset to which is purple. Super. Okay, so 1051, we're doing okay. Let's press forward and let's create an event stream for fabric. So, just like we did on Ethereum, we just need to tell collider where we want this data to be delivered. Let's try it out. We'll just say example. I'm going to go with web hooks instead of web sockets. So I won't bore you with the command line. We'll say web hook. And now we need to say the URL, and we need to tell it where it's going. So I'm going to use this web hook site right here, which will take in all of my requests so we have a bunch of transactions that have actually taken from the site of the network, mainly being system transactions but we do have two interesting asset transfer transactions, the one I created for myself and the one I just created for Karen. So we're going to copy this endpoint to our clipboard. We go back to swagger and we're going to tell collider that this is where we would like our JSON payloads to be distributed. Okay, and then we're going to say TLS skip verify host is true, just for simplicity. Okay, so that all looks good we can define this event stream object right here. And now we have this. So this is the actual event stream that collider knows about. And this is what we're going to tell our subscription about right this will redirect all the way into that endpoint that we defined right here this web hook site. So grab this event stream resource ID, and let's go create a subscription. We'll click try it out. I'll just say asset transfer subscription. We're going to give it that stream ID. We're going to give it the default channel. We're going to give it user one or user to rather, we're going to go from block zero. I'm going to say the payload type is string of five JSON. And we're going to skip the chain code ID and the event filter I don't have events to find inside of that chain code. But if you want your events to be a bit more granular and a bit more, I guess, ingestible, I'd encourage you to define these chain code IDs and that event filter as well. So we can just go ahead and click execute right here that should be happy. And now if we see my web hook site right here we see a bunch of stuffs happening right it was sitting at zero. And now we have five transactions that came through. So again, a lot of these are the system transactions but if we go to the most recent one right here. And we actually take that transaction ID, we can go query that on collido. And this should be the most recent asset that was created for Karen. So if we go back to the transaction IDs right here and overwrite this. We should see that that's the actual same asset or transaction ID. So we look at this and that was Karen's asset. And again that would have made a bit more sense if it had been defined with an event and defined with a chain code ID as well. So that's fab connect in a nutshell. And if I have Karen do I have three or four more minutes I can show fire flies super quickly. Yeah, please do. Cool. Okay, so let's take a look at Firefly then this stuff is amazing and there's actually a community call happening in five minutes so I'm going to paste this in the chat this is just a link to the Firefly wiki where you have the calendar that's available. So, there's some really cool stuff happening today around token interfaces and around on chain logic and a lot of extensions into the Firefly community so if any, if any of this was you know even you know had a modicum of interesting information. I encourage you to, you know, join these biweekly community calls with, you know, the engineers that actually built the guts of this system. Right, I'm just a talking head that knows how to press a couple buttons but these are the two subject matter experts that, you know, if you have low level, you know networking or interface questions or want to contribute to this community. This is a fantastic place to sort of engage and interact with, you know, other Firefly folks and a bunch of bunch of people on the collido team. So, and as I mentioned, there's a huge footprint of Firefly repositories, many of which would love you to give them a star if you're able to use any of these. So let's just take a look at how it works. So, what I'm going to do is I'm going to create my own Firefly stack right on this is heavily heavily documented. You can just go to the Firefly docs. So I'm just going to say Firefly init. This is how you create a new stack. And I'm going to call make one called data transfer right here. It's gonna say hey Nick how many members do you want. Well I want to show private transactions I want to show off chain private messaging. So I'm going to create three members right here. Okay, so saying okay cool. Now I now I understand this I have a Docker compose that I'm ready to stand up. Go ahead and say start this start this step so I'm going to say ff start data transfer right here. And this will take about a minute or so for this to come up. But what we'll see inside of inside of Firefly is we'll see the ability to do a lot of high level things that proxy down into the blockchain layer. So a lot of the things that get pinned onto the blockchain in Firefly are simply just references to hashes right. The number of hashes inside of the system is probably it's probably layered like three or four. Maybe even five layers deep right so you have a lot of this nested logic and a lot of, you know, sort of elegant rappers, you know with messages with transactions with data attachments with unique IDs for, you know, everything that stays off chain. So you have to pin references of this data onto the blockchain, and you have all of those rich interfaces that I showed you, ETH connect fab connect the ability to ingest events the ability to subscribe to events. You have the ability to publish data to all of the network we're saying, Hey, you know we have a network with you know Nick Kevin Karen Tomas, etc. I just want to do a private data transfer from Nick Karen right here, and we'll put, you know an indecipherable link right onto the blockchain that this proof of that transfer, but that no one else can decrypt or make sense of. So we'll show you that and I'll show you a kind of a very, very easy to use bootstrapped application that's also open sourced in the Firefly samples, which will expose a user interface. Allow us sort of toggle through the different participant views and choose if we want to you know send public data or if we want to send private data as well. So you can see that Firefly is coming along right here it's unlocking the smart contracts it's writing those you know data exchange search so that we can have encrypted transport of our private messages. And as soon as this is almost ready I can hear my fans humming right now. It's going to expose the local host ports for us to access right so we see I can go to 50005001 and 5002 right here. We're up. Let's go ahead and kick off this application right here too. So I'll just say and can start. And this guy will take about a minute to so well that's coming up. Let's go ahead and open up some of these user interfaces so we can go to local host 5000 UI right here here we see the Firefly dashboard we can go to local host. We don't want 3000 that's the application that's trying to open up 2001 slash UI, and we can go to 5002 slash UI. What we'll do is we will send a private transaction using this application from org number org zero to org one and we'll prove that this org right here or two is not going to have any line of sight into that transaction so pretty straightforward. Let's go back here this guy's up and running so let's open local host 3000 and get after it. So let's go to 3000. Okay, so first let's just send a message to the whole network say hello world right here. Okay, so all of these organizations are going to get this network, a hash of that's going to get pinned on the blockchain right there hello world right so we can go that was sent from org number zero right here local host 5000. So we can go to this guy, the third org in our system go to the data explorer right here, go to the messages and see that hey he got a broadcast message right here. We can click on it we can see that a hello world, and this hash right here 99 or nine DDE right there, we went into some sort of, you know, shot emulator right here, we would see that that's the exact same hash that we have right this hello world. So that's the hash of that. Okay, so pretty straightforward. Let's go ahead and send the private transaction now. And again, conscious that we're at the top of the hour. But this is pretty cool. So, I'll just say, private info right here and we're going to send it from org zero right here to org number one, or number two is not going to have any line of sight. So that will come back in here we see the message right here private info. We can go to org number two or number one sorry, we have zero one and two some missing, missing some of these. So go to the data explorer again, we can go in here and see that he has two transactions and three messages. The first message right here is defining the group right so this is saying like hey, this is you, this is org number one right here this is your identity and this is org number two right here so if we click on this guy right here, we can see sort of this JSON object of who's inside of the inside of the system of this private message right here right this is org zero and this is org one right here. We go into the second data attachment right here we can actually see the private information. And now if we go to org three, we go back to its dashboard. We'll see that it does have two transactions right it has a reference of that transaction that we just send the network right there. We can't make any sense of it all it knows is the identity of the node that sent it into the network right. But if we go back to work number two right here, or, or number one or number zero, then we have full line of site, sort of into that private message and into that transaction as well. So that gives you an idea sort of how Firefly works. You have a network map view right here that's you know pretty useful to see organizations you can find the associated Ethereum account that's associated with that org identity. Right so if we looked at that transaction when we saw who it was from a for a right there. That was actually or zeros organization right so if we go to that transaction click on it. And from a for a, which was word for it. So that was a whirlwind tour conscious that I gave you guys a lot of information but I hope the majority of it was interesting. This is all again everything I did you can do yourself. It's documented there's, you know, a ton of videos that I've recorded out on the flight to YouTube. Our team is accessible, you know, via our product and via the Firefly community. And we're here for everyone to get involved and be, you know, is active and participative as you can possibly be and we're, you know, here with open doors and here to help and just want to grow the community and build cool technology. So really appreciate everyone attending and staying for the full hour appreciate Karen and the hyper ledger team for the time to share some information today. And a sincere thank you for me to everyone. Nick, this was wonderful you went through so much information. A lot of it is so helpful for all kinds of use cases or people trying to use different protocols trying to do private transactions so very very helpful. Appreciate your time. Thank you so much. And anyone if you want more information police feel free to write reach out to us or reach out to the collido team. Just have a couple things to share with you before we finish today. We do have more webinars coming up so stay up to date on our events page. More immediately though we have a workshop. This is actually several hours long. So really goes into a deep dive into hyper ledger indie so if you're looking to do anything in digital identity. If you want to learn more about how to use hyper ledger indie. We highly recommend this it's going to be a very interesting session. Please get involved there's many ways in which you can do that. attending more of our events, checking out our wiki or a website, joining our many community groups that talk about use cases or talk about our different projects and Thank you so much for watching and for joining us today. Thank you to Nick and the collido team as well and please have a wonderful day stay safe and join the firefly call it's happening now. Yes, I posted the link in all the chats so if you want to dive in immediately into firefly. It is happening right now and we welcome you to join. Thank you everybody. Have a great day.