Devreal

Rethink Trust 2018: Arnaud Le Hors, Workshop 1 -- Hyperledger Fabric

Rethink Trust 2018: Arnaud Le Hors, Workshop 1 -- Hyperledger Fabric

Recording: Rethink Trust 2018: Arnaud Le Hors, Workshop 1 -- Hyperledger Fabric

some of which have nothing to do with the form that's contaminated right just because they don't know where they come from so the idea is well if we tagged the chicken of the form with an ID on it we can record that and then we would know actually which you can come from and then there's an IOT component to this because you can have a temperature sensor and the tags and so throughout the process you can measure the temperature and ensure that the the the cold chain is actually preserved throughout the process so that's pretty fun - sure please hold up I apologize good sorry good what was the question I actually don't exactly know the details of the the network and I think it's not in production yet so there was a concept like I said with Walmart and there was actually in University in China that got involved in this thought it was really small and then they've expanded this to a much bigger group that involves other players I don't know the status of this and what topology they have decided to have there was another project it was kind of fun that was early on done by IBM and it was a kind of like eat your own dog food type of project was like well we are you know advertising all this good stuff that can happen with blockchain can we actually make use of it ourselves so in IBM we have this Global Financing services department that basically deals with finances related to both actually customers and suppliers and and we have a lot of money at stake that is involved in this market we actually lend money to customers so if you want to buy a huge machine but you're not the money we can have a deal and so there is an execution of a contract again and like you know you have terms and we're at certain time you're going to have to pay certain amount of money and that kind of stuff and then every now and then there is a dispute and payment doesn't get in or something and so we have a dispute resolution process and again this is very much what I was talking about earlier people have different Ledger's different notes and now we have to comparing notes figure out would break down where the breakdown was and so we actually used fabric to set up a system so we could actually use shared ledger and the the the dispute resolution time was reduced by 75% so what you have to understand it's like you know there's actual money that is frozen every time there is a there is a conflict and dispute and during the whole time of the resolution of the dispute that money is frozen this is a huge waste and so we're able to freeze to free a lot of that capital that was frozen much more rapidly okay let's move on there is another one this one has been in the news you may have heard of it so we did another project with masks and there's actually now a joint venture between IBM and Maersk and so this what's interesting is so Maersk is this Danish company you probably know that in Europe no usually people are well way of that but especially here Denmark is not far so this Danish company is like they are the world leader in shipping containers around the world and of course it's pretty obvious that they have the burden of figuring out where their containers are and where they need to be right what is not so well known is the paperwork that is involved in shipping a container from one place to another in the world and in fact this is the most expensive part of the process and so they did a study where they realized that you know it can take up to like 35 signatures and stamping kind of stuff to ship one container from one place to another and this involves many different agencies so we're not talking about like just the shipping company it's like you know there's the harbor or authorities there is customs there is insurance companies involved tax authorities so all these different people have to ever say and they have to do some process at one point or another and in fact when you think about it there's this today it's done with papers so there's a pile of papers that is followed in and in fact not with the container right so does its own route which parallels pretty much the actual container and so this is a very expensive process and it's prone to many fraud because it's paper-based so people tend to do copy copy paste of documents so that they can ship other containers with different content in it and go through customs and that kind of stuff right so the idea again is a bit the same is like well what if we add all this information on a shared ledger so now instead of having actual papers flying around and being sent around we can actually have a shared ledger where all information installed and so every time there's a step in the process one actor or another has to act on it they can just go to the chain and basically sign or do whatever they need to do right what's really interesting is the authorities love this stuff because now we have complete transparency audit ability of what's happening right so actually everybody gains from this because except for the fraud errs I guess but that's okay because we gain a lot in a reduction of friction and so it cost less money and zero so that's pretty exciting so that is the end of my like use cases I want to give because I think they really show the kind of value that you can get from this kind of system so now I'm not going to get too much into this for the sake of those where the keynote earlier and don't want care to hear the same thing what I just want to say yeah good question for the particular project they could what open data yes so I'm not familiar with the problem you talked about I have turned it but I mean in general you know this is actually an important aspect is there those problems can be solved in many other different ways and and it always has to do with well can you trust one entity or another to hold the information and that they won't alter it you know screw with it and so what this gives us you know distributed databases have been around for a long time and some of them are extremely efficient much better much more than what we can do with blockchain and and so the question is always like well why should I use this I can just have a database somewhere and you put a REST API you access it and with the right access control the problem is like well who owns the database who has admin access to the database they can go change the record any time typically you don't have an entity that can hold this and so that's when if you can't name an entity that everybody in the network feel comfortable to trust entirely with the with the sort of truth then blockchain is about you that's really what it's about so there is you know I know there's been a lot of effort along the I mean over the years in different part of the world to do this kind of stuff at the local level the problem is it always breaks down because as soon as you expand well somebody says well why should I trust this government or this agency right okay so quickly again you know IBM has a long history with open source when we started embarking in in blockchain especially because it's a network kind of software it's not a one player game that's another important aspect I should highlight you know people come and say oh I want to do this blockchain system doing blockchain on your own does that make sense because again it's like well what are you going to do is you might as well you know if you have one node appear the network is very limited and then you have an overhead that doesn't make any sense and so and it does make it a bit more challenging to put in place and so it's not a one player game and so we figured well it's gonna be hard to get everybody to add up the same system especially if it's a proprietary solution I mean we are used to sell proprietary software all the time you know you want to try and sell db2 to somebody you just have to convince one customer now if you want to try to sell the IBM blockchain platform you don't have to convince one customer you have to consider to convince their whole network that's a much higher higher barrier right so long story short we figured this has to be open source based so that there is no vendor lock-in there is no barrier it's a bit like what I was saying with the XML parser way back then where it's just simple you could just grab it use it okay so we said we're not going to do this alone we worked with the Linux Foundation we started hyper ledger you've heard about Chris saying the Linux Foundation I'll hide a little bit what he was saying so that you know it's kind of interesting the way I described so the Linux Foundation started as the host of the Linux operating system and promoting the the Linux operating system and every time they have morphed into what I call a meta consortium so there's actually a very high overhead to creating a consortium from scratch you have to figure out the bylaws then hire staff infrastructure the the communication people all this stuff right and basically now you have an alternative you can go to the Linux Foundation and say hey I want to create a consortium can you do that for me and they have like basically invented the consortium as a service you click a button and they basically do consortium boom and so technically it's called the collaborative project it sausage by the Linux Foundation but they have many of them we were familiar with them and so we started this project with them I'm not going to go over this too much the key part is hyper ledger is about open source and so it's I want to insist on this and those who've heard it from Chris well that should sound familiar there is a lot of confusion because people think hyper ledger is IBM so it's not and then people think hyper ledger is a software it's not hyper ledger is an organization every now and then I talk to people and say hey we use hyper ledger and I'm like how do you use a consortium and so hyper ledger is an organization within the organization we actually have several projects being developed in parallel the whole have so we actually have today that's the second line there with the different boxes five different frameworks there are all you know different variations of the same idea of creating a framework for blockchain for business so fabric I'll talk more about it this was initially started with IBM but there is a lot of more people now involved and then the Sawtooth which was contributed by Intel with that very interesting characteristic of proof of elapsed time so the whole idea I can give you a little bit more technical detail so in Bitcoin Andy theorem there's proof of work right so it's done by giving you a cryptography in crypto graphic challenge that's very CPU incent intensive and this is why it consumes so much energy and as the system grows more and more transactions flow you'd use more and more power what is the goal of proof of work proof of work the sole goal is to ensure that it takes time to validate transaction and the reason of this is because if it didn't take time virtually no time to revalidate transaction you could rewrite history at any point in time you would just say hey I'm going three blocks back I changed that transaction in the block I need to react this turn this block and then I react all the other blocks behind very quickly boom I'm back and I have a new history and because there is in blockchain in the Bitcoin Andy theorem they are forking there is no finality right so it's a peer-to-peer transaction flow through the network they arrive at all the nodes in different orders the consensus process gets into kicks in to define an order the transaction I put in a block in a certain order and there's this race forecasting the new block validating it and then say hi of the new block but that happens in parallel in different part of the network so at that point your transaction has been input in a block and you might think oh it's valid that's it well not quite right because other part of the network has validated or a new another block or civil of them and so the way the system functions is to deal with this is if gossips all broadcast all the different blocks in the network and the role is well if you ever receive a block that's on a branch longer than the branch you're holding you need to switch to the longer branch and that way we kind of converge so it diverges converges back all the time the problem is if you were on your transaction is on the block that happened to be on the shoulder branch well but tough luck your transaction is basically abandoned reversed and so from a business point of view it's kind of painful and in practice so the rule of thumb for Bitcoin is you should wait at least three blocks so the idea is well and this is there is no there's no guarantee right they know that you know from experience usually after three blocks it's pretty stable however every now and then they have problems like they have had a few times when they do they do an upgrade of the software and there was a point where everything started diverging because the vergence wasn't happening anymore and so they had many blocks that were just dropped on the floor and there to kind of stop the prayer say oh fix the patch you know we and so people were really scared about the the robox the wait ten blocks so it takes ten minutes per block ten times the hundred minutes before you say okay now I think we're pretty good with that transaction should stay and so again this whole process has to do with this notion that proof of work makes text Utah and text time and so if you want it to rewrite the blocks now it will take you ten minutes per block to rewrite and as you do that the rest of the network keeps going there are new blocks being added which makes it basically impossible to catch up and claim that now you have built a longer branch and knew all the truth right that's what proof of work is all about now what the Intel guy said is like hey since what this is really funny all about is to make use wait spend time can is there another way that would be not energy you know that would be more energy efficient that would allow us to achieve the same result and so they came up with this mechanism proof of elapsed time where essentially they are relying on a secure and clave so they have a cheap SDX that does that basically you you go to the hardware and you say give me some time to wait it gives you a period of time to wait and there's a timestamp with a certificate and then you wait so that doesn't cost anything and then had the once the time you've been given is is up you can go back to the hardware and say hey I have waited here's the timestamp that's the amount of time you told me to wait I've done it and you get to win the challenge right so now you get basically the end of the proof of work step and everything else can function the same way the big difference you have not consumed any energy so that's a really cool feature and the way they build the system is to be honest so it the only implementation today is on the intel hardware but there is a there an API and you could put the hardware part to other types hardware okay that's long story but I'd find that really interesting technically so I want to tell it you know that and then there is other projects Iroha is a smaller project from Japanese company what's interesting at the the blockchain framework actually from an architectural point of view is based on the older version of fabric but fabric is written in go they thought that this would be an impediment to attracting a lot of contributors so they decided to have a C++ based framework and then their interest is really in mobile payments so they have a lot of libraries and tools around mobile payments and then this hyper ledger borrow there's an e theorem virtual machine and then I pro laser in D is a whole new beast which has to do with salsa banality identity and you know I don't have time to talk about this I find this actually fascinating if you haven't read about self sovereign identity I really encourage you to go to the sovereign org and to be full disclosure iBM is a member so maybe we're biased but I find that really fascinating it's like putting the citizen in control of its data okay so and then we have so these are different frameworks and then we have another layer of tools that are meant at least conceptually to be independent of the different frameworks quilt is an implementation of protocol into your ledger that has to do with it it supports atomic payments well between different payment systems whether they are cryptocurrency or not traditional ones as well composer actually was contributed by IBM it provides a high level of abstraction and fabric I'll tell you a bit more about that letter Explorer just kind of like it's a tool to in your browser you can actually see the the blockchain and you can kind of browse the chain and see the blocks and get into it of course you have to have the right access but you know and then hyper laser cello is a tool that helps you deploy in their network so and we'll get into the the hyper edge of fabric architecture it's quite a complex system right they're different many different bits and pieces and so deploying a network is not so easy and so cello helps do that it actually uses NC both for those who are familiar with cloud technology to help you deploy with a very simple you basically have a profile that you describe the topology of the network you want and you push a button and pretty much it deploys it in the cloud and it's opposed different clouds you know you can do that with the Amazon Cloud or others the IBM want to and there's caliper is a is a framework for doing test performances of blotching frameworks and so the actually the support to the fabric and so to but their goal is even bigger than hyper laser they intend to support a theme for instance so they try to be as general as possible okay let's move on am i doing time Oh time flies okay I'm going to skip this oops wait I do want to highlight that aside from all the open source work we also have a bunch of working groups these are not focusing on code and there was the noise I don't know and so there are different groups and what's interesting is you have to know that you don't have to be a member to become to take part in any of these activities obviously open source is open source you feel free to join but they're also working groups so there is a working group for instance on performance and scalability because there is no standard benchmarks for how do you measure scalability and performance of a blockchain so there's a group that focuses on defining this and it's the outcome of this working group that is being implemented in caliper all right but there is a group that focuses on identity there's a group that's focusing architecture the goal of which is to really define a reference architecture so as you so we have all these different frameworks right and we we have as Chris was mentioning we have this hackfest there's one going on this week here and at this access we we talked a lot among the developers and designers architects of the different groups and we try to learn from each other about the technical choices that have been made and the things that's pretty obvious is you know even having a common language is not so easy you know you hear references to consensus well consensus for instance in fabric is quite different than consensus you know the system so what does it mean and so essentially the architecture working group what it's doing is there are architects from the different groups involved in the in this working group and they look at all the different architectures and they try to generalize it to define it in a way where we can say oh eventually we should end up with a you know a reference architecture that gives us a general overview of what constitute a block chain framework what all the different pieces and then how all the different ones that we actually have in our ledger and maybe later others can map to this reference architecture so you can say there is an identity you know membership server sorry membership services this is what it does and so they are being pretty humble and I think they made a right choice in they're not trying to issue one big document that this tells you everything instead they are doing it piecemeal so they focus on different aspects so there is already two papers that have been produced and and they will keep going so there is one on consensus and there is one on smart contracts so you can look up on hyper ledger you'll find the links and you can read what they think consensus means and how it's done in the different frameworks okay there are also groups that are more Industry specific there it's more like people trying to get their head around this problem of blockchain and figure how can you leverage it in your industry the letter that we started with one in health care and there's one for public sector okay let's move on I do want to mention something as developers who is a developer here thank welcome so you might be interested in actually developing some code that is related to any of this thing and hyper ledger so we have these different projects there's a process to create a project within hyper ledger the technical steering committee is responsible for deciding what is worth creating as a hyper ledger project and there's a whole it's a fairly I mean it's not huge but it's a relatively heavy process and so what we found is there were a couple of projects that came to the technical string community say hey we'd like to create a project when we looked was like okay but who is interested in this it was not completely obvious they seemed to have some interesting idea and we didn't want to shut the door completely so we said okay we need to find a way to allow these projects to start and yet with that the full endorsement of the hyper ledger organization so we created this notion of hyper ledger labs and essentially it's a super simple process I'm one of those two words that actually manages you basically you do a pull request with one file it's kind of a readme in markdown there's a template you fill out the template you say this is what my lab is about I want to work on this and you have to there's a little bit of a barrier we didn't want to have too much spam so you need to have endorsement by one of the hyper ledger maintainer of any of the projects but it's pretty easy to go this just means you have to convince at least one person that this is a good idea and then you put their name in the template and you submit this as a pull request on the github repo and I guarantee you we're not trying to basically if you fall within the right category of sale of software you're free to go there are two advantages to this the first one is gives you project a lot more visibility rather than doing it of course you can have your own github repo feel free to do that but you know you may not be found here you're going to be listed on the hyper ledger github and so you have much greater visibility and you can attract other people and you do get you know like a rocket chat channel and an amazing list there are a couple of things you get and the other part is you get a legal framework you may know that you know one of the issues we have when projects come to a hyper ledger and it's true for any similar organization people would come with code and they say hey I have this piece of code I've been you know developing with buddies people interested and we'd like to contribute it and we say well hyper ledger one condition we have across the board is it has to be made available on the apache software license and so to do that you need to make sure that all the people who actually contribute to the code to date agree to make that change if it's not already and so they all need to sign on and so there's this DCO aspect we have to deal with and so the advantage is if you start with in lab you have resolved this problem so later on if you lab is successful and gain momentum you can actually possibly transfer to an actual hyper ledger project this issue is gone because it's been addressed upfront so take keep that in mind okay and we're going to spend too much time on this just to say hey hyper ledgers big family is growing every every month it's I told you hyper ledger has all these different projects some of which are pretty well popular you know like no GS and Cloud Foundry and stuff like this but in comparison you know the hyper leader Dwarfs any of those hyper ledger has more momentum than any of this so it's real the other part that's interesting is when you look at the membership I'm a technical guy I'm involved in many organizations like Oasis Oasis the earth we see and the people we usually work with there are vendors like us IT vendors like IBM its Microsoft Oracle the likes here what's interesting is you find a lot of people who are not IT vendors they are actually more on the user end and they're just trying to in you know understand what this is but they have figured out there is something important here and we want to support the effort so this is just to say we have all sorts of activities around hyper laser so I'm actually technically I'm a hyper laser technical ambassador and I do all of meetups and this kind of presentation I speak on behalf of the organization so there is plenty of opportunity for us for you to get connected with the community if you want and again like the hackfest we have this week at ABN AMRO it's entirely free anybody can join you just have to sign up okay so there's a very low barrier to entry you just have to come there is plenty of help online and so feel free to join and don't let anything stop you so that completes my first part on hyper laser in general the background and now we can switch to more technical stuff on hyper edge of fabric itself should we have a pause no we can't keep going you're good all right so fabric as I say it so it's one of the frameworks so we have in hyper laser defined so I just talked about labs and the creation of projects when they start projects are incubation mode and we have a life cycle and for projects and so one of the criteria to become active project is to all right so there's a set of criteria that you need to fulfill to qualify to become an active project and fabric started mostly I mean it as we said before it's code from IBM initially so essentially here's what really happened right we are developers internally working on this code and then one day we say hey guys we're going to make it open source and so I said okay what does it really mean and actually I did a survey none of them had prior experience in open source they all used open source of course who doesn't it's impossible to be developer today without using any kind of open source in one way or another but they never participated in development of an open source project and so there's a big shift that needs to happen there's the simple stuff is hey we just moved all the code and chris fury said it's like yep you put all the code on github and then you tell everybody get a get up ID if you don't already have one this is where you work now like okay that's pretty simple but that's not open source right open source especially in the case of hyper ledger we very much insist on this I say we because this organization we're all in line on this we wanted an open governance where projects are not under the governance of a single organization like IBM in case of fabric and so to graduate from incubation to active status one of the key criteria is have you managed to have a community around it so as I said initially we started all the contributors where IBM errs by definition that was a code that was their developers and what's good about this is that in a matter of a year we actually managed to move to active status and we released that when we released the first version fabric 1-0 there was actually a couple of versions before that called zero five zero one zero five word under the umbrella of hyper ledger and then we realized already that the architecture was limiting us so we had a huge rewrite and we worked towards releasing fabric 1-0 and by the time we released 1-0 we had managed to attract many other contributors from many different organizations so you find people like you know from Fujitsu and and DTC and other Cisco and others that actually participating contributing to this now there is Oracle join hyper ledger the well it helped they hired one of our engineers but he is one of the contributors and so there are more and more companies actually involved in the development we released earlier version 1.1 in march and we are in the process of releasing 1.2 and I'll get more into the details of what's behind it so the RC stands for release candidate so this process will basically freeze everything we say okay let's pretend this is going to be the release and test it out and so we highly you know advertise it tell people hey please start hammering this thing let's see if it actually works if there is something really breaks we'll fix it otherwise we'll just relabeled it as one two and we're done and so okay and we'll get more into what's behind it so let's talk about hyper ledger fabric what are the characteristics so of course you know there's this permissioned aspect that I talked about earlier from the early days we said no we need to be able to have this permission network where people have complete privacy there is a set of business partners that work together they want to share Leger among themselves and they don't want the rest of the world to see what's going on we also figured it has to be highly modular part of this is actually to motivation to this one of which is well it's still so early there's still so many moving parts there's still plenty of you know things that we need to innovate and improve on we need to make the architecture flexible enough modular enough that we can change some parts without breaking everything every time and then the other part is well we have a longest story again with enterprises and we know that we you know the one-size-fits-all solution never happens never works we always end up with a customer say yeah I want that but I want something a bit different can you do this right and so the only way to answer to all these requests is to make the system very flexible and modular so you can actually you know what you need to the customers desires in terms of smart contracts so you probably familiar with like he theorem they have so there is an issue of trust and security aspect to executing code that basically governs the the the validity of the transactions on the on the network right and so in the case of idiom they made a choice to try to limit what you can do with your smart contract and this is done by relying on the ether of a theorem virtual machine so there are different languages but the most common one popular one is solidity and basically it gives you a limited set of instructions and the idea is well if we limit what you can do we can have a safer environment well DL shows that there's a limit to that model and so they are the biggest security issue right and then and so in the case in our case we made a different choice we said no we're not going to do this when I am to start writing your own language for smart contract we're going to allow users to use whatever language they want and so we had this design goal of allowing small contracts to be written in general purposes language in practice fabric is returning go don't ask me why is just this story called the first guy started working on it were excited with God that he went with go and since then we all do go it's just as good as anything else anyway as far as I'm concerned I'm pretty fine with it but so go is is one of the smart thing which that's naturally you can use but we also support other languages primarily JavaScript nowadays but also Java and this regime layer so you could use different languages then when it comes to the consensus pot this is a whole area this is a research field right there right there's lots of researchers out there trying to figure out new algorithm on how to get different parties to agree and on the order of transactions and so we said well why try to nail down and decide what what is the right way make that pluggable so that we can over time change that if need be and then again of course we wanted to have privacy and you'll see that the evolutions we are have mostly a to do with a privacy aspect we started with certain assumption and realized it was not good enough and we keep adding more and more privacy and then you know it's important to realize we're not into the crypto and the mining stuff and what we actually find when we talk to customers a lot of people have done experiments with e theorem because one of the big advantage of a theorem is that it's there the network is there it's running and you can stop playing with it on your own you don't have this challenge that I was referring to earlier where you need to have a set of players that start working together before you can get going in fact the customers who do that they like oh yeah the whole talkin gas stuff this is more of a distraction we don't want that right so we just don't have it and then I'll get more into that aspect but we actually this was the big difference between fabric zero point and fabric one point something is the consensus process overall we have changed the system we broke down the consensus process into different component different parts and so what's typically done in these systems like he theorem and Bitcoin which is order execute and then that's why they don't have finality because you have this Forks that need to converge we figured that's not good so we wanted to a finality so that when your transaction is validated there is no rollback we change to a model which we call execute order validate and I'll get more into the details of what that means so as I said we wanted the system to be highly modular and configurable that comes into play in different aspects that I will get into but primarily there is this part of ordering services so this is really where these consensus algorithm come into play so made that pluggable it's a permission network so you have to control access the identity of the participants so guess what all your business organization they already have identity system they have an LDAP server or something better or different but the last thing they want to hear is oh we have a new system and you need to create new ideas all over the map for your employees to use it so what we figured is well we need to make the system pluggable so we can actually plug with a legacy system so you have this is what we refer to as bring your own identity so you can you know it integrates with existing system there is a optional peer-to-peer gossip service I for me it's probably better to ignore that for now because it really is the way we are moving now there are new features that make that non optional if you want to use it so it's a bit irrelevant the ledger itself yeah so I'll get into the architecture and show you what that really means but so at the end of the day there's a daily base and earn III the ledger you have data that you need to store somewhere and so we made that pluggable as well so by default we use level DB because that's that comes for free as part of go so we using this but we made a pluggable so you can use different systems as well and then the other the final part of this plug ability stuff is their endorsement and validation so again think of bitcoin Andy theorem anybody can take part in the validation process in business cases usually that's not what you want so first of all it's a very expensive process because the more validators you have the harder it becomes to actually agree to come to consensus on what the order is so it's a it's an impediment to transaction to performance and then in practice often tied to regulations certain players in the network need to endorse the transaction need to say yes that's a valid transaction so what we did is we made the system flexible so you can actually define who for the transaction in your application have to come into play and decide you know say yes this is valid transaction so let me get into the architecture and give you a little bit more of a sense of what's at play when you submit a transaction and what's in this like you know the the whole process flow so at the top so of course this is kind of like a fraction of the network but this is the it has all the different pieces that matter at the top you have the membership services this is the part that actually deals with the identity in practice you know it's where like you get certificates so the application which is unless typically through an SDK or another we have different ones will connect to the membership services to get the keys it'll enroll and get an enrollment certificate and this is what will allow it to interact with the network transactions first submitted as proposals so in the system will go again to the endorsement aspect but so basically you need to have a transaction to want to submit the system the first step is to get it endorsed so there is some policy in the system that says you to have that kind of endorsement to for your transaction to be valid accepted as valid and the validation as to aspect the first one is well does it actually have all the data that's needed for that transaction to make sense and then is it the at this point in time in the execution of the process flow for the application does it make sense right so when you submit this to appear that role plays the role of endorser this is where we execute the chain code this is actually a simulation of what would happen if the transaction were to be accepted what comes out of it is a readwrite set right so it actually says what we change and it is signed assuming you know that's the chain could actually succeeds and say yep that makes sense I validate the endorser will sign the transaction send it back to the application with the endorsed the application will collect the endorsement again too much to meet the the requirement for the application based on the policy once it has satisfied the policy he will then submit it to what we call the ordering service it's important to realize that both the membership services doesn't have to be a single actual server right it's not like a centralized service it's it can be a cluster of things the ordering service is the same it's cluster of nodes that the sole function of which is to agree on the order for the system so the ordering service receives transactions from the network from different applications that are on the network and then it actually says okay I'm gonna use this is the order of the transaction is going to cast a new block and once it has cast a new block it will broadcast it to the network and say this is a new block now all the peers receive the block and they have to commit it there is a low catch there there is a validation process because is to deal with the what's called the double spend issue so it's peer-to-peer network at the endorsement phase each transaction is evaluated independently from one another and what may be declared valid individually may still conflict other transactions so the double span example is I have a dollar I submit a transaction I say I'm giving it to Joe they look and they say yeah that the larger exists we have all the information yeah it's valid then I submit another transaction possibly in another part of the network to and get an under endorsement and say hey I'm eating my dollar to Bob both and get endorsed I send all of that to the end to the order the order is going to say he doesn't actually look at what's in the transaction it just orders them right and is going to decide whether the transaction with for Joe is first of the transaction with Bob and he's going to cast the block and send it to the network so when the peer receives it is actually going to do a check and it's a quick check because this will the readwrite set comes into play all it has to do is check that the condition under which the transaction was endorsed still applies if anything has changed going to say sorry that transaction is invalid the block it cannot change it so it's Greg there's a piece of metadata associated with the block it will be in the market as invalid and then you're going to commit that to the to the ledger and it actually there's an event mechanism so that you can subscribe to appear to be informed because you also want to know what's happening in the rest of the network so it's not just your transaction you want to also know what's happening what's being submitted by others so the event part is what gets people up today any questions on that that's really the core of how fabric works okay good okay so let's now look a little bit more into these different pieces when it comes to the nodes I already mentioned so in fact you know it's kind of so there's an interesting part that you need to understand there are three different functions I already talked about the endorsers and I talked about the ordering notes there's also the committers these are the this is the function of the peers that actually maintain the ledger and put didn't block the new block on the chain and keep the copy of the ledger for that organization in practice as you see on the first on the previous slide you see that the peer there it actually has both endorser a committer as this is an implementation choice we have put these two functions together in the same same process but it's a design choice you could imagine doing it in different ways what's important is they're at the logical level there are there are three different functions committing or endorsing an order okay so the ordering service is central to the system this is how you get started when you want to set up a network you set up an ordering and there are different ways so you can see here I was mentioning it's not just one node it's it's a cluster in practice there are different options only the first two are available today so this is what we call the solo order it actually is the case where there is actually only one node and this is really not for production it's for development purposes because you'll see that you stopped developing there's a lot of pieces that play and the last thing you want to do is I have too many things at play from the get-go so to make it simpler we have a solo order just of one node it's all the you know it receives all the transaction takes them in is the order it receives it cuts the block pretty easy there is no real consensus ordering process going on but it makes it easy for development purposes for production we have an ordering service based on Kafka it's a massage bus system so they agree on the order on the order and so this is crash fault-tolerant right it is not Byzantine fault around so if you're familiar with blood change you know all these things so Byzantine filter and has to do with you know dealing with potentially bad players right so but the system again is made so that we can plug in other types and so the goal is to also have Byzantine falter and type of process available and there's work underway to make that actually variable so you first start creating your ordering service then there is the notion of channel so this is where we start going down in that route that I was saying privacy we are adding more and more so when we started fabric in the version zero four zero six zero five we started with the assumption well permission network just means we are going to create an instance and control who has access to it and we're done right but as soon as we started talking to customers and go through the actual exercise of seeing how we're going to address their issue their use cases we realized well that's not actually good enough because even within network there are people who don't want to share everything with everybody on the network so they are kind of like subgroups within the network so we created this notion of channels which technically are different chains and we had actually discussion on how we should call them and whether they should just be called chains but we figured you know from a user point of view people are familiar with the notion of channels a bit like slack channels you subscribe to the channel and then you see everything on the channel if you're not on a channel you have no idea what's going on so it's the same concept right and so we created this notion of channels and any organization can a new control access who has access to each channel and so you can divide the network in subgroups there can be an overlap of course an organization can be on different channels right and we try to make the system super light in terms of you know what the the would the cost associated with channel is and they were test done that actually is very light process it's very cheap to create a channel so this is the what looks like a network with a single channel that's the simple case where you just create one channel or you can and everybody's on the same channel so this is an example where you have different endorsers and the order in the middle and you have to create you create the channel it's important to know that you can have several chain codes right so smart contracts not limited to one and so we actually I forget if the slide on this or not but there's two steps to using it smart contracts large chain code so and it has to do with this notion of making it light too to have a channel a channel so chain code in fabric he's ran as I was saying earlier we made the choice of allowing people to use you know fully featured programming languages like go or Java but we're also concerned with the the security aspect so to make it execution of the chain code secure in practice what's happening is the chain code is not run in the pier itself it actually runs in a separate container which is spawned off by the pier and so it actually isolate the execution of the chain code and the only thing the chain code can do is communicate with the pier through a very you know small API to access the ledger and do things right and so there are two steps are you first install the chain code where you want and again you don't have to install it everywhere because not everybody endorses it's only where there are peers that actually endorse transaction that you need to install the chain code and then you instantiate the chain code is an association of the chain with a particular channel and you can have as many you know you can have multiple chain code and multiple channels and they can be you know connected in whichever way you want so but this is what the single channel network topology looks like and this is what a multiple channel network I think it's pretty obvious again what's key is to think about this notion that you know there's this so you can all combination is you want and the chain code the it only needs to be installed once and can be run on multiple channels the instantiation is pretty well there's I thought I had a slide on this so the once you have installed the and the installation is a fairly heavy process because what happens is you actually you upload the the source code into the peer and the peer will actually compile it and create this container to execute this all so that everybody sees the code and no and you know the arguments that can be made that we could optimize that and maybe have a container image that is been signed and agreed upon so you can but you know and really you don't spend your time doing this every now and then you install chain code or your upgrade your chain code it's not an operation that you do very frequently so the cost of it is not huge it does have an actual practical in effect as you developer it you have to time things a bit because when you start doing things the first transaction you do the instantiation it actually goes through the whole process compiling and doing this whole thing and it's kind of time consuming and so if you go to the next step it often fails because the system is not quite set up yet so you have to kind of give it time to catch up but anyway maybe we will see that if we get in the demo alright let's get into the endorsement policies so as I said right we have this important step and dossing transaction this is what says this is what valid so we have a system that allows you at the application level to define who for your application has to endorse and I'm not going to get into the detail of this so there there's this notion I want to point out one thing because that I know I took me a while because it's not well documented there's this notion of system chain code so I just explained what happens with chain code right gets pawned off into a separate container you'll see reference to system chain code and you're like what's up with the system chain code how is that system what is what is difference the difference is actually that they do not run in separate containers they run into the pier and so they are actually limited in their function and they are used primarily to do two things the actual collection of I mean the signature of the transactions when the chain code is run and the collection of endorsement at the application level to make sure that you have the right endorsement and then there is the validation part which is the second part I was talking about after the ordering where we check that the conditions for the transaction are still valid right so this is the V SEC and so I'll give you an example because this is much easier to understand example sometimes speak much louder than actual documentation right you need the Roper knows that you go to the examples first you like okay that's the seconds myself and so we have a very simple policy language with two operators and atolls and essentially what it allows you to do is say things like ok for a transaction to be valid it has to be endorsed by say you know one member of the three different organizations I have on my network and so we have this notion of this is a smaller AR key there is notion of there's a consortium is the whole network and there's organizations the different organization at play and then within organization they can have different peers and so different members and so you can define who has to endorse the transaction and we have N and O and with that you can do pretty much a lot of things one thing we actually have changed is the possibility of actually changing this there are people when history start about policy language some people get super excited they're like oh I with all these fancy policy language I want to do how do I do this so we made that plug it ball now so you can go ahead and create your own language much more powerful if you want okay another important part is the membership services so again I said it was pluggable so what we did is we define an API that defines how the membership service providers interact with the system and there is I'm not going to get too much into the detail of this but essentially this is where you deal with certificates role mint so there is an API and in practice I don't actually know anybody was actually implemented their own so you can you have the choice to implement your own membership services provider that you know implements the API and you will be able to plug that into a fabric framework in practice there is actually a fabric CA which stands for certificate authority that's available and that's what most people use it does implement the membership service provider API and it interacts with many different legacy systems so things like you know LDAP are available and it seems like you know we keep growing this fabric CA so I don't know if anybody will ever bother implementation the MSP directly it's much easier to if you want to add your own system to start from the fabric CA and integrate at that level by adding your own back-end system then to start from the MSP so I don't know if anybody will ever do the MSP pod but it's okay so this actually is a separate component and you can function with that fabric CA but most likely in production you would have this fabric CA involved it's important to know that they they again this is distributed it's not like you have one membership service server for the whole network each organization can have its own this is how you know how you deal with your own certificate and so again the prize is to get started you would contact you your system your fabric CA and get a certificate to be enrolled right not going to get into more details please standard setup there's a two-step process you're enrolled and application level encryption so again this is another piece of privacy right so the transaction themself fabric doesn't care with this transactions are it's very low level the system is a key value pair system what the key means what the value means the complete application dependent fabric doesn't care but so we have permission network we have channels but people still maybe want to actually encrypt the data so there is actually a library so you can use to encrypt the payload of your transaction so that all this information is encrypted in the system and I'm just going to keep it at that for now so maybe we have time to go through everything one important aspect to understand is what we call the wall state database so it's a blockchain system right so this is the ledger pod that's handled by the committer part of the peer it actually is not just a blockchain because that's not very practical at an application level when you're doing chain code you want to query your data and all you don't really want to have to you know go through all the blocks every time you make query to know what the value of the key is right what is the letters value associated with the key so what we have is what we refer to as the world state the world state is made of two components there is actually so the actual chain code which we that exists there is the structure of blocks with all the transaction but there is also a database that gives you the con state the current state of things and so the way to think about it I have a very simple analogy it's like your bank statements you look at your bank statements there is a balance right and there's a set of transactions every operation so all the transactions this is what's on the blockchain and the balance is what's on the wall state obviously you know you can recalculate the balance by going from your very first statement starting from the very first operation computing all the different operations from the very beginning and you would recalculate the balance but it wouldn't be very practical if every time you wanted to know how much money you have a might account you had to do this process right so the wall state basically is like the balance in your account it holds the current status and it's more sophisticated than that because it actually has the history you can actually query the history of keys and stuff like this but essentially this is what it's about and again we made this pluggable so the live the the the again the database part that holds the world stay by default is level DB but there is an API and we can we also actually support it's like a standard option it's like when you go buy cars and the standard option always kind of feel funny but what it means is that it's it's provided by the system and there is a simple switch you say I want to use couchdb instead and so the advantage is a JSON database and then you have much greater query capabilities with the juice with the couchdb level DB is pretty rough when it comes to querying because it's just very basic database structure and and there's there are different projects to change the ledger to support MongoDB and IBM as some project to put db2 there and you know you can play with that as much as you want ok so let's move on to ok so that kind of gives you the guts of what fabric is all about now I want to get more practical ok you know you may not be wanting to contribute although you're welcome to the development of the framework itself is like ok what does it actually take to do an application so at the base level at fabric as a developer you have to worry about two different parts there is the client side and then there is the chain code part and you know one rough way to analogy for the chain code as well is to me it's a bit like database store procedures right it's what works on the back end and by the way as a side note you may remember for those who are old enough that when stored procedures got came about people went crazy with them they did asks of things and then guess what it didn't go very well because those things that a huge impact on performances and scalability of the databases and we've learned the hard way that well you shouldn't screw too much with those procedures they should be limited to very core functions and my personal take on chain code is the same don't go crazy I get questions from people say you know I'm trying to put some law so the big picture is like well the chain code implements the logic of the application but so as a developer you're going to have to make choices as to what is on the application side done by the application and what's actually on the chain code and my general my general advice is put as little as you need in the chain code you want to ensure the integrity of the data so that transaction don't you know don't make sense they did you want to make sure that the system is still in Tigger but you know the I they're people say oh you know I want to put matching codes like well if it's this client I do this if it's that client I do that I'm like man you're going the wrong way they're right you don't want to have this kind of logic it becomes way too complicated and you're putting too much into the chain code so just keep that in mind try to keep your chain code as little as possible so in practically speaking as I said I explained already the all state in the blockchain you don't actually go into dealing with the blockchain that would be too much of a pain anyway what you only deal with is the wall state and there is a very simple set of API functions you call to get data and put data and you can also delete data and delete I thought it was immutable well again if you couldn't change the data at the wall state level it would be very limiting who wouldn't be able to do much what that means is the system will actually translate those things for you into actual transactions right so you're not have to worry about what actually goes into the transaction all you do is you change values in the database and the system will deal with what it translates to and again a deal it you know it doesn't mean we actually pulled transactions out of the blocks it just means we put transaction that say ok this value is no longer there ok and well I'll get more into this later the API is extended a bit now because we are new types of transaction data but ok so you know that you're not left alone if you had to start from scratch it'd be pretty painful because there's so much that's you know involved but within IP layer itself if you look at the documentation and if we have the time I don't know because I speak too much but that's tends to be my problem you know if you have the time we'll I'll show you what that looks like but we have a tutorial called bring your first network that will allow you you basically go to the to the fabric documentation it gives you a simple comment with a curl comment that pulls a piece of script from the network that you have to trust that you execute and it will do two things you will start pulling a bunch of binaries and it will pull a bunch of docker images so everything in fabric is darker base so everything containerized and so it will pull from docker hub a bunch of images and based on the version you'll get you know different images and so this will actually launched a network for you so it will actually do different things you will start by generating a bunch of certificates because as I said it's permission so it's going to create this and then it will actually stop the network with an order then in the in the basic system is like just a solo order and then it will create two organization with two peers and it will actually instantiate the simple chain code and start running executing transaction and it's like super simple a B with a value and you can transact you know some unit into the tool and but that kind of allows you to actually see the network set up and then you can build from there rather than starting from scratch if you want to go that way you can just start from there and then you build from there you start specializing the chain code and then you you go from there there is a what we systematically used to get is the next question people would come up with is okay I start the first network I have this two organization with two PA but actually I want to add a third one I do I do it so this was an FAQ and so we finally managed to add that to the system and I actually contributed to that part where it actually shows you it's a fairly complex system because you have to actually change the configuration of the network to allow for an organization to come in and but what's interesting is we are trying to leverage as much as possible and there's some parts that don't do it yet but we are actually moving in that direction is that everything should be organized around the same consensus process so actually adding an organization finally what you're doing I mean there's a bunch of work that has to do with you know getting certificates in place and all that but at the network level what we are going to do is we're going to submit what we call a configuration update transaction that actually goes through the exact same process of endorsement and validation all this stuff to actually change the organization you know of the network itself the configuration of the network and then there is another tutorial called develop your first application it's a no GS based application there are more information on that but they are different SDKs so this one uses no J's and again if I have time starting to doubt but and you can do it on your own anyway you-you-you can actually use that to query and use no GS to query the system ok as I explained this is a fairly complex system right so in this case difficulty is lower because I mean it runs on a simple laptop I even had a much smaller laptop and it would run just fine it can be a bit slow made its it runs and it runs on different systems which support mac OS open 2 and windows with something but it works I have a Windows machine I'm actually known as the Windows guy although it's not my background but I happened to have a Windows machine and I'm one of the people who has a Windows box see they're always up see more people I'll tell you a side story my colleague Chris various all of you were at the keynote I've heard that he's like who uses Windows anyway and then when we started releasing we say ok we need to figure out who is using it what they're doing and then we found that more than half the developers who actually on the windows box and I said secrets we can't ignore this right and so in reality most of the developers nowadays they have their own Mac or on Ubuntu so this is where you'll have the easiest experience but from an application development point of view if you don't get into I want to start developing further fabric itself you don't have to worry about it because you can use docker know Jesus is there and they're good to go go is there well as well if you want to start developing it's a bit more painful because essentially you have to run into a virtual machine like we're so we supported vagrant and there's been discussion somebody wanted to drop it vagrant is a pain because you add another layer of thing to deal with which has its own pain but you know that's what it takes to develop on fabric in in on Windows but again you know as a developer you don't have to worry about that I actually ran it and wonder - I made the I made the the experiment every time we have it really is like I get this ping like oh no can you make sure it still runs on Windows so I just run the tutorials make sure it still runs and so I can tell you when the two does and and the initially it was a huge pain in the butt to install nodejs with all the bits and pieces you needed to actually be able to run the node GS SDK but this has been thankfully addressed the there is a whole section specific to Windows in the documentation and prerequisite with that I keep expanding but things are getting a bit better and so you need to do a lot of install additional install but you can get everything in it anyway the point I was gaining on was or getting to is the again the system is fairly complex and what you want to do is try to address the system in a fairly you know piecemeal fashion so we want to try to you know ignore some aspects initially typically you want to start with the chain code and then the SDK side of the as I was talking about and try to you know deal with the network aspect the exact layout labor and and like the order you want to you don't have to worry about it just use solo for now and then the whole security part is yet another level of pain that you can ignore initially you can run everything we use TLS with use also thing but you don't have to worry about that if you don't want to so and there is an important aspect the dev mode because so this is an interesting problem the chain code I told you is going to run in a separate container that is spawned off by the container peer the capir container I mean you don't have real access to this more very easily and that's kind of a pain when you bug you're trying to debug your chain code so we have a mode that's dev mode when you launch the peer you can put a flag to the peer command to say don't do that just keep it inside yes it's not secure but that's ok you're just trying to debug your code and that way you can actually start the peer in the debugger and all the code actually runs in the debugger in your peer so this is an important thing to know as I said earlier the chain code at the from the T API is actually pretty simple there's just a few functions and that's because it's also very low-level but there's an init function that gets called when the system gets started and then essentially there's one method invoke that gets called when the client submits a transaction and it actually only has one we used to have two there was invoking I think query but query became irrelevant because in the newer version in fabric one as I explained the invoke is really just a simulation your probe that's the proposal right the evaluation you exactly the proposal so querying is basically running an invoke that you never submit to the order so there is only one method called invoke and there's a whole bunch of examples that you can build from and so don't you don't have to start from scratch as I said many times now you know there's multiple point of integration flexibility modularity at the core go I mean again fabric is written in go so the basic API is are in Goa G RPC which is the go standard protocol but we also have I shouldn't say we have that we want to have a REST API and it sounds a bit awkward because it's like what you don't have a REST API nowadays this is Beverly as a REST API right well we had one before and we don't anymore but it's coming back and I can get in the detail but let's not for the sake of time then again on the chain code you have civil choices we started with gold Java and then we have JavaScript which is very popular because we end on OGS which is the most use and then people it was a bit awkward to be able to write all your application in node.js but then for the code the chain code part you have to use go or something else so now you can do all waiting in JavaScript that's what you want that's what people like and then so there is one important comment the CLI and it allows you to do a bunch of things and let's not go into the detail of this now but maybe you can get to this and you know there's a very active community and so there is plenty of documentation and you know we have mailing lists but I would strongly advise you if you have starting to use it and use facing challenges you can go to two to the mailing list or slash dot I know a bunch of things but rocket chat is your friend all the developers actually hanging out on rocket chat so rocket chat is like a slack but it's a it's open source and we host it on the hyper laser server so we are completely control it and it doesn't cost us much us being a hyper leader and and there's a whole bunch of different channels related fabric so depending where the problem is or your level and interest if it's real ledger related there is a fabric - ledger you know that kind of stuff so don't be shy just go to the to the chat and ask and is there's you know it's interesting because that's part of a sign of you know good health of the project when we started if there was one if the developer was an answering question that just weren't answered but now there's actually plenty of people who actually been using it for a while I've been through the pain of learning how to use it and they would be happy to help you as well so you're not on your own so let's step back a bit now talk about what's coming up where we are in terms of fabric releases and stuff generally speaking we didn't really at first have a very clear plan but we a few months ago we came up with an agreement within the community on how we're going to manage releases and so we agreed on a general schedule where basically every quarter would have a minor release and so it's a one dot something but it could be a major one every now and then and then in between every month we would have patch releases so patch releases that you may guess is we're not adding any features were just fixing bugs right so this is an important slide so as I mentioned earlier earlier in March we released one one and now we're in the process of releasing one two we are slightly late because technically it should come out like this Friday or right and it's already Friday it's not happening and apparently there was a bug found so we have to fix that but it's in a matter of like within a week or two from now it'll be out right so let me go a little bit to highlighting some of the features because I think that's interesting so in one one the big changes you know where we added so no GS and the chain code there was a I won't get into the channel events the finer granularity on what kind of events you get you can more control better not get spam with all the events that you don't care about couchdb is interesting because as powerful quake abilities now we actually support indexes so you can actually do that more efficiently there's there was a lot of performance improvement over one zero and and then there is what we call experimental features and so every time we publish there is like what's actually available into the images that are published and then there are things that are available if you clone the github repo and do your own build that's where if you on Windows is a bit more painful but so and so typically you see things happen first in index and we always have this challenge right so developers that work on new features the excited they want people to use it and to get a sense of whether this is going to work and it fits the bill and all that and at the same time it's not always the ready so we like oh how do we do this it's not quite cooked yet but people want to still expose it so we found this compromise we have these experimental features that are available with build time so typically they start with experimental and they first show up in experimental features and then eventually they become part of the release so in 1.2 I think you know the most important features to go quickly is the last ones they're a pluggable and/or sment so as I mentioned earlier we have this policy language so now we made that pluggable so this this system chain code that does the endorsement that you know is pluggable so you can have all the fanciness you want from the endorsement policy language you want and then there's private transaction so I need to spend a little bit more time on this because that's really important and so I explained to you the whole process flow of transactions get all sent to the order for ordering in its function the ordering service doesn't care about the payload of transaction it just receives transaction it orders it couldn't care less what's in the transactions it will verify that it's got all the right endorsement and all that but this is all around the transaction payload right it's not part of the people but technically it does have access to it and so depending on the environment you may not like that so there was a way to do that at the application level before is the standard way if you don't want to share the data they still use blockchain is you hash your data and you put the hash on the blockchain and keep the data of the chain but what we are done what we have done with private transaction is make the system handle this for you so I showed you the API you know at the wall state you have a get put delete and now you have a get private data and put private data and what that does it actually does harsh the data you're giving and it puts the hash as the payload of the transaction and then it will actually gossip the payload to the peers that you want and you control who is part of the transaction you want to be in you know I've access to the payload it will send the trend the payload of the transaction to the piece directly so all of this is handled for you you don't have to do it at the application level which is again a big game and it actually has a feature so technically speaking it's collection so you can name you can have different collections and so there's an extra parameter because you have to name in which collection you're putting your data and you can specify the policy access you know for each collection so they can be different and then you can actually set a pure time and it's the unit is blocks so you can say after ten blocks just forget the private data and then all the peers will just dump the private data of course you can also if you set it to zero then it will keep it forever okay so I had mentioned civil time this notion of adding more privacy control that's one of them so we had we had permission network then we are the channels now we had a private transaction and well show next that we are doing more before I move to one three I do want to also highlight the service discovery which i think is important it has to do with being able to recover from what's missing and so you know networks are as stable as they get and every now and then things don't go as as you would like and peers fall off the sky right and so the question is well what does it take to restart peers and stuff like this and so today there's a lot of data that actually has to be shared often out of man you have to send information about where to connect because like well where is the other organization how do I connect to them right and so what we've done essentially is we have made this much more resilient so that you don't have to rely so much on out-of-band data so system is more resilient and can figure out get the data from the network itself on how to reconnect with a part of the network so and then there is the experimental the EVM part which I mentioned earlier so we have actually integrated the Boro EVM into fabric so that you can actually run solidi contracts smart contracts onto fabric so it makes it easier to use if you have if you happen to have done some experimentation with the Ethier and you have chain code that you want to carry over you can actually do that ok one three what's coming the the most important part is definitely this zero knowledge asset transfer and it's yet another step into more privacy so one thing we have still even in the in the private transaction is you can see the identify the ID of the party that I've actually submitted the transaction with we actually leverage [Music] technology called ID mix that's something that came from IBM we have people in Zurich that are expert in privacy and cryptography that have been doing zero knowledge proof everybody knows what zero knowledge proof is it's the ability to do two to verify information with that having access to the information okay so this actually practically speaking allows us to do what we call anonymous authentication it seems to be odd but so what it means practically is for instance you can verify that the party that are submitted the transaction has some turn attribute with actually knowing everything about the identity and so practically you can do things like hey I just want to make sure that whoever sends this transaction is a member of that organization and so that would be one attribute of the the participant is the member of a given organization and you can do that without revealing the identity of the of the body and and so there is another aspect behind that which is to do with the UT X so if people are familiar with Bitcoin you know about UT EXO channels are good for certain things but they also have their limits and you know there is always trade-offs in everything so we added channels and we say hey this is cool you can segment your network the prime with channels is when you want to start moving assets from one channel to another the system doesn't really do anything for you and yet you might want to know what the provenance of these assets are so people cannot create assets from thin air and so with zero knowledge proof you can actually do that you can actually reduce the number of channels you have so that you can end all this kind of a use case better okay then when it comes to the orderer I said we today of this solo order and then we have the Kafka order that you can use in prediction as I said our goal is to eventually go to Mars back towards Byzantine fault-tolerant systems and so there is actually two problems kind of problems limitations I should say with what we have to do with the Kafka order one is that it actually has Kafka so there's an extra dependency to an external system which is fairly heavy and so there is an incentive to say well it'd be much better if we could get rid of Kafka but remove that dependency and run it internally and not of this additional layer and then the other part is you know dealing with this Byzantine aspect which is like well you know what if there is a bad and party and I should highlight on that front that you know people often say well what if the order is is being corrupted what if one Pierre starts behaving badly one thing you have to understand is we're in a permission network setting where again the parties are known so if somebody you know if there's a peer that's not really behaving badly and like you know maybe it's a denial type of service attack type of thing just floods the system with transaction that are not endures and all that kind of stuff right it could put the system well guess what unlike in Bitcoin or idiom where you don't know who it is here you can actually find who it is because this is some business partner that's running a node that's going crazy you can go and say excuse me what's going on there and either it's like a technical issue just like oops sorry we went back we fix it or they really are trying to play some game and there are other means you can go after them right so you have contract you go to court and you say this guy trying to screw with the system right so you have to keep that in mind because people tend to only focus on the technical aspects like well what happens if we well there's a limit to all of this we only want to build so far because all you know preventing all of this to an extreme as I said again like in the proof of work at is a cost right and so we'd rather you know not go too far into this to keep the system performance zero okay so back to what I was saying at the same time you know Byzantine faltering something that's pretty common and people want that so fine we're going to do this and as a first step the the so there's a dirty secret that is like you know we said oh the order is pluggable nobody has actually done the exercise of rewriting a new order and so it's like well what is it going to be like you know if we really try to plug a different algorithm and so as a first step we felt like okay maybe we can start with a simpler type of consensus algorithm so this is a call draft and it gets us on the path to doing PB f SB ft there are different variations of the Byzantine fault orient algorithm and so it's like let's try this we we would remove kafka dependency and we would actually test that the API can sustain changing the consensus protocol okay how much do I want to highlight more I'm running out of time I only have five minutes left I have a few more slides not too much but I already talked about identity mixer all the Java chain code so I did mention we're supposed to have Java not too many people want to use Java see these two people sorry I don't mean to be offending their people want to still use Java and so the story isn't bit sad there because we Java was the first other language we supported in the chain code and there is a Java SDK but as we move to 1-0 there is only so much we could do and we kind of dropped Java chain code and it's been kind of in limbo for a while and it was supposed to be part of one - when it was back officially into the the redistribution and it didn't make the cut and that's part of the decision we're trying to stick to our schedule and you know it takes a little bit of why there's always this tension at the time of freezing and this we're almost really just hold on don't freeze yet then it's like sorry we're cutting it this is there always a bit tough but people sometimes get a bit upset but anyway so in this case pretty confident the job I just slide like this one just a few weeks ago that a Java change what hinari's moved when : but well so be it so obviously anything that has to do with the future you know is speculative to a certain degree web 3 proxy this has to do with the etherium virtual machine right so we are actually developing web 3 proxy so web 3 is the api that's used to for clients typically in in the theorem world to interact the term network and so what we're doing is we are developing a proxy that will allow you to use the e TM clients to talk to fabric so you have a complete integration and you'll be able to move your client and your smart contract to a fabric network and everything should work there are some difficulty but this is what's being done yeah and there's some Composer stuff I'm not going to get into this and then looking further down the line there is 1.4 so again we have bft I don't know if you'll be there because he keeps being pushed back but hopefully you know if raft makes it for the third quarter there's a chance we get BFT but I wouldn't be surprised shifts further down the important change that we expect to have whether it happens then or not is this policy governance for chain code I I said earlier we are very much trying to use this transaction process flow we have the mechanism we have for everything chain code is one of the exception it's one of the pieces that doesn't get handled that way and so the idea is you know can we control with some policy what does it take to be able to change the chain code to install the chain code on the network and to upgrade the chain where there isn't a great feature right and by the way there's another piece I forget where it's at but I should have mentioned I don't sit there it was in one one one thing we did change this is important I'm not sure I see it there but is this is the notion of capabilities and rolling upgrades so in one zero if you want it to have good even to one one the story would didn't look very good because you basically have to shut down the whole network update all the images and restart everything and obviously you know this is far from continuous delivery and and and in production it's not really acceptable to call all the people and network say everybody shuts down update the image restart right so thankfully we address this problem so in one way there is a feature that allows you to actually upgrade dynamically so it actually as the notion of capabilities and the the system can basically handle the fact like your genius configuration where certain nodes of different versions and of course if you depend on a feature that's not there it's not going to work but it's not going to crash either the system is resilient enough to handle it okay so and by the way we upgraded the bring your first network so it's kind of an interesting exercise to do you can go to the one:1 release so it's just when you go to the documentation you make sure you look at one one and you do to bring your first network and then you go to one two and you say bring your first network upgrade and it will actually shut down the system but in a like and upgrade the system dynamically keeping all the the the state and so it's actually pretty cool to see it working it anyway let's try and finish this composer I've mentioned composer before and I've said all along well fabric is very low level there is this key value pair system and it's pretty much all you get in practice as an application developer more business-oriented it tends to be a bit rough so what we have done is we have developed a set of tools that actually allow you to deal with the fabric network at a much higher level of abstraction so it builds on fabric what it does really is there is a set of tools that allow you with there's a modeling language that essentially allows you to define with the participants in the network are what assets you're going to handle on your network what transactions you can do on those assets and essentially there's a bunch of tools there's a whole collection but essentially it's going to build the the chain code and everything for you and even the SDK it can build a client API for you and all that stuff and so you you actually get a blockchain network archive says like one file that you then deploy unto the network so this the the underlying story is composer it so it's all written in in JavaScript and so what's really happening is it runs on top of fabric so you still have to deal with the whole fabric networks setup but you don't deal with the chain code and the JavaScript anymore do you actually use composer for this part to have a higher level of abstraction and initially the way it was actually implemented is they were installing as the chain code a JavaScript interpreter and then everything was running on top of this now they actually have removed this they use the node GS chain code and what the the line that I kind of skipped over earlier on the slide saying some integration of composer functions into fabric the idea is that now you have kind of two API is added on the chain code level you have the the basic chain code api's and then you have the composer API and in practice you know the problem when you have layer on top like this is every time the layer underneath changes you have to figure out how I'm going to expose that at a higher level right it's like a never-ending catching game and so what what this idea is about is to try to collapse those layers so that you would have the richness of composer but you would also still have access at the lower level api's in a much more uniform they already opened the door so before it was isolated you couldn't see and people were annoyed with this because they wanted to do all sort of things that composer couldn't really handle there was more to low level so they opened the door so you can actually call into the lower level and then there's just like we said okay we need to clean this up so this is what will happen so that brings me to the end of my presentation I am from IBM so I do a lot of open-source and I'm part of hyper ledger but I still have my paycheck from IBM I do want to promote the IBM offering what is IBM's offering and I've insisted all along that you know hyper ledger is not IBM and but so what do you get there is this offering called the IBM blockchain platform essentially what we have done is we have wrapped together into one single offering fabric and composer that is hosted on the IBM cloud and it makes it much easier for you and there's a bunch of extra tools mostly to do with making it easier to deploy your network and then monitor your network and then on top of that you can build your blockchain application so if you want to use this this is an alternative to what I was talking about with bring your first network and all that you can go so IBM as a whole sort we have a whole collection so in terms of like getting started you have two choices you have a choice you can two options you can say I'm going to go the hyper ledger barebone way and you go with a hyper ledger and you can experiment with this and then you can also go the IBM way and so there's plenty of tutorials and documentation that are hyper ledger level and there's also a lot of things available on the IBM side and so we actually have a lot of what we call code patterns that are basically examples you can start from and I encourage you to have a look because even if you wanted to use just a hyper laser you can still learn a lot from the IBM tools just don't come to the hyper ledger rocket chat and say I'm trying to use the IBM blogging platform I've a problem because that's not going variable he doesn't get very well received but you know so you can actually learn from this a lot and so the IBM blockchain platform there is a starter plan which is for developers it's so it's not completely free but it's you have a 500 dollar credit that's enough to cover the cost to get started for like the cone of like a month of usage so it's pretty free to use for at least get started and play around with it okay and just a shout-out which is kind of orthogonal to this but you know IBM as this initiative going on going on called Cole for code it's not just IBM IBM is part of this if you haven't heard from it I encourage you to look into it it has to do with basically calling on to all the developers out there and saying hey guys what if we could all work together into developing open source based solutions for disaster preparedness and there's a big organization like the UN the Red Cross are part of this initiative so it's much bigger than IBM but iBM is a participant in this and so I'm just telling you and we have there's an entry point and and so the whole IBM blockchain platform is part of the offering that we're putting you know to use for the last part of this call for code initiative okay shoot I'm really late I didn't even realize okay sorry I'm a bit long I guess I don't have time to run the demo but any questions I killed you Yolo can be dead now I'm supposed to be the one dead I've been talking for two hours sure yes yes so they're two in mind I have two things to say about them this is very good point so there is a cost to this model the the order execute order validate indeed if you're not paying attention and you do very naive data model where you're hitting the same key all the time and you send a whole bunch of transaction they're all going to conflict with one another and so they're all going to be dropped at the validation step which is at the end of the cycle and people do get annoyed because quite understandably they say hey my transaction throughput is going down you know and and it doesn't scale so first you need to have that take that into account when you design the design what they also you're not so naive about this if that's the model the solution is indeed two there are two solutions I mean the first one is to model your data differently so you don't hit the same key all the time and there are different ways to do that the other solution which we are actually discussing and we had a discussion yesterday at the hackfest among that the community is I expect this will happen there's agreement we the validation step is going to become a bit more subtle because in fact it's really rough today it's just like it says if anything changes game over in practice it's things could be a bit it could be a bit smarter than that because for instance in the example I gave earlier where I say I'm giving a black $1 to Joe and $1 to Bob well guess what if I have really two dollars on my account they should both go through it shouldn't just say oops sorry these conflicts right so that means the validation step has to be a bit smaller and we have agreed that okay we could have a few operations and you could define for your application under which condition this is still valid or not rather than just say if anything has changed game over so there is you know light at the end of the tunnel but essentially today you have to think about it when you design the data model and then when you actually submit the transaction you cannot serialize them if you really have a dependency between transaction you want to wait that the first one gets committed so you wait for the event and you know it has gone through the whole cycle and then you can submit the next one it's a bit of a pain you have to know that the blocks to the rate of the blocks I didn't mention that but so there's two parameters that come into play in the creation of the blocks one is the size of the block in number of transactions and then there's a timestamp and there's a time out kind of thing so it says and this is configurable so you can say after it's an amount of time I'm going to cast a block and you could end up with a block with just one transaction so if you're in a network with these very slow transaction you don't just sit there forever and until there's enough people with submitted transaction that a barque is cast right there's a time limit and it says well I'll just deal with I'll create a block with what I have now so there's these parameters good course [Music] yeah so that's the performance question so as I described the the topology of the network's can be quite complex and depending on how you set up your system you may have very different performance results we have the zurich lab did some experiments where they basically implemented a very simple type of chain code which basically mimics the you TXO of bitcoin and in a you know they didn't use the chain code they put it as a system chain code so they didn't have to deal with the additional container so it's pretty constrained environment but in the end of environment there are 3,500 transactions per second the the payload is super small so it's kind of optimal people report they go up to 2,400 in real use cases but it's still you know we are far from like Bitcoin theorem like seven transactions per second right we're talking thousands anyway and I had a guy yesterday at the hack phase he came to us like hey I can get to a thousand and then it seems to degrade and he was trying to find it it's not even using the CPU completely I'm like well we tell you the CPU is the bottleneck it's probably the order and so we had discussions and tried to give him some guidance but you have to have realistic expectation at this point in time you know there's only so much we know how to do and things are improving so between 1 0 and 1 1 we have great gain in performances because there's a lot of things that have been paralyzed you know it's a very expensive process in in signature checking so everything gets signed and so everything has to be verified you know is this endorsed so the endorsement it's sign right so you have to verify signatures all the time so there are things like this and we've we've managed to paralyze a lot of this thing so you get much better performance but it's going to be an ongoing challenge ok I think we need to wrap up this probably lunch waiting for us sorry I didn't get to the demo part but I would have run the bring you first Network kind of thing and so I encourage you to go it's pretty simple to make sure you look at the prerequisite especially if you're on Windows but if you follow that it should be a no-brainer thank you