Skip to content

manticore breaks with crytic-compile v0.2.2 #2509

@elopez

Description

@elopez

Summary of the problem

Manticore uses filename_of_contract which has been removed on crytic-compile v0.2.2 (via crytic/crytic-compile#223)

https://github.com/trailofbits/manticore/blob/master/manticore/ethereum/manticore.py#L305

This causes manticore to throw an exception. Downgrading crytic-compile with pip install crytic-compile==0.2.1 fixes this issue.

Manticore version

Version: 0.3.6

Python version

Python 3.6.9

OS / Environment

Distributor ID: Ubuntu
Description: Ubuntu 18.04.6 LTS
Release: 18.04
Codename: bionic

Dependencies

cryptography==2.1.4
crytic-compile==0.2.2
cytoolz==0.11.2
dataclasses==0.8
eth-hash==0.3.2
eth-typing==3.0.0
eth-utils==2.0.0
future==0.18.2
idna==2.6
importlib-metadata==4.8.2
intervaltree==3.1.0
keyring==10.6.0
keyrings.alt==3.0
manticore==0.3.6
ply==3.11
prettytable==2.4.0
protobuf==3.19.1
pycrypto==2.6.1
pyevmasm==0.2.3
pygobject==3.26.1
pysha3==1.0.2
python-apt==1.6.5+ubuntu0.7
pyxdg==0.25
PyYAML==6.0
rlp==3.0.0
SecretStorage==2.3.1
six==1.11.0
solc-select==0.2.1
sortedcontainers==2.4.0
toolz==0.11.2
typing-extensions==4.0.1
unattended-upgrades==0.1
wasm==1.2
wcwidth==0.2.5
z3-solver==4.8.13.0
zipp==3.6.0

Step to reproduce the behavior

Run manticore tests from https://github.com/crytic/building-secure-contracts

Expected behavior

Tests run

Actual behavior

Manticore throws an exception

Any relevant logs

Traceback (most recent call last):
  File "example_run.py", line 9, in <module>
    contract_account = m.solidity_create_contract(f, owner=user_account)
  File "/usr/local/lib/python3.6/dist-packages/manticore/ethereum/manticore.py", line 576, in solidity_create_contract
    source_code, contract_name_i, libraries=deps, crytic_compile_args=compile_args
  File "/usr/local/lib/python3.6/dist-packages/manticore/ethereum/manticore.py", line 350, in _compile
    source_code, contract_name, libraries, crytic_compile_args
  File "/usr/local/lib/python3.6/dist-packages/manticore/ethereum/manticore.py", line 305, in _compile_through_crytic_compile
    filename = compilation_unit.filename_of_contract(name).absolute
AttributeError: 'CompilationUnit' object has no attribute 'filename_of_contract'

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions