无法在智能合约上执行 Mythril。



我试图使用myth analyze <file>与Mythril分析一个简单的智能合约,但我得到了这个错误:

JX:Attack juanxavier$ myth analyze Counter.sol
Traceback (most recent call last):
File "/Library/Frameworks/Python.framework/Versions/3.9/bin/myth", line 33, in <module>
sys.exit(load_entry_point('mythril==0.23.3', 'console_scripts', 'myth')())
File "/Library/Frameworks/Python.framework/Versions/3.9/bin/myth", line 25, in importlib_load_entry_point
return next(matches).load()
File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/importlib/metadata.py", line 86, in load
module = import_module(match.group('module'))
File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/importlib/__init__.py", line 127, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
File "<frozen importlib._bootstrap>", line 1030, in _gcd_import
File "<frozen importlib._bootstrap>", line 1007, in _find_and_load
File "<frozen importlib._bootstrap>", line 986, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 680, in _load_unlocked
File "<frozen importlib._bootstrap_external>", line 850, in exec_module
File "<frozen importlib._bootstrap>", line 228, in _call_with_frames_removed
File "/Users/juanxavier/Library/Python/3.9/lib/python/site-packages/mythril/interfaces/cli.py", line 26, in <module>
from mythril.mythril import (
File "/Users/juanxavier/Library/Python/3.9/lib/python/site-packages/mythril/mythril/__init__.py", line 3, in <module>
from .mythril_config import MythrilConfig
File "/Users/juanxavier/Library/Python/3.9/lib/python/site-packages/mythril/mythril/mythril_config.py", line 14, in <module>
from mythril.ethereum.interface.leveldb.client import EthLevelDB
File "/Users/juanxavier/Library/Python/3.9/lib/python/site-packages/mythril/ethereum/interface/leveldb/client.py", line 13, in <module>
from mythril.ethereum.interface.leveldb.eth_db import ETH_DB
File "/Users/juanxavier/Library/Python/3.9/lib/python/site-packages/mythril/ethereum/interface/leveldb/eth_db.py", line 3, in <module>
import plyvel
File "/Users/juanxavier/Library/Python/3.9/lib/python/site-packages/plyvel/__init__.py", line 6, in <module>
from ._plyvel import (  # noqa
ImportError: dlopen(/Users/juanxavier/Library/Python/3.9/lib/python/site-packages/plyvel/_plyvel.cpython-39-darwin.so, 0x0002): symbol not found in flat namespace '__ZTIN7leveldb10ComparatorE'

我使用的是2014年末的MacMini和Monterey OS。

刚刚解决了。我尝试重新安装Mythril,然后重试:

pip3 uninstall mythril
pip3 install mythril

然后错误变为如下:

JX:contracts juanxavier$ myth analyze Counter.sol
Traceback (most recent call last):
File "/Library/Frameworks/Python.framework/Versions/3.9/bin/myth", line 33, in <module>
sys.exit(load_entry_point('mythril==0.23.3', 'console_scripts', 'myth')())
File "/Library/Frameworks/Python.framework/Versions/3.9/bin/myth", line 25, in importlib_load_entry_point
return next(matches).load()
File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/importlib/metadata.py", line 86, in load
module = import_module(match.group('module'))
File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/importlib/__init__.py", line 127, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
File "<frozen importlib._bootstrap>", line 1030, in _gcd_import
File "<frozen importlib._bootstrap>", line 1007, in _find_and_load
File "<frozen importlib._bootstrap>", line 972, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 228, in _call_with_frames_removed
File "<frozen importlib._bootstrap>", line 1030, in _gcd_import
File "<frozen importlib._bootstrap>", line 1007, in _find_and_load
File "<frozen importlib._bootstrap>", line 972, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 228, in _call_with_frames_removed
File "<frozen importlib._bootstrap>", line 1030, in _gcd_import
File "<frozen importlib._bootstrap>", line 1007, in _find_and_load
File "<frozen importlib._bootstrap>", line 986, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 680, in _load_unlocked
File "<frozen importlib._bootstrap_external>", line 850, in exec_module
File "<frozen importlib._bootstrap>", line 228, in _call_with_frames_removed
File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/mythril/__init__.py", line 8, in <module>
from mythril.plugin.loader import MythrilPluginLoader
File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/mythril/plugin/__init__.py", line 1, in <module>
from mythril.plugin.interface import MythrilPlugin, MythrilCLIPlugin
File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/mythril/plugin/interface.py", line 2, in <module>
from mythril.laser.plugin.builder import PluginBuilder as LaserPluginBuilder
File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/mythril/laser/plugin/builder.py", line 1, in <module>
from mythril.laser.plugin.interface import LaserPlugin
File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/mythril/laser/plugin/interface.py", line 1, in <module>
from mythril.laser.ethereum.svm import LaserEVM
File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/mythril/laser/ethereum/svm.py", line 9, in <module>
from mythril.analysis.potential_issues import check_potential_issues
File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/mythril/analysis/potential_issues.py", line 1, in <module>
from mythril.analysis.report import Issue
File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/mythril/analysis/report.py", line 10, in <module>
from mythril.solidity.soliditycontract import SolidityContract
File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/mythril/solidity/soliditycontract.py", line 7, in <module>
from mythril.ethereum.evmcontract import EVMContract
File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/mythril/ethereum/evmcontract.py", line 8, in <module>
from mythril.disassembler.disassembly import Disassembly
File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/mythril/disassembler/disassembly.py", line 2, in <module>
from mythril.ethereum import util
File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/mythril/ethereum/util.py", line 138, in <module>
all_versions = solcx.get_installable_solc_versions()
AttributeError: module 'solcx' has no attribute 'get_installable_solc_versions'

并通过运行

解决了这个问题:
pip3 uninstall py-solc-x

在此之后,我可以成功运行mythril。

最新更新