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

Eth JSON-RPC API: implement eth_getCode and eth_getStorageAt #9397

Merged
merged 5 commits into from
Sep 29, 2022

Conversation

raulk
Copy link
Member

@raulk raulk commented Sep 29, 2022

eth_getStorageAt comes with a major hack for now because of a serde snafu in the EVM runtime in builtin-actors. We are not updating the bundle for Iron, so we patch it here. The type we used in the EVM runtime for the storage slot serializes to a hex-encoded int instead of to purely an big-endian array of bytes. We'll fix this at origin in builtin-actors.

Another caveat is that retrieving a storage key that doesn't exist returns an error. Instead, it should return a 0x0.

This comes with a temporary hack. The EVM runtime actor uses the U256 parameter type in
GetStorageAtParams, which serializes as a hex-encoded string. It should serialize
as bytes. We didn't get to fix in time for Iron, so for now we just pass through the
hex-encoded value passed through the Eth JSON-RPC API, by remarshalling it.

We don't fix this at origin (builtin-actors) because we are not updating the bundle
for Iron.
@raulk raulk requested a review from ychiaoli18 September 29, 2022 22:27
@raulk raulk requested a review from a team as a code owner September 29, 2022 22:27
node/impl/full/eth.go Outdated Show resolved Hide resolved
Copy link
Contributor

@ychiaoli18 ychiaoli18 left a comment

Choose a reason for hiding this comment

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

LGTM

node/impl/full/eth.go Outdated Show resolved Hide resolved
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants