eth_simulate Meeting, Feb 10, 2025
eth_multicall and eth_simulate Meetings · 10 Feb 2025 · 16:10
A meeting of the developers working on eth_multicall and its successor eth_simulate, held on 10 February 2025. Client and tooling teams compare implementations and work on the specification for simulating transactions. This meeting covers a client implementation update and the spec for eth_simulateV2.
Topics
From eth_multicall and eth_simulate Meetings, hosted by Ethereum Foundation.
Transcript
I guess I can go ahead um and share that well yeah uh last week uh Basu came and um found this issue in G implementation as it pertains to blash um computation and it is a legit issue and I have pushed a fix for it um yeah I have some review comments that I have to address and hopefully I can get it merged uh soon sounds good I did some testing with the authorization list stuff and then I
noticed that the eat call and others I don't don't support them either and then should decide what do we do with with it we need to add probably some kind of method to the it simulator as well and same thing for the E call as well so that we can simulate those transaction as well yeah so on that I think it's um something that needs to be brought up uh between all clients I mean we can really here only discuss it for E simulate and I think it would be good to have a coordinated or consistent API to
together with e call so would be nice that um if every other client can also chime in uh what's the thing the the the the the type four tractions uh 702 right I think that's the same yeah Y and we cannot recover them right that's the problem well there's uh multiple signatures in the transaction and the way the signatures are validated is not in the evm it's yeah yeah yeah and we don't currently have a way
to like we need like we disable the signature check for the other signatures but um those transactions come through with like a a from field right and so you can figure out what who the the sender is supposed to be but for those the array of things we would need something similar like an array of authorized people or whatever since if they're not signatures they can't be recovered yeah uh let me check where where is it recovered in our code just to have like a uh I think it would be nice that you could pass the those signature params or you can pass the address so either of
them would be fine yeah we've talked about having um types though and it's annoying in some clients like it would be nice that you could check that those the transaction is fully fully valid and also in able sping way so yeah my two sense is that creating this kind of signatur is not um that huge of an issue it's not the same as signing the transaction because that's very like hard to do for E call um so I mean one option is also
just having the signature but I think for me the important thing is that we all agree on one solution so either requiring the signature for the authentication or adding a new field the question yeah so uh my uh my proposition would be because we have a field there in this object called Authority so and there's Authority signature so either you pass a signature and it has to be recovered and it goes through recovery or you pass Authority as just an address and you we just skip the recovery is authority authority is an array is that correct no no no it's a just address because it's on the on the
single toule on the single element of the list okay so you have a list of either addresses or a list of signatures or a mixed list of addresses and signatures all three are acceptable yeah yeah everything would be fine for us so if you pass so it's like you pass from instead of signature to the uh to the transaction right you you would pass aor Authority instead of authority signature right and is this something that is already like you're proposing or is it already un mind the case so it's like internal nether mine types right but it's not on Json RPC in any way
okay so that's that's what I'm proposing well and you know we can call it differently or whatever right because yeah so Authority uh all three of those allow allowed address signature address signature uh a mix of either each each item in the array is either a signature or an address I'm fine with mixing them even right it's whatever for me but it's not that just pure list like that it contains also the other information like J need ID and address and the nons and then you either had the Authority or you had the
signature oh I see we have a list of objects and each object has an authority property on it yes exactly exactly and then the authority property you're saying is either an address or it's a signature yes I see okay uh or we can have Authority for address or signature for Signature right we can have two Fields it's more Fields because there's the RS and you par I think there's three fields for yeah okay okay I let me let me check how it looks alation list for RPC because for RPC we have different types
yeah yeah we have uh parity SNR right so instead of parity SNR you would just pass yeah I guess there's no this would be needed to add the CH RPC back to the transaction object I guess yes yes is that something I can do not the right place for it I mean I can make the PR but getting it merged is the other like getting approval from
clients I think we should get approval pretty easily because this is for call and simulate right and others of this kind of like The Bu call so should be to a to get approval I mean so what I imagine is like the the main pipeline is having the signatures and adding this Authority F this is where I think might be some um difficulty because I mean in gu it is a bit more involved to allow authority to be passed in from outside um we can do it and I just imagine that other clients might kind of complaint
um yeah it's not completely out of the box because we don't allow this now so when we have authority we I think we already trust it in our code base and now we will have to still check that uh if we have authority and uh signature or don't have signature we still need to uh yeah so there's a bit more validation on our side uh especially in transaction pool and blocks but uh yeah but that's few lines of code in both places so a big deal y like one two lines of code here two lines of code here is a signature a um object or is it just right on the no it's right on the it's right on
there right on there and Y parity is integer I think zero or one not true or false okay so something like that an authority field that has an address in it or you can have RS and Y parity exactly I'm assuming if you have both on one of these objects and they don't match it's invalid if you have both and they do match is that allowed or should we just say you have to have one or the other I would say if you have both and they match it's allowed right if you I think would be nice basically if you have uh if you have signature signature kind of is the more important one right and you can
either say error or just ignore Authority then completely so one we should error if the authority that's provided doesn't match the signature and that could be useful for users because they can then pass both and then the client will say hey you're doing something wrong go fix your code yeah be quite nice that you can quite easily check that it matches what you expect yeah sure let me drop a message to our 7702 developer Anders uh and to M because this is hard for L it I guess for hard also this would be quite useful how many methods use e call and
then there e simulate and estimate those three the back Trace call Trace uh Trace call so Trace transaction I think or whatever I don't remember those but there are a few okay tracing related estimate gas also yeah do we have the Els to discuss I think this is quite important but I don't know if you have any others I don't and uh this all sounds good to you Cena this proposed structure uh yes okay we should get a we should double
check with Basu they said he can't make the call today but he is in telegram make sure he's okay with this as well I think this import all of the implementers of this transaction type yes I mentioned Gabriel just because he is part easy to get a hold of for us since he's part of this group what's the impact of this transaction is that also the E simulate we also need to do some special for this in the nether mind you can pass this object at the moment it simulate but I haven't tested that does does it do what it should I don't think
there's any method where you can pull this values I'm not sure what's your question about can you repeat I mean if I run s simulate with this methods and how I can test that it actually did what it supposed to be doing I don't think you can pull there's no upod any can pull this BS the chain so Authority would be the code that would uh be delegated to right I no or no or authority is uh no address is the code that is being delegated to and Authority is would be the address it's delegating
from so then if you send a transaction from from Authority right it should it should use the smart wallet from the address trying to send the transaction the only way to test that this exist or can you pull somehow this from the chain uh there's no kind of get method for this uh not I think there is an OP code for this but that's that's still a transaction now what do you want to read I would want to set the fields and then I would want to kind of see what was said so that I could kind of confirm that actually they worked so I know that if you do uh X
code load is it called of the authority then it should return the address plus some prefix so this is way of telling that the authority was really set or configure there can be only one Authority per address yes and you can reset it by setting it to address zero or you can change it to any address but you can also like just clear it by setting it to address zero okay
I guess I could try to send the transaction there that would be the a test yeah I think it would be interesting test to do like set the authority and then check it VI uh X code operations well actually I'm sorry you cannot do the xcode full read of of another contract but you can do the xcode hash and the hash is you can compute easily or you can do X good size and then the length should be 23 I'm just get the hash in a way I then I would actually know what it should be and then I just test against but I guess
I can pull the address directly yes you can yeah you can hash it yeah you you just add the prefix to the address and that you expect and then Hash k and then yeah it should match what you get from the output why are we stor the hash instead of the address directly I would imagine the address would be more useful and that's probably short that's also shorter than the hash I guess no no no the address is stored it's just that X xcode hash Returns the hash like you can I F the address directly in the X code where I can just get the whole
code do we have X I pretty sure not I think you can get the the bite code of our contract at least oh yeah you exode copy yeah um yeah that would work too I think that would be better I can look into that anything else if not talk next week again okie dokie okay see you bye next see you next week bye