All Core Devs - Execution #137

All Core Devs - Execution · 29 Apr 2022 · 1:30:14

All Core Devs Execution call number 137 centres on preparing Ethereum for the Merge, its move from proof of work to proof of stake. Perry reports on the latest Goerli and mainnet shadow forks, and Péter Szilágyi asks for tests in which execution and consensus clients are out of sync around the transition, which leads to a debate on whether clients should refuse to start without a beacon node. Developers also discuss adding safe and finalized JSON-RPC block tags, letting validators rather than block builders set the gas limit through MEV-Boost, what success should look like before upgrading public testnets, and when to delay the difficulty bomb, as Thomas Jay Rush shows charts suggesting block times may soon rise sharply.

Speakers

Topics

From All Core Devs - Execution, hosted by Ethereum Foundation.

Transcript

[Music] non-discrimination [Music] [Music] thank you

[Music]

Micah Zoltu: that's some foreshadowing right there

wow

Tim Beiko: so right where we searched three might go into comments welcome everyone to awkward devs uh number 137 today so it posted the agenda in the chat uh we have a bunch of of merge related updates um Frankie that's probably all we're gonna have the time for um

yeah and yeah I I guess you know to kick us off uh do we have Kerry here yes okay so we have Perry um Perry do you want to walk us through like the two Shadow Forks that happened last week and uh where yeah what what happened there but um so we had two Shadow Fox last week when um during their connect the first one was a girly Shadow for girly Shadow Fox 4 and this was I think the first Shadow Fork where we had multiple clients taking on and I think everyone made it through the transition but bezu and Aragon post transition had issues and stopped

working uh but during the week the teams pushed a bunch of fixes and we had midnight Shadow Fork 2 on Saturday so that's about six days ago um and minute Shadow Fox 2 was like it worked a lot better we didn't have any major issues it seemed that all clients didn't hold through the transition and also well after we did uncover a couple of issues with deposit processing and we were looking at more ways on how we can Harden that um we did have an issue with late blocks uh being proposed by Prism it was a fixed pushed like relatively soon after it was discovered and the net has been quite good since then

um the other issues we found through the week was some proposal related incompatibility between Nimbus never mind that's been fixed now we had one I think we had two issues with basal prism um but I think that's also been fixed right now and eragonism is still um undergoing triage I don't think we know what's going on there yet but there are other Eragon notes that are in sync so it could just be some some incompatibility we have to figure out um but in general the network is stable I think we're looking at like 96 ish percent participation and we're hunting down the rest

awesome thanks for sharing anyone from any of the client teams want to add some some comment there

Andrew Ashikhmin: um yes I'd like to add that occasionally I I hear reports of Aragon nodes being stuck especially when people try to think uh main action of work some sometime afterwards so I have to investigate these things stock issue and also like fixing Hive tests it's something on my plate so still a lot of things to fix in Aragon for the merge

call it uh any other crime team

Péter Szilágyi: yes uh I have one I've been discussing

with her it's a bit with diary after the shadow Fork and I got this also ties into this uh Ariana before that um as so these shadow chords are nice to test the transition they are always testing it with perfect clients so to say namely that other clients both the dica clients and the exhibition clients are in sync so everybody's just going in lockstep and waiting for the thing to hit and um I mean whilst that is nice I think it will be also interesting to somehow create some tests where certain kind combinations uh are out of sync or out of wax essentially and uh I probably

setting this up would be quite messy or quite complicated maybe it's an API of points would be needed to actually test these scenarios it would be super nice if we could have for example some nodes that are let's say the beaker client is in sync but the attribution Hyatt is just thinking whether that's initial snapping or just behind a few blocks and doing full sync and it would be nice to have the other way around where the execution client is actually following the ptd but the works are following the chain progression but the beacon client is out of sync and the reason I'm kind of thing is that I assume that people will try to be sync around the

around the merge and it's going to I mean it would be nice to at least confirm that it kind of works okay even if there are some works here and there

Tim Beiko: is there yeah I can imagine how setting that up automatically would be tricky but is there a way that we can maybe have client teams like manually test that on one of their Shadow Forks

Péter Szilágyi: um I guess the problem here is how do you um probably that's not really reproducible so if nothing goes wrong you have no idea what happened

and uh and then also at least speaking from God's perspective we have a API call descent head so what we could do is right before ADB hits maybe just set the head back I don't know 60 blocks or something and see what happens um I don't know if something like that is available on on bigger clients but I think it would be nice to be able to sum even if not a very exhaustive list of corner case checking at least some some basics because the problem is that um so what we did test with this Shadow Force is that the whole thing can just transition through it and that the conditioning is just the beacon

client is feeding the execution clients blocks one by one but if let's say your node is offline for for whatever reason you just install Gap because it wasn't ready for the merge and you restart it and all of a sudden and nothing works because there's some synchronization issue then it's getting it's going to get messy because eventually all nodes will it will happen that you miss a block for whatever reason and then you need to actually fall back the proper sting and that needs to somehow tested

Tim Beiko: got it um anyone on the testing side have any comments

about

Tim Beiko: I think we

[Music] oh okay so Maris has done some manual tests for stopping and resync can get notes you want to take a minute maybe to walk through what what you did do

Tim Beiko: you have audio oh yeah yeah

Marius van der Wijden: sorry um I might have caught something in Amsterdam um I did a bunch of tests where I stopped the beacon notes so they get the consensus at the execution layers would

just stand there and not be fed any new blocks and then restarted the beacon notes so that the beacon notes sync up and feed us the blocks uh one by one I also wanted to do a bunch of tests where we delete one one or the other databases so I have a sync node delete the contact layer database resync the consensus layer with the execution layer running and the other way around

um [Music]

Marius van der Wijden: but those yeah I haven't done those yet

and it's not that easy to um well you can like pretty easily uh uh write a script for it um but yeah I think it needs some manual like looking at to see if it actually works

that's it oh I also did a bunch of set head tests uh on the main it should have II um where I said head a couple blocks prior also a couple blocks before the merge so once the match was happened I set it on the get node before the merge and that went

single time awesome um and

Tim Beiko: Peter just to make sure I I understand exactly what you're saying is like you want to make sure that we can have kind of these imperfect clients with like

Alice saying

Tim Beiko: States when the merge is happening right like the fear is not that like after the merge they can't get into sync but it's like as we're actually going from TTD to finalizing on the other side that's when we we want to at least see what happens with with clients is that right

