All Core Devs - Execution #129

All Core Devs - Execution · 7 Jan 2022 · 1:35:48

Ethereum core developers note that Kintsugi went well over the holidays, discuss a proposal to include EIP-1153 in Shanghai and Shanghai planning, and agree that Danny Ryan will make a minor spec update.

Speakers

Topics

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

Transcript

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

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

[Music] [Music] so [Music]

[Music] [Music]

[Music] [Music] [Music] [Music]

[Music] [Music] this [Music]

[Music] [Music] [Music] [Music]

[Music] [Music]

[Music]

Tim Beiko: and we are live uh hi everyone welcome to awkward devs number 129 um first one of the new year post the agenda in the chat right here um basically three things to cover today first uh updates about the merge and uh

kenzugi uh there's the issue that uh we found and uh marist recently wrote about um then uh moody is here to talk about eip 1153 um and then the last thing is uh now that you know we're starting to see kind of the final stages of the merge uh there is a bunch of things in the backlog for shanghai and it's probably worth starting to have some conversations about uh how we want to think about that what we want to prioritize and what not um i guess yeah to start on the the merge stuff uh maybe it makes sense i i don't marius

because you had the the tweets today uh do you want to give us kind of a quick recap of you know what you saw in kinsuki over the holidays and then the issue that came up today

Marius van der Wijden: sure can you guys see me on this mic yeah probably um so uh over the holidays um kenzugi went pretty well uh no major issues um i created a a bad block generator so note that like generates bad blocks uh with like different different strategies and one of the strategies is to replace

fields in in the block with other fields and today or maybe yesterday this actually hit a bug so what the fuzzer did was replace the the block hash field in the in in in the execute payload parameters uh with the parent hash and so implementations should uh get all the get all the fields from the from the from the execute payload parameters construct the block and verify that the

hash of this block is equal to uh the block hash that is passed passed in um with the with the para with the with the execute payload um the problem here was that because um the past uh payload the past uh the past block hash was a valid block hash from the previous payload some clients had some caching in place particularly nethermine had had some caching in place just looked up the the the block hash

and returned valid even though the the block itself was not valid regarding this this rule and so [Music] uh yeah that will there was a big problem that that created a fork between uh geth and nederman bisu so another man bisou both had this issue that they didn't didn't check didn't correctly check that it's fixed on another mind already and then there was also a a fork between

lighthouse and teku on the guest site so the geth chain went on for a bit and it split and um [Music] i think we currently think that the issue is uh similar that there's some kind of caching in in tikku going on um that was not really uh yeah that was not not working properly if you provide the block hash of a a valid block um with with another payload and yeah so it's it's really nice that the fuzzer actually found this

but it means that right now kinsugi is not finalizing but we hope to update the notes soon to have it finalize again

when did it last finalize um [Music]

Danny Ryan: 129 epochs ago

a hundred and twenty ninety bucks ago thirteen thirteen point seven hours ago got it is there a a

Tim Beiko: case where like i guess we can't fix kentucky i assume like as soon as we have a fix on on basu and nethermine deployed uh as well as the the lighthouse deku one then we'll we'll

just finalize again and we can keep using the

networks that correct

Danny Ryan: it's probably worth going through the exercise at least to some amount of our effort to get it to

finalize right just because uh sometimes putting things back together is harder than we expect right then like this is going to happen on main net eventually um so like we're not going to give up maintenance hopefully not

Vitalik Buterin: right well okay we have well we need to be prepared for the chance that will happen on

midnight yeah yeah

Tim Beiko: right yeah great work on the fuzzer mirrors uh very cool that we got this

on

the devnet thanks perry

Tim Beiko: i think i saw you come off mute do you want to add something if you're speaking we can't hear you

Parithosh Jayanthi: sorry do you hear me now

yeah

Parithosh Jayanthi: just for argument's sake the netherland and bazoo fix won't give us enough participation um such that we'd finalize we need the teku fix in because takeover comes from about 36 percent so as long as taco is fixed then we reached finality

but yeah

Tim Beiko: and that's okay i mean even seeing the other two join back and seeing us at 60 you know for the next day is also like a that's a reasonable uh state for the network to be in for us to

observe

Parithosh Jayanthi: definitely and we still need to figure out why tekku off again because right now we see three forks um most of the analysis so far has done has been done for the first

four

Tim Beiko: thanks for sharing um aside from basically this issue was there anything else that anyone wanted to discuss about

kinsugi

Danny Ryan: i just want to say there are probably there are one to four test cases that should come out of this just they must

so i'm um yeah go ahead so yeah i i

Danny Ryan: i spoke with mikhail a couple days ago i was off during most of december so i i'm playing a bit of ketchup this week but um the feeling was there are a few things coming in the pipeline on the execution api i think there's a refinement on

what returning syncing means um in in the execute and the for choice and i think there's maybe like a one naming change and a couple things like that so the the goal is to get this done very quickly and get get an update out and likely to once that comes out on the order of three four weeks do a do a test that reboot for a public test net get things in order then from there decide you know what is the timeline unfortunately their test nuts and and stuff um so there is a minor spec update in the pipeline um

and so i would say we continue to play with kingsugi continue breaking be continuing to resolve kenzugi um until that comes out i think simultaneously uh perry and others are looking to shadow fort gourley and to be able to do that on an automated basis the nice thing there is that we can on a more continuous effort actually test the transition um so kind of two two efforts there on like test nets would be the the path continual path on public test nets and then a path to kind of continuously test the transition process which obviously could give us issues and has done

complexities

Tim Beiko: makes sense and i think the only like two other bits that that are probably like uh kind of outstanding uh there's all the stuff around optimistic sync but that seems in progress uh the other one

Danny Ryan: right and i i did catch up with michael allen paul about that one and there is um there's a spec for optimistic think um it has been implemented or is being implemented by clients and is generally agreed upon as some of the the corner cases that they were concerned about um are resolved here but there's plenty of testing to do on that so

Tim Beiko: and then the last bit is the auth between the consensus

and execution layer so that's something we talked about uh a couple times but i don't think have settled on a specular or a standard for

Danny Ryan: um and i think mikhail in our conversation was hoping that uh martin twende he had said he might jump in on that i hope martin's here um so i think maybe you uh mikhail and i should think on that in the next early next week uh so that we can get that into this final update

yeah and martin yeah sorry i'm in drag my feet about that yeah we should have a discussion about it does it make sense

and i think

Tim Beiko: i think that's the last kind of feature or big thing aside from all the testing that that um that was still missing and if we're targeting uh another kind of long-lived test net we probably want to have this in so that we can test it as part of that

Danny Ryan: yeah that was on mciles list i had just around about it

cool

Tim Beiko: anything else about kitsugi or the merge that people feel we should we should discuss

Danny Ryan: that's all on my plate till the you know

two weeks from now i think we'll be the spec will have been released by the next one and will give us you know the new discussion on what the next segment looks like

Tim Beiko: yeah and we uh yeah we also have the the consensus there call next thursday so we can use the first bit of that to also cover anything that comes up cool um yeah thanks everyone uh it really feels like we're kind of getting there and and there's more and more uh yeah just more and more finalizations

to do

Danny Ryan: yeah awesome work on ever from everyone on kimsuki before the holidays uh it was really awesome to do that

Tim Beiko: um cool and yeah okay so we have uh

moody here uh who has been uh working on eip 1153 and he wanted to take a couple minutes to chat about it and why it can help uh lots of applications uni swap included uh on mainnet um yeah so moody do you want to take a few minutes kind of walk us through the context yeah share your thoughts

Moody Salem: yeah sounds good thank you uh hi everyone i'm moody i'm a smart contract developer at uniswap um and yeah this might be a little bit early to be discussing the cip but uh but the context is that i'm experimenting with

um some improvements to our smart contract design um and just give the full context the idea is that we want to put all the pools in a single contract and allow you to flash uh do any action across all the pools and so basically you'll be able to like mint swap burn without paying anything but the diffs at the end of the transaction um and so you're also not transferring any tokens so it's a lot more efficient um in terms of like how many slots it touches um and so there's two ways to do this as far as i can tell uh one way to like create some sort of like vm within the evm where you pass uh some

some bytecode to the singleton contract and then it executes so you're just telling it's like a custom set of operations that you can give to the singleton contract and store the diffs the balance diffs in memory but this isn't very flexible it's not very elegant the other way which i think is more elegant is that you call into the singleton contract and you acquire a lock and then you can do whatever you want and the contract just keeps track of uh what the diffs are um and at the end of the lock you just have to have net zero deltas of any tokens you owe um so this just feels a lot like easier to work with

as an integrator or developer and also we get to reuse the evms so they can make all the calls they want to like other contracts but it requires us to have some sort of like persistent memory between these like calls uh to the single spin contract like swaps and mints and burns um so for that all we have today is like storage and storage i guess as everyone here probably knows is uh has some like refund mechanism for transient storage so if you set a slot from zero to non-zero then back to zero uh then you get a refund a large refund which is the majority of the storage costs but that refund is capped uh in the latest hard fork to 28

of the total gas costs but you can't do it you can't do this efficiently if there's a lot of slots that you need for like accounting um which we do need a lot of slots um and um and yeah you also have to s load each of these slots just to know that they're zero um which they always will be in this pattern so like s load and s store don't work very well for this um it also doesn't interact very well with uh execution parallelization because you should be able to paralyze all the transactions that touch these slots because they're always zero at the start and the end of the transaction

um so there's there's some interaction there like access lists that is messy um so the proposal is that uh aip 1153 introduces these two new op codes t story and t load which operate basically exactly the same as s load nest store except uh the first t load of the slot or the the slots always start at zero um and uh at the end of the transaction the slots are never persisted so in between transactions uh there's no interaction um and uh

and yeah it's also uh has much lower gas cost because you have to load anything from from disk um or from the state tree um and and yeah i think i think this would be like a very successful pattern if there was some sort of like persistent memory between calls um and i think like these auto codes can also just be a lot more efficient than the existing storage drop codes there's also existing use cases um like uh like obviously re-entrance ceiling blocks um but that's just one slot so it's not as beneficial there um and

yeah i guess i'm interested in hearing if there's like other solutions that uh that are better than this that i can push forward because one of the big cons here is that any existing contracts that could make use of this will now need to upgrade and deploy new contracts um so yeah that's anyone has any feedback love to hear it

Tim Beiko: yeah thanks for sharing it um martin's hand is already up so we can start there

Martin Holst Swende: yep thank you um so i remember this uh proposition it's fairly old it's from 2018

and as i record so this one is basically a store which doesn't exist and then it persists across the the transaction so you have the across call frames and i know there were other variants i think there were at least one other variant of this of how temporary could women [Music] and they differ somewhat and i'm just curious if anyone recalls the other flavors of temporary storage that i like if we're considering it what which ones which variations would be on the table that's kind of my question

i guess we collectively

forgot

Tim Beiko: yeah and i guess alexa is an author on this eip and from what i skimmed on discord i think this was his kind of counter proposal to some of these variants so uh it might just be worth also asking alexa offline with the different variants where and and their

trade-offs

Micah Zoltu: where we have witnesses um for everything uh one can imagine i think uh providing as part of the witness providing just an assertion that this slot will be loaded and i guarantee

you that it will be zero at the start and i guarantee it's easier at the end so the um contract didn't actually have to do any reads so hypothetically this would allow us to also back port transient storage to legacy contracts if that was something we desire because we basically put it at the transaction layer and say the transaction can declare um you know what some storage slot is going to be at start and end and it will guarantee that it will be the same so we don't have to do the disk hits

so are you suggesting changing the semantics of a s load in the store in the cases where they coincide with the slots that have that guarantee

Micah Zoltu: yeah so basically you write a guarantee as part of the transaction and then um the evm would then say oh i already know this is not going to change and so i can treat it as transient storage even though i'm doing that in a store um i channeling my inner um aragon team the uh this will add complexity avm versus just adding new op code is much simpler so i can definitely appreciate the argument for just using the new

op code and that and

Moody Salem: that design would you not need to load the original value to see if it is what the transaction says it is

Micah Zoltu: yeah you're basically just asserting

that you know you could even just assert you know when you can imagine it this way when you submit a transaction the transaction as part of the signed transaction it says um yeah nevermind this won't work ignore me nice little break stuff yeah never mind

yeah and i was gonna say also that that scales with the that scales with the size of the storage that you end up touching like the maximum size that you end up using in [Music] in the process of executing the transaction how many transient storage you're using which we might not want that scaling in the witness um whereas if you have the t-load store then yeah

Martin Holst Swende: but for for

like the the concrete use cases would this um i'm not asking moody [Music] would you use this typically a lot of this or just like for the re-interesting log there's just one or two right um feeling that the the win in having a separate key low key store it's not that great if you're just using one of them um but if you were to need like 20 or 30 or 50 there would be a huge difference in the gas consumed

Moody Salem: yeah so so for the accounting and the example i gave i i've written a

prototype and uh it's like a minimum if you just do one swap it's like a minimum of six slots um and that one swap itself might cost 100k gas but then these 6s stores cost another 120k of which you're only gonna get uh up to like a 40k refund so uh it's it's very expensive to use storage transiently but and that's why we need this op code because otherwise it's not it's not really feasible this pattern

Micah Zoltu: yeah and back when i worked on auger um we ran into this class of problem quite a bit where

we had some piece of data that we're basically just passing from one call frame to the next and it would need to be passed you know through all of them and so your options are pass it as call data through everything and you just have to keep passing it over and over and over and over and over again like for the entire call stack if you had some sort of transient storage you could just write it to the transient storage and then the entire call stack would now have access to that so you don't have to keep incurring the um the call data cost each each frame um so just another place where this comes up where transient storage could reduce costs

so there's no call there's no call that the cross frame

Micah Zoltu: there's not

although there's a memory expansion cost

but no there's no quality to cost across frame even uh cross um contracts

Martin Holst Swende: yep even yeah i mean

okay

Micah Zoltu: well ignore me i'm apparently totally out of it today i must be misremembering

Martin Holst Swende: but yeah i mean there's still an overhead because when you access this in the next contract you have to expand the memory in order to read it so so there is an overhead just

Micah Zoltu: yeah maybe that wasn't

hold it over

Moody Salem: um so if i remember correctly i think that this eip was originally like

preceded by like the different accounting for s stores of transient slots um but i think what makes it kind of unusable is just the refund cap um so if there was no refund cap this might be workable even though you have to pay a bunch of gas up front you still have to slow the slots but um but yeah i think like i think it's worth putting these into a separate op code because we don't want them to break and they have different semantics as far as like parallelization and um yeah and like yeah

storage around a lot of stuff

Martin Holst Swende: my feeling here is that th these this is one of those eeps that a lot of us think are like fine and and it would be really nice if we had it many years ago and just a good thing but it's kind of hard for us to like put uh how important is this and how much better would the world be like for contract developers if it exists and kind of how do we prioritize this against other future changes in the ibm and i think that's probably maybe why it has not been implemented um

there just hasn't been a large enough cry from the like community of developers that we need this um and i think so what i mean technically i mean it's worth but it's it's not undoable but yeah how how important is that and i think there needs to be some kind of work done to make it um explicit how how much better would it be what kind of savings are looking at how often i know how yeah how much do people want this is there a strong developer that desires this feature

so we can like rate compare it with other features

and prioritize yeah

Vitalik Buterin: um one thing to add also is that there is a yeah like in the yep in the eip for changing gas costs for vertical trees there's a version of the proposal that um adds back the refunds in the case where the slot is uh the same at the end as a of the transaction as as it was at the beginning um so like there is an alternative that like work sort of works perfectly like it but but gets part of the benefit i guess would be interesting to compare both

with the status quo

Micah Zoltu: is that something we get as soon as we get virgo trees or is that something we'd have to add on top of vertical trees

Vitalik Buterin: um so there is um right now there's two of these proto eips one of the protoe ips only changes gas costs for reading and then there was another proto-ipa that changes the gas costs for writing which is uh that's right in my opinion we should do well and we would do eventually it's better it's more comprehensive um it kind of it puts things like storage edits and sending people eve under the same framework and that one has an extension for or

or always has a version in it for um making the gas costs um or refunding the gas when you when you reset something um so yeah it's like so basically it's it's in an extension

Moody Salem: so so with that um you still have to pay the loan costs as far as i understand

Vitalik Buterin: right you still have to pay the load costs um though like that can be shared across an entire transaction or across many operations

once

Micah Zoltu: once we have witnesses hypothetically um

the initial gas cost initial s load gas costs do we expect that's going to drop down significantly since everything's just going to witness

Vitalik Buterin: um i think it'll be about the same actually because witnesses are still a significant amount of data like the the gas costs have been increased like over the last like a few times over the last five years five years like part of that is the dos issue but part of that also is because of the witness sizes issues um the ones actually the one thing that will happen is actually this might even be important um is that the gas costs for accessing adjacent uh storage slots will uh cut decrease to i think the cur this the current suggestions are either

200 or 150 and so like you'll be able to pay the 2000 once and you'll have a pretty big chunk of the storage that you can use for all the transient stuff you want

um and

Tim Beiko: you've had your hand up for

a while

Ansgar Dietrichs: yeah i just wanted to add to this that i i would also say that basically the most important question for this erp would be first i think to answer like is this something we can make work for the existing storage mechanism um say with something like like vocal trees or is it some something that that will be an actual feature edition because if it's a feature edition which i can't

earp at least this i think we should really kind of take the time to go through all the alternatives um as we were talking about earlier i like that they were in the past were several alternatives and kind of really get this fight if it's something we completely add new because for me for example it's to me it seems like if it's completely transient um it would make more sense to have it be like a new type of memory rather than new type of storage because the whole kind of key value store stores kind of design of of the storage system is is really just designed that way to to be optimized for like databases and trees and whatever and none of this really is relevant for transients uh um kind of

storage so it seems like it would make more sense to have that just be like a continuous new type of memory block that's shared between contact unifications within the same protection so they're saying like i feel like we should really for this erp it should be really important to figure out can we just basically modify the existing storage mechanism to make this cheaper again or if it's a new thing really get the design for the new feature right and take the time for it

Martin Holst Swende: yeah and that's actually um so in this eve by alexey he does reference the point number seven uh shared memory and it says board from an early draft of a similar eve by holloman so i think i did write the similar iphones which

did not um so the difference was that it used to share memory share the memory which could be shared by different contracts so this you you could have a temporary storage and you can come back later in another call frame back to your same contract you can read what you wrote earlier but another variant would be to have a shared memory which you can write and then you can go executing another contract and that can read the same memory that you wrote to earlier which is another way to to yeah make life different for contractors and and there are i'm sure there are different and then we have the guests using stores with some new

variations yeah someone should really go through and figure out the different options we have

Moody Salem: so i think so it sounds like good it sounds like there's a couple follow-ups one one is like how impactful is this for like all smart contract developers um which i'm not sure what like evidence would be most convincing there like i could maybe uh get i guess some some feedback from other teams uh if that would be helpful um

and then the other one is like what other what is like the perf the ideal design for this for solving this problem and it might be memory instead of like the the key value storage design is that are those the

two

Micah Zoltu: i think for um metrics that would help evaluate even if if you have a prototype for like two versions one that has the temp uh transiting storage one that doesn't and you can then show at least four you know the next of uniswap the gas cost difference for doing the exact same overall thing is x um that alone i think provides some evidence like if you can show hey you

know it's going to cost us three times as much to build our next version of unit swap with without transient storage then that's that's meaningful um even if we don't have like a you know blanket from every app developer just having one dev developer who has done the research to show that this doesn't have a meaningful impact um when designing things would be valuable i mean the more the more data we can get the better of course

Moody Salem: uh for that particular i have written a test of a swap that uses the transient storage and a swap that just does it and the difference is like double the gas and

i guess i don't know exactly how to best share that stuff

Tim Beiko: um definitely linking it in the 8th magician's thread uh i don't know if you have uh maybe it's already there but that seems like somewhere where yeah we can just

uh yeah yeah i don't think it's

Danny Ryan: i mean writing or writing a report in there or linking it external with like not just unislop but a number of case studies that would be very compelling

okay i mean the the code is in public so oh right now yeah yeah so

Tim Beiko: uh yeah

at the very least if you can just share what you you know like shared on this call like high level like you know uh it saves about half the gas savings and and you know this is this is why that's valuable i think if there's other applications that can you know chime in similarly like if they think that it would help with another version of their application and and and provide like significant gas costs um yeah that's also great um yeah and i guess you know looking either at just like you know number of users or the amount of gas they use on mainnet or something like that like where um just to have a feeling for like how like that their scale and and the impact

they would have on the overall network would be good

Micah Zoltu: i suspect realistically the thing this the decision is likely to come down to whether or not we're going to get a solution to this for free with purple trees if we do then it seems like there's no point in spending the energy building this if vertical trees essentially solves this class of problems but if it doesn't then like martin said this is one of those things that is useful and valuable and we can probably i can imagine the core devs being convinced that it's worthwhile um so i don't know if how far away are we from knowing which vertical tree path we're going to go

down are we like years away or next next call

Vitalik Buterin: i feel like the spec for vocal trees hasn't really changed significantly for quite a while it's just like in an execution and testing

swag so yeah

why does it's not obvious to me why does vertical fees give us this for free

Vitalik Buterin: um because for the virgo tree ip includes these gas cost changes that make that like can be extended to add refunds and that make it easier to or that reduce gas costs for things like uh

getting many chunks of storage that are beside each other

Tim Beiko: and i guess that's kind of an assumption we have on the protocol dev site but like movie that's maybe also something that that can be valuable if you know like you can just say for unit swap specifically like how much you know how much better or how close does verbal tree get you to this similar gas savings that would be really good to know

Moody Salem: yeah i i think the one thing that like sparkle trees as far as i understand we'll never be able to solve is that you still have to load the original value like it's still going to impact parallelization because you don't you can't assume that

the value is going to be zero at the beginning and and gonna be thrown away at the end so it's like

the there's just like some oh

Vitalik Buterin: um i uh i posted the link in case anyone wants by the way

Moody Salem: i think there are some principle differences between what vertical trees helps with and like what this op code does like that just can't be fixed and then also like there may be refunds but like if there's the cap right but i think metallic said earlier that there wouldn't be a cap on these

Vitalik Buterin: right i think i mean there doesn't need to be a cap

yeah yeah

Moody Salem: and then one other thing go ahead one other thing with vertical trees is that if you write to a slot you can't you can't remove that from the tree as far as i understand um so like you're gonna have some additional leaf which has zero in it even though it's always gonna be zero

Micah Zoltu: if we start an end transaction at zero is that true don't do we actually write the vertical right true state if it stays zero

Vitalik Buterin: we do um well i think in the current spec like if it does if it was none before then it switches over from none to zero no but if it was your before then it

stayed which is zero to zero and there's no right

Micah Zoltu: i see so but but it does like create this kind of bloat that is unnecessary

Vitalik Buterin: so actually no though thinking out loud there might be arguments against doing refunds because if we do refunds and we do erc 4337 then there might be a possibility that gas tokens come back need to think through this more um right so even if there are no refunds um with the virgo tree gas costs the extra cost of using storage drops from being like 5 000 to being like 700 for a slot

Moody Salem: are you thinking in those first 63 slots

Vitalik Buterin: yeah exactly

Moody Salem: um that does prohibit the use of mappings for this transient storage which

which

Moody Salem: and then we and then our worst case axis like we have to make more accesses to see um i mean yeah maybe we could do mappings in that first 63 slots somehow but it's pretty it might be difficult

Vitalik Buterin: right i see what you mean the yeah the application gets uglier [Music] right i guess like the challenge with

all of this is that like it's adding yet another type of memory is a significant increase to the uh kind of total complexity of the execution layer and so if we can discover some way to get like either all of the benefits or even most of the benefits with uh tweaks to existing stuff that's something that probably should be explored first but if there isn't then maybe there isn't

Ansgar Dietrichs: so one thing that i would just want to point out because i think in general um um like one thing we could do better is all

could have just to be a little bit more kind of open in setting expectations for your piece and and in this specific case i would just say because the the kind of the the issue uh the the pm repo of course is called proposals to include the ap in shanghai um and so i would just say that right now i would probably say uh i would give this erp a 10 chance of actually ending up in shanghai um if it's because just because there's so still so much that would have to be to be done here it's like first of it's exploring the vertical direction and if it really turns out that this is just not sufficiently it doesn't get us sufficiently fine to that direction then really kind of explaining that very clearly and making sure that everyone

agrees that that's indeed the case that there's a need for something like this then really figuring out what the very best version of this looks like including having a lot of people kind of look over this and agreeing that this is the best flavor of this that we can do having everything prepared and ready and even then it kind of still depends on kind of there just being room in shanghai and so i would just basically say that like if this is really something that would be very important to try and get into some high for you then that would they think that is something that would require a lot of effort between now and even relatively soon from now uh to still have a chance um just just a bit transparent about that

Moody Salem: yeah that makes sense i agree i would

love just more like attention on it because i'm not really a client of and i feel very like out of my element trying to like figure out what is the best version of this so if anyone has any ideas to put on the thread like that would be great i feel bad i've already taken so much time in this meeting but um yeah i would i would love other ideas or other proposals to look at and [Music] just any guidance from devs i could definitely provide stuff from the smart contract side

Tim Beiko: i think i think that that makes a lot of sense and like yeah trying to again like we said

quantify the impact on the apps uh figure out the best design see the uh like pros and cons of vertical tries is probably the right next steps and um yeah the the speed and at which we do that definitely plays a big role in whether this this might make it into shanghai uh yeah right did you have one last comment on this as well

did you

say that

Tim Beiko: sorry what

did you call me i didn't hear

Tim Beiko: did you have a final comment on the eip

yeah

yeah i just uh i wanted to uh just check some my intuition about the parallelization it's it sounds to me

like not a big win because yeah you have that you know that property for the key load that it's always going to be zero but as soon as you hit your first s load like priority execution is going to serialize again am i missing something there or yeah i just want to understand how much of a value add that is versus just like a marginal one

Moody Salem: um well in the case of this like singleton design like you may not you may have two swaps on different pools that don't touch any of the same slots um but if if they're using these this like

transient storage and they are necessarily touching the same slots because they all use the same slots for accounting um so like up front you can't know whether they can be paralyzed or not even though the starting and ending value of those slots the starting value is always zero and the ending value doesn't matter so they should theoretically be able to be parallelized

okay i can look into it more cool okay

Tim Beiko: so yeah last thing on the agenda

that we had uh is quite the can of worms but basically shanghai planning um so uh andrew had had this comment like there is a lot of stuff already in the uh in the pm repo that's been proposed for shanghai um beyond all the eips that are directly in the repo there um there's also uh vertical tries which uh are kind of in a proto eip state and there's obviously also uh the beacon eth withdrawals post-merge um which which does not are not specified in an eip yet um so i guess yeah andrew you know you had a

comment about like you know we don't necessarily want to go over everything that's their proposed but uh getting your feel of what you know we want to prioritize for shanghai so i guess maybe we can start with you like did you have thoughts about approaching this or priorities or yeah

Andrew Ashikhmin: um well i think from everyone's team we are happy to work on the evm improvements um on this track from eep 3540 and 3670 3690 so so the evm object format that that will be a nice direction

um i also have a general um observation that we have like we have to two strategic directions probably the the vocal tree and limiting uh history availability um but for the and there might be some interesting interplay between the the term because for the vocal tree you probably need to move to the unhatched state as the primary format right so currently um

probably only aragon uses uh state with unhest keys as the primary format but during the given the gas reforms in the vocal tree you you probably need to move to that but it means that um things like snap sync in in gas have probably be relaxed to switch to the unhatched state and um also it but it also means that for say for that transition from uh for say guest nodes that are currently snap sync you need to be able to provide free

images um for from nodes that um have been seen from from genesis so for instance error nodes can help with that but so forth runs in from the hash state to unhealth state you need a population of nodes from genesis on the other hand if we pursue this direction with limited history availability we are actually moving away away from the possibility of genesis sync and we need to

kind of it's okay i think in the long run to to to do uh to limit history availability but probably if we do that uh we need to think carefully about uh how what are the mechanisms of of historical availability and what do we do in terms of the think that uh that the sink is based on on their unhashed state and maybe yeah so it's not uh well well thoughts through through yeah sorry about uh this but i see that this kind of interdependency between

history availability is uh sync from genesis and unhesh state for the local tree

Tim Beiko: right yeah thanks thanks for sharing i i agree it's always kind of the hardest when there's like these these big pieces of of like very applied r d works that that interplay with each other and and making sure we we kind of ship them in the right the right sequence um there's a comment in the chat from martin asking uh that he'd like to hear from vitalik about what he thinks the most important aligned things are

Vitalik Buterin: uh um hold on what's the um what are the most important and

aligned with future plans things um i feel like okay um history expiry is definitely i think a top priority um both um because it's just i mean like it's just so obviously needed for any kind of uh like any of the scalability paths that we're looking at whether it's the ap4488 or some or some version of sharding um and i saw well there is withdrawals i guess that got mentioned in the chat um i personally feel like might feel like withdrawals waiting six months is less harmful than history expiry waiting six

months given how much the scalability hinges on it um but i guess there's the question of like withdrawals are more a consensus layer thing and uh i mean history expiry is more of an execution layer thing so or is there even a trade-off between them given that totally different people will be working on them um other stuff oh um there is there is verkle tree prep um so that verbal tree prep i guess includes some of the gas cost changes and uh and a self-destruct fan those are probably the top that like i

yeah that i think are like important for a few well there's shorting stuff as well but sharding stuff is still kind of under r d and so am in its own track like that stuff seems the most important for future plans um okay yes yes so the withdrawals might may not be that minimal for el um i don't know i i stands by my comments that was sure all's waiting for six months less is less bad than the history expiry waiting another six months though i know what that's

Danny Ryan: right but history expiry we can and probably should be paralyzing right now because that's related to a hard fork

Vitalik Buterin: i agree yeah like i think a lot of this stuff actually like can be paralyzed quite a bit

what are some

Micah Zoltu: i mean so regarding parallelization that is true only if you're all the client teams have different sets of people who would be working on hard fork stuff versus um history

Danny Ryan: right i mean parallel i think they're poor because not a lot of it's also like design and interfacing with community and like setting expectations and stuff there are technical things to do certainly but for sure there are like softer things that should be paralyzed today

Tim Beiko: yeah it's almost like for 444 the the consensus change is like the final thing you actually do right you want the

network to be in a spot where we can operate without history being fetched over the peer-to-peer layer and there are kind of options available and then we just shut it off at the peer-to-peer day or once you know that that's been done but yes most of the work for that one can happen outside of consensus changes and there are people working on it uh so it is already being paralyzed

Vitalik Buterin: um on the vertical stuff um i think um like it's okay to do like it's okay to if virgo trees get delayed more more than like say yeah four four four four and scaling critical

stuff gets delayed but we do need to be proactive and early on it because there are a couple of uh backwards compatibility breaking things in there one of them is the gas cost for reading code and the other is the self-destruct ban um so like i just uh want those things to you know not be a yes uh one of those surprises where everyone suddenly freaks out about the need for half for um half a year of research two months before we were hoping it would get in um um the i there i know there has been some proactive work on it it would just be nice if there is a more proactive

um work on it um oh i see the the question of uh gas cost changes before vertical right right okay so this was a yeah like basically the there was a proposal made to have gas cost changes needed for virgo trees go in before the vertical hard fork i guess it's not strictly important for that um for that to happen like like it's definitely totally fine for everything to happen at the same time as well i'm actually i think it might have been dank red who suggested that multi-step road map so he would be yeah better better to give the

rationale for the forgiving gas cost

Dankrad Feist: well my main reason is like um that's so the reason why i wanted to suggest that is that i think like every day that you don't like you you know what the that what the future of gas schedule should roughly look like and every day that is further away from that um like you get more uh contracts that rely on current assumptions deployed so that's my main reasoning for it but i agree so like also from my viewpoint when i looked at this further i actually think many things are not that far from our desired gas schedule so my preference would actually be to

focus on the self-destruct like that's something that uh i think we should get out of the way earlier

one thing and i

Vitalik Buterin: i do think that like the one big remaining difference between current gas costs and vertical gas costs is the per chunk access of code right and like yes there are like there are some exceptional cases where the ipa would get more than a factor of five increase right

Dankrad Feist: yes yeah yeah i know but that that one is also very hard to just do on its own like if you only do that right none of the things that make it cheaper it will be very hard to get that accepted i think yeah

Vitalik Buterin: right agree that's fair like it would just add a lot of transition complexity and we might as well just like move to the entire to the right event schema um all

at the same time

um and scared you have your hand up i know and there's been a ton of comments in the chats in barrels so yeah so i'll make sure

Ansgar Dietrichs: yeah i was just um briefly i would prefer to ask um in general like do we think like would we prefer a shanghai that is slimmer but comes earlier um or i mean i think we'll agree that history kind of um uh like the 444 uh yeah but um it's important but that again that doesn't need hard forks so so we can just do that whenever um but like for the hard fork or the changes in the hard fork do

we prefer a slimmer hard fork that can arrive sooner or do we we basically want to have a hard fork that has at least as many of the earpieces we can recently fit into a hard fork and maybe takes a couple months longer to to arrive because i think that's really

do i mean

Vitalik Buterin: do we need to do we need to decide now is the other question like might we have more information in three months

Tim Beiko: but i think there's a i think there's probably a trade-off between do we include stuff that's mostly finalized and like you know pretty straightforward um or do we include things that are like more fundamental changes to how the

network operates um because we we do have there was this comment earlier in the chat about like the last feature fork we had was berlin and and we do have a lot of eips that are basically ready um that are you know you could say like standard eips that we kind of know how to do um and then we have things obviously like vertical trees uh historic expiry those are like much bigger overhauls um so i i don't know if it's a question of like how many eips you put in but maybe uh there's an argument for like putting this stuff that's like pretty well specified pretty minor um and for example yes there's bls that's

there um there's a ton of other ones that have been pending for over a year um yeah so i i think there can be an argument and then you know in parallel obviously we have we have people working on on history expiry we have people working on vertical trees but it's like maybe it's it's simplest to just not not consider those efforts for shanghai and and just try to to get stuff that's pretty well specified out and not like a massive uh kind of change um include and i guess yeah i was gonna say sorry the one thing i think might actually be like a a non-trivial change is the mechanism by which we credit beacon chain withdrawals

into the evm there's nothing like this that exists but it's it's not that it's like super complicated but it's it's it's very new and that

alone

Danny Ryan: there is something like it it's the issuance the coinbase is kind of similar

right but the um i i personally if

Danny Ryan: in my intuition is that the value of this fork is one to get withdrawals out and to to as a pressure relief valve on all the on many of the more minor uh evm and user related uh features and i think that in your intuition that

yes you have this thing that kind of does fundamentally change something that's withdrawals and maybe we shouldn't have three other things that fundamentally change something and you know hit that fundamental change and then a bunch of pressure relief things for users

Tim Beiko: yeah i i agree with that uh andrew

Andrew Ashikhmin: uh yes sorry i wasn't clear earlier i just wanted to say that if we do history expiry before before the vocal tree then we actually might hinder the vocal tree transition because for local tree we probably need a population of nodes seen from genesis and if we do history expiry that might be problematic

Vitalik Buterin: can you elaborate why we would need a population of notes from genesis for the

virtual tree switch uh because frogs currently there are many guest notes that are synced during using gether snapsync and there they don't have pre-images so all the keys are hashed and they for them to enhance the keys they need pre-images um oh i see him um so

Vitalik Buterin: so they can have the full

Dankrad Feist: how what's the size of the sticker set like only keys is probably not that huge

is it

Andrew Ashikhmin: it's fine so like uh because arygon knows all aragon knows i think from from genesis we can provide them relatively easy what i'm saying is that if we like pursue this history expiry path then it will be more and more problematic to have a population of notes and from genesis and then this transition will be more problematic but in terms of the volume of the pre-images it shouldn't be a problem at the moment

Dankrad Feist: but i mean just provide that as a

torrent

Andrew Ashikhmin: um yeah but still like if uh well how reliable is that so i'm saying like currently before we do history expiry we can do that relatively easy

later it will be more problematic

Dankrad Feist: wait but i'm not sure but i mean what you're saying is that your suggestion for recompeting those keys is to replay the whole history because only when you play the history you know all the keys right

Andrew Ashikhmin: uh right right but but we already have a a sizable population of aragon nodes that already have our archive knows and have that information

Dankrad Feist: but like i i still i i don't like i'm i mean i would need to look into this

but uh but you're like if the solution to the missing keys is reap like every node replace all that's old history again to retrieve

Andrew Ashikhmin: no no no so snap synced guest notes can say ask either full archive guest notes or aragon nodes to provide those keys the snap sync knows they don't have to replace everything from scratch they only need to acquire the

pre-images

Dankrad Feist: right or even simpler they you just get a torrent file of a few hundred megabytes or something that has the keys

Andrew Ashikhmin: well it's a moving target so like a torrent it's possible and we are

developing something like a torrent-based solution for

aragon pre-images

Martin Holst Swende: can be cryptographically verified when we receive them torrents yeah there's no cryptographic tie to a torrent we don't have a header that says what is the torrent

id

Dankrad Feist: yeah but the torrent only contains the pre-images so you can like cryptographically verify the whole file once you have it yeah once again there's no trust there's no trust enough torrent or anything it's only a way to actually get those keys

Péter Szilágyi: i mean you don't really need to verify anything you can just download the keys from wherever and just patch them and if you don't have that image yet

i mean yeah there's not much to verify although

Dankrad Feist: yes yeah i agree i agree yeah sort of like any source where you can download this seems seems like a solution to that

Péter Szilágyi: yeah but with the torrent it will always be outdated so you will always miss the most recent number of

pre-images

Micah Zoltu: i believe the general strategy idea with um torrance as a solution is you would just do like a torrent every six months and um wait why would there be a new

tolerance

Dankrad Feist: there's no new torrent once you have made the transition this is this is only alt keys that we're talking about right

from the point in time when the worker transition happened there's no more keys added to this and even before like so the problem seems to be that some clients clients currently don't store those keys like we could make an upgrade now that starts storing all those keys right

Péter Szilágyi: so storing keys you can store the keys for the blocks that you process but if you do a fresh sync you will not have those keys because those keys are not part of the network there's no way to repeat those keys currently i cannot sing them

Dankrad Feist: right i agree but i'm the only thing i'm saying is that this

doesn't have to be like a super instant process that right now i need the torrent with all the keys right this can be like a like say two weeks before the before the vocal transition every client starts locally building up all the uh all the keys that they encounter and then the torrent would all only need the all the keys as of two weeks ago and there would never have to be an update to the torrent and

from my perspective this does not seem like a major argument then like in terms of the ordering that we need to do the worker before history i don't i don't see that

Tim Beiko: yeah and i guess this kind of comes back to like for shanghai do we do we want to use it as more like a pressure release mechanism as these things are getting fleshed out and and prototyped in parallel and um yeah there there is another comment about like the timelines uh in in the in the chat i think

we probably don't want to like feel like we have to rush shanghai right after the merge uh given the amount of like rush or like pressure there is around the merge already um we obviously want to ship it you know after but like i i don't think there's like anything in in shanghai that um requires kind of a massive level of urgency um and and so it's kind of hard to say like exactly when it would land given we're not even sure when when the merge will be on main net but um i think we should try to you know obviously have these discussions about clarifying what was the scope of it what do we want

and gradually we will get kind of a better picture for it but um yeah i i wouldn't rush to say like we need to ship these things you know three months after the merger or something like that um and scar you you have your hand up

Ansgar Dietrichs: yeah i just wanted to say that maybe one thing again that we should definitely should decide today of course but that at least i think would be helpful to keep talking about a little bit over the next few calls is whether we might want to just commit on having two future forks the shanghai and one after it and then the next topical fork that i assume would be vertical tree related or whatever maybe else is ready just because i think western line was with london one of the

problems was that it basically really felt like the last feature fork for the next 18 to 24 months and so a lot of eps really wanted to get in and then we decided not to to put some in and say yeah but you can get into the november park and then we of course later on just silently decided to not have a feature for in november and so i just feel like basically managing expectations by just being very upfront about okay this is one chance to get your epa but we are already committing to having another feature for i don't know four to six months later um so so that that it's it's okay to basically only go ahead with shanghai with like a smaller similar set of simple things that are already ready relatively soon enough to merge or something i think that would really

simplify things i'm not saying we should do that necessarily but i think we should at least consider that option and potentially commit to doing that relatively early on in the process

Tim Beiko: and i guess the argument there is if you have two small two small forks you can kind of do them quickly and and like i guess yeah maybe the other way to put this is like if you have two small forks you do delay you know vertical tries for example by an extra three to six months at least um so is there an argument of like instead of just having these two small you just make one kind of medium or large hard fork and and that's it like and then the next one is

is more of a um you know protocol level change rather than like application level change if that makes sense yeah because like i i guess my fear is like if we do something like you commit the two future forks you delay the kind of longer term kind of protocol research but then it's also maybe the stuff that's in the second fork wasn't like actually that important because if it was then it would have been in the first fort um so that's yeah i'm yeah i'm not sure how we how we just make sure that like we're we're not just creating a delay and and have

uh yeah and and delaying the stuff that's really important for the protocol uh because we feel there's just too many things and and it's like an excuse not to just prioritize a bit better um obviously yeah it's not like the last conversation we have about this and and we'll we'll need to have more in in the coming uh the coming calls i think one thing though uh that for shanghai is uh for people listening like if you do have an eip that you want to propose for shanghai

