All Core Devs - Consensus #87

All Core Devs - Consensus · 19 May 2022 · 1:22:53

Consensus client teams cover merge updates and testing, including a recent shadow fork, the Ropsten terminal total difficulty decision made on the All Core Devs call, a method for initiating exits, and the deprecation of a step in the spec.

Speakers

Topics

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

Transcript

[Music] [Music] [Music]

thank you [Music] [Music] [Music] so

[Music] [Applause] [Music] so

[Music] [Music] [Music]

Danny Ryan: stream is presumably transferred over if

you are on youtube please let me know that you can hear us okay issue 527 on the pm repo consensus later call 87. uh we'll go over the merge stuff i've got a couple of agenda items generally if we have any other client updates then a couple of discussions um around some spec stuff and then open discussion any closing remarks so on the merge i believe we literally just had a shadow fork like

are we an epoch in or something does anybody want to tell us what's going on here

Parithosh Jayanthi: yeah go we just had the we just hit ttd for me shadow fork five um it's too early to say anything but in the last like epoch i think there was one or two missed slots so it looks quite good so far we are doing a few things differently this time around we have an equal client split so 25 percent each el and 20 each cl uh besides that we are running sync tests so i just paused either a cl or el and we have

one of each combination running for get nether mind bezu um not doing eric on this time because they have some other sync issues that they're figuring out uh besides all of that the ef security team is running some address sanitizer threat sanitizer memory sanitizer race condition stuff so we're going to collect hopefully a lot of data this time around and i can update as many call about finality ah that's it for me this shadow

folk

Danny Ryan: great

is there a link that anyone can kind of follow what's going on here like we usually have with these like block explorer

etcetera

Parithosh Jayanthi: also ignore the uh peripheral ones they have an issue with each stats so that's not really valid data but the other ones are valid so if some other client goes offline on each test please let us know

Danny Ryan: great thank you um i know there are independent testing calls i do you know it's enough of a important effort is there anything to surface

there to the wider group on testing in general okay all good okay next up is uh also on the awkwardness call which i believe everyone on this call is very likely to wear at this point um robson was decided to move forward on robston there were a few consensus layer teams on there giving the thumbs up as well there was even a ttd chosen i believe on the call but it seems that we maybe need to reconfigure the ttd tim you brought this

up can you give us the

tl dr

Tim Beiko: yes pldr is we messed up choosing the ttd um slightly longer version is that robsten is robson is the hardest network for which to predict the total difficulty value because the block times and the hash rates are quite unstable um so we we made some new estimates now and we think they're better but then the risk is you know the risk of choosing the ttd is like if we choose one that happens before bellatrix that's really bad um so we we we we were aiming if bellatrix is on like june 3rd we were aiming for june 8th to be the ttd we can do either we keep this

value and we like massively increase the hash rate on robson a week before uh so that we we kind of hit it quicker um it seems like that is doable but it's still like a lot of hash rate um and then we we kind of updated the the model which uh which uh which which predicts the ttd and so the other two things we can do is um either we we pick a new value that's much lower that we now think is actually gonna happen on june 8th and then the risk is like if we're wrong again maybe it happens sooner um or the other idea is maybe we pick a value that we think might happen more like june 15th and then um a week before hitting

it we start adding way more hash rates to the chain so that um we we hit this like june 15th one on june 8th but it's still lower than the the one we currently have so it just requires less hashrate to be added to

roxton

Danny Ryan: um what is our ability to add hash rate like do we control hashes on the order of like 50 of what's on there on that network or something

Tim Beiko: um i think uh some someone on our team check that yesterday marius do you remember

Marius van der Wijden: yeah so we can we can add enough hash rate i think

um in the order of like one

gigahertz

Micah Zoltu: guess is that all we need to fix this is like one gigahash or

Marius van der Wijden: at least according to the calculation that i did like some days ago but

Micah Zoltu: how long like a week or a month a day until ttd until

from now until tpd

Tim Beiko: so from that so right from now

adding one so having robson on one gigahertz would hit ttd at the required point

Danny Ryan: and that's so that's that's option one

we could also change right and then turn on the hash power a week before

Tim Beiko: and yeah marius you have a comment saying the new estimates are worse what do you mean by that

Marius van der Wijden: yes so i just ran the the estimates the new ttd estimates from mario and they should be hit either on the 24th so in five days on the 28th so in uh nine days so

they are you're saying they're too low yeah way too low

Tim Beiko: okay

Danny Ryan: the 43 numbers were too low or an updated number

the 42 the 421 is way too low

Tim Beiko: okay and so basically what we had was 43.5 or 435 uh originally so i mean yeah the option if we so i guess one thing that would be helpful to know is like beyond the ef are there other people who can contribute hash rate if we need um i mean we can probably scale a lot of

this

Tim Beiko: yeah yeah yeah

Micah Zoltu: printing is super easy like it's a couple clicks you just spend some eighth point zero one five eighth per day i'll

get you a gigahash if you only need a month it feels like the amount of money spent on this call is likely to strip that cost

Marius van der Wijden: yes uh i think i think that's the way to to to do it

okay

Tim Beiko: okay so we keep the value but how do we make sure we don't add too much hash rate too soon and what like how how do we tweak this basically