well I guess both yeah during a transition is uh so the transition so I don't know how other clients handle the transition code but in that there's quite a lot going on

Péter Szilágyi: because there's a up until the point you you can just use Legacy sync to sync up until the DVD than if you reach the TTD then you need to wait for a beacon client to to pop up if there's nobody about listening this is a bit different for full sync and snap sync so there are these weird scenarios that we try I mean I invested in quite a lot on the various I think on the kill desktop so we do try to extensively test it

I'm

Péter Szilágyi: just saying that I don't know if other clients did some did tests around these issues and it might be worthwhile to make sure that it's that they are kind of okay with these hiccups

Tim Beiko: right yeah I'm curious to hear from

other teams if anyone has anything they want to share

Marek Moraczyński: so for us it's like we are still a bit working on these cases uh and we are aware of some problems so um we need to test it on the killing and Shadow Forks

Tim Beiko: got it anyone else okay um and then I'm curiously how

um is

Tim Beiko: is it a possibility to also kind of tell people that they should have a sync node when the actual merge happens and if not basically sync it on the other side or something like that like where um yeah if you know like I think if they're in in Step In Sync like pre-merge they should obviously be fine but then and and then if they think once the merges happen they should obviously be fine there as well but like um yeah it's is it like possible to just tell people like I mean yeah in in an announcement blog posts and stuff

we would definitely recommend people are synced uh but yeah you know uh they're someone will be thinking during the merge right yes yes and but I assume there's a difference if it's like one percent the valid letters or 35 right yeah absolutely I mean we how would we generally assume that most validators are are in sync and if you had 35 out of sync you wouldn't finalize which you know is fine uh but then they'd have to get up the head and

think I want to just uh sorry

Mikhail Kalinin: yeah I just wanted to Echo Danny what

Danny has just said that those who are seeing him probably not that important during the transition what's important what's more important is that clients will be able to sync up uh after the transition is finalized like from scratch or from like different

areas

Martin Holst Swende: one thing um that might be worth highlighting so previously it was fully possible to sync up your guest node or another my node without touching your validator and without them communicating post merge it's going to be more problematic right what do you mean

I mean that we don't see the head so for example if you try to start yes without the validator yes will yeah without the beacon note is what you mean yeah yeah it cannot reasonably sink to the Head

it

Martin Holst Swende: I don't know if it would try to latch on to the latest Google work block or something but then it wouldn't be a possible to obtain a state from anywhere

I mean

Péter Szilágyi: that is what it does so it will try to sync up until the DTD enforcing because it will just stop at the DTD and just print the warning

there I mean I'm talking about I mean people don't use postings yeah I mean Snapseed

um it will try

Péter Szilágyi: to I mean the chain itself will be sync up on your TTD and we try to stop and for the state it will just try to sync the head which will be the latest head will be DVD or something so that will go a bit screwy so if you try to stink at that point that somebody actually feeds you some stale data because they are also stuck on the

TPB

Péter Szilágyi: then you will end up thinking to some weird States and at which point healing even if you attach a beacon client healing will take forever because we'll just go back to the classical

passing algorithm yeah so screwy situation

Martin Holst Swende: yeah and you might actually kind of wind up in a worse situation than if you just

had not sick because then you wouldn't be talking about over over snatching so we should whenever we issue some documentation about this the thinking and merge we try to highlight yeah

Martin Holst Swende: because I guess the same thing needs to be true for other clients as well and presumably that

yeah needs to run with

Tim Beiko: uh yeah and the kid on blog post we already highlighted that like basically if you run a node post merge you are running two pieces of software right like the consensus layer and the execution layer um and I think we're gonna yeah in the

first like testnet announcement post we're going to try and even expand that more uh to you know uh yeah just for stakers for non-stakers uh for people who are running a node on on the execution layer today um so that it's very clear what what they need to do um because yeah if you're if you're running kind of just yet without a consensus layer post merged and you're kind of not running the full ethereum chain yeah there's also the ability to service warnings and errors to the user because exchange transition configuration would not be happening so you wouldn't be getting any um ping essentially on the engine API um that also yeah I mean you could do a lot of that

information but at the bare minimum you could expose some big wiring to users

Micah Zoltu: I feel like it should be more than a warning it feels like the client should not try to sync in that scenario like if if the execution client knows that we're supposed to merge it should just say hey I don't have a vegan client I can't sync oh yeah but yes you slowly might not know it's post merge it might just know that if it's been released as a merge client well but it knows the ttd's been hit right because it's going to talk to the network and see that it sees TTD blocks and then it'll know hey I know that we're at least at ctd like uh maybe we're at

TT exactly but we did not verify that they did be until

you actually reached the point so I can just feed you hey here's the DTD we already pass it and then you will just get stuck because you think the network much

Micah Zoltu: so that's for if you're doing a traditional sink if you're doing like a snap sync how does that work

exactly the same way you need to validate it 150 to the otherwise [Music] but

Martin Holst Swende: I mean the books and the headers up to DTD those are still valuable so that's that's kind of fine

in

Péter Szilágyi: so one two

one thing I wanted to propose I we have it open as a PR in gap for a month now we just never rush it because I want to talk it over with a hcv is that and we've been discussing that after the merge clients would release uh it would make a new release in which it is actually marked at this network practitioned and we just come field in the in the Genesis

pack

Péter Szilágyi: and that would be super helpful exactly to circumvent this scenario from causing couples long term because we can say that okay

there was one field which was a dpb but we can also add a second field I don't know total terminal difficulty which a

Boolean or whatever

Péter Szilágyi: which actually signals that the network has already successfully merged and from that went onward the execution clientele can very well add Genesis block say yes I've seen blocks in the network I'm not going to touch anything until I have a bigger client that's giving me something meaningful and I think that's a long-term solution

Micah Zoltu: is there a reason we can't include that in the um the the before merge release like is there a reason that people should be able to run a um proof of like the latest release that we you put out right before the

emerge

without aving clients this flag essentially disables like a system you would not be able you would refuse processing blocks from the network but maybe Mika

Tim Beiko: uh one thing is there might be a world where like some peers don't upgrade their clients like pre-merge and we just lose them so I don't know how much it affects things she doesn't yeah

Micah Zoltu: I assume that we'd still be able to communicate then like you'd still be able to communicate with people who haven't upgraded up until the merge

Tim Beiko: right

Micah Zoltu: right so emerge actually happens to you lose communication yeah and so if if you're running an emerge client and the merge has not happened yet it feels like and I'm sure I'm missing

