eth_multicall Meeting, Mar 18, 2024
eth_multicall and eth_simulate Meetings · 18 Mar 2024 · 24:54
A meeting of the developers working on eth_multicall and its successor eth_simulate, held on 18 March 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
hey so sorry for the delay had a bug needed to fix it before we'll be able to push the complete release with some of the features that were already fixed but not yet delivered yeah wor a bit this thing so the good thing is that I now know the complete order of how it goes with our block processing so I'll be able to provide you with the document later today and as we implemented it on the is multiple side we can now like be sure that this is the set of checks that
are done to each transaction before anything else and only after this set of checks we are processing any kind of block and there are only 1 2 3 4 five six seven of them I think uh seven checks spe down you mean uh seven checks like block full n sender not enough gas in the block gas limit uh with given gas limit uh transactional reading block AP 30860 transaction size over Max in Gold size sender is contract invalid nuns expected something else that are the
main like seven thingies and also have enough funds goes the last and that's it yeah oh yeah yeah by the way I had a question for the validation or non validation mode do we check the sender is contact now or we skip this check we have been skipping that check I haven't checked from the get if get is I think get is still doing that yeah so skipping it as is in the our spec so if we have validation on do we still skip it yeah that's the only difference there
yeah MH all right uh could you add a test for that so that we'll be able to like uh have a regression for it I think I have check for that but I I I can see I but I I can check if I have MH because this is definitely there and we shall somehow disable it then all right yeah we'll do that yeah so that's it with me uh just like right now a few minutes ago found uh how to fix the issue with the block position on my side and we'll that the that I was just sharing that some plog has issue yeah yeah yeah
so CA actually found this issue earlier that week and I was like looking all around to fix it and finally I've got it right now so I'll push out the updated doc image later today and we'll be able to finally uh like check all the fixed issues on it hopefully everything now will be fixed uh the new one that I'm current that was last thing that broke it was the N check and N check is also now fixed so maybe even hashes would agree but I'll check it a bit later uh that was the case where the net might completely crashed on the test
shoot I guess yeah that shall be fixed with this release so just uh wait till the evening and I'll provide it updated document nice I haven't been working since I I was on holiday for one week so there's no really updates from me uh yeah um as for me I didn't do uh so much well I was trying out the tests uh last two weeks and found that they were failing uh then kimy fixed them
um yeah um then I could run the test and found these these issues that uh like the errors in other mind and I reported to yeah thank you yeah um so basically that's it from me um so if if these crash errors are fixed today maybe we can try to dump the block for some of these like for a sample test case and then check the block details for G and nethermind and we can probably find some
differences that we can start fixing yeah perfect I'll be with you I think I will provide a document updated in around 2 hours so in 2 hours we be able to check that awesome is there some standard output dump that you can create that it should be the same with get M um I didn't get the question quite I mean when you are I guess both can both notes can do some tracing and can you do do the run the multical with tracing and then you could see why the hashes might be different or it's just you ding the
state or something like that basically I think that multicol would be this very thing that would allow us to check because we'll have for each transaction all its parameters and the block hash would shall be different only if some is wrong with the transactions or the block header so we'll be able to like just go through whatever multicol outputs to us about the block and the transactions and we'll be able to find where the difference is be it in transaction or block headers for example and we'll be able to go from there I think it would be the first step uh yeah just what I mean is
specifically that we don't return every field of the Block in the multicol result so we would need to print some extra stuff um I'm not exactly sure how to do it I'm guessing like the easiest way is just to add a print and run the tests um I'm actually wondering if we can run individual tests in Hive that should be possible that would make it easier y we you can ask it to run one test you can when you run test you can just just put the name of the test and it will just run that awesome so yeah I think what I'm going to do
is um yeah just add a print statement [Music] to like to get to dump the block and at the end of the processing and then we can compare that to NE mind but yeah if if you're lucky then we just run the test after o fixes and then they are all matching magically oh yeah that would be beautiful yep best case scenario I had one question we
are in the specs at the moment we are returning that the the base fee for the Block B Block SP BL is that something that we should remove from the spec or should do we want to return it I remember I had a question about some naming in the at the moment the naming naming are matching the spec I is current but test we trying to change the naming and I would then change the spec if the name naming T go through but I don't know what the status of
those but should for example with plop face fee should be return it for the block or not I mean I think it's not a real field on the Block so is it that when you are getting like get Block RPC call you are not getting the block face fee no is it that you always need to calculate yourself that's interesting because with the you can get the the other base fees with with the block so I think uh we are adding a new method for it is about base fee if I'm not mistaken okay that's weird why you want to make a new
one and not just add it to the kind of the get get Block well is that get Block is supposed to return the block fields and Basi is not part of it yeah but you can calate from from those but yeah you can get calculate from the excess BL gas and those you can calculate by just making that call and making the calculation it's just more difficult for the user that they need to do the calculation mhm but also like you wouldn't normally you would not need the Block Base fee of the existing blocks you want to estimate for including your next transaction and that's what if I'm
not mistaken The Blob base fee method does it will tell you what will the future blob basy be oh but we don't have the same thing for the normal base fees and how I'm at least I'm calculating the transaction fee as I'm getting the previous blocks base fee and then I'm doubling it and that's my estimate for the good transaction price but I guess with BL blobs it's not going to work the same but I would imagine isn't the adjusting logic completely same for for blobs and that's that is for the transaction as well I had a question by the way about that
so I don't really understand consistency yeah why we are making the blobs Works differently than the base fee when it's kind of for me at least app works exactly the same um wait so okay let me I'm trying to dig up the documents but yeah this more criticism for the plop spec and not to kind of multic stuff yeah just to jump on that while s is searching for the docs so there is a validator index in withdrawals and somehow like if you look at e multicol it is consistently mostly
camish case like and suddenly like uh the underscores started to appear all all around in the for example valid dat index for us it's currently Cel case and not the underscore thingy let me show you into the comments do we have validator index yeah we we do it is in schemas execute and it is currently written as validator like lower Dash index instead of validat index and as I see currently
in the chat discussion you also discussing calculate blob fee so I had a question about that do we oh yeah you're right about the validation index I know where I'm not sure where that comes from yeah so so for me the main question is what kind of like uh how do we want to write it do we want to like break apart a little bit and have camel case mixed with like
underscore or do we want to keep it more uniform I'm not sure where that validation underscore index comes from I know if is it used somewhere else and I got it from there yeah good question so it is in schemas execute yeah I I see it but I wonder why I have named it like that is it that because I got it from somewhere where it's that same syntax like yeah it's in the cons specs it's called validator SL index oh oh like in these specs it's validation
underscore index and I guess get is also getting there I don't know why it's named like that mhm all right we'll update outside for that do you know in the neet mind is it like that in other methods currently it looks like it is without underscore it's like chemel case so wonder if there's some other method where you can get that yeah is there any method that would return you the withdrawals uh what's the problem what are we talking about S I was a bit so in our code base we have validator index serialized as camel case validator
capital I index and in the the RPC stand docs we have validator lower lower dash index oh that's weird so the question is is there any method that would be actually utilized currently by clients that would rely on Cel case validator index or this is changeable as skill area and C point to the fact that in the official standard it is validator uncore index so generally Jason don't use underscores I don't see that never seen that kind of
maybe is about to much generally don't see that kind of patterns totally agree so the question is what do maybe it's me maybe I'm in my bubble I mean gu is also returning camel case um so maybe just spec is wrong yeah yeah I just I just look from that the E and they are using that with the unders I think that's where I have gotten it but yeah I can rename it yeah but are they using underscoring some internal naming and the or like public names of the uh Jon RPC items uh I haven't because I see in in in eapc has
public name sorry private names of some uh values often use underscores but I haven't seen UND person like public RPC Jason okay yeah in the quick no spec and the get Block details there also with the without underscore Pro yeah I renamed cool yay cool thank you did you find any other that kind of
problems there's also block used un 64 yeah I had a question with the data types so we are using in 64 while you asked for the UN 256 so yeah the question is do we want to keep 256 for it I wonder spe or where so so in practice in practice because we are sterilizing that to uh to string right yeah nobody will know I I
know so it won't matter because in practice you won't get Beyond 264 uh number length so if you sariz it to a string that's whatever right it's a number in string and it will be always yeah but if anyone would ever look at the spec and then try to create a fuzer that would actually rely on data type sizes then he would immediately see this discrepancy uh well he able to achieve that kind of values with this multical no problem you just like put it in there
as you can like mock anything you can put longer numbers wherever you want in in gas us well not maybe not in the blob gas used but you can like try to achieve this situation no because you will have to probably have too many data or too many yeah for blob too many too big blobs right how big the blob would have to be to exceed this I don't know let me isn't the limit on how much blob a single blob can use so if you and that Max three blocks that can be included at the one
block so if you make three huge blobs then can they ever be that that's big but it is the the oh it's gas use just yeah probably isn't there a limit on how big one blob can be I think there is yeah both on how big a blob can be and how many blobs you can include in a three I guess six oh was six okay I three is the one that is kind of being aimed at mhm oh yeah but yeah I don't mind to rename it 64 or if that that's
better what do we use internally use calculator I don't know if there spec spec that is claiming what it should be that should be followed see I would imagine that you can make an e you can fork ethereum and then add more blobs and then it would could have this issue yeah yeah yeah um ethereum will potentially increase the number of blobs right just thinking if it's reasonable because if you would have to put two terabytes per block for example to x64 then it's not really reasonable to to uh to do that right so R type is UN
64 so current map Max blob Gasper block is 786 okay so it's the number of kilobytes right so in order to
XC number of btes so I don't see people exceeding for uh to to to the power of 64 what bytes yeah no question with that my only beef was with the RPC standard well we can fuse 64 them that's 16 million petabytes per block I don't think it would be exceeded well maybe we scale that much
we should well maybe the future you know you never know 6400 kiloby should be enough for everyone right yeah but 64bit addressing was introduced what like few decade two decades ago and it still holds and we are still far from going over I still don't see 128 CPUs uh if you don't count see of course but that's not 128 bit PS it's the same with the index that's
also 256 is that transaction index yeah so internally blob gas used we use um 64 just still is get same or if the get do make a difference I don't know uh no it's also you 64 okay i r name it very
cool did we have anything else to discuss Mike is typing something he's not he's sick all right okay let's talk next week and yeah in in for much when you are getting the new version up yep cool talk to you later see okay bye bye bye bye bye