Comments (4)
* [ ] [EIP-4788: Beacon block root in the EVM](https://eips.ethereum.org/EIPS/eip-4788) TODO: verify if there's anything for us to do here.
Regarding this item, I did some research, and it appears that the current proposal does not require any changes in the compiler. Instead, it involves modifications to the execution and consensus clients. Although, while reading the EIP I thought that the parent_beacon_block_root
would be exposed at the language level, but this does not seem to be the case according to the current specification.
Originally, the EIP was drafted requiring a new opcode (BEACON_STATE_ROOT
at 0x4A
, now used by BLOBBASEFEE
), but it was later modified to incorporate a "stateful" precompile. More recently, another change was made, the "stateful" precompile idea was dropped, and now the EIP proposes the use of what is now referred to as a "system contract". As per the current specification, the parent_beacon_block_root
would be passed as calldata to the system contract (which would have the bytecode directly deployed at the given system address), and the execution clients would write to or read from the EVM state through a system transaction. I may have misunderstood something, so it would be helpful if someone else could confirm this as well.
from solidity.
I can confirm @r0qs analysis, there's nothing for us to do there. It's implemented as a system contract and does not add any new opcodes. The fact that EIP-4788 is never mentioned in evmc 10.1...11 diff (including the changelog) confirms that.
BTW, thanks for digging into the history of this EIP. Reading it now, I see no mention that it went from opcode, to precompile, to system contract, so that's useful to know.
from solidity.
Actually, maybe absence of this in evmc does not really confirm it (e.g. MCOPY does not require any changes there either).
On the evmone side the change was done in ethereum/evmone#709. Still, looks like this does not require any special compiler support. The VM automatically executes the system call that updates the circular buffer with block roots before every block. It does not deploy the system contract on its own, but, as far as I understand the EIP, it's not really the responsibility of the VM. Presence of the contract is optional.
It might at most affect our testing if we wanted to include contracts that call this system contract. For that I guess we'd have to deploy it when we set up the test environment? That does not seem like something we need right now though.
from solidity.
For EIP-6780: SELFDESTRUCT only in same transaction
we may need some changes in tests. At least the self-destructed contracts should no longer be cleared:
Lines 186 to 187 in fbbac9c
This might not be the only change.
from solidity.
Related Issues (20)
- solc produce Different Bytcode in multiple contracts after an equivalent expression change HOT 5
- Enable Discussions In This Repository HOT 1
- SMTChecker support for EIP-6780: SELFDESTRUCT only in same transaction
- New macOS Universal Binaries are signed HOT 4
- Incoherence in compiler output and CHC encoding produced by SolCMC
- Fix release docker build (alpine) and add a nightly CI run HOT 1
- Remove EIP-1153 Warning HOT 3
- Emscripten binaries in solc npm package and in solc-bin are not identical
- Function "tstore" not found HOT 2
- Security Vulnerability in Ethereum Smart Contracts HOT 6
- ABI is different for functions defined in libraries as compared to contracts.
- Function overload clash for custom types
- version pragma accepts partial string literals in any position HOT 2
- Outputting the CBOR Metadata positions in the bytecode HOT 1
- Introduce `readonly` modifier for internal function parameters in memory
- Shift in AST IDs affects inlining and expression splitting decisions in Yul Optimizer, causing bytecode differences HOT 1
- [TypeChecker] ICE in memoryMemberTypes() HOT 2
- Copying `calldata` and `memory` arrays to storage reports ICE HOT 2
- Add Python packages to docker base image HOT 6
- Donating Funds to Solidity HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from solidity.