 Hello everyone, I'm Kim Chen and I'm from, I'm from University of Liverpool working on a project of support to centralize governance for smart contracts in fabric Python SDK. My mentors are Xu Yang and Cisco and don't. And let's get started. To understand what we are doing at that hybrid fabric SDK, we have to introduce one of the major changes in this worship, which is the life cycle on chain code management. As we know, fabric, it contains a lot of duties from supporting the smart contracts based on the first level citizens of the hybrid systems such as chain code peers and channels. And so, to adopt these changes, we have to modify it in the, in the user visible way which is the SDK we provided to our internal users and also the external users who would like to adopt check blockchain technology in their business or their running of organizations. And so here it comes to our topic of supporting decentralized governance for fabric SDK. The project objectives is to first to understand the life cycle management on SDK Python and also looked into the references of how the SDK in other languages have implemented this feature. So we have to align and track with the new features of fabric to point to point eggs and further to extend the documentations on how to use the fabric to make SDK in our project as project deliverables. So we have to support life cycle 2.0 and of fabric 2.2 plus versions and also provide thorough document for how to use it. And after this project for months, I get familiar with the fabric and fabric SDK. And also, I have read the code base and also work closely with mentors to fulfill and extend the central support. We have reexamined the previous API usages, according to mental suggestions and also make some revisions from the following pages, I will try to explain in detail on how this works. The chain code life cycle I'll start with the first step which is set up to set up a chain code on an organization or multiple organizations. We have to provide a number of parameter settings, which is, which is configuration provided in a protobuf of the project code base, it involves the name and version of the chain code. And also the commencing sequence. And there's also another layer which is the endorsement policy and the validation configuration that lets the peers or the client to decide how to apply this chain code or whether or not to apply this to apply this chain code to themselves. In the newer version, which is the fabric 2.x versions, we extend the flexibility of the endorsement policy and the validation configuration, which is, which makes them now, now valid, even just before the setup of the entire chain code, which gives smart flexibility to our SDK users. The commencing or the setup of this life of the chain code life cycle is based on the like first level citizens of the fabric, which require, which takes me a lot of time to look into it and to learn about how the centralized works on these citizens. First, the peer that the client recommends the entire setup sequence, and then it will later send, send the global broadcast to its peers and pay for approval by communication they're using, using specific channels that that maintain the consistency and also the efficiency of the message deliverance. And most importantly, it's the chain code we're trying to be sure globally to support smart contracts and further transactions. And so, this is the first step of the chain chain code life cycle, and also try to explain how fabric works on its first level citizens. And then we have to build from scratch a tar file from the source code and metadata, and it will be available to be sent to our organizations for further broadcast and approvals. After, after the package code is sent to appear, we would have to install this chain code and then to, and then to wait for the approval and we have to save the hash value return on our, on our fabric docs. And this is also one of the one of the middle settings in this workflow. So the step four, since we would like to, like we have like to adopt the SDK in a more decentralized way. In 2.x version, we added the approval of organization to, to gain the robustness of this process. And instead of like, and from the previous versions in previous versions, the approval and the application of the chain code is more independent more in an independent way. And there's only, there's only a issuer and recipient model, which may not can, which may not allow for a consistency within the entire cluster of organizations. At this level, we, after installing we will have to send a chain code definition for the organization chain code lifecycle transaction to peers in the organization. And then after the approval to transaction can be commit can be committed. We have also added a various sets of configuration profile configuration settings to allow the user to add more flexibility in this process. For example, the user may have may want to specify only after the approval of several specific organizations, this chain code can be can be committed. But, and also, there can be some number of limits, for example, we have to get the approvals from 50% or maybe get from three other knots to get this chain code committed in the transaction. And this is also the way we approve for the organization like management, and also the chain code governments. And as the process out to coming it to the end. After the commit commit broadcast is sent to the stand as one nearly the end of the lifecycle to organizations. And if the kind of commit is is confirmed by the majority than the transaction will be committed. And this is the, the full, the full parameter set is also shown in this code base example, which has a lot of parameters to specify. Finally, as the transaction is committed. The finalization of chain code is now is now okay to do. So we will in about so the client will invoke the chain code, and then to finish the entire lifecycle of the chain code management. And this is all the workflow on fabric Python SDK. And what we are trying to add to the decentralized governance. And to explain what we are doing here in the SDK layer. I've also just want to provide a few examples from the, from the fundamental layer of polar bath. It defines all the communication interfaces, including the parameters and the encodings of, of the communications of fabric Python SDK. We based on these previous settings and we designed a way to to in Python to adopt these, adopt these messaging protocols, and to adopt, adopt async await mechanism to make sure this can happen in a in a massively, massively developing cluster of knots. And this is maybe some of the very exciting moments of the of the entire design because this because the developing the development of a blockchain system is something maybe new to me and I have to learn a lot of a lot of knowledge about the learning at the design and development of a decentralized system, especially a blockchain. And I think probably besides the testing and developing and the other things that going to an end a full full test coverage and a full test pass and maybe one of the very exciting moments to let us see that we finally, we finally just supported thoroughly in the way that in the way that our users may have may need may be happy to see that all the functionalities, they can use. This is maybe some of the passing on the test. Well, it may be just a small things in the entire development, but I think it's something that really worth sharing about. So I put in here. Well, of course, there is also, as we are going dive deep into the systems. We can also see some improvement spaces for the, for the future work, for example, we may add more chunk of examples since we have rather since the SDK is a very users, very open to developer business. So maybe more examples and more detailed documentations will be better to advocate for this project. And also, the fabric, the fabric system is changing and its ecosystem is growing. So a better track and support for latest features may be a very major demand for the SDK development. And here is the project outcome and results. We deliver all the code based changes to the hyper lecture, a repel, and we also updated the following documents in the hyper lecture wiki and for more project information you may feel free to look into the wiki dot org to see what his project is about. Okay, so coming to the end, I would like to talk about the insights gained and all the takeaways from this project. The first thing that comes to mind might be the communication because in an open source project. You communicate on like any other school coursework or any other like internships at industrial companies, because everyone it may be located around the world and of different cultural and engineering background. And so it is important for me to manage the feedbacks deliveries and expectations. For example, I'm maybe I'm not an expert at the at the development of blockchain system at the beginning. But as we make the feedbacks and the small milestone deliveries to my mentors, I can gain more understanding to it and they will try to leverage the complexity of the expectations, and also just try to help me through it, and to finally reach the target state we would like. Also the programming skills, as I show the code base as picture photos and the previous slides. There is actually, there is actually a lot a lot of time that is not focused, probably from the code I write, but also the code I read, for example, in reference of the SDK or other like programming languages fabric SDK, or I may look at the implementation of other systems, for example like tornado or maybe flask or other system that have thoroughly adopted the icing a weight or other web application application code base that get me a lot of inspirations and also get me familiar, more familiar with the project. And key takeaway from this project. The first one is definitely documentation. Yes. Since we are writing SDK so we will try to let others understand how to use it. And what are some, for example pitfalls or something that may seem confusing and can can be more explicitly exposed. So documentation is important. It's not, and it's not only about for the external users is also about keeping in mind with our collaborators on how the on how the project is currently doing, and how can be further extend our work to the next level. And the paradigm of open source workflow really intrigues me, because everyone here is loving their loving their project the project they do they communicate together, and also everyone is an advocate for their own achievements and also the advocate of the use of the project or the entire system or workflow inside it. Everyone is gaining influence and also have a happy time, collaborating as a member of the community, and that is very different from maybe just a cost work or some in an industrial internships, and that's what I like about. And thank you all for listening to this presentation. And thank you everyone thank my mentors for supporting. And if there's any questions please feel free and maybe answer that. Thank you so much for the positive for the presentation very detailed and I love your feedback, your reflection as well. I feel like you learn a lot, and I have to say, you know a lot of people contribute to open source project not necessarily it's, you know, part of their job of being in the community and collaborating with a lot of other people who are, you know, interested in the same sort of technology or the space and just that sort of culture and, you know, doing your best and getting other feedback. And it's, it's really just that that as those of, you know, working with others I think that's what really intrigues a lot of people and keeps a lot of people in the community as well. I do see your mentor, Dex, you're here, you have anything to add. Yeah. Hey, yeah. It was nice working with Kevin. And so we added the chain code life cycle measurements and also wondering to update the wallet modular to measure the identity, maybe later. So it was a nice feature to add and so I'm glad Kevin learned a lot about blockchains and I will stay in the community and maybe we can improve other features that will be found. Yeah, there's always plenty of work to be done in the community. So yes, please stick around. We would love to see your continued contribution.