All Core Devs - Execution #122

All Core Devs - Execution · 17 Sept 2021 · 1:45:09

Ethereum core developers cover an upgrade for Nethermind nodes to v1.11.2, merge interop updates including the engine API and the sync process, and a proposal to include EIP-3756 on a gas limit cap.

Speakers

Topics

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

Transcript

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

[Music] [Music] so

[Music] [Music] [Music]

[Music] [Music] [Music] so

[Music] [Music] [Music]

[Music] [Music]

[Music] [Music] so

[Music] [Music] do [Music]

Marek Moraczyński: uh yeah sure so uh

all the people should upgrade our nethermine notes to 1 11 2 version and it was quite random that sometimes the on the previous version we can uh skip the validation of uh proof of work uh yeah and that is all lukas do you want to add something about it

uh what yeah

Tim Beiko: so what's the version that people should upgrade to

Łukasz Rozmej: 1.11.2

Tim Beiko: yeah okay 1.11.2 okay um awesome yeah thanks for the update so uh people please upgrade uh if you're running nethermine and in the next call or the one after uh we'll probably go into more details and the actual vulnerability itself um cool i guess first on the agenda um we have updates around the merge and interoperability between the different clients on the execution and consensus layer um mikhail do you want to just give a quick high-level overview of the the different different updates you had

Mikhail Kalinin: yeah sure thanks tim uh has been work on the

drop edition of this engine api um and i think it will be published pretty soon uh probably this day or um the early next week um matt do you think how much time do we need to do this if we assume that it's ready i mean the document it should be straightforward right sorry oh yeah we didn't really um can you repeat this first okay

i think i heard today as part of his sentence but right not 100 okay cool um a part of this uh engine api stuff uh there is a couple of updates that i would like to share here first is the [Music] proposal on using the hard-coded terminal total difficulty in both clients in the consensus client and in the execution client uh here is the link to the pull request again the beacon spec it has the is the link to the full request i've made to the eap as

well and you may go there and read for the details and duration of the hand is in general is reducing the complexity and protecting us from various such cases that could arise around implementation and usage of the dynamic total terminal total difficulty that previously uh were uh the priority had in the stack so um another thing this is a small kind of thing is the the extra data are brought back so the the deprecation of extra data fail field has been removed from the eip

and it's been added to the execution payload so it's back again and yeah the rational here is that it's useful in investigations of various incidents on the mainnet as it's the default usage for the extra data is to just express the client version which is pretty helpful so what's next here um yeah uh also in general about the merge interrupt specs um i think we will have

them and their versions settled down and published like in the middle of the next week probably early next week so stay tuned on that um yeah this is uh with regard to updates i have al also uh want to make one proposal here and to hear from client devs what they're thinking about it um this is like yeah yeah sure this is the about message ordering uh between the consensus and execution clients uh like the order of engine api calls uh to be more strict

and for for the interrupt thing uh the proposal is to um like is to use synchronous calls on the consensus client side which means that if the call is made the consensus client just waits for the response before moving forward uh with its flow of blood processing or block production or any other stuff or the folk choice uh the reason here is that it's just like the easiest way to uh to handle the message ordering stuff and i think it's reasonable to simplify this part for the interrupt and we can

further discuss uh the production ready solution for this part of the protocol and to not focus on on that just during the intro i think it's not super important uh for interrupts it's done so that's just the proposal what what do people think about it

oh

Łukasz Rozmej: sorry i something of my internet didn't hear that well you're you're mentioning changing something to synchronous which one exactly

and

Mikhail Kalinin: the consensus client will synchronously

make the engine api calls so it will send the request when went for response instead of like send one request then go to uh then get back to the like usual block process well and send in one one another request without waiting for the previous one to um to get processed and that could lead to the mess around the message ordering and some um inconsistencies if we don't have like a strict mechanism specified uh for to to pre to preserve the best the order of messages and that's just a workaround for the interrupt just temporal solution to not like get into discussion and get into

specification and implementation of any message consistency mechanism that is like more sophisticated than just some chronos calls so that's the proposal

Łukasz Rozmej: yeah so we we have this kind of ascent from new city by on the let's say in a transport layer right like you're saying but on the protocol lane they are like prepared payload get payload gives us some kind of asynchronicity and um the execute payload and then consensus validated and uh and i don't remember the last one uh also validated message would be giving us asynchronicity on the protocol

level but not on transport player level right

Mikhail Kalinin: um it depends on the transport but yeah yeah yeah right so we have this synchronicity and we want to have it but it like implies that we need to deal with the order of messages and it needs to be preserved like if you're receiving like the message about like some payload uh some child pay a the apparent payload hasn't been yet possessed that's that could be a problem

yeah this is just an example

Łukasz Rozmej: i'm totally for it so when we want test intron city we should just

implement it in the like protocol level and not on the don't rely on the transport level for that oh yeah yeah right so i i'm all for it i'm all for it

Tim Beiko: cool does anyone disagree with that oh danny you kind of came on but we didn't hear you

oh i said i

Danny Ryan: i agree that it makes sense like an iterative step get it get it right in a synchronous uh method and then layer asynchrony and where it makes

them okay

Mikhail Kalinin: i also need to need to uh like just

let yeah this this will go i mean this requirement will be exposed in the kind of merge interrupt at a stack so like the consensus client developers will have it there oh um that's pretty much it from my side

Alex Beregszaszi: okay and i guess yeah i just had one question to to make sure i it it's clear so the the decision for the the hard code the terminal total difficulty um it seemed like there was mostly

consensus on that on this card but i'm curious if anyone like feels otherwise because i as i understand it the trade-off is then you just need to put out like an extra release potentially which has that that terminal total difficulty hard-coded is that is that right

Mikhail Kalinin: um i think there there is a couple of options here um one option is to make a release with the this total difficulty um like hard coded but with some like pretty advanced uh value so uh we definitely sure that the merge fork on the beacon chain happens before

this little difficulty hits on the main net the other option is to have like a couple of releases one is to print this merge hard fork on and wait for and probably yeah and wait for the hard fork and then another one that just releases the clients with this total difficulty and while you hard coded um that's kind of two options here and and and and this and this in this second option uh actually the first release potentially not affects the execution clients right this is to this this is yet to