something here but it feels like we should just say hey if you don't have inclined at that point your your execution time will start like it feels like I can't think of a good reason why we would want exclusion clients to start up without a consensus client paired with them once they're running emerge clients I I do think that that's not totally unreasonable I mean there's two options here one is you do a huge warning the other as you say this looks bad you need to actually make sure this other thing synced and I'm not going to do anything until you do so right

Péter Szilágyi: that seems like a very surprising way to lose half of the network that nobody accepts it they need to have a vegan time up until the

merge and then all of a sudden a month earlier how the network stops well this is only people that have been that have run the like guest that is released for the merge and so they're either going to fall off if they don't run the other side they're going to fall off a month before the merge and hopefully fix it or they're

going to fall off at the merge communication Works whereas if I

Péter Szilágyi: add this featuring and all of a sudden it's not about making sure you have a correct setup at the merge rather you need to make sure that you have a correct setup at exactly the for the upgrade of gas but since you haven't upgraded yet you don't even know what the current setup is yet

you're concerned

Micah Zoltu: here if I understand correctly is that a user who upgrades their their guests you want them to be able to upgrade and have downtime of like you know a minute however long it takes them to upgrade and then they can iterate on connecting to a dating client yada yada and they have a month to do that whereas if yes refused to start without a vegan client then when they go to upgrade they're offline for you know a week while they figure out how do I run a consensus client

yeah that would be my main concern with refusing the stock prior too much

Tim Beiko: wouldn't that be kind of good though because like I mean they can still run the old version of Geth you know like they're offline in that like they're not online on the new

version but isn't it good if we have clients who are not like all messed up on the network because they struggle to set it up and if they're instead kind of forced to to do that and stay on the old version until they they figure it out

Micah Zoltu: I think you want to be careful that the execution client does not do any sort of like database upgrades or anything like that internally um until after his established communication properly so you can downgrade basically makes if you want to do that you have to make sure that the downgrade path is very very clean like this people will you know upgrade to the latest version and then find oh I needed a consensus client to make this work and so then they go to downgrade you want to

make sure that downgrade works very very well

I don't know the

Micah Zoltu: individual clients that may be very easy or maybe hard depending on design I don't know

so one issue that I kind of yeah depends on how you set up

Péter Szilágyi: I don't think it's always super clear as what the dollar rate path is for example if you're installing via you go to ppas and there's essentially no downgrade that you just it is just up so that might be a problem here with Docker you know if you're just using you're just putting the latest table then again you somehow need to start poking around your deploy scripts which may or may not be a problem

again I

Péter Szilágyi: ideally if you're running a production setup it shouldn't be a problem but hey

I know it's a

Péter Szilágyi: plus the other potential question is that how do you even tell the user that get is out I mean that you need to do something for example if I just you get refuses to start maybe it will just go into some book Loop where some kubernetes manager keeps trying to start it and we keep refusing to start so somebody needs to somehow dig up a log

and

Péter Szilágyi: where you have a downtime of I don't know half an hour until since I've been

actually figures out what's wrong it I don't know it's just seen that a lot of things can go wrong

Sam Wilson: I don't think many people automatically upgrade gath so I think if somebody note like is manually upgrading Geth then they're gonna notice if it isn't starting right away because the counter to that is if it starts and it just works and they don't look at the lugs which are warning them that they're vegan nodes not synced then they're gonna fail at the merge um but again I think that this can be left to clients it seems like a user you know user experience decision that each client can make

Tim Beiko: yeah and and on the communication side like we will kind of communicate loudly and already have started that you need

to run both parts um I think this is probably the most anticipated upgrade in ethereum like no one who's running like uh infrastructure level production of nodes like does not know that the merge is happening um so yeah I think as long as like it's it's carry explained like in clients like what what the behavior is and that we clearly explain in the announcements like what is required of different stakeholders and like how you know how should they set up their infrastructure um yeah it seems unlikely that like you know most people are a large part of

infrastructure would do this wrong like there will be someone somewhere who messes this up um like we see in every single Network upgrade but I think you know the vast majority should be very well aware that this is happening and as long as we have good Communications they should be able to uh to set up um and uh it's not true there were a bunch of miners who messed up London um yeah I I spent a couple days after London reaching out to the people who had messed it up so there will be some uh but that's that's expected every time

I'm I guess

yeah oh sorry Peter are you gonna say something

Péter Szilágyi: so I know to me it seems that this approach is opening up with a bit of kind of forums I mean every client is has their own cross to there but um one issue that I can see it is that let's suppose you do have a proper setup already you do have the Deacon height you do have

yeah

Péter Szilágyi: properly upgraded and then you just want to restart your system and

well your yep know this

Péter Szilágyi: started up faster than the beacon client and Google me just says if you're refusing to start because there's no Beacon high but yeah because it's just starting or what happens if the beacon client just drops off because you update or restart it now

I think it can be I mean depends on how how aggressive this mechanism is but you can end up with brilliant scenarios

even after the March for example but if that anyway so there are

Péter Szilágyi: I think it's a bit dangerous to refuse the star just because something that should be there isn't yet there

got it um and

Tim Beiko: and yeah earlier on in the Chad Perry said he can try and manually set up some of these like out of sync instants so we can actually um you know run a bunch of of manual tests on it at least

um yeah I I don't know beyond that is there anything else people feel we we should be doing and obviously having all the client teams kind of test their own software um you know in in the various combinations of of other other clients and and making sure that they they walk through the edge cases but yeah beyond that I'm I'm not sure what else we we can do

Marius van der Wijden: so in in Amsterdam we discussed a lot

of

Marius van der Wijden: uh about some testing tools that we need or that we could Implement uh and um Cena from the guest team has already

started implementing some of them in gath but it might be really really good for other client teams to also Implement some of the RPC calls so that we can at least make uh debugging issues if they may arise way easier

Tim Beiko: is there yeah that sounds really reasonable is there a PR or like a spec somewhere where's of

what Cena's implemented

Marius van der Wijden: uh I think we have an issue to collect all of these things I'm going to find it

and drink it cool

Tim Beiko: thanks any other thoughts comments on this

any other thoughts on uh just the shadow Forks in in general okay um and there is another shadowfork Perry planned for this Thursday that's correct yep exactly next Shadow folk is thirsty um my nodes are already sinking I just have to upload the configs to GitHub and I just share a link soon okay

um sorry is that minute should have hooked yeah that's mainly Shadow folk okay good