we start we start adding hash rate uh once all the clients have have updated their images and then we don't care okay when is the bellatrix work when is the

Marius van der Wijden: june 3rd

Danny Ryan: okay so waiting waiting a week from now or a week and a half from now and then maybe renting more power if we need to is a bit safer than like cranking on it right now

Tim Beiko: yeah and one thing that would be neat that wasn't it with the june 8th is like it happens like a couple days before all corded so it would be nice to have the fork happen a few days and then we can kind of see how it went and discussed like what we want to do next on on the calls and and it's not the end of the world if we lose a week because it happens like say on the on the 10th but it it would be nice to not lose that week

but

Danny Ryan: we can also get four gigahashes instead of one

Tim Beiko: yes

so

Micah Zoltu: someone should double check my numbers on that make sure i'm correct i am not a miner i'm not a professional i i believe if those numbers are mentioned correct but i might be like off the orders magnitude so someone double check me

Tim Beiko: okay um i i will look into it though i i sort of assume you couldn't rent nice hash for test nuts but like um i'll look into it oh you're doing whatever you want yeah i know it makes sense

Marek Moraczyński: i yeah just my brain not think but yeah i'll look into it guys i think we should check block

production on msf uh on the shadow fork five because something seems to be wrong unfortunately

Parithosh Jayanthi: yeah i think we're hitting this issue we had in the past where we're hitting timeouts so blocks are being produced and we're gonna finalize but transactions aren't included

so we really only empty blocks and we for example another mind is producing only with uh client compass that uh load star and gimbals so the clients combat that are producing that that are not giving us enough time and all clients are producing empty

blocks

Enrico Del Fante: yeah so lotsa has an ongoing pr for this to address maybe next week we'll be able to address and issue fcus ahead of the time so that els can make blocks

Danny Ryan: we do know that geth switched to also have the async but i didn't i wouldn't suspect that um the clients that were producing blocks with nethermine previously would not be able to produce them with guth so we might just be seeing a higher percentage because

of the distribution now the even distribution but it might be just the same known issue i guess let's get the percentage but we can keep moving on this call by some people while some people investigate okay um so we are not at least currently the people on this call think that we should not adjust the ttd

Mehdi Zerouali: we're happy with all options uh from lighthouse perspective

Danny Ryan: okay so right now we won't adjust the dvd and

we'll probably readdress this in one week on awkward devs tim

Tim Beiko: yeah sounds good and i'll look into getting set up on nice hash and um yeah we we can also look uh at the ef about setting up some minors on on our own uh instances and yeah

Danny Ryan: cool thank you um any other merge related discussions for today

Parithosh Jayanthi: oh when do we expect um client releases with the

robson stuff picked in um prism

Terence Tsao: was planning a release on the

weekend before that so maybe next thursday friday we will have a release yeah

Mehdi Zerouali: for for lighthouse uh we'll have uh we'll have this by the end of this week early next week we're just working on getting the significant measure-related changes in before the the actual upgrade uh so to get as much testing as possible uh pretty confident we'll do this and uh we'll also add our boot notes to the mesh test that's repo

yeah

Ben Edgington: oh tecu will be uh early next week monday or tuesday

Parithosh Jayanthi: awesome thanks um and just to reiterate there was one change

since the pr was created so please do make sure that you're on the version that was merged in like the genesis ssc file and the genesis delay

Jacek Sieka: yeah nimbus same thing there we just did a release today but we're going to do a small point release just for robson next week sometime

good

Mikhail Kalinin: um on the same topic we are expecting spec releases as well right and like engine api and

uh it says suspect

Danny Ryan: yeah i believe like a release candidate

on the consensus specs um and then i don't know how i know the engine api the execution apis have been alpha releases so it might just be another alpha release yeah um i need to do a bit of cleanup i was doing a bit yesterday i think we're in a pretty good spot on the consensus specs and um try to get that release candidate out tomorrow it's not necessarily meaningful other than just kind of signifying this is what's going into robson that's i don't think there's really changes real okay other merge related items for today

any

updates i'm going please so

Terence Tsao: beyond robson we're also working on a few thought posts on how to start up some beacon mode how to use theory cpn and stuff i'm wondering if there's like an effort for more general blog posts on just how to launch uh robson beacon nodes so that so that we can point our uh blog post to that one

Danny Ryan: tim you've been working on a robson blog post that's going to have some of the details here right or at least like the high points

Tim Beiko: yes i was looking for something to link for people who wanted to launch a robson beacon nodes so terence if you have that blog post ready in the next like i don't know

like before midweek next week i would happily link that in the ef blog post like it says it basically says like generally what people needs to do but it doesn't run through actual uh like how do you do it step by step so if you have like a good a good thing there uh yeah that would be really really helpful

this is

Terence Tsao: awesome thank you

Danny Ryan: is robson blog post gonna it's gonna reference the fact that you should set your recipient so that people use that but not like point out how to use each one

Tim Beiko: right because if yeah exactly that's like a good example because each client like implements you know few recipients differently it says you know look for a fee recipient value in the

configs of your client to make sure you set that but it doesn't go through like here's how you do it on nimbus and prism and lighthouse and

deku

