So this morning our station is our two Microsoft engineers at us build blockchain enterprise applications. So the two of us today, we've got Kail Teeter. Hello. So if any of you are using some of the cool stuff that we have up on Azure inside of the institute, Kail is part of the product group. So the product group are the one for the start of Microsoft that build all the cool tools that everyone can use. Me, I'm in a different section of Microsoft for commercial software engineering.  So we go out and work with these customers. So what I do is I help these new customers go and build blockchain applications. So this session is a mixture of me going through some of the architecture that I use. Some of the architecture that I use when I'm creating these enterprise applications. What do we talk to these enterprises about how do we architecture? Look over to Kail. He will walk through some of the Visual Studio tooling and how that can be used to accelerate building blockchain applications. I will look back to me and I'll cover up now that you understand some of those building blocks, how we can go and compose these together. So let's cover up the one that I usually get in conferences like this.  Our price of blockchain. We have public. Everything should be public. So cover up what you all should already know. Public Ethereum, we can't trust anyone. Because of that, the security things that I built into it are all around just assuming that everyone is trying to dig us over. So everyone is controlling their own keys. We've all got trust infrastructure because we don't know who the bad actors are. So everything has to be security around the bad actors trying to do these tools. Which is okay. But when we're inside a private network, we have different security considerations to worry about. And usually with the web UI and application front-end, usually this type of stuff is deployed out to a decentralized process. Now that's great for that public scenario. But consumer to consumer apps, that's great. For inside of the enterprise space, these are usually the three things that they worry about. Enterprises think that they have really, really large transaction volumes. So they always say public, Ethereum, public, what chains can't handle our transactions. We want to do something faster. So because we have different security considerations, we can relax some of these things. So we can go and move to things like proof of authority where we can get some of these high transaction volumes. So that's one consideration. But it's usually not the main reason that we end up using private chains. The two main reasons are usually scared of the unknown. We've got large enterprises with all of their developers and they want to go through something a lot chaining but they're afraid of failing. And they want to fail publicly because of that. So they want to have a nice safe space that they can go deploy some things, play with it, get the developers through the motion of how to build these things. And then once in a few years once they're more happy, then they'll start moving into the B2C space. The other one is maturity of private transactions. A lot of those things that these enterprises are doing in a B2B scenario is commercially sensitive. But right now in public Ethereum, doing some of these private transactions is harder. Now there are some cool things happening with CK Snarks. Ernest Young have just released Nightfall. So we're looking at Nightfall to integrate Nightfall into some of what we're doing. But as it is, these are the three main reasons why we end up using private networks. So if we look at a private enterprise network, it might look like this. So instead of having unknown actors, we've got a private organization. So we know who the real actors are. And then because of this, we can relax some of these security considerations just a little bit. So it goes from having, trying to do this in a trustless decentralized way to more of a how can we go and use a blockchain as a shared source of truth so we've all got the same understanding of what the data is. And for that they now have been able to accelerate the business applications. So it's usually, that's another reason why we do it like this. They have their three separate data deployments. Each enterprise has their own data. It's because although they're going to be here with a common goal, hey, we want to be able to track these widgets more efficiently between us. Our company, hey, we want to do all of their reporting. It's going to be completely different. Our company, they want to have an internal internet application looking up on all of this. Now, that's a well and good. So typically how an engagement happens when I get caught in is we talk to the enterprise and when we ask them, do you know about blockchain, they always go, yeah, yeah, I read Forbes magazine and they're all about the blockchains.  So they've usually got a traditional multi-tier application. So if we go with a typical thing, it would be one really large company with multiple bandanas which go and interact with it. So making up names, these are not real companies. Let's just go with Walmart because everyone knows that and it applies to Walmart. So typically what would happen? Walmart's the largest player in the place. All of these suppliers are going and supplying packages to them. But because Walmart is a big player, in here they can go and dictate to all of these older players. All of you are going to log into our front-end web portal. All of you are going to update into there. So Walmart in the back end has their business tier. They've got their data tier and their database. So a traditional three-tier application and they might have some analytics reporting and stuff. So because I've already got all of this legacy enterprise infrastructure, that almost every single time that I fail, they go, we want to make this more secure by making it a blockchain instead. So all they do is they take that database and they replace that with blockchain. They go, it's now more secure because it's a blockchain. And we tell them, no, you just made it worse. You've taken the worst parts of both. So all of them got now their exact same application, which is now a whole lot slower than what their single database was. And then they, sorry, and everything is now too hard to firewall. So none of these parties can even access that blockchain. So I asked them, so are you saying, who else is going to host this blockchain? No one. We control the blockchain. It doesn't work that fast. So then we say, okay, so if you're not going to even let them host it, then are you going to let them have a direct end point to the blockchain so they can least verify, oh no, it's behind our firewall. So you guys are running a blockchain, you're running the blockchain, you're the only one hosting the node and it's going to be kind of firewall-enough access. So you can't prove anything. Because right now, it may be secured in a blockchain, but they can't tell. Because whenever it comes here, it can still be modified in any of these data tiers before it gets up to here. So the biggest thing that, the biggest challenge we have with Enterprise is that education around, every single party has to be able to access the blockchain directly to verify it. If you're still going through a centralized access point like this, then there has absolutely no value. Which is always a big struggle because the largest player here wants to still lock down and control everything. So trying to get them to understand you can't control the blockchain, everyone needs to host it, that's usually a scary thing for them. So the common mistakes I usually see, what we just saw, they have a 3D application that used to, they ever want to control everything, post everything for the industry. They want to use a blockchain as a database to try and get them moving the mindset out of we have 8 databases that we control to we have a shared state, a shared understanding between all parties, that's as big as my shift. But once we get through that, usually takes about 2 days, on stage do it, then you can see them get excited because now they understand the possibilities of it. And this is still a big problem. The largest company you should see wants to control it. That is more of this problem. So how do we go about helping to educate them? We get them to go that blockchain is the source of truth. So it's no longer your backend system is the source of truth, what is in the blockchain is the source of truth. Which again is another mindset she had to go and advise developers. Getting them to understand that their backend systems are going to react to what has happened in the blockchain via oracles, and again is another mindset shared. So trying to tell them nothing is confirmed until you've sent it into the shared state. The shared state has updated and has come back via oracles so you can update your backend and your reporting systems. The digital data controls their own infrastructure. This one is from where we've seen many projects fail. One company inside of an industry say we're going to go and create the blockchain for supply chain the blockchain for oracles the blockchain for whatever. So every time we've seen one company say we're going to create the blockchain and then we're going to roll it out to our partners if it's failed every single time I've never seen that work. The way that we've seen it work is when they get us engaged we'll go in and we'll say you bring in at least two other parties for my next meeting. Once we go in there we've got at least three companies who are going to be part of that initial development that initial deployment then we start seeing things be a lot more successful because at that point we do have three companies who have all had their input into the business processes into the development it's been employed out to their three their Azure subscriptions to get it rolling and most importantly is everything that we're teaching them is applicable to public blockchains so everything we're teaching them around key security around daft development, oracles etc works inside of the private space but my secret agenda is to get them all up still so once they're happy within the B2B space they can take everything that they've learned and start doing things in B2C in public Ethereum sure, we could have a private network but why not make the plasma chain so it's connected to the public network so we can do some more things easier from there so changing their conversation over to plasma chains is working well so once we've gotten past that point and now we're talking about architecture there's a few little pieces that we use so I'm going to go through some of the serverless pieces that we usually use to help with demo a bunch of stuff then we'll go back to me to continue this but to connect the glue between the blockchain side and the traditional enterprise backends we've got some glue in the middle so we've got two of them which are serverless based programming we've got Azure Functions which is functioned as a service so take a piece of code and it will run as a serverless style so that's great we've also got Logic Apps Logic Apps we've got another screen in a second so it is serverless confused but you don't have to write a code you can just drag in building blocks and then the last one is Event Grid which is an enterprise pub sub so that's a great way of publishing hey, something happened in the blockchain we can now tune enterprise Event Grid then any backends systems that care that something happened in the blockchain we can go to those events and then do something so update the reporting so we use these so these two so between these two if we have to do some tricky custom stuff with these functions we should just go Logic Apps because we can get them done in one, two minutes so Logic Apps building blocks you click and drag in on there so it's great so when we jump to an enterprise we can build out entire demos in two, three days by using building blocks we can just have when a smart contract event happens so like an oracle, sit there and monitor when something happens go and do something, in this case send an email so get anyone to do one of those hit go and deploy it out inside of it these Logic Apps connectors we can do a few things, we've got triggers so like oracles when something happens so we now have serverless, codeless enterprise oracles which is pretty cool and action, we want to do when something happens so we can trigger a smart contract deployment we can trigger executing a functional smart contract we can do a call a transaction and pull back properties from smart contracts so this is what it looks like, if I want to read or write to a blockchain this, so what I love doing with developers are with new teams, I get them to code out a smart contract so that takes them a few minutes to see how do and once they've done that we can just go and enable them to go and trigger these smart contracts, click dragging HTTP endpoint, click drag go and call the smart contract click drag, do a HTTP response passing back a JSON payload so that takes about five minutes and the private developer is starting building some things so that one's reading and writing and then we have those serverless oracles, so you just copy and paste in the smart contract address, select which event you want you just got that from the ABI and then say what you want to do go and after that you see the database publish it out to the suppliers and then it will come up so that so yeah, I did talk a little bit about David said I want the engineering team working with developer experience and one of the big things we've been doing there is Visual Studio Code so improving developer productivity making this a much easier process for new users but also not trying to get in the way of advanced users, so somebody who knows what they're doing with these tools we want to make sure that that's still as frictionless but we want to break down the walls for like new users, somebody coming into the secret system sometimes it's not quite as approachable as I think so looking at the current developer experience there's obviously some of the development component there as David mentioned things like writing smart contracts building that but along with that then becomes a second block which is a huge kind of area for a new user to say what do I use to build this app in many ways we've had that with other frameworks and programming languages before but specifically it's very open source in nature there's a lot of awesome tools out there and there's some things that maybe aren't so awesome so people trying to find the right tool for the right job has been a struggle we've seen a lot with people using these so one of the motivations for even getting into developer experience was can we improve that process make it easier for people to get their job done and then they can grow and learn as a building new stuff the second thing was how can we hook this up to infrastructure so if we're deploying to a public node or a private node we want to break that all down too a lot of times we did these hackathons early on in the last few years and I can tell you where the stumbling blocks happen it's not coming up with ideas and getting things there how do we do a transaction everybody knows the theory of how this happens but when the the rubber meets the road and they have to use it through gas or they have to use some of these tools they start getting confused right away and then they start to fall apart and they lose productivity and so one of the things there was how can we connect these ledgers in a much more seamless fashion and then also helping the deployment so as you are starting to put new things out there people are starting to get used to immutable smart contracts and transactions how can we help that process as well so those were the main motivations for why we've gotten involved in this so from an integrated development experience if you look at the left side and then we move to the right on the left side you basically are saying like in most languages and in most programming structures that we have we have the idea of creating a project not just the hello world but like letting me scaffold out a real structure that I would actually use I don't just want something simple or something like that I just want to get started and do my thing so this is one piece we wanted to nail creating ledgers how can we do that from inside the IDE another issue that comes up is there's a lot of different service providers adgers a big one but there's many other ones so it's like okay I need a ledger after I create my stuff then I got to bounce out to a website there's Facebook and there goes my productivity so keeping someone engaged in the IDE is really beneficial for the programmer to stay involved and say okay I keep my same mindset if I start context switching I got issues and the automatic configuration as I mentioned before so we want to take over building take where we're going to deploy to and help build that configuration on the fly for you so that you don't have to like waste your time with configuration files certainly they're there and you can go tweet them and do what you need to do but most times you just want to get through let's get this thing running let's get this thing improved the middle box is the IDE and part of this is like Microsoft and bringing our IDE like a visual studio code in this example is one aspect of it by trying to take over this market say we're going to build the best debugger we're going to build the best packager this is not something that's going to happen because there's such a huge community around this that's building awesome stuff and so really we see ourselves as more of a connecting tool to say who are the best guys doing these things or who are the most popular ones that we can work with and help them get their stuff integrated there so that we can build a better tool and so in this case one of the first ones that we worked with was Truffle we've got a great relationship with Tim and the group there we work very closely with Consensus and Visual Studio Code with Wonko we work very closely with the Ethereum Foundation on Remix and there's others that are not mentioned here so we've been actively with the Foundation to bring even more of the people building DevTools into the ecosystem so if there's anybody in here building DevTools certainly come see me at the booth or my group and talk to us because we're very interested we want to make sure that as we're building this tooling we're doing it in such a way it's not like tightly coupled to one of these kind of frameworks we much rather be open and let people have choice and just help the user get started and then on the right side is basically the ledger technology so like after we've built something we have a school ID to actually do it where are we deploying these things to certainly one of the things to get started and if I'm on a plane or if I'm disconnected I want to do something local I don't want to have to go spend up a huge network and waste a bunch of money just to see if my smart contract is working functionally if I wanted my automated tests or some of the other vendors were working with like Mitbeck some of the security vendors we want to make sure that it's also working when we can test that stuff on local Dev before we even go out to a big chain to do something whether it be product or public we mentioned the private consortiums and this tooling is not tightly coupled to Azure certainly Azure is a nice experience in here but certainly you can also plug this into existing nodes if you have them running on premises or something of that nature so don't think of this, I did hear some feedback people say, well it's got Azure in there and that scares me, you know because I'm not into filed or Azure this tool can work without Azure Azure is just a great place to run your stuff but if you just want to run this stuff locally or actually want to run it on premises you can also use that as well which raises the third box which is a service we announced in May which is called the Azure Blockchain Service so don't take away if you don't know anything about this we're not building a ledger ourselves so this is powered by Quorum and essentially what this is is for some users to say I trust you enough that you can run my nodes for me just run my nodes for me as a pass service as opposed to me having a VM that I have to maintain there and manage you can still do the VM stuff so people want to have their hands on all the internals to make sure that that works totally fine, you can run that this is something that's a little bit faster so maybe you can even use it for DevTest certainly in production people want to use this because there's a highly available solution here so basically we're making sure those nodes are healthy and running services who do something similar where they're hosting the nodes for you this is Microsoft's version of that and then on the public side we've talked about this because we don't want to build any barriers in here certainly Microsoft's bread and butter is enterprise and having these big enterprises engage in blockchain technology but we also don't want to sever off anybody from the public side they should also use this tool and we want to make sure that it's amenable and launching this week that we haven't kind of talked about yet is working with Infira so we've been working with them for some time but we wanted to smooth that process out much more from Infira so I'll show you what it looks like from the Azure Launching Service Infira is nearly identical so essentially it's down to a couple clicks and you can have yourself in Infira without having to jump to any other website even if you're new to Infira so we've made some really nice integration here to make that work for public networks and I know there's other vendors we've been talking to as well we've also been in this and we want to work with you guys too because the architecture is built to plug other node providers into that so this is kind of like our honeycomb as we call it which basically looks like the stickers on people's laptops but basically just the key points I wanted to hit on I hit on some of these earlier but just hit on most of them, we have the Azure Launching Service Integration Project we have a lot of language syntax we have a compilation of those things happening we have a debugger built in there so you can see that as well, I'll show you that any kind of different chain that you want to deploy to we're working on something from the fork chain so if you guys are familiar with our work Truffle's been doing in that space this is pretty interesting so you can have your production environment which could even be a public blockchain or it could be a private one it's in production, you can essentially fork that chain make your changes to your code, test it yep, everything's working, destroy your fork push your changes out to the public so we want to automate that a little bit more we definitely have it working so the smart contract test execution I mentioned some vendors were working with they're also working with like some wallet vendors as well, Truffle's one of them we've been working with them to improve the Truffle HD wallet experience also Portis is another one that we're working with in the wallet space to improve that we also have these like logic app flow integration, David was talking about some of these serverless things I'll show you what we've done in Visual Studio to help that out basically if you build a smart contract and you want to like interoperate with it we have a contract interaction we call it which basically builds a UI on the fly for you so that you can test your contract and start like playing with it to see if it's working but then on top of that I want to wrap that in a serverless function so the functions are really these logic apps and functions are really just like thread operations to a blockchain we just want to send a transaction in we want to read some data and we want to react to an event it's pretty basic so what we did in VS Code was said well if you build your smart contract out we know what methods you have in there so we can basically wrap that with a logic app and give you that as an output you don't have to write any code you can basically pop that into our logic app serverless developers what we call them someone who doesn't write a lot of code could even use that because it's basically like connections that they're forming up there so it's super easy to do that and this stuff definitely stands if you need help finding it but if you just search for Visual Studio Marketplace, Blockchain or Ethereum, you'll find it this is a short link to it we launched this back in May and we've got good feedback it's all open source so you can go look at our code up there we'll do monthly builds right now and monthly publishes and like I said this week we're doing one I'll show you another vendor we're working with we put some new stuff in for this one today and then also this is just an experiment but we'll walk through that in a second and with that we'll pop into actually doing some work here with the Visual Studio Marketplace so let me pop into a fresh console here so this is just a previous code on the box for those who are getting started if you just go download this tool and just go search for it when you come in here you can search for these little extensions so these are things that augment the extension thing and you can just type in Blockchain and you'll find a bunch of other things in here right here and so basically once you install it you'll see this little here now I already have one pre-connected here this is what I'm talking about but I'll just explain what that is in a second I basically opened a folder here it's just empty right now and I brought up the command palette like basically all the commands that we can do with these tools then we can add new ones to them but right here is what we do right now so we have our file new project I'll show you a debugging transaction flow we've fully integrated the debugger into the IDE so you can do all the steps through, step out of, you can do the inspection even down to the instruction level so you can see all the IL everything that's going on there we do the deployments, the builds all the compilation that's happening there we can connect and create new networks up here I'll show you what those look like we have some things for key management that you can do in there so if we basically just do a new one you can see when I do a new project it goes to the user that doesn't know what the heck I'm doing if I just keep hitting enter I'm going to get a nice scaffold in our project if I know what I'm doing and I want to go out and say hey there's another truffle box I want to use something like that I can do that as well so in this case I'm just going to take the default put it in the same folder we'll pray to the internet gods here the network is not right here but that's okay I have the cooking show demo in case this fails so what we're doing here is we've created a template if you're familiar with truffle boxes it's one package format that we're using and so basically we scaffold it out and put the right stuff out here for what people should be doing when they're doing one of these so we have a basic project structure we have our open source licenses and stuff in here all the normal stuff that people would need and then basically you can see as it went through it just went to pull this box down it's already dissolving all the dependencies so in our case we're using a wallet to dissolve some dependencies so when you do this yourself you'll see that it kind of hangs here as it's doing something what it's doing is just getting all the packages that we need by doing it for you again you can customize this you can jump out through a terminal and do whatever you need to here if you're in the know and know what you're doing with this stuff but if you don't know what you're doing this will help you get to the good state so we'll just give that a few seconds here there it is so as that finishes hello world we have our migrations we already have all the migrations set up for us and we look in our truffle config we minimize some things here we automatically through a development environment in here for you we have ganache baked into the IDE so if you don't do anything else it'll automatically just work in a disconnected fashion we also inject the hardware provider and you'll see what that means here in a second when we start talking to other networks so the first thing you'd want to do is build this is in preview so you'll see a lot of these debug commands speak and we can minimize this but we put this out here so that people can see what's happening there in case there's any breaks within this tooling while we're in preview but basically you can see it just did a compilation on our projects and then if we do a deploy you'll notice when we do a deploy we basically get this little drop down here now what's cool about this what we built here was it says from truffle config.js so basically in the truffle config we had that development one by default that we did in four years there's also one from the tree over here because I already have one registered so as I build up more of it right now azure is here if you're listed over here you can also do local networks and things over here and again there's many people in the audience who are working on ledger infrastructure we'd love to plug you guys in here as well and then they basically show up to the user just as choices so again they didn't have to do anything they didn't have to go get rpc endpoints and figure out like how to authenticate those things that's happening for them and I'm happy to talk through that in detail if you want to come by the booth I can tell you how we're kind of doing that securely to make that work but for instance let's just go to local ganache that says I just want to do something quickly because of the build over so you can see I do my deployment we can see all our logs here all our floors everything came out now the next step we said was well once you can get to this stage for a user that's great everything worked how do I work with this thing I didn't build a DAP yet I just want to work with it so in this case they can drop to a command line and do that then they're going to have to go read and hopefully they know how to read and they will read but they're trying to get things done quickly so let's just try some things is this a react application that's inside of here that basically is then reading our contracts so this is dynamic this knows what methods are in there so the only two methods in my contract is send requests and send response it has the deployment so if I do multiple this drop down list will fill up it also has a bunch of metadata like where did this thing get deployed to from all the address detail you can copy and paste bytecode and API if you need them you can actually interact with them so if I send test request I execute you can see the state filled up now I'll show you in a second that it's not smoking mirrors that actually went to ganache right now and we will do that as we'll do a debug but you can also see if we get a response message and you see that one filled in so this is basically showing the state and these are all your actions that are inside of there I mentioned like this is not smoking mirrors so if we pull up our command pile again and go into a debug transaction if you look really closely maybe you can't see it in the back but we give you a hint these are all the transactions that have happened recently and you can see this is send response and this one was send request I just did this too so if you click on this it will basically launch a debug session for you we'll enumerate everything back here at the transaction level you can get all those details you can expand this stuff to your heart's content to look at it if you start jumping in here with your function keys as normal you can see the response that we actually called there you can see our response messages we can hover and see those so really nice debugging interface it actually breaks down even into the instruction level as I mentioned before so if you're a public developer you might be concerned about what's happening here your store call is happening you can see all that stuff directly in the IDE here so we think that's a pretty nice thing for users who are trying to figure out what's broken in their contract really quickly so we jump back to say our typical flow was we did something locally there we deployed it everything seems to be good now in my case I already connected to an Azure blockchain service how I did that I can connect to or create a network here so if I say connect to and let's say I did go to Azure by the way this week in Fuero we'll show up in the head drop down as well so the same experience will happen for in Fuero and then basically you can pick your subscription it's a context sensitive to a subscription a resource group but basically it lists your projects here so you can pick your project that you hide out there and get your end points back in this case it will see what consortium is up there in my case I've already connected to that one so I can create a new one it will do everything for me I don't even have to go to any other portals or websites it will spin up the consortium for me it takes a few minutes so we will do that right now if you expand this you'll see that in the context of Azure consortium I'll remember in our transaction node if you right click on the transaction node you can see we get to our PC address again if you're building an app you typically need that as soon as you start writing some JavaScript code or something like that you're going to need that you can just grab this and put it right in your clipboard you can use it it'll disconnect if we're not using this consortium anymore it'll still keep it there we're just basically disconnecting from it the exact same thing happens with in Fuero I wish I could show you here I'll basically show you all the nodes underneath there for the different networks whether it be rock, steam, ring, B, mainnet those kind of things same experience and basically whenever we go to deploy it's the same process so once this comes up for deployment we can pick this guy and if I pull up the output window you'll notice in this case whenever I hit a network that's not local I need a mnemonic so I can either generate a new one here or use it here on disk so we initially to give you some feedback here initially we wanted to make this super easy to get free users to say I don't even know what mnemonic is they can generate their prompt in front of our file location they can put it USB drive or whatever it's going to get enough like from a security perspective so what we've been doing is working on our TrefoHD wall provider so that we can provide two options one is have this encrypted file wherever you want to put that thing HSM and Azure there are others that exist out there but basically you can choose to use an HSM to hold that mnemonic, that secret so that it can't get compromised on the field disk something we're actively working on but if I put a mnemonic in here and I look at my output window you'll see it's a little bit slower because it's going over the network but it'll eventually push this stuff you can see we say deploying down here and you can see it's deploying to a different network here and eventually that will complete so just making it super easy I didn't have to write any code any migrations and I'm able to deploy directly to other chains we think that's pretty cool for what people need to use here now another thing while that's finishing up on this menu a couple things one is we just talked about these logic apps so this bottom menu section here is basically covering those things so if I want to wrap one of these contracts in a serverless application that's what I want to do logic app, flow app, azure function I'll give you a link to the documentation you can look at how these things actually work we would put a contract address really so this one's still with the link but I can just say I'll put a fake one in for now and it basically will pick because this one's in azure where are we going to close and you can see it generated in the logic app now what does that mean? it basically generated a bunch of JavaScript for me and it already pre-fills everything in for me so basically it went and looked at all my methods looked at what state variables exist up here to create a wrapper for that and basically put that out in JSON and I can version that now, put it in my source control and then I can take that up to azure and it will build what David showed you on the screen before that it's like GUI, it'll build that automatically for you so it makes it super easy for people to build applications whether it be event-based or crud, like I want to read or create something inside there so the other thing that I noted you might have noticed whenever I was going through these menus really fast was in your contracts one of the things people want to do is some of this stuff's already been solved right anybody who knows these folks knows that they have a pretty nice set of libraries up there that people typically use for production applications that have been fully vetted rock solid contracts for different things and so we said how could we improve that experience right so the typical flow we saw with enterprises was I'll go do an MPM package go ahead and pull all the open zeppelin contracts the problem is that we saw with some of the customers was why is it pulling down everything like I just want to do an ERC-20 or an ERC-721 I just need some math libraries I don't need all this other stuff so I have to go delete it and make sure no one does an MPM install and the open zeppelin guys about was could we create categories similar to what they have with their folder structure that selectively allow me to just pull these down and then resolve all the dependencies for me so if I just want the math for the life cycle stuff for the access control stuff I can pull just those and I'll show you what it looks like so what this is actually doing is going and grabbing a specific version of the open zeppelin contracts and it pulled down 15 files in this case and it looks like but it also gives me this little more detail so I can click on and this will take me directly to this rich documentation so if I'm new to the ERC-20 I don't know what I'm doing I can come up here this will walk me through everything I need to know about what I'm doing with that a couple other things that we're doing there as you can see it downloaded the contracts obviously it resolved all the dependencies for these things so anything that's you know these things have multiple dependencies inside each one of these it's also making them read-only so one of the things in talking with open zeppelin was you know sometimes people inadvertently make changes to these then and then that could introduce a security problem and that's not good so we said well first off we could make them read-only but that's not good enough right because somebody could just make them not read-only so what we did is look at the actual commit hash and look at the file hash up at github and so we know for sure so when we do it on the limit we actually check that we actually block it right now and say someone changed one of the core contracts right here is the one that they changed go fix it so we won't let it go forward we're thinking about that but the model that open zeppelin has shared is really good which is using inheritance as opposed to changing those core contracts and so we want to kind of make a firm stance there to make sure people don't blow their leg off you know with this kind of stuff so basically this will automatically do a verification check now every time they do a deployment and make sure that no one changed these and then I can start extending that it also created the migration for me so this is kind of cool too like we went and looked at what all the dependencies are and built a migration file for you so again you don't have to write any code if you just download it at erc20 and hit go it will take care of everything and migrate it for you I'll just be totally honest there's a couple breaks in this this is brand new and some of those are around like some of the contracts actually need parameters like in the constructor or something and so we're thinking about a better experience for that happy to hear feedback from anyone here too but we're thinking about integrating that as well to say hey in order to use the erc20 I need to know what you want to name it or what the supply is or something like that then we can prompt them for that and do it for them so that they don't have to dig around inside these contracts and so I think that's pretty much all I wanted to show and I'm happy that afterwards we can talk through anything here and I'm happy to talk about the internal and how it works and the new stuff is going live this week so we're actually in the process right now of getting this published and we'll have the open zeppelin stuff in it as well as the and this extension works on windows, mac, linux yeah those three and do you want to jump into the slides? so that's something important when I go and work with these happiness I'll usually have a bunch of half the devs in the room will have one of those laptops and then the other half will have mac laptops so being able to have everyone using the exact same visual studio code tooling with the same extension makes it easy for all the devs to have the same workflow one other thing I wanted to talk about so beyond just like the scaffolding and stuff that we put out here today there's also this thing and people sometimes get confused because we're horrible at naming things but it's okay so basically the azure blockchain dev kit part of that is is visual studio code extension but another part of that is this github repo that's open source there's a bunch of code samples up here a bunch more advanced stuff on service functions there's a lot of documentation helping get started on all this stuff so once you get beyond the initial stuff and you want to start diving into more complex flows this is something cool to look at that was last ethereal not the one in Tel Aviv but before in Brooklyn we actually did a first valence project with Microsoft actually entered in $20,000 worth of valence and basically what we did is proposed out 20 different projects for people to work on to build different things using our hsn using some serverless functions there was a whole slew of them some were at gaming and tokenization and basically those are up there as well so it was a super great response we were super happy to work with this kit and it worked out really well but we basically have this community driven section now too so we have the Microsoft samples that we're producing we have the community driven ones that we're kind of vetting and working with the community on but happy to take more contributions up there if you guys on either side are welcome anywhere the links are here I think that's the statement so for the last 15 minutes I'm going to go and take everything that we've talked about and then try to remix it into a few different things so as I said we dive in and everything I do with the customers is exactly what they want to show you so we showed them from the beginning how to go scaffold out a brand new project how you can learn how to add in a few functions into the smart contracts show them how to debug how to write unit tests are you going to show the unit testing? I don't know if it's there and once I've gotten through that again it's the what we've done on the blockchain blew it up to what's happening in the enterprise so I run through how it works for a single member inside of the consortium then we go and zoom out and see how it looks when we can bring more together so for one enterprise the core of everything is trouble and video code we start to go do all the writing, unit testing dividing all that stuff so they're doing that locally but this is their blockchain so from their blockchain we start doing things so that they're back as new what Cale's talking about with this crap so here we've got those logic apps so as Cale showed I used to go and get them to do it by hand because I only took five minutes but as Cale showed you now it takes 10 seconds right click on my contract say please just generate it for me it generates out that JSON file which defines that logic app for you so you can just go and copy and paste that logic app JSON file now up into Azure and then you now have your serverless crap to go into the blockchain but once you've got that then the unit person starts looking at things up to it so they can have their internet app and then just go and the enterprise devs all they care about now is that they have a rest end point so the rest end point to go in and do some reading and writing pushing in the transactions so there are things we can do around locking this down through Azure configurations so people outside the company can't access it but it helps them use this as just a standard rest end point sort of worrying about Word 3.js and caring about tiny transactions so we do all of that inside the app that way when something happens in the server we can go and push that down the update to the blockchain we keep on doing this as a function and we just have things happening power apps the same thing how we showed how you can do codeless serverless we've got codeless UI so if you can go and fold out a really quick prototype within a week when we push together all of this we just get them to codeless UI go and do a rest end point so that's what the reading and writing side is but if someone else goes and updates the blockchain we have to react to it so we have the event trip and stuff on the other side so again that will start serverless oracle from a serverless oracle push it to event grid whatever it cares about so if another member updates the orders for widgets then the event comes up here oracle detects it publishes it and then we can go and update our back end server we can update power BI reports that morning oracle trigger us to go and we can go and start destructing widgets for someone requested so this one enterprise can go and build whatever they want and it's inside of their infrastructure but if you go and zoom out then it looks like this so one enterprise can do what they want but because the blockchain in that chair stays in the chair source of the truth now all the other enterprises just react far off from that so each of them have whatever back end systems that they want but as long as this is a source of truth so again the way that we go and teach them about this is it's all basically about the theory of fundamentals what works here we can then go and remix it across slides in a way to say a B2C so they can still do what they want with their key management with their oracles etc but if they're doing a B2C app they can still have consumers interact with so we can do it in two different ways so one of the first enterprises usually want to do it is once we get past this point they still usually want to control like here's for the users so it may have some mobile apps etc so the end users once they're looking at the phone or something can go for the logic app to go and push in transactions updates etc but the keys are stored here so that's probably going to be step one as we migrate enterprises across as they're getting more and more confident and then hopefully we'll get up to something like this where we're using centralized IDs and how things are using their keys so to say the enterprises still have all their stuff as it was so again everything with teaching here it made me sure that they're good enterprise theirs are also good public back depth so once we start getting close to almost out of production then we start having to work out a few things so how to go add members so because we're using forum that's a new account for us so forum and Azure blockchain servers have some great mechanisms there for how to go and add members in all the components around that but also on the development side this is where it gets critical and we've actually released a white paper about how we require some suggestive privacy companies to do a search for Microsoft change their box white paper so if we do have three companies who are three or five ten companies working together in this one disordium how do we go and manage everything around updating the source code, updating smart contracts the point about we've got some things around the DevOps there so we can do things like inside of Azure DevOps whenever we have a full request we can say that we need to have an approval from each of our disordium members before that full request is allowed to come in and update the source code thank you for pointing that out we can go and have a multi-seq wallet so each of the disordium members have to go and sign off before that new deployment can go happen we've got a bunch of different examples which is here local in Japan so here in Japan we're working with a couple of companies to create a new disordium we've got Japan Rail Ease Mizuho Bank Japan Rail Information Services some insurance companies etc so the idea here is enabling the ability as a service trying to help customers get from point A to point B but they go through multiple different service providers as some of you may have seen while you've been in Japan but if you don't understand maybe take your underground jump into a bus so the idea here is having one system that any customer can use and so the first prototype for this we got up and running in 3-4 days because we were using the BS code extension the scaffolding out all of the certifications here you can see here maybe not this in Japanese but we've got the IC721 tokens we're just using industry standards open zeppelin to go step up those out for us we're using the serverless oracles to go and detect what things were happening update the reports so we can show how many customers are using the tickets etc so there are many different ways to go and mash up these things so here we've got the interconnect between Mizuho Bank's traditional backend systems so that's got the open banking API to handle customer accounts so how do we go and connect that in with the blockchain so again we've got those serverless applications to allow a customer to click something do something serverless which goes and updates the ESC20 balances etc etc so then we went back and in another 4 days we went and smashed together another few scenarios so again we've got more ESC20, 721 things happening but again everything we're doing here is helping make sure it's all blockchain fundamentals so for example up here around key management so looking around how to do this with decentralized identity we want to make sure that the VR keys can be used in other places as well so I've been very careful with what I've said because this is all still too shush but that picture isn't the official press release so I'm allowed to talk about that but not much more anything else I'm allowed to talk about so I don't want to get fired so so that was one customer example so to show another way that we can mash these up so another way to mash these up so actually we've done this pattern out of a few customers now we've got high frequency IoT data coming in so I've got IoT devices sending in millions of transactions per second powerfully handled out and secure it so we obviously can't put a million of the transactions per second into a blockchain so what we did is a lot more to help we've got more to assume after the fact confidence that the IoT data hadn't been tampered with we've created up to in the world we can have the millions of IoT devices moving in their data into what we call an event hub so this can handle millions of transactions per second coming in so it's kind of like a hub sub we've got these millions of transactions we've streamed out to a mutable world storage so this is all ISO standard stuff IoT data has been persistent with the mutable blobs which is great while still on my Azure subscription but as soon as I try and I can see that it hasn't been modified as soon as I try to get all data to an auditor I could still modify while it's in transit so how can we make them confident around it so we periodically once it's in a mutable block storage it's half a chain and every minute or 10 minutes we're going to take the hash with those millions of transactions which are sitting there and go and anchor that into a blockchain somewhere so we've actually gone and thrown that up onto GitHub so we've got pictures we've got some source code etc look we just did this quickly we threw it together next month so I'm getting a few people to work with me to build out this documentation a little bit nicer so we'll have some better quick start going to that now all of the stuff that I just showed is one really important link here so we did this same talk at Truffle Club so the link there is Truffle 2019 so if you go aka.ms slash Truffle 2019 you've got a lot of the core things that I just talked about here in a nice reading file so we've got everything that I talked about the core tenants of blockchain first development pretty pictures that you can steal some information about what the connectors are links to VS code extensions etc let's bring that back up so that's the important rule there now with that so Microsoft we do have a what's that all basement so if you go down to the basement you can go and talk to Microsoft that sounds good but thanks everyone