it should probably happen sooner rather than later um even you know like today it's going to have your comments about like it's unlikely or it's not like yeah it's definitely not a certainty that like 1153 makes it in and and i think given the amount of stuff that's already there that's like scoped out and whatnot like we probably don't have a ton of bandwidth for for new proposals to come in and um and if so they'd probably need to be presented soon and and you know kind of show or yeah articulate why they're more uh urgent in a way than than what's already being there so yeah i think if if people have have ideas or proposals for shanghai they should probably bring them in uh quite soon so that we can

have at least like a a rough final list of stuff to consider uh in in the coming months or so

Martin Holst Swende: yeah i'm a bit surprised like half a year ago or a year ago there was a large group of people who really pushed for a 30-74 but i haven't heard about that uh since then i'm curious

of system i think like clients may be too polite to keep bringing it up okay i

Danny Ryan: i think that like i think that the 30-74 crew realized that the merge needed to happen before the 30-74 conversation could uh continue

all right

Ansgar Dietrichs: yeah maybe just briefly on the status of 3074 um so basically just

because it keeps conventional chat and everything i i just think that um we as the team just realized that a lot of people are having concerns and of course no change they should ever get accepted into the protocol while a lot of people still have concerns and so we're just basically waiting for a moment in time that is sufficiently kind of peaceful that that we have some time to try and convince people once more and also of course we are in the background kind of looking into the ap maybe things we can change to make it um to address some of the concerns so it's definitely something with that we still want to try and bring to mainnet at some point if there's an opportunity but um only dependent on us actually being able to convince people of course but

it's not it's not that it's just waiting for for us to calm down and and maybe have have to have an opportunity to to look into

it again

Lightclient: we're also available to discuss any concerns with 3074 with people i know there are still people who don't think 3074 is um is safe or they have other concerns about it and we're available to to discuss it we i've just stopped talking about it incessantly and the calls because there's other important things to discuss cool

we would really like to propose 30 74 for shanghai

Tim Beiko: yes and it is on the list right like and oh by the way i guess if people want to see the list it's not perfect but uh the issues repo of the ethereum slash pm uh yeah the issues linked sorry of the ethereum pm repo has everything i think that's being proposed the only thing that's missing from it is basically beacon eth withdrawals because there's no there's no formal eip yet and also i think the evm object format eip evm 3540 is is in that list and there's a couple companion eips which i think might not be in um

um but yeah if you want to get like a rough feel for like all the stuff that that has been proposed for shanghai that's the place to look um and then in today's agenda uh andrew also recompiled the list there and has uh has the beacon east withdrawals there um yeah oh and verko tries also yeah doesn't have a specific eips they're just portal eips and but that's where people should go nook and if people want to propose something for shanghai uh to just open an issue there um like you can literally copy paste any of the ones that's already open and we'll make sure to add it in one of the the upcoming calls um

anyone had anything else they wanted to cover either about shanghai or um the merge or any other topic

sure

Greg Colvin: yeah i also wanted to support the eof related ones um the evm work has been sort of stalled for a long time and those are are just a fundamental basis for making for making further progress and i just i don't want to see those delayed any more than necessary the the team has been doing really good work on that and they're pretty much ready to go i think

Tim Beiko: yeah i agree there's been a ton of really good work and like iterations on uh the evm eips which led to this this series and it would be really nice to see them see them get deployed

do we so

Lightclient: think simply go ahead matt i just want to say also on eof i think that there are interesting longer term proposals that do rely on having the ability of having different types of um contracts in in the evm and so the sooner that we can get the base version of eof onto mainnet the sooner we can start to really think about you know future things that can be built on top of it

Micah Zoltu: do we have a

so the we talked about having like one or two um hard forks around shanghai is it is there anyone any reason we can't commit to all those little easy things like the uf ones and bls and just like the the stuff that we sounds like everybody kind of agrees is easy non-contentious we just need to get it in the pressure release valve stuff is that going into shanghai no matter whether shanghai is big or small

Tim Beiko: so the reason i don't think we want to commit this because there's probably like 10 of them and i can see a world where like we just do five you know um i i i don't know it's never accurate but like i think and and i also want to let people you know give people time to like digest

this call and and and discuss things async but like assuming we did want to go like the the pressure release route i don't think we can include everything that's like in the backlog and um and so you don't want to tell people like oh yeah if your eep's been pending for two years it's uh it's uh it's gonna be in

Ansgar Dietrichs: um just for the record i think even something like eof which i think everyone uh that is looking to it is excited about i'm certainly quite

excited about it but i think even that has like sufficiently big long-term implications to the evm that i think it would be important that everyone basically is familiar with it and we do spend some time on all codes talking about the implications and if we are comfortable with it and i would hate for this to basically happen so late in the pro process of the hard work that for some reason then maybe concerns can't be addressed in time or something and then it would be kicked out of the the uh the fog so i think that's something that we should also do sufficiently long before the before the heart folks that it yeah doesn't pose a risk

right

Tim Beiko: oh and one last thing uh

um related to hard forks but not shanghai uh the consensus layer folks have found a name for their merge hard forks or the hard fork at which they basically set uh the the ttd and hard code it um if we want uh yeah basically if we want suggestions for that we should definitely not call that thing shanghai given the amount of of attention that there's been already uh but basically the release of uh yeah the release of uh execution clients uh that basically supports the transition um and

marius says the merge is good enough i personally disagree i like the idea that the merge is the whole process um and you know each of the client releases have have upgrades but we can discuss that uh async um but yeah we i the thing i do feel strongly about is we definitely should not call that thing shanghai i think there's enough like consensus around shanghai being the first feature fork after dinner after the merge anything else anybody wanted to bring up okay

well yeah thanks everybody um i will see you all in two weeks and there is the consensus layer call next thursday to discuss merge stuff

thank you have a nice weekend okay thank you to you thanks everyone bye everyone [Music] so [Music] [Music]

[Music] so [Music] [Music]

[Applause] [Music] you [Music]

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