Marius van der Wijden: actually that's a good question does

anyone see value in curly Shadow Fox anymore or do we just keep the last couple around and um I think if we were to like if we were to automate the process somewhere uh like a bit more then we could have early Shadow Fox every like two days or three days

I

Marius van der Wijden: I would I would see value in that otherwise if we're going to only manually do two shadowfox I don't see see the value I'm doing the Incarnation of folks anymore okay sounds good um and another thing is I'd like to

duplicate midnight Shadow Fork one and we'd keep Main and Shadow Fork two around so the one that happened last week um unless someone's testing anything on one if not I'll let it applicated later today

Tim Beiko: okay no objections

um anything else on Shadow Forks generally okay

Marius van der Wijden: oh uh yeah yeah because Jamie just just wrote

um we had we saw one issue that we only saw on the curly Shadow Fork so um yeah I have to think about if if it might make sense to have another one or two girly folks was there what was particular about Gourley that made this thing happen

probably yeah maybe some weird snap packages

Tim Beiko: okay so if we can automate them we definitely should try and have them running regularly

um and then yeah we can do the main net one this Thursday last call for shadowforks um actually one one more point on the automation front um when we were talking in Amsterdam we so the automation for shadow Fox could easily fit into kurtosis um but when we were talking about it in Amsterdam we said that we'd rather use the dev time allocated to kurtosis for testing like weird edge cases for example pausing Docker containers around transition or um I'm not sure we have to figure out

what other weird cases we want to toss in there um do we still want to go down that route or do we want to focus Dev efforts on having early Shadow fork in ketosis I don't think we have enough manpower to do both

Marius van der Wijden: um I think the the weird stuff is more important than than having just uh like more often Shadow folks sounds sounds good maybe someone else could take over

and and do it in parallel I don't know if we can onboard someone into contosis um yeah those scheme itself is willing to help us with this but they just have enough manpower for one of the two I don't think they have enough for both um but yeah maybe someone from our side can do the other one and I'd also be more in the side of having weird edge cases and ketosis mainly because we're doing so many Shadow folks regularly that it might not bring us too much to have it in the CI

cool and

Tim Beiko: yeah I mean structured

weirdness you know the shadow Forks live we're supposed to try to find weirdness but anytime we can structure and make sure we hit the weirdness over again it's very good

yeah foreign

Tim Beiko: okay um next thing we had uh on the last call we discussed kind of the latest valid hash issues uh Mikhail I know there's been like a lot of conversations uh about that over the past two weeks do you want to just give us a quick recap of where we ended with that

Mikhail Kalinin: yeah and Amsterdam had decided that the engine apis specs stays the same and

your client will just adhere to this pack but also we'll cover this with the tests so yeah basically that's it

um yeah

Mikhail Kalinin: it means that El will respond uh with the most recent valid ancestry hash in case it's invalid block is found on the Chain which El is syncing with and cl may use this information to remove invalid sub-chain from its block tree

so that's basically

Tim Beiko: okay got it um and oh I guess first off anyone have thoughts comments on that

or

Justin Florentine: um yeah hey this is ASU here we're we're

currently looking at our latest valid ancestor code and it it looks pretty much doable for what Mikhail is talking about but I could personally use a better definition of what the latest valid um block is real quick um our understanding right now is that it is the uh common ancestor um that has been validated as it has been considered valid is that the simplest definition we've come up with yeah I mean if you if you you have you have some block you're validating it's the earliest Block in that chain right defined by that block that is valid got it all right um I think we're clearing it thank you

Tim Beiko: anyone else have questions comments about that okay uh next up Mikhail this morning you're also posted another kind of request for comments about uh an engine API response status do you want to could you go over

that

Mikhail Kalinin: oh yeah uh this is the real estate as well attached and this is a kind of blind spot in this deck currently um so the problem is that if literally the first proof of stake lock and the chain

isn't valid uh what

Mikhail Kalinin: what else should return as a way to spell attach

uh it it may return like the proof of work block that is the current uh of this um but this information isn't relevant for cl it doesn't have this proof of work lock which is basically the terminal for Block uh in block three so this request performance about let's take a look into this um we may do we do nothing with that but see I will have to um stop traversing their block 3 if they found that there is an empty execution payload in the blog so it would just mean that this literally transition

block is invalidated and that's it or we can be more uh specific about it and more explicit about it to avoid some edge cases potential which creates that so just take a look and comment on this issue

yeah this this is like an engagement for El and client Developers this is

Mikhail Kalinin: yeah it's kind of in the middle of

cool

Tim Beiko: yeah I I think he posted this literally yeah five hours ago so I don't know if anyone's reviewed it already but if so

feel free to comment here

Mikhail Kalinin: uh yeah

Justin Florentine: uh basically reviewed it we didn't have any concerns okay

Tim Beiko: so by no concerns I guess you're me you're fine with any of the options

Justin Florentine: oh right um I think we like option uh option three but I don't think we have a strong opinion on it

Mikhail Kalinin: okay thank you

Tim Beiko: okay anyone else

okay um next up uh this is something that's been open for a while but I just wanted to bring it up because uh we are getting close to being done with the consensus level changes uh we still have some open questions around Json RPC and how to go about like basically finalized safe and unsafe um I don't want to take too much time on the call to like go over this but it would be good to get this PR merged in the next couple weeks so that clients like can agree on what what we're implementing um

so I don't know I know like Danny Mikhail Mika like the three of you seem to feel the strongest about this uh do you want to kind of take a minute to to share your thoughts and how we should move this forward yeah I mean there's two there's two ways to kind of think about what these words mean one is the algorithm that defined that derived them or the other is like the actual status and state of the um the item I think that uh developers and people reading the API reading this would generally think the latter so like

if something says unsafe they'll literally think it's unsafe not that it was derived from an algorithm that is unsafe and thus I think that uh the problem is you can have a safe algorithm that also gives you the head and unsafe algorithm that gives you the head and thus you could have something that you could have unsafe and safe being the same uh block which I think is very confusing for end users thus I think latest is I think anchoring on the latter and actually it being like a property of that block is more is is better so I would say you leave latest I would say you define safe and you hope that you get a better algorithm over time and you do finalize um I think Justified is like a nice to

have but it would require a change to the engine API which I don't think it's valuable enough to do a break and change at this point so my argument would be yeah yeah

cool

Micah Zoltu: I agree with everything Danny said uh except for his conclusion

which is that

Micah Zoltu: um I think that when a developer asks for unsafe they're not likely to begin asking for unsafe and safe and then comparing the two they're just saying the thing I need is whatever is safe give me that or the thing I need is whatever is unsafe give me that um I don't think the user actually cares what they get back nor do I think they're going to be looking and comparing that to the other options they're just

gonna they

Micah Zoltu: just say hey I

need something that's I need something to say because I'm doing uh off like I'm taking this off chain I can run exchange or I need something that's unsafe because I am running a Mev extracting client and I need the latest absolutely I don't care if it's going to go away in group yeah but the semantics

Tim Beiko: but yeah so I think latest I think latest does represent that very well and um that people understand that when they're using latest today uh I know I know the argument that maybe it's but gone and it should be renamed but uh I don't I don't know if I want to debate this too much

today

Tim Beiko: okay I see yeah Peter and Andrew have their hands up Peter do you want to go first

Péter Szilágyi: where are these things actually used

Micah Zoltu: Json RPC API

Péter Szilágyi: yeah within that

so like get myself away this block yeah good luck yeah good luck yeah it blocked

Micah Zoltu: by number um for example ask for a block tag

there's a bunch of it

Péter Szilágyi: so I guess meaning that the execution clients should be returning these

Micah Zoltu: yeah so the as of the emerge we want you users should be able to or before the merge realistically but as of the merge at least users should be able to do get blocked by number and pass in safe as a block tag instead of So currently they can do pending latest

um earliest and I'm going under one another but anyways um we want to add finalized and save that list of things they can request and then the main question is whether you Alias and latest to unsafe and deprecate latest

Fredrik Harrysson: I mean if you video replicates latest I think a lot of applications will break um they are like a deprecation warning and not not to really get rid of it

yeah

Micah Zoltu: it's like in the docs do we say please don't use this or do we say please use this

um Andrew you have your hand up as well um yeah maybe we just call it not on sale but something like a Leading Edge or Edge a fringe her latest

Tim Beiko: um okay so I guess yeah this can kind of take up the rest of the call if we let it and I would rather not um it would be good if like people who have strong opinions can go on that PR and share them and it would be even better if like by the next awkward devs we could have some consensus on this and

have that PR merged in one way or another um because yeah it just feels like at the end of the day like in the next couple weeks is when clients are going to want to start implementing this just because we're going to want this before we we have releases out for for public test Nets um and so I think the most important thing is just for kind of being done with arguing over what the options are and I have very weak preferences for what for what the actual outcome should be but just that we should try to wrap this up in the next couple weeks

um yeah my two sense is that on that there's a

very good reason to change an existing tag to deprecate something it should be just that that is if for whatever reason it is super on appropriate appropriate than maybe but uh I know I don't really see that big applications even now latest is kind of unsafe you can have a side you can have a real one to block video if they happen so it's not like it's save currently

Tim Beiko: right yeah and I think yeah I've reached out the application and tutoring developers I think they are aware of that and like they they're not confused by by what it is

so yeah

Tim Beiko: um okay yeah moving on from this

um but yeah please comment in in in the the pr uh light client you had some comments about basically the uh the blood gas limit uh when we moved to a proposal Builder uh World um do you want to kind of give some context there right so in today's world there's these mining pools that have a lot of control over what the gasoline actually is and we have touted this in some ways as a benefit because if we needed to lower the gas limits quickly due to some situation the network we could coordinate with those

pools and make that happen and post merge the mining pools sort of go away and we have a very similar type of actor which are these block builders and they will again have this similar power of being able to set what the target limit is and move towards that I'm trying to understand if we expect these actors these Builders to be uh you know to also be good custodians of this power um and if we want to confer that power into this new system because we have the opportunity right now to add some uh

different configuration parameters to the um block building the external block building protocols that will be available post-emerge to make it so that individual validators can choose their gas Target and I wanted to ask this here because it feels like a bit of a departure from where we currently sit where we can coordinate with a fairly small group of people to change the gas limit if needed and if we allow individual validators to choose it I think that increases if I have maybe an order of magnitude and so I'm just curious about what people's take is I mean it well you wanted that argument yeah picture

that argument is just that like there should be a a lever that developers are a small set of people have and that we currently kind of do I I don't know if having more players have to be involved in this decision is necessarily a bad thing um I also think that you know validators and synonyms aren't the same as end users incentives but I do think that Builders and centers diverge even more and so putting this inside of Builders you know Med searcher's hands is is not a good equal agreement my opinion right and that's currently my opinion I would like to build it is a system where that's not

the case but I I just wanted to see if there was anybody who felt differently about that

Micah Zoltu: in the various um proposals for Builder proposer separation can we put the um block s limit in the proposer's hand instead of the Builder sends easily or is that overly complicated

uh yeah

Vitalik Buterin: I don't see why that would be complicated like there's always a a level that like there's always some signature that the proposal has to make and so you can just like add to the I guess a little bit into the container that the proposal signs so in in L1 PBS you know when there's a larger redesign

here uh certainly it's it's easier with the with sort of like stop Gap measures where you try to simulate that in an extra outside of it you know in the protocol that people are designing with Meb boost it's a little it's certainly more complicated but it's not impossible and it's not that much more complicated I'd say

Micah Zoltu: do we trust proposers more than builders

huh

Vitalik Buterin: um I would say yes because like you can like you can win and uh beneath the Builder option for a pretty long period of time just by being a willingness spend more money than other people um whereas doing that for proposers is um you know uh is much harder uh so uh

yeah like Builders like a very mature Builder uh ecosystem or with like very easily accessible options like it is more vulnerable than other Brokers choosing it right a builder could essentially buy the gas limit to increase by just out bidding all of the builders yeah exactly yeah and like unlike the censorship case where you have to win every auction if you're just trying to manipulate they got something you have to win 51 of the

oceans

Micah Zoltu: right and if you're a good Builder otherwise that may not even be that expensive because you're only paying the difference between you and it's the next best person or the best person yeah okay I think personally I'm

convinced that we should probably do something

um I'm okay with either just removing the ability for the cash limit to increase or decrease from via block Builders or

Vitalik Buterin: moving into proposers I would be happy with either personally would be a significant change that's like way too late for the merge itself at this point right so that would be a Shanghai thing well you don't need l1's for it here oh I see because like you make it like

proposers oh like clients we you're you're breaking up so you have to be forward to a validator to choose

oh sorry

Tim Beiko: we didn't hear anything

okay