figure out but that might work this way so we will have like only one release as we as we used to have uh like with this dynamic total difficulty for inter for the execution class so if if it even uh reduces the complexity of uh releasing this stuff at all i mean like uh removing this one extra release from the execution client side

Tim Beiko: got it okay and yeah we don't need to necessarily decide that as we're making the change in the spec basically

Danny Ryan: the risk there the risk in doing one release is that you have to forecast total difficulty in a longer time period which could be

subject to attack or just high variance um i think i personally would take the hit and just do one release because there also is specified the manual override in the event of an attack or say terminal total difficulty just or total difficulty dropping lower and lower um or the difficulty each block tracking dropping lower and lower so it takes a really long time so there is a manual over right there which i think i prefer instead of doing two releases

got it

Marius van der Wijden: um have you thought about the the other way around that miner would speed up the block times

forge the timestamp to create a higher difficulty chain

Danny Ryan: we have discussed that uh is there is it actually practical um without can you actually spoof the network in doing so yes or would time stands like that be rejected

Marius van der Wijden: i think it would be possible

on this require what's the problem with that

Dankrad Feist: what's the problem with that then the merge happens a bit earlier so

Marius van der Wijden: um um if someone would mine their own chain

a separate chain with higher difficulty and then i don't know drop it on everyone i'm not sure

it's just a well 51 attack essentially um and won't they need like the great the bigger hashing power then you keep mine in this

Micah Zoltu: yeah it'd be a 51 attack and same as any other 51 attack where you just sensor blocks that aren't part of your 51

Danny Ryan: there's two sequences of them the beacon

chain hard forks to actually you know update the data structures to have allow for the payload and that's empty and then uh after that the control difficulty is hit and the you know the execution layer payload is inserted into the beacon chain and so the risk on an acceleration would be if they could hit thermal total difficulty prior to the actual vega chain fork because then i think the fork would end up once the fork happened the transition would happen immediately and happen on a pass block so there is like a little bit of an attack there

nice

Micah Zoltu: i say the issue here is because the beacon chain does not time its fork

based on the execution engine's total difficulty

right danny we can't hear i can hear dino that's weird i can't hear daddy oh now i can i'm going to go somewhere else in my house i think it's just tim everybody else can hear me no i can't either yeah i mean too many there um yeah

but yes i think

Tim Beiko: micah i think you're correct where the beacon chain upgrade is triggered uh by i assume uh epoch or slot number and yeah it's not triggered by the total difficulty itself

sorry correct i see

Micah Zoltu: so the real the real source of all these problems then is the fact that the beacon chain execution chain are forking on different metrics and those no matter what those metrics are they there's a possibility that they will diverge and one will happen before after the other and we need them to happen in the correct order right we can change first for any reason we can't just do the beacon chain fork months in

advance like do we need to wait until just before

yeah i mean that's

Danny Ryan: that's the that's the mikhail argument of two releases um and if you i wouldn't want to do two releases in like a two-week time stamp but if we did time it such that the big change worked months before i think that's a much more palatable to really schedule

Micah Zoltu: is there an argument against that other than just does the beacon chain actually need two releases or just be the beacon chain releases and then two months later the execution chain releases

now

Danny Ryan: they both need to know the terminal total difficulty

but i didn't shouldn't be synchronized i see

Micah Zoltu: so the beacon chain releases and then we decide the terminal total difficulty and then we need a release of both beacon or consensus and execution clients is that correct

Mikhail Kalinin: yes we'll need this if we follow this path we will need a small tweak in pikachu stack to be sure that sorry danny oh yeah yeah yeah yeah so but it's doable completely the end really straight forward um this is to my understanding in the current moment of time i haven't like

thought much about this

scenario

Micah Zoltu: is there any any um any reason we can't do the consensus clients update or fork or whatever long long in advance like let's say next week just just throwing it out there is there some reason that we need to do it some kind kind of near the actual proof stake switch or can we do it anytime prior i think it just makes the timelines longer right that would be the only reason like if you have to wait two

months then that's two months like start to the merge yeah sure but i'm saying like we could can we just do the the consensus client update now like whatever the next patch goes

well that's but isn't the

Dankrad Feist: the blocker is like setting on one spec that we're all happy with like if you do it now then in two months you might come up with some changes and like oh now it's too late

we already like i think right so once we do this sorry what was that danny

Alex Beregszaszi: i'd want to be much deeper in the engineering cycle before we would release on the beacon chain in production

right i'm not sure

that's one

Micah Zoltu: just to make sure i understand here the when this consensus clang goes out that is the start of the merge but there is not any sort of time constraint between between when this new consensus client goes out and when the execution client eventually goes out and when the hard work happens like that duration can be whatever we want it just needs to be in that order is that right

okay yeah this book

Mikhail Kalinin: both uh softwares should be tested with each other like with the they're the most recent version of each other before making

these uh releases right and i think in them oh sorry i was just gonna say

Tim Beiko: in the next couple months as we're working on

this it probably makes sense that maybe default to hard coding the total difficulty because it'll be mostly on devnets and whatnot and as we start kind of as we're further down with the spec and we start actually thinking about how to release this on mainnet i feel like we'll have a much more context about it once we've actually like implemented it in the in the happy path

Micah Zoltu: so yeah so i i agree that we shouldn't hold up devnets for this but at the same time i think we do want to test the production code paths as soon as an early as possible like i don't want to wait until the last minute to change the way we do our releases and then have like you know

it's only run on gurley or whatever we wanted every test net will see this mechanism for hard forking

um so we can just one thing

Dankrad Feist: i don't understand why are we talking about like one month to like change a single number in the execution client like it feels to me yeah i agree like cutting a new release is something difficulty difficult but not if it if the change is literally just a single number like you know exactly what you're going to release

no it's just not putting in that number

Tim Beiko: yeah it's not the it's not the time to do the release obviously that can be done in you know a day or two it's getting everybody to upgrade to the release to you know read the blog post i

do think if we wanted to go to release route we can get around that where we tell people like you know first release is out on the date x second release is out on date y so they know that they should be expecting to release but there's just the risk that like yeah every time we do releases people don't upgrade and they don't get the memo and if there's two of them you know there's just the risk that like they've updated to the first one and they're not aware that they need to upgrade again but i don't think it's any it's not a technical barrier

