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
(feat) implement EIP-1153 - transient storage #701
Conversation
Implements TSTORE and TLOAD as specified by the following EIP: https://eips.ethereum.org/EIPS/eip-1153 https://ethereum-magicians.org/t/eip-1153-transient-storage-opcodes/553 Co-authored-by: Sara Reynolds <snreynolds2506@gmail.com> Co-authored-by: Martin Holst Swende <martin@swende.se> Co-authored-by: Gary Rong <garyrong0905@gmail.com>
This PR looks good, but personally I will prefer breaking 34a13ff into
|
This reverts commit 34a13ff.
// - Add coinbase to access list (EIP-3651) | ||
// - Reset transient storage (EIP-1153) | ||
func (s *StateDB) Prepare(rules params.Rules, sender, coinbase common.Address, dst *common.Address, precompiles []common.Address, list types.AccessList) { | ||
if rules.IsBerlin { |
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 part is not the same as in upstream: https://github.com/ethereum/go-ethereum/blob/master/core/state/statedb.go#L1277
|
||
// Set sets the transient-storage `value` for `key` at the given `addr`. | ||
func (t transientStorage) Set(addr common.Address, key, value common.Hash) { | ||
if _, ok := t[addr]; !ok { |
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.
@@ -54,6 +54,8 @@ type StateDB interface { | |||
GetProof(addr common.Address) ([][]byte, error) | |||
GetProofByHash(addrHash common.Hash) ([][]byte, error) | |||
GetStorageProof(a common.Address, key common.Hash) ([][]byte, error) | |||
GetTransientState(addr common.Address, key common.Hash) common.Hash |
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.
GetTransientState(addr common.Address, key common.Hash) common.Hash | |
GetTransientState(addr common.Address, key common.Hash) common.Hash |
closing in favour of #721 |
1. Purpose or design rationale of this PR
https://eips.ethereum.org/EIPS/eip-1153
https://github.com/ethereum/execution-specs/blob/master/network-upgrades/mainnet-upgrades/cancun.md
https://www.notion.so/scrollzkp/Add-tload-tstore-opcodes-to-l2geth-8a54dbbcdb894ebd8e6d9c4d46b6de9a?pvs=4
2. PR title
Your PR title must follow conventional commits (as we are doing squash merge for each PR), so it must start with one of the following types:
3. Deployment tag versioning
Has the version in
params/version.go
been updated?4. Breaking change label
Does this PR have the
breaking-change
label?