Skip to content
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

Create eth_call.md #55

Closed
wants to merge 9 commits into from
Closed
Changes from 6 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 11 additions & 0 deletions src/description/eth_call.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
* **MUST NOT** affect on-chain state

* **MUST** allow a `from` parameter that does not exist on-chain and if `from` is not defined it **MUST** be interpreted as `0x0000000000000000000000000000000000000000`

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What happens if the from account is not an EOA?

Copy link
Contributor Author

@DockBoss DockBoss Aug 25, 2021

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Playing around with different from addresses I found that as long as it a 20 byte hex string the behavior is the same.


* If the `to` is null or not defined on-chain and there is no `data` parameter it **MUST** return an empty hex string

* If the `gasPrice` parameter is used it **MUST** interpret it as the `maxFeePerGas` and `maxPriorityFeePerGas` both equal to the value of the `gasPrice` parameter or 0 when `gasPrice` is null

* **MUST** consider gas to equal 0 if the `gas` parameter is equal to `null`
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't think we want this. Instead I think what we want is to specify that either the behavior is undefined, or that the call is executed with XXX gas, or that the call is executed with infinite gas. I don't know what each client does, but I suspect they all do something different here (some I think even may use block gas limit).

Saying that the call should be executed with 0 gas just means "the call should fail with out of gas immediately" which is unlikely the desired behavior.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yeah, I do not think this is the behaviour. I think the the clients use some specific number for the gas limit in such cases.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You are right, I found for geth it sets the gas to 80000000, I do not know for the other clients.


* If any non-zero fee or `value` is provided the `from` account balance **MUST** be checked to ensure account has enough funds

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

what happens if not enough balance on sender account?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The call will not go through. It will give an insufficient funds error.