All right. The next session has to do with the rights of the people who will be participating in your groups. You've probably all been to lots of meetings, maybe even other standards bodies. The ITUT as a standardization body has some similarities to most other standards bodies. It also has some differences. First being it's part of the United Nations. It's an intergovernmental organization governed by an international treaty. And just as most participants have not read Resolution 1 or Recommendation A1, probably very few of any of you have read the Constitution and Convention. And that's okay. You don't need to go buy a copy and read that. There are some sections in those higher level documents which do apply and we'll talk about that. It's called the general rules for meetings of the ITU. But we are somewhat different because we have member states. It's also different from other intergovernmental organizations because within ITU we also have private sector and other organizations which also enjoy rights to participate in the work and many cases it's not possible or desirable to differentiate the rights and the participation from the different people who will show up in your meetings. But you do have to understand when it comes to certain decision processes that there are going to be differences. Let me take them one by one. The member states they have the right to participate in all activities of the ITU including your study groups and rapid tour groups, workshops, any activity of ITU. The member states have the right to participate. And they can make contributions to all the meetings. And should there be the need to vote on something the member states have the right to vote. In your groups you will never vote. Probably even up to the study group level you will not see voting. There was one case recently where a study group went through something that was a vote that generated lots of problems and not clear that it really helped progress the work and it was very unusual. I used to be able to say in more than 25 years I had never seen a vote. We don't work by voting. The sector members they have the right to participate in all meetings of ITUT. They can share groups, they can be rapid tours. They take part in progressing the work. They take part in most of the agreements based on consensus. They take part in nearly every phase of the approval procedures. The only part that they cannot take part in if you have to get that far is the final decision making step of the AAP, the alternative approval process. But I can tell you from our experience only about one percent, maybe two percent of recommendations ever get that far, they're all approved before you get to the stage where you have to consult only the member states. Therefore, for most of the work you're going to be engaged in, the member states and sector members will be participating very much the same way. We also have associates. This is not a category of membership. Associates are not associate members, they're just called associates. They pay a smaller level of dues and they can participate in one study group and the groups under that study group. They can take part in the process of submitting contributions, discussing them, and the first part of AAP, which is taking comments on the draft, but they cannot take part in decision making. We have carefully looked at the steps of the AAP and we have written rules, what associates can do and what they cannot do. The one restriction you have to be careful of, associates cannot take part in liaison activities. We know people are clever, they'll think, let me join this one group and then get a pointed liaison repertoire to the other group and then I can go there also. So we said, no, no, you participate in the one group you joined so you cannot be appointed into a liaison role. But other than that, associates can fully participate within the one study group. There's a new group. This was authorized by the Plenty Potentiary Conference about a year and a half ago. This is academia. They can join, again, for a very low amount of dues and they can participate across ITUT, all the study groups, which is interesting because that's a broader right of participation than the associates have. They cannot take part in decision making, but we have not gotten enough experience yet to write down any specific rules, what that means. So there are some guidelines that have been generated by the TSB, but we still need to do some work. Probably this will progress through TSAG until we have some written rules on how to deal with academia. In your work as rapporteurs, I'd say you should welcome them to participate and encourage their contributions. Here's an interesting graphic showing the number of members over the past several years. You can see the top line, the number of sector members has decreased somewhat, but the number of associates and now academia has been increasing. Now there are 500 to 600 sector members. We don't see a five or 600 participants in your meeting. Depending on which group you're in, what your subject is, you may have more or less, hopefully you're getting the right set of experts. Many we think join to have access to the information and they don't actively attend and participate in meetings. Since we have more and more remote participation and electronic working methods, my hope is we'll see more of these sector members participating through electronic and remote means. Yes, question? Who are the associates? If they were member states, they're already members so they don't need to join again. These would probably be a company whose business relates to a particular product or a particular service that is addressed in one study group. Maybe you make optical fiber. You're probably most interested in study group 15. Why join the whole sector if I'm only going to study group 15? Why pay 30,000 Swiss francs a year to join the whole sector? We found that it would be advantageous to us, instead of losing members, to create this category at about one third the level of dues for about 10,000 francs. They can join the one study group that they actually will participate in. So that's who the associates are. I guess if I worked for a company that's in some way an NGO, a non-governmental organization, there are procedures for joining. You would go through your member state, submit your application to the ITU. And within the ITU process, they will judge if you meet the criteria to become either a sector member or an associate. That's probably a legal question and I don't know what criteria are used to accept or reject certain companies. I'm aware of companies that wanted to join and they were all able to join. Yes, question? Thank you. I'm from the University of the Basque Country, which is one of the 19 academia members. And I'm not, you said right now that the academia members cannot be reporters. But I'm not sure if they can be editors of recommendation. Is that already written? Okay, yeah, thanks. Yeah, for academia participants, in the Plunipat resolution that I referred to, it talks about academia participants, not academia members. So it's again, like associates, not a category of membership. But it's a way to participate in the meetings. I would have to check, I will check with TSB. Whether academia participants can be rapporteurs and editors, I think the answer would be yes, but I'll check. So as I mentioned, our goal is to bring in the right set of experts and have everybody working together. Under the rules as they stood, there was a sequence of events to approve a recommendation. It was that the study group adopted the draft. Then there was a formal consultation of the member states to approve the recommendation. That goes back many, many years. We found that after the study group experts had agreed on the text, there was never a case when the formal consultation of the member states changed the decision of the study group. And that took somewhere around six months. In those days, it was a paper-based process of mailing papers around the world. It did not serve any useful purpose. What we did is we took that formal consultation of member states. And we moved it in front of the study group meeting to ask, given the draft text that we point you to, do you give authority to the study group to make the decision for that recommendation? This is now what we call the traditional approval process. The study group agrees on the draft. There's formal consultation of the member states to assign responsibility to the next meeting of the study group. The study group meets and they decide whether it's agreed, whether it's approved or not. In the Plunipot in 1998, one sentence was added to the ITU's convention. And it said that when there are questions, study questions and recommendations, which don't have policy or regulatory implications, then it does not need the formal consultation of the member states. What that meant was, once we had the agreement from the study group, we no longer had to do the formal consultation of member states. That saved a lot of time in the process. That applies to topics where there is no policy or regulatory implication. You'll hear this phrase many times. That became the basis for the alternative approval process. What that meant was once the study group agreed on the text, it was approved. We didn't have to have that additional step. And in reaching that agreement, in general, the member states and sector members are working together and we don't reach the point of having to ask the member states only if they have any objection. So it was a great step forward and it took the approval procedures which went on for more than a year under the traditional process and on average brought that down to about nine weeks. It was incredible. In the first year we did a quick calculation and besides saving a lot of time, we found or we estimated the ITU saved several million francs of not having to mail papers that we don't do that anymore. But at the time we didn't have to mail the draft recommendations to the member states to have them say nothing because they had no further objection and no further comment. So we saved a lot of time and we saved a lot of money and now about 95% of the recommendations are under the AAP. So a couple of things to again remind in any formal voting situations which you will not see at the rapid tour level, only member states have the right to vote in ITU. Only the membership, that's the sector members and the member states and associates and academia have the right to submit contributions. Everything else coming into the study group will be in the form of temporary documents. Just call them TDs and a very handy right that you will have as the chairman of your meeting. If you're chairing a rapid tour group or you're chairing an editing group, you have the right to invite an outside expert who is not a member. We know that we don't do everything and sometimes you need someone to help and then not a member. You have the right and the reference is here in Resolution 1 in 2.3.1. As the chairman of any meeting, you can invite a nonmember. So keep that in mind. It's very, very useful. So quick overview on the rights of the different categories of the participants. Another question? Yeah, about inviting some experts to the meeting. That's because we had similar problems in our one of the last meetings. Those that are invited, they can come, they can produce some presentation in case. But those presentation to be, let's say, usable, they must be presented by one of the sector members or one of the official members. So this invited person cannot present contribution on its own. Contribution only can come from sector members and similar. Associate. Yeah, see here's where now we have multiple rules and you have to understand all of them so you can move the work ahead. You are correct. You can invite a nonmember. And you're also correct that only the membership can submit contributions. So what do you do? You're inviting them because you want their intellectual contribution. What I would do as the chairman is to submit that as a temporary document, a TD. Perhaps as the chairman of the meeting, I submit a TD saying here is a paper from the invited expert and then I would have that person introduce it. So we follow all the rules and contributions come from member states, sector members, associates, and academia. And this other input comes in as a TD. Other questions? Yeah, please. Sorry maybe to come back very basic. Again, about TD and contribution because we have seen editor and a reporter should be neutral completely. So inside a document, we have to make a work, we have to make, we can use contribution as well as TD or there is a difference. I mean, using the content of course. Yeah, OK. The question is there any difference in how you use documents whether it's a contribution or a TD? No, a TD could be the report of someone else's meeting which has a wonderful content and draft recommendation or results that they have contributed could be an incoming liaison statement with vital information that you need to progress your work. So whether it's a TD or a contribution, judge the document on the content, not what we call it. We had a lot of confusion years ago with documents coming from different sources and not being clear who was submitting it. And that's why we made the rule that only the membership submits contributions. That meant if I see something in the C, the contribution series, I don't have to ask, did this come from another standard's body or my friend? I know that it had to come from the membership. Other questions? Yeah, please. Thanks. I just want to continue on the point raised by DD and Flavio. Let's suppose that I wanted to invite an external expert having a bright idea. If I am the chair of the session of the meeting, if I produce a TD, the editor can tell me that is not a contribution. I cannot include that in the recommendation. Is it not better to say, my company produced a contribution based on the expert contribution, expert presentation, and like that we have not this problem? That is a contribution included. That could be included in the recommendation. Is it not better that saying it is a TD? OK, thank you. Consuming being on the microphone, everyone is hearing that, text ideas that go into recommendations do not come only from contributions. They could come from an incoming liaison statement, which is a TD. It could come from the report of another repertoire group, which is a TD. So it's not the case that only contributions can be discussed or wind up in a recommendation. If your company wants to put its own name on that, that's a decision of your company. That's not an ITU issue. And to put your own company's name on another expert's input would have to go through your own internal review and approval process. My guess is that most companies would not put their name on somebody else's contribution in the general case, unless they happened to agree with it. What I would do in that case, taking off my chairman's hat, I'd say, if I let the expert submit it and it comes in as a TD, then I can support it from the floor. That gives me two votes. If I have someone else introduce my idea, then I can support it. And it looks like there's more support. Another trick of standards participants. Yes, please. Thank you, Mr. Chairman. I try to also provide an additional comment that might be useful. I didn't hear so far the difference between deadlines for contribution and TDs. This might solve some of the problems, because the contribution have 12 days deadline and can never be submitted during a meeting. So you have no choice during a meeting. You cannot submit a contribution. You can submit only TD. What for the TDs? Let's go ahead. Thank you. Yeah, thank you. TSB is pointing out, the secretariat keeps us honest. There are rules for submitting contributions and TDs. I'll talk about that in the session called Inputs.