So hello My name is Christoph Langer. So I'm the second in the row of three guys from SAP speaking here So the one or the other might know me from the open JDK community So you might see me on the mailing list. I try to to support Andrew in maintaining the JDK 11 updates release I think that's most of the work which takes most of my time What I'm doing an open JDK at the moment. So it's doing a lot of testing integration and so on But today I actually have the pleasure to talk about the work of my colleagues Namely, you got slim Maya who will more or less did all the Progress to bring this into open JDK, but he decided to go surfing in South Africa Usually is here, but this year. So the turn is on me Okay, so as it's Already a bit late. So the brains have been wrenched a little bit over the day It's maybe not the Mostly most sophisticated topic of the day or at least not from from how it looks like because I mean a little night pointer exception It's not too complicated. Just the sentence that everybody can understand But okay, and there's some some logic behind it, which is yeah, which is really quite some some algorithm Let's say so and yeah, we come to that later So yeah, what I'm gonna cover I start with how helpful are the night pointer exceptions currently? How helpful could they be so Taking them an example as motivation Talked about what we did what we brought to the open JDK where we are there and then it's for stem So we talk technical and try to explain the algorithm behind it a little bit and in the end there are a few things Which still Can be done and could maybe leverage this so yeah, I come to that in the end Okay, yeah, how helpful are night pointer exceptions? So imagine this little code snippet, so I cut and pasted it out of some source code line 33 we see some object with fields and There's another field has some payload there's an assignment to this payload field from another Chain of object fields. So what would we get currently we get something saying exception and threat main night pointer exception? Okay, we see the the fine name and the line like line 33 but wouldn't it be nice if we Knew what what exactly what's the field that's now here? Yeah, okay, so Yeah, could be like this. Oh So the test cannot read field D because a 2 dot B dot C is now so we know okay. It was exactly this this guy here Okay, yeah, obviously night point exception could look like this and yeah so this is what we contributed to the open JDK actually the The thing behind it was already implemented years ago by colleagues for our commercial Edition of the JDK it's quite sub JVM But only the SAP customers using SAP products with based on Java could benefit of it But you are quite sure that that it works at least and so last year Out shortly after first time I think that the initial mail gets proposed it on the mailing list Just said okay, it's a little enhancement cannot be that thing Yeah, and this proposal was welcomed by people obviously by the developers of Java and People saying yeah sure about time to have it in but it was challenged to because out of several reasons So so one thing is always okay You don't maybe want to have too much information in exception messages because you don't want to leak too much data To maybe some attacker or so who can then read something so maybe that's a concern then one thing is performance So we want to one don't have negative performance impact by such Computation of messages here and then it was also about the approach So we did this really in the hotspot VM coding and C++ So people stepped up and said hey, can we have a look maybe we can do it in Java with with No bytecode APIs and stack walking APIs, etc. Well, yeah, okay that was part of the discussion and I don't know it evolved then people from Oracle came up and I think they motivated guts to to make it a jab And with the help from I think Colleen Alex Buckley and so on so we brought it to to a point Where it was admitted to JDK 14 and we could push this to write a time for JDK 14 in October last year So yeah, it's available But it's not the default. So you have to use this This flag to activate it otherwise you will see is it still see the the old scars message But yeah, you can you can switch it on and before for the sub machine binary distribution We switched it on by default as we are confident in it and we also back ported it to a submachine 11 edition So if you want to try with JDK 11 and use submachine and you don't need an additional flag But I guess I don't know we can also discuss about back porting it to open JDK 11 if there's interest okay, so Yeah, some technical insights The nine pointer exception message You see the green line. It says cannot read field D because a to dot B dot C is now It has two parts. So the first part is what meant wrong cannot read field D And the second part that's a more complicated part I'd say you have to go back and the program flow a bit to figure out What exactly was the reason what brought the Nile point and the Nile reference on to the the operand stack And it's also important at the time we we can create a message We have we have a bytecode index of where we are at the method While we we are as we are not spot we am we can query for the bytecode for the constant pool But we have we don't have the the program data at that moment We have no variable constants or things like that. So we have to live with with what we have here Okay, so Then okay, let's take some simple example So really an easy thing you initialize an object with Nile and invoke the method to string on it on this Nile reference So you will get a nine pointer exception So this in bytecode Will will work like this so at first you have the acorns Nile instruction this pushes the Nile reference on the operand stack So basically Java bytecodes, you know, maybe people are not so familiar with it it works like The instructions they push and pop things on an operand stack and it's defined for each bytecode What it's expected before on the operand stack and how it would it look like in the end what arguments are popped and what's pushed there So okay, so to do an object initialization. You will obviously at first then load the the Nile You initialize the Local variable slot the slot one with the A star one instruction that pops the Nile reference from the operand stack and it's stored in this lot Okay, that was the first line of the example then the second line does a load one and it loads again from this slot of the variable pushes the value on the stack So yeah, we had it initialized with now So there will be a Nile on the stack and then we try to invoke the two string methods with invoke virtual instruction Yeah, afterwards the the the reference will be gone But in our case we get an eye pointer exception because it was Nile the method we tried to invoke the Object we tried to invoke the method on Okay, and now from the failing bytecodes we can we can generate this text message about the failed operation For the course we have to walk back as I said And so that's what the what the this algorithm starts with is really to to replay all this From the from the entry to the method until the point where the Nile pointer exception happened And that we have for each bytecode we have representation of this operand stack and then from this operand stack We have backlinks for each field to the instruction which pushed the value there and so then that helps us to to then Walk and then generate the message Okay, so part a what bytecode fails not every bytecode Can can cause a Nile pointer exception So we have here the the array operations or if the array you want to access Is Nile and you can say something that I cannot load from into ray for instance element type So the array length cannot read the array length Forget field and put field instruction. I cannot read. I cannot assign a field Ideally we also have the field name from the constant pool here Those invoke instructions like we saw here they then what the message would be cannot invoke a method Throwing exceptions and and entering and exiting monitors. They also need objects so, yeah, that's the simple switch statement on This bytecode like here they more virtual and we come to this part a of the message Okay, then for the for the for the second part the be cause why the my point exception was pushed There's a little bit more to be done here. Okay in the easy case. You have something like a const null Okay, then we can only say null is now sure There are constant operations so we can we know the constant that is pushed on the stick we can just name it so for an array We do two things so at first we go back the path from for the bytecode that pushed the array reference So this could also come from another field Like in the example I had like several field references So we really have to go recursively back until the point where where we started at Okay, then and then with the brackets and then we also write something about who put the index there Yeah Okay, so get field get field we can write the field name, but then we have to get also the cause for the for the reference that the get field was invoked Get static there we have class name and field name. That's the easy thing. So those Invoke instructions So that's when when methods are called then we can say okay the return value of the method is or In some places we would only give method names like in in the index computations of the array accesses And then the load instructions for for loading and storing variables Okay, so in our case it was an a load which put the now reference on the stack and they load comes from there from the Variable object and so then we can say okay Cannot evoke object because check isn't I okay, so Yeah, there's some more things I want to mention here about this so one thing is This calculation of the message is only done when we invoke the get message method of an exception so at the time the VM generates such an exception it really just stores the bytecode the stack information as it did before and so no change about that and Only when somebody it calls like print stack trace or so it will call get message and then we we would do all this So an unusual flow of Java VM You should not see an impact because I mean exceptions get thrown get caught and not necessarily Printed out messages Yeah I can and the first thing was it's also we're talking only about the messages Generated by the VM itself. So there's also possible like I can do a new nile pointer exception Construct an exception, but here. Yeah, then the developer knows what he's doing He would probably also enter a meaningful message already. So, okay, we won't capture this Then there's something like hidden frames for instance when you have lambdas and then there are some frames put in by Java C and the VM So those stack frames are taken so if we hit an eye pointer exception there Then we would not generate the message because it's probably not so meaningful to two people looking at the exception then the point it's implemented in in the virtual machine and the C++ code Why did we do that? Yeah, the thing is we have really everything at hand I mean we are in the VM we can query for the bytecodes for the constant for everything and on the Java side Okay, there's a stack walker and they're also bytecode APIs, but it's more complicated to to get all the data we'd need here So I think it was really the the best way And in the end I come to that and you know we come in the end to that maybe by this Algorithm or this this part this bytecode class we can leverage it for other exceptions as well, so Okay, then another point The best results you will see obviously when you compile the Java class With the with the right debug settings. So a default of Java C It's only the lines and source information, so in the code text you will get the line numbers and the source file But you usually don't have the variables unless you compile with this minus G flag or this minus G Was line source whatever you can specify so once we have the variables Then we can we can print them in the message if you don't have them for for locals We have to print something like parameter one parameter two for the for the method or for local variables It's even more complicated because then we only have slot numbers and so it's not really Accurate or if you don't know what the compiler does where the variables get allocated Yeah, okay So Yeah, I think still to be done. So as I said this feature is now kind of beta. It's it's disabled So we are hoping to to get to this enabled by default one day. So Maybe let's see how the the feedback is but we will try to to ask The the open JDK community if we can switch it on Then there's something objects require non-null so You might heard about that one. So this is some place Maybe also means of tackling such nine-pointed exceptions. You can before you you call into another method You can wrap it with a call to objects require non-null Then at that place before we actually enter the method we check for the Nile Then you have a defined place in the code where this could happen Also, you would not go further down the program and see the nine-point exception at places where you where you really don't want it But on the other hand, then you lose this information because this is then a nine-point exception that the developer has Written or has constructed. So, yeah, our thing is not applied then Okay then There's a thing like single file source code mode. So there was JAP 330 you can now you don't need to use a Java file Compile it and and and work Java with the class file, but you can go like in script mode or so called Java the Java file and then The you at the moment also don't have this Those nine-pointed exceptions would also be nice to have it here and what you can do is you can set the VM option Yeah By parameters to the Java, but you can't modify the compiler at the moment You can't set the minus G option to have the variable. So that's something where we have to find a solution Then okay the Jshare use case I mean, that's really something where you want to go and just prototype something and Jshare And then it would also be nice to really get those nine-pointed exceptions here So if we do the ballot one and enable it as default then Jshare will have it Otherwise, at least maybe we can make it a default for the Jshare And then there's another place where the algorithm might be applied It's the array index out of bounds exception. I think we have some time left. So I can try to demo it Then I've prepared a little prototype. I actually was good So Yeah, so you see here, it's a test case where we do out of bounds accesses on arrays Okay, so Maybe go even back to a Java 8 time. So if I run it with JDK 11, so you see here It only tells you the index array index out of bond exception index 5 in line 12 So now, okay, it's only one one array, but if you have a chain of arrays Maybe like here array one two minus one So, okay, as we have here the minus one only in one place we can guess it must must have been this array access Okay, then there's a little enhancement already part of I know was it 10 or 11 which was contributed by by Goods Was it more helpful, right? So you can we can see the index out of bounds for the length So the array had only the length for it already helps a little bit more And now if you use the the same algorithm as in the nine-pointer exception We'd go and This is even more helpful So we can really come to some statement about What index was it and the rain name? Yeah, so That could leverage the feature too. So, yeah Okay, I think I'm at the end So if you have questions Happy to answer Hey So one use case for which I think it's important to have better No pointer messages with respect to the objects required on all is wherever Basically, there are places where they have a C compiler. We insert those checks I know at least two places one is string is strings and switch and the second is when you construct an inner class from From an enclosing class instance in these cases you can get a no pointer exception but We won't get any benefit from this work because it's just An opaque call to require them now. Yeah, so for that actually, I mean I also got also did a prototype I brought it here. So maybe we can Can demonstrate it too? So that's that's this class It's okay. I mean, it's really a constructed This presentation mode doesn't jump over Yeah, I know that's what I'm trying to fix Maybe try this duplicate Yeah, okay. So, yeah, this is the This example here. Okay, it's a bit constructed. I mean you have a chain of require nonetheless here But here it would have Because with the with the current thing What is this the standard thing? So again, I get only a nine pointer exception And yeah, I know it's like require no null and in require no null and it comes from my line 23 in main Which is this one? Oh, but which require no null was it? and if we Yeah, we prototype using the that point exception algorithm here and So, yeah Here we get some message like okay They were still occurs and require no null But as we know this is this method we can jump back the stack and then do this computation of the bytecode here and come to Come to some explaining message. So that was just an initial approach So I think it's about time that we can discuss it on a mailing list to refine it I have a question You said you need to to compile it with line information with what we find information What would the message look like if the while information is not compiled with? Yeah, I think I also have something here Where can like local param? Okay, yeah, okay, so here we have a we have a function called with a method parameter and also we have a local So I have to tell eclipse to change the compilation Java compiler take this knob Okay, and then we can run it with What is the NP-01 I always have problem local param here Okay. Yeah, you see it. So it would tell you parameter one so This is okay, and then you have here local local to I think yeah And but local to is is the the slot number because here in the I think the slot zero is the this pointer to the object one is used for the parameter index and then the slot two is Local index so yeah, maybe we should rather say something like a local slot or so that for for people analyzing this it's clear It's not necessarily the the local variable number two because he's only one But it's maps rather to the slot number No But I mean there's more information than before Okay one question You have the information of the very variable Is there a way to get the class information? Which class is involved? Yeah, I think we we use it here So in this example like this so But the class information that's easy there You don't need to have the compilers variable information because the classes with their fields and their names That's part of the constant pool at runtime. So That's easy. I was just wondering and this would be a bit It's a set water damage if something Bike code transformed a method and injected code into it. Have you looked at what would happen if that was done? I'm not just think I'm something like bite man where I could I could probably break this very quickly And it would be very rude of me to do so But I was thinking where you've got code transformers like middleware that does changes to code How much would that make this less meaningful or do you know? Actually, I don't know how much got tested those cases. I mean there are also things like it's not about Java It's also like other languages or so which compile it down to bytecode So I would think it's it's still kind of useful to see more information at least like before but Yeah, it's something to be evaluated. Probably probably yeah So you you answered half of the question I was going to ask by showing the requires null thing Why wouldn't we want to do that in all cases if if a null was passed in as an argument Walk back up until we get to a field load somewhere and say it came from this call further up the stack And that's where that null actually boiled out and came into this method because right now I think normally it's just local the details are just local to the method, right? Yeah Yeah, maybe in the case where where there's no custom message which we don't want to override now Maybe we can think about that Or maybe we can use an annotation or something where you want to see it But then you have to annotate methods so there was Brought up in the discussion for this object's require non-null support that that would be one way to tackle it Would it be able to tell me that the parameter or the local is an int in this case again The local is it yeah That the type of the variable if I have like a bajillion locals But each one has like this super long class name I think yes, you have access to the signature of the method So that should be possible gets more complicated with the stack slots again because then you have white slots or Just one slot it depends so then then it's really it's a problem, but for the method signature it should be there Good question on the status. So you mentioned that You had a CB machine you have this in version 11 Yeah, I know that red hat being a steward of 11 you doesn't necessarily object to new features like Shenando being backboarded Now I wonder if this is the one of those jobs that could be backboard to 11 users Yeah, I mean, I mean have you discussed this or is this Discuss this window so we didn't bring it up to the table yet. I mean, we were just happy in October that okay Finally, it's in let's settle it a bit, but okay. Yeah, we can start Because this this does change things Existing application may not as bad those exceptions isn't it yeah Maybe it's over if you bring it to 11 it would be good idea also to keep it under the flag and don't enable it by default Time's up So I implemented this in Android five years ago or it became public five years ago But not to the extent that you've done it here And the biggest pain in getting this enabled was people who had unit tasks where they would capture the exception Put it into a file And then all of these golden file tests all broke. Yes And you keep mentioning changing the message and things like that and I just keep imagining all of these units has breaking and breaking again Yeah, I mean even for the SAP machine when we when we enabled it We had to go and I mean we are running JT REC test regularly and some things So we had to change a few places where the golden file had the simple nine point exception Okay, so I think time's up So