Danny Ryan: okay um other merge related items okay um i do recommend maybe jumping having someone on your team jump into all core devs next week it just seems like

over the next four to six weeks there'll be relevant conversations happening in both these calls um okay um are there any other client related updates that teams like teams would like to share today

Mamy Ratsimbazafy: um so uh josek mentioned nimbus um uh release we have a couple of interesting updates for the release let me check the release notes um [Music] sorry yeah so we have like improv now the

proposal boosting we have faster uh snappy reduce cpu usage as well for uh when clients sync with nimbus and we had some focus on web free signer normally it's we have better compatibility with all and one thing that we released is bls threshold signatures so the idea is that now especially sticking pools can um have uh signing keys that needs to be like you need five out of eight or something to actually sign a block on at the station and this um so that they don't need to give

the the full keys to their sysadmins or a devops team which is one of their concern once they have a fleet with millions of dollars and a disgruntled employee could cause issues there so that's it for nimbus client itself and otherwise uh we have uh the light client protocol we made some progress and uh there is a ethan who's working on on the spec and implementing it at the same time you can look at it in the

uh related efficient repo and also well still uh trying to push and implement mev and mev boosting for [Music] the consensus layer

Danny Ryan: thank you any other updates

Mehdi Zerouali: yeah i can go next for lighthouse um we propose the pr to the beacon api uh spec to prevent production of uh attestations and sim contributions to optimistic blocks so it's pr2 on the beacon api's revo um we don't really expect this to be controversial but um kind of want people to be aware

of this uh since it's a pretty significant important change that would essentially allow us to prevent finalization of invalid execution payloads so please take a look um we've also made our discovery ipv6 compatible uh we essentially decided not to enable this until after the merge but it's ready uh we've started speccing and implementing um epi sub prototypes so epidemic meshes for for gossips are seen as a significant upgrade to gossip sub we started working and implementing the recipient method for the validate client from standard key manager api

and that's pretty much it on the client's side but i've probably seen michael has done a bunch of work on on block print for client diversity metrics um check out his tweet if you haven't

Danny Ryan: thank you other updates

Enrico Del Fante: i can go on next for tech so we uh work the we have some additions from the upcoming release for the next week um some of them are related to our rest api framework that becomes uh we are moving from from from

we are changing our internal framework to be our to be a little bit more optimized in terms of memory consumption because we are now able to streaming stream json it's directly to networking so we have less memory pressure when we are dealing more mostly with big apis that the streams for instance states that are usually very big objects so a big win for for inferior for instance and um we have some optimization on the bls battery batch validation for instance and we also have additional

optimization on the a on the events rest api events we still on memory pressure on that side uh big wins there and we also implemented the eth1 checksum this is a good has been good a good contribution from an external contributor so we are now applying checksum on the eth1 address this applies to few recipients for instance and we are still we are working on the builder api and today we had the very interesting results first successful testing around builder apis

so we are now be able to run the beacon blind address api flows plus builder get header and get payload apis they are working and we are also falling back with our local execution client when things that goes wrong on the builder side what is missing here is just validator registration signing and builder bid validation signature validation but yeah we are we are close to having everything implemented on that side that's it

Danny Ryan: thank you anyone else

Terence Tsao: i can go next so um prison released uh version 2.1.2 last uh this week which includes goal 1.18.1 also it has a few important bug fixes a few optimizations aside from that we're just catching up with the spat changes we are also um working on saving blind block instead of saving full block meaning that the execution payload will be header hopefully we'll see reductions on the db sites on that and then um also we're working on builder api implementation we are done with the implementation right now we're on testing with the merge mod trying to

write some sort of end-to-end test and um on the ux side we're working on config and client for users to specify guests they made and then the and then the desired builder fee the builder fee recipient and then also we're also on the background we're working on eip4844 with the with the with the with the optimism team and then we also have um two new hire they're just joining us so nick will be our um full-time uh typewriter and samantha is our new um pro developer so yeah well welcome to those guys

Danny Ryan: great thank you

Cayman Nava: i can i can speak quickly to lodestar last week we uh released version 0.36 had a few goodies we have validator metrics in the validator uh we i believe that also we also include proposer boosting in this release and we also fixed a security vulnerability where someone could create a malicious but valid slashing at a very very high slot number and cause loadstar to have a consensus split so that should be fixed upcoming where we're going to be implementing the light client spec along with itan

and getting ready for an audit of our code base and hopefully subsequent version 1.0 release next month

Danny Ryan: sweet thank you anything else any other updates

yeah so solas from grandina team so

Saulius Grigaitis: so we extended the website signer support with multiple signers and keys reloading and other things and also we started to work on the custom task channeler to replace the iran that use for parallelization is since we we optimized for the 8 to 16 cores cpus and the

four cpus with just a few ports or a lot of course like 32 or so the performance should be better than it is now so we are working on on this custom scheduler and they also improved the memory consumption which significantly decreased it wasn't high previously but now it's even smaller so that's all

Danny Ryan: what does your main memory consumption look like if you don't mind me asking

Saulius Grigaitis: um i don't know actually actually i talked with with leo from barcelona super computer computing last week or week before and i think they have these graphs

with memory consumption but but it's pretty low now i don't know it's like a couple of gigs or something like that not that high

