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

EVM- Implement STATICCALL #1168

Open
4 tasks
feliam opened this issue Oct 1, 2018 · 0 comments
Open
4 tasks

EVM- Implement STATICCALL #1168

feliam opened this issue Oct 1, 2018 · 0 comments
Assignees
Labels

Comments

@feliam
Copy link
Contributor

feliam commented Oct 1, 2018

https://github.com/ethereum/EIPs/blob/ed621645c8f3bc5756492f327cda015f35d9f8da/EIPS/eip-214.md

We need to add support for STATICCALL opcode added in Byzantium fork.

Things that needs to be done:

  • Add tests from EIP [1]
  • Think of more cases the EIP doesn't specify and add them to the test suite.
  • Add concrete execution implementation, make the symbolic parts fail (don't test this failures) [2].
  • Add symbolic execution implementation [3]

[1] The tests should be minimal, e.g. doing only the necessary operations like creating a super small contract from bytecode that uses given instruction. The stuff should also be documented well: the instruction implementation should have a link to EIP in its docstring, when creating contract from bytecode we should have some comments describing what instructions are there. So in the end if someone else looks at the code later on they will immediately know what is going on.
[2] The symbolic part failure should be done by checking issymbolic(argument), ofc only for the parts that can be symbolic.
[3] Please keep in mind that there are certain things that appears to be concrete all the time but there are cases in which they might not be. One of the examples can be EVM.pc. When we apply a IntegerOverflowDetector, the value of pc might get tainted (tainting means marking values so if other values depend on them, they are also marked and so we can detect how certain variables depend on each other) and so changed to Constant; we had a bug related to this that was fixed in #1347.

The concrete and symbolic parts can be done in separate PRs.

@dguido dguido added this to Todo for 0.2.3 in Manticore Releases Nov 5, 2018
@dguido dguido added the ethereum label Nov 5, 2018
@disconnect3d disconnect3d removed this from Todo for 0.2.3 in Manticore Releases Jan 15, 2019
ESultanik added a commit that referenced this issue Mar 12, 2019
disconnect3d pushed a commit that referenced this issue Mar 14, 2019
* Report the transaction type that is not yet supported

* Added a more informative error about the `STATICCALL` opcode (#1168)

* Reminder for when #1168 is addressed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

3 participants