eth_multicall Meeting, Feb 26, 2024

eth_multicall and eth_simulate Meetings · 26 Feb 2024 · 20:36

A meeting of the developers working on eth_multicall and its successor eth_simulate, held on 26 February 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

yeah all right so we've uh deployed finally a version that is free from the bugs that played us for kind of long time very much thanks to lucash and his reviews and help and effort uh he helped quite a lot to find what was actually bugging us there uh so finally as I understand and currently we are doing much better but hopefully K will tell us more and soon we'll fix the new things that Kari found and we be perfect I think

that's it with us yeah I got now the net might working with the Interceptor so it's kind of producing good results there's still couple small issues but like the one I I shared in the telegram about that nro is missing those two fields that are missing from the they were also missing for the spec but we discussed about them before of adding them but I don't think adding them is that difficult because they're kind of almost already there yeah we'll update it today later today and we'll see if it will all be up to SP but yeah I continue testing the N More more and it's now very nice because

now it's kind of functioning like everywhere where I have been tested so far so it's going of easier to test and I can just test the differences between get and Ne mind easier this I'm not just getting the same error that I used to get very cool have you actually been able to test the blobs uh those are something I haven't tested yet but yeah I should try I try to test those it's because I I need to set up the network and I gener hate in set uping stuff so it's more difficult for me to kind of get into that I to set up some Network that is kind of has foged

already then test them but I guess I can test them in the girly or or somewhere else but I guess you are you expecting the work or or do feel that they they shouldn't work yet with the net mind we'll see yeah so as for me um I I pushed some changes that were uh that I had locally and updated some images um basically it's also it has the

newest version of G um so I updated my branch and I had some like merge conflicts to work through um and yeah also updated the base sorry blob gas price field to blob base fee as it is now in the spec yeah I I also made some other change that I kind of posted in the chat basically I removed some of the early validations that we do in gu um I felt like it was not super necessary

because those errors will be caught by the evm so it's just that they will be returned it at a later point during execution um so yeah what about those validation checks it's it's things like um checking that I don't know when you're creating a contract that that you have some code for it or like just some some checks that will be done by by the evm anyway and but for some reason I had also added them like prior to execution but I feel like that's not really necessary and it was

creating a lot of hassle for me to because that code change change quite a lot recently in gu um it was a pain to just keep it up to date yeah so kind of like to make it simplify the full request to make it smaller as well yeah it was more of simplification to the P request um and I like yeah and you Hillary you ran the test and there was no changes as as I expected so I feel like this should not be this should not affect the results in in any meaningful way

um yeah I'm right now I'm working on something like that might be useful for you basically we have the dev mode in gu you can spin up a network very easily to test stuff so if you want to test blobs in um in gu that would make it so much easier but right now they are not working like like blobs are not working for Dev mode so you cannot send blob transactions but um that should be fixed by tomorrow and then um yeah if anybody wanted to test then that's that's one way of doing it can I somehow easily set up the test RPC to be

kind of in the foret network already should that be easy in way that I should be able to say some config that it has fed already yeah so it is like in this Dev mode that I'm talking about you can just provide a flag um to override the Cancun block number and then you basically can say that the deve is in test RPC sorry the dev mode is in the test RPC setup or what are you what what do you mean by RPC I would run to run the hive test and and for there I would want to run the hive test in the kind of the upgrade Network and not in the out of old

Network ah ah I see I see um no that's test there that's a bit different that for that you so in Hive we have the chain config so like the The Hive um Hive simulator do you have a fork of Hive I think c yeah yeah yeah so we just have to change one line there I will I will send you later today I'm I'm outside at the moment yeah I wonder if that's something that should be done in the hive or I don't know how the hive is going to be operate like is the hive going to kind of for at the same time after the eum or how it's supposed to be

working like the default config yeah that's a good question um I I guess we should um we should change it at some point um I mean I think it depends on the other test like we should do I think something I can try just to update to Cancun and see if anything starts breaking because we don't want to break existing tests yeah but but but some of the if the some of the tests are breaking for k then I feel that there's something wrong that we should be fixing

not kind of work work in the canun all the old yes so things should work yeah I mean if something breaks it's probably just because of like it expects a different number of blocks in the chain or something like that like something in the test suit itself so nothing should break that because we don't have a backwards incompatible change in Canon so yeah but it would be interesting to try yes yeah I think we should be should test

setting the BL transaction it simulat as well even though there should be very simple but it should be still tested yes sure anyway so that was it for me does Lucas have had time to update us uh not that much uh so still working a bit with ol on stabilizing and reviewing stuff but uh the thing that uh was quite um visible for me is that maybe ol can comment more is uh validations around uh

balance I think right uh yep yep that's probably a can you can you like tell more because maybe you're yes so one of the probably most uh special things about what our client currently consumes is uh the fact that to do actual transactions we take from you not only the amount of guas that you need to do to to have to pay the transaction but there is some extra fees relayed on top of that that are based on like minimal Min fees that are required and I don't think we have it currently

anywhere in the spec and well uh that's that's normal execution in inm that you uh charge the the uh maximum fees for transaction right you based on the uh things like uh Max uh maximum uh priority fee Ah that's was the one I was looking for and uh then you potentially uh refounded right yeah so uh uh also like in trining gas Etc all those things are taken uh deducted and

I'm not sure how G works here uh does it has a different mode in eth call and dth simulate in terms of uh checking uh balances for for being able to pay for this gas CA do you do know about it um so what what I can say is that by default when you do e color e simulate we set the gas prices to zero so that the those validation checks will always pass and basically nothing will be deducted and refunded

okay what about sorry the user takes them out and not going of Define them then I guess they set to zero but if the user defines them then they are what they are yes and if the user sets any gas price field then it will be like normal main net so we will check and we will like reduce the max fee at the beginning and then refund anything that that is left at the end okay okay so it's pretty simple solution I think we can try to replicate it my question would be what do you do see when the validation is on

I feel like gas price is it's not any different in on like when validation is on versus when it's off so we keep it at zero ah okay so that's what you mean so if validation is on do we default to gas price zero still yeah uh uh that's a good question I should should look that up potentially we should we shouldn't go with zero because that's not uh not realistic right we should probably uh check the gas price on the current chain and go with something there well yeah I think we def zero and it will

just fail uh could you repeat Kar uh I think we we'll def to the zero there and it will just fail well it won't fail with zero right or why would it fail with zero if you have the validation mode then it should check that in other mind in validation mode you I think won't be able to set it to zero because there is this minimal like amount that is required wait so but I have a question on Main net if a minor were to include a

transaction that has zero gas price is that will that work uh no because there's a base fee it needs to pay the base fee right yeah yeah it would have worked prior to 1559 but now it doesn't yeah yeah okay yeah I mean this is something that I that I should definitely look at yeah but uh do you guys also do any coinbase

transfer for the blog for the simulated blog yeah I think it should be a block right so if there are priority fees it should go to the coin base yeah but I mean no I mean like there's no mining reward right ah you mean um yeah no no no there's no mining reward there's no mining reward I'm not sure because yeah post merge there is nothing mining rewards are on CL side so not

it's not mining well dat rewards are on the SE side we only have fees on the E site which I think should still go correct so what we can potentially do in the validating mode we have uh we can get uh gas price right uh directly from how we do it in the uh RPC and set it as default what would be my PO so I mean that would mean that we will

produce inconsistent results because gas price is an estimate yes how it's in the spec at the moment is that the gas price is always set to zero if it's missing and if you're in the validation mode then transaction will fail and the idea there is that if you're setting the validation mode then you should also provide the gas pric and okay or or we can just fail the transaction if it's not supplied okay that's that's going to fail it then then it's fine of course the error is not the best is complaining about the gas price the best error would be saying that the gas price is missing and you should provide it on

the validation mode but that's up to the client to decide on what kind of error you give for that but we basically want to have this always if the client tries to run Us in validation mode yeah we can check yeah I think the best way would be that you fail the simulation and and you will give a user good error saying about that the gas price is missing but I'm also fine with that it will fail to the gas

price error as well but it's not as as as nice MH do we anything else to discuss I think we are getting quite close already yep have you been running the hive o you have U yes I'm able to run Hive and

I'm was currently working on integrating it better into our client base so that we won't like kill all the good stuff we've uh introduced have you been running so that you will generate the test with gets and then you are comparing the results the N mind uh well I was running it uh in like I took your repo and I was able to run them and debug them so and as I understand your code basically Compares whatever nethermind outputed to whatever gu outputed at that time when you ran it I you you can run it both ways with

generate with another mind but then you test to get or the other way around I think but yeah I have been running it to that generate with the and then I compare those to met mind yeah results are bit different depending how you do it but it should work mhm have we been getting the same block has that's the one one thing I'm worried about the most I think not yet debugging that is going to be a bit

difficult but I hope you'll get it I guess this is for today yeah thank you guys thank you okay thank you bye see yeah bye