Sean Bohan: And we are now being streamed. Live on Youtube, and we'll get started in one minute.
Sean Bohan: All right, Everyone uh thank you for joining us for the
Sean Bohan: Hyper Ledger cacti, blockchain Interoperability with hyper, ledger, cacti, workshop. Um We'd like to thank Rafael and Peter uh for being the workshop leaders uh for the session. Um in the chat. If you have any questions or comments, you can leave them there. We will have folks checking it. We also have a discorded hyper ledger
Sean Bohan: which Um, i'm gonna put the link to once again. I'll put in there every ten or fifteen minutes in case somebody shows a plate um where the cacti community is there They're disgusting the project. They are working on things together. It's a great place for uh
Sean Bohan: folks to gather and to um ask questions as well. We are also live streaming this on Youtube, and i'm gonna put that link into chat as well. Um, in case anyone uh has a colleague who might want to see this at a later date. You can share that with him. It will be in the Hyper Ledger foundation. Youtube Channel um
Sean Bohan: right now on stream, but also later on um as a recording that anybody can check out. And with that I would like to turn it over to Rafael and Peter.
Rafael Belchior: Thanks a lot. Shawn. Um! I have the one I am for fail.
Rafael Belchior: I will be presenting this workshop that we've been organizing the last couple of months
Rafael Belchior: focused on high project tech type.
Rafael Belchior: Uh for your information, We started doing the workshop, where, when the project was hypologic cactus.
Rafael Belchior: After that there was a merge between cactus and a project called Weaver, and hence the name cacti.
Rafael Belchior: So we're going to talk a bit about the practice specific components, but also touching a bit on weaver. So you have complete picture.
Rafael Belchior: So we'll be uh we. We were organizing the workshop also with Monica Gomez, our intern.
Rafael Belchior: I've been involved with hyper ledger on the semi- and sheet program, and i've found Texas very useful
Rafael Belchior: or academic research. So i'm doing my Phd on interpretability, and I found a very valuable research platform,
Rafael Belchior: and I'm. Also involved with
Rafael Belchior: so just a a quick note about blockchain and provides nodes, and it's taking services. If you have any cryptocurrencies, you could do delegation to
Rafael Belchior: our notes.
Rafael Belchior: But the interesting thing about about demon is that they provide. We provide a multi chain Api called ubiquitous, similarly to cactus. But it's more aims towards public blockchain, where you're specified more, and aim towards private watching.
Rafael Belchior: So
Rafael Belchior: we brought you equity into cat type. Now it's uh currently under review in the pull request, but soon it will be possible for cacti users to access public blockchains. The ubiquity.
Rafael Belchior: Peter. Uh, it's
Rafael Belchior: one of the Maintainer to hybrid. He was
Rafael Belchior: participating in the project since its inception, and he works for accenture,
Rafael Belchior: So the the offline is as follows: First we're going to focus on, let's say
Rafael Belchior: first of all on the setup, because hypnosis tech type takes a while to configure and to be able to for us to to see things working. So we're going to tackle that first, and after that we're going to talk about.
Rafael Belchior: I have to send to our partners from Ue Firefly, and also from the weaver folks that now are operated in arms with cacti
Rafael Belchior: for being able to um. The most ranking availability to talk about their projects that are relayed between through provision and related to our own project. So thank you very much.
Rafael Belchior: Um.
Rafael Belchior: And then we have a break ten minutes break
Rafael Belchior: on the second part. We're going to talk about two different components of hyper ledger, He
Rafael Belchior: uh, so it will be a bit shorter. And finally, we're going to have a hands on session where we
Rafael Belchior: talk about the possible example applications we have currently available
Rafael Belchior: uh a more complex in that application that will be presented by Peter to the supply chain app, and also an application made by Andre al Go to, who was doing the summary internship implemented the Cbdc interoperable.
Rafael Belchior: Apart from using Hep logic, that will be very interesting.
Rafael Belchior: All right. First things. First, the set that takes a while
Rafael Belchior: uh you have in that Pr. Code uh a link to the build instructions,
Rafael Belchior: and that there are essentially two ways to do this thing.
Rafael Belchior: First of all,
Rafael Belchior: the quick setup. We can use a a dev container which is a functionality from visual studio that allows you to build the environment in a docker container
Rafael Belchior: uh Project Github Project, and then you go to the Dot Beth container, and then you have the instructions that you can follow up.
Rafael Belchior: You have, uh, we have enough time to to build the project.
Rafael Belchior: Be uh aware that you need to make sure that your machine has enough crime and storage. Um, since I project, I uses a lot of toer images. The storage grows very quickly, and information gets runs out of storage of
Rafael Belchior: it. It will be very difficult to. You'll have strange everything on the possible for you to use that tie at
Rafael Belchior: the the manual setup. You need to install the prerequisite. So
Rafael Belchior: we we tested this for up to twenty we need kids. You need notes
Rafael Belchior: and Pm.
Rafael Belchior: Docker, etc. Etc. Etc.
Rafael Belchior: Uh. Note that all these instructions are on the deal. Dot Md: so you can check them. There you don't do to copy from the slide
Rafael Belchior: right?
Rafael Belchior: We also depend on the in the Sdk. We in this arogen. It is another hypnotic project dedicated to identity.
Rafael Belchior: So we have A.
Rafael Belchior: And finally, after you install the dependencies you run, you are, and run configure which will build the whole project, and when it's done, which takes a while, you're able to run the test uh, run the
Rafael Belchior: the binaries. That's it.
Sean Bohan: Hey? Yeah, Rafael, can you show the Qr code one more time. Um, i'm gonna.
Rafael Belchior: I'm also going to upload the slides when someone else will be talking. So if you want to copy paste from the slides to these
Sean Bohan: one more second. Uh
Sean Bohan: Alrighty. Thank you.
Rafael Belchior: You're welcome.
Rafael Belchior: Good uh introduction to Hyper Ledger. Uh Peter.
Peter Somogyvari: Yes, uh let me share my screen real quick.
Saravanan Dharmalingam: So what is the recommended lands to use this?
Peter Somogyvari: Uh: wait. Sorry. What was that?
Peter Somogyvari: Yeah, recommended rams? He said. You know it would consume a lot of memory. That will be sixteen gigs. Yeah. But if you're on windows that's preferable to have a little more than that as well, because
Peter Somogyvari: the virtualization and all that takes even more.
Peter Somogyvari: But on, if you're on a boon to, or any other Linux destroy or in the back, then sixty is usually enough.
Saravanan Dharmalingam: Thank you.
Peter Somogyvari: No problem.
Peter Somogyvari: Alright, just a very quickly and through to you I ledger Uh: this is not going to be the best possible introduction,
Peter Somogyvari: because, uh, that one is always done by it, any event. Or
Peter Somogyvari: but i'll try my best. Basically The Hyper Ledger foundation is a collection
Peter Somogyvari: of open source projects
Peter Somogyvari: aimed at distributed legend technologies and things tooling, you know, a probability around those,
Peter Somogyvari: and there's a just a couple of things that I want to highlight one. This is it's cryptocurrency, agnostic. So
Peter Somogyvari: the I for your foundation does not
Peter Somogyvari: I have their own token, and there's no advertisement of any tokens here, either.
Peter Somogyvari: That's important. And then the other thing that I like to doubly highlight is that
Peter Somogyvari: uh, even though the name says uh Ledger,
Peter Somogyvari: the high pro lecture foundation is a collection of projects,
Peter Somogyvari: so it's not just a single one. There's actually plenty
Peter Somogyvari: There's also different tiers, so you can see
Peter Somogyvari: a list of the projects here. Some of them are graduated projects, which is the
Peter Somogyvari: stage that you can reach by Uh being an incubation first
Peter Somogyvari: stage later this year, or maybe, or the next year, depending on how fast things move.
Peter Somogyvari: And then, uh, some of these other projects will get talked about as well. But uh again, despite the name being Hyper Ledger, there's
Peter Somogyvari: separate projects. Some move to with our actual distributed ledger, such as spasy and fabric
Peter Somogyvari: in the I,
Peter Somogyvari: but not all of them.
Peter Somogyvari: And uh
Peter Somogyvari: that that says, Oh, there's some general information here as well.
Peter Somogyvari: We do try to have a very, very
Peter Somogyvari: welcoming an inclusive community, so you can always
Peter Somogyvari: feel free to drop by and uh see what kind of contributions he could make, or which uh projects uh
Peter Somogyvari: artifacts you could use for something that you want to build yourself.
Peter Somogyvari: And uh, there's also mentorships
Peter Somogyvari: which are a great way to
Peter Somogyvari: get some uh real worlds experience with mentors who will actually help you. I'm one of those mentors.
Peter Somogyvari: So I think the next iteration starts next summer. But if you are in school right now, and you're thinking about
Peter Somogyvari: entering the industry soon. Then you should check that out as well,
Peter Somogyvari: and I will pass it on to
Peter Somogyvari: Brahma. I believe
Rafael Belchior: I I think that would be.
Peter Somogyvari: Oh, not bad
Rafael Belchior: off to you,
Rafael Belchior: right. Thanks a lot, Kate.
Rafael Belchior: So now we'll provide the quick introduction a quick overview to the field of watch, and
Rafael Belchior: so we need no more or less where he's positioned against other projects.
Rafael Belchior: So there are different models for botching through credibility and tons of
Rafael Belchior: great research, great systematizations, and there are different ways to look at things. But the way we found to be suitable, and um
Rafael Belchior: at the same time comprehensive, is to classify the solutions into interoperation modes, and then each solution we can conduct such that we can conduct an assessment to each solution.
Rafael Belchior: So there are three interoperation modes, data transfers as the transfers and asset exchanges
Rafael Belchior: interpretation. Most Basically, tell you what is the thing that we want to?
Rafael Belchior: That is the object of interoperation.
Rafael Belchior: What what is the object that I will manipulate? Manage
Rafael Belchior: in between different, let's say,
Rafael Belchior: and then we have the interpretation assessment.
Rafael Belchior: If you want to measure how
Rafael Belchior: powerful interpretability. Solutions are with regard to each other. We can classify them with the P. Livestocks, and we to sea level. So the P. The you will still,
Rafael Belchior: If the system interoperates with other systems. As it is, so the higher the P. Level, the better
Rafael Belchior: interoperation capabilities of the
Rafael Belchior: well, the sea levels,
Rafael Belchior: and we'll talk a bit
Rafael Belchior: morning detail about. So data transfers are very simple. You have piece of data on the source blockchain. You want. Send it to target portion via an I am interpretability mechanism. You basically replicate that data
Rafael Belchior: and
Rafael Belchior: push it onto the target patch.
Rafael Belchior: These data transfers are relatively easy to do, especially because we don't have any restrictions on these operations. For example, you don't need to assure
Rafael Belchior: um
Rafael Belchior: that that is no double spend
Rafael Belchior: of information entirely to as a transfer
Rafael Belchior: in as the transfers. You have an as on a subscription, and you want to move it to a target blockchain.
Rafael Belchior: The way to do this is to lock the asset on the source blockchain, and to create the representation of that asset on the target
Rafael Belchior: so effectively. You are not transferring assets across watching. Because um! You can't really do that. But what you can do is walk in one side and unlocking the other,
Rafael Belchior: and then the objective of your interpretability. Mechanism is to synchronize both ledger such that it is always locked in one side.
Rafael Belchior: Otherwise we will have a sort of cross-shine double spend,
Rafael Belchior: which happened uh, and quite a lot in the last month.
Rafael Belchior: After that we have at the exit exchanges. Hdlc's
Rafael Belchior: a very common way to implement them.
Rafael Belchior: Basically What we can do is to deploy part of smart contracts such that
Rafael Belchior: I can use it to open your lock and get my keys on the other chain
uh
Rafael Belchior: use to interoperate. Now let's see how powerful can the interoperation mechanisms be? We divided
Rafael Belchior: this classification into four levels p one to before
Rafael Belchior: the height of the t-level the strongest in throughputability mechanism. This is the the intuition. So, for example, if you have a system providing p one level interoperability, it means that you can have different functionalities on the savesome network that you want to the same Dt network
Rafael Belchior: uh data
Rafael Belchior: and working with each other's data. So, for example, interpretability across smart contracts, right
Rafael Belchior: if we step on, for example, A Lp: three, we have
Rafael Belchior: sorry uh same um
Rafael Belchior: on the same. Uh Dt: protocol.
Rafael Belchior: Okay, So um, what happens is that, for example, you have to uh interoperate A or to transfer assets across an ipadium my net and an acm test net. You can do that within A. P. Three level,
Rafael Belchior: and before it's uh among different guilty protocols, for example, pocodot and hyperlodger.
Rafael Belchior: On the other hand, we have the C levels, So the C levels define how well a pair of systems work together, and we basically have three, and the intuition is
Rafael Belchior: the higher, the more standardized and the more matured those ecosystems are. So if you have level, c. One, it means that you can communicate in the semantic layer, meaning you can execute one protocol, for example, an as a transfer.
Rafael Belchior: If you have level c. Two, then there are a set of organizations working together to promote some uh process that if it's from interoperability and level, c. Three, it's interoperability at the legal layer, meaning that there is some regulation that
Rafael Belchior: will, for instance, recognize as the transfers as legal, and as far as we know, there are not many, C, three, and even C, two levels.
Rafael Belchior: The systems that support these levels.
Rafael Belchior: Okay. And after this what we do with this information? Well, we can draw a table where we have,
Rafael Belchior: and we have a group of references.
Rafael Belchior: Imagine that we want the system that supports P. Four, C. One. And this and I said transfers, we go on to this
Rafael Belchior: problems, and then we basically try to match which one stick in all our requirements. Okay? And then we can see that for those sites that basically those numbers are citations. Uh, this is from an academic piper.
Rafael Belchior: Okay, So this allows you to choose an interoperability.
Rafael Belchior: Basically cacti uh is supports level P form and supports level C two, and as transfer state to transfer as exchange. It's quite uh versatile
Rafael Belchior: right uh some some more uh references for
Rafael Belchior: these formalization in standardization. We have a talk on this at hypological forum, and There is also two papers who wrote about this,
Rafael Belchior: so feel free to check them off.
Rafael Belchior: All right. Now. I would like to call Ram to present the weaver specific parts
Venkatraman Ramakrishna: from the cacti. Are you? Are you there?
Rafael Belchior: Yes,
Venkatraman Ramakrishna: great. So
Venkatraman Ramakrishna: whoever is controlling slides, can you move to the next?
Venkatraman Ramakrishna: Uh, May? Perhaps you could share your screen with with the slides.
Rafael Belchior: I'll get it in a second. Yes,
Sean Bohan: while we're getting it together, Stefan, you have a question. If if you'd like to ask questions. Please put them in uh zoom. But, Stephanie, you have a question while we're getting a slide together.
Sean Bohan: Okay, Stefan in the sandwich. I guess you can't hear us. Go ahead, Rafael. You're good.
Venkatraman Ramakrishna: He's asking if there will be a full recording.
Sean Bohan: There is, there will be a full recording. It's going to be on Youtube stuff on. You're good to go
Sean Bohan: uh. Shane has a question about. Can we get a reference to the research paper?
Rafael Belchior: Uh, yes, so the slides will be the slide that will be shared. Then then you can have You can copy the link or the title. You'll be able to access the paper,
Sean Bohan: and we'll make sure we put the links for this in the Youtube description as well. This way. Folks want to follow along later on. They can. Uh sorry. Go right ahead, guys.
Venkatraman Ramakrishna: Okay, Can you move them? Can you move to the next slide, please?
Venkatraman Ramakrishna: Yeah. So uh Rava already talked about the use case pattern. So uh, just for uh, just to give you some history. We started the weaver project
Venkatraman Ramakrishna: uh in about uh, three and a half years ago, and uh, it was not named. We were until about a year and a half ago, when we open source it to Hyperligia labs. So we started off uh with by trying to figure out a taxonomy of use case patterns. And this is what he came up with. And uh, uh, we we call it data sharing. What I've talked about is data transfer. We used to call it data transfer. But uh, we we just using this for the term sharing because people had uh
Venkatraman Ramakrishna: some confusion with the terminology. Uh, but yeah, it's the uh the same uh the use case patterns that I was talking about earlier uh going to the next slide, please.
Venkatraman Ramakrishna: So the we were framework the way we wanted to. We were the envision building it uh the kind of design choices we wanted to meet was, uh uh
Venkatraman Ramakrishna: around, was ensuring that
Venkatraman Ramakrishna: different networks would remain independent, self, sovereign, maintain their own privacy, and uh, would not require any kind of pressure. Third party to mediate between them for in probability purposes. So the mechanism of the appliance we use for that purpose was, we envisioned networks progressing one or more relays. And, as you can see here uh, you have a relay representing three networks in the picture, so uh, to run any kind of cross into protocol, be it for traditional
Venkatraman Ramakrishna: sharing, or for exchanging assets, or for transferring Nasa from one to to the other. The invention that is happening through these uh release. So uh what you can see here is uh the vision that we can enable using the Uh using these protocols. And uh with with Katie, you get this network of network vision uh, where you can uh different networks uh remain. They They function according to their native
Venkatraman Ramakrishna: uh logic. They they run the same business workforce as they were designed for. All they have to do is they have to run an extra really component, using which they can uh uh communicate with other networks to share data, exchange assets and transfer assets, and so on. And, uh, by the way, this something you will. We will come to, maybe uh later uh the in in cacti. When we are uh we we we end up merging. We were, and the uh and the cactus components together.
Venkatraman Ramakrishna: Uh, we will. We're going to have uh, different ways in which the sort of wiring can be done, the sort of Internet of wiring. You can run uh these kinds of protocols, using either a cactus in a cactus kind of node server, or uh, we will kind of relay which act as a gateway uh as an English, and need this point for every network.
Venkatraman Ramakrishna: So uh, and the relay is a component. We expect to also allow networks to communicate with a traditional enterprise system the record that is, centralized systems, networks uh which have record, which are databases that are not actually shared across one to two years uh next piece.
Venkatraman Ramakrishna: Yeah, this this I'm not going to go into the details. This is a blow up of the relay. The relay has a dlty neutral part which you see on the left, and uh, particular drivers of plugins you can see on the right uh which are specific, which uh are used to drive specific logic into a a particular leisure. So the dlty neutral part is going to be running uh protocol with other relays in a way that is completely agnostic of uh what the network behind it looks like. So you how you can imagine, uh dt protocol A.
Venkatraman Ramakrishna: The d protocol, c. Through the relays. The really to really protocol is going to be a a standardized uh global protocol which does not care if protocol is fabric or protocol, seed ethereum, or what have you? It's just going to be running uh your your traditional uh message based uh protocols, and it will. It's going to rely on these protocol drivers, which you see on the right uh, or or protocol adaptors; for in order to drive transactions and queries through their respective networks, and those drivers or adaptors are going to be running
Venkatraman Ramakrishna: according to the native logic of the Uh uh, D. It platforms like they be fabric, specific, or call us specific, or bases specific, and so on next slide, please.
Venkatraman Ramakrishna: Uh. So the the the, the, the the envision networks, and the interpretability system having particular Dc. Capabilities
Venkatraman Ramakrishna: or building blocks, using which we can engineer the kinds of protocols that uh, Rafael and I talked earlier, the data sharing the as an exchange as it transfers, so the capabilities of the relay. Uh, there's certain core capabilities, and then there are certain communal capabilities like syntactic sugar. We can we can add over. So, in order to enable e for ease of use for developers, so the core capabilities are for the relays they need to be able to address uh remote views,
Venkatraman Ramakrishna: view meaning the uh query for data in the in the context of a data sharing uh, you want one network to be able to address some piece of data, either in in fundamental form, or using some kind of a uh complex or an aggregated form, and they really should be able to communicate that desire for this a particular piece of data uh to another relay and the uh, the second relay, as so, so they should be able to, uh, uh drive uh some self transactions
Venkatraman Ramakrishna: through its network, and produce a view along with some proof that that views authentic, and then to send back to the uh to the requesting relay. Uh next, please.
Venkatraman Ramakrishna: Now, on the networks themselves, there are particular code capabilities that they will have to perform in order for this transaction to this cross into the operation to remain decentralized, and the they will be performing them, using the logic of uh uh smart contracts. So these are capabilities which uh, we will be deploying a in the form of smart contracts uh in fabric. You can imagine them as chain code and coda. They will be running as a sort of a cord app that that is going to be uh deployed in all the notes and uh set of capabilities they need to do?
Venkatraman Ramakrishna: Or can you assist them to check on any request coming from Uh outside the network, generating the proof for a given legislate validating the state proof uh uh pledging or locking an asset, and the ability to claim or take them and assets. So these operations are core capabilities that have to perform on the contracts, because that's the only way We can ensure that the uh uh network-wide decision on these uh, on on these operations.
Venkatraman Ramakrishna: My next second.
Venkatraman Ramakrishna: Yeah. Our claim is that this is a complete set of building blocks that can realize any sort of positive dependency. Again, it's a claim We don't have a theoretical proof for this. But, uh, we something we'll be analyzing as we go back, go on next slide.
Venkatraman Ramakrishna: Uh. So the uh data sharing is uh, uh, we're going to be relying on the basic building box of generation and proof verification. And as a transfer is the way we implemented. This is, uh, by relying on multiple instance of a data sharing protocol. Now, there are other ways of doing asset transfer as well. And uh, maybe uh, uh, I don't know if you'll come to this uh today. But that is standardization effort going on uh under the ages of the Ips. They we're trying to standardize and asset, transfer protocol
Venkatraman Ramakrishna: uh, that can ensure that an asset leave one network and goes to another in an atomic manner. So uh, that's something that we will uh also be uh incorporating into category uh as an exchange. Finally, uh, it's multiple asset loss and claims and and possible unlocks. If the doesn't go through, and it follows the logic of Uh Hdlc or the hashtag or contract next slide, please,
Venkatraman Ramakrishna: uh not going to go into these uh detail. But uh, this was the viewer architecture, and we are trying to now merge it with the cactus architecture not to produce a merge. Tactile architecture. Uh, it's just that the main components here are, uh, I already talked about the relays and associated with them to the protocol drivers interpretation. Module is just the uh kind of very plan name is given to the set of contracts that are supposed to be depart on the network. Uh, in addition, application helpers on the bottom left, you see, are uh the uh, the the the Sdk
Venkatraman Ramakrishna: and the Api that we provide to an application developer, or the business logic that is supposed to be driving any sort of cross network data query, or as an exchange operations. And there's also an identity service. Don't have time to go into this. But uh, the we we have mechanisms in. We were uh, and we've written a couple of research people on this topic whereby we can use the the dead concept of the decentralized identity concept to uh, allow two different networks to communicate and sync there. Uh ca uh
Venkatraman Ramakrishna: certificates, so that they can then validate uh signatures on the proof that they get from the from some party in another network
Venkatraman Ramakrishna: next like this.
Venkatraman Ramakrishna: Uh: So this is uh, typically how a hyperligate fabric network would be adapted with evil components. Uh: and yeah, again, going forward, there' be cacti components. Uh. So you you can see a typical subject network on the top left. It has a peers order in Cas, then uh, it has a smart contacts of chain port, and about that it has to the layer to applications the the ones built on the fabric. Sdk: Now what you need for in order for uh that network to be, you would enable this you have to add
Venkatraman Ramakrishna: one or more relays that act as gateways associated with the relay. You have to have some drivers which are going to be be engineered the same way as uh you'd build any uh fabric application. And uh your, the actual fabric applications that uh are interested in interoperation. They will be augmented, or they will import the beaver sdk, and the helper functions in order to drive any sort of cost to transactions, and the middle. There you see the fabric interoperation team code. That's the we were
Venkatraman Ramakrishna: uh change code, the the We were smart contracts containing all of the basic burning boxes. The proof for presentation, verification, logic, the lock uh lotting and asset, taming and asset. Those are implemented in one chain that you're supposed to be installing on and deploying all the beers uh next slide, please.
Venkatraman Ramakrishna: We have something very simple for coda. Do not to go into this in detail. But, uh, I think if you are familiar with how quarter works uh, very similar to your peers. Then you have cord apps in two different in or three different layers. You have the contracts, and on top of that flows on top of that you can have the client of the Ui layer. And uh, if you look at the bottom right uh the weaver components are uh very similar to what you saw in uh fabric. You have relays, your drivers. You have a instead of the interoperation team code you have in operation card.
Venkatraman Ramakrishna: And uh, then about that in the client application it can excite the the We will call it Sdk:
Venkatraman Ramakrishna: Uh: Yeah. A few question there. Uh,
Venkatraman Ramakrishna: okay, let me. I'll add the question uh when I finish your next slide.
Venkatraman Ramakrishna: Uh, okay, don't have to go into this in detail uh click again, if
Venkatraman Ramakrishna: yeah, uh, What's more So yeah, the the I'm just showing here what are the uh, how to trigger a data sharing or a data transfer query uh from if you are running a public application, but a node that you see on the top right, or a cord app built in Cotland on the bottom right next slide.
Venkatraman Ramakrishna: Uh yeah, I think you can keep uh going. I think i'll probably skip this because we are out of time, right? Uh: So yeah, uh, if you want to
Venkatraman Ramakrishna: again, this is something we're going to be porting to cacti very soon. But right now, if you are uh eager to try this out. Uh there is apple documentation. We have a full tutorial that you can uh, uh, uh, where you can uh uh run sample test networks which are provided within the bever code base and sample applications that you can install and then run interoperability Protocols Uh uh next slide.
Venkatraman Ramakrishna: Yeah. And if you want more information this you always go to the Rc. Folder and you have a bunch of papers and articles listed in the over you page next, please.
Venkatraman Ramakrishna: Okay. So how to merge view with cactus. So this is something that uh, both the the the cactus maintenance and weaver meetings I've been uh discussing and working on for better part of a year. And uh, uh, uh, we, the goals for this joint in topability flammable. So there's a lot of uh similarities in both goals and philosophy between the two projects cactus and we work, and uh, uh, uh, but the two projects also offer something uh some distinct and unique features. So
Venkatraman Ramakrishna: the way we wanted to merge them was we would be uh fusing together the components that are doing roughly the same serving roughly the same purpose. And then we're going to be aggregating and offering as choice the other kind of uh components uh so yup that in an actually should cover what our vision for launching is. Uh, next slide, please.
Sean Bohan: Yeah, Rob. Uh the first question I assume a relay must be created maintained for each dlt protocol. Are there any evolving standards? Api, our Pc. For common interactions with Dl. T. Slash chains to help with interoperability? That's from John Kent.
Venkatraman Ramakrishna: Yeah. So uh, yes, the uh
Venkatraman Ramakrishna: you don't know. Uh. You do not have to create a separate relay for each. Did protocol. What you have to create is the protocol adapter of the protocol driver for each protocol. So the I I mentioned in an early slide that I really had two parts. The D Rt. Neutral part is something you uh you you can just take as a universal appliance, and you can. You just have to configure it for your particular network uh aren't there any evolving standards? Yes, so the the are, and uh, just something. That profile is.
Venkatraman Ramakrishna: So I've also been kidding more than there's a a group called the Secure Asset Transfer Group, uh which has been trying to uh build a working group under the Ips in order to standardize exactly this protocol. It's a kind of protocol that will connect
Venkatraman Ramakrishna: to Uh relays or in in the city Parliament, we call them gateways. Uh. The philosophy is a a network is represented by a gateway, and that uh, if the network wants to send an asset over to another network or communicate some kind of data to another network. It is going to rely on its gateway to do that by talking to the gateway of the other network. That's very similar to what I showed you uh
Venkatraman Ramakrishna: for for the with the with the two release. So that is standard which we are still working on a lot of people from different uh uh walks of life, academia, industry, who've been working on that kind of uh standard, and these these all set any uh involvement and help from any of the the folks in the audience here. But yeah, that is the the the really really protocol. That's something we are working on on standardizing under the Ip
Sean Bohan: and um Mauritio grows. Elli asks,
Venkatraman Ramakrishna: So this is so. Is this really going to be practically a small contract? If so, could one create one? For in for ethereum. The really is not a smart contract, really is a messaging the uh device. Uh, what is that? Is a separate smart contract that is running on the network which the relay through its protocol driver is going to hit. So uh, think of this as you have two networks, and then in the middle you have to relate. So the really is act as the communication components. But, uh, a lot of the core functionality is actually happening in the network.
Venkatraman Ramakrishna: And uh, because in networks are not centralized uh uh modules uh the the logic for running any sort of uh anything on those end networks involves running them in the native contact logic. So in fabric you'll be running it as gene code, you'll be running it as a call up. So uh see, either. Really, it's just a messaging component. But backing it in the network is smart contract so, and yes, you can create one for it, even.
Sean Bohan: Uh Treasurer Mohan asks, Can we connect private blockchains and public blockchains, using a relay example, Hyper ledger fabric to Cosmos Hub? That that is our hope, and i'll, uh I think there's nothing uh, uh, theoretically or technically, that's stopping it. We just haven't yet built a poc for that.
Venkatraman Ramakrishna: But we hope to in the near future. So right now we have uh relays uh and uh crossnet, with data sharing and asset exchange for public and quarter networks, and to some extent for Bayesu. Uh, but we are going to work on uh extending support for uh public ethereum, Maybe Cosmos
Rafael Belchior: thanks for
Rafael Belchior: that was a very insightful presentation. I see I see there are some more questions, but I think we'll have to defer them to the
Rafael Belchior: the end of the workshop at the dedicated Q. And A. Session, so we can move on with the the presentation.
Rafael Belchior: Thanks a lot.
Sean Bohan: Thanks, Roma.
Rafael Belchior: All right. Uh, let's keep going with the Hyper ledger uh uh hyperbolic live project called Ui uh Suzumu! Are you here?
Susumu Toriumi: Yes, yes, Can you hear me?
Rafael Belchior: Yes, uh, Can you share your screen?
Susumu Toriumi: Yes,
Susumu Toriumi: all right.
Susumu Toriumi: So can you see my screen.
Rafael Belchior: Yes,
Susumu Toriumi: great
Susumu Toriumi: uh, hi! Everyone uh my name is so so much already. You me the view of the Theta J.
Susumu Toriumi: Uh, please allow me to introduce you a a hyper ledge allow project which focuses on the interoperability for heterogeneous blockchain networks.
Susumu Toriumi: Um in a nutshell. Uh, I mean, you he puts more emphasis on the communication they are compared to talk to it uh for achieving It's plus less general purpose costs and communication,
Susumu Toriumi: whereas uh cocktails as a whole captive as a whole puts more emphasis on the integration of the whole system with blockchains. But, uh, since it has a much similarity in the architecture to Wevo.
Susumu Toriumi: So there is a a module in uh Uri uh which corresponds to the is in we.
Susumu Toriumi: So uh, first and foremost you is based on Ibc into a blockchain communication protocol from the Cosmos f system.
Susumu Toriumi: Cosmos is a public blockchain project which aims to build the Internet of blockchain
Susumu Toriumi: uh within the ecosystem. They compile sets of standards for blockchain communication as the foundation for constraint communication.
Susumu Toriumi: You can consider it as a Tcp. Ip for blockchain communication.
Susumu Toriumi: The core focus of Ivc is on chain verification of counter but blockchain to achieve trustless communication.
Susumu Toriumi: Uh, this means a smart contract will perform cryptographic verification that to certain transaction is finalized on the counterpart chain,
Susumu Toriumi: and we are working on
Susumu Toriumi: supporting public Iterium and Koram in the family.
Susumu Toriumi: And the yeah cosmos. Suppose the Uh, the Ibc itself. So someone asked me a question. Uh, can you connect Hyper Ledge a public to Cosmos Hub. Uh, yes, uh, with high quality.
Susumu Toriumi: You can do that through the I Dc. Portable
Susumu Toriumi: in this slide I summarize the typical categorization to achieve interoperability among blockchain.
Susumu Toriumi: Uh. The typicality of intellectual communication is that uh how one can guarantee a certain transaction in final finalized in the force chain which you guys, the following procedure in the destination chain One:
Susumu Toriumi: so the straightforward way
Susumu Toriumi: is to let the trusted start party play the role. Uh, this will be also called the external body Data per turns.
Susumu Toriumi: Um. The obvious difficulty of this apology is that it is sometimes in feasible to have such third party.
Susumu Toriumi: Uh, there is also another way for which is called Hdlc. But I won't. Go into details about it as la part some already mentioned about.
Susumu Toriumi: Uh, I will explain the sense of uh relay and live ground in the following Fl.
Susumu Toriumi: Uh. So they see the high level overview of Ibc. Architecture with the within the Ivc module uh, which facilities communication there are several obstructions. Figure out to Tcp. Ip. Such as pocket connection, channel, and client
Susumu Toriumi: on the clue.
Susumu Toriumi: The proof structure and the specification is later dependent
Susumu Toriumi: uh basically proof is used for the attestation that the certain payload is actually finalized in the Uh source chain
Susumu Toriumi: Uh for buddy data sets and the mockle loot based chain like etherium. This will be confirmed by uh check header uh! Which verifies the block head, though it's signed by
Susumu Toriumi: and verify membership which verifies a certain key value. Pair is included in the World State through Macle path verification.
Susumu Toriumi: Um you we uh provide the
Susumu Toriumi: the nature dependent part of the Ivc protocol.
Susumu Toriumi: So um,
Susumu Toriumi: if we if you want to. Uh apply you to your network. Uh,
Susumu Toriumi: and you need to also have the uh of change process read for for physical transport or pockets.
Susumu Toriumi: Oh,
Susumu Toriumi: we also provide the middle. We are called close framework, which works with Ue. Ivc module.
Susumu Toriumi: So if we want to facilitate complex transactions as just delivery versus payment. We need more foundation on top of reliable communication,
Susumu Toriumi: not going into full details of this middleware, but basically what it does is to provide functionality of locking store, and the transaction
Susumu Toriumi: erez agmoni coordination, like two-phase commit uh by this functionality you can coordinate transaction in the destination chain. If a certain transaction in the source chain succeeds on the vice versa. One hundred
Susumu Toriumi: uh we are currently working on Lcp. Like client proxy, which you can consider uh it as an extension to you.
Susumu Toriumi: It facilitates a trusted execution, environment or key technology for verification.
Susumu Toriumi: Basically We substitute the computational computation on the security enhance hardware or part of on sharing verification.
Susumu Toriumi: So this will enable um efficiency and verification, or count of out blockchain, yet
Susumu Toriumi: yet does not sacrifice the good security property of Ivc.
Susumu Toriumi: Uh we provide uh this product with the Japanese financial institution to platform the Dvp. Or stable coins on the Security tokens.
Susumu Toriumi: Um i'm. Not going into full details of this architecture. But, uh,
Susumu Toriumi: uh, basically what it does is that we have this Uh Lcp node which facilitates the Uh,
Susumu Toriumi: he uh
Susumu Toriumi: security and hardware to solutions, the on chain verification process,
Susumu Toriumi: and that there is a attestation service which attest the Uh Lcp Uh walks in the sound environment.
Susumu Toriumi: Uh, with these help, uh, we can substitute uh
Susumu Toriumi: the on chain verification security.
Susumu Toriumi: So for more information about the Ue and the Uh Cross framework or Lcp. Please visit our website uh medium or github.
Susumu Toriumi: That's great, and there is a uh for technical details about the as well as two to three out for uh Token transport
Susumu Toriumi: uh. We are more than happy to have your feedback for this product.
Susumu Toriumi: Uh, thank you very much.
Rafael Belchior: Thank you very much. Zoom. Uh. Does anyone have any questions
Rafael Belchior: On the meantime, let me comment that um you is a very interesting solution, because it
Rafael Belchior: one of the reasons is that it uses Ibc. Which is one of the de facto standards for the interpretability in the public blockchain world,
Rafael Belchior: and effectively the proof that you
Rafael Belchior: carry on those Ipc packets
Rafael Belchior: are verified on chain, making it, the press assumption being the security of the source chain. Right?
Rafael Belchior: Uh, Of course you need to be able to assert that an implementation it does not have, but on the proof verification.
Rafael Belchior: But no one in every software package
Rafael Belchior: a Shane asks, Can the proof be checked? Checked from the counterparty blockchain?
Susumu Toriumi: The source. Produce the the payload with It's cool
Susumu Toriumi: um checked in the uh counterpoint blockchain uh phone chain for that uh the the the the chain make sure that some transaction actually happen in the source chain.
Rafael Belchior: That's correct for some technical details, Shane, you can uh search for merkel proofs, or in the case of this
Rafael Belchior: Um Marco proofs
Rafael Belchior: that basically um. You can assert that a certain event or a certain transaction were incorporated into an Vm. Based blockchain on a counterparty watching all change. That is why
Rafael Belchior: the security of such protocols is so
Rafael Belchior: uh, so nice. It doesn't depend on the centralized set of parties to certain the messages valid.
Rafael Belchior: Oh, thank you very much.
Rafael Belchior: Um. This was a great present very much.
Rafael Belchior: Let me now call Nico for Firefly. Me call you here,
Nicko Guyer: hey? Thanks, Rafael.
Rafael Belchior: Yeah, please. If you can share your slides.
Nicko Guyer: Yep, I will share my screen.
Nicko Guyer: Can everybody see my slides?
Rafael Belchior: Yep.
Nicko Guyer: Okay. Awesome.
Nicko Guyer: Yeah. Well, thanks. Uh, Thank you for the the great presentation. So far this is really exciting. So Hyper Ledger Firefly is another Hyper ledger project.
Nicko Guyer: Uh, and I blood. Your Firefly is has a little bit of a like interoperability is a is a big part of firefly, but Firefly has a slightly different focus than the the projects that we've looked at so far, so uh part of what i'll be walking you through is what is Firefly if you haven't heard of it, if you're not familiar with it, and i'm gonna try to go through that really quickly. Uh, we'll also be talking about the differences between cacti and Firefly, and how they can be used together, and then I would also love to show it in action. Um, but i'm i'm gonna try to keep all this
Nicko Guyer: really brief. So
Nicko Guyer: uh firefly is what we describe as a a super node. Uh we. It's a complete stack for enterprises to build and scale secure web three applications. So What does this mean? So it's. It's not a Dl team. It sits a layer above the blockchain, and it is a platform that makes it easy to build blockchain applications on. So it provides an Api. It provides web sockets and a a really familiar user experience to
Nicko Guyer: uh software developers that are used to building traditional web, two apps uh it makes building web three apps uh a familiar look, and feel and experience for them.
Nicko Guyer: So when we look at all the things you need to build a web. Three App: I'm: going to go through this really, quickly. Uh: hopefully.
Nicko Guyer: Yeah, The audience here is familiar with what it takes to build a a blockchain app, but you down at the bottom you have your your chain. So say, for example, I want to build an app that can uh mint, some tokens and trade transfer tokens on a a public chain, or something like that. Uh I I need a blockchain node. I'm going to keep some data off chain as well. Uh, there are great open source projects for both of these things already. So i'm probably not gonna uh reinvent these things. Uh
Nicko Guyer: yeah, I might be using an ethereum node or or fabric, or be suit, or you know, there's a a lot of different things I can hear I can use here. So uh, I will also need a token smart contract,
Nicko Guyer: some code to submit transactions, index events. Uh, i'll need some code to talk to my my off-chain data store. I need to manage all my signing keys while it balances and I need some code. That's going to kind of bridge these two worlds of you know all the stuff that's happening on chain with all the data that's off chain as well.
Nicko Guyer: I need some code that's gonna
Nicko Guyer: uh, you know, distinguish between what data should be shared publicly on the chain what data should be kept private. I don't want to put all of my users information on the chain, that sort of thing. Uh, I'm gonna need to write the actual business logic of my application and my back end Api, and finally my front end, my web ui, or mobile app, or something like that.
Nicko Guyer: So in in the previous world, before Firefly this would be all code that I would have to worry about writing,
Nicko Guyer: and so Firefly changes this picture, and it takes the entire middle chunk of this and says, Well, Let's Let's have an open source platform that we can reuse that can be extended. It's pluggable uh that can work with many different blockchains
Nicko Guyer: that can work with many different types of data stores and and have that be open source. And that would be a common foundation that lots of different projects can build their applications on top of. And then that lets me as the the application developer, focus on just these top two boxes of
Nicko Guyer: what's my business logic? Uh? And what's my user experience like now? Uh, maybe I have a custom smart contract already, and I I still really care about the very particulars of the smart contract, or what chain it's running on. Firefly Lets you do all these things. I can still come down here to this layer. I can customize all these things. I can use my own contract. I can run it on my own blockchain note if I want to, but the Firefly makes it both easy, and still maintains all of the flexibility of uh and customization that I might need.
Nicko Guyer: Uh, if I need really fine grand control of stuff.
Nicko Guyer: So that's where it fits in the stack. So Firefly is designed to be a a gateway for an enterprise to connect to the entire web three world whether that is a private blockchain consortium network. Whether that is a a public chain layer, one layer two, whether it's a a defi ecosystem, or some sort of exchange. Firefly allows you to be able to connect to any of these things.
Nicko Guyer: Firefly allows you to build apps, flows, and digital assets, so it has. It acts as A. An Api gateway has a great, wonderfully documented uh Http. Api uh! It's both restful and Rpc. Where appropriate uh it can generate uh on the fly. It can generate a uh http Api with full swagger documentation from a custom smart contract
Nicko Guyer: uh has a lot of really awesome features for, uh, for for smart contracts and interacting with blockchains.
Nicko Guyer: It allows you to build complex flows of uh data, both uh that's, you know. Part of it is on chain, but also private data needs to be kept off chain uh to to share data within a multi-party network, or to keep certain data. Private
Nicko Guyer: and It has
Nicko Guyer: a great Api is just really easy to use user experience for managing digital assets tokens both non-fungible and fungible tokens. Uh, there's a great user interface that we'll look at in just a minute for uh seeing token balances transfers uh managing wallets, that sort of stuff. So uh i'm i'm going through this really fast. But there's there's just a a ton of stuff in firefly that makes it really easy to build applications on top of blockchain.
Nicko Guyer: Firefly can operate in two different modes. So one of them is called gateway mode, and this is, I have a firefly node, and there is a blockchain somewhere that I want to connect to, and maybe it's a public chain. Maybe it's a private chain. I just want to connect to it, and I want to, you know, perform transactions on that chain. I want to query the the state of the chain, and I want to index events on the chain and keep track of things that are going on. You know events that my smart contract is emitting, or other token contracts
Nicko Guyer: are emitting, and that sort of thing
Nicko Guyer: uh firefly can also operate in multi-party mode. So multi-party mode is uh or or consortium mode is commonly seen when there are consortiums of companies that are all in the same
Nicko Guyer: uh Maybe they're all insurance companies, or maybe they are all uh financial companies, and uh, they need to integrate with each other, and they've chosen to use blockchain to do that, so each organization can run a firefly node, and the firefly nodes, using the same shared ledger will appear with one another. And so the blockchain becomes this uh this safe, neutral integration point. That is, uh, you know It's not wholly owned by any one organization within uh the consortium or the network.
Nicko Guyer: So two different modes of firefly can run in Firefly can run in both modes at the same time. It can run in both gateway mode and multi-party mode.
Nicko Guyer: Sorry hold on to
Nicko Guyer: sorry about that. Um. So
Nicko Guyer: how does How does all this fit together with uh cacti, and and firefly? So uh cacti and weaver, as we've seen, are are focused on change chain sync, and there's some some awesome stuff going on there,
Nicko Guyer: so I can sync state or value or or data from one chain to another.
Nicko Guyer: Firefly can also talk to multiple different blockchains. Uh, its focus is on application to blockchain sync. So uh, my application, can use firefly firefly and talk to multiple chains. It can submit transactions on both chains. It can index events on both chains.
Nicko Guyer: Uh, and it it allows my application as an application layer to uh work across different chains. So hopefully, this is a just a a a short and sweet picture of kind of how they're different, how they are trying to accomplish different things.
Nicko Guyer: Uh, with a few minutes that we have left here, I would love to just show a really quick example of uh sort of this, this picture of Firefly talking to two different chains. So uh on my machine over here, I have uh This is a one firefly note that's running,
Nicko Guyer: and it's been configured with two different namespaces uh it's been configured to talk to a a fabric network. So This is my consortium, my private consortium network. And there's one other organization within that network as well, and uh that browser is running over here. I've color coded this one green. So this is the the other node, the other organization in my network.
Nicko Guyer: Um, but my my node in this network is also configured with another main namespace that is uh connected to the Polygon Mumbai test net. So
Nicko Guyer: uh, if I go over here I can look at uh! This is actually my my signing account on polygon scan that I can see I've I've been performing some transactions here earlier. I deployed a contract and and mid to to tokens. We'll look at that in just a minute.
Nicko Guyer: But, uh, I wanted to show you just how easy it is, so I I've set up Firefly. There's a a great command line tool that that makes it easy to to get up and running with Firefly. I've I've done some advanced things like configured another namespace uh, and connected to two different chains at once. But,
Nicko Guyer: uh, there's also a a a sandbox that comes with firefly out of the box. So uh the sandbox is a great way to get hands on with Firefly. Try out some of the Apis and see some generated sample code.
Nicko Guyer: So uh this: the the sandbox is is not necessarily like a production tool, but it's more of a a way to uh be introduced to Firefly. So, uh firefly. I I don't have time to running through all the features. But uh, it has so great messaging capabilities uh built in. So right now i'm in my in my private uh fabric consortium network. So I can. I can share data with other members of my consortium. I could share it privately, or I could share it publicly. So if I send
Nicko Guyer: uh, this is a broadcast to everyone.
Nicko Guyer: Uh, I can run that,
Nicko Guyer: and that will send a a public message to everyone else in the fabric network. Uh, I could also send a private message. Uh, and I could attach a a file to this. I could browse for a file, or I could send a Json payload, or I could just send a string,
Nicko Guyer: and I could choose which recipients I want to receive it. I I actually only have. Uh, because this is connected to the fabric Samples test network. There are only two org in the network. So there's only one uh one other option here to send to. But uh, so I could send this as a private message,
Nicko Guyer: and if I hop back over to my explorer, I can see? Uh, there's there's been some new activity here. Um, let's go over to the other window, and we'll refresh this one, and we should be able to see, you know, some some messages came in here. Here's my private message that I just received. Uh, there's
Nicko Guyer: lots of information here I can. I can go to uh the actual message and click this one.
Nicko Guyer: I could see that the signing key that it was sent. So this is sent from, or one uh this i'm Look currently looking at or two's node right now. Uh you can see this is the private one, and just for completion We'll look at This was the Oops. Um!
Nicko Guyer: Here's the broadcast to everyone.
Nicko Guyer: Okay, So that's pretty cool. Um, but that's just you know my my private network.
Nicko Guyer: My node is also configured to talk to a a public chain as well, so I can. I can switch namespaces over to the Mumbai Test network, and I can go down to my tokens dashboard. Here
Nicko Guyer: I could see that I have one token pool configured. It has one hundred ffc in it, and I it's currently on. I've just minted it to my nodes address. But say, I wanted to transfer some of that. Well, uh Firefly also has a really awesome swagger. Ui! That allows you to use any of its Apis just built in here. So uh, there's a lot of endpoints. I'm going to scroll down to the uh transfer endpoint here.
Nicko Guyer: I'm just gonna do a quick to and transfer uh. So i'm gonna do this in the Mumbai namespace uh i'm gonna transfer.
Nicko Guyer: We'll transfer ten and this token contract has eighteen decimals. So uh,
Nicko Guyer: I think that's that's ten, followed by eighteen zeros um. Most of this other stuff I don't need. Um. So this is going to be a transfer from my address, which is, uh i'm going to copy it from Polygon Scan in here.
Nicko Guyer: I i'm not going to attach a message to this transfer. I could. There's There's a lot of uh, really
Nicko Guyer: rich metadata capabilities with Firefly. I can attach a message I can attach data to the transfer as well. Just so. It's a really awesome features. There again. I don't have time to go into all of them today, but i'm going to transfer this to my Meta mask address. So I have um. This is a a completely different wallet here connected to the same public chain. I'm just going to copy this address here. I'm going to put it in the to address here, and that looks good.
Nicko Guyer: I hit execute.
Nicko Guyer: And okay. So I got a I got, an Id for that that transfer operation. Um, it will take, because this is a public chain, and that needs to be minded to a block. It will take um, you know, just a little bit of time to actually
Nicko Guyer: submit that transaction. And uh, while we're waiting for that, what i'm gonna do is make sure that my contract is
Nicko Guyer: um
Nicko Guyer: configured in in my Meta mask wallet
Nicko Guyer: uh So met a mask on on test networks. Doesn't always um. It won't pick up new token contracts automatically. So i'm just going to paste the token address in there and my import it. And look at that. It already sees that I have ten ffc.
Nicko Guyer: Uh. So Firefly made that super easy to to do a transaction both on on my private consortium and on this public chain, and uh
Nicko Guyer: super easy. If I go back here I should be able to refresh. And there, now we can see this is new, this transfer with data uh transaction that I just did here. That's now on the public block explorer as well.
Nicko Guyer: So tons of cool stuff you could do. I I wish I had more time to go into more features. But there's plenty of great material out on uh on the the Youtube Channel on Firefly, and lots of lots of great recordings out there. Uh, if you are interested in learning more about Firefly. Um, please get involved. We are. We have a a channel on discord as well. We'd love to chat with you there. Uh Firefly is open source. Like all these other hyper ledger projects, the source uh can be found in the the Hyper Ledger,
Nicko Guyer: Github Org. And uh, yeah, thanks for for this time today to present to this group and talk about blockchain interop. And uh it my my pleasure, and that's that's all I have for today. I I don't know if I have time for questions, but that's all I've got. Thanks,
Rafael Belchior: Thanks a lot because that was super interesting.
Rafael Belchior: Our flight has a lot of really cool capabilities. Um,
Rafael Belchior: let's see if anyone has some questions
Rafael Belchior: uh I can shout one first. Um.
Rafael Belchior: You refer to a multi-party uh mode. What are the security assumptions for the consortium mode? Our notes? Uh?
Rafael Belchior: Suppose not to misbehave.
Nicko Guyer: Yeah. So i'm. I'm also just uh scanning through chat. Here I I see your your message there as Well, so uh multi-party mode is typically used in a private permissioned blockchain. So uh,
Nicko Guyer: there is some uh there. There's some level of trust between the members of the chain there. So uh a new member of the consortium would be on boarded, and other members of the consortium would be aware that. Okay, this this new company is joining our consortium. That's great uh the first time a firefly node uh joins a multi-party network. There's a process that it can go through to register itself on the network, and it. Uh, it will basically advertise its uh, its identity. It will claim an identity
Nicko Guyer: on the blockchain, using it signing key. And then from that point forward all of the other nodes will be aware of that nodes identity, and uh, be able to verify that future. Messages are indeed from that node.
Rafael Belchior: All right. Very, very good. Thank you a lot, Nico.
Rafael Belchior: Uh, I think we have. Let's Let's have one more question. Nicolas asks the side of fly a lot of communication, private and public blockchains
Nicko Guyer: absolutely. Uh, in fact, that's exactly what we just saw. I apologize if if we were running through it too quickly. But, um! The first two transactions that I did the the message broadcast on the private message. The those were both happening on my fabric test network private chain that was running on my machine, so I use. I I cloned the fabric Samples repo. I started up test network, and I connected Firefly to it, and I ran those transactions on that private chain. It was running on my machine,
Nicko Guyer: the the token mint and the token transfer that you saw me Do I? I did that transfer live that was happening on a public chain? You could You could actually go look at Polygon scan uh on your own machine and see those transfers that I just did uh in in real time there. So um yeah, absolutely both. Both public chains, private chains at the same time. Uh Firefly can do both
Rafael Belchior: right. Same. Thanks again, Nico. Very much for the presentation.
Rafael Belchior: Uh, we'll,
Rafael Belchior: Peter, are you there?
Peter Somogyvari: Yes, i'll share my screen.
Nicko Guyer: Thank you.
Rafael Belchior: So i'll keep going with the cactus cacti overview.
Peter Somogyvari: Yes, thanks, Nicole.
Peter Somogyvari: Alright, So, Texas we heard a little bit about
Peter Somogyvari: the latest and greatest updates from Rama and Rafael, but I just wanted to tie it all together.
Peter Somogyvari: The bottom line is that we're trying to create a framework that has multiple components that people can pick and choose from.
Peter Somogyvari: So it's not a
Peter Somogyvari: one.
Peter Somogyvari: So it's all kind of architecture. I'll mention that a little bit later down in the slides.
Peter Somogyvari: Ultimately, what we want to aim is to solve is the T Lt. Fragmentation. There's a lot of distributed lectures out there, and
Peter Somogyvari: there will likely be more in the future as well.
Peter Somogyvari: So if you're an organization, then you want to start using it. You want to buy into one of them.
Peter Somogyvari: You want to have a maybe a little bit of a safety net to try and figure out what happens if
Peter Somogyvari: that particular ledger gets uh discontinued, or
Peter Somogyvari: you realize later on that uh some characteristics of it or not, a good fit for use, case, et cetera.
Peter Somogyvari: So you kind of have to
Peter Somogyvari: think about a little bit of an insurance policy and
Peter Somogyvari: the framework tries to help with that.
Peter Somogyvari: And also the idea is to
Peter Somogyvari: to help people not having to reinvent the view and
Peter Somogyvari: certain applications where the safety and security of the code is very important.
Peter Somogyvari: For example, when finances are involved,
Peter Somogyvari: there's a few sets here just as a low key flex.
Peter Somogyvari: Uh. But the the most important thing here is that there's three organizations
Peter Somogyvari: for different organizations maintaining the project.
Peter Somogyvari: Ibm.
Peter Somogyvari: Uh and uh,
Peter Somogyvari: the way we govern pull requests to the project is that
Peter Somogyvari: at least two of the maintaining organizations have to approve
Peter Somogyvari: each pool request, so that there isn't any room for anyone to run
Peter Somogyvari: the project by themselves. It truly is a community effort,
Peter Somogyvari: and we've been uh, very explicit and focused on that from day one, because we believe that that's uh,
Peter Somogyvari: that's the way to go.
Peter Somogyvari: And then we also have contributors
Peter Somogyvari: such as Rafael, who's uh been awesome from day one since I met him back in the high intellectual global Forum in two thousand and twenty
Peter Somogyvari: aside shortest to have a shout out for him. Thank you.
Peter Somogyvari: And then uh,
Peter Somogyvari: yeah, that's uh. The stats
Peter Somogyvari: back on the fragmentation problem. I just like to expand on this
Peter Somogyvari: because
Peter Somogyvari: the common sense, like intuitive requirement from everybody, if you ask them, would be that all of these different ledgers,
Peter Somogyvari: all these different pieces of software should just be able to talk to each other. No problem
Peter Somogyvari: uh, but then that's just not the case,
Peter Somogyvari: even though intuitively, as humans, we would want it to be. And, uh,
Peter Somogyvari: the hard part of it is that
Peter Somogyvari: the number of lectures you have
Peter Somogyvari: you need
Peter Somogyvari: the quadratically growing number of integrations? If you truly want each leisure to be able to communicate with every other ledger and the
Peter Somogyvari: set of flexures that you have.
Peter Somogyvari: So that means that if you have a hundred lectures you need five thousand different integrations. And uh
Peter Somogyvari: that, sorry to get stuff about the whole reinventing the video question that I mentioned earlier.
Peter Somogyvari: There's some general information here. We have a Github repository. It is
Peter Somogyvari: in the process of being renamed. I. I have to frequently tie back to that V. Or
Peter Somogyvari: becoming. We have become cacti as of September,
Peter Somogyvari: and there will be redirection set up for that.
Peter Somogyvari: Do you have a white paper? That
Peter Somogyvari: section of there that I recommend the most is the example used cases, because those are kind of
Peter Somogyvari: timeless in the sense that as the architecture, I've changed some of the diagrams or sections, or have have become a little bit out there in the white paper. But the
Peter Somogyvari: example used. Cases are kind of forever.
Peter Somogyvari: You do. You have a discord, server, just to reiterate that you're very welcome to join there and ask questions. And
Peter Somogyvari: The most important thing is that we do have daily pair programming calls every week day,
Peter Somogyvari: and uh, if you want to join in there, you can. There's no
Peter Somogyvari: any kind of requirements to qualify,
Peter Somogyvari: and it is a short call. It's just fifteen minutes. But if you have any questions in continuation to what is being said or shown today.
Peter Somogyvari: Then you can count on that daily power program and call being there indefinitely.
Peter Somogyvari: And that happens also on discords. More details about how to actually join our on that link that I put there on the slide,
Peter Somogyvari: and a little bit more about the repository. We have a few slides here, but I will also
Peter Somogyvari: share uh
Peter Somogyvari: the
Peter Somogyvari: the actual directory structure itself, because I have a little more to say about it.
Peter Somogyvari: So the deaf container is very important, because
Peter Somogyvari: that contains an environment that is known to work for building the entire framework, and also for developing your own applications. If you don't actually need to build a framework because you're not planning on contributing to framework itself.
Peter Somogyvari: Uh, we like to recommend visual studio code
Peter Somogyvari: because most of the maintainer sees as well, and we have the
Peter Somogyvari: big set of recommended extensions that make it even more convenient to
Peter Somogyvari: deal with all the daily
Peter Somogyvari: processes of contributing or using the framework.
Peter Somogyvari: There's examples. There's packages which is the heart of the framework. That's where ninety nine of the code is
Peter Somogyvari: stored. But also, uh, in the very near future there will be
Peter Somogyvari: uh a few more directories specifically containing the code, for we were,
Peter Somogyvari: and uh it's hard to show it right now, because it Hasn't happened yet, but we have been hard at work for months on this, and it is very near, so keep an eye out for that.
Peter Somogyvari: And, by the way.
Peter Somogyvari: Thanks for Ram I again, for all the work that they are putting in there as well.
Peter Somogyvari: And uh let me share
Peter Somogyvari: my browser, but on a different
Peter Somogyvari: Uh,
Peter Somogyvari: yes.
Peter Somogyvari: So
Peter Somogyvari: can you see the directory structure on my screen?
Rafael Belchior: Yes,
Rafael Belchior: but if you could zoom a bit that would probably be better
Sean Bohan: like this.
Peter Somogyvari: Okay? So this is the packages directory.
Peter Somogyvari: And the reason I wanted to come in here specifically outside the slides is because we have this
Peter Somogyvari: naming structure. That kind of gives the
Peter Somogyvari: flat, encoding, hierarchical encoding to
Peter Somogyvari: the plugins.
Peter Somogyvari: And, for example, if you look at,
Peter Somogyvari: and they are nicely grouped together, because there's a
Peter Somogyvari: in memory, memory and volt.
Peter Somogyvari: And then, if you go down further, you can see that the connector plugins are group together as well.
Peter Somogyvari: So if you're ever curious if there's been a newly added connector that is supported. Then here's a complete list. You can check them out,
Peter Somogyvari: and then there's a lot more things Uh. The most interesting one to me personally is the test tooling package, which is the powerhouse
Peter Somogyvari: behind our testing infrastructure, and also for development of uh applications. Writing tests for those and for research purposes.
Peter Somogyvari: And then there's also the Api server which
Peter Somogyvari: it's basically a shell that loads
Peter Somogyvari: uh plugins into it at runtime,
Peter Somogyvari: and that that's what exposes Apis uh that you can use to deal with or leverage the feature, some of the features of the framework
Peter Somogyvari: back to the slides.
So just a few, very, very quick, very high, level examples
Peter Somogyvari: uh one of them could be patient medical records being transferred or updated across different systems of different healthcare providers.
Peter Somogyvari: I intentionally keep this way, because there's way too many details to spend on it. I definitely don't have the time.
Peter Somogyvari: So this is more of a showcase of what's possible.
Peter Somogyvari: And then there's uh
Peter Somogyvari: something with energy transactions Uh: I know for a fact that there's a project vision within Hyper ledger that does carbon accounting,
Peter Somogyvari: and they do use parts of cactus uh for their operations as well.
Peter Somogyvari: Development architecture. This is a very high level diagram, and uh! We are still figuring out how to explain all of this in the wake of us uh merging
Peter Somogyvari: for joining forces with
Peter Somogyvari: the fever maintainer. But the bottom line is that there
Peter Somogyvari: our optional components here?
Peter Somogyvari: You can sort of pick and choose what you're going to use. What is that you need? And also you can pick and choose where your actual application code sits, because it can be loaded as a plugin either into the Api server or it can run on its own
Peter Somogyvari: and ram. I already explained much of this, and then much higher quality than I could. So
Peter Somogyvari: this is really just what I wanted to highlight quickly. Is that
Peter Somogyvari: uh? It is a framework with a set of tools in it. So it is like a toolbox that has, you know, a hammer, a trail,
Peter Somogyvari: a chisel, and all those sort of stuff, and you don't have to use all of them at the same time. You can
Peter Somogyvari: pick the one that you need for the specific task.
Peter Somogyvari: This makes it slightly more complicated to explain on a slide like this.
But when you're actually down in the trenches implementing something. It just makes it simpler to actually get the job done, because
Peter Somogyvari: the smaller pieces that you can fit together, or easier to deal with than if
Peter Somogyvari: all of this was just in one giant package deal all or nothing style.
Peter Somogyvari: And then uh,
Peter Somogyvari: yeah, I think i'll I'll skip this one because Rama, explain this very well about the relays uh no server, the protocols, and all that.
Peter Somogyvari: And uh, the development architecture,
like I said, the most important part of that is, test automation, which should put a very high emphasis on
Peter Somogyvari: every pull request that we have
Peter Somogyvari: gets tests executed against it in a way that completely pristine lectures are being pulled up that are running in containers as part of the Ci execution,
and then the connector plugins, the key chain plugins.
Peter Somogyvari: All of those things get tested and verified against these pristine letters
Peter Somogyvari: that gets set up and torn down automatically for every single test case.
Peter Somogyvari: This makes it so that our test suite is pretty expensive, and it runs for a couple of hours,
Peter Somogyvari: uh which we are working on bringing down a little, because it would be nice to have it run below an hour, but at the same time it's saved us
Peter Somogyvari: from a million different bugs,
Peter Somogyvari: and then a very quick overview. At One of the examples we'll be showing is the supply chain example
Peter Somogyvari: which depicts a case of
Peter Somogyvari: trees being harvested in the woods, and then bookshelves getting made out of those, and they finally getting shipped.
Peter Somogyvari: And uh, all of these things are done by different organizations who store and administer the data on different distributed leisures.
Peter Somogyvari: And, uh,
Peter Somogyvari: the way we have the example application set up is that there's a singular Ui where you can get
Peter Somogyvari: the basic credit operations of all of these ledgers. Uh, just by switching tabs within the application and sending Api requests to
Peter Somogyvari: the cacti deployment behind it.
Peter Somogyvari: Uh, more on this later I have to stop that. I think i'm pretty sure amount of time.
Peter Somogyvari: So
Peter Somogyvari: that's it. And we have a break on this actually a some time for questions.
Rafael Belchior: Hey, Peter, I've been answering to some questions Uh: some people have some issues because they have m ones
Rafael Belchior: uh My suggestion is what what i'm doing currently, which is having a Vm. On a call provider. Hopefully we'll add support for M. One in the near future.
Peter Somogyvari: Yes, that is correct. Uh,
Peter Somogyvari: I have spoken to some people who manage to get it working only M. One,
Peter Somogyvari: and we might have that entry for that in the Faq.
Peter Somogyvari: But I don't know if their solution was comprehensive, and all income passing
Peter Somogyvari: as then they they probably only got the basic bill to run. But then other things are just not operational, anyway. So
Peter Somogyvari: the way to go is probably the virtual machine. There's a
Peter Somogyvari: a lot of innovation happening in this space uh
Peter Somogyvari: that is generic to software development.
Peter Somogyvari: For example, If you look at
Peter Somogyvari: uh Github code spaces, I think they call that feature.
Peter Somogyvari: You can open up
Peter Somogyvari: a github repository in a virtual machine that github
Peter Somogyvari: provisions for you on demand,
Peter Somogyvari: and you can have the build and everything all your development, one in there,
Peter Somogyvari: and you can either connect to that through visual studio quote, or you can connect to it through a web version of visual studio code straight from your browser, depending on what kind of machine you're running on,
Peter Somogyvari: and uh
Peter Somogyvari: it's not a It's not a free feature of Github, I believe So
Peter Somogyvari: you do. You have to pay for that? But, uh, I've seen it in action, and it's pretty neat. Then you just literally have a few clicks before you have a complete setup up and running,
Peter Somogyvari: So that's just gold spaces. Right?
Peter Somogyvari: Yes, I think it's called coach spaces.
Peter Somogyvari: Yeah, there you go. Thank you very much.
Peter Somogyvari: So yeah, we try to. We. We definitely have the option to just run it locally. That's how I do it. I have a Pc. Right next to me at home, and it runs Ubuntu
Peter Somogyvari: two thousand and four.
Peter Somogyvari: Now, that's how I do my development.
Peter Somogyvari: Uh,
Peter Somogyvari: if you don't want to
Peter Somogyvari: put your credit card details in anywhere, then you can do the same.
Peter Somogyvari: But also I just wanted to make sure that you know that there is a full bag. That is, uh,
Peter Somogyvari: very, very easy, very sort of developer. Friendly.
Rafael Belchior: Yeah, please feel free to. If you have any.
Rafael Belchior: You have any trouble with the build.
Rafael Belchior: We can use these minutes to
Rafael Belchior: uh try to go around them
Rafael Belchior: such that you can follow through
Rafael Belchior: on the hands on part which is almost here.
Rafael Belchior: Okay, five desks. If hypervisor is a web application system
Rafael Belchior: designed to all users to securely integrate different watching.
Rafael Belchior: Uh, yes, basically yes,
Rafael Belchior: it's infrastructure.
Rafael Belchior: Uh, and
Rafael Belchior: at least we try enterprise-grade infrastructure to integrate with different blockchains.
Rafael Belchior: Right? So
Rafael Belchior: it allows you to create applications that utilize uh infrastructure, different blockchain, multi blockchain, infrastructure,
Rafael Belchior: Shane as what's the building? Well, behind the adapter. Uh, What What about that being specific
Peter Somogyvari: I was like. Maybe you meant the the fever adaptors. Maybe that's a question for
Rafael Belchior: yeah, i'm not sure. Why is here.
Rafael Belchior: To the best of my knowledge, the adapter convert
Rafael Belchior: the relay messages into
Rafael Belchior: uh specific watching transactions. But drama would be the best person to
Rafael Belchior: twice or that.
Peter Somogyvari: Yeah, I was. I was giving some time to to answer if he's here, but I think he may not be so. I was just. I'll try to try him in, you know, with the safe harbor. That,
Peter Somogyvari: uh, I may not be the most qualified person to answer. But anyway, that after
Peter Somogyvari: kind of like Rafael's already explain. It is uh
Peter Somogyvari: providing the basic communication
Peter Somogyvari: towards the ledger from the code from the rest of the for the rest of the code of the framework.
Peter Somogyvari: It's uh one of those components in an in that
Peter Somogyvari: is very similar to what. And the old Texas project we call connectors.
Peter Somogyvari: So there's ways we're trying to
Peter Somogyvari: uh, bring those together as well. It's uh it's just work in progress, for now how to actually
Peter Somogyvari: So that's why for now there's lever, adapters, and cactus connectors making up the project. That is cacti,
Rafael Belchior: Peter. May I share, share my screen
Rafael Belchior: on the
Rafael Belchior: share a few tips before we start? Um! So
Rafael Belchior: this is the the the code right? Do all the instructions on the bill do you want?
Rafael Belchior: You are run configure, which takes long time
Rafael Belchior: already, ran it, so i'm not going to run it again,
Rafael Belchior: and you have
Rafael Belchior: under the Vs. Co. Dot vs code folder
Rafael Belchior: execute files.
Rafael Belchior: So for that you
Rafael Belchior: go to this file template to launch for Jason,
Rafael Belchior: and you rename it to one.
Rafael Belchior: And the thought vs. Quote.
Rafael Belchior: And what this does is that on Vs code it allows you to have access to this
Rafael Belchior: scripts where you can run the current life script test file,
Rafael Belchior: using tab or using just we. We are test runners, different test runs,
Rafael Belchior: and these will be very useful
Rafael Belchior: uh, even for our demo when we're going to show you the code running and using depot points
Rafael Belchior: uh. So please make sure to configure those as well.
Rafael Belchior: Alright, Uh, let's
Rafael Belchior: Let's start going with the part two. I'll try to make it short and sweet, because we will be behind schedule.
Rafael Belchior: These are
Rafael Belchior: the different cacti components that are relevant for the demos that are going to fall.
Rafael Belchior: The first one, the first thing we want to talk about is the plugin architecture.
Rafael Belchior: So many things in cacti are to find the plugins
Rafael Belchior: such that the idea
Rafael Belchior: is for you to have
Rafael Belchior: the core
Rafael Belchior: plugging
Rafael Belchior: where you can uh
Rafael Belchior: join or glue other plugins that you develop, and these cacti core is supported by the Api server
Rafael Belchior: or the Api server is normally a plugging attached to this hectic or such that it can red that
Rafael Belchior: off.
Rafael Belchior: So some of the
Rafael Belchior: interesting packages as an example
Rafael Belchior: uh, which which is basically the Api server backbone that allows you to like to connect different partners to it. It reflects the calls to the correct porting.
Rafael Belchior: It basically does all of the heavy work
Rafael Belchior: on
Rafael Belchior: having these polling architecture working. Then we have some utilities like loggers uh cryptographic libraries like hashing
Rafael Belchior: um creation of keys that's in the cat to score. Uh sorry. Get this common,
Rafael Belchior: and then we have the K to score, which have the consortium plugins, some authorization, the boarding registry, where you can
Rafael Belchior: aggregate different plugin references
Rafael Belchior: and so on.
Rafael Belchior: We also have, for example, a plugin that allows you to interact with hash time, walk, contracts. So for a specific contract that's deployed, let's say, on a or on bathroom. In this case
Rafael Belchior: you have a set of interfaces of Apis
Rafael Belchior: uh that you can use to interact with that contact, such as deploy, log, et cetera.
Rafael Belchior: You have a simple key chain that scores
Rafael Belchior: key value pairs that you can use to. For example, store
Rafael Belchior: cryptographic keys in a testing environment, not not in production.
Rafael Belchior: We have. We have different larger connectors. One of them is hyper, launched fabric
Rafael Belchior: and
Rafael Belchior: a package that I use a lot, and I think it's very important is the test to link. So it has
Rafael Belchior: databases, Ipfs companyization, et cetera. With this package you can, for example, create the whole Hyper Ledger fabric network programmatically, very, very easy to use, very easy to configure
Rafael Belchior: high project fabric. Roger Bazoo substrate. So for the ones interested in the polka dot ecosystem, which is quite nice.
Rafael Belchior: This uh is an example where we are creating a plug-in registry see that the podium registry is an object that contains,
Rafael Belchior: uh,
Rafael Belchior: and the array of plugins. And with these registry you can actually add plugins, dynamic killing right and serve them into an Api server. So this Api server is the interface between
Rafael Belchior: your application and the different plugins
Rafael Belchior: that you are running uh within.
Rafael Belchior: Okay, I'll try to answer the questions after.
Rafael Belchior: So we we utilize open Api.
Rafael Belchior: Sorry.
Rafael Belchior: Let's talk about the Api server first. So the Api server is basically something
Rafael Belchior: client requests Uh,
Rafael Belchior: It's exposed, managed by a cactus, not what we call a,
Rafael Belchior: and it basically redirects calls to the right plugins.
Rafael Belchior: Okay, after you see the supply chain example, it will make a lot of sense. What? What this does
Rafael Belchior: Open Api
Rafael Belchior: Open Api is a specification used? Describe
Rafael Belchior: restful web services, or the their Apis.
Rafael Belchior: The cification defines what are the endpoints
Rafael Belchior: that are available get in points posting points, delete, et cetera. What out of the different authentication methods? What are its parameters? What are the schemas of some objects you want to find, and we utilize these
the
Rafael Belchior: uh between quotes for free
Rafael Belchior: clients for the different packages.
Rafael Belchior: Okay. So i'm going to give you an example.
Rafael Belchior: These, for example, is the Jason Api definition for the Hlc. Coordinator. And if you go to
Rafael Belchior: swagger editor and you paste these Jason
Rafael Belchior: on on the graphical interface, you get these interface on the right, which where you can make calls
Oops.
Rafael Belchior: I'm: going to show you uh
Rafael Belchior: an example
Rafael Belchior: on the Editor: Okay. So if we go to
Rafael Belchior: packages,
Rafael Belchior: what in larger connector fabric
Rafael Belchior: and open Api to Jason, we will have this file.
Rafael Belchior: We can based on the editor slide that i'm going to show you in a bit.
Rafael Belchior: Just notice that
Rafael Belchior: it's one of the largest connectors. I believe
Rafael Belchior: one of it is the transact
Rafael Belchior: a lot of different things,
Rafael Belchior: right? And uh, if we take the Jason that we have to find there, the Flagger
Rafael Belchior: editor will generate this interference.
Rafael Belchior: So basically we
Rafael Belchior: expose the different endpoints of the fabric connector
Rafael Belchior: right?
Rafael Belchior: And we get uh sdks generated with this application that we can after that use programmatically. Again, on the supply chain example, like Peter will explain this how it works
Rafael Belchior: right about the open source. Um,
Rafael Belchior: A project governance. So Hyper Ledger is an open source project, such as many hyper, ledger, or all of hypologic projects, which means that everyone is welcome to participate.
Rafael Belchior: Participation is typically done as synchronously, because there are contributors from all around the world,
Rafael Belchior: and it's a very welcoming community, as in
Rafael Belchior: up to the
Rafael Belchior: one of the
Rafael Belchior: things that I like the most about the community. So the kudos for Peter are these daily pair programming calls? Where, basically if you went to university, you probably had those
Rafael Belchior: uh
Rafael Belchior: office hours or dialed sessions where you can go to the professors and ask them for clarifications
Rafael Belchior: on on some homework or assignment. It's basically the same. But for Hyper
Rafael Belchior: gives a bit of his time every day to
Rafael Belchior: help on different
Rafael Belchior: questions. On that. You can go for the programming calls, and you'll help you out.
Rafael Belchior: Attend and see
Rafael Belchior: the project the Project progress, basically and also have some
Rafael Belchior: uh influence contribution to the overall project.
Rafael Belchior: Another interesting thing is that contributing codes to cactize done via pull request. That is the whole process that's documented on the Read me of the project. But essentially
Rafael Belchior: you come. You do. One or more commits typically one, and you open a full request to the the main code base.
Rafael Belchior: There you define what is your contribution on the Commons,
Rafael Belchior: and there is an iterative review process by the Maintainer.
Rafael Belchior: Once two out of three maintainers agree
Rafael Belchior: to the cold,
Rafael Belchior: and I should emphasize that this process is quite decentralized.
Rafael Belchior: So Aldo Techti has support from
Rafael Belchior: centralized corporations.
Rafael Belchior: The
Rafael Belchior: decision making process is decentralized, as in the companies need to agree on what's good for the overall project
Rafael Belchior: and
Rafael Belchior: for the call to be accepted.
Rafael Belchior: Right? So you can see that this specific Board request already had two approvals. That was one change requested that you have to address, and there are some reviewers that still need to check the code.
Rafael Belchior: Furthermore, to make the
structure more robust and resilient, we have automated tests
Rafael Belchior: that are
Rafael Belchior: ran by by Github, every time full request is made. So you can be more assured that the new code does not break
Rafael Belchior: the call that was there.
Rafael Belchior: Read the governance documents.
Rafael Belchior: Uh, we also have the least of interesting metrics on the project itself. For example, number of contributors,
Rafael Belchior: number of lines of code, the number of
Rafael Belchior: me the number of issues, the time for the issues, and so on.
Rafael Belchior: One very nice thing that I like a lot are the
Rafael Belchior: tests that are implemented
Rafael Belchior: in us all in all,
Rafael Belchior: all in one containers.
Rafael Belchior: And basically they allow you to
Rafael Belchior: uh programmatically, very easily.
Rafael Belchior: Uh, and this is done in, let's say two steps. The first one you have
Rafael Belchior: a docker file that
Rafael Belchior: has that implements. One of the test licenses, for example, the fabric calling one
Rafael Belchior: has, uh the definition of a fabric version, one dot, four network and a topic version to network.
Rafael Belchior: Then we publish these images onto Github as so they are available
Rafael Belchior: um to be pulled as a docker images.
Rafael Belchior: And then we have a piece of code which is into cactus test tooling that pulls those images
Rafael Belchior: and execute those images. So the code here it's basically code
Rafael Belchior: using docker Api's.
Rafael Belchior: So in this way we can instantiate the test ledger, execute the test ledger.
Rafael Belchior: Have more code. We can test. For example, our connector
Rafael Belchior: run some transactions against this legend, and when we're done we destroy the ledger.
Rafael Belchior: This is amazing because you don't have to manually run the network every time you want to test it. And if you want to have automated tests that create the ledger to a specific function, despite largely. It's very easy to, and we use this extensively
Rafael Belchior: in all of our,
Rafael Belchior: or practically out of all all the plugins that use
Rafael Belchior: a blockchain. Um! Just the foundation is the architecture uh the infrastructure.
All right, then. I think that
Rafael Belchior: that was
Rafael Belchior: week.
Rafael Belchior: We're going to go for the hands on
Rafael Belchior: uh part of the workshop, which I think will be very interesting. Stick around.
Rafael Belchior: We'll have a short break again ten minutes on the meantime, if you have any questions, please feel free.
Rafael Belchior: We're going to come back at
Rafael Belchior: zero zero.
Peter Somogyvari: Thank you, Rafael.
Rafael Belchior: Let's give it a few more minutes.
Rafael Belchior: If anybody is having any issues
Rafael Belchior: with building the project. Please let me know.
Rafael Belchior: Feel free also to unmute yourself and to
Rafael Belchior: ask any.
Rafael Belchior: Hello, Okay, Um, Let's um. Keep going with Part Three.
Rafael Belchior: Um. Please try to build a project while we um spend a few first minutes on the deployment architecture flavors which Peter will present. After that
Rafael Belchior: we'll present some
Rafael Belchior: simple applications that you can build, using cat type.
Rafael Belchior: And after that we're going to talk about the example supply chain application.
Rafael Belchior: And finally, we're going to talk about the future of hypervisor, check time and answer any questions you have.
Rafael Belchior: Uh, Peter, can you take it from here?
Peter Somogyvari: Yes, please share my screen.
Peter Somogyvari: So back on that modularity that I mentioned earlier.
Peter Somogyvari: There's there's two slides here to highlight
Peter Somogyvari: uh that. Further,
Peter Somogyvari: there's a low resource usage,
Peter Somogyvari: deployment, flavor, and there's a production deployment. Flavor.
Peter Somogyvari: There's many other possible setups, but these are the
Peter Somogyvari: to that. Uh,
Peter Somogyvari: I would like to call out one. The no resource us one for development locally, so that
Peter Somogyvari: you can simulate
Peter Somogyvari: something close to
Peter Somogyvari: and uh, and then a production example which is an actual production example.
Peter Somogyvari: And I think this uh
Peter Somogyvari: diagram is
Peter Somogyvari: a little t small. So i'm just going to re-share
Peter Somogyvari: the desktop
Peter Somogyvari: and then go to this
Peter Somogyvari: page. Yes, So i'm showing the same diagram, but zoomed in.
Peter Somogyvari: What you see here is,
Peter Somogyvari: uh everything here is contained within the developer machine,
Peter Somogyvari: which is the laptop or Pc. Whatever you have
Peter Somogyvari: at home
Peter Somogyvari: within that you can simulate a consortium which is
Peter Somogyvari: a set of organizations or entities who want to
Peter Somogyvari: build some sort of blockchain
Peter Somogyvari: t Ot. Application together by collaborating and connecting their
Peter Somogyvari: lectures, their respective ledgers.
Peter Somogyvari: And so that that's what me that's what member A and Member B stands for within the consortium,
Peter Somogyvari: and then those uh
Peter Somogyvari: members can have their nodes,
Peter Somogyvari: which then our label is node, and it would be.
Peter Somogyvari: And then, within those nodes
Peter Somogyvari: you can have api servers for both entities, and both members.
Peter Somogyvari: And you can actually have multiple instances of those Api servers because the Api server itself is very light, right?
And it can contain
Peter Somogyvari: uh multiple plugins without much overhead.
Peter Somogyvari: So the the key thing to notice here is that this already resembles a pretty
Peter Somogyvari: robust setup
Peter Somogyvari: in the in terms of having multiple api servers
Peter Somogyvari: for each member of each node, or each note of each member.
Peter Somogyvari: And uh,
Peter Somogyvari: this is there
Peter Somogyvari: I plug in the upcoming supply chain up, for example which
Peter Somogyvari: does look similar to
Peter Somogyvari: what is being demonstrated here, and I will show exactly why and how,
Peter Somogyvari: and then uh on to
Peter Somogyvari: the next slide,
Peter Somogyvari: which is the production grade environment.
Peter Somogyvari: This is where we're talking about a data center instead of to develop a laptop.
Peter Somogyvari: But, uh, other than that,
Peter Somogyvari: there's a lot of similarities
Peter Somogyvari: if I can find them. Yes, so here it is.
Peter Somogyvari: So here, instead of talking about the laptop to talk about data centers. But i'm sure
Peter Somogyvari: but other than that, If you look at the boxes, if you look at the labels, it's basically the same as the low resource deployment example.
Peter Somogyvari: And this is very intentional, these two, or
Peter Somogyvari: very similar,
Peter Somogyvari: for a reason, so that you can try out how a production deployment would work
Peter Somogyvari: minus the parts that are really hard to simulate, such as an actual data center and the load, but answer that
Peter Somogyvari: has a domain associated to it, and then handles, fall back and all that.
Peter Somogyvari: And then the way, of course, this would work in a production of environment is that you would provision
Peter Somogyvari: more hardware resources to these individual aps. Servers
Peter Somogyvari: instead of the Api. So running one,
Peter Somogyvari: I don't know a gigabyte of ram
Peter Somogyvari: you could put it on a dedicated server that has forty-two gigabytes of friend, depending on what your use cases, and how much memory that needs.
Peter Somogyvari: So this is, uh, just the showcase, and demonstrate that
Peter Somogyvari: the framework allows you to play with these deployments,
Peter Somogyvari: and uh,
Peter Somogyvari: we put a lot of effort into making sure that
Peter Somogyvari: you can simulate as much of it as possible on a single developer machine instead of having to
Peter Somogyvari: crossover into cloud Provider territory and uh get built for
Peter Somogyvari: regular development time
in there.
Peter Somogyvari: And uh
Peter Somogyvari: that, said i'll pass it back to you, Rafael, to talk about the overall application.
Rafael Belchior: Thank you, Peter.
Rafael Belchior: All right. Hands On
Rafael Belchior: the first example we built for the for this workshop is the Hello World example. It's a super easy, super simple example where we create an Api server and a key chain memory plugin,
Rafael Belchior: and then a server that interact with the kitchen plugin.
Rafael Belchior: Okay, you could use this, for for example, managing credentials that access
Rafael Belchior: the ball chains that you're participating in,
Rafael Belchior: although these example in specific. It's not meant for production, so it's not secure enough,
Rafael Belchior: and also generally keeping your keys in memory is also not the best practice.
Rafael Belchior: So we also have key chains that uh connect, for example, to as your
Rafael Belchior: or more secure. Let's say more production ready. He chains.
Rafael Belchior: Um. These are some possible interactions we can make.
Rafael Belchior: Uh, but i'm going to demo it right now,
Rafael Belchior: right so
Rafael Belchior: I hope you were able to
Rafael Belchior: get the project building
Rafael Belchior: and also to set up the launch Dot Jason. Right? So it's basically duplicating these file templates on the chasing and renaming it. Also. Jason,
Rafael Belchior: then under examples, cactus
Rafael Belchior: workshop examples which you shouldn't see now, by the way, because it's still a full request. It hasn't been merged onto the main code base
Rafael Belchior: uh, but that's when it will be hopefully.
Rafael Belchior: You go to sauce main type script, and you have the three examples you're going to talk about. So the first is hell world.
Rafael Belchior: You can check to read me
Rafael Belchior: for how to run it.
Rafael Belchior: Um! So you can run these commands
Rafael Belchior: to run the example, or you can use the debugger, which is what we're going to do,
Rafael Belchior: and then you can interact with the Api server we created with these endpoints.
Rafael Belchior: So first we import the Api server from the
Rafael Belchior: Api server package. We import the logger from our duties.
Rafael Belchior: Plugin, which is common
Rafael Belchior: uh Texas core Api
Rafael Belchior: plug in imports
Rafael Belchior: the express to create a server and our boarding key training.
Rafael Belchior: Hey? We create the blogger. We create an express app,
Rafael Belchior: and then we have my function and the client
Rafael Belchior: our application, our lunch and function, would be the one executed when you run the script, and it basically uh creates the Api server and creates
Rafael Belchior: uh these
Rafael Belchior: a plugin key chain.
Rafael Belchior: Okay, and also contain some
Rafael Belchior: endpoints to
Rafael Belchior: to modify it.
Rafael Belchior: Okay, let's uh put the breakpoint and run this
Rafael Belchior: so we can actually run this with the tab. Uh
Rafael Belchior: we did that run up
Rafael Belchior: right so we can see that we have a an application bootstrap on Port eight thousand.
Rafael Belchior: We have all the logs
Rafael Belchior: from the
Rafael Belchior: different plugins that are being initialized,
Rafael Belchior: and it should be vegetable now reachable. Now
Rafael Belchior: we can create another terminal
Rafael Belchior: and
Rafael Belchior: okay. So what we did is that we made a pulse request with Carl
Rafael Belchior: to our local host eight thousand, which is what our Api service is running
Rafael Belchior: um,
Rafael Belchior: namely, to the set uh Tcm endpoint, which is
Rafael Belchior: here. So we have a break point. The The code stops here so we can inspect what's going on.
Rafael Belchior: So we basically get the key end of value. So the key is one, two, three, four, and the values Xyz.
Rafael Belchior: And then what this does. And again, this is not secure, because we're basically taking the users. Input, and
Rafael Belchior: would I basically um
Rafael Belchior: setting the key value part, and we can see what happens uh
Rafael Belchior: with the stepping.
Rafael Belchior: So the step into texas into
Rafael Belchior: the plug-in team train memory, dot us, which is under the practice plugin key each and memory plugin,
Rafael Belchior: and it goes directly to
Rafael Belchior: the set
Rafael Belchior: uh what this does is that it sets the back end to or key value, and this back end is simply an app.
Rafael Belchior: So, as you can see, this is a very simple plugin,
Rafael Belchior: and then additionally, it
Rafael Belchior: um
Rafael Belchior: upgrade
Rafael Belchior: the exposed metrics via promote years.
Rafael Belchior: Uh. So later you can, you know, inspect
Rafael Belchior: what some operations, some updates to these
Rafael Belchior: uh, to this point in specific.
Rafael Belchior: Okay, we log that
Rafael Belchior: and we return.
Rafael Belchior: Okay. So if we go to our um sort of we see the e-value.
Rafael Belchior: The new key fell is log there.
Rafael Belchior: Okay,
Rafael Belchior: so very simple. Then we can also uh
Rafael Belchior: perform a get
Rafael Belchior: to get the value from key pair to perform the delete
Rafael Belchior: uh check if it has the key. So this is a simple example of how you could use the plugin key train and build an application on top of the plugin teaching Right?
Rafael Belchior: The cacti
Rafael Belchior: project right? You could have a single
Rafael Belchior: standalone project that has simply these imports.
Rafael Belchior: So the cat is common the K. To score the test tooling
Rafael Belchior: that's tooling. You actually don't need it for the but you need it for the test ledger,
Rafael Belchior: and then a few more dependencies. Okay, And with this code
Rafael Belchior: you could run these scripts,
Rafael Belchior: using
Rafael Belchior: the comments that are on the read me or the departure.
Rafael Belchior: So this is the first example, any any questions so far?
Rafael Belchior: Yeah. The
Rafael Belchior: So if you go to that branch that is on my uh
Rafael Belchior: personal fork,
Rafael Belchior: the workshop examples branch,
Rafael Belchior: you'll be able to access that call
Rafael Belchior: uh which, by the way, you could do,
Rafael Belchior: I guess I can show you
Rafael Belchior: really quick.
Rafael Belchior: So let's stop these.
Rafael Belchior: Okay.
Rafael Belchior: So if you you need to do your own fork, right, and then you go on the project. Then you get into the the directory. If you do get remote at,
Rafael Belchior: and then let's say,
Rafael Belchior: and this link which you can get um via the pull request I've put on the chat.
Rafael Belchior: Then you should have,
Rafael Belchior: you should be able to get that that branch. So you add the remote.
Rafael Belchior: Then you will do something like, uh you check out the fail workshop examples to get that call. That should be that you do the trick.
Rafael Belchior: Then you need to run your run configure,
Rafael Belchior: and then you should be able to
Rafael Belchior: um
Rafael Belchior: to go to examples.
Rafael Belchior: Get this workshop examples,
Rafael Belchior: and run directly,
Rafael Belchior: using the debugger again, or
Rafael Belchior: running the script as instructed Here
Rafael Belchior: it it also it does the same.
Rafael Belchior: It's again reachable.
Rafael Belchior: All right. Uh that's it. Let's go for the next one.
You mean the supply chain example
Rafael Belchior: uh no. Your next slide. Okay.
Rafael Belchior: The next one, which one is the next one. It's the substrate as much. Okay, Yeah. The supply chain is a bit ahead.
Rafael Belchior: So now let's go for the substrate test ledger. You see a typo here
Rafael Belchior: all right. That looks better. It's not the Portuguese
Rafael Belchior: workshop version. Yet
Rafael Belchior: what he does is, it creates a substance That's pleasure programmatically.
Rafael Belchior: Uh, basically, you define the options you want for your test ledger, and then you create the ledger. And after these licenses that you can interact with your Leger. You can each transactions you can. You can read the State. This is super useful if you're developing, for example, a plugging that
Rafael Belchior: uses a polka dot or a substrate based watching, and you want to test it.
Rafael Belchior: So instead of you calling from the official report
Rafael Belchior: the test, why, you're running the test. You need to run the test and then deleting it and doing pruning, etc. You can just run this piece of code, and that's it.
Let me show you the code.
Rafael Belchior: So this is it.
Rafael Belchior: We import the logger.
Rafael Belchior: Okay, from fact, is common. We import two packages, or rather
Rafael Belchior: uh, two definitions from the test to link the substrate test pleasure and an interface for the options that that this slide should take.
Rafael Belchior: Publish all ports, and I can show you what is in the moment? What's the what level for your test ledger? So you actually can run.
Rafael Belchior: You can have a logo on your test ledger in level info, which is, uh
Rafael Belchior: typical for
Rafael Belchior: a a demo, or you could use, for example, trace if you want to see every little step that the test ledger is performing.
Rafael Belchior: Okay, you specify an image name and an image tag. And what is this?
Rafael Belchior: It's basically
Rafael Belchior: what is the name of the image that the program will pull dynamically and execute, and it has a default. That's why it's not here.
Rafael Belchior: Okay? Because it's like the default
Rafael Belchior: and a specific tech.
Rafael Belchior: Again, If you don't specify the tag, it will go to the default. But this is the image that we want to get.
Rafael Belchior: Okay, uh, we want to see the logs from the container.
Rafael Belchior: So it's basically containers running containers
Rafael Belchior: A: And then we have
Rafael Belchior: a mapping of environmental variables environment variables that you want to um give to send
Rafael Belchior: to the test letter upon initialization, which is
Rafael Belchior: these men. So the container. The name is Katie that I Ledger, the working director, Is this the Docker port. It is that it?
Rafael Belchior: Then we create the legend object, and we start the leisure, and then we stop the ledger. Okay, So it's. Uh we don't do anything particularly exciting.
Rafael Belchior: But behind the scenes there is a lot of stuff happening. Let's see what happens.
Rafael Belchior: Okay, So
Rafael Belchior: the call has run until one hundred and thirty-eight. At this point we have an object, which is the legend Object. It has
Rafael Belchior: class name. It has
Rafael Belchior: a boolean thing. If we are the meeting also? Not.
Rafael Belchior: We have the image name. It's here.
Rafael Belchior: So we are actually going to pull the image from here.
Rafael Belchior: Okay. And if we copy this
Rafael Belchior: and press in the browser.
Rafael Belchior: We actually uh get here. So this is the where the package is published. You can get the package also manually by doing this, but we do it programmatically. It has some downloads, contributors, et cetera.
Rafael Belchior: Okay? And then we start the ledger.
Rafael Belchior: Oh, and this is not looking very nice.
Rafael Belchior: Uh: all right.
Rafael Belchior: Okay, So um, I need some of the steps. But basically
Rafael Belchior: when the start method is called,
it pulls the container.
Rafael Belchior: It sets the environment environment variables.
Rafael Belchior: Okay? And now we have a substrate test ledger running on the background. We uh could interact with it. We have a poker dot substrate connector uh as a pull request draft somewhere, if it's a set accepted somehow,
Rafael Belchior: sometime like uh i'm not sure when it will be Specifically, we could test it against this test,
Rafael Belchior: and then it stops the legend.
Rafael Belchior: It runs the
Peter Somogyvari: I'm just a quick tip uh if you ever see this problem that Rafael I just seen
Peter Somogyvari: with the debugger jumping into very strange places in the code that you don't recognize. Then
Peter Somogyvari: you most likely need to rebuild the code
Peter Somogyvari: uh the easiest way to do that is to run the Configure script or the watch script, whichever.
Peter Somogyvari: Uh,
Peter Somogyvari: yeah, that's it. Sorry i'll stop talking now. No, no, no, no worries. Thank you. I I almost forgot about that. Yes, um,
Rafael Belchior: that's true. If the code is not synchronized. Uh, if the
Rafael Belchior: if
Rafael Belchior: the javascript that is uh compiled from the typescript is not up to date. You will see strange things happening, and you just need to run a speaker set. You are in the run, watch, and it will look for
Rafael Belchior: updates on your typescript files and do the compilation
Rafael Belchior: uh. So this problem shouldn't arise. It's good that it the right. So we can
Rafael Belchior: already talk about this.
Rafael Belchior: Uh, you could also run a test
Rafael Belchior: pesticides. Of course this is a more,
Rafael Belchior: a comprehensive example.
Rafael Belchior: What do you have
Rafael Belchior: a test
Rafael Belchior: from the February connector
Rafael Belchior: that runs a transaction.
Rafael Belchior: Okay. And the way to automate this is to create
Rafael Belchior: a tech type
Rafael Belchior: fabric test ledger and the fabric connector, which is what we're doing here.
Rafael Belchior: So we're defining a fabric test ledger,
Rafael Belchior: and we can run this. This is just not top.
Rafael Belchior: Okay, uh it's putting some hooks to,
Rafael Belchior: and then it's doing very
Rafael Belchior: uh, let's say intensive.
Rafael Belchior: A lot of operations on setting up the connector correctly. Zoom identities, key trains,
Rafael Belchior: Api service. Plugin registries
Rafael Belchior: a lot of different things until it finally creates the connect.
Rafael Belchior: Okay, and then simply, You just need to
Rafael Belchior: use your connector to run transaction, and these will go against the test larger that you've initialized.
Rafael Belchior: Okay,
Rafael Belchior: So it's creating the test lecture now,
Rafael Belchior: and you can see that
Rafael Belchior: it. It also prints the logs from the test led to
Rafael Belchior: Docker container itself. So it's. You can see that
Rafael Belchior: we are running a docker container that is running several docker containers, one for the yard, the other one peer, etc.
Rafael Belchior: So it's a lot of docker container operations.
Rafael Belchior: It gets really complicated, really, quickly.
Rafael Belchior: Uh, but the way the way I
Rafael Belchior: suggest you to start understanding that time into more detail is to pick a plugin you'd interested in. Let's say the fabric one because i'm already here.
Rafael Belchior: Go to test
Rafael Belchior: type, script integration
Rafael Belchior: and pick a test.
Rafael Belchior: Okay,
Rafael Belchior: and run it. We We chest and see and see what happens. See what packages are used. What is the gold flow, and these will allow you to understand not only cacti, but also the underlying blockchain skept I uses
Rafael Belchior: so we can see that
Rafael Belchior: uh the test like this is already running, because fabric, the fabric test ledger exposes seven thousand fifty-four.
Rafael Belchior: So at this moment we should have desperately in the background. We do. Docker Ps.
Rafael Belchior: We'll see that we have one docker container
Rafael Belchior: running
Rafael Belchior: and exposing a lot of ports. This is no surprise, because in this docker container. We are running more docker containers.
Rafael Belchior: Uh
Rafael Belchior: what could exact
Rafael Belchior: now what I did? I entered on the docker container with Docker exact
Rafael Belchior: minus it, and I listed the docker containers that it has inside. So not only it has a docker container for the order for the peer,
Rafael Belchior: two for the peers for the Ca for each org,
Rafael Belchior: but it also has the chain code containers because we deploy the smart contract, the chain code onto this
Rafael Belchior: uh containers. So we have, like ten containers running inside our main container.
Rafael Belchior: Okay, Then we can run a transaction
Rafael Belchior: uh which calls the uh, the call generated by the open Api, and does a request against uh our connector.
Rafael Belchior: So it should go on to the onto the transact method.
Rafael Belchior: Okay, right? So
Rafael Belchior: in our test case,
Rafael Belchior: we called
Rafael Belchior: uh, we called the fabric Api.
Rafael Belchior: Okay. She's an Api server that's calling to generate the code from the open Api,
Rafael Belchior: And it's going for the run transaction. V. One endpoint.
Rafael Belchior: Okay, that under the scenes calls
Rafael Belchior: our transact message from
Rafael Belchior: Uh,
Rafael Belchior: from our safety connected?
Rafael Belchior: Okay.
Rafael Belchior: And the transact message takes transaction. Request. What is this we can see transaction, Request has
Rafael Belchior: invocation, type, method, name. So all the
Rafael Belchior: then depending on the invocation. It does the call uh invocation depending on the question type. It does a call, or it does the same.
Rafael Belchior: What is our invocation type?
Rafael Belchior: You can see here
Rafael Belchior: uh
Rafael Belchior: It's a parameter
Rafael Belchior: one question type. Uh
Rafael Belchior: So it it's a call. Okay,
Rafael Belchior: Okay. So it basically evaluates our transaction. That's a success to through, and then it does a few more things
Rafael Belchior: that we don't need to talk into the detail. Okay, And that's basically what happened.
Rafael Belchior: And it does more than one transaction. That's why it's going to the breakpoint again.
Rafael Belchior: At the end of all of this,
Rafael Belchior: after some transactions, it it does some basic testing, so
Rafael Belchior: that you know Um, our response has an asset, or are the response we get from the server the deeds
Rafael Belchior: uh an asset. What we defined as an asset
Rafael Belchior: um that it has a define attribute that is, the owner, et cetera, et cetera, and at the end it gets down the the ledger. The test, like you did create.
Rafael Belchior: So if we go, we do talk or Ps. It still is still here, but when the test executes completely, it shouldn't be
Rafael Belchior: so. It it's gone,
Rafael Belchior: which allows you to create industrial lectures at will,
Rafael Belchior: all right. Um,
Rafael Belchior: There's one more example. But i'll go super quick, which is the consortium.
Rafael Belchior: Okay, uh these basically
Rafael Belchior: creates
Rafael Belchior: a consortium object from the court. Api
Rafael Belchior: and logs watch that object, but we don't do anything particularly interesting. We're just exploring the different tie packages available.
Rafael Belchior: Uh, we we can also run it via to read me.
Rafael Belchior: Don't work here.
Rafael Belchior: Examples:
Rafael Belchior: Okay. So the walker
Rafael Belchior: uh. But in any case it's basically empty. Okay, it utilizes the consortium
Rafael Belchior: from the core. Api.
Rafael Belchior: So very simple.
Rafael Belchior: Illustration.
Rafael Belchior: Okay,
Rafael Belchior: Okay. Consortium. Very simple.
Rafael Belchior: And now now I want to on to Peter with the supply chain application.
Peter Somogyvari: Thank you, Rafael.
I was uh really great,
Peter Somogyvari: because uh, it showed a lot of the debugging
and how that's done
Peter Somogyvari: not just on the application level, but
Peter Somogyvari: deep it in the framework score itself as well. So I just wanted to highlight that because
Peter Somogyvari: that was something that I was going to highlight as well. But now I don't have to
Peter Somogyvari: let me share my screen real quick.
Peter Somogyvari: Yes, so we have a supply chain.
Peter Somogyvari: I have example.
Peter Somogyvari: It comes with a read me file that has steps
Peter Somogyvari: uh for different things.
Peter Somogyvari: The absolute simplest that you can
Peter Somogyvari: go with
Peter Somogyvari: is,
Peter Somogyvari: if you just want to run it, then you can run it with a docker container with a single line on the terminal,
Peter Somogyvari: and then, uh, you can visit the
Peter Somogyvari: that application and test it out.
Peter Somogyvari: And then, if you want to go deeper If you want to debug it
Peter Somogyvari: yourself locally, then these are the steps to do. I just did these
Peter Somogyvari: uh in advance, because it takes about
Peter Somogyvari: five to ten minutes, depending on how fast your computer is.
Peter Somogyvari: So, after
Peter Somogyvari: getting to this point,
Peter Somogyvari: I have the Jw. Token here,
Peter Somogyvari: and then, if I go and the browser.
Peter Somogyvari: Then here's the user interface,
Peter Somogyvari: and, as you can see, there's three different uh menu items which corresponds to the three different ledgers that we were talking about earlier that this application connects
Peter Somogyvari: So, as part of the example application, we have
Peter Somogyvari: three different containers running
Peter Somogyvari: uh for fabric Forum and Basil,
Peter Somogyvari: and
Peter Somogyvari: if you look at it,
Peter Somogyvari: you can see these are the all in one which I said rough. I was talking about as well. So this is how these come in handy.
Peter Somogyvari: And then, uh,
Peter Somogyvari: basically what I want to demonstrate here is that
Peter Somogyvari: you can create a record here just by pressing this button.
Peter Somogyvari: This is a bamboo harvest.
Peter Somogyvari: You filled out with dumb data,
Peter Somogyvari: and they send a request from the Api client to the back end,
Peter Somogyvari: which then we will also use an Api call it on the back end to invoke the contract
Peter Somogyvari: with the data that you passed in from the web interface.
Peter Somogyvari: You see other parameters here, such as the signing credentials, the key chain, Id
Peter Somogyvari: and the contract name and the method name.
Peter Somogyvari: So you can see that this is either a
Peter Somogyvari: chorum or a basic transaction, something of the etherium flavor.
Peter Somogyvari: And the reason why we have the Api client call here on the back end is
Peter Somogyvari: because the authentication
Peter Somogyvari: slash authorization between the browser and this back end code happens through the
Peter Somogyvari: Jason web token.
Peter Somogyvari: And then once that happens,
Peter Somogyvari: that's when here in the back end, the actual signing credentials for the chain gets looked up.
Peter Somogyvari: And what this means is that
Peter Somogyvari: in your web application
Peter Somogyvari: the code that runs here in the browser on the client side. You do not have to
Peter Somogyvari: deal with managing securely the keys of the user
Peter Somogyvari: of course, depending on your use case. This can be a plus or a minus, but in a corporate environment where you're developing a business application.
Peter Somogyvari: Usually this would be considered a plus,
Peter Somogyvari: because the keys would be owned ultimately by the organization, anyway, not the end. User
Peter Somogyvari: Yeah. So i'll just let this uh execute,
Peter Somogyvari: and then
Peter Somogyvari: it returns
Peter Somogyvari: success, and it shows that there's not two different harvest.
Peter Somogyvari: I can go on to the bookshel step, and
Peter Somogyvari: it can reference
Peter Somogyvari: one of the items that we just created to administer the sort of foreign key relationship between the two letters.
Peter Somogyvari: So now we're going to create a bookshelf that is associated with certain harvest.
Peter Somogyvari: And then, finally, we can create a shipment of a specific bookshelf,
Peter Somogyvari: and this last one gets stored, I believe, on the fabric ledger,
Peter Somogyvari: and if you want to look at this under the hood. You can see in the
Peter Somogyvari: developer
Peter Somogyvari: console of the browser that
Peter Somogyvari: it's It's just these uh, very simple Http requests that
Peter Somogyvari: get sent up to the Uh
Peter Somogyvari: the Api server,
Peter Somogyvari: which is at this host. It's running locally.
Peter Somogyvari: And so the cool thing is that you can try and debug this at home
Peter Somogyvari: on relatively low resource uh usage
Peter Somogyvari: scenarios, and you can modify it as you see fit. You can use it as a template for your own applications,
Peter Somogyvari: and those don't have to be a part of the framework. The only reason why this code is just happens to be within the frameworks keep repositories, because that's very develop it. And this way we can execute test cases in an automated way
Peter Somogyvari: uh through these examples as well, so that if we make a change and the example breaks, then we immediately know about it, or almost immediately
Peter Somogyvari: after we submitted the pull, request and the ci and the test.
Peter Somogyvari: So
Peter Somogyvari: this is uh
Peter Somogyvari: the high level overview.
Peter Somogyvari: And then I just wanted to show that
Peter Somogyvari: there's the Ui code which has a supply chain. Api
Peter Somogyvari: Api client object
Peter Somogyvari: which comes from this package that is called the Business Logic Plugin,
Peter Somogyvari: and this package contains the code that gets loaded into the Api server next to
Peter Somogyvari: the connector plugins.
Peter Somogyvari: So this example, has free api servers, all of which are loaded up with connector plugins for all three of the ledgers, and also this
Peter Somogyvari: business logic plugin, which is the one that ultimately handles
Peter Somogyvari: the data management
Peter Somogyvari: which you basically see here, one example of it that invokes the contract to store the data
Peter Somogyvari: on the lecture.
Peter Somogyvari: And uh,
Peter Somogyvari: if you want to write your own plugin, either for uh, something like a connector interface or for the actual business logic,
Peter Somogyvari: you can do So
Peter Somogyvari: it's basically just about in and planning these interfaces that you can import from the Core Api package. I think profile also touched on these. So I don't want to say the same things again. But it's worth
Peter Somogyvari: repeating that creating a plugin is very easy. You just have to implement these interfaces, which are also pretty simple.
Peter Somogyvari: Basically All this does is instantiates and points with
Peter Somogyvari: uh signing credentials for the lectures and some other data sections to log level and the key chain id,
Peter Somogyvari: and then it buyers these endpoints up, so that then the Api server gets uh started. Then these are there,
Peter Somogyvari: and that's what makes it possible to to reach these from the Api client later on.
Peter Somogyvari: And uh, I think i'll just stop there with this example.
Peter Somogyvari: Uh, if you want to read all of the code of it. Or if you have any specific question about the code, then
Peter Somogyvari: it's neatly organized within the Examples Directory as of right now,
Peter Somogyvari: and you can just see the example: dash, supply chain, dash packages such as back end business, electric plugin and front end,
Peter Somogyvari: and the reason why we have a separate package for business logic is so that, uh the front end code and the back end code can share
Peter Somogyvari: certain model entities, for example,
Peter Somogyvari: uh whatever gets exported from this open Api file,
Peter Somogyvari: such as the definition of harvest or a shipment.
Peter Somogyvari: Yes, so that was the supply chain example. I think i'm out of time, so I will pass on them to
Peter Somogyvari: Andrea.
André Augusto: Yeah, Thank you, Peter. Let me
André Augusto: share the screen.
André Augusto: Yeah, Can you confirm you're seeing?
Yes,
André Augusto: yeah, perfect. Um. Okay, So we're going to define this part in in two different pieces. First, they'll present the hold up or sat. We'll explain that in a in a minute um, and then a Cbdc bridging. Use case um
André Augusto: between hyper ledger fabric and a hyper ledger by zoom networks.
André Augusto: So first of all, just a few words about me. Uh I'm Andre, Phd. Student from Lisbon. Um. I have been researching boxing for probability and and contributing for cacti for about a year now. Um, and i'm really interested in in collaborating Uh, if you'd like to know more about not only this example, but um,
André Augusto: you know, interoperability projects just feel free to reach out on, on, on social media.
André Augusto: So what is hold up or s Atp: Um. So Rama also told a little bit about this. Um hold up is is under specification at the Itf, the Internet engineering task force Uh: the name has changed recently from all that uh open digital asset protocol to secure us to transfer protocol. This is why we still have these two names here. Uh in cacti. We still have the the plugin we build up, So I I will use that name here today.
André Augusto: So hold up is basically an acid transfer protocol that is suited to work either on blockchains or legacy systems. Right here we're focused on more on blockchains,
André Augusto: and the reason why we choose to work on all the outfits, because it's an organization Um, as of today there are dozens, or probably hundreds of of interoperability solutions that are really targeted to specific use cases or specific ledgers, but they are not really extendable to other other blockchains or other solutions. So we need to work on this standardization of cross-chain communication. Um, and this is why we we use all that.
André Augusto: And again, as Rama told told us in the beginning:
André Augusto: Um, this is not a a nasa transfer protocol that runs between these two networks Directly we leverage these two gateways or a gateway for each network Um, And each of these gateways has read and right access to the ledger. So basically the ledgers trust these gateways uh to make operations. And then these gateways run uh in between hold up or sat.
André Augusto: So basically a gateway is divided into two different parts, a ledger specific part, and then the the gateway uh, or the the actual protocol that runs with other gateways. In this case it is hold up or satp.
André Augusto: So just um! This is the sequence diagram of a vote up uh a lot of detail. But don't lose yourselves in so many messages back and forth. Uh the key idea here is that,
André Augusto: as in the beginning, as Rafael said, when we have an asset transfer protocol, we mainly have a lock and delete in the in the source ledger uh where that asset is, and then we kind of recreate will create the representation of that asset in the target box. So this is just an idea of of how the protocol works, and the connection between all that and cacti is that we have a cactus plugin. All that firms
André Augusto: um plug in in in the packages folder.
André Augusto: So basically you have the source code for this plugin, and you can instantiate gate with there.
André Augusto: And the idea to instant sheet the gate was that Um, you You don't actually there's this plug in nailed up gateway. This is an abstract class uh which has basically the gateway logic, the Satp, or odd logic there. So it cannot be directly instantiated. So what we need is to work on specific implementations of gateways, one for its ledger.
André Augusto: So we have in this case We have implemented already a fabric in the Basel gateway, but it is possible to create more um and connected to other ledgers, and this might be a a very good way for you to contribute to the project. If you'd like to extend this plug in all that gateway. Connect it to another ledger,
André Augusto: And you'll basically um need to create smart contracts for that ledger and write the logic for the gateway to interact with with those smart contracts.
André Augusto: So how do we instantiate a a gateway?
André Augusto: Um! It is specifically a fabricate. But let's say we have here, you know. Name the lpid. This is like the ledger compatibility. This case. We can say that I only talked to gateways. Um
André Augusto: that are connected to A. Dl. T. Two. We have an in Society and Ipfs path. This is just for logging purposes. Not really um important. Right now
André Augusto: we have fabric specific things, since this is a fabric gateway uh signing credentials, channels. Um, the the chain code name that will be accessed, and then we have things that can be also extended classes that can also be extended for specific use. Case um
André Augusto: implementations. Of course, we might need to do different checks. If we have a supply chain example. Then, if when we have a um a Cbdc bridging example,
André Augusto: so
André Augusto: now it's the the use case that we've built on top of this, And this is in the context of a hyper ledger mental sheets pro project. I was the mentee. My mentors were imbra and lasso um basically If you want to actually uh see the Cbdc prototype you can check inverse presentation on a hyper ledger global forum this um in September.
André Augusto: But the idea here is that we have a core Cbdc ledger based on a a Hyper Ledger fabric network. This can be maintained by a Consortium of central Banks financial institutions, and they manage the Cbdc. Um in in this letter,
André Augusto: and then we have other ledgers. This can be um retail businesses
André Augusto: that serve clients to through the exposure of some services to basically clients. Can um, you know, uh access those services? And of course they need to pay, and if they need to pay, they need access to the core. Cbc. Ledger. So an a user needs to be able to transfer to tokens from one leisure to the other and uh the other way around as well.
André Augusto: So what we did here was basically for building a bridge with hyper ledger cacti and implementing a gate. Okay for each letter.
André Augusto: So, as an example,
André Augusto: we developed two different smart contracts for chain code in each. In each ledger we have the Cvdc chain code of smart contract which basically encompasses the actual logic of the Cbdc.
André Augusto: Uh. So the Cdc. Is a central bank digital current. I I didn't said that. Just think of it as a token if you uh don't actually know uh a lot of that in detail.
André Augusto: So we have uh this uh Cbdc definition in this chain code, and then we have an asset reference chain code, which is basically a wrapper of Cbdc that will be preached.
André Augusto: This Cbdc will um. The Cbdc chain code will create an asset reference that represents this fifty Cbdc. And that Alice can use the Id of the asset at reference to talk to the bridge. Uh. In this case the gateway one, and say, I, I want to bridge out this amount of tokens with this as a reference Id
André Augusto: so gateway one will remote that, as we said, Um, this will encompass locking, deleting, and then creating a representation of this asset reference in the Basel ledger.
André Augusto: The asset reference Smart contract knows how uh knows what this asset reference is, and those that it needs to mean fifty Cbdc.
André Augusto: To um. Alice's address in the Cbdc. Smart contract. So all this will will now have um fifty Cbdc to use in a hyper ledger by zoom, and of course, if she wants she can, she can bridge back this token back to the to the core, to the Cbdc Core ledger.
André Augusto: So how do we implement this in cactus?
André Augusto: This is mainly the the the architecture overview of this thing. We have um two api servers, as we have been seeing um
André Augusto: and the other examples we can create api servers and connect different plugins there. Uh, and basically the the endpoints that are exposed by those plugins will also be explo exposed to the exterior. And so we have the out that plugin which is basically the logic of the gateway.
André Augusto: Um in in the in this, in the in this left side we have a hyper ledger that connects to a a hyper ledger fabric network.
André Augusto: We have the ipfs connected into the local database again. This is for logging purposes. Um! I won't get in too much detail on on this bottom line here
André Augusto: and then on the right side, instead of having a fabric connector, we have a bed with connector to connect to a bedroom, and the idea looking a little bit into uh the code.
André Augusto: Um! And again, this is still the pool request. But you can. You can try it if you want. And Raphael gave the instructions to um to actually run the
André Augusto: set, set the remote uh branch. So if you want to to try that. Um, There's this Cbdc bridging app uh file.
André Augusto: Or basically we define here the Api servers and these Api servers have this plugin registries and these plugin registries are basically a set of plugins that are um that will be uh exposed by this Api server. So on the client side, we have the fabric gateway uh the fabric uh connector, the fabric gateway and the Ipf uh connector,
André Augusto: and on the server side we have the best zoom ledger connectors um the ipfs and the uh that gateway as well.
André Augusto: And then, when the Api servers are running, we can deploy our smart contracts and we're good to go. We can uh um try the application, calling the different endpoints, and so on. So there! There is actually an example, a a front end. Um!
André Augusto: That you can. You can try. And I have here also another link basically for these instructions right here. If you would like to test that Um, it's in this. Finally, this read me um, and
André Augusto: the idea is that you'll get a front end like this, and where you can interact with the different pieces, and we'll see the tokens going back and forth. Um in the in in the front. And this will be, of course, interacting with uh everything that we deployed with the later connectors.
André Augusto: Um, and with the gateways mainly.
André Augusto: So yeah, this is it. There's actually a video uh here uh of that front end interacting with the things if you'd like to see that. Um: And yeah again, if you have, if you'd like to try that if you have an issue something uh open. An issue in in the in the project will reach out to me in the in on social media. And uh, yeah, I don't know if there's any question I might answer.
Rafael Belchior: Oh, Andrea, uh great presentation, There is a question uh, how does this work in terms of transaction gas costs,
Rafael Belchior: especially in the fabric side where native currency or tokens might not be mandatory.
André Augusto: Okay. So the idea here is that in in in the fabric side we have the Cbdc chain code. This is actually implemented as a sort of Erc twenty uh smart contract on the fabric side. So we kind of emulate that, and in in fabric. We don't have that uh guess
André Augusto: gas issue in the business side. We have. Um. So yeah, that's that's basically it
André Augusto: We see in in the fabric side. We need the the authentication authorization. This is a little bit more complex than I that I showed here. It has uh multiple organizations with different um authorizations for for uh each one of these actions that can be perform either by the bridge or by the users.
André Augusto: So yeah, it's, it's explained a little bit better in the in the documentation.
André Augusto: Yeah, Any any other questions?
André Augusto: Uh exactly uh Shane, it's It's that. And before destroying the asset on the source chain we we we have before a lock, so we lock the asset before then, and then we destroy it. Uh It's like the
André Augusto: um
André Augusto: it's like preparing for the actual destruction before. Uh burning effectively the asset.
André Augusto: Yeah, I can. I can put the the link for the video here. Um, My might be some, some some problem.
Rafael Belchior: Yeah, that's that's a good question that actually translates according to.
Rafael Belchior: So what we have done to a metric called cross-chain costs.
Rafael Belchior: Where do you calculate the sum of the cost of all transactions involved in this specific crossing transaction.
Rafael Belchior: So in the fabric site, you don't necessarily pay fees on the Public ledger you you pay fees, so the cost would be
Rafael Belchior: the cost of
Rafael Belchior: the interoperability mechanism of operating it.
Rafael Belchior: But he he doesn't
Rafael Belchior: plus the cost of
Rafael Belchior: the transactions on the public network and on seventy quickly zero.
Imre Kocsis: Hey, there, guys, may I chime in for a minute?
Imre Kocsis: Sorry to interrupt this
Imre Kocsis: just uh, just to say minor note of clarification. This is intended to connect private ledgers mostly,
Imre Kocsis: and if you have be on the right side in a uh private setting, save it Click or
Imre Kocsis: Ib. Fp, I believe, is what's supposed to be for production now, and fabric on the left side. Then this is not actually a question of guess and the like is just sizing your network for the given uh performance guarantees. And essentially we can do that for fabric as well as
Imre Kocsis: so, while on the technical level there is a guest on the right side. It's. It's really just a technicality stemming from using the room for uh for setting up a consortium network.
Imre Kocsis: You can try this whole thing with the public network, but I can't really imagine a central bank who wants to see their assets on on a public, not public network reached out.
Imre Kocsis: That would be a quite uh
Imre Kocsis: that. Wouldn't be a long running date service. Let's just say that
André Augusto: yeah, Exactly. Thank you, Andre. It's It's a pretty one point,
Peter Somogyvari: all right. Uh, we are out of time.
Peter Somogyvari: So the question is,
Sean Bohan: Shawn, Can we go over, or should we just have a hard cut off? No, no, we're this. This is your workshop theater, and Rafael. This is awesome, and if we want to keep going. We can keep going. I don't I there's no hard cut off.
Sean Bohan: The uh clock is not going to shut down the zoom, So if there are more questions if you guys want to present uh more clarifying information. But by all means this has been a great workshop, so I don't want to stop it.
Peter Somogyvari: Okay, Then I shall finish with
Peter Somogyvari: some of the rest of the slides about the
Peter Somogyvari: one second
Peter Somogyvari: right? So the future of the project
Peter Somogyvari: is to grow the community. That's the most important part. We need more contributors because
Peter Somogyvari: of the aforementioned, the scaling issue with,
Peter Somogyvari: uh, let your fragmentation. So we need your help.
Peter Somogyvari: And uh, that is I I will just a few items, Teacher wise that we are planning on implementing it's, mostly a personal list of mine.
Peter Somogyvari: So there's other items on the road and from other maintainers, and the roadmap is constantly evolving, as we are
Peter Somogyvari: hammering out the details, especially around how to manage the
Peter Somogyvari: So it all that, uh pretext.
Peter Somogyvari: The first and most important thing right now is to finalize the version two design and technical architecture, which will include
Peter Somogyvari: uh asset exchanges, as it transfers in some sort of uh
Peter Somogyvari: as ready made as out of the box as possible
Peter Somogyvari: uh flavor, and I mean as possible, because
Peter Somogyvari: or I say as possible, because, uh,
Peter Somogyvari: it will have to have some sort of setup
Peter Somogyvari: step to deploy the framework uh on the lectures, to have actual asset transfers and exchanges that are, It's all
Peter Somogyvari: most likely these little These will be based on Hdlcs.
Peter Somogyvari: And then once we figured out that what goes into two point zero.
Peter Somogyvari: Then we will issue a two point, zero zero alpha release,
Peter Somogyvari: which will be the first release ever that will contain
Peter Somogyvari: the viewer and detective source code together, which is what makes of cacti
Peter Somogyvari: identity is very important, and we have not had enough time to work on it. Uh, we do have some things like the key chain plugins, but
Peter Somogyvari: I personally want to take it much further.
Peter Somogyvari: I want to be able to bootstrap consortiums the different trust anchors,
Peter Somogyvari: meaning that the original key exchange of the nodes would would be able to come from different sources, such as an in the ledger
Peter Somogyvari: or chasing web signatures X, five, one, nine, anything else. This also has to be
Peter Somogyvari: a a part of the plugin architecture in the sense that I don't want any of this hard coded. I don't want us to find ourselves in a situation next year where we
Peter Somogyvari: sort of picked a winner quote unquote, and then realized later on that we should have picked another Webinar.
Peter Somogyvari: So this
Peter Somogyvari: also has to be
Peter Somogyvari: hot, slappable in the sense that different implementations can be contributed anytime, and the different implementations can be sloped out anytime uh in the existing deployments as well, not just new ones.
Peter Somogyvari: We want to add support for Corda version five, which I believe, has been released in
Peter Somogyvari: sometime in the past few months they definitely had a release candidate. But i'm not sure if and when exactly the actual Ga leaves happen. But
Peter Somogyvari: regardless of that, uh, we do. We need to have support for that.
Peter Somogyvari: And then documentation, which is a feature good documentation is just as important as the actual things that the framework can achieve. Because if you don't know that it can do those things, or if you don't know how to use them.
Peter Somogyvari: Then in the end the added value will remain zero.
Peter Somogyvari: So we do have to focus on the documentation.
Peter Somogyvari: I want the reference architecture documented.
Peter Somogyvari: Uh: Well, actually, the Cbdc example is shaping up with it is, you could see from Andrea's presentation,
Peter Somogyvari: and I do want a public test deployment, something sort of a playground environment that
Peter Somogyvari: doesn't do anything production already, but it allows people to
Peter Somogyvari: look at it, have a feel to get, and uh, maybe even write some code against it, and see how it would work.
Peter Somogyvari: Four months is a an overarching concern,
Peter Somogyvari: and the way we should deal with that is, that the Ci should
Peter Somogyvari: have
Peter Somogyvari: a comprehensive set of
Peter Somogyvari: tests, specifically verifying that there was no regression in performance in the change that is being introduced by a pool request;
Peter Somogyvari: so that
Peter Somogyvari: if I added, however, many new lines of code to let's say a connector plugin, and somehow it's now fifty percent slower to run a transaction from that plugin, then
Peter Somogyvari: that should actually get me a rejection on my pull, request or not necessarily a full rejection, but uh,
Peter Somogyvari: a call to action
Peter Somogyvari: to fix the performance issues that i'm trying to introduce.
Peter Somogyvari: We do have some of this in place, but it's a very rudimentary compared to what I want us to have.
Peter Somogyvari: So that's definitely on the roadmap as well.
Peter Somogyvari: And uh,
Peter Somogyvari: we have a call to action here, which is just a bunch of links, and me saying again that we are looking for contributors, and you're always welcome to join the pair programming sessions,
Peter Somogyvari: and i'm not sure if roughly I want it to shoulder after the rest of the slides, or if he wanted me to talk about these things
Rafael Belchior: uh you, you! You can go ahead, Peter, that's fine
Rafael Belchior: so, or or I can, but I can talk, and you can test slides to. Uh:
Rafael Belchior: Yeah. So uh, thanks, Peter.
Rafael Belchior: Uh Another call to action is if you're researching or learning about. You know, if you're interested in the area, Cacti is an excellent platform and and cactus and weaver
Rafael Belchior: to do research into these areas, we have a series of papers that,
Rafael Belchior: uh, what published on on
Rafael Belchior: on its way to being published
Rafael Belchior: on different plugins
Rafael Belchior: off uh
Rafael Belchior: of cacti or
Rafael Belchior: interoperability architectures or systematizations
Rafael Belchior: uh to be submitted.
Rafael Belchior: And
Rafael Belchior: you know, since you have such a diverse community with different backgrounds, I think it's a an ideal place to do research and to learn,
Rafael Belchior: uh which we welcome you all.
Rafael Belchior: Oh, please, next slide
Rafael Belchior: uh for the remote.
Rafael Belchior: Besides research pipers that were already some pieces
Rafael Belchior: uh my! It presented an accepted uh on cacti or anti- components. In this case, two of them from
Rafael Belchior: technical visible, which I had the pleasure to
Rafael Belchior: will help with,
Rafael Belchior: and there are several on going to
Rafael Belchior: next slide, please.
Rafael Belchior: More papers flash resources. Those are mainly from weaver folks. Um,
Rafael Belchior: they have a very interesting paper, which is pretty well observational permission leisure. I really like that paper because it
Rafael Belchior: their state is not
Rafael Belchior: public
Rafael Belchior: uh clever tricks
Rafael Belchior: to allow for proof verification on
Rafael Belchior: on the counterparty blockchain.
Rafael Belchior: Um, The presentation on you by
Rafael Belchior: on their technology they use Ipc: So they're mainly interoperating across the public blockchains. Uh, But in
Rafael Belchior: in specific cases where you don't have
Rafael Belchior: these transparency by default to be taken,
Rafael Belchior: so please feel free to,
Rafael Belchior: uh, collaborate with us. You literally just need to show up on on the Channel and say, you want to contribute or to need to more detail.
Rafael Belchior: We are researchers, programmers.
Rafael Belchior: We we do different tasks. We do a bit of.
Rafael Belchior: Please reach out if you're interested.
Rafael Belchior: Next slide, please.
Rafael Belchior: A huge, huge, huge thanks to Monica Gomez, which did a lot of the heavy pulling to put this workshop together, and very, very
Rafael Belchior: visually appealing as you can, I hope, go for, and also to have enough would be the preliminary version of the Hell world example.
Rafael Belchior: Next slide, please.
Rafael Belchior: Uh, finally. Um. So what acknowledgments, By the way, A huge thanks to zoom from from Ue to Rama, from Ibm to Nico, from Firefly for an and two hundred. I'll go to from technical as well for presenting their use cases, their
Rafael Belchior: technology, their view on cacti and related projects, huge thanks to Shawn and David for helping a lot to organize these workshops very effectively, and with a lot of support from a larger, and each thanks to Peter for,
Rafael Belchior: uh, being an excellent mentor
Rafael Belchior: and running the par programming calls, which are immensely valuable,
Rafael Belchior: and to push the project a lot
Rafael Belchior: and a huge thanks to the other Cape time. Maintainer, of course,
Rafael Belchior: and thanks everyone, of course, for attending, and for your patience, and for speaking with us for three hours. Definitely not easy.
Peter Somogyvari: Yes, more than three hours. Thank you very much.
Sean Bohan: So feel free to unmute yourself.
Sean Bohan: Yeah. So I think Daniel had a question in chat. Um. Why use cacti over firefly? What are the differences? What is the primary purpose of cacti? And how does it differ from flyerfly?
Sean Bohan: And I think we lost um Nico earlier because he had a conflict, so he couldn't stay throughout the entire session. Uh Daniel, if you like. You can also post that on uh discord.
Sean Bohan: Um, you know, in the Firefly or in the in the cacti uh channels, and and and i'm sure there will be a firefly person around who is able to answer that for you?
Rafael Belchior: Yeah, I think that's uh. I can try to answer the from Cacti's perspective. I think that's a very good question, because there's a lot of synergies between the projects,
Rafael Belchior: since Firefly is also trying to abstract the infrastructure, so you can focus at the application level.
Rafael Belchior: Uh, but my understanding that it has more connected to It's focused a bit more, or maybe a lot more. I don't know in detail on the infrastructure level. What is firefly is more focused on the application level, as you could have seen. For example, they have really nice
Rafael Belchior: user interfaces that should come for free for for their uh
Rafael Belchior: for free, maybe not for Fe, right? But
Rafael Belchior: and they have a set of uh plugins around. Yes, the transfers and the decentralization of the consortium.
Rafael Belchior: So I think those
Rafael Belchior: folks are more focused on
Rafael Belchior: uh the higher level part of the stack where it is, we focus more on infrastructure.
Rafael Belchior: Uh my good feeling is that there are some synergies that could be probably better explored. So we'll see um
Rafael Belchior: if at some point we collaborate what calls it with with our for developers.
Peter Somogyvari: Thanks for answering that, Rafael. I I just agree.
Peter Somogyvari: Uh i'll pick another one just considering different languages if we were in character. Is it right time to contribute to code?
Peter Somogyvari: Uh, as I manage? So I will say yes, it's always the right time to contribute code.
Peter Somogyvari: If you have worries about, uh putting in effort into a feature or an improvement that you're not sure if it would be accepted or welcomed because of For whatever reasons,
Peter Somogyvari: then what you can do is open an issue first
Peter Somogyvari: and say,
Peter Somogyvari: I think this feature is missing, or I think there's a bug there. I would like to fix it.
Peter Somogyvari: I would like to fix it or implement it in this specific way.
Peter Somogyvari: And then, uh, they asked the Maintainer to chime in on that which would then sort of give you
Peter Somogyvari: the preliminary approval on the conceptual level.
Peter Somogyvari: This Doesn't guarantee that your pull request will go through the first time you submit it, but it does guarantee that no one will
Peter Somogyvari: come back and say, Oh, I disagree with the idea in general. So then,
Peter Somogyvari: if you go through this little extra step in the beginning to get the buy, and from the Maintainer in advance, then
Peter Somogyvari: you can be sure that, uh
Peter Somogyvari: that verse you would have to
Peter Somogyvari: refactor some things in your pool request that uh, some some painters may disagree with,
Peter Somogyvari: but not on a conceptual level, so no one would say. Then.
Peter Somogyvari: Oh, we don't want this at all, because you already asked them, and they said that they didn't want it.
Rafael Belchior: Thanks for supporting the the answer, Peter.
Rafael Belchior: Uh so at least of it. Uh, yes,
Rafael Belchior: uh, sometimes, unfortunately, by accident. So, for example, we we have seen that the parity wallet hack where the heck are basically
Rafael Belchior: reinitialize destroyed
Rafael Belchior: a smart contract that held thousands of feet
Rafael Belchior: resulting in the destruction of a lot of money.
Rafael Belchior: Uh, but the locks we're talking about are hopefully not those, but it always depends on the implementation. So bugs. The
Rafael Belchior: fact that there are bugs in software might lead to permanent local funds.
Rafael Belchior: In the case of a bridge, we basically want the bridge contract to act as an escort. So you send funds to that smart contract, and the breach keeps the funds, so the funds are not uh
Rafael Belchior: are not what per se. They are held into the bridge account. That's what we defined by a lock,
Rafael Belchior: and hopefully. The breach
Rafael Belchior: can uh or the other watching on the counterpart and blockchain. The bridge contract can recognize that that has been a lot to successful lock and means some tokens for you
Rafael Belchior: that are back to the token set to what?
Rafael Belchior: Okay? And this happens with the help of relayers, with specific protocols for interpretability. But the general way it's done so like that,
Rafael Belchior: for example, mean test it on the counterparty blockchain, even if you didn't clock access, it's on the on the first blockchain.
Rafael Belchior: Those are cross-rain attacks, and those are the ones responsible for
Rafael Belchior: the processing acts that happen to bridges, and has resulted
Rafael Belchior: in more than one and a half billion dollars in damages only in the last few months. So it's a quite serious
Rafael Belchior: problem. And that is why interoperability research is so relevant, because it's holding up a lot of value, and it has a huge attack surface.
Peter Somogyvari: And that's why i'm paranoid about test automation
Peter Somogyvari: or not, but very insistent that, but also paradox that something bad could happen. And therefore we need to insist on
Peter Somogyvari: a very furrow test automation process, which then also feeds into helping the research may get done faster, and if the researchers don't have to spend as much time
Peter Somogyvari: with the basic mechanics of uh pulling up pleasures, for example, then they can spend more time thinking about what they are the best that is, researching the security properties of whatever it is that
Peter Somogyvari: it's getting examined. So I think that's a huge net, positive there as well.
Sean Bohan: Valid caution required. Um. Another question is interop solution type used by cacti, strictly atomic swap, or can it be? Others like two way slash, ledger, entry, point, et cetera, should be possible to plug in? I suppose
Peter Somogyvari: he kind of answer your question there, quote and quote: Almost anything is possible through plugins,
Peter Somogyvari: but also just to answer a little more uh
Peter Somogyvari: it's not the only type of solution that you can create with the framework. There's plenty of others.
Peter Somogyvari: For example, the supply chain app that I was demoing was not
Peter Somogyvari: doing any automatic slots that was just showing you
Peter Somogyvari: uh data on three different lectures and inserting data also on to three different letters. But
Peter Somogyvari: there was no cross chain
Peter Somogyvari: and go there, apart from the data sharing across the lectures.
Rafael Belchior: Yeah. Uh, if I can complement that
Rafael Belchior: Um, Because this is a modular and allows you to do
Rafael Belchior: very
Rafael Belchior: flexible things.
Rafael Belchior: We have data transfers which you can see on the supply chain app. So basically the app is transferring data across trains, No double span protection needed. Let's say we have as the transfers we to plug in under. I presented all that with with great ways
Rafael Belchior: uh which implements our
Rafael Belchior: sat
Rafael Belchior: protocol which we're trying to standardize,
Rafael Belchior: and we have a set exchanges with as short time contracts. So it's a boy is a short time contract, and then you use the cacti plugin to interact with that contract so you could build the interface on top of it. You could build automation pipelines on top of it. It's like really anything
Rafael Belchior: uh because cash by it's supposed to support general purpose, interpretability. So if you want to create your plugin that conjugates, and as the transfer with data transfers, so imagine there's simply condition for you to do an as a transfer based on some data. Yes, you can do it,
Rafael Belchior: and that's quite flexible. And that's also why we welcome research, though
Rafael Belchior: with such enthusiasm we think it's a really good place.
Rafael Belchior: Uh, and, thanks to Peter's, push on this. So if you want to have your calls incorporate on the main code base you need to have
Rafael Belchior: Uh, the call needs to be clean needs to test the test needs not to break acti hopefully, preferably.
Rafael Belchior: And it should also come with some tests, right?
Rafael Belchior: And if it comes with some tests, you basically have your paper evaluation for free. It's not for free. You have to do it right, but it's singled it on the test Right? You can do some performance measurements.
Rafael Belchior: You can do some attacks
Rafael Belchior: uh simulated the text on the test files.
Rafael Belchior: So it really helps. It really helped me with the Fs newspaper, because they all the tests required by
Rafael Belchior: uh the good practices that hypervisor promotes
Rafael Belchior: uh made me do the evaluation,
Rafael Belchior: and it was very quick to put it so. I think it's a good place,
Rafael Belchior: but that would be twice
Sean Bohan: uh Reagan. A has a question. Is it possible to scale a deployed network, using cacti like adding nodes at a later point in time.
Peter Somogyvari: I so
Peter Somogyvari: cactus will or cactile not
Peter Somogyvari: speed up any existing ledgers
Peter Somogyvari: to that. So
Peter Somogyvari: it is sort of a separate component in a deployment diagram that way if you will.
Peter Somogyvari: So our only aim there, and not the only, but the number one aim there is
Peter Somogyvari: for us to not be the bottleneck.
Peter Somogyvari: If you have a ledger that can be
Peter Somogyvari: ten thousand transactions per second, then i'll rule the from there. Is that cactus
Peter Somogyvari: talking to that ledger has to be able to handle at least that much as well, so that just by deploying cactus next to your ledger you don't end up slowing everything down.
Peter Somogyvari: But Uh, this is not something that will
Peter Somogyvari: magically speed up your lecture just by being deployed.
Rafael Belchior: So that's also a good topic for research uh in principle,
Rafael Belchior: and could introduce and willing to do some latency right because you you reach from a ledger. Then you need to do some processing, and only that you submit a transaction on the sort of ledger
Rafael Belchior: uh, so we we could empirically verify What's that?
Rafael Belchior: Um!
Rafael Belchior: What's that cost right would be useful uh in some cases. But I I don't think we have done any extensive
Rafael Belchior: studies on on what these costs.
Rafael Belchior: We're still building the
Rafael Belchior: the core infrastructure.
Peter Somogyvari: Yup.
Rafael Belchior: Seems there is no more questions.
Sean Bohan: Well, that's the case. Then I'm gonna say thank you to all the workshop speakers and the attendees uh for joining us today, as I mentioned in the chat. We are going to send an email to all the registrants um
Sean Bohan: with links to the Wiki page, the Github, the Pdf.
Sean Bohan: Um as well as the Youtube video, and we're going to include those links in the Youtube video as well. So no one gets lost. We don't want there to be a a loss fidelity there. But thank you. Everyone for joining us, and thank you to uh the workshop uh presenters. This was great, and we really appreciate everyone.
Sean Bohan: Also check out the Hyper Ledger discord, the Hyper Ledger Wiki, and that will be in the Thank you email as well.
Rafael Belchior: Thank you all.
Peter Somogyvari: Thank you.
Sean Bohan: Thank you. All right. I'm gonna ended.