-
Notifications
You must be signed in to change notification settings - Fork 44
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
Add RIP: Native AA JSON_RPC API #58
base: master
Are you sure you want to change the base?
Conversation
A partial rewrite of the previous proposal found here: ethereum/ERCs#625 Changes: * Some extra descriptions. * Removed the mention of the native tracing API as ERC-7562 is likely to be implemented natively regardless of this RIP. * Added a link to the Paymaster capability ERC-7677 * Made `eth_callAA` return the emitted logs array * Added example JSON requests and responses
Co-authored-by: shahafn <[email protected]>
Co-authored-by: shahafn <[email protected]>
Co-authored-by: shahafn <[email protected]>
Co-authored-by: shahafn <[email protected]>
Co-authored-by: shahafn <[email protected]>
Co-authored-by: shahafn <[email protected]>
Co-authored-by: shahafn <[email protected]>
Co-authored-by: shahafn <[email protected]>
Co-authored-by: shahafn <[email protected]>
Co-authored-by: shahafn <[email protected]>
@nconsigny Hi! I think we are ready to merge this PR now. Could you please have a look at it? Thanks! |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Ideally, you should start a new sentence on a new line instead of continuing an old sentence on a new line. Hope this makes sense.
With the introduction of Account Abstraction as it is defined by [RIP-7560](./rip-7560.md) | ||
a number of existing RPC APIs are not capable of providing the necessary functionality. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
With the introduction of Account Abstraction as it is defined by [RIP-7560](./rip-7560.md) | |
a number of existing RPC APIs are not capable of providing the necessary functionality. | |
With the introduction of Account Abstraction as it is defined by [RIP-7560](./rip-7560.md) a number of existing RPC APIs are not capable of providing the necessary functionality. |
The required behaviour changes are significant enough to require an introduction of completely new methods | ||
to the Ethereum L2 clients implementing Account Abstraction. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The required behaviour changes are significant enough to require an introduction of completely new methods | |
to the Ethereum L2 clients implementing Account Abstraction. | |
The required behaviour changes are significant enough to require an introduction of completely new methods to the Ethereum L2 clients implementing Account Abstraction. |
The process of creating a transaction has been getting increasingly more complex and interactive process | ||
with the growing complexity of on-chain protocols. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The process of creating a transaction has been getting increasingly more complex and interactive process | |
with the growing complexity of on-chain protocols. | |
The process of creating a transaction has been getting increasingly more complex and interactive process with the growing complexity of on-chain protocols. |
As the AA transactions are executed atomically but consist of multiple sequential frames, | ||
it is not possible to reliably prepare parts of the AA transaction individually. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
As the AA transactions are executed atomically but consist of multiple sequential frames, | |
it is not possible to reliably prepare parts of the AA transaction individually. | |
As the AA transactions are executed atomically but consist of multiple sequential frames, it is not possible to reliably prepare parts of the AA transaction individually. |
For example, when creating an AA transaction that also performs a deployment of a `sender` smart account, | ||
it is all but impossible to perform a gas estimation for the execution frame using the existing `eth_estimateGas` API. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
For example, when creating an AA transaction that also performs a deployment of a `sender` smart account, | |
it is all but impossible to perform a gas estimation for the execution frame using the existing `eth_estimateGas` API. | |
For example, when creating an AA transaction that also performs a deployment of a `sender` smart account, it is all but impossible to perform a gas estimation for the execution frame using the existing `eth_estimateGas` API. |
The top-level frame of the execution phase is a call to the `sender` smart account that may consist of multiple | ||
inner batched calls. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The top-level frame of the execution phase is a call to the `sender` smart account that may consist of multiple | |
inner batched calls. | |
The top-level frame of the execution phase is a call to the `sender` smart account that may consist of multiple inner batched calls. |
Furthermore, the code in the `sender` address is frequently just | ||
a proxy contract that does not propagate the implementation's returned data. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Furthermore, the code in the `sender` address is frequently just | |
a proxy contract that does not propagate the implementation's returned data. | |
Furthermore, the code in the `sender` address is frequently just a proxy contract that does not propagate the implementation's returned data. |
In order to allow smart contract wallets to reliably expose any data to the off-chain execution we have little choice | ||
but to rely on the existing mechanism of emitting the event logs. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
In order to allow smart contract wallets to reliably expose any data to the off-chain execution we have little choice | |
but to rely on the existing mechanism of emitting the event logs. | |
In order to allow smart contract wallets to reliably expose any data to the off-chain execution we have little choice but to rely on the existing mechanism of emitting the event logs. |
As mentioned in the [eth_estimateGasAA](#eth_estimategasaa) section, the `sender` and `paymaster` smart contracts | ||
are expected to explicitly implement a special code flow to support the gas estimation. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
As mentioned in the [eth_estimateGasAA](#eth_estimategasaa) section, the `sender` and `paymaster` smart contracts | |
are expected to explicitly implement a special code flow to support the gas estimation. | |
As mentioned in the [eth_estimateGasAA](#eth_estimategasaa) section, the `sender` and `paymaster` smart contracts are expected to explicitly implement a special code flow to support the gas estimation. |
This code is supposed to only be executable during the `eth_estimateGasAA` and MUST never result in a valid transaction. | ||
In case this constraint is violated the contract will be vulnerable to various potential threats. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This code is supposed to only be executable during the `eth_estimateGasAA` and MUST never result in a valid transaction. | |
In case this constraint is violated the contract will be vulnerable to various potential threats. | |
This code is supposed to only be executable during the `eth_estimateGasAA` and MUST never result in a valid transaction. In case this constraint is violated the contract will be vulnerable to various potential threats. |
A partial rewrite of the previous proposal found here: ethereum/ERCs#625
Changes:
eth_callAA
return the emitted logs array