it's a dissimilar yeah

Dankrad Feist: but even that if you if you have made it very clear hey in the next week there will be a release that like you need to install

then what's really the percentage of people who don't get that and should they really be maintaining

ethereum nodes like i mean yeah i mean

Tim Beiko: just to give a recent example geth basically did that a few weeks ago and two major mining pools have not upgraded right

um and you know it's again it's not like an impossible problem but it is something that well like

Dankrad Feist: luckily luckily it doesn't matter if the mining fluids don't do it

in this case

Danny Ryan: i look i i agree donker that it might be the most palatable solution and you can orchestrate and make sure to communicate well but it's it's definitely a consideration and i also think that we

don't necessarily need to decide right now i do um we can we can spend a little bit of time over the next few days to think through whether the dynamic setting of terminal total difficulty can be done actually in a tractable way there was um an issue that emerged that kind of highlighted there might be a number of corner cases here so we can think through it uh and try to make sure that we definitely want to scrap it by mid next week um and then if so then we're kind of working with the static which i think is also solves a couple of other problems

what problems does static difficulty

solve uh primarily when you this donker

Alex Beregszaszi: brought this up on all core devs two weeks ago uh but if the execution engine uh if a user naively runs an execution engine and doesn't connect the beacon node and uh it was relying on being told from the beacon node the terminal difficulty and it never connected to one uh then it would literally just follow the proverbial chain forever and not like not following the transition would not show up as a failure to them even if they wanted to be following the transition whereas if there was a terminal total difficulty released in the execution engine then they would see essentially a failure at the point of the transition and not see any new blocks that would be essentially an alert that something's wrong and then

they'd figure out that they need to run their beacon node um that's the primary thing it solves other than some of the corner cases with sync that we identified a couple days ago

Micah Zoltu: didn't we come up with an alternative potential solution where we set the execution client such that if you are not connected to a consensus client by this difficulty then shut down and and just that just means like you must be connected to the network basically

Mikhail Kalinin: yeah there is also some other um [Music] some other like

details and implications of these dynamic double difficulty stuff so they are just exposed in the um issue i mean they are just described in details you can drop it the link

yeah

Micah Zoltu: someone can drop a link that'd be great i'm just at the moment it sounds like dynamic hold difficulty is the better option so i'd like to better understand what the arguments against that are it sounds like there are some and i just don't understand them

Alex Beregszaszi: yeah i would i would suggest we take it to that issue and move on

to this stuff yeah michael

Tim Beiko: already linked it in the chat so this pr 2605 on uh

on the consensus specs and that links to another issue as part of its rationale um yeah oh and then there's also pr2603 okay oh um i guess anything else on this specific topic

if

Diederik Loerakker: i opened this issue on the consensus specs repository um about transaction typing so the api and the execution layer don't change but within the consensus pack there's something we can change to be

more compatible in the future with new transaction types so if you're interested in typing then just have a look

Tim Beiko: cool and that's uh issue 2608 in the consensus specs um and then there was something uh that uh trent put in the chat before we we started um i think this is from paul from lighthouse if if that's correct but uh he was wondering if there's any uh execution team that already has the latest apis implemented yeah

basically the engine api spec

Marius van der Wijden: i have created an interface for it and i started writing a father for it but we haven't implemented it in in guest yet okay and also there were some questions regarding the interface um that we already like talked about when i implemented it

Tim Beiko: okay um anyone else have an update

or not

Gary Schulte: the same for basu we have uh the latest specs stubbed out for the moment

we're working on the implementation but we're not ready

okay and we are

Marek Moraczyński: not ready to uh in other mind we started working on the interfaces but i think we have a good progress

um yeah one another i

Mikhail Kalinin: just wanted to repeat that stay tuned we will just publish the spec person on this engine api it'll be different to the um the design dock i mean some some stuff some details but in general is the same

in the faces sweet

Tim Beiko: um yeah we'll share that in awkwardness and maybe in the announcement channels as well on the r d discord for people to follow next week um anything else on the merge before we move on

okay um if not uh we had a couple eips that people wanted to discuss uh first one was uh 37 oh sorry mikhail did you say something oh yeah i was just wondering i think yeah

Tim Beiko: oh did you have a specific question or is it just asking where the teams are at

Mikhail Kalinin: uh i was like yeah this is an agenda i'm not sure

i was just looking to get any updates there are on the specs talk your documentation on this draft design proposal

alex yeah

Tim Beiko: felix is not on the call i saw on discord that he was working on updates of the document but i i haven't seen anything published yet

Marius van der Wijden: oh yeah so uh he had some dentistry going on and so he wasn't really able to work this week he's going to finish it next week

um yeah and my question is like

yeah

Mikhail Kalinin: is there a plans uh of the client developers to implement the sync for the interrupt and um yeah you have capacities for that like who's planning to do this

Martin Holst Swende: from guest's perspective picture is as far as i know uh implementing that but in order to do it he is the yeah doing some major refactorings that are needed uh before you can really get started on the new stuff do you that's my question mario is there

the same impression

Marius van der Wijden: yeah so we need to implement some other stuff before we can start it with it and uh but peter is is doing that right now i'm not sure if we if we can actually make it until the merge until until the interrupt but we should until the merge probably but uh until the interrupt but we should have at least some some beta version that we can try

hopefully yeah sounds good yeah hopefully

Alex Beregszaszi: maybe at the beginning of october we can

there will be enough r d done that we can make better decisions about communication protocols and that kind of stuff at that point

Tim Beiko: and i guess one thing that's just worth mentioning i saw peter say this week is uh as part of these refactors within geth uh to support kind of merge sync um fassync is considering is considered being dropped um so if you're a get user running fastsync you should probably switch to snapsync uh going forward i don't know marius or martin if that's roughly right

Martin Holst Swende: uh well there's nothing really from a user perspective that

you need to do

and

Tim Beiko: okay it'll just stop being available

yeah i mean at some point there will be no notes that serve get no date on the network and if you then use an old guest version and try to pass things you're going to be start at some point in the future

Łukasz Rozmej: uh by dropping fast sync do you mean dropping get no data yes that would affect never mind ability to think somewhat because we are still using that

Mikhail Kalinin: so if we don't have a concrete

pr um it's more of something that has been checked around a bit and yeah sooner or later it's going to be dropped and it's yeah it's been in the wind for a long time but at some point

it's going to be dropped and we're not i mean we're moving yeah

Łukasz Rozmej: it's understandable that [Music] it's not scaling extremely well so we are planning uh either to implement snapsync or either to go move to

more like arrigon style um i'm more in favor implementing snapsync but with everything going on with the merge etc we haven't managed to do that yet

Tim Beiko: yeah so please kind of keep an eye out for the announcements on that and yeah every client and i guess infrastructure or user should be moving over to moving away from fasting at the very least

Marius van der Wijden: and just for the people listening in uh snapsync is way faster than fastsync it is uh

way faster and takes way less bandwidth and it's uh in all aspects period to it except in name

so

Tim Beiko: cool anything else on the merge

Guillaume Ballet: just a quick question for martin do you know if we have merged gary's pr about the transition process because that's gonna be necessary too

Mikhail Kalinin: i don't know sorry

okay well we need to check that cool

um okay uh so yeah next up uh light

Tim Beiko: client wanted to give an update on eip 3756 so the gas limit cap uh yeah

that's kind

Lightclient: can you hear me okay

Tim Beiko: yes

great

Lightclient: um yeah we presented this at the last all cordless didn't have a lot of time to discuss it so just to briefly reiterate the gas limit cap um it's motivated by uh putting it upper bound on what the gas limits can be set to by block proposers uh in the benign case high gas limits can increase the size of the state in

history faster than we could sustain the malicious case it amplifies attacks on clients in the past this hasn't really been a significant issue because miners have worked pretty diligently with all core devs to set gas limits but they've shown in the last few months that they are potentially willing to be incentivized to increase limits beyond what may be considered safe so this is a eip proposal to set up our bound on that limit is there any feedback on this

Mikhail Kalinin: well i know there are some people who are heavily opposed to this um

yeah so i'd like to hear the cons from those people or general thoughts

Micah Zoltu: i can give some the cons the primary one is that it means that all core devs will have to actually come to consensus on a gas limit the upper bound previously we have kind of been able to shrug off having to make that decision um if we make this change we will now have to officially make that decision as a group and the that then leads to we need to then decide what is an acceptable rate of state state growth and there is a huge amount of diversity amongst client

devs for what is reasonable in terms of state growth and there's also you know disagreement on just execution time per block on what's reasonable there so i think the biggest con here is that we will be taking something that currently we can kind of ignore or at least have plausible deniability of and we're taking turning into something that now we have to actually talk about and agree on and a very very hard decision

Dankrad Feist: well i think actually that all chord has to be fired making the decision my concern would be that it takes much longer like how long does it reason like take from an all core def decision like will it take an eap every time which take what at least half a year or

something

Micah Zoltu: yeah so when we want to change increase it we wouldn't do any if if this eip passes and we want to presumably would have some default i'm guessing 30 million um it's reasonable default if we wanted then change it later to something bigger so 45 million or whatever then we would need to have an eip and then wait for the next hard fork and get included in a hard fork

Dankrad Feist: i think that was an idea to make it automatically increase according to moore's law or something like that i think that would be a better idea

of all of it uh yeah so i mean there's definitely so good

oh yeah i didn't mean to interrupt but

Martin Holst Swende: my question is basically is this eep uh is the motivation for it is that we think that before the merge uh miners are going to be like not have the long view on ethereum and they just load the statement uh yolo in the last time they have or is this is the is the motivation more longer than that is it do you do you think that even in the future when we're after the merge um that this is going to be needed or wanted or desirable

i

Alex Beregszaszi: i think

that if those tokenomics work and that the the the hype around collecting tokens is around when staking's around that stakers could easily be motivated as well to abuse the limit um there's maybe a bit of counteraction there because they have a longer term view uh but i think a lot of them have machines that can easily run 40 million instead of 30 million and and would do so at the the cost of others but i i don't know i can't speak for all the stickers but i think the the incentives are still there even if you have you know a four-year time horizon instead of a one but i think that's because there don't know all of the uh issues

there

Micah Zoltu: so i think even with the if the incentives were aligned we still have the problem of education where the people who are stakers aren't necessarily the same people who have a very very deep understanding of the pros and cons of higher gas limits everybody most people i talk to who are not core devs um seemed and even a lot of gourd devs uh have a belief that you know state growth is not a problem um yet you know there are definitely core devs me very much included who believe state growth is a major problem and so if group stickers be it might be someone else token voting whatever even if they are altruistic it doesn't

mean they're well informed and so if we do decide to go that route we would need to make sure we have some mechanism of ensuring those people are in fact well informed and educating them which is again a hard problem like i think all the options here are hard problems to answer martin's question though i i do think that whatever rule we applied to to minors we should probably similarly apply um two stakers i think their incentive structures are are similar there is slightly longer time horizon as danny mentioned um but it's not that much

longer like the state growth problem some aspects of the state growth problem are on time horizons that are you know multi-years and if you take out in three months then you might not care about the state of ethereum in three years whereas if you just let block grow state growth grow indefinitely and we don't mitigate it effectively um you know three years maybe when we really start paying for it

Ansgar Dietrichs: um yeah enscar just wanted to briefly point out that with this eap i think this there would still be like a lot of room in how to how to use it right so because like say we say we set the upper limit at 30 million that would actually basically be a recommendation of like

going with 30 million unless we have technical issues where we temporarily reduce it or something one alternative could also be to even like today set it at like say 40 million 50 million something like that where like we don't recommend people to actually go that far but it's like this is the limit where we still consider the network technically safe or something right and in that circumstance where we usually expect not to be at the limit um this kind of change would be much less invasive um while still giving like at least some upper bound so there's no limitless uh like potential for or for catastrophe

any sense

Tim Beiko: right and then it becomes more of a communication than technical

challenge right like saying we allow 40 million but please don't use 40 million

um yeah

Micah Zoltu: um i think as a kind of shelling point 30 million is a reasonable start um but i just just to give everybody a fair warning i will argue too lower from that i personally think the 30 million is too high for a number of reasons

Alex Beregszaszi: i have a question uh has is there any update on the usage of egl has there been voting has there been

movement

Lightclient: i haven't followed the voting as much but i've looked at the mining pools that are still using it it looks like two smaller pools are um still sweeping rewards flex pool and b pool f2 pool was doing it in the beginning and it looks like this didn't sweep for rewards for a pretty long time but i saw that they did sweep rewards a few days ago so it's not clear exactly what their involvement still is but there are two small mining pools that are actively sweeping rewards

Tim Beiko: and another i guess thing that's worth mentioning is the gas limit is still 30 million right um yeah so so yeah it's it's

not currently being pushed upwards um but obviously that could that could change

is anyone from aragon on the call

Andrew Ashikhmin: um yeah it's me andrew well i i think our position is the same as uh before that we are not in favor of this eep but if like the majority decides that we are going through with this heap then we are not going to fight uh and we are not going to die on that hill

oh hensgaard yeah another question that would be is like if we were to move forward with this eap with the plan b to basically have it ready for the feature fork after the merge or with the plan b to basically bundle up the merge with basically as like the one exception to the rule of not having features as part of the merge just so in case we needed earlier it would already be implemented and ready for like a short notice emergency fork i mean again with understanding that you probably wouldn't do that unless it would start being a problem

Lightclient: i think the question is more are we trying to put it in shanghai or are we trying to do a soft fort before shanghai

Alex Beregszaszi: right and knowing we also need to update

upgrade uh in december because of the difficulty bomb right um yeah um marius you have your hand up

Marius van der Wijden: yeah i would i would oppose moving this into the into shanghai or like the next fork or the just because i think we should really keep the fork uh the the the fork is as clean as possible and if we were to include an erp it has to be like a hard consensus critical eap and i don't think that this eap is [Applause]

[Music] is security critical enough to do that so i'm i'm in favor of the eap but i don't i i think i would want to have the fork in november be as small as possible and if we were to need something that it would need to be security critical at this point and not right something that may be uh introduced in the future or something

maybe

Tim Beiko: i guess on that note like it might be helpful to understand from client devs like how how much work would it be to activate this as a soft fork so say that you know two weeks from now we have a call and the block limit is up to you know 40

million because either because of miners moving it up or egl moving it up or whatever other reason and and and it's felt that that's unsafe um how given this is like a minimal change how quickly can you know this be deployed is it a matter of like weeks

Martin Holst Swende: um so how do you mean deploying it

doesn't work really because the soft fork is a minority fork and it becomes um bad yeah

Alex Beregszaszi: you still need to coordinate and get everyone to upgrade especially if

it's if if you picked a hundred million and you know we were nowhere near it maybe you could argue doing a soft work and it just like takes time for it to ripple out but i yeah you still need to coordinate like it's a hard fork in my opinion

Lightclient: the only benefit is i don't think you have to coordinate all of the user clients it's more of the hashing power right

well

Alex Beregszaszi: the user clients are the the the power against the hashing power you know software

yeah

Dankrad Feist: the hashing power might not want the fork so you need the users to upgrade to enforce it

yeah

Alex Beregszaszi: like users exchanges etc yeah and i guess so given that and given that

basically you know we need to have a fork we have the fork in november then we have the merge um is this something that would be easy to like how how much lead time would we need to add this to the november fork if we wanted to right like is this something basically is this something that we'll need to deploy across all of the

test nets

Martin Holst Swende: um yeah it's pretty trivial to change yeah i guess that was what you were getting at

and yeah yeah this is the simple thing yeah because in that case can we and basically kind of following off uh

marius's

Tim Beiko: comments around you know keeping the the merge as lean as possible is this something that we can have a spec for that's kind of ready to implement and if you know we see an issue we can combine it with either basically the november fork or the merge

Mikhail Kalinin: um yeah yeah we can have it in the back pocket as a if if we have to and not otherwise uh schedule it as part of the shanghai that's possible

Alex Beregszaszi: i do want to mention and i apologize this is actually in the in the spec there but i i think it's

implied to me that it wasn't because software um if the gas limit uh on mainnet is already above the target that we'd want to select that you would actually need some sort of hard fork to discreetly uh change it to that to that point is that already

covering the eip i apologize for this it's not this is the main technical questions okay sure so that we could also make the

Dankrad Feist: soft fork so that it only accepts downwards when they're sure yeah when the limit is currently above so that would be

assault there's this additional importance yeah i guess

Tim Beiko: but yeah i do think that would be worth specking kind of in advance

Alex Beregszaszi: yeah i mean if it's a react if we want to keep in

our back pocket as a reaction to an attack then we we need to have what the reaction is because we have to assume that it's going to be above our target already

yes

Tim Beiko: so i guess does that generally make sense to everyone as a next step not kind of you know include this in any upgrade right now spec out what the transition mechanism would look like to adjust the downward um and yeah have this in case we need it either in november or around the merge

Lightclient: i didn't quite understand the exact argument against bundling this in shanghai

Alex Beregszaszi: i think there's not a lot of consensus

i think people feel a bit mixed about it

so as i guess yeah

Tim Beiko: as i understand it there is uh you know wanting to keep the shanghai you know lean um wanting like i guess some chord ads obviously being opposed to it and um needing to come up with an actual value for it which i guess we could default to 30 million um but yeah those seem to be like the three

Lightclient: my view is there's not never really a good time exactly to do some of these things and

if we don't do it in shanghai it's already simple change there's not anything in shanghai already we're not gonna do it during the merge or likely not going to do it after the merge because there's a lot of other things to do and so then it's going to be sitting around for a while and the attack factor isn't going away it's not clear how important is for the security of the chain but from my point of view it seems like shanghai is a good time to do it

Tim Beiko: right um yeah i guess

one thing i i don't know like i know there's also other kind of eips on the agenda today that people wanted to discuss for shanghai and yeah i it does kind of feel like we had this consensus earlier to only focus on the merge at the verities until we have devnets up for the merge um and and you know we're far enough in the implementations and then kind of make decisions around you know what we do in in november based on on how much bandwidth we have um yeah so i think that i don't the the big concern i have is that um

it kind of sets a precedent where we you know move away from just being focused on the merge to starting to work on this and potentially other things um when we don't yet have the merge you know devnets set up and we don't have a good feel for like how much work is left to do um on that yeah i don't know if what other client teams or developers yeah what are your thoughts

Mikhail Kalinin: yeah i kind of agree i i must want to focus on the merge now and not

have as much other features

i don't want to think about and i do think i don't the ex from what i'm getting

Tim Beiko: the exception to that would be if we do see you know the gas limit being raised to like levels we consider unsafe on main net having this already specked out you know like it would basically increase the um the urgency that we need this with and having it already specced out would be valuable um but assuming the kind of urgency for it stays the same it seems like it it just might be better to focus on the merge exclusively until um until we're at least farther along with the implementation of it

the

Micah Zoltu: this it feels like if we want to go down that path we then need to get come to some sort of agreement on what a dangerous level is i believe there are some core devs who believe 30 million is a dangerous level already due to some known eos vectors against certain clients um like is 31 million safe 39 40 45 70 like like if we're going to say if right people range of increase in dangerous levels then we will do an emergency fork that means we need to define in advance i believe what an emergency or what the danger bull is and so we still have to solve that part of the problem even if we go down this path

unless we're just saying if the miners raise it above 30 million then we emergency fork

yeah i i don't know yeah

Tim Beiko: it seems to me like that's kind of the i don't know implicit consensus already where like we have this limit and we sort of agreed to it around um around uh london um yeah so if it went like you know significantly above that but yeah i'm curious what what others think

uh yeah i don't think we necessarily mean if our stance is

if this gives us problems then we might have to roll up with e i don't think we need to try and extract what is if we have it we will be able to say yeah this is this is not good this is that but then i'm thinking most from the last perspective [Music] [Music]

Tim Beiko: your mic i think yeah was was not great uh martin i think what i got was that we can't really define like a specific number now that if this becomes a problem like in the future we can we we can have a fork for it but i don't know if yeah if you want to maybe fix your mic it was a bit uh low there

okay is it a difference yeah this is clearer

Mikhail Kalinin: oh sorry um well from a denial of service perspective um i don't think we need to pre-define what would be a problem or how a problem would look like because

we would notice if we become better by denial of service tax but from a state growth perspective if that is the concern um then i'm not sure yeah exactly that how to define what are dangerous levels of state growth and what are okay levels of state growth

i have no idea uh asgar

Ansgar Dietrichs: yeah i'd personally be in favor of um at least stating clearly or trying to come to an agreement clearly that we would kind of like reconsider

participation in egl um to raise the gas limit kind of illegitimate and like even if we wouldn't immediately act right because there's definitely some room above 30 million where it wouldn't immediately become problematic in any sense but just because this is like a slip slippery slope situation where maybe 32 million is still okay for state growth and maybe 33 years but maybe 34 isn't or something right and like just because if we signal ambivalence i think a lot of miners will be much more interested in the future to kind of be involved there and i think i think at least basically stating very clearly that we would very much expect them to not participate and not raise raise at about 30 million and if they do we basically will likely do something about

it even if like there's probably some room where if it's only a little bit we might just not bother to to like to look into it or something but but i feel like if we if we basically know that there's some some room before we go back then that does implicitly just like make it an endorsement i think in a sense so i think that's the interest

Tim Beiko: i'm fine plus wanting that i don't know about others like i don't want to speak on behalf of everyone

Lightclient: i'm fine moving on to the next things in the call i'm still

of the mindset that i would like to see it in shanghai but i understand it seems like that's the minority view

Tim Beiko: any other thoughts okay um of course so moving on um alex had two eips um that uh he wanted to discuss one is eap 38 55 which is that push zero instruction and then the other one is eip 3680

limit meter and init code alex you want to give a quick overview of them

Alex Beregszaszi: um yeah yeah i will given the word you have to put zero and the pavel about the unit code so the init the pus zero is um it's a very simple one it just introduces a new instruction which which is the constant zero onto the stack um and this is um specified in a way that it can actually be implemented um in the same place where the rest of the pushes are implemented um because um most of the evms implemented such that um

they just have the starting um of code and and the current top code and they just subtract it so they know how many bytes to read in case of put zero they don't need to read anything um so that's on the technical side and and then regarding the demotivation um i think the eip does a pretty good job explaining the motivation and i will try to replicate it here but probably i won't be as good as you know what we put into writing but basically there are a lot of cases uh where someone needs to push zero into the stack a good example is calls since return data has been introduced

quite a few years ago many of the calls would just end up with at least two zeros at the very end which would be the the pointer and size for the return memory because people are not using that anymore they'd rather use the explicit return data of code to retrieve the data so that's one good example to see where the zeros are used but there are many more cases and the the problem we have seen so we we have been motivated by looking at actual byte code on the network as well as um talking to solidity and and some challenges they face in this regard so basically pushing a zero can be done

at least um it can be done in many different ways one one way is just with the push instruction which means um that is two bytes and it costs three gas um but one can can also use a dupe if in case it was already on the stack that also caused free gas and these are like the the clean and nice ways to do it but people are always looking at to save gas so there are certain other instructions which in certain cases can return zero so one example is uh return data size in case there has been no return data it would be zero call this call data size is the same and plenty of others are listed in the ip so in many cases contracts and and people start to use

these just in order to save gas because some of these only cost two gas at run time and the only one byte and so they're cheaper to deploy and the one problem we have seen with this is this kind of puts us in a position that certain changes would be harder to do one example was the transaction packages which would change the behavior of return data size so that's one reason uh why why this um is this optimization is like a bad direction for for many people to go and another reason is um is what what's happening in solidity the team is looking for i like that the need code generator to to have like a nice way to to push like

a known uh unknown value in the cheapest possible way and they don't really want to um go to the extent to to try to use these other instructions and then lastly we also did an analysis on how much gas has been wasted on ontis and we only looked at all the bytecode deployed and how many push one zero uh instructions they had so which is like the sixty zero zero in hex and according to that it seems that um i think like 60 billion gas let me just check it quickly yeah 68 billion gas has been wasted so

far on deploying such code so that's the long motivation

Tim Beiko: that's a lot of gas um does anyone have thoughts comments on this