Boys, I have a saying that I'd like to share with you. And that's that the greatest comebacks require the greatest deficits. You see, when I think of historic NBA finals and historic Super Bowls, what do I think? I think of the Cleveland Cavaliers being down 3-1 to the greatest basketball team of all time. I think of Tom Brady and the New England Patriots down 28-3 against the Atlanta Falcons. But you know what I don't think about? I don't ever think about Super Bowl 48 when the Seahawks beat the Broncos 43-8. Because who doesn't love a comeback story? So if I want to ride ourselves into the history books of Wheel of Mut, I think we have the perfect script. In our first three games this season, we won only one game that left us at a record of 1 and 2, meaning one more loss, and our entire team is reset. But after last episode and a very quick rage quit, we find ourselves at a record of 2 and 2, which means if I can win three straight games, I will make the playoffs. Then we've got to win the Divisional and the NFC Championship to make the Super Bowl. And of course, if we win the Super Bowl, then our amazing comeback story is written. But we are very far away from that. Let's talk about the lineup right now, what we've got to do in today's episode. Number one, obviously we have to win, non-negotiable. But as far as upgrading the team, my tackles are gold, they suck, but love some nice tackles. Wide receivers in the backfield I don't think are going to get messed with unless we get a massive hat-back upgrade like 88 overall Bo Jackson. I'm not going to be taking Fred Taylor out. We did just pull Mike Gasikian up back, I'm super happy to have him, but honestly he's still not that good and his backup is that good, so that could use a little work. DB's got a nice boost last episode two, but we've still got Gold Sherman and an out-of-position CJ Gardner Johnson. So it's a little bushy-washy. Linebackers are improving, but still overall very mid. I still want a faster user than, say, out his 87, maybe man-tied tail. There's a pretty good budget Trey Anderson I'd even take. And then my D-line is honestly kind of pitiful. Good thing we have Nick Bosa, prestige player, but other than that, it's Rayquan Davis, Cam Young, and Emmanuel Agnes. All right, y'all. We got a lot to upgrade. It's always exciting spinning the wheel when there's a lot to work on. Our very first spin. Oh, darn it. It's the 81s. Campus Heroes. This is a promo they've always done. I'm glad they continue to do it. Players who were studs in college, but not necessarily studs in the NFL. It could have been both, but you know, we got guys like RG3 in here. RG3 was good in the league until he got injured, I suppose. The thing with Campus Heroes though, bro, you got to give me money, Manzell. You got to give me Tim Tebow. I'd take the Anthony Thomas. I'd take Marcus Mariota. There's a lot of good players you could do for this. So we get two of the 81s, so we'll definitely get to fill in some holes here. Jonathan Greenert is probably a nice option. Tyler Metakevich. Is that how you say his name? Looks like a very solid backer. I could use that too. I think I want Ikea Quanu though. So one of the 81s I'm going to get is Ikea Quanu. Definitely get used to left tackle. This is a plus seven overall boost to left tackle. So we'll start there.  On the face, he's a 20,000 coin corner. Nothing crazy. Those stats are unbelievable. These are mid, but 87 speed, 87 excels, six foot one. Unbelievable stats on this Eric Stokes. So I feel like I kind of just have to take him for the value. You know, for perspective here, on the left is 83 Charverius Ward. On the right is 81 Eric Stokes. So we can also take out Sherman and put in Charverius Ward. And then we'll move Sherman to our depth corner because there are some sets where I actually have six DBs out there, I think. Eric Stokes. That's actually a really big upgrade. I really like the Eric Stokes guard. And then Jemari is going to come out for Ikea Kwanu, an O-line boost that takes us to an 81 overall. So now the O-line really just needs a right tackle and we're full elites up there. So, hey, and a great start right there. It's two core positions. Nothing insane. The two 81s, I will totally take that. Thank you. Yes. Redemption on this. Rookie Premier Jackpot. Okay. We recently picked up Darnell Washington with this wheel spin, and thank God I got it again because I felt so bad that we couldn't win that game. So our options of players to take here is everybody you see here on screen. Right now, I'm not even going to lie. I'm kind of looking at Nolan Smith. He's insanely fast with 83 finesse moves, 6-2. He's super good. Dorian Williams is basically Junior Seau. The only other thing I could do here I think is like Paris Johnson. It'd be funny to get Paris Johnson because I haven't been franchised too, but we did just make a left tackle upgrade. I think I should probably go linebacker here. Keep in mind Christian Gonzalez is insane too, but I just picked up Eric Stokes. So we should probably round this out with a linebacker. Nolan Smith promoted to my starting left outside linebacker. This is a big episode right here. I'm really liking these additions. Nolan Smith there. Davion Taylor moves down. That is a plus 10 overall boost on left outside linebacker. And we've got one final spin. Hey, and if I could play God mode here, I think I would take right tackle. Finish the O-line, and this would be three perfect wheel spins. It's a really good spin, but I'm really scared that we're going to double up on a position. Okay, 86-87 blind. You guys know the rules. I'm going to sort the whole auction out by 86-87, and I'm just going to start scrolling.  Oh, wait a minute. Yo, we got A.K.A Leonard Williams. Dude, he was on Pack and Play Squad 2. He's a monster. Oh my God, and the player I went down from would have been a massive Mike Kosicki upgrade. I was sitting on 87 Mike Kosicki, and I went down to Leonard Williams. I don't know who's better, but all of them are really, really good. It would have been hard to go wrong here. I pretty much, the only way that went poorly is if I got a quarterback or a wide receiver, I'd say. I believe he gets run stuff. As you see here, he'll start the game with the red X lit up. He gets better block shedding versus run plays. It's insanely good against the run. He will blow up every run block. He deactivates itself after three plays, and then I think it needs a couple of plays to charge up too. And right now I have one defensive ability, and that's on Junior's say-out, so I have the room for this. And I'm going to use him with instant rebate. This is an ability I have literally never used in my entire life, but successful block sheds give you a pass rush point. And since he'll have that X factor against the run, I imagine he'll get a lot of successful block sheds. He's also in 87 overall, so he should kind of be getting successful block sheds anyway. I imagine this is going to be a pretty nasty card. A massive 87 overall player on the line, 281s and 84, and of course our entire season because if we lose, we reset. So every game from here on out is actually just an absurdly massive game. We're going to put Leonard Williams at left end since we've already got Bosa, but it doesn't change anything. He still gets his abilities. He just doesn't get his New York Giants chemistry. Literally doesn't matter to me. And there's defense. The only thing that might be worth looking into is if Nolan Smith gets abilities. He does. He's got some unstoppable force. I'm going to give him lumberjack. I've actually been cut sticking a good amount in Madden 24 just because that juke is so powerful. And of course the challenge wheel. She's been so clutched for us and if I can complete it, I'll get one of any pack in the store. What do we got? Bro, who is going to do this? Honestly, like in my head, it's Fred Taylor, but I just, I know Fred Taylor is going to drop at least one pass to them. It's a very difficult challenge. No doubt. Keep in mind, it's PPR score. Jerry reception is a point. So if Fred Taylor has 55 receptions, he, oh, damn, he's got the RG3, yeah, damn. So you can see his prime time's got that same aka X factor. He's starting the game with it activated. We're just going to go Fred Taylor weak side here. Jerry Rice. Oh, Jerry Rice took his man, but what kind of blitz was that? I couldn't even throw instantly. I'm going to blog Zach Coons and I'm going to try and hit Jerry Rice here. I just had to get that ball out. I was going to get Zach. Oh, damn it. Honestly, that wasn't open. I just had to throw it. I was going to get Zach. Shit, first to 10. Let's go go in a weak side run. That DB ran right past me. He must have guessed pass or something. Honestly, this has been a scary drive. Try and hit Jerry Rice on this whip. Oh, it's there. Another delayed safety blitz. And this is my first full game trying out the new passing system. The way I understand it is passing is basically like a meter in 2K.  Maybe our fantasy points go to Jerry Rice. I feel like it's going to be kind of hard to just force speed Jerry Rice, though. Like it is, it's really easy to dump that down to Fred Taylor. And I feel like it'll be kind of easy to get Fred Taylor in with a run too, right? Yup, yup, yup, good. Nope. Oh, we're getting there knocking on the door down to the two yard line. I'm going to go dive up the middle. He's sitting there with this, yo, somebody. Somebody's got to block the linebacker in the middle of the run, but ever. That's okay, third and goal. I believe in Fred Taylor. I believe in this old line. Let's go! Okay, so Fred Taylor right now has a reception. I think one reception, some receiving yards and a touchdown. So he's already on course for these fantasy points. I think we got to hand it off to Fred Taylor and get two additional fantasy points for the two point conversion. Here's what we do. As this game continues, we're just going to check in with Fred Taylor's fantasy points. And if he's like right on the brink, the next touchdown I'll go for two. Hand off? No, so he does pass out of this. That's good to know. Checks down. Ooh, shifty movement. All to get suplexed. Dude, those Saints Unis are crazy. Halfback? Yup. I'm just going to QB Spy underneath. This could be a run too. This one is a run. I've been struggling this year to find a defense that I really like. Why are you chewing clock in the first quarter? Why would you do that? Oh, I need a big hit here. Oh, so, ooh, damn, nice spin. I was trying to clobber him there and I didn't get anything for it. First and 10 right here. Let's see what he goes for. He's going to go with basically a draw, but this one's going nowhere. I'm going to guest pass here and go man blitz. Yup, yup, yup, yup. Yup, let's go. Guest pass. Play everything. Play everything. Flatter William. Oh my God. Wait, what? You're just going for this outright? I'm all over this. Stay out. Oh my God. Turn over on down. An 84, stay out, make the monster play.   Let's go Freddy boy. Oh, maybe not. Oh, I didn't mean to truck, I meant to juke there. He's tilted now and now he's running the cheesiest defense he knows. The good news is I might be able to take the top off him again with Jerry Rice. Oh my God, I think I did. Ooh, I have to get it right now. I got to get Jerry Rice right now. He's there.  And I got to say now that I'm using this placement slash accuracy throwing, Kenny Pickett has not missed.   Oh, I ran that so poorly, I had to lane.   Everything was bottled up. He's running the same thing. I'm going to hit Jerry Rice again for this first down. She's a little hard out, buddy.  Now that's Madden 24 right there. I used the timing throw, perfect accuracy. How can it in the same sentence say perfect accuracy and it can say out of reach? How can it be a perfect throw if he can't catch it? He hasn't scored yet. He might now, but it doesn't matter. I'm winning this ball game. It's going to go with a read option, RG three and he swallowed up by Nick Bosa. Nick Bosa back to black plays, making some monster stops right there. I just got to go fly to 24. Yup, yup. Nick Bosa, all three of those plays. That's our prestige player right there. I almost feel like John Metzsche's open somehow here.  Second and 17, I'm chewing clock to kind of like get out of this scenario. Please, please, please, please, one more. Big, big.   He's gone. It's on that clock. It was going to be 14 to zero ball. Oh my God. He overseen a juke, stiff arm juke, JSJ, a little jizz. Ooh, okay. I ruined it. Oh, I ruined the moment. Please don't call it that. Jerry Rice is an absolute savage. Jerry Rice had a monster fantasy game there, but it definitely was in 55.   But at the same time, you got to remember last episode. Last episode, my challenge was no turnovers. And since the guy quit, I got that challenge complete. So it works both ways. Either way, I don't get to complete my challenge wheel, but we lock in our player, we move our record to three and two, and wow, for the third time this season. You know what's crazy while I spin this? Oh, I was so close to the jackpot. There's one jackpot on the rage quit wheel and it's team wheel jackpot. So we're going to do the get a gold player pack five times. We get to choose one player. What I was going to say though, we're three and two, every all three wins were rage quits, which I think is crazy. The games that we've lost were one possession games, tough games against tough opponents, and then my wins are all rage quits. I just, just a weird like back and forth. I really hope I don't get matched up with a God squad now. That's the concern. And this is actually already our fifth gold plus player. Absolute bummer.  I'll just take a pass. In reality, what we got out of today's episode is a massive moral victory and some insane players.  Ikea Kwanu, a great addition to our offensive line and some massive defensive players. Nolan Smith, stud. Junior Seau made a diving fourth and 10 stop. Eric Stokes didn't get to do too much today, but Big Cat had a massive TFL on a screenplay, which actually set up the fourth and 10 for Seau and Nick Bosa single-handedly forced him to punt. All right boys, listen, I apologize. That's back to back rage quits on Wheel of Mutt, but it makes me happy. It puts us in an awesome position to continue to win games. Our new record is three and two. I can smell the playoffs. We're two wins away from that. We're one loss from being booted. I love you guys. Thanks for watching us always. I'll see you in the next video. Peace.


All right, I think we'll go ahead and get started here People are slowly trickling in that's okay the first little bit so the talk or just a little bit of background before we get into the meat So I don't think people are a little late if they'll miss too much to it so this talk is Ethereum layer two and beyond Talking about what's going on with a layer two solutions in Ethereum Solutions to scaling problems in a theorem layer two and in some cases how those might be applicable to other Hyperledger projects all these solutions. We're going to talk about her right now just a theory based solutions But they are very portable if people are interested to the other solutions for the various block chains and that of course You know kind of depends on the reasons of why you might need scaling and what you might get out of this kind of a scaling solution I my name is Daniel Farron. I'm a blockchain protocol engineer I am one of the original Maintainers on hyperledger basu. I also sit on the technical steering committee I used to be on the all-core developers, which is kind of the equivalent of the TSC for Ethereum And right now I am working at reddit On the community points team and one of our concerns is of course ethereum scaling So I have a bit of insider knowledge as to what's the issues with a lot of these are Which is why I thought this talk might be valuable to the community as a whole into hyperledger community So first I'm going to talk about, you know, why does ethereum need a scaling solution? And then I'm going to give an overview of the various scaling solution approaches and some of the trade-offs And some of the things you might need to do to scale it beyond just what's carried as the carrier on the chain and Finally, I'm going to talk about specific categories of these solutions because there's you know It goes deeper. It's like you could do these sort of things and when you combine them Here's what you get out of it and then finally I'm going to finish with an incomplete review of a few of the existing solutions And I'm in that I'm mostly going to focus on the solutions that are live today and actually being used on the ethereum blockchain Not so much focusing on the hypothetical solutions, but the solutions that are actually out there being used So the first question you guys ask is well, why does ethereum need to scale? What does scaling mean to ethereum? So here's one example that's been used is it is kind of a reference point Since the beginning of bitcoin and you know bitcoin had its own scaling issues But you know as far as the scale that the credit card networks reach is a good example of the type of transactions You might need for a world computer So one example mastercard and this is just mastercard not visa discoverer or any of the other European or Asian card networks But mastercard alone as nine hundred and sixty seven million Mastercards in circulation. That's basically the equivalent of an ethereum account And that's just the type of cards you might put in your wallet or that your company might have on file to do Transactions, so that's an account that you know, you can do a transaction with Each day there are about a billion transactions a billion and one was one estimate that I found and if this was evenly distributed across the entire 24 hours hence it's not but if it were that would be 11,500 transactions per second on an even basis it clumps up It's busier in the morning when everyone buys coffee in the evening when people buy dinner And it's not so busy at two in the morning when people buy their steam video games off of steam So the peak transaction that ab visa advertises that it could handle Or estimates that have been talked about in some of these whisperers You can't get a hard number from visa because honestly the number varies with the way they set up their network But the peak TPS that they've been that's been tossed around is between 24,000 and 56,000 Transactions per second and that's just for visa and you throw in mastercard Discover and all the other card networks and you get quite a large transaction per second And that's if you wanted to support a credit card payment network Of course, you know like trades and finance and high-frequency trading it can get even higher than that So what is Ethereum looking at? How do they compare to these scales? Today Ethereum has released last week when I put the numbers on these slides 155,998,485 unique addresses. They've probably gone up to 156 million by now It's not too hard and that's addresses in use on the network That is about an order of a thousand less than what's going on with Mastercard or you know more than a thousand Not a thousand. It's only It's about 5x The second thing is the daily transactions. This is the thing. It's at least a thousand less than Mastercard And they may do a million and two hundred forty seven thousand daily transactions And that's fourteen point four three sustained transactions per second now Surprisingly it does hit about that it doesn't go too far from that and that's because the blocks on Ethereum are basically full all the space that you Can't put a transaction on there There is enough market demand that they are filling that up and that contrasts with the fifty four point nine TPS theoretical maximum of the current 15 million gas per block divided by a block every 13 seconds And here's the real kicker is that twenty one thousand gas per transaction if you're just shuffling Ethereum between accounts You can get almost 55 transactions per second But if you do something more exciting like a decentralized finance arbitrage call between two different liquidity pools You're not going to get that you're going to get something more along lines of the 14 Transactions per second and that's a lot of what's being seen on Ethereum today So and this is at a 30m Ethereum's current scale There's lots of you know if you listen to Elon Musk you just say well just increase the block gas limit just reduce the block time and Pick you'll try that on Binance and you run into different Creative ways in which the blockchain can fail and fall down and not provide proper health For one Ethereum right now is on proof of work So it needs to have the smaller gas limits begin with when you get on to the the Binance smart chain type solutions Even then it provides issues But I think the kicker there is even if you go with those you know bigger blocks faster That you're still that the demand is going to exceed what is available at Ethereum when we do those obvious layer one scaling solutions Um, so what happens and what people have seen is that when there's more demand than space The cost of gas goes up So that's why people complain about the price of gas Because there's people engaged in decentralized finance and see that there's money to be made And they're willing to pay a higher premium than someone who just wants to trade their crypto kitty and give it to their nephew So the prices go up and only the people who are willing to pay the price go in there So the space contracts and the space, you know, the space is the same The the the available percentage of the addressable market that can use the contracts because the market is growing And this is a fundamentally an unsolvable problem If you do it just at layer one Because the fundamental scaling issue with Ethereum is that at a certain key critical aspect Ethereum is single threaded All the transactions that you read into Um to create the state route are executed in order Each previous transaction can impact each subsequent transaction You can do some parallelizing parallelizations if the transactions don't interact with each other But in a lot of these decentralized finance scenarios The ordering is very important because that's how people make their money So Ethereum is single threaded when it comes to evaluating the transaction. So that puts an intrinsic limit on it So so the solution for layer two is to find ways around the single thread And that's really what makes layer two a separate thing as layer two is like, okay, great We'll take this one transaction. We'll keep it single threaded and we'll kind of multiply it out to multiple other transactions That will be rolled up or combined in some fashion So that what sits on a theorem layer one is some representation Of what more complex things we're doing on layer two And this is how we get the multiplication to the scale that is necessary To scale up to these larger solutions Is by taking multiple transactions and combining them and say the net effect of this one transaction Is this token moves from here to here might take 15 steps in between and that's what the layer two scaling represents and solves So when we do this sort of a solution, there's some concerns when we move stuff for layer two The first question is data availability if you're going to take all these transactions and you're going to combine them together Where do these transactions didn't live? And this is a fundamental question you ask for all of your layer two And all of your off-chain scaling solutions when your chain is full.  So one thing you can do is you can store your data on the chain And that's what things like call data and ethereum events You can get the equivalents of your calls of what would be executed in your layer two without actually executing them You can say I do this really complex d5 transaction with these parameters and you don't actually execute it So you can fit it in that gas limit on the block The second option is of course to do it off chain rather than putting the transaction on the block you say I have 15 transactions. They're represented by this hash and go find them in ipfs. You're using our layer two You know how to go find them Um, the question the problems with this data availability Again is where do you get the data if it's on chain? It's more decentralized more censorship resistance because everyone can get it and if you store it off chain then you need to have some sort of a Cooperation and discussion between all the layer two Participants and service providers so they can get the the data work together And not be subject to concerns about censorship data invisibility and all the other things and Actually in some cases not being able to see the data is kind of an advantage A lot of the early um private transaction solutions on things like quorum We're kind of a proto layer two solution off chain using this off chain as a feature So, um, I won't go to that depth in this talk But that's you know, some of these ideas are have been around for quite a while And they're just formalizing into this new idea of what layer two is The second question is what sort of things are you putting on layer two? What does the data mean? And there's a continuum of about four steps of what these things on the on layer two mean The first of course is just data. There's no intrinsic chain meeting. It's just Whatever you want to put on there. It has no meaning to ethereum You might have meaning to your layer two, but there's no meaning to the ethereum The second layer is it's the native transactions the same transaction you might put on layer one It means the same thing to ethereum. It's the same smart contract. It's the same Peer-to-peer networking solutions. They just might have different chain IDs and different sub-networks. They transmit upon The the the next layer is of course transaction claims and fraud proofs And this is where you get the roll-ups where what you're putting on layer one Is the net effect of a of a clustering of several transactions Where you might have you know five transactions the net effect is that one column goes up the other column goes down And so what they put on there is the transaction. They claim this is what it means And if you don't believe me post a fraud proof to show me that we've done it wrong And so that's the essence of a lot of these optimistic roll-ups is they optimistically post the results And then they say prove me wrong and they put money on it So there's an incentive for you to prove them wrong. I put one eth to say this transaction is correct Come and get the eth and prove me wrong And of course the fourth solution is a bit different from that. These are the zero knowledge proofs So there is no fraud proof and there is no full knowledge of what's going on there But there is an argument using zero knowledge encryption technologies to say well I did a transaction all the rules were followed and here's a proof to say that all the rules were followed So you put a state proof to say the state's consistent everything's true and what I did I don't have to share with you, but everything's correct And that's kind of the extreme of the layer two is where the knowledge is not required to be known amongst the amongst all parties Um, one last one another concern is asset mobility So let's say you have a token on layer one or you have a theorem on layer one How do you get it back and forth between these layer two solutions? this kind of goes into the uh, The complexity continuum of what the data is because if you're just drawing data You might not be able to put a theorem there But if you're using zero knowledge proofs Then you have some very structured meaning that I can only take a theorem and these five smart tokens in here And I can prove that it's correct But then you have the question of how do you bridge it between layer two and layer one and layer one and layer two Getting into layer two is easy. There's a smart contract. You can do custodies. That's typically a solution Getting from layer two to layer one is difficult because you got to get the layer two data on the chain You got to make sure it's going to stick on the chain And you got to make sure that it's not going to be rolled back or challenged or proven wrong So in a lot of these cases it takes about two weeks to do this It's like the agreed standard for you know, the the censorship resistance Some people have found this is a market opportunity. I'll give you a fast exit I'll engage that counterparty risk all they want is a hundred basis points So there are solutions that will do these fast exits and it's kind of built a financial Uh complex financial systems for some of these items if you're willing to wait you get it all if you're not willing to wait Pay a fee and someone's willing to take the risk for you. You might not like the fee, but that's the way the markets work And of course the one that I've alluded to in some of the other slides is censorship resistance controllability Um, there's a layer two solution. Is it open to all providers? Can you make sure that your transaction gets on there? Can you make sure that um people aren't manipulating it without being seen? On chain, it's simple because you can put any transaction on chain. You can interact with contract It's fully there and in the public and you can prove that the data either was there or wasn't there When you go off chain, it gets a bit more complicated Because you need to have different systems to prove that wherever the off chain aggregation is happening The people are actually accepting it and it's actually working well um so the um Let's go It's a second So on off chain, you know, there's there's ways to prove that you are actually Your data is being included and it wasn't there But those are involved more complex systems that affect the impact and the complexity of the layer two solution And there's some advantages that only some people may see it. That's a privacy and security concern that some solutions find advantageous So in this it forms a complexity continuum Data it is what it is transaction is the same as what's on the layer one Fraud proof this is actually a roll-up and that's actually executed somewhere else And it relies on external watchers to catch the errors and of course zero knowledge Big fancy math easy to verify but a few people can tell you why it works. So there's a lot of um Mathematical faith put in it. Luckily, you know faith in mathematics is actually kind of easy to prove if you can get the right person Um, so, you know, I I can't explain how some of these work, but I believe that they do So from this we get what I call the periodic table of scaling you take on chain and off chain on the vertical axis You need to get the four scale of of the four entries on the come constant Continuum of complexity along the top And this gets you what I think is a more complete solution of what the types of solutions are The four boxes on the right the fraud proof zero knowledge on chain off chain when most people talk about layer two on ethereum They're talking about one of these four solutions Now when it comes to off chain data for data transactions, some people say it's layer two. Some people say it's not So I call that category quasi layer two and if you're doing non-chain transactions, you're just doing layer one And if you're just putting data on chain, please don't do this. There's more efficient ways to do it Um, it's happened before so I have a slide that'll show you some of the details on this later on So again each one of these have put a name some of these the ones on the right are the industry norm for if ethereum Optimistic roll-ups are on chain fraud proofs.  You're hashing it or you're putting the document literally on So the on chain and off chain data solutions are pretty simple On chain is just graffiti a famous example if you go to bitcoin block 268060 It contains an entire rick roll and op return before they lock down the size commitments Off chain, you might hash a document or a merkelized data tree or use fancier structures to put it on on chain Up to put the data off chain and put the hash on chain so you can later come back and say hey I invented this 20 years ago. Here's a hash of the invention document So that's the sort of things you would use off chain data for some of the simpler solutions Transactions on chains just layer one data and off chains. You would use something called side chains basically any Peer chains is another example. I might give to a name It's basically any other blockchain where there's some sort of mechanism where you can bring the The tokens and the data back and forth between the two chains Tomic swaps custody's oracle doesn't look up and lockups are typical ways that you might do this quasi layer two Is kind of a layer two system Um, so, you know, what's there between a quasi layer two and a real layer two In my opinion a real layer two system depends on the transactions of the layer one blockchain And the layer two system systems just roll them up and make them behave like the other systems quasi layer two systems may or may not follow the transaction semantics of the layer one that they're being put on They may respect the conventions. They may not and in some cases you could consider these blockchain integration systems like cactus and And you know, it's probably a good example and weaver is another example These might fit into the quasi layer two where you can integrate data between them bring them back and forth They're not strictly a layer two because in some cases you're bridging peer systems So one can't be said to be a layer of another Sometimes one might be entirely a layer of another So I think this quasi layer two space is an interesting space to look into that I don't have time to dive into in this talk So fraud proof systems are the the next layer of complexity And the only like I said have recorded the net effect of the change Um, the results of whoever posts it is trusted until it's proven false And these systems have ways where they can put them where they can say here's the proof Here's the math. Here's the transactions. Here's the rules you would run it by Some systems you need to find the block and run the entire block It's one time where you run the entire thing and show that the output's different on the layer one chain Another ones have more interactive systems where you kind of do a a binary proof to where you find the one transaction where things were different And where you have to do it interactive So what happens is whoever posts the result will put a stake on there and say hey I put one a theory to say that this works and people who Post a false one and are proven wrong or who their software is buggy will have their stake taken from them And typically whoever's proving it will get the lion's share of that stake because they proved it wrong It's kind of a bounty for you know, I dare you prove me wrong. Okay, you are right here Have your have your share of the money So that's how these fraud proof systems work is they incentivize people when you post it on chain To prove it wrong and when they do prove it wrong you get the money Kind of the financial incentive to make it work in a permissionless system So on chain you would store the inputs and results on the layer one. There's no computation on the layer one It's just execute the fraud proofs themselves are posted on the layer one Off chain it gets more difficult because not even the inputs and results are always stored on layer one When you do your fraud proof, you got to bring those with you and you got to have mechanisms to prove that Those were done one very simple thing is a counterfactual You just have you know one thing that says, you know what I give up your lying and you know You push the everyone loses button So that's one way to do an off chain solution But there's better solutions where you can prove that they did this they did that and they lied about their battleship and put it here So the results are posted on chain only when fraud is proven And you might do checkpoints or might be incentives to do it, but mostly all the data is kept offline The zero knowledge systems are of course the very end of the continuum These depend upon a lot of advanced polynomial math that I don't understand I didn't take nearly enough math in college to understand this The big one that's out there is called the z-case mark. There's zero knowledge succinct non-interactive argument of knowledge A couple key things each one of those words is improvement is important zero knowledge There's you don't need to know anything about the transaction to prove that the rules of the system are followed Succinct these proofs are actually small in size small enough to put on a blockchain Because there's some zero knowledge proof systems that are just huge and easier to use But you can't put those on a blockchain The next step is also important non-interactive Because some cases to prove it's interactive like you know, if you're thinking of odd or even numbers you might give them a number Or say five, okay, and you might check and see if it's odd or even at that point But the non-interactive they need to set up a system so that you don't have to do these challenges So the challenges are kind of built in and the last part is argument of knowledge because this is cryptography At the end is probabilistic These probabilities are cranked up to the extreme But again at the end of the day there is an outside and I do mean outside chance that you can find two solutions for the same key highly unlikely It would take the burning out the entire jewel strength of the sun to calculate those So it's a very strong argument But at the end it's an argument that you know that someone did this math and they follow the rules So these transactions nobody can really see what's going on in these transactions All you know is that the three column argument, you know, like for example, if you do three column math that it's it's proven well in the That it follows the rules of like, you know, three column or two column Counting but whatever the rules for the transaction The uh the circuits the integer circuits are set up so that proves it Now the zk snarks don't have fraud proofs and they call these validity proofs and these are what you post to the chain And once it's there the math either works out or it doesn't there's no stake to put on there's no finality um And peter ask if I can name some of these open source projects and these will be coming up on the next set of slides Um, so yes, I'll definitely name some of these and it's coming right after these slides Um, zk snarks are specialized and not yet general programming capable is one big risk Um, you can't just take an ethereum contract and put it into zero knowledge proofs So as peter's question We're gonna list some sample projects. These are the ones that I have here today that I have slides on baseline protocol is an example of off-chain data where you can just put your data on there A good example of a side chain is x die For optimistic roll-ups arbitrem is one and for zk roll-up volidium loop ring off the top of my head some of the other examples of side chains, um Would be polygon has a chai side chain solution Anyone that bridges off to um, you know the the other x die the x chi The side chain solutions tend to be specialized So there's there's that the optimistic roll-ups. There's another company called optimism running something called the ovm um, and that is something that Should be shipping here in july arbitrem has actually shipped their main net So these optimistic roll-ups are actually rolling out now arbitrem and off in optimism are the two best examples Polygon is said to be working on one hasn't shipped it yet. Um, polygon is trying to do everything Um loop ring is a zk roll-up volidium as tech is another zk zk sync I think is another one So those are some of the names of some of the projects. Um, and I should update the slides Actually, there is uh update the slides on there and I will post um I will post these on the uh Well, well, I'll update my slides So question from tom kline. Can you give some examples of where zk snarks is appropriate and where not? So the most simplest place where zk snarks are most appropriate Or where you're simply trading ownership of tokens and you're not doing anything fancy with it If you just have a simple erc 20 contract and all it is Is it's who owns the token and who doesn't you can send tokens you have You can not send tokens you don't have and that is a great example of where a zero knowledge type system works Where it's a very small self contained well defined Loop ring implements such a system like that and they support up to there's I think it's a thousand and they're loop ring v3 2 There's a limit to the number of erc 20 contracts that they can support because of the math Say support ethereum and basically all the major value bearing tokens that you would have on there So a situation where it's very simple very repetitive Stock ownership would be another great example. I mean, that's essentially what tokens are If you're just sending stock back and forth to people and doing something very simple That's where it's appropriate where a zk Zero knowledge proofs are not appropriate or where you're doing rich smart contract type interactions Um, for example, if you're doing stuff like, you know interest bearing things like ave does if you're doing, uh More complex logic in there If you have like the crypto kitties, um, they have some special on-chain logic that goes on when you breed the kitties That's kind of unique the more specialized and the more distinct what you're doing on The blockchain on on your smart contracts the less and less appropriate zk rollups are Now you can always write your own zk, uh, circuit zk integer circuit That is always an option But the more and more different you get the more and more harder it's going to get to write those and you'll need to get You know, there's less and less people who have the knowledge to do that So I think that's an excellent question When would you do zk over smart over an optimistic rollup? And if you're doing fancy stuff with your evm contracts The optimistic rollup is almost always the better solution if you're doing very simple Standard industry standard token trading zk rollups are an excellent solution and you get a lot of privacy out of them Um, so I got about four minutes. So that's going to be um one Minute per each so baseline protocol is a way that you can baseline your records into layer one And they got some fancy your way. They don't just store data They got some fancy way where you can close your baselines Um, you can tokenize what you've done with what you put into those protocols So the theory the the story that's always told is you can take your You can take your bill of sale and you can baseline it or your your purchase order You can take your purchase order You can baseline it make a token out of that and trade that token on an insurance basis And that data is committed on the blockchain through the various servers You can get your data Um, and you can prove that it's been on there that it's been proven and you can You can tokenize it which I think is something that people are really excited about Um, this is under active oasis standardization and the website is baseline dash protocol dot org The next one is xdai. I think this has to be the oldest side chain that is still running on ethereum That's functional and provides value Um, I actually used this about two or three years ago at eith denver Um, they started paying the food trucks with xdai. So you'd actually use the blockchain Um, and you would be able to Buy all your lunch with xdai xdai chain.com is the solution is the location for that And it does, you know bridging protocols with proof of stake and all that other stuff Arbitrum just launched. Um, I don't have nearly enough time to talk about it But it has interactive fraud proofs and you can put any Evm smart contract on there that you want it compiles it to its custom solution Offchain labs.com. It's probably one of the hotter Because they just launched their their um, their beta net and they're going to be opening up It's going to be one of the ones you're going to see a lot more pressed about Um, optimism is the other one. Um, they we're going to launch in march. They had as late to july So you'll probably see another press cycle about optimism coming up here in july as well And loop ring. I think it's one of the ones that is actually running on ethereum right now is a zk as a z as a zero knowledge circuit It's been live since about 2020 each block route is committed to layer one But you do all the zero k circuit stuff mostly offline. I think it's more of a lydium Than a zero knowledge roll up Um, michael brugani asked can you compare the capabilities of current l2 plus e solutions To the promises of blockchains that claim better scaling than e in terms of complexity potential economics of scale, etc Wow, I wish I would have had that question earlier in the talk. That's a that's an excellent question. Um so One of the values of doing l2 on ethereum is that's where economic value is um, solana For example, doesn't have the same community around it yet They may get it. They may not but today it doesn't But um, solanas also doesn't have multi-party backup failures They had one node can bring the whole network down and they had to do some rollbacks. So there's one risk there It's not really bft tolerant. Um, but as far as um scalability Um, it's it's you're still running on the same issues in that When you do a layer two you're spreading across multiple computers And you're creating a solution that you don't have to get everyone through the door at one point Um, you can do lots of transactions per second, but if it has to go through one cpu to prove it That's going to be the problem. So when you look at these other solutions that are doing it on layer one You're going to want to make sure that they're not just you know Just cranking things up faster and shortening block times making blocks bigger You want to make sure that there's some fundamental solution That is saying to it that your computer does not have to transact in the entire world's credit card database That your computer could participate and only transact one portion of it be sure about that and share it And that's a lot of what these layer two solutions are doing is they're breaking it out. They're taking their world So the world only needs to care about their fraud proofs But everything else that's going on the economic value of their chains only the people participating in there Um need to worry about it. Um an anonymous question is what is a side chain? so a side chain is basically Um a side chain isn't just another blockchain network And when they call it a side chain Um what they're doing is they're making statements that this is a subservient to this other blockchain So I think xdai you could say is truly a side chain of ethereum Because they use the dye token that is made by the maker protocol and without the dye token They would not exist as a blockchain. So they're really a subset of the ethereum uh blockchain otherwise you could have Near protocol is is very popular in doing some of the stuff where they treat it not as a side chain, but as a peer chain Near protocol has you know stands on its own has its own economic value But they have logic where they bridge things back and forth You can take your nfts you can put it on near and you can trade your nfts on near By by pinning them in a particular address on eth1 And you can move them back and forth but near has its own economic value So near is not a side chain of ethereum in the same way that xdai is a side chain of ethereum But all three of these these chains are independent blockchains that run their own consensus They have their own nodes that if you want to participate as a node in there you have to process all the data in there So I think that's probably the best description of the side chain is just another blockchain That is dependent upon one of the other blockchains to get its meaning So that's what differentiates a side chain from just another competing chain um, so again, uh, these are my last two slides And it's coming in two minutes over so I'm going to keep talking until the room proctor tells me that I need to That's probably what they've done in the chat room to tell me that I need to be quiet So yep, and so it's I'm over time But these are some of the baseline examples and I thank everyone for coming to my talk You can get me online. I am I think I have my I didn't put it on the on the thanks page, but I am at shemnon And you can get all my contact information on the hyper ledger forum website I'm the only dano out there for the most part in the ethereum world. So it should be easy to find me All right, thanks


Hello Amazons, we're Sophie and I are here for a construction tour at Van Chowen and Busch Gardens for iron-glazing solar vortex. We're on a construction site now. So these were the walkers going to be right there and this is the front entry plaza. So now we're going to go up to the station for iron-glazing. They redid this queue from the original Grazzi when they used to be Guasi. This is actually a quick queue line for iron-glazing. We're in the track for iron-glazing now. So we got one of the elements. I don't know what element that is but got that. So that was it for the construction tour for the solar vortex and iron-glazing. Thank you for joining us. Have a good rest of your day.


That's for sure. NASDAQ grabbed everything back that it gave up on Friday. Gold. Gold corn cut down $4.20, trading at $17.83 an ounce. We had silver down 33 cents, $22.77 an ounce, light sweet crude, up a buck 23, not even at $69, bottom line that thing got smoked and smoked, I mean in a monster way. Notes and bonds. The 10-year note right now trading up 4 ticks, 30-year down 4 ticks rather, 30-year down 6, both the 10 as well as the 30, they went topside and they went topside in a huge way. They continue to want higher price, lower yield, I know it sounds pretty wild but the bottom line you can tell by the way that they moved on Friday that that's exactly what they're going to get. That's the world king dollar. King dollar's up 242 ticks trading out at 96, 330. If we get open, we take a look at the S&P what you're going to see is this. The spy, you're getting higher, you get volume contracting, the bottom line you get 52 million shares, you have 6.5 dollars out here. Nice move, there's no doubt about that. That being said though, guess what? When you get this contraction, I suspect number one, you've got window dressing happening, you'll probably go up and reach the high once again, you'll probably do it on lighter volume and then guess what? My take, we're going to be in a monster consolidation. The highs, I suspect we'll get hit first, then you're going to back off. You get the contraction that's happening inside the queues right now and half a day the queues went down with 51 million shares, we're going up with 36 million. When I say half a day, we're talking about the aspect of 3.5 hours versus 6.5 hours. Gold, gold contract wants higher price and as Tommy had said this morning which is really intriguing, if you can find equities folks that did not go down, on Friday that is where you want to be because the bottom line is that says huge amounts about how strong the markets actually are. When you get a day like Friday and you get a market, an equity that's flat or sideways, bottom line that's showing you the strength that is inside of that equity. We're going to take a look at the dollar we have with the dollar right now, dollar bottom line, went to higher highs, gave it up. Stay right there folks, come right back.