Vitalik Buterin: basically the uh like you've got to have the validator um enforce it by having the validator Own Way um acceptance with a particular gas limit right exactly say at the beginning of some Epoch what their target is and the builders are just aware that that during the their proposal slot they should build towards their preferred targets yeah it's similar there's a registration mechanism to say what you want your recipient to be for a validator so essentially be piggybacking on that

Tim Beiko: yeah it seems like it would be much better if it's under

validator control than Builders and if we can do that as part of Mev boost that seems like a good way to do it now

okay I guess in that direction yeah and you want to have a strong a counter position to that so the I think

Micah Zoltu: the only the only thing question would be is um if this turns out to be incredibly difficult to integrate into because something we're not thinking about here um should we bring this back up for removing this from blockheaders with the merge or should we just accept this

builders get to control the block yes limit

I think

Vitalik Buterin: it would really be a hard very hard to make any consensus changes at this point right so the easier thing to do if we decide that we're laziest to basically add it can add a uh like one line rule that just uh says that uh proposers only accept a header if the header contains a gas element of exactly 30 million right

Tim Beiko: right then you can do that in Mev boost and not even like layer one right yeah I mean I I think yeah I think the likelihood here is it if it is complex then a version of Meb boost can be

released at the merge that does not support it and it can be layered on and if it is abused in that time frame um a software can be added to to eliminate the abuse

yeah that's fair okay

Tim Beiko: cool anything else on that

okay

Tim Beiko: um okay so uh next thing I had uh basically uh two things related to test Nets uh so first there was some discussion in Amsterdam about like the the kind of future of the test Nets

um they're a free posted a comment on the uh on on the agenda which next to it um I don't know was anyone is anyone on the call who was at that session in person I I wasn't

Marius van der Wijden: uh I was there

Tim Beiko: yeah do you want to give a quick recap or anything that's like new that came out of there

or yeah

Marius van der Wijden: uh I only attended the first half of the session afterwards I had to go to the should we break up the code of oligarchy uh session which was

way more interesting I think the big takeaway is that no one actually really wants to deprecate the test Nets and um there's some companies that want to take them over because they have stuff running on them and [Music] yeah we so the current plan as far as I understood this to bring Robson through the transition girly through the transition into polio through the transition uh deprecating could be at the point of the transition

and maybe transfer the ownership of the Rica be validators to some other entity if they want to keep this test net um and the applicator Robson after the transition probably either before Shanghai or after applying the Shanghai um Fork on it that's

that here dear goddess

Tim Beiko: and I guess just from like our perspective I assume nothing changes in that we're still happy with just running officially Robson gordian sebolia through the merge um so if if some other company wants to

like maintain Rincon B and may or may not run it through the merge um you know they obviously can but then uh yeah just in terms of like the data that we want from these test Nets these three are still sufficient and and we're happy with that right

Marius van der Wijden: uh yes exactly and so to Jenny's comment uh taking them over means that we deprecate them in our software we don't maintain them in our software anymore and they can either ah their own version of Geth or um or just use an old version where where we still have support for these

tests okay so still deprecated in a sense just kind of or from our perspective

Tim Beiko: deprecated from get perspective not from the application who has their testing infrastructure right

he uses

Marius van der Wijden: to move over to some testnets where the software that runs the test and actually gets updates and stuff like this and runs with the latest channels

Tim Beiko: that makes sense

okay

um okay and

Tim Beiko: so I guess yeah the other thing I I wanted to talk about test Nets is basically how how do we get from from where we are today to to there um so like uh we have this Shadow fork in in Dev connect uh which was which was smoother than the ones we've had before uh we have another one planned for this week I guess you know I'm curious I hear from crime teams like you know what what do we want to see in terms of like success on Shadow Forks before we're comfortable like moving to upgrading the public test Nets um and is there stuff also like outside of the Shadow Forks themselves that uh you know we still want to uh the test or to do before before we're comfortable

moving the the even the first of the public

test Nets

Marius van der Wijden: so for me seeing a bunch of successful Shadow Fox is is a really good sign um and the only other thing that I would say is uh The Hive tests should be at least for a majority of them uh passed by every client um basis currently not only have test instance but I think they're looking into fixing that um quickly get this

only failing two tests and that still isn't an open issue whether this is an issue with the assumptions of the tests or with guests um but a regardless for example is a fading 48 test and he'd be really important to get all of those tests fixed so that we have

a good confidence in the software um Iraq yeah I think we should also have Greenwood houses of course and for every client and a high test need to cover

most of the stack and what is more maybe uh fasting because right now currently in IRC framework and only in other mind and that or another is working on your passing infrastructure there's an element and death was running Netherland and peace who had

Marius van der Wijden: had some issues um but I stopped the father I think and I need to set it up again and I I also want to add uh Aragon to it and

pisu and and run the professor on all of them it's a differential fuzzle so it will also find differences between

Tim Beiko: got it anyone else have thoughts here oh Andrew yeah

Andrew Ashikhmin: um I have a question why so like the number of tests uh is different between Aragon and gas and never mind I think like the total number of tests for for Aragon is 46 for another mind it's 47 and for

gas

is 54. that's really weird [Music]

Tim Beiko: okay so definitely looking in

America

Marius van der Wijden: I'm going to look into it

Tim Beiko: yeah awesome and then uh Justin had a comment in the chat about like the mid-sync situations being like compelling and and that we'd want to like run something like that um run something like that on on a shadow Fork even though we don't have the infrastructure to do it is this

something that like client teams can manually try on the fort this uh this Thursday and see we might not be able to reproduce everything if we find bugs but we might be able to see like does everything break or do things generally work and recover um or fail in kind of predictable ways um so I don't know is is it worthwhile to try and get people to manually run those when the shadow Fork happens this week

Justin Florentine: I don't think that should be too much of a problem for

basic awesome yeah um

and

Tim Beiko: then yeah Perry has a comment about two times main net Shadow forks with no slash really minor issues um and I'm curious Barry like do you do you think our previous Shadow Fork was at that level or kind of right under because we did find these issues with the deposit processing and stuff I'd say it was right under like we're almost there but it was just yeah not perfect enough got it I'm and so obviously you know we have one scheduled

this week we have one scheduled next week um or I assume we'll have one scheduled next week I don't know for sure next week and then two weeks from now um I assume we can we can we can do those um I guess if we you know if if we had those kind of work smoothly and then uh obviously spent some time on on Hive in the next two weeks to make sure that that uh that the different teams passed the tests um are people you know do people feel like at that point would generally be in a good spot to start looking at upgrading uh test Nets and obviously you know there's always a delay by the time like we need to set the block and then like put out the software and then it's like there's a