Danny Ryan: okay uh any other updates great moving on research spec and otherwise um i actually don't know what your name is but r were 13 is here to talk about essentially exits a method to initiate exits from ox01 credentials from the execution layer

Artyom Veremeenko: yeah

could we please move the discussion to the last 30 minutes of the time while my teammate wanted to join and then he would be able to participate as well

Danny Ryan: we can definitely talk about step deprecation and anything else but i don't know if we're gonna make it to 30 minutes from now um but let's yeah let's jump into step deprecation

Artyom Veremeenko: um okay

this has been let's see

Danny Ryan: this has been up since march 18th um pretty much looking for any final feedback on this i believe

everyone was generally fine i think maybe only one client team is utilizing step in one edge case but it's not really utilized and the goal here is to reduce the complexity and have a backwards compatible way to do so um i guess i'm putting this on a final call we don't have a process here but uh i haven't no one said anything bad about it i think that we're intending to just move forward this is the specification is there anything else people want to discuss in this issue before we merge it and get a new release

Jacek Sieka: since i wrote it i can

note that there is a very similar pr coming up for the beacon api as well which basically allows the consensus client to implement both by root and by range requests with mirrored api calls in the in in the json rpc call and that one doesn't include a step parameter let's say yet because i kind of assume that this pr will get merged since nobody complained so far but the two things are related so the point of simplifying this right now

is that there's an actual reason to do so it's not like um yeah it's not just a fun change

Danny Ryan: right and the i'm going to toss this other issue in the x in the engine api onto maybe onto all core devs next week just to make sure that uh execution layer clients have taken a look at it um i know that there's been a little bit of review in general positive um and it enhances you know feature that lighthouse has already built out using the standard youth api i think it's a likely no brainer as long as we get

thumbs up all around

Jacek Sieka: yeah i think i'll just briefly outline the the one thing that i see as an issue and or there's a discussion point in that pr and i can repeat it later in the or all cardiffs but um there is the question of whether els should support both by hash and by range requests and then by hash requests they're kind of mandatory in order to grab forks or non heads whereas range requests are excellent for for the canonical chain and finalized

data but strictly the range request is an optimization so in in the beacon api spec it's done in a way that els are free to not implement the range request and then cls should fall back on rule requests um of course if everybody just agrees that range requests are absolutely fantastic we can remove the optionality from there and simplify the cl as well to not have this uh fallback logic but that's and that's kind of like an open question

Mikhail Kalinin: got it but we need this by by root request as well right or by hash i would

call them by hash requests

if you are

Mikhail Kalinin: requesting non-canonical

Jacek Sieka: yes we do we do need both so it's a question of uh do we mandate both requests to be implemented by the el or do we say that only by hash which is the more powerful request is mandatory and then the range request is optional and not an optimization basically and this is really down to i think the implementation effort in els because obviously not having this fallback logic is is more simple on the cl side

right

Danny Ryan: i did just toss it on awkward agenda for next week to get some visibility you ask if you could join that would be helpful

Jacek Sieka: i will do my best

Danny Ryan: okay it's anyone against this step thing i'm going to drop it in the i'm going to drop it in the consensus dev chat and ask for any final review and then we're going to merge this thing and put it in the release

Jacek Sieka: yay

Danny Ryan: yay indeed um okay

it has we managed to kill five more minutes um are there other things that people want to discuss today how about uh just a quick update on um the shadow fork it looks like things are going well and we were just confused by how block explorer was importing things

Parithosh Jayanthi: um exactly so the explorer seems to be running into some issue where it's failing to import a slot i'm not sure why it's complaining it's an invalid chain id um so it's just listing every slot as zero transactions the slots actually had transactions and you can query the node and check the slots so in general we have a really really

good shadow fork with an equal client split of a possible 97 participation we're at 97 um so essentially no client combination went out of sync post much so we survived the transition um the missing three percent was related to an unhealthy shutdown on bazu and that happened far before ttd so it's completely unrelated we are only running eragon with prism right now but that combination is working yep that would be the update from the shadow folk congrats everyone

Danny Ryan: that is fantastic news so the race conditions with the async

calls were those

patched because

Parithosh Jayanthi: we still need to check now um there are transactions but we're not sure if there are transactions in every slot we still need to check that

Danny Ryan: we would expect based off of the bloodstore's update i think we would expect let's starters still be having the empty ones

Parithosh Jayanthi: exactly um i think some clients didn't patch them so if there was not before they'd likely be about after

Danny Ryan: okay fantastic news excellent okay we killed three more minutes um can we discuss this we can also discuss it on the next call if you do need

your co-worker to join in um it's up to you arton and before that any other discussion points that anyone has for this call

okay so i saw raising discussions of the deposit deposits functionality and simpson teams would like to uh to change it or kind of get rid of the or the current approach is it like

is it the idea to have something in the in the next [Music] somewhere in the very fire future

Danny Ryan: uh we could certainly entertain it for shanghai capela um it's probably like if we have a low complexity path um then i i don't see much issue you know we'd kind of be debating whether it's just kind of worth the time at that point i do personally believe and you know i haven't expected out or explored it fully but i believe you can just likely reduce the follow distance to one and make eth1 data a validity condition

