eth_multicall Meeting, Jul 22, 2024

eth_multicall and eth_simulate Meetings · 22 Jul 2024 · 16:05

A meeting of the developers working on eth_multicall and its successor eth_simulate, held on 22 July 2024. Client and tooling teams compare implementations and work on the specification for simulating transactions.

Topics

From eth_multicall and eth_simulate Meetings, hosted by Ethereum Foundation.

Transcript

all right so hello so shall we do a quick run through the presentation K what do you think sure we can do it all right so just for everybody's information the link will be in the meeting group chat so that you can open it up and look at it and Kar as you start would you share the screen what how can share it

can you see it yes we do so my start is the mostly what I did in the before which I have presented so I'm first explain what the each simul one is and how it's different from the it call then I'm showing also what is the output of that kind of simple call call uh then I'm talking about the four core features that we have that we have the call S with the blocks then we have state overrides easy recover up code override this used to be the uh bigger override but nowadays we just allow the easy recover up codes so that's something that I modified here then we

have the event logs and E transfer log and then I go through all these four one by one so first about the go the are the blocks then about the replacing of the accounts and then about the easy recover override then I go bit how you can do the pre over is one easy recover over nowadays and then I showcase kind of Interceptor but I don't actually use the Interceptor I just show these pictures on top of the use case how you can swap usdc to e using e simulat but you're first approving it then you are signing the permit message

and then you are swapping usdc to e and then you can actually get the sub sueding and here's actually what the each simulate query looks like inside the Interceptor that you have the approv transaction as the force transaction in call and then you have the swap transaction and then we have the pre compile or the easy recover override for the permit message and then I saw that the Interceptor shows that nice simulation results that you are gaining some ether and losing some usdc and then making permit to allowance and then I show that you can you can get event locks and E transfer locks also out from the each simulate and that the E logs

are esc20 locks with that special ZX e address and that's how the one of log looks like yes 20 transfer log but that address is are special uh then I show gu the governor Bravo execution example where we are replacing one uh exist existing contract on the main net with with our own contract and then we are calling that contract to simulate how the governor's contract can be how we can see what the governor's contract would do if the governance decides to execute transaction and here's an example of that that we are then replacing that uh

time lock contract replacement with our own own and then just execution the time lock and yeah seeing that there's a it been transferred in that in that case and then then there do existing actually I haven't check if these links are still valid that we have get neite versions and then we have high test and then we are still looking more people to implement yeah I'll update our link soon all right this that wrong yep now it's already wrong okay so we'll update it yeah then go through implementation details on the first slide we present the simplified

architecture of what is actually happening the parent blocks the loop the filling and processing and commit States then we go into the next slide with system changes and on the system changes we highlight the most like painful aspects that we encountered what was actually changed how we actually do it through overlays to not interact any data that is real and only do its simulation wise and other minor changes that we had to make then we go to the next slide with State updates we show what would a developer actually need to do to allow this all to that he needs

she needs to be able to allow contract State updates user State updates and in Real Life currently uh for example what I'm was playing around with this weekend and will probably we will be playing around a little bit this week uh the E call in guess the second parameter is currently the state overrides and it is like one one to one mapping from there to here so if the client already has that is called State override it would be uh a little bit more easy for them to implement on the next slide we show the overlays we had to create to actually make it all work the overlays for treees

for state for code in for and ability to Overlay codes through promiles and how it Stacks up and comes together in a simplified form of course but it shall be more or less general for every user to see on the next slide we show the evm updates that we had to actually do for promiles so that it could be selected either to for example precompile code to be called uh or the overloaded pre-compile code to be called or redirected promile code to be called uh and we especially indicate that there is extra extra lock situations we go to the

next slide and highlight the fact that actually we added a special uh change to the way we are doing logging we had added one more event that we track and it is actually used for providing users with ability to if they set a special flag every time see the E transfers from anyone to anyone and this hopefully uh it will be explained why we actually need this in Kar spot and then we go to the next slide with IC updates yay so hopefully everyone will

be using Tracer for that um going to the IC updates in our case there were some difficulties with actually passing various dictionaries that were jent with complicate complex data so we needed to update it also we provide uh new conf ination on IPC of Max blocks that will be simulated in uh is simulate and there are all the traditional limitations that are also included and are also applied to each e simulate request then we go to the next slide and highlight the validation mode the fact that users can actually turn on

the validation and meanwhile we are having as much of the transaction data filled up as possible we actually allow the user to specify anything here she wants and we will try to validate his her transactions and blocks as real blocks would be validated on chain and so he or she would get real information on how good or bad the transaction are in terms of getting onto chain so then we go to the next slide and highlight the skipping the magic feature that you want to set simulate for me block number one and then block number 100 and we

explicitly state that we actually do skipping we do not skip we run every block and by default the same limit is to 56 blocks and so if the user wouldn't put only one please simulate for me block number one block number 100 we would simulate all the blocks in between but they will be empty but the state will be updated so we kindly ask our users to focus on using time stamps for cheaper simulations we go to the next slide and highlight the great effort that Kari and M done on actual testing the new updates to hi test 100 high test is quite a lot and they allow us to

check basically every P part of functionality there is we go to the next slide and we highlight the links that can be used and we highlight the use case that can be we read it on the use cases that we see one of the most interesting and then we go to the end and have a discussion yay I guess here is that I'm already kind of motivating what is the itlet oh that's why yeah yeah sure yeah to remind everyone that it is actually useful to be able to simulate for over a tree wherever they want to have some ideas

wherever they want to test something out to see what would go well or go badly on a block tree all right so yeah I guess with this this links as well I should update this to the test AR or the where the tests are residing in the hi that's that's the hide for the test are not actually residing that repos so but I can by the way I had a question so the actual for example code for some of the tests is residing in the main repo with execution API so the question would be if the uh if it is up to dat uh those are up to because we have be still finding bucks I

plan to update all those test there when we going to more far in the future when the kind of all the tests are actually correct MH yeah all right so yeah that's pretty much it 38 slides I think we will take around like 45 minutes to present the basis of it and probably there will be like 5 to 10 minutes for questions and that will be it and we are given one hour to to do everything and yeah I think it will be pretty pretty great yeah I'm just yet sure how long it for me to takes to go through those first slides but yeah I maybe try to talk them through once before the see and then I

know better yeah yep perfect all right so and also from our side I think we haven't done yet the progress on new bu fixes because I was focusing on actually bringing the functionality of State updates to is call so that we would also have like have e simulate like implemented and propagated through every piece of the client so uh I think I will finish it by soon and we'll get back to our uh unit tests that we shall still fix y That's it from our side CA any updates from your

side hey um yeah not a lot from my side um but last week we had a call with a team reviewing one of the prerequisite PRS uh for multicol in G and and um actually yes it turned out that so yeah and then we discovered that thing with State Route and state overrides um so and because we want to update the state rout based on the overrides as well then uh we will not go with that approach of that PR so now my colleague made another one and that has to be reviewed but

anyway these are just L uh lay work that has to be done before like multic call is actually merged in so yeah we're making progress on like the review side of things and that's it there's no update from my side yeah so the question in the chat was if we have time the presentation so the thing that you've seen today was definitely not the complete presentation it was heavily reduced by all sides so

probably there won't be spoilers on video on demand of our call today I think uh and yeah so we'll meet again in a few hours and we'll be able to actually like time how much it will take I hope we'll get it through in 45 minutes all right so if uh when is the call it's a good question let me share a link with you in couple of hours yeah so this is the [Music] link here go and it

is 4 p.m. London time so in two hours yeah in two hours two hours 12 13 minutes MH yeah and I think we'll share link on telegram as well when we'll get to it all right thank you all guys for coming that was nice yeah I don't think it's supposed to be live in a way that it's not going to be presented that large audience well in my understanding record they will record it but they actually at least from my understanding of telegram chat invited call developers so there can be somebody who would come yeah I

saw it on Discord actually so maybe I will also just join the call as audience yeah ask questions y all right so we'll see you aome thank you guys for coming thanks a lot okay bye bye yeah good luck guys bye thank you bye