Hashing It Out #43 - Kadena - Stuart Popejoy and Emily Pillmore
Uh-huh. Everybody before we start the show where to tell you about our sponsor for this episode. Once again, it is episodes sponsored by trail bits. Bates is a cyber security firm spinning it's time. Making sure you're writing smart secure, inefficient code previously, talked about some of their tooling that the used such as slower the conferences they put on for to educate people as well as the blogs. They put out to make sure that your update on what's currently working how to use their products, and what to look out for when you're trying to build products. Today's the episode. We want to tell you about a new feature that they're building which will be releasing the next coming weeks called critic that C R Y T. I C critic is going to be continuous asserts for smart contracts, and that is a good hub integration. Every time you deploy or commit to a good hub, Ribaud smart contracts in it critic will run a suite of security Elena's tools, you get immediate security feedback. That means that as you're doing your development. They're getting immediate feedback that having to set up anything just your contract as you're doing developments in you'll get results without having to set anything up. That's a big boon for my experience in Barkat relevant because it's really hard to figure out how to set up all of the different smart contracts and Alice's tools and make sure that your virus set up properly much better to just integrate something you're good have commit and get immediate results. If you're Mitch to this. You should be doing spark developments. Goto critic dot IO that C R Y TIC dot IO. Enjoy the show. Injury. All castes worried. Welcome to hashing it out a podcast restocked to the tech innovators behind blocked in infrastructure, and decentralized networks, we dive into the weeds to get at Wyan help people build this technology the problems they face along the way. Homeless alarm the best in the business. Hugh, join their ranks. Welcome back. Everybody. Oh, forty three of hashing it out as always I am Dr Corey petty your host with my co-host, Colin Kuche, say Howdy. Everybody calling. How everybody Colin with some spunk. Actually it now. Today. We're talking again with Cadena as a returning guests from us. We have Emily and steward with us from container. We really are fans of the concept of the project are doing and are interested in what? And how it's how it's painting out. So I guess without further ado, Stewart, Emily, can you give us a quick action? As to how you got involved in the space, and what your role is at Cadena. What continues? Sure, I'll start my name's Stuart Popejoy. It's great to be back on housing it out with you guys really enjoyed discussion last time and looking for talking more. I'm a co founder of Kadena we founded in two thousand sixteen with the private blockchain solution in open source, star smart contract language, and later that year and recently, we launched the tests NAT of our public multi chain, scalable level, one watch chain chain web, which also runs the pack smart contract language. So we're having a lot of fun here. And that's what we're doing. Great. I guess I'll go next. My name's Emily Fillmore. I am the maintain their of the pact smart contract language, and I've been in engineer with Cadena for the past eight or nine months, I think, and I I am a sort of chartered mathematician here working on the the core language as well as the for verification bits. Let's awesome. So Stewart, I believe we kinda whatever your background before you came mostly from belief fintech is, correct. Your talk, you massively, scalable distributed, the financial transaction systems kind you background. Is that correct? Yeah. So building a high volume equity trading system for Jp Morgan that amongst other things included a user programmable language for writing ah benchmark algorithms that informed some of the stuff we didn't packed on. And before that I had been working more on the kind of boutiques offer space building trading software building exchange backgrounds in. Yeah. These are all high frequency systems. It's kind make simple you get onto the Cadena side of why you would have the insights you did. With regard to Cadenas is Dana that Cadena. It's today. It's Dane, okay. Cadenas on. Yeah. Yeah. Yes. It's a it's one of ambitious pronunciations based off the way it looks on. So you've got you've got a it makes you would pursue this project. Consider your experience. Emily, what got you into the space? What what is your background? How did you get in the form of fixation side out? Why are you so good at math? Thanks. I actually got my start in the financial industry. So I got my start right out of college in Utah as an analyst for Goldman Sachs, and I slowly transitioned into the model verification validation space working for the Boston consulting group here in New York City, and eventually fell in love with functional programming where I gravitated toward Haskell as the best application of my experiences, which just happened to naturally sit in this sort of golden mean between logic programming where formal verification sits and the financial industry, which seems to make use of it internally at least to a reasonable enough degree to get a job. And then I came to Kadena 'cause I was very interested in their their tech stack as well. As some of the people that were here like Stewart and one of our is at the director of engineering Doug beard. Who is a a huge name in the house, go space, and like here, we are. Now. That's a nice transition. I think in to guess. Yes. Maybe one of the better ways introduced this whole concept is what is formal forever -cation, and you languages. How is the language choice involved with ability to do so? It's an interesting question. Now, I think it depends on how you define for verification because there are there's there's a lot of sort of ambiguity in the term of formal for one and then fare fixation, meaning, you know, what methods are you actually applying to whatever it is that you're trying to formally verify that actually makes it quote verified. And I think you can split this into a few different levels of what it means to be verified. There's some people that think that you if you have a spec, which says my program is supposed to do this for you know, whatever it is whether it's a program where distributed system or something if things is supposed to work this way. Then if you write a program than it's supposed to work as we say it does. And then there's another level which says not only do you have to have a sort of specification for behavior. But you also. Have to show that through some means whether it's bouncing off of the theory improver or formally specifying in terms of a semantic how your program is supposed to work and verifying it year, those pruder's, and then there's further another section of people who believe that you can only quote, formally verify something if you have a mathematically proven semantic for which you can fully specify language in terms of theory improver and then execute each one of those proofs in terms of the theory improver to show that the the semantics are cracked, and then you derive your entire language from that that specification instead of proofs. So the language has to do with whether or not you're even capable of doing it. And and what is what is packed different in such a way that? You're able to then say you can formally verify. Thanks. Right. So this is a subtle point about programming languages in general. You can't mathematically prove or verifying on determined him. You can only verify the parts of your language, which are total. What we call total in the space and by total. We mean, they reduced to a single value, which is a concrete value and turn completeness turing completeness have a lot to do with this. So turing complete languages are languages, which can admit non deterministic behaviors at the boundaries of the program. So for instance, recur cing indefinitely or talking over a network, or, you know, whole bunch of other types of behaviors like that which deal with not exactly concrete values, but like operations that can sort of indefinitely. Hang or throw errors, which you your programs can't really handle unless you have like a a way of handling exception. Whereas turing incomplete refers to. Only those programs which terminate to a single value. Right. So when you model the mathematical semantics of this, there's no real, I guess principled way of handling those non deterministic values, which means that you can only ever verify the behavior of those programs which actually terminate right? So wait a minute. Wait a minute. Actually. I don't think I quite follow that. So actually just say that one more time for me because what what what I heard was that scene. Your definition of the different touring Clinton touring. Please turn complete does necessarily have to turn. Well, this is my actually this is more my understanding of it. Maybe you can help me fear science background. But like the way you said, it didn't quite seem to jive how I'd normally say it in that turning complete is kind of like, you don't it. It's you know, it's going to terminate because you're operating on basically finite boundaries as you can't have infinite four loose because not infinite amount of data. You can't have it's not a long. Infant tape of ticker tape of of information, even possible within the system, and so you know, avenged it's going to terminate. So what am I missing there in? Why do you make 'em? I did. I misunderstand what she said her, right? No. That's that's a sort of meta argument though, that says in the real world our programs will always terminate because there's a finite amount of data. But when you specify the stuff in terms of mathematical properties. You consider real just does it missing or admitting like, you know, infinite boundaries, incident tapes and infinite programs, right? So to say something turing complete is to say that in this sort of idealized world, you have the ability to model a tape which is infinite which will run infinitely. That's it. This is the way the machine actually works means that you don't have something that can recur or lasts forever within like the functions. Who cares about the ticker tape? You can always have if tickertape, but like like infinite loops definitely means that it's a it's it's not a Terry. Incomplete language. Yes in so does recur Shen and the ability to append data to a particular array itself would allow you to do that. So if you could actually or penned a piece of data they Ray in the middle of loop. Then you've basically extended the length of loopless that loop has Terminator which is dependent on these kind of things allow you to extend the length of the tape, and that kind of extension ability is what I understood would cause turn completeness now from what I understand for packs. There's there's is it's basically your operating on knowns only knowns, and you can't have loops which triggers infinitely are over over a indeterminable length of data, and you can't have calls which functions was called themselves. And so that's just based off our conversation Stewart before. Is that inaccurate assessment of what you guys are doing there? Yeah. That's that's fairly accurate. Although there was a point here, which I think is a an interesting one just for your understanding of turn complete versus incompleteness recurs doesn't mean that you have the potential to have non terminating recurring. You can have things which are recur sive which terminate you just have to provide proof at each step that the arguments are are decreasing to the point where they get to you know, one single step. And then that single step is like the final step in your your recurring. That is exceptionally interesting to me. So is there there's an ability to actually do that where you can actually say I could prove for all given inputs that this particular rehearsal function will not add information to steps always reduced zero. Right. And that's that's that's sort of bearing on on what we're going to get to eventually, which is witnesses to what we call excess ability. Where we can actually reach the code that. We're going to get to provide proof that each step that we can continually get their provides proof that our programs will terminate. So these witnesses to termination are the things that that define whether something is actually trying incomplete versus actually turing complete right? If you're complete you don't have a witness to termination. At all one thing. I wanted. I one just jump in here and say, too is that I think one thing we're getting which is an interesting subtle point on pact. Is that packs approach deterring incompleteness was motivated before we sought to admit the entire the ID? We didn't even know that we'd be able to admit the entire language to formal verification that was something that kind of a rival based on our design decisions. And so one of the things Emily's discussing there is the fact that you can have recurs in, you know, there are there are ways to admit recurs in that make for a well behaved program that terminates. I'm one of the reasons why pact is even more strict than that is simply because my experience in Ryan in designing languages for everybody. Not just programmers is that non programmers, full programmers. Screw up occurs in all the time. Yes. The number one of and end, they're the hardest bugs track down as well. So so the idea there is that. Hacked in addition to you know, having this nice feature being formerly verifiable wants to make it very hard for a programmer to make even trivial bugs of the nature. Where you're you know, what are you trying to get done? Do you really wanna call function on it self because if you subtly change state in that mode? It's it's very hard to load that into your brain. Whereas something simpler, where you're operating over a list, which is something the pack encourages allows you to kind of move the problem into data, which you know, you see this. This is more general program can see this all over for instance, in game programming where they try to move out of intense logic and try to express as many things as they can in kind of a raise the data for many reasons in this. We found this with pack to that you actually get better performance out of your system. A lot of these same things that Seema steer on the on the face of it. In the case of packed allow us to inline code on. Netflix. We can cut that out. A couple of seconds. So in the case of pack. This kind of thing allows us to you know, inline code aggressively. And you know, there's just there's a myriad amount of benefits that come out of this and formal verification emerged quickly as something that, you know, was that we wanted to explore and then it was very fruitful. So I think this is that the conversation about recurs in the larger conversation occurs. It's going to be very interesting. If we get a chance to touch on some of the other efforts and formal verification and blockchain outside, and we've got plenty of time to kind of get into that of before we do that. Let's let's you brought up something that is interesting to me. That's the idea that I write inaugur them. And I have personal expectations of how this hour them. Not only works, but also performs. I have never used. A former verified language, I'm gonna lay that out there. I don't know very many. It's not something that comes up, you know, in my day to day. It's I'm going to interact with pack packed. How do I write? Let's start with the very basics. How do I write from user experience perspective a piece of code Intel the system, I really wanted to do this, and it can actually verify that is there is that the missing the intent of what you're saying. Or is that something you can actually do what does that look like that's precisely the intended system in. And I think the thing that's gonna make packed unique is not going to be so much. It's formal properties. Although they are you know, Emily can talk more about some packs. Interesting formal properties. But it's the fact that hacks shape of makes this stuff so tractable on the easiest way to do. It is go to pack dot ca Danna dot IO and start using our web up all nursing example. In their that. I don't know if we wanted to share a screen, but I just wanna make sure I know the name of the example contract there. Anyway. Okay. Yeah. So was on there. There's an example contract at is. I think it's called formula replication, or it's got something like that in its title. And what it shows you it's a single function smart contract. Oh, no. It's the one that comes up when you go to so you just go to pack dot, it's the first one to come up, and there's a before the actual code of the function, which is this absolute value function. That's got this really weird bug in it that basically is a quadrajet equation based on the input and win that when you solve that too negative one or when you solve that to some random number. That's in there, some weird number it'll return negative one. Otherwise, it does ABS right. The point is is that all you have to do to test. That is put in a property that says that it's an. CBS function. Right. Well, what do you want it to do you want the result to be graded enter equal to zero? So you put that property in there, and the formal verification system finds this magic number. I mean, the the function is basically like. It's it's some ridiculous thing where it's like multiplying and dividing than finally uses this constant which is like five hundred and twenty two billion eight hundred and thirty years. Like, it's dividing by that. So it's it's a number. You couldn't it's pretty hard to do in your head. And it it just discovers this number and says for this one value your property will fail and this is done through people would typically called fuzzy, right? It's not just it's thrilling thousands or millions in moods guesses to try and find this thing it's doing through like algebraic manipulation is correct. It it's doing it by turning the program into a model, and then examining the space of all database states and all possible inputs and finding a model. That's the thing about our system is at finds a model. It doesn't find every model. It finds you a model that falsifies it. And then it says here, it is and gives it to you, and then you can test it you put it into the function and outcomes negative one. So if you give it a it will literally go be able to find that one number in from zero to index that would that would literally feel the entire program. It's worse with pack because packed actually supports more than max packed has has. No, no. I mean, packed has has uses the Haskell injure type, which is I mean, I guess at the end of the day. It's it's machine dependent. But it's it's it's way bigger than like two hundred fifty six eight word. Let's put that way. Holy. Yeah. So I mean, it's examining a huge space, and unlike fuzzier, I mean, fussers are great. But you know, if you've ever worked with them, they don't always come back with your buck. You know, they all beauty verification is that it's it's mathematically true in the whole curious about is like and complex contracts or multiple smart contracts, or whatever you call them impact to her. That search face grows exponentially with like, maybe the number of transactions number of steps you have to get through to search the entire space does that become a computational burden over time to stick to snow and of simplicity. No. And the reason why is not through any magic that. We're doing all the Z three. The back end. We use is incredibly fastened is noted as being the the fastest essence he's all out there and was close source until three years ago. Microsoft open sourcing was a huge gift to the open source to me at some. But the way the way pack deals with it is the fact that we, you know, if you wanna write something if you wanted to formally verify your contract, call some other contractor, call some other contract because some other contract, and they're all writing to the database in line, and you wanted to verify something that comes out of that long chain of things and potentially you could get into a proof that would take longer, but the, but the way if. From a software engineering approach, if you think about it that's pretty unsafe way to write a contract, you know, like you'd probably want to write a contract. That knows what it's going to be getting a pretty good idea. What those are going to be and then wants to verify what it doesn't data. So all I'm trying to say is that the same approach is used for goods offer engineering anywhere else. Modulars ation, you know, separation of concerns benefits, your formal verification layer by limiting the space of what it has to search. So the whole question of like Lincoln to other contracts is a very deep question that pact has a very principle solution for on for insurance code stability. But one of the things that since pact is free text on the blockchain, you know. You can go look at the actual codex cues, including the proofs means you can take those you can take that those code down and run the proofs on that as well. So it's really kind of broken up in that regard. So that while. Well, yes, you would be the form of application system does run through all your linked code. It's always verifying the entire system again, turning, and we can only do this because it's turning incomplete. Most languages do. Not support Lincoln, you know, like a million other libraries, but we have to all this stuff impact is once you load, your code all that stuff is Lincoln, and the formal verification versus all of that. And and we have yet to see anything take, you know, the thing to realize about, you know, complex smart contracts is that they may be complex in terms of their business logic. But chances are they're not that complex in terms of the rock computation that's going on because it's just too expensive to do that stuff and watching and that makes sense and it actually from from a contract contract perspective because each individual contract is formally verified. You can probably just treat them as isolated functions of themselves of thinking, it'd be very very difficult to I mean, very very easy to. To just say, hey, this is a known, and formerly verify as that contract is unknown guarantee. Just because it's impact it's written a certain way in it. Here's to certain properties. So Emily, I have a question for you. If by the getting a little feedback on the Mike if somebody's got a measure all needed might be gonna lie. Emily. I I got a question for you. How does formal verification work? Let's start with that. Because like we're going into the user experience side of things from a developer's perspective and that was intentional because really wanted to tell the story first before we got into the nitty gritty details. What we really wanted you on the program for all, right? So we have an audience of really highly skilled technical engineers who really wanna learn from you, and I just from from stir beginning square one. How did you have you build us in like what does it take? What parts are involved in this? This is such a huge question. So give us a course. All right. All right. We'll start I guess we can start with like big improvers like cock and Agta which CO Q cock is sort of. Theorem prove from the nineteen eighties built on this one version of the Lambda calculus called calculus of inductive constructions, which is like a fully dependent types just beautiful system. That can prove basically anything you want. That's in the subset of constructive mathematics. And the idea is you start from a language, which is sort of the broadest generality, which which caucus in this case, and you can write statements that look like mathematical statements using this this like, it's it's almost brand new foundation for mathematics, you sort of define your universe from the ground up using this core language, which can express all the things you want to express in constructive. Mathematics like universal and existential quantification like functions like how they interact with variables. And and so on in. You basically build your entire mathematical universe from scratch, which is what they've done now something like Z. And that's that's basically like if you can express something mathematically or constructively in of constructive mathematics. Then you can probably write it in cock. And that's what people do if they want like like simplicity did this or Tesco's. Did this actually was I think was it Mickelson some one of their Mickelson contract contracts. I think they modeled entirely in terms of cock, which is, you know, mathematically, sound you can running the program is the equivalent of you know, verifying that the proof is correct. And if you can model something in this and it runs, then you've effectively said, correct statement and constructive mathematics, which is really really cool now something like S T solvers, they support certain kinds of theories. So if you wanna think about like, the what is this t- stand for? So satisfy ability months you'll oh series. So it looks for a like, what are the prologue is just sat right? Yeah. I think so. Yeah. So it's like the next level up from something like pro. So theories in that that sense mean what theories do the does with your improve her actually support? And in the case of Z three. I think it's like things like real number arithmetic integer arithmetic certain kinds of Polly no meal arithmetic. Stuff like that basically up through. I think what first order predicate calculus like four all and existential quantify here's in symbolic bullying calculus. So if you can write a statement that looks like for all x there exists. The why such that, you know, some predicate Z three will be able to take a look at that statement. And if x and wire in the spaces that can consort verify, then it will be able to run around, and and look to see if there's a model that satisfies the negation of that theory, which is exactly what what that example that Stewart was talking about with packed where it will run around and look for not greater than or equal to zero at which is less than zero and it will produce a witness to the unsatisfied. Satisfy ability of the negation of the statement that you just made which is it. Turns out to be you know, for various reasons. Algorithm, ikley quicker and less complex studio within actually proving the whole class of things that are satisfied by by the statement yet. No that makes sense because you don't want to traverse the entire, you know, possible search face, you wanna find that one case, it doesn't I I'm surprised there's method to do that though to me that that that's that's that's the part that blows my mind, and that's the part of really hoping you could get into because I don't understand how that works. I can understand force part of it. I can even understand more like a more. You know, careful selection of data to to to slick down information that can actually find find something that's a candidate for being wrong. But this is not even doing that is blowing past all of that just going straight to the answer. This is where it fails. It only has to find one negation to prove that you're is wrong. And it doesn't have to find all of them. It just says the fine one. How does it frigging do that? I wanna give shot at this. That's the way I currently understand things as appropriate. Mathematicians have been doing this with with proofs like bath proofs for for centuries. Right. And it's you constructed algebra that's built up axiomatic statements via soom these things to be true. Then you can say, you know, based on that based on those Xia GMs these truths. We're going to define these these constants that live inside these domains excellence between so and so forth while since before so on and so forth. And then you say now, I'm going to say because I'm gonna say this statement is true. And then mathematicians can work backwards from all the axioms that the build up up based on what you said was true from the foundation. This can't be right because I've I've built up all of these true statements from the core of things that basically equals an inequality. So this thing eagles this. And also, this thing doesn't equal this at the same time, which means that it's it's just doesn't exist. Well, that's that's true. Yeah. Doing it faster. Well, essentially about faster. That's that's I the reason why I'm blown away. Because what you just said is actually kinda hand lady mathematician, spend their entire lives working on proves. Sometimes, you know, like this is not like just something that they just pull out of there. There's a bunch of creative insight. It feels like a lot of times. Yes, it can be reduced logic. Once you have the answer. You can absolutely prove it. But like a lot of this stuff is very like proves her not trivial in half a century of work in this field. Like since the sixties people have been working on this stuff in basically, like how do we translate you know, implication into an earth medic statement in a certain kind of Lambda calculus? How do we translate entire strings of Bouillon predicates into computers, speak, basically, and it all comes down to having a very. Strong core language, which can actually express a subset of mathematics, which is the Lambda calculus in most cases. So there's kind of a famous theorem sitting in the space called the curry Howard, ice morphism or the curry Howard limbic ice morphism. If your more recent which says that there is a a a correspondence as a sameness a degree of sameness to the way, people talk about logical propositions and the way they talk about programs for specific kinds of calculate on computers. So things like function types correspond, really neatly and actually are sort of the same as an implication. You give me an A, and you've got to be whereas dysfunctions correspond really nicely with co products in our like Haskell or something like an either data type you have either the thing on the left. The thing on the rate, and you know, all the theorems associated with that or products in form of tools in these statements all sort of translate, you know, really really nicely into computer speak, and you can build an entire mathematical universe by exploiting this ice morphism and results from you know, logic and results from computer science and intermingling the to in order to create this this verifiable space, which is basically what we're doing this whole time. And actually, you can do this in any language like Java script if you want it. Well, let me let me let me make this a little more concrete for one moment them. All right. So to me, it's very easy to understand. I guess the possibility even though it's still mind blowing the possibility of finding that one thing that negates a particular thing to disprove a particular function, the the converse of that is that you need to verify that it doesn't have that, you know. And so let's say I wanted to code up a something that takes a map of any kind and will. Of our? I guess. Yeah. L let's just called him half. Because it's that's what people commonly understand it as, but it's basically a graph with regions and we wanted determine whether or not you can use four colors to color this. Okay. You need to only find now before color theme is proven like it's was proven admitted to thousands. But it took all the way that that long for mathmetician, economists was actually converse his hand in that to prove the four color theorem. So what would that what how would a formally verified language look at that in? How would they know whether? Yeah, I mean that is always true based on the algorithm, you give in that. It actually satisfies a four color for color mapping, is that makes sense. I the one thing I just jump into say that that does fall into the realm of classic like end p complete problems and things like that. And there's any number of things. Might do that computer where you'd employ dynamic programming or you'd employ machine learning or you'd employ, you know, any number of complex algorithm techniques and being able to prove properties, you know, to take the next step and prove properties of whatever nifty approach like, for instance, dynamic programming is, you know, his very nifty. I mean, it it it it manages to take a, you know, to shrink a search space tremendously. But it's an optimization, right? It's not the raw problem is both simpler and harder. So if he wanted to admit that formal verification, you'd have to decide are you talking about the raw problem itself because I might be quite easy to express and say some things about or are you talking about a specific solution that will get the job done for you with certain asymptotically that gets quite complex, and you might have a hard time. You know? I mean, I form of Africa. Good certainly aid you there. But you know, I think you'd have a hard time talking about that in general because necessarily your concerns are going to be, you know, and they're even things, you know, people are obviously proving things about algorithms. But you know, that's just a space of computer engineering that has its own concerns and form verification is more about the techniques. You know, the formality is more about the techniques you do to kind of shrink your search space and less about the semi cents than the problem. You're trying to solve which might he. Both more elegant and more intractable. So it's just trying to prove that whatever you're doing will not produce a wrong issue result. So if you put a tolerance, you know acceptance in there like we can have one that's ordered or whatever that would be that's two colors at a boarding. But we can't have more than that. Would that be something? Like, I don't understand quite the way. I've understood in terms of how other other tooling works that that offers global verification is that you give it a list of various the more variance would give it the better. It is the reason about whether or not those things ever broken based on what you wrote. So you say like this thing will always hold true. This thing will always hold on true. There's no scenario where this thing. She'd ever equal this thing and the more that listen various, you give it the easier. It is from verification to say, Yep. All that all that is withheld within the confines of the thing that you built is that decent way of kind of explaining what the whole goal is here. I think one thing that makes this conversation that threatens to make this conversation overly abstract is that you know, as Emily was saying this work has been going on. I mean, there's been tremendous work in the space. You know, the work on formal verification is never really stopped. But when you're in computer science, the problem in engineering, the problem is that computer engineering has not advanced nearly as far, you know. You know, in terms of like formal things it's like we've advanced in terms of like rock computing power. We've Branston terms lots of things. But in terms of as programmers there hasn't been a ton of like amazing innovation since the sixties or the seventies. You know, a lot of the programming languages. We use are very similar to see or lists for these things that came out a long time ago. And the reason why I say that is not just not to is to say that one of the things it's weird is that, you know, kind of programmers whose day job it is to solve problems with the computer for a normal human beings. A lot of them don't have access to formal verification as a tool, and that's one of the things that we really wanted to do with pact is try to make it that the, you know, the program who doesn't understand all these things that we're talking about Ken still say something like, well, gosh, I know that this thing I know that my balance column can never go blow zero. I just know that and if. If you can give me a way to express that. And it can show me show me where I'm wrong, and I can trust in that system. Then that becomes very useful. And that's a very unusual thing. Like, I never seen it ever. In anything. I've done in twenty five years offer engineering. I've never liked prince packed similar Davis program. No one ever offered me something for when I write my like wait for oh, also, we'll find all your bugs for you. Like nobody ever offered that. Everyone was hell terrible era. Messages are. Yeah. Well, and you know, and then and then the practices unit testing, of course, but unit testing is. Of course, the program are trying to think of every era case, they can think of and then the next best thing is static analysis and pleasant, and those are all really good things to do, of course. And those might find you things, but those still require you to think of how you want to model the domain of your program. And what's so nice about? This thing is that for once. We can talk in abstract way by obstruct. I mean general about the entire space of what the program is trying to do and then actually leverage a computer to help the the what I say to people sometimes is that non programmers may not realize how primitive the tools programmers work with our computers. Look like magic non programs. So but also non program is probably think, oh, well, don't you just use the computer to help you find? And it's like, no, we don't we do everything by hand. We write all our tests by hand. And that's one of the things that like is. I mean, as you know, just from a conceptual view, so exciting about what's going on the pack is the idea that like well now you can now you can't actually use some these tools, and maybe one day these things that were that, you know, that calling an Emily are are hashing out here will become more common knowledge to the work day programmer because they'll be so much more familiar with using. To like programmers are much more familiar with the intricacies of TCP IP, which has complicated. But if you're if you're job is writing server applications or full stack stuff one of these years, you're going to need to know something about TCP IP. So you're probably going to deep dive on that. So hopefully for verification will be like, oh, man. Do I hope so? Yeah. I mean, I don't see why can't just have a every language can have little subset of formal verification. This function is formally verified, you know, put it in a decorator and just stick it over the function in a behaves a certain way, and then this little subset of calculation would be always formally verified. I mean that just seems like an easy language feature that particular languages understood probably implement. I don't know. Problem is admitting your language to formal verification. And this is I think it's worth actually, I think, you know, in the interest of time, we might want to gloss over some of the things that are happening in solidity land and EDM land, which Emily can talk about about his that is much closer to the model of Java script or Java or something like that. And what you would actually because that's what they're attempting to do. So I mean, maybe Emily give us a by the way. I wanna apologize didn't need to be reductionist. When I said easy. I know it's very very difficult. But I feel like if we engineered ourselves in that direction. There could be standard set of tools that people be more familiar with. No, I think that's the whole von Neumann to be, you know, like our entire our entire machines are Bill wrong that we built everything around this like turning carpet, and as opposed to you know, trying to build machines that are actually more predictable. Well, well, I think people I mean if you've read that paper on punctual programming from the late seventies. I forgot if it's on. Raucous, John eighteen seventy seven I think, right. And that one, you know, he really late makes this case that like you're doing it wrong. Like like, nobody listened to you know, worse better. That's that's where we're at now. And it's and you know, it would it would be great. If we could move into this better Brown, but we do have things like Avium and people wanna proof things about so. Yeah. Yes. So I mean, this is kind of what what's going on with the K framework. Solidity starrewards. This solidity star as you know, the by code is is turning complete. And they want to provide some form of air fixation to the language is built on on the in this case solidity, and they found that they actually can't verify the entirety of the bike code. They have to defer just to the turing complete subset of EDM bike code and identify that with a sub language of solidity, which is the turing incomplete sub language and in order to prove that solidity actually produces the bike code both ways. Like the by code produces the same solidity script as the solidity script produces in terms of code. They have to restrict themselves to this sub language of each of the languages, and then they can form the the. Proofs for verification which show that the the to actually do produce each other is that what people typically referred to as intermediate language intermediate reputation. Yes. Yes. Kind of in in an intermediate language if like a a sort of undecorated ING or Cushing the language to fewer sort of intermediate structures. So that you you can do the same stuff that you wanna do in a slightly more principled way sort of like in a lowered version of language in this case, you just have to make sure that your program is in that subset of solidity or in that subset of the by code, which they can actually address. So it's not quite an intermediate representation. It's more just like a convention of you can't verify anything unless you are in subs. Okay. A lot of times lowered representations are actually less safe. And you're usually taking the safety properties of the higher level language cruising things and then saying because of this I can emit faster more unsafe languages like el-avia them, or, you know, machine language, so that that's the usual kind of like an IRA usually less slightly less principled, slightly less safe. But simpler easier for machine to chew through. Whereas here what we're talking about is kind of a principled subset that is basically trying to it. It's basically trying to wrangle a language into something that we can reason about when the language wasn't designed that way in the first place. Yeah, we actually go over a lot of this in the the EDM is fundamentally unsafe blog posts that we put out over the summer which or so it was a sober knows fall back in the fall. And. Yeah. Yeah. Sure. Sure. A lot of the the solidity stuff is trying to get towards a space where they can see something meaniful about the programs, but finding that they've coded language, which is too broad and to basically unfaithful to admit a formal specification, which is a meaningful specification, right and catering. We're kinda does this as well. We're actually we I I know a few people that are working on K framework like Martin Luth fall who's done incredible work on. I think the what is it? The reach ability proofs in that area. I think he presented it SPF. I remember correctly, but they're identifying from an operational semantic, basically specification of how programs should work trying to use k framework to verify that programs actually do what they say. They're supposed to do much in the same way that pack does except they're working interring incomplete or complete land. And it's very very difficult to verify that programs. Do what they say. They're going to do in that such that situation such that it takes minutes to verify simple arithmetic, which is a consequence of these structure of the language itself. So we take the view that. You're because of because of gas, and because you have a limited stack unlimited data let Cohen was saying earlier in the show, you you're actually not using any of the properties of turing completeness that you think you are in your language, but you are admitting all of the flaws and non verifiability of turing complete languages into your language such that you find yourself in a situation where you have a Jillian formal verification engines, which are sort of slow interesting concepts, but slow and not terribly usable. Whereas packed can do the same thing in microseconds. I would assume that the decision to make to model things after Java script and created a language like solidity, necessarily, a computational one. This more of a social one in terms of trying to attract developers to start building on the system, which has its own which has its own benefits are consequences. But in hindsight. Based on how we're seeing this technology grow and be used what it could be used for that. May that may not been a good decision. And you could see that that kind of manifesting in the way that people are looking at different language models to use such as viper, which is python based which by the way is beautiful language. You know, so the yeah. No, I think I really wanna go to one more question. We really wanna go to chain web. Okay. I do have one question at this point in my have another. But. What is the performance hit for doing former verification in deploying a contract from a from a? Gration? Off because there's no because we don't formally verifying the blockchain earlier -cations option, I meant in a CD way. Oh developing, and I and I I want to I wanted to play new code how long does it take for me to know that this codes? Correct. It's basically you're continually doing it. So packed uses these things called rebel files, which are basically test scripts and the ideas, you just call called verify in your module, and it's constantly verifying, so pack this Paxton models. You basically start writing pack in other words impacting and do what's called test development? What are your running? Get out of my block not disturbed. But then you can also do kind formerly driven development where you could write your properties, I have those tests fail and then implement code if you wanted to it's also the, you know, the language is really quite rich, and we'd be happy to send you the introductory piece on it the property line, which that's inside of that's embedded inside a pack. But the idea there is that most of what we wanna do when you think of the bugs that have been flicking solidity. They're not rocket science bugs their exploits on on code. That's supposed to be simple. And isn't you know, like an ear? See twenty bucks is not a rocket science bug. If somebody who is able to figure out that something that they did admitted some kind of recurs in loop or something like that. So things are unavailable to buy construction impact the properties, you writer, and therefore going to be you know, that much simpler, so. So the place where you could get in trouble impact, if he wanted if it was gonna spend out of control if you for instance, like you decided you wanted to parse long strings text in your smart contract language, and I would say you're an idiot just on the face of it. If you wanna do that. But you know, people do programmers whatever they're going to do. And then they're going to be like, wait a minute. The Parnell verification system is taking forever to like go through the entire universe of really long strings that will happen. You will have you know? So there are things that I my assertion is that the kinds of things you wanna do on the blockchain happened to be really easy to verify like, you know, usually, it's ledger activities. Those things are there's just not a million things you need to verify or predicate logic to sing I wanna make sure that you know, this person that will always checking that this person signed this transaction if we're going to do this operation on the database always. It can do it in a sleep. It's just simple predator logic done before you can even mention it. Man. Part of this. I'm kind of curious you mentioned the way package zoos, and what is capable of doing relative to other programming languages is this something you're hoping it's going to take off outside of the blockchain world. We talked about it alive because it's so useful for database applications in the sense that hacked if you wanted to write a really principal back end for your job script application, you download pack today, which got a sequel light engine in it. Run packed Asha, which is our web rests server giving you are blocked the eye and write a job script application. This is what are Democrats do? And it's a really it's packed as fast. You know, it it does somewhere in the order of ten to twenty thousand database operations, the second sequel light is great. I don't know if you're familiar with that. That's great. Yeah. It's amazing. So like, you get this great principle language, you can prove things about it. And in truth, most, web, apps aren't doing anything that complicated. I mean, you know, member we're not talking about like, Google maps. We're talking about like, you know, a storefront or a shopping cart or whatever you might be doing, you know, a task tracker, a scheduler just something that like, you know, like schedulers good example, you might have something you might have some great dynamic programming thing that solves your scheduling problem. But the end of the day, you wanna make sure was stored. Right. And you want to make sure it does all the right things that data and doesn't let somebody right? The wrong thing, you could use pack to do all that. And who I think would be terrific solution. So, but that's, you know, that's I think blockchain is a very it doesn't seem like, but I actually it's very satisfying space to work in terms of building gaps because I actually think it's a it's a nicely constrained space. And it's exactly the space pack is designed for I think some of the concepts and blockchain need to make their way out into the larger programming community. Namely the bicker. This of public rip dog Raphy to to safeguard systems is just better security men. Most forget stop logging into your application start using ledger wallet or whatever use a hardware wallet use a net. UB key that is going to be. That's the way the future's stateless authentication through public. He's and packed. Is there for you? It's ready to do all that. But I don't think programmers are there. Yet they still want to log into their database. They still want their insecure Loggins because that's what users are used to. You know, this stuff isn't as everybody knows wallets are very unorganized. So right now. So those things get solved, and I see us moving into a a world of safer user, applications that don't necessarily run on a blockchain at which point pact. Is you know is purpose built for that kind of thing. Yeah. I think we're all line with that business. Specially our listeners on this show. We've we've we've seen the benefits and we see where it's going. It might not be there yet the user experience might be a huge barrier to adoption, but we see the benefits already. So I think that's great. But one other thing that people have a problem with is the fact that they can't have certain skill building guarantees. So I was wondering if as as the blame segue. I'm sure, but can you talk a little bit about chain web? We had the program before to talk about it. It's part of the. Kadena? Platform as low as well as packed out by call the platform or not I don't know what the right term for dollar. We call it a hybrid blockchain platform because we talk about solutions that can live on private chain and public chain go back and forth, and that's ideal in my mind. That's what I kind of hoped plasma would have been. But but yeah, so that was probably one of the most interesting conversations he had one of the very early guests curb. I think he might been like episode five or something. And you know, the reason is because I watched the videos on spec- last year and wills talk a popped out at me immediately. As I was like, we need to book these guys because chain web was just fricking cool from it's not just graphics. You got some pretty cool crafts. I think it's still get your t-shirt aware of every once in a while. But it's a cool t-shirt. It looks for grad. It looks like I love it looks like some sort of slice out of like a time scifi move. In about time travel. Anyway. But the the thing about data that I that I love is just your approach skill -bility is baked in be extensible and see of novel in that is still relies on proof of work, but scaled scaled down version of it. I think it'd be best considering time constraints that we referenced the other other episode if we wanna get into the nitty gritty details about chain road. But instead, let's just take up that conversation from where where we left off before in tells what's been going on with the chain web. Because system who's using it in what invasions if you made him eight what problems if you found in developing it because I guarantee there were some in the area that you've had adjusted so yeah, what's the development like been on that was designed design going and have there been any changes since we last talks? Yeah. Great. I mean, you said who's using it? I'm just a touch briefly on that the the most receptive audiences people who basically want to leverage crypto as a space for launch and financial products or for representing new types of assets. But wanna do it in a safe way? And don't wanna be hampered by scale -bility concerns and want to have tight controls around things like, you know, KYC, you know, your client and have a have a smooth gateway onto a private system because so much stuff shouldn't really be on a public blockchain when you're, you know, like, but it it all comes down to scale building in the end because you know, every every program that runs on that is based on with bitcoin of fac, and or with, you know, now with the theory with his back in is basically a ticking time on of, you know, your program getting popular enough to be like cryptic eighties. And then the whole thing slows. Down. So yes, so chain web's design has not changed. And in fact, we just our paper got accepted for the name of the conference that proves chain web security properties. In terms of the ability for a malicious minor to be able to censor users chain web is intuitively. Correct. In terms of how it checks hashes. But the thing that we wanted to see was would it be possible for attackers to meaningfully attack? The live -ness of this stone to you know, to create things like censorship. And some of these things that we've seen alga rand some of the other, you know, interesting research into kind of Blockchain's general and their security properties beyond just something like double spanned, but to things like censorship that chain web offers an incredibly resilient solution for so that that's that papers coming shortly. We're very excited. About that. But the other the one of the main interesting things that's coming up now. Well, I mean, the big news to share, of course, that we launched our tests net at the end of March which was a big compliment in in a really great shot in the arm for the team. We public tested or is it just a closet right now a close test net. The next version is coming out at the end of may, and that is going to be invite participation by invite and then after that it's going to be full public. So these are coming out in like in every two month clip, I won't tell you. We're gonna make a big announcement of our live day. But it's it's not it's it. We're not going do million of these. Let's put it that way. There's a finite number of tests that's going to happen in we're going to go into production and one of the most interesting things about that. Is that in something Emily, I work, particularly hard on is that the coin logic inside of chain web is actually handled. By pack smart contract. So this means that all gas transactions all coin rewards, and then all transfers between users happened in a pack smart contract that is formally verified. Now, that's nifty, of course, from a dog fooding point of view. And it also means that we won't have some the ergonomic issues that fear him encountered between years see twenty and the and the Therion token and sell in the sense everything can use the same interface. But also it revealed that one of the things that always part was part of chain. What was the the fact that we needed to burn coins on one chain in order for them to show up on another thing we needed a way to move coins? Ground, and we always knew that we were gonna use simple payment verification. You know, Merckel proofs where chain can find the Merckel proof, the image of the of the Merckel hash from the other chain that way you can trust us verification. That Aucoin wasn't he'd burnt on the other chain. And now, you can create it on this chain in the system conserves mass. He can't have a double spin. And so on so. So forth. What emerged was that? The very technique that we use to do that in. The coin contract is is an automatic to step transaction that will be available to every smart contractor Balbir. So every year see twenty we'll be able to do this any asset that lives on chain web will be easy. In fact, it'll be entirely automatic for you to burn an asset on one chain and move it over to the other train. We always knew that this was going to be possible. We didn't realize it was going to be this easy. It's it is a primitive. It's actually it isn't that's coming out and be one. It packed has these things called PACS, which are multi-step. So we have functions, and then we have packs impacts are multi step functions. And it emerged that the shape of the most step function was the natural shape for a two step transaction across chains and allowed it to be automated. So that now you can have a trust Lissette changed from one exchange. It's as simple as writing one of these functions, and you can even do formal barrique shin proofs about the state that emerges on either side. So actually kind of have a question about that. How's that managed because I from my recollection of how you met Matthew chains out not every not every chains connected to every other chain. So how do you MAC the event? Really? Yes. Very important property of chain web. Is that it uses an expanded graph? That has a property called the. Diameter which has a maximum shortest path to any other chain. And it's very important. That's actually what the t shirt shows. Right. As get up to the edge. The transaction. That's in the middle. You know, one your it is travelling through time. So in the past the, you know, the confirmation depth, if if you wanna see it as that is when your transaction has been image into every other hash in the entire network. And you know, and the part going forward is how long it will take you for your transaction to show up and every other one, and that's very important because it means that it does mean that like if you want to move assets from one chain, it will take that much longer for that second transaction to be possible. Because it that chain won't have seen your transaction. If it's not right next to it. It won't have seen that transaction. To the things like this. Because I think a lot of people have some intuition to that. Especially based on the subset of people were in the space is that. Just because that may be the case where takes longer to move from one chain together doesn't mean it's it's it's a bad thing. Could think of it in terms of like a yes, you're you're you're video character from one realm to another and some ability massive multiplayer online game. Right. You don't do that all the time. But you can and it's useful in some cases. And so like the fact that you're able to do that as a primitive, and you can verify that your character will show up with all the things that had previously is a very good thing to know. Right that it's safe and that it actually works. I mean, that's the I think an interestingly enough in SBC Italic spoke, and he talked about two, oh, and how they're going to move resources around their shot at network, and it turns out they're gonna use a very similar approach. I mean, the difference is that we issued Tesna this like a month ago. And God knows when they're going to get that out this already works. We already have mechanisms in place to do this. Well, they're on a new consensus algorithm as well. So it's kind of like they've got a lot to. Testing go through. So just just for audience case a heaven heard the previous episode, you're scaling proof of work. Like, yeah. What you're doing? You're actually able to scale proof of work and some maybe a quick synopsis of that would be would be a central. But I do believe that going through the previous episode, which is a diva be beneficial to anybody listening this. Yeah, it's a simple concept that basically says that if a blockchain bitcoin style blockchain drives its security from incorporating the hash of the will of a block incorporating actually came before it bit chain web uses an idea that's been around for quite a while. But chain web is the first deployment that we know of that actually does this certainly does it at the massive scale that we do it chain web says that you can incorporate hashes from other Blockchain's that are that are producing blocks in the same network, and the main innovation there is to is to apply the graph theory and say that we can conceive of networks that are basically. Fees expand graphs that bound how long a chain is separated from any other chain in the network, which ends up being very important security property. Well, you don't the main thing that if you offer here's is that can activity, right? And that's that's basically what chain web is. And but what you get for it. Is you get every single chain? That's in the system is running independently. And that's very good thing. Because that's where the throughput comes from. So we're not going to be orders of magnitude faster on given chain. Then the theorem today bitcoin, it's the fact that we can run ten a hundred thousand ten thousand of these things and really only constrained by bandwidth. That's been an exciting thing to see too. Is that is that the network itself doesn't chew up a lot of CPU to compute consensus over the entire, you know, because there is some consensus work that has to happen, which is that, you know, there can be different. Forks on a given chain. There could be different forks happening in different parts of the network. So and there can be different kind of combinations of ports that are happening is something that we call cut, which is basically the wavefront of all the locks that are being produced the essential property of chain with that. So important that diameter is so important because it bounds how far out of sync. He's yet. And it makes it that. That problem never really spins out of control. And but that at the same time as the property that makes it impossible to censor someone else. So it's a very I think the thing that's very satisfying chain web. And it's been very satisfying about doing the engineering is and I don't take credit for this. By the way, we the people working on this team or some very vents people. And it's really minimizing to see see this thing actually, come to wife is that the the principles haven't changed the, you know, the engineering has had to happen. But it's it's leverage. These ideas. And been able to come up with a practical approach to consensus that doesn't bog down either simulation or intestine intestinal. We got to our first milestone was getting two hundred thousand blocks that was ten thousand blocks each chain. And and having it, you know, four things get things do get outta whack momentarily, and then they come back into consensus, and in that sense. It's no different than like, the occasional appearance before in bitcoin. So have you done stress testing on this to to see what kind of ridiculous throughput you get on this. That's that's what we're moving to right now, we have some low hanging fruit of things that we have to address such as we, you know, the initial one was a memory based system. So we're just starting to roll out the disk based system now. So that obviously memory base system's gonna run out of resources shortly that we are able to stress test in terms of like running very fast mining rates and things like that. And we're happy with what we saw there. So, you know, the next thing is also like really cramming blocks full and seeing what kinds of you know, what the transaction load looks like, and what that, you know, the work required there, another nice thing is that unlike Therion, we don't transmit the actual results of each transaction or the Enderlein database. So the bandwidth usage is much smaller, and eventually we'll be able to do things like checkpoint the application database so that as opposed to having to download like what is hearing after download today. It's. Mode or you're using but it can get up there. Yeah. Like a big phone note. I think is in terabytes now archive node is just around terabyte. Yeah. But that's no no-one runs them. Six five. Right. So I mean, that's something that we will. You know, this is not something we're going to do for main net. But but shortly after Maine, we'll start introducing ways that you can start up with a smaller image, simply because you know, the engineer packed as a separate layer manages its data. And then just introduces hashes back into the system to verify the contents. So back to somebody verify on short to know that the whole system script, if you're only maintaining one, I don't know. I don't want to call it a shard, although is a particular chard as an imprecise term. It really is a particular chain on the chain web. Like, you don't have to maintain the full state of that chain the full history of that chain, retain a certain unless he unless you want to be a super proof of work maximalist be the there will be those people purpose right has the pink about work because work is the only system that you could go off you could have a network. Titian for a year and recover. It's the only system in history that can do that. So Maximus is going to be like you have to maintain all that capability till Genesis block, but impracticality that would be an economic disaster. Right. I mean, if bitcoin admitted a hard for that was a year old, everyone would raise quit. Yeah. So I mean, so, you know, so practically that's not true. So, but it's it's just interesting because a lot of these basically by having kind of solid engineering practices like decoupled design. Now, they're it's consensus doesn't care about payloads consensus just cares about these more clashes going through in mining and making sure that they all agree on their ancestors packed runs as a service that leverages that and that produces, you know, a list of Merckel hashes that form the block cash, but the system isn't architect around that. So it would be possible. For instance, to have these kind of light nodes, that's because you don't because you're you're consensus dependent on other other chains into network. You don't have to look as far back to get in higher degree of confidence that transaction. Your current chain is correct. Because the whole network is screaming. It you if somebody does something wrong on your system, or if you're spending something that doesn't match up. It's just like infeasible to even think that maybe you've been two hundred state changes would would be more that would even be required for for the system. Like, you know, you're gonna know if the if it's an most folks are local to so in that sense, they get handled by the chain. That's their if not like the whole system is fourteen or even or a more accurate way to say that is that a fork at the cut level doesn't mean that every single chain is out of sync. It means that a few chains are out of sync. You know, there's there's a there's a probable probability that all could go out of sync. But that doesn't matter and it's also very unlikely. So that system ninety five just like bitcoin, which hasn't forking all the time the system ninety five percent of the time is a well behave system, and because of the security you can consider a much lower confirmation death. So we get back a little bit too packed. If we're having cross chain communication. With with with pact is for verification built into that. In can if so is there special challenges around that especially given the fact that things can Ford. No. Because the the the great thing about chain web being a trust Lewis because member one of the things about light clients and simple payment advocation is that there's a trust problem normally chain web doesn't have this problem chain web has a hundred percent reliable oracle of the of whatever is happening on this other chain for that cut for. So in other words, the same reasons why mass conservation works with fortune. Bitcoin is why cross chain stuff works on chain web. In other words, you you deleted the coin if that gets forked, we'll guess what you're never gonna be able to create the other one because the Fogo if you deleted the coin, and you created the coin in that whole thing gets for well, then they all go. If just the crate goes away fine, you have to send in another create, and you know, and transaction reintroduction, you know, this is something I've had to learn. About his whole, you know, like the the ways that meme pools reintroduced transaction safely, you know, Toshi paper just glosses over the. Or things out but come on. That's not that's a terrible user experience. So this whole idea that after a four he'll have to send your transaction. And nobody does that that happens automatically. So as a result these things all behave. They're all very well behaved with respect to forks, and like many other things that if we had more time to form of fishing, and some of the things Emily could dive back into is one of the things that pack is at its very well specified system, very tight boundaries. So they're that represented the cross chain. Burn create is verifiable by having an axiom that says that this can't produce two states. Right. That that in other words that that create can't happen twice. That's what I was going to circle back soon affected because you have language like pack that has things that are formed verifiable. You've lot more security guarantees on moving things across from state to state 'cause they're both operating on the same foundational language guarantees, right? Right. And, you know, unlike if if if we were to when Emily talks about, you know, there's different levels of former Gatien, you know, like we're gonna we're gonna be doing an Amei with cirtics soon who've done stuff involving trying to like formally verifying entire operating system or entire network. I mean, it gets very deep if you wanna actually get to the level of saying, so we're going to layer things on top of each other. Instead, we're going to say we've proven the chain when it was safe. And that it that censorship is not possible. We will base packed on a set of principles that we demand that the run time guarantee, and then we'll do formal verification on top of that. So. Emily. Get arrested here. But I have one more kind of like thing I feel like a good way to close us out. You just got into the space what eight months ago, you said. What has the thing? So this is kinda like been your main for awhile, what specific challenges have there been in in developing on packed in impact in four in building that threw you off in you didn't really have to face them in other spaces. And if there's anything else that maybe we should have covered that we didn't, you know, please feel free to all. Yeah. I suppose it's the the way that pact is constructed. Normally when you think of a language take a compiled language, but packed happens to be interpreted and interpreted in an interpreter that we've written in Haskell, which is a compiled language. So it's kind of a strange shift in mentality that your concerns have to be how do I represent my language in terms of not just what I want for a feature or feature set, which is packed language. But also, how do I express this in Haskell the language that we wrote the said, and then how do we handle concerns like Runtime typing? How do we handle concerns? Like, I guess how do we even express formal verification for this language in terms of this other language that sits on top of that which has been totally contrary to most of the the things that I've done which have been very much compiled, I guess languages that have a Dino tasteful semantic mathematical semantic. And I it's just been a fun experience. That's that's basically it. It's just wrapping your head around not just like the language itself. But but the feature set that we offer being not just a programming language, but very opinionated programming language about the things that you should be able to do I it poses a certain set of challenges, which are really unfamiliar to someone who believes that you should be able to do anything in programming language. But yeah, it's turned out great. Yeah. I really excited by done. I think I can't wait to see the live test NAT. Stuart are there any last minute announcements you'd like to make for your up to? One thing. I wanted to point out is that on the turing complete incomplete. We have an interesting post on our medium that was written by a nontechnical person here at Kadena, and that's just interesting to see somebody grappled with these concepts and why they might, you know, be of interest to somebody who isn't necessarily programmer. So I just wanted to quit that out there. But yeah, I mean, we we covered a lot of the really exciting stuff that's going on here. You know? I got I got through some of the upcoming highlights of our, you know, March two main that and are kind of steady canes tests things were super. I mean, it's it's a really exciting time around here. The other thing is that we did, you know, just kind of give a quick shout out to what we've been doing in the private world is that we did roll out a cloud base Lucien on Amazon in January with their private blockchain. And that's that's just something that increasingly, you know, the world is going to be one. Where there's private blockchain San public walk chains. And you can you can use all the tools we talked about impact on a private blockchain as well. So that's something that and there's even some features there that aren't unchain web like the ability to have confidential transactions that were that other people can't see with their own computational models associated with it and things like that. So it's just been really exciting here and also working closely with our clients, some very exciting announcements coming out about these new financial products that are going to be launched on Cadena on the unchain web. So it's just I would just encourage everybody. Stay tuned because there's a bunch of exciting stuff that's going to be coming your way very shortly. Okay. Where did they go to what do they go to stay tuned? Dada. We have also discard channel we also have a newsletter. You can sign up for their, you know, we've been we've actually I've been stirring up some stirring up some conversations on Twitter. There's you know, we're we're finally starting to get our get our message out. But please come join our discord channels a lot of really interesting conversations happening there. Yeah. And I'm on there all the time. So if you won't ask any questions about for verification more indepth where I can actually write this stuff out. Portugal. Difficult. Yeah. This is difficult platform for indepth. I mean, we do try and dog as much as possible. But we have a limited set a time, and we are already over. And that's that's because there's so much interesting work in Dana. So I'm really really excited to have you guys back on and we will reach out to you to have you back on again in the future. If you're interested. Thanks.