such that you toss out blocks with bad et1 data this you could use existing endpoints on the eth endpoint or you could potentially escalate or elevate this to the engine api to reduce the dependency on the ethernet points obviously then you still have kind of the machinery of having to get the deposits out of the el and stuff you could also elevate that into an engine api endpoint so there's a there's a number of like little design considerations my per if we do want to prioritize getting shortening that distance i think the the most straightforward way is to um

just reduce the follow distance to one and kind of deal with the implications of that but you could certainly also probably do a bit deeper redesigning and get maybe a more elegant mechanism but then it's debatable as to whether it's worth the complexity

Ben Edgington: just clarify by more elegant do you mean removing the voting process and all of that

Danny Ryan: well by by eliminate by reducing the follow distance to one the voting process just becomes one of one uh and it's safe as long as there's a validity condition on the block for ethan data to be correct so i think that that's

you could potentially like more tightly couple you could probably get rid of eth1 data you could make the engine api return deposits and maybe get rid of some of the merkle root processing i i don't know i just there's i imagine if you are more willing to redesign you could probably get rid of some of the other stuff but i think the most straightforward way is to reduce follow distance to one have it quote a voting of essentially just one slot and make it a validity condition on so that it's not actually voting

there was a good point battery and chad that the syrian the optimistic scene we probably

won't be able to just query uh yelp or verify this data like it's in toronto's instant chronos fashion

Danny Ryan: so i think you'd have all this optimistic as well if you couldn't get anything you really can't fully verify that you're depending on the execution therefore would throw it into optimistic

Mikhail Kalinin: um i think that you mean that skipping verification of deposits like in the optimistic sync

mode i see how that's dangerous

Mikhail Kalinin: yeah that's dangerous

that's it

Danny Ryan: is that not what's happening already yeah i guess it's not happening because they just they assume that the voting threshold is

safe enough so it's not throwing you an optimistic

Mikhail Kalinin: right right so yeah well i i it's gonna be easily imagined that an adversary will just induce a lot of big deposits and increases like uh portion of stake and for someone like i don't know sync with between in an optimistic mode yeah so it's definitely like a kind of a new attack vector that we all have to deal with that we ideally don't want to deal with and the uh yeah and what's possible to do is like uh if we have a a logical verify and a miracle proof uh that links the deposit route to the state route of the previous walk for

example but that would require like constructing this kind of proof and also verifying it on cl side not sure if it's something that cl5 players want to dig into but yeah that's like that sounds like a decent option from from uh a lot of standpoints

but it adds uh implementation yeah

Danny Ryan: okay so yeah i agree that it does open up an additional potential path attack or like heightened attack path if you're an optimist again it's an easier way to get keys in there to try to finalize something malicious

Mikhail Kalinin: um yeah i also think that we can easily the set and this is like uh yeah needs more rigorous analysis but i think that we can easily set this e1 follow distance parameter to one and preserve this you know vote in periods and sizes and have it now but i'm not sure if it's like a huge ux improvement that we want to make so the one is that even worth making

Danny Ryan: i do challenge the uh this actually making it much worse because you still have because everyone's using this as a validity condition you know in optimistic mode you're essentially like you're kind of in like honest majority

mode on execution layer validation because you're following the fork choice and finality of the people that are voting and so if this is a um that doesn't really change much if like if you make this a validity condition you're still relying on everyone's attestations and finality votes so you're still in kind of this honest majority situation um it's just what that honest majority can do to you is slightly heightened i suppose yes or dishonest majority sorry

Mikhail Kalinin: yeah but yeah but i think that reducing the distance is that we have this large it

distance now to to protect ourselves from rework some with one chain right and we will not have this uh problem

uh post merge

Danny Ryan: yeah

Mikhail Kalinin: because the chain that you're so definitely options here but i'm not sure that we want to dive deeper i like to to like tightly couple ourselves to the miracle proofs uh considering that there is an upcoming whirlpool tree upgrade so think about it

Danny Ryan: um i will say that if anyone's inspired and wants to kind of

try to specify a minimal complexity here option here that would help with considering it right like right now it's just a few potential ideas um and we if we're going to consider it for shanghai capela we need to get a concrete proposal you know in the next some chunk of time i don't know what chunk of time that is but uh sooner better

is the goal

Saulius Grigaitis: is the goal to speed up the addition to of all the data's to the state or or this

is not a goal

of

Danny Ryan: um that would be the goal of the feature is that this follow distance does not actually potentially really bias anything now that these systems are more tightly integrated um and so we can probably eliminate the follow distance if we specify

it properly there is their kind of need for for adding validators at a higher rate

Danny Ryan: no i think that i think the argument is there's probably no need to do it at the

slower rate technically so you can improve ux it's only a ux thing for onboarding new validators on the order of you know a day and so i would like if this was gonna get in the way if this was gonna decrease increase ship time or get in the way of something that's very critical then you know i could see it not really hitting the priority list okay

um art yum we have i believe killed the amount of time we can kill uh do you all want to talk about the xerox zero one initiated exits

Enrico Del Fante: yeah thanks uh messily is here now so it's just great um first of all we've got a question um uh what to think whether with the withdrawals enabled it's important to add capability to have withdrawal credentials initiated exits we've got some opinions on the forum

on the topic related to the withdrawal credential exits based on a generalized message bus for us it seems more or less important from the perspective of any delegated stake and solutions when where if the stakers and the pool are not capable to withdraw the funds thus the validators which are ideally are trustless are capable of holding the funds hostage [Music]

so the first question is whether somebody's considered this important to try to add alongside with the withdrawals

Danny Ryan: so i i personally do think that it is weird and potentially bad in the construction right now that the ultimate owner of the funds the person who has the withdrawal credentials which often could be the same person or not the same person cannot and initiate an exit so then you do certainly have in any sort of not even on chain delegated mechanism but

any sort of split there you have hostage scenarios that could happen and so i do think that having withdrawal credential enabled exits is likely a good feature to enable um i do think that in shanghai capela that we're going to be doing this kind of like cross el stuff to get the withdrawals enabled um and probably learn a lot as we do it and i don't know if we'll have the kind of complexity ability to do this other feature um

but i'm happy to kind of defer to others on the engineering complexity i do think that i question whether we need a generalized bus um i i don't think oxo1 credential rotation um actually should be handled by the the consensus layer i think that this we have smart contract wallets like you can certainly rotate control over these things um in a mechanism rather than having to have this as a programmable mechanism and then all of a sudden we only have one message that we need to send unless you predict other messages that we need to send out i i don't have a list of them

are there other messages that you think the execution layer will need to send to the consensus there over time

i honestly think that uh right now and like for the foreseeable future under the um for withdrawal credential english sectors are the ones because like you don't need with current proposals you don't need messages for um for the party withdrawals and withdrawal credential rotation is not super important like uh even if we wanted it uh you you it's it's not a priority yet like at all for for now and it's not

clear that it's needed so i think there is only one message that needs to be passed but it still needs to be passed in some way from the execution layer to the beacon chain layer

Danny Ryan: i kind of think we should maybe do the deposit follow distance reduction exploration and kind of keep in mind that we have another potential message to pass in and see if these mechanisms can be very similar

i mean we already have one message

python mechanism it's the deposits uh so uh yeah so like uh jmb is designed like almost exactly like deposits but generalized

so

Danny Ryan: i also think that we do need anti-dos mechanism beyond just people having to pay fees in the execution layer because being able to grief these mechanisms opens up i think we can easily avoid people being able to grief these mechanisms and so we should um deposits are naturally rate limited to a certain extent because

it costs a minimum of one eighth 8. i think it would be best if these were rate limited as well but likely the only way to rate limit them would be for the execution layer to have some view into the consensus layer like if you had the deposit route exposed you could ensure that just one only one validator could submit one of these ever um but we don't have that ability yet so without that i don't know if we have an anti-dust mechanism

yeah it it can be implemented with a like basically origin the merkle uh uh

uh the the the three uh the state tree for from beacon chain route for the valley data so like you you thought i can implement it right now uh but it's going to be brittle because like then not very uh not very beautiful honestly because you need to assume a lot of things about internal structure of the big chain layer on the kitchen layer and that just has complexity i think that like if we can manage the stuff with just fees we should manage that with justice because it makes much much much less complexity here and the

systems are much less tied up like executioner knows nothing about beacon chain layer and that's simpler to understand and the reason about don't have to track the changes on uh on the beacon chain layer to understand if you if you need to or make something execution there and stuff like that

Danny Ryan: it was just fees though i can arbitrarily block ox01 initiated exits

yeah for like for a very high price basically

Danny Ryan: well sure high in relation to wherever the market

is at the time yes

Artyom Veremeenko: for me it seems it depends a lot on the ability to to do a number of checks for the validity on consensus layer clients and for me this is the most mysterious part like for uh voluntary exits there is limit 16 and it's 16 because it because it because it's

it it's the limit not for the amount of checks but it's the limit for the amount of exits and this is okay but the check itself seemed to be much much cheaper and thus [Music] we could make i don't know 100 of them maybe more this is maybe a question to the client teams and the price of the attack depends a lot on the amount of of the checks we can afford like maybe if there is enough room for the checks

uh in a block then uh it's enough to make the attack price large enough even without checks on execution layers specific checks

Danny Ryan: yeah so the number is going to cost two things to the the beacon chain one is size of blocks and two is computational overhead um so but yeah i do see that if you could afford to put a ton in there then i'll you make the the cost of the attack to be sustained even higher

Artyom Veremeenko: um why why does it influence block size

Danny Ryan: these messages are included in the block

Artyom Veremeenko: only the valid ones the point is to make the checks before they are included [Music] everyone in the blog as far as i got it looking at the deposits implementation [Music] there is a part of execution where the deposits are cashed and the deposit requests events the positive events are cashed and preliminary checked and only then they get into the

block structure so the idea is to make the checks along the way

Danny Ryan: i might be wrong but i believe all deposits including invalid ones are included so that anyone can fully verify and to ensure that they're also processed sequentially

yes you're not world yeah

Danny Ryan: between the execution layer and the beacon chain you might be able to bypass that that might be an artifact of assuming beacon chain belt people

operating the beacon chain maybe weren't didn't have access to an execution there or the proof of work chain but um my intuition is you would likely want to include the ball and chain um especially if somebody if you don't include them all in chain then you have these modes where i can't be a i can't run a full beacon chain and a light execution client all of a sudden or something like that

yeah so so we we are out of our depths on understanding the the costs uh of uh um

like uh implementing this on uh on consensus clients that's why we need like a lot of physical and we have no intuition about like how costly he is uh checking the for example reading the validated data structure and checking if the address uh in it is the same as address from the exit uh message for example

Danny Ryan: so i think your your primary costs are again going to come from the size of the blocks assuming even the valid ones need to go into the box [Music] um potentially and then computation at that

point the reads from the validated data structure probably going to be relatively low cost computing markle proofs if there are merkle proofs in these might be a higher cost there wouldn't need to be any signature because the signature it's just whether it came from the oxo one address or not

yeah there is no cryptography they're just originally checking and like and placement block so yeah the um the the the block size can be priced uh easy enough with a like extra fee on uh

on the execution layer

Danny Ryan: what do you mean

actually like we can we can do a smart contract that like charges uh a bit of extra uh extra other to to work like zero point zero uh one for example or something like that yes you have a minimum cost regardless of gas cost

yeah it can be tied to guys gas price the current gas price as well uh it's fairly easy to implement like the uh the cost on institutionally are if they are simple to calculate we we

can use arbitrarily mechanism here

Danny Ryan: um are there any engineers or other people that want to chime in on this

Ben Edgington: i'm a bit concerned about how it changes existing norms i mean the all current staking services have been built assuming that this functionality doesn't exist and whilst i agree it seems like a good idea um we don't want to break anyone's uh um model at least without giving them a

chance to to change things up

Danny Ryan: yeah i fluctuate between agreeing with you and then also considering the current functionality as a bug

um how

Dankrad Feist: what what could break i mean can you give an example i can't just can't see it

Ben Edgington: yeah i i don't know i just don't want to make assumptions so we should we we should do some due diligence at least and then satisfy ourselves that actually this this is fine

Dankrad Feist: i mean the the like the idea to do this has been out there for probably longer than we have even had the beacon chain and i don't think i

have seen anyone ever say that it breaks anything i i don't know i can't see it

Micah Zoltu: uh how many third-party staking services are there that potentially might break like is it three if so we can just reach out to them and say hey we're looking at this just fyi or is it hundreds

if

if we're talking about like uh on chain stuff like like the rocket pool what the stake fish does like there is about i think six and none of them are relying on that and i think lido and rocket pool i actually rely on this uh being uh included at some point like not reliant but uh would appreciate uh

and for for stuff that is not public and advertised i honestly don't know but there is i think that there is regular uh contract uh stuff that like a staker has a contract with not operator and this sorted out in the in the legal field

um [Music] uh currently all of them seem to be upgradable proxies so uh they all reserve the they all reserve the right way to upgrade their withdrawal contract so one sort

Danny Ryan: centralized staking providers that do offer this split to some of their customers

um but again i have a hard time the key like that the customer if they want to exit and the their operator isn't initiating exit and they initiate an exit on themselves by themselves like i don't and again that's not ox01 but i think if you do put this for x at one you consider putting it for oxo as well um and it's hard to imagine that the ultimate owner of the funds which is the withdrawal credentials owner not being able to exit is a good thing uh but i all right doing diligence is a good idea i agree

Yoav Weiss: no i think it's um uh i think i think we do need this capability it does sound like a bug if you can't uh initiate a withdrawal from

the phone with with the world address but then but then it exposes us to another risk which i wrote on the chat that uh since a central contract like the one from a lido could could get us to where i could get to a mass exit situation if there's a bug like you know where suddenly if a third of the validators exit at the same time that could become an issue so we would need to rate limited at least

and it is um exits are rate limited

Dankrad Feist: from current exits i mean that that's

the same problem already there right

Yoav Weiss: yeah it just it just makes this uh problem even uh even worse because a single operation in a single operation in the contract could could cause this same as exit but if it's rate limited then there's no problem and it's already limited now so we should just make sure it remains that way

Danny Ryan: yeah i think in general we just it does open up the attack surface for uh you know what people can do if they and which type of withdrawal potentials they can do things with but ultimately if the smart contract or the way you're customer keys is broken

through withdrawal credentials it's certainly uh bad in any case um [Music] i i guess i would encourage people to think about this i think that it's probably worth thinking about as we're examining how to clean up the deposit mechanism um i personally would rather see a more natural rate limit than than just gas fees but i do think i do agree that a fixed fee um or maybe a fixed fee in relation to

gas that isn't just you know the cost of running it could also be at least a worthwhile exploration

um are you speaking about right on execution there

Danny Ryan: yeah yeah

Enrico Del Fante: oh it doesn't help

Danny Ryan: no no sorry i don't i mean you're saying the fees on the execution layer are the rate limit so if you add if you add a fixed fee then and you quantify the cost of including such an operation on the vegan chain then that could potentially be a viable path okay yeah this may not it's certainly not as elegant as natural

right

Micah Zoltu: this may not make sense but um what happens if a withdrawal key and a um validator key both try to draw at the same time in the same block

Danny Ryan: uh that doesn't matter

possible

Danny Ryan: both of these are it's exits that we're talking about exits then eventually become withdrawals after they leave the queue um one of them so things are processed in a certain order so if you had a voluntary withdrawal and then you had a oxo1 initiated withdrawal one of them would need to be a no op or

one of them would not be able to be included on chain like if you had the voluntary exit if you had to just kind of depending on the order but you you're right you have to kind of you have to test for that case uh but i don't think it's

like something we need to test for but there shouldn't that be any problem with it yeah yeah we kind of already have fun if there's

Danny Ryan: some edge cases there like if a slashing is included then you can't include a voluntary exit on chain because that person's already exited initiated exited from from a slashing so they're this is not it's not unique that we have to kind of think about how these operations interact executable specs great

sorry gossip what's up

no i was just gonna mention the slashing race it's funny yeah

Danny Ryan: yeah and that was a it's an important case uh because i don't think we had a test for that one for a long time but uh now there's a consensus test for that one well part of it is unspecified right

Jacek Sieka: as long as the splash lives in the pool

oh

Danny Ryan: well that's an even that's a that's a slightly different case that's a that's a pool management problem a pool management block packing problem beyond the state transition problem

well

Jacek Sieka: there is an inherent imbalance in

that we can accept more exits than certain kinds of slashings in the block if i remember the block limits correctly

but anyway

Danny Ryan: um i believe you can put in believe you can put in 16 proposal slashings but like one or two attestation slashings but after station slash is going to include quite a bit of validators anyway we digress

um um i've

Artyom Veremeenko: i'm still got a question about uh uh doing preliminary checks

i found the place i was thinking about in prison client i've sent the link this is this is the function where deposit logs are parsed and here there is at least a check okay there are some checks for the events and some of the events are considered invalid and only then they go further where they get the part of the execution which is described in consensus layer specs and my idea was to

do the checks here uh am i getting something wrong or not

Danny Ryan: so if you do the check here then a someone who's only validating the beacon chain um would not be able to um it would be opaque to them why maybe if these were indexed and must be processed in order why they'd be missing ones if you assume every beacon chain does have an execution engine um then that is this is probably fine to do there um if

you do not you still have to specify it somewhere though so i i don't know my intuition is much cleaner do it the other way my intuition is that if you do put it in here then you do you do kind of limit certain types of uh lighter versions where maybe i'm only running the beacon chain and i'm not running the execution engine which although validators shouldn't do that it's certainly a thing that users might do for some reason or the other um so it does reduce the ability to process and fully validate the beacon chain state transition because you have to get this kind of missing component coming from the extrusion there but i i don't know i i would need to think a bit more about whether that can be done

in a safe way does anyone else have an intuition on that

Artyom Veremeenko: and the same problem doesn't happen for the deposits uh because the checks here are m may or may be only the checks for for the duplicate events duplicated events

Danny Ryan: i would presume these checks are primarily to ensure that they kind of make sure their cache and construction of the tree is valid but that everything that's emitted from the deposit contract is going to end up as a deposit on chain

here but i'm i'm not too familiar with this

code all

Danny Ryan: right any other questions for today okay we're still

by still what i mean to do uh figuring out how to make this process in the consensus layer a bit cleaner so that people can propose features beyond just an e3 search if you are interested in specking out this feature making a feature directory inside of the consensus layer specs would be the way to do so um there's like a if you look in there there's primarily things bundled into forks but there is a 4844 feature directory where that's specified so it can be kind of considered independently of a fork until it's time to integrate it into a fork so if you wanted to

take it to the next level and specifying that would probably be the place to do so and i think once you put if you deem it worth kind of doing then you'll probably get more eyes at that point but again i think there's probably some stuff to think about as we clean up the deposit or explore cleaning up the deposit structures

okay

Artyom Veremeenko: thanks

Danny Ryan: okay anything else for today

Parithosh Jayanthi: um just a tiny note would everyone be

okay with the next shadow for happening monday the 30th so there's more time for everyone to cut releases and we can hopefully test the robson releases either monday or tuesday so 30th or 31st

Tim Beiko: i like the idea of having you having one happen with like the robson releases um and hopefully we get them all by the end of next week so we can have the blog post out

there

Parithosh Jayanthi: exactly and if a couple of the clients still haven't made the releases that's perfectly fine but it would be nice to test what was

ready

Marius van der Wijden: yeah but you should you should really

make your releases by the 30th

Tim Beiko: oh no you should make your releases before that please you should really make your releases by the 25th ideally so that because like what would be really good is if the releases are out like next wednesday then that means like thursday we can publish the blog post and like people have the whole weekend to get set up before genesis of the beacon chain if they want um yeah so please before the 30th and i guess what we're just saying here is like we're not doing a shadow fork next week to give people the time to cut over these

Parithosh Jayanthi: exactly and just in general about stuff any quality of life stuff whatever you want to do yeah

Danny Ryan: great i assume the shadow fork still looks good

Parithosh Jayanthi: yeah nothing's changed since the past half an hour also yeah

Danny Ryan: excellent okay on that note let's close it out um awkward does next week um talk to y'all soon

thanks everyone so yeah see ya thank you [Music]

[Music] [Music] oh

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