few weeks until we actually hit the the actual upgrades but um yeah assuming I guess assuming the shadow Forks went smoothly would and and that hype support was there is is it realistic that to think uh we might start looking at testnets in like two weeks or or do we feel we need like um yeah we need much more time than that and I guess no one wants to answer this

Martin Holst Swende: um I think it sounds reasonable

Tim Beiko: thank you Martin um awesome um so yeah I I think that makes sense um

one thing I'll also share uh from discussions that Dev connect is yeah we had some chats about like the difficulty bomb and like when should we actually make a call about pushing back or not um and it it seems and this stuff is really hard to estimate so uh please don't quote me on this in two months if I'm if I'm wrong but it seems like you know we can probably get to like late May jun-ish before we really feel the impacts of it um and then um and then from that point you know in the past we've we've managed to like shift difficulty bomb upgrades in a few weeks when needed um so my my feeling from talking with like different client teams at Amsterdam was like it seems like it would be better to like wait you know try to say you know move

forward and and move to the test Nets and start start running through them uh without necessarily doing anything about the bomb and then if if we get the like late May June so like two three calls from now and we see that like we're not moving forward on the test Nets either because we found some issues or uh things are slower than expected um we can coordinate a bomb pushback pretty quickly then um but not um basically not even thinking about it and being able to move a bit quicker um in the in the short run would be better um is anyone like strongly oppose that

Thomas Jay Rush: um this is Jay Rush

Tim Beiko: hey yeah

Thomas Jay Rush: hey how you

doing

Tim Beiko: good yeah do you wanna you wanna share your screen and walk us through your charts that's what I've I've been using and I think it's yeah

Thomas Jay Rush: well I was gonna say I think that um it would be unfortunate to admit to um make a mistake there as far as um getting into a situation where you have to force yourself to delay the bomb I'm sure everybody understands that um but let me just share this one chart and I think you can see pretty clearly from the chart how quickly the bomb goes off once it goes off so is is everybody seeing this

Tim Beiko: yeah I can see it yeah

Thomas Jay Rush: so I mean we're here I I was concerned last week that it wouldn't show up because the hash rate was higher but it is starting to show up this is as of now as of about an hour ago so it is starting to show up um these are the last two bombs here and we delayed them in plenty of time for them to actually affect the block time so here's 14 second blocks um but this one was the one where we've kind of forgot to set it and we kind of had to react really quickly here because there was two hard Forks right after each other about I think they were about a month apart so

this is about a month and it just literally drops off the off the cliff so and here you can see it just drops off the cliff and this is exactly what the bomb does um so this red line is June 15th which was when we thought we were setting it back here in December and it looks to me like it's going to it's getting ready to drop off the cliff to me I'm just looking at this now I never wanted to predict the future because predicting the future of this thing is hard but I can see that we're getting to the point where it might start dropping off the cliff so I want to just say that out loud

and I want you to be careful I would rather see you guys at least pick a date to say we are going to make a decision about picking a date by this day you know say May 15th we're definitely going to have a decision about whether we're going to delay it or not because you don't want to get to the place where you're forced to delay it because it went from 18 second blocks to 22 second blocks in a two-week period that's what I would say

Tim Beiko: right and I think yeah I I think we'd probably make that call much before we hit like 18 seconds um I think yeah I yeah that sets to be pretty low but I

I guess because there is kind of this this chance that we might actually be able to ship uh the entire upgrade without moving back the bomb um probably waiting until we're in the like 14-ish second range maybe 15 to see like how we're feeling about this and then yeah and then that means you know by the time we coordinate it takes it you know maybe a period or two and we end up like maybe in the like 17-ish 18 second range by the time we push it back um yeah so yeah I that that's my I don't know rough like gauge for it I don't know if that feels reasonable sweater like yeah

Thomas Jay Rush: yeah I think I think if you set a date by which you're going to set a date you know you say we're gonna make a decision by the third week of May or something like that

yeah

Tim Beiko: yeah and I think the risk is just uh I just don't want to pay nothing to a corner we're like we're then forced to act if say the bomb is not actually showing up as like we'd expect so I if if we do you know say we can get like an extra four weeks without having to make a decision or an extra six like I I think every week where we can delay making that call is valuable to us because it gives us more information on the Readiness of the merge um yeah

so I I guess the best thing we can kind of say is like today we're far enough from the bomb being an impact that we could at least bump this conversation to another two weeks and then uh and obviously it will keep kind of looking at it but yeah yeah that would be my Approach but yeah Lucas I see you have your hands up as well

that's amazing

Łukasz Rozmej: on this graph I would say that we have um four weeks in four weeks we should decide if we should move that over or not that looks reasonable for me

Thomas Jay Rush: yeah yeah so the the third or fourth week of May or something yeah it's like

Tim Beiko: yeah that would be two calls uh yeah

uh vitalik

Vitalik Buterin: yeah I mean I think like the word the difficulty bomb is not a chaotic system right like uh you can um analyze it mathematically there are scripts that have uh predicted and pretty uh pretty accurately and like we do know how it progresses right that's like every hundred thousand blocks of the difference uh the discrepancy between the actual block time and the ideal block time doubles um and that's basically how it just uh how it keeps going right so it's uh like it is it is something that we that we can uh model the main unknown variable is basically like um a hash rate but even hash rate like it's not I mean like Unknown by yeah

some crazy factor of like more than two or whatever

uh so it's pretty

Thomas Jay Rush: it's predictable but it's much easier just to say um I I would argue that I would argue that here it wasn't very well predicted here but um and this year where it recovers so it goes off and then the hash rate recovers that that is uh dependent on the hash rate but I I agree with you it's predictable I always just predicted the first time you know when it really starts going off I'm saying this is right we're gonna start seeing it go off by the time we get here

Vitalik Buterin: yeah I mean basically like when it

breaks uh 50 and then it's uh you know pretty clear that it's a hundred thousand blocks away from breaking 17 and another 100 000 away from breaking 21 and so forth that's right yeah that's right that's right yeah um so like there's uh like it is a kind of multi-variable problem because like you know we also we have to evaluate you know the pain of uh doing an extra delay hard Fork versus the pain of uh like living with 21 or 21 or 25 second blocks for a while which is uh you know something that we have done um and uh you know in the world didn't end uh so

Thomas Jay Rush: right right yeah right and I I even I even said to Danny Ryan

Vitalik Buterin: that

Thomas Jay Rush: you should let it get long just to let the world

understand that these things can get

you know who who pushed the change to the code you know you

Vitalik Buterin: want to make it right you know ultimately like this is uh the last time that the block time is going to be anything other than uh 12 seconds uh so uh yeah I'm just I I'm you know highlighting that kind of these uh these trade-offs exist there's and there's like scripts that can help us uh actually like measure exactly what the uh what the trade-off is but yeah I mean I definitely agree with you and like no need to make it a decision now

is there a position right um Mika hey Mike I think you're next

Micah Zoltu: so we could instead of trying to project forward why don't we just pick a block time that we consider unreasonable and then as mentioned we can calculate backwards when we would need to have a you know if we know that we it's going to take us three weeks to get a release out and we know we we definitely don't want 30 seconds and we can calculate at any given point in time what is three weeks before 30 seconds I think it's hard instead of trying to calculate forward

Tim Beiko: I think that's hard because what block time we're willing to tolerate probably increases as we get closer to the merge

so we might you know like

Micah Zoltu: it's not a very a fixed variable

Tim Beiko: right like I I at least for me maybe like others disagree but for me it's like you

know if we have 20 second block times today I would consider that intolerable if we have 30 second block times but then we can shift the merge two weeks later then like that's maybe worth it um you know I'm not convinced but it's like yeah once we can tolerate the thing goes up as we get closer to the merge

um I see okay yeah that's fair

Tim Beiko: uh Lucas

Łukasz Rozmej: so two things one thing we can have this um unpredictability enhanced projectability based on hash rate leaving so I expect that close to the marriage hash rate would be going down because people will just sell their Hardware

before anyone else like before before hours um and the second thing I would really like the dream to be a reliable be considered the reliable Network and something that goes from 14 seconds to like 20 25 seconds blocks or whatever uh so I would really uh like the decision to be we can make it uh as late as possible but not before not after uh we are seeing uh time increases increases but before that so I would prefer doing that and third thing um moving difficulty pump is like easiest hard work ever so I don't think

it will um take a lot of effort from uh pushing the merge to move difficulty bomb it's very easy thing to do so those three points for me

Tim Beiko: and the first one yeah um how how quickly does the difficulty algorithm readjust the following hash rate basically

Vitalik Buterin: um I think like basically like close to immediately right because of the yeah like it can adjust by I think it's like a factor of e in um one thousand and uh 24 blocks these are 10 24 2048 or something like that uh so uh it does adjust very quickly

yeah it's not like the Bitcoin adjustment times

Tim Beiko: right so that means even if the hash rate goes down um it doesn't it doesn't make the bomb worse because then overall difficulty for the network goes down

like

Vitalik Buterin: well no it's like if the hash rate goes down by a factor of two then we basically lose one whole period until we get the

same block time

Tim Beiko: right right yeah yeah but that's by a factor of two in like a two week period

basically

Vitalik Buterin: right yeah yeah I'm uh I mean if people want to open betting pools on how much hash rate

will drop before the merge I mean I'm definitely betting that it will drop by less than a factor of two probably significantly less

Thomas Jay Rush: this is why I never predicted the future I only predict when it first comes

Vitalik Buterin: totally

Thomas Jay Rush: and I think I think I think that the the world will um tell us exactly what it thinks about 20 second blocks very loudly

foreign

Micah Zoltu: conversation because I don't care much um is the anxiety and effort we're putting into having these discussions just that alone is it worth just pushing back the bomb just so we can

stop worrying about it like like this isn't we've spent a very non-term amount of time and there's a lot of anxiety around it um I think I would say maybe value it just at getting rid of the anxiety and just even if we do still make it you know in by June just not having that anxiety along the way may be valuable in itself

Thomas Jay Rush: I would vote Yes

Martin Holst Swende: I haven't probably would too

Andrew Ashikhmin: um yeah I think it makes sense we can postpone it to whatever like the end of the year doesn't mean that the merge is postponed to the end of the year

Martin Holst Swende: no the no it doesn't sound good but the thing is with yeah as as Mark said it's trivial for us to make these hard work such an artwork that's all the bomb but it's not trivial to people to to I mean the whole coordinating the update but it might be easier if we just early on and do a plan for for bomb update and not let it affect the the merge at all or at as little as possible

Tim Beiko: so the idea is if you can if you can

push it back um uh yeah if you can push it back then obviously it's it's not like a ton of work uh there's some coordination work but um it does kind of make it smoother um Danny you have a comment about proof of work yeah I mean we might see some improved work works here but the if the chain is actively degrading at the time they're performing the proof of work work they have to do two things they have to do an upgrade and convince exchanges to list them at the same time whereas it's very easy to do the proof of work work and if you have months to

potentially diffuse the bomb and that's months to do potentially damage to users obviously I'm very biased in what I consider damage here but I I think it's actually a good thing for the bomb to be moving kind of inward as the merge

happens

Martin Holst Swende: yeah I can see I can see your point sure yeah so I definitely don't think we should like postpone it for a very long time I don't really have a strong opinions either way

Tim Beiko: and yeah I I mean we yeah we have basically a few minutes to the end of the call um does it like make sense based on just the conversations we had earlier that you know spend the next two weeks obviously focused on the shadow Forks on hive see how we're feeling two weeks from now we can see also how the bombs progressed and we can you know I think we we do have like much more than two weeks to make this decision um and like the the chain is not being affected today and it's not going to be noticeably affected in in like two weeks uh realistically we probably have maybe like even like four to make that call so like yeah I I think yeah it's it's worth at least like

kind of moving forward on on the testing seeing how far we feel we are in the process two weeks from now and and looking at picking it then um and yeah sounds good yeah if we choose to remove it or or postpone it um yeah we could we can do that in in two weeks um and obviously continue this conversation about like the pros and cons uh just from the like proof of work side uh in in the Discord uh we have two minutes anything else people wanted to bring up

okay well well finished 30 for the first time in a long time um thanks everyone for for coming on and uh yeah talk to you all in two weeks

I was promised a long meeting thanks yeah [Music] thank you

[Music] [Music] foreign [Music] [Music] foreign

[Music] [Music] [Applause] [Music] foreign [Music]

foreign [Music] [Music] [Music] thank you [Music]

Speaker names adapted from ethereum/pm, CC BY-SA 3.0.