-
Notifications
You must be signed in to change notification settings - Fork 20.6k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
go-ethereum v1.13.0 changed "eth_call" to take data in the "input" field rather than the "data" field #28608
Comments
Geth AFAIK accepts both |
I'm not aware of anything changing on the server side wrt not accepting one name or another. AFAIK only ethclient was changed to start doing calls with |
Following, it's honestly ridiculous, this breaks compatibility with other EVM chains like BESU |
Why do you feel Geth is at fault for implementing the spec, and not Besu for not implementing the spec? |
@zomglings can you please provide some information about your usage of the API, i.e. how did you discover this issue. We are very confident Geth still supports the |
This ticket is obviously based on a misunderstanding. I'll just close it |
Hi guys, I apologize for my delayed response - I don't receive GitHub notifications for some reason. My issue isn't based on a misunderstanding. At least I do not think it is. It's not obvious to me what my misunderstanding is, so I would appreciate clarification on that point @holiman This is my interpretation of what happened:
In my case, it broke my tooling when interacting with a client for a Polygon rollup that was using an old version of the OP stack. Now you can say this isn't But whoever is maintaining the JSONRPC API specification should take responsibility for this. It could be handled by simple increasing the My understanding is that the If my misunderstanding is that I filed the issue in the wrong place, then I apologize and I would appreciate a pointer to the right place to file this issue. Because whether or not it is an issue for If there is not misunderstanding, then let us continue the conversation here. I will set a reminder to poll this thread once a week so that I don't miss notifications. |
You still haven't answered the question. Are you using the go-ethereum RPC client, and the |
Yes, this is my import:
This is how I create the client:
Pinning to this version of go-ethereum fixed my issues (from my
|
Thank you! And which server software are you communicating to? A Polygon node? |
It rolls up to Polygon, but the rollup itself uses the Optimism stack, but I am not sure of the version details. It might help if I make a terminal recording demonstrating the issue, I'll do so tonight. |
@fjl : Demonstration of the issue - the |
Tron still supports only "data" - https://developers.tron.network/reference/eth_call |
By the way, I can now reproduce this using the This is the error message I get:
This is my anvil version:
I feel as if this issue has been closed prematurely, is there any way to appeal the closure or should I create a new issue? There is a genuine problem here for sure with ethclient. |
So, the issue here is not 'geth' in the sense of an api provided by geth. The issue seems to be when people use ethclient against non-mainnet / non-ethereum backends. |
We should ping these non-updated backends and ask them to update |
It was fixed in Foundry here: foundry-rs/foundry#5918 |
According to [this issue], eth_call specification was updated quite some time ago to replace the field `data` into `input`. Our implementation does not support this. This patch adds this support. [this issues]: ethereum/go-ethereum#28608 (comment) Co-authored-by: Pierrick Couderc <[email protected]>
Expected behaviour
Programs which make JSONRPC
eth_call
requests should not have to worry about the version of the client they are connecting to as long as it accepts"jsonrpc": "2.0"
requests.Actual behaviour
If the client is on tag
v1.12.2
, then theeth_call
parameters must specify the view call using the"data"
field. If the client is on tagv1.13.0
or higher, then they must instead use the"input"
field.This is not backwards compatible in any way shape or form, and the only way to understand what request schema to use is to inspect
web3_clientVersion
.Steps to reproduce the behaviour
Run two
go-ethereum
nodes, one atv1.12.2
and the other atv1.13.0
. Deploy a contract with a view method. Construct a JSONRPC APIeth_call
request for that method. The request that works forv1.12.2
clients will not work forv1.13.0
clients.Note
Incidentally, I suspect most clients would be ok with both fields being passed.
The text was updated successfully, but these errors were encountered: