Comments (5)
Another point of view to consider is that while a contract cannot modify itself, it can construct an arbitrary fragment of code, CREATE it as a new contract, and then DELEGATECALL the contract it created to effectively execute arbitrary code. So I'm honestly not sure it's correct to claim that evm doesn't support self modifying code.
from evm-semantics.
programs can't modify themselves, but the point still remains that a translation back to bytecode representation must be maintained for EVM execution (which makes reasoning about EVM code more difficult).
from evm-semantics.
Understood, thank you.
Perhaps that line and the following can be improved. Such can be the scope of this issue.
While self-modifying code is nice and powerful in principle, we are not aware of any programming languages for the blockchain that encourage or even allow that.
from evm-semantics.
Also, yes, difficult to reason.
FYI, here's is a (limited) Solidity decompiler I am writing. It runs on the blockchain.
Thought you might get a laugh out of that.
from evm-semantics.
Fair enough, can execute arbitrary code. I suggested a slightly different wording here.
Fun stuff to look at for sure!
from evm-semantics.
Related Issues (20)
- KEVM build instructions are out of date
- `#parseHexBytes` should be declared total HOT 6
- Opt in to new type inference method HOT 2
- Constructor calls with symbolic parameters HOT 1
- De-duplicate rules introduced as part of the no-gas PR
- Segfaults on arm64 macOS
- Add option to break on every basic block HOT 1
- Fix warnings on non-exhaustive matches for rules HOT 2
- Duplicate lemmas between two different files HOT 2
- Default Behavior for Lemma File and Module Import in Kontrol
- Tests missing from Pytest harness HOT 1
- Examples in `VERIFICATION.md` do not work as expected
- `fast_check_subsumption` causes `Could not convert ML predicate to sort Bool` error
- Rule coverage and configuration well-formedness HOT 1
- Turn off `fast_check_subsumption` in CLI by default
- Investigate SMT timeout in `test-arithmetictest-test_wmul_wdiv_inverse_underflow-uint256-uint256-0-spec.k`
- Outdated examples in KEVM HOT 2
- Failure to make libcryptopp libff libsecp256k1 HOT 3
- Add Dencun upgrade changes
- Unable to run claims with `kevm prove` 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 evm-semantics.