Martin Holst Swende: cute deep i don't think it's like i mean like a lot of these that touches something about the evm and it's nice and not terribly difficult to implement but neither is it

screamingly important so yeah i'm kind of in favor of it but i'm not yeah i'm not i'm not widely in favor i think that's something lukewarm

right

Lightclient: i feel like this is hard because there's lots of small changes that slowly improve the evm and none of them are necessary screaming this needs to immediately go in and so how do we how do we like you know have a at a higher level drive the protocol to improving evm

Tim Beiko: right i think this is you know kind of the higher level conversation where we have these things like say the merge which is obviously very important and you know after the merge uh there's going to be other like kind of pretty important things to do in the protocol um and you know i i it does feel like we have like a pretty strong consensus about not doing any any changes before the merge but um yeah i i think not necessarily today but we need to figure out how do we keep making these improvements to the evm and you know this is not the only one there's uh you know alex has proposed eip 3540 which was very popular there's been 3074

which also had like a lot of community support

um yeah yeah

Martin Holst Swende: but in the end i mean i'm i'm in favor of it and i wouldn't mind including this in a future work because it's so easy to implement and easy to test knows i mean there are no corner cases to to screw up on

basically yeah um your comment was just intuitively the margin

Dankrad Feist: the marginal value of this field's very low like i am really surprised somehow like just reserving even one op code for this seems uh seems a lot

just to save one

bite uh yes

Andrew Ashikhmin: so from my point of view i'm in favor of this deep i have a suggestion maybe when we can create um uh tentatively uh placeholder for uh hot fork after the merge so and we can tentatively approve eeps that can go into the next postmatch uh fork

what do you think

Tim Beiko: right i think that generally makes sense it feels like it's maybe a bit early for that just because we're again like at the very beginning of implementing the merge

um but i don't know yeah i i do agree that like when when we're we're gonna start you know having the merge implemented it makes sense to look at what's after and we already have like a pretty long list of proposals um you know i mentioned a couple and they're all i've like purposefully left them all open in the ethereum pm repo so we have like a pretty long list of ones that um basically all asked for shanghai and i think we have consensus that like assuming you know what we the fork in november to move back the difficulty bomb is called shanghai um it seems like we don't want to add any other features to that but uh we have a lot of features that like are valuable that we want to

do after the merge um yeah i i'm just not sure what's like the right time to start discussing that it feels like it's probably a bit early but we probably don't want to uh to wait super long either um i guess uh alex to give a quick summary because you dropped off it seems like people are like you know weekly in favor of the proposal um it seems like we don't want to do it before the merge and it seems like there's also a desire to start thinking more deeply about what

we want to do after the merge given this and all the other proposals that are pending um else on the cip okay um the next one then was

eip 3860

Paweł Bylica: uh hi yeah i powered here i i should take care of this one um so uh so this ap mostly limits uh add some

limits to the init code size and additional cost to it and just like quick background before evm can execute any code it needs to do drumless analysis of of the code and this cost of of this analysis is doesn't it's not directly reflected in in any in anywhere um and this is uh partly limited by by two factors um first one the the call or create cost is quite high so the kind of uh limits limit the attack vector and also deployed code has size limit

so analysis of the deployed code is at least capped by the bytes limit and for init code uh there's no limit so this is unbounded and the sizes can be in in megabytes in in practice i mean in like attacking uh attacking uh scenarios um so previously there was like a previous version of this this concept eip at 2677 which only uh introduces the the size limit for init code and uh at some point we realized that uh currently in create two days this is the

precedence for for charging additional gas for init code size which is related to the the requirement of hashing the unit code and we want to uh include the similar uh similar mechanism for image code in general um so this eap proposes charging 2 to gas per unit code word size uh for reference create to already charge you six gas for that um so that would be increased to eight and for create uh like regular create uh the cost should be two and the costs were

were taken from from the performance of of uh current graph implementation of the the jump this analysis it's uh in our opinion it's quite quite low um so um yeah that's that's mostly the the description of the

ap

Tim Beiko: thanks um oh martin

oh um yes so uh yeah i'm

Martin Holst Swende: i'm one of the

co-authors so always got in favor but what i wanted to add was i've been basically wanting to have something like this for a number of years um that's why i wrote the limitation of unit code earlier that one is a bit of a hack and i think it's it's not great and this is more rigorous it actually adds a linear cost which yeah which is proper because it is i think it is currently a denial of service detector against ethereum which we should fix and we should have fixed

it a couple years ago but yeah we're here now that's it

Tim Beiko: thanks for sharing um i'm curious anyone else have thoughts on this

well it

Diederik Loerakker: might actually relate to the merge where in the merge we have this consensus type to describe a transaction which has a maximum size so i suppose that you just want these kind of bounds on transactions as well as in its code in internal transactions and basically everywhere have like a proper

bond

Tim Beiko: right so

i guess i don't know martin and paolo are you proposing this should be coupled with the merge

just uh so i yeah i just first

Paweł Bylica: i want to confirm it's like i i don't know the other thing mentioned but i think it should work more or less the same so there might be some coordination if that's required it's also the ap also applies uh the cup on the transaction if i recall correctly and for internal calls um uh yeah and in terms of when it should happen i actually don't have strong opinions about that i don't think it's my job to decide this but i think i will leave to others

Tim Beiko: um yeah does anyone else have thoughts on this i guess just because oh marius i see you're off mute did you want to add

something yeah

Marius van der Wijden: yeah um probably a bit unfair because i'm also in the guest team but i would also like to have this in as soon as possible um one thing we might need to look at is the increase in gas cost to 2 [Music] gas i know that some some clients are way worse in their jump test analysis so it might make sense to increase the

uh the gas cost even more but i think like the limitation of init code size is a no brainer for me i think that should go in either way and the gas cost increase [Music] should go

into

Tim Beiko: so i guess it it does seem like i don't know the get team given i guess martin is an author and and the authors are like most familiar with this does it make sense to just kind of give everybody two weeks to familiarize themselves with this and see what i guess all the client team's thoughts are about including this alongside the merge um

i did like the idea of like no having your president that we don't accept something into an upgrade on the same call it's proposed just to make sure people have time um yeah exec you have your head up

Alex Beregszaszi: i was wondering why why should this uh go in with the merchant and maybe not before so like in shanghai just to reduce the scope of the merge

Tim Beiko: oh good point um i suspect i guess one reason i can think of and plea please let me know um if if this is wrong um is if uh if we include this in the merge we're gonna have test nets for the merge regardless

if shanghai is just a difficulty bomb pushback uh we don't need to deploy that across all the test nets so that's one reason i can think of but um yeah i you know there might be others and yeah i guess there's a comment by a light client um about like adding 3680 is bigger than obviously the two other eips we discussed um and it seems i guess from what i'm getting is like the get team feels there's like this kind of security risk and proto-mentioned there might be just a better um

i guess interaction with how the beacon chain is already set up um yeah so that seems to be the rationale

Lightclient: i guess my understanding of the pushback against the other two simpler heaps is that if we wanted to have shanghai not have any features the um the initial energy required to have other features in the fork was great enough to not include these like relatively simple eeps but if people want to do 30 uh 3860 then there has to be effort put into building out the tests then it seems like the marginal cost of also adding one or two of these other eeps is

incredibly small because the decision has already been made to have features into the fork is that a misunderstanding

Tim Beiko: but are you are you referring to shanghai

Lightclient: uh shanghai or the merge right i am personally uh fairly opposed to including anything in the merge that doesn't need to absolutely go in but i'm specifically curious

question hi yeah what am i understanding again sorry go ahead maris

Marius van der Wijden: i would also be opposed to putting this in the merge i i was thinking about shanghai for for for this

okay

Tim Beiko: got it sorry so i got that wrong um i do think in that case yeah your argument is probably

um good uh like science we're like um yeah it if we are gonna set up infrastructure for shanghai with this then it basically becomes a proper feature fork and we need testing and we need to deploy across the test nets and whatnot and that's um yeah that's like a much bigger overhead

Lightclient: is that other people's understanding

uh yeah i guess oh alex

but

Alex Beregszaszi: are you saying that for the difficulty bomb you wouldn't even set up a test net just launch it as it is

the difficulty bomb update

Tim Beiko: i think that's what we did in the past but i i might be wrong there but i think from your glacier we didn't set up a test net right because none of the test nets have difficulty bombs uh so we obviously we would had we would add reference tests but i don't think we would spin up a

test right or rather yeah

Martin Holst Swende: they don't have proof of work

so yeah

Tim Beiko: yeah so i think this is kind of the big the big difference is if we just push

back the difficulty bomb it's something we can only release for mainnet and literally not have an upgrade on on test nets um and then if we do have anything else um we need to be on the test nets and that also implies that kind of the work has to be done much sooner because say we wanted to fork mainnet mid-november with the difficulty mom um that means that like at least a month before ideally we fork the test nets so that's like mid-october um and that basically means you want releases out you would want releases out for clients in like two weeks um like early october um and that just seems kind of unrealistic

time wise um yeah so i'm not sure i don't know i i i struggled to see how we would put anything in shanghai at this point which is not uh which has to go through a full test net deployment um and one thing i can do in the next two weeks is i can just double check the difficulty bomb calculations and whatnot um you know to see if anything has changed but as i understand it it's supposed to go off you know early december um and i think no one wanted to fork like around uh the holidays so it's like yeah as i understand it today kind of the latest we could have a main net upgrade

is december that means like november is the latest we're done with with test nets and that means on october we basically need fully tested releases out and that's like two weeks from now

Lightclient: are people strongly in favor of trying to

put 30 80 uh 3860 in shanghai yeah

just for yeah i would be strongly in favor of including this i would be curious to hear from visa and other mind what they feel about the unit code and it costs that so we never mind recently optimize

Łukasz Rozmej: it a bit uh looking at the guest code so um i would say we are in case of like vulnerabilities more or less at the same level of course there's some maybe run time overhead or something but uh generally um i agree that this probably needs to be done but i don't have that

i wasn't the one doing the analysis so i don't have that strong opinion

so we are right now running

Tim Beiko: any other thoughts

i

Marius van der Wijden: i would i would say it's crucially important to do this and not only because of the current clients but also because of uh some other clients

so

Lightclient: what does the timeline look like to make this happen than if we want to do this

in shanghai

i think we would need like we're already at time today

Tim Beiko: i think we would need to be like 100 in agreement on the next call and that's like the absolute latest we could do it um i can kind of i i can look into you know into what like with the difficulty bomb and and whatnot what it would look like um but yeah that's my understanding is like we can't really go past next call to make a decision on that because then it'll be mid-october um and that just seems way too late

Lightclient: is it possible to make a decision now

or do we really want to wait or you know make a decision in one week rather than two

Marius van der Wijden: um i don't think we should make a decision now i think that's too early and said president okay um i think every client team that wants it um that's in favor of it should implement it until next week and uh then maybe have some discussions over or call the oral code of channel or something i don't really want to have another record of meeting next week because i think it's also bad if we have them every week

Tim Beiko: yeah and i think the fact that these proposals are also kind of new um i'd be i'm like less inclined to have like an off schedule meeting where we just put them in and you know uh yeah i i do think like people watch these calls they read the notes the notes take a couple of days to come out so i yeah i i think there's value in like discussing it on the discord over the next two weeks but uh and yeah teams who think this is really important having at least a preliminary implementation and um yeah we can we can make a call on on the next awkward devs um we're okay oh sorry yeah oh i was just agreeing okay yeah we're

already at time um i guess um a couple just announcements uh before we wrap up uh get put out a postmortem on the split that happened uh when they they basically announced that there was a vulnerability that they'd patch uh this is linked in the alcohol devs agenda you can read it there um there's two other or i guess there's three other kind of eips uh we didn't have time to discuss um that are not urgent um if people want to have a look async those are also linked in the agenda um yeah that's pretty much it so thanks everyone

Diederik Loerakker: thanks

Łukasz Rozmej: thank you thanks

Danny Ryan: thanks bye

[Music] [Music] so

[Music] so [Music] [Music]

[Applause] [Music] so

[Music] [Music] so [Music] [Music]

[Music] [Music] [Music] so

[Music] [Music] [Music]

so [Music] foreign

[Music]

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