 Thank you. Good morning. So I'm talking about enterprise mark contracts at 15 minutes. It's a pretty deep topic This is also known as Criplets enterprise mark contracts. It's a nice marketing term for people that aren't very technical But let's talk about some background first. So in Azure Microsoft cloud platform We have some pillars that we've built upon To build this platform the first of which is identity as your active directory is an open federated Identity system supports open authentication It's the dominant Identity system used in a crisis today And it allows us to do open federation Second is a secret storage or hsm's so we have hsm's at scale and something called azure key vault That lets you bring your own keys bring your own secrets and things like that recently announced the confidential compute platform, which is essentially describing enclaves at scale in the cloud both SGX and what we call hypervisor based or hsm excuse me VSM Based enclaves that allow you to have secure confidential Compute in the cloud and then lastly hyperscale so we have a platform that was developed called service fabric That runs things like Xbox live. So we have like this massively scalable Platform that we can we can build upon So let's describe what this does so ESC is the acronym we're using so enterprise mark contracts essentially Under the covers we call the the ESC framework running in and excuse me the ESC fabric Running has some core infrastructure capabilities. The first of which is we authenticate users So we use azure active directory to authenticate these users now don't think we can use this to authenticate using Facebook if you want to But essentially you authenticate the user with an attach a message that flows into the system to create a secure session Criplets themselves have dependencies meaning this is what are required or require an enclave What kind of runtime environment do I need am I a dot net or a Java or a rust Criplet So those dependencies are inspected and then the infrastructure has essentially Many hsm's available to it. Those can be in the cloud. They can also be on-prem And then we pool scarce resources on claims would be one of them But we envision that you would want to use things like FPGAs to accelerate zero-knowledge proof generation ASICs GPUs whatever some sort of combination. So we allow you to have single sort of We call them delegates essentially, but you're delegating your cryptographic operations to this enclave environment So what happens at runtime is a crypto delegate gets built that will be injected with an enclave With the appropriate secrets and the appropriate api's that you're trying to use for the platforms if you're using ecc You'll get the appropriate ecc libraries You also might get a composite where you would get both an enclave and an FPGA and you can call this thing a foo And give me a foo at runtime and then I'll have my algorithm generate those air knowledge proof or Whatever you want to do so you can really compose this hardware acceleration For the requirements that you have so this allows us to do things like dynamic allocation and deallocation So we pull these resources to get massive scale And also reduces cost so you can start doing very innovative things with low cost Because you're only paying for what you're using so you're not gonna pay for all this stuff 24 by 7 you're gonna pay for it for the second or two depending what you're doing that you're actually using it for transaction now We'll talk more about some of the ramifications of this but You can do everything from just basic signatures to threshold encryption. So you can do encryption in the cloud as well using these So the broader framework we do support multiple ledgers down at the bottom. We have a couple years ago We announced blockchain as a service I unfortunately named it that for some reason seemed like a good idea at the time essentially it was based on a theorem Everything we do at Microsoft really starts with a theorem when we sort of branch out from there So it applies the theorem alliance or quorum and things like that But we also support quarter and these others because we abstract Them away with what we call the blockchain router and this is a common abstraction pattern Where we define a basic interface where anyone can write a connector that plugs into the router has a simple interface Definition and then it has very blockchain specific Knows how to create blockchain specific transactions You will create contract proxies, which is essentially taking that next step where we talk about a type system cripplets don't know What blockchain they're talking to they don't care they deal with message types So strongly typed messages are very important for contractual business We need to know not only what a message structure is but what data types are embedded We can't don't allow variants. They need to be declared integers or doubles or floats or whatever or composite types Criplets will then use those message types And then they pass them down to the proxy the proxy can ingest Those message types and then convert them into the appropriate blockchain transaction. You see the scripted delegates Attached to these various locations. These things are again generated on the fly We support multiple signatures. So you have if you're familiar with certificate chains, we call it a crippled onion with your layers of Crypto Validations of each operation both from an attestation standpoint that the code ran Confidentially from the enclave to the source of your data actually came from where it was supposed to come So we create this signature onion each signature validates all the nested Signatures underneath it. So we sign at multiple levels. We also have cypher diversity. So you can sign with ECC RSA any Cyphers that you want to support. It's a very flexible platform Up at the top so these cripples will talk about them a little bit later You can write them in dotnet Java today, but we're native, but we'll support Any sort of platforms? We're agnostic what you want to do you'll it'll be open so that you can port your own runtime And create your own container that runs in this platform above the layer We're using standard and QP if you're not familiar with that. That's a ISO standard for for messaging. It's used in the enterprise So we're using and QP is the basic interface And those messages the strong type messages are what are being passed back and forth So you define your API with your types and your messages You can stick a rest or an RPC on top of that message A and QP very simply and easily or you can just serialize your messages to JSON, which is the default So it's a very open platform very easy to integrate into any front-end application or any existing application a Couple of things that you should note about this if you the cripples are running above the blockchain They can run in a singleton pattern. You can also reach out Criplets can communicate with each other. So we talk about blockchain oracles You can certainly write a blockchain oracle here and write Attested data to an any underlying blockchain if you're thinking about writing an oracle and you're concerned if you know How do I support multiple blockchains? This is one way for you to do that to write your oracle once and support many different blockchains But you can also do oracle services directly from cripplet to cripplet So you can have a utility cripplet, which is what we usually call an oracle because it could do more than that Actually pass a tested data to another cripplet that's running a contract We have three basic cripplets you have your utility cripplets Those are the ones that can Provide a tested data, but you can also connect to an ERP system You could react to some sort of event that happens in the outside world Very easily and then that utility cripplet can then communicate with what we call a contract cripplet Which represents your typical smart contract or enterprise smart contract is what we call it But we also have a token cripplet as well In the spirit of this conference, which essentially is a contract cripplet with token behaviors exposed as well and it allows you to create these types of Scenarios so the token cripplet for example is very interesting if you create a token cripplet the cripplet actually controls all the ERC 20 sort of functions, so the the issue the transfer the burn The minting all that stuff Controlled through the cripplet itself, but then I can extend the behavior so I can add behavior For my token off-chain and that can also assume the identity and use The identity of the person that has a balance for that token so you do some very interesting things with this platform As well, so we're not really sure what our customers are going to do But the interesting thing is you can do cripplet to cripplet Grip on the outside and then also you can Create your proxy you can have it monitor events of the local blockchain and react to them as well in the outside world So how do you get started a lot of people have asked we've been talking about this for some time When do I get to see code? When do I when can I play with this? Well, we tried to get this done before the show. We're gonna come out Say it's open here. Go run this go this URL and you can get a test drive We couldn't pull that off in time But as soon within the next I hope Two weeks we'll be able to have an environment where you can go out and do a test drive We can stand up this environment and you can build an enterprise smart contract and cripplets From scratch to start learning and this platform is currently in what we call early adopter or private early adopter Preview or private preview which we're going into a regular cadence. I'll talk about that in a little bit But if you're building these things essentially all you have to do the infrastructure is built for you abstracted from you, so As you would expect you simply focus on what you're trying to do The first thing you always will talk about us, you know contract first development So you will develop your message types So you define your message types and you can pick your language and dot enters job And this is what it looks like Pretty simple getters and setters that are basically properties. This is in C sharp We're inheriting. This is a token cripplet Inherit from the base token and then it has constructor messages create token that derives from the base token constructor And we have you know like return types down here. You can see Others we can have time. I'll switch over and show you some some more of the code But this is the sample of the type the types that you'll do So you really simple types that serialized JSON. So You just got to pay attention to that you really the framework takes care of the zero serialization for you So it's standardized if you ever done cross-platform serialization with JSON It's not as smooth as it always seems it should be but we've taken care of that for you Next you then write your Criplet code utility contract or token putting what you're writing you'll derive from you're always derived from the base Criplet Class here, so this is the token cripplet then you will implement the interfaces There's a contract cripplet interface by default a token cripplet is a contract cripplet you cannot be a token cripplet without being a contract and that has to do with The isolation level that the code runs in Whereas a utility cripplet can be multi-tenant so I can have multiple subscribers to an Oracle type service a Contract cripplet can only have one binding and what we call it a simple essentially a binding each instance of that same Binding gets a new instance of a cripplet that's either running in a full on claved environment or a partial on claved environment with a cryptid elegant So Criplet had basic constructors. This is where we constructed API Criplets can be inspected by simply passing a real simple message in the framework and saying tell me about the cripplets You have registered and you can pick one cripplet say tell me what your API is what that means is it's going to take here That's functions. These are these message types. I defined as the types When I say these all serialize automatically to JSON So when I query it's gonna serialize all these things here are my functions with their JSON structure and here are my returns With their JSON structure, so you know exactly how to communicate with it So you can construct your own libraries or we can provide you a jar file or a DLL for you to work with those types very simple stuff Then lastly you need to generate your proxy so This is where the We're tooling comes in play so we're doing a lot of work around the tooling so we'll generate as much of the Proxy as possible for you So there's two types of ways to generate Object models that get some sort of underlying data structure you can do it what we call data first That's where you've established the database like a single database or whatever or solidity in this case And then I can use that to then Create a proxy from that structure. So meaning I already have my solidity defined. I can then generate a proxy now usually when you're writing your solidity for an enterprise smart contract you only want to put the logic down there But makes sense to put down in your enterprise smart con or excuse me in your smart contract so you want to do things that that if you're Transitioning assets or changing ownership for assets that are providence on that blockchain Then you want to do that and perform that logic on the in your solidity code There's lots of nuances there, but essentially we'll generate the proxy first Code first is where you have the type system that you define and we'll then Create the solidity for you But you do some basic customizations these proxies can be written in any platform as well This is using the theorem so the tier the theorem team the guys at consensus are Doing a lot of work For generating the proxies for this platform And we expect each of the major platform providers and anyone will be able to take the standard interface which has an Initialized function and an execute async function. That's it And you can plug it into the router. It just works So again today we're supporting.net JVM and native will listen to our customers if you have a particular run time You're interested in there's enough demand. We'll do the work Of course, it'll be open so that you will be able to Create your own and port over there. We're gonna do rich tooling with visual studio and visual studio code as well We'll you'll see that in the test drive when you start to play with it in a couple weeks so follow-ups at a time here come by our booth We're just outside the door here while doing demos you can go more in-depth and code you get hands-on the hands-on labs Actually see what it looks like Watch for the the test drive coming out in a couple of weeks That don't include the hands-on labs the extensions and the sample source will be released at the same time So you if you if your code is not working go look at the finished code to see what's what you've done wrong And then I will be transitioning from public from private preview to more public previews in the coming months. Thank you