Сломанный LongDouble с Mythril [закрыто]

Вопрос или проблема

В настоящее время я использую Windows 10 с, я полагаю, WSL1.

  • Конфигурация системы: Ubuntu [ Версия: 22.04.3]
  • Версия Mythril: [ Версия: 0.24.8 ]
  • Версия Numpy: [ Версия: 2.2.1]
  • Версия Python: [ Версия: 3.10.12]

Когда я ввожу эту команду:

myth analyze

Я получаю следующее предупреждение:

/home/slither/mythril/complete/0.4.11/0x0a2b7fd09f82b221f4704dc2501eb4c12cce346d.sol
Сообщение об ошибке /home/slither/mythril-env/lib/python3.10/site-packages/numpy/_core/getlimits.py:551:
UserWarning: Подпись b'\x00\xd0\xcc\xcc\xcc\xcc\xcc\xcc\xfb\xbf\x00\x00\x00\x00\x00\x00' для <class 'numpy.longdouble'> не соответствует никакому известному типу: возврат к функции проверки типа.
Это предупреждение указывает на поврежденную поддержку для dtype! machar = _get_machar(dtype)***

Я спросил у ChatGPT, и ответ был: Предупреждение, которое вы видите, связано с проблемой совместимости между NumPy и поддержкой плавающих чисел вашей системы, в частности для типа longdouble. Это предупреждение не является критическим и, вероятно, не повлияет на функциональность.

Я пытался найти больше информации, и ответ был: WSL 1 не совместим с Mythril. Я установил WSL 2, но он не устанавливается на моем ПК. Как я могу решить это предупреждение?

Ответ или решение

Ваша ситуация связана с предупреждением, которое появляется при использовании Mythril, анализаторе безопасности для смарт-контрактов на Ethereum, в среде Windows Subsystem for Linux (WSL) с использованием Ubuntu. Конкретная ошибка касается несовместимости NumPy с вашей системой в отношении числового типа данных longdouble. Давайте разберем, что это значит и как с этим справиться, используя подход TEA.

Теория (Theory)

NumPy — это пакет для языка Python, предоставляющий поддержку многомерных массивов и различных математических функций для работы с ними. Одной из возможностей NumPy является работа с различными числовыми типами данных, включая float, double и longdouble. Тип longdouble в NumPy предназначен для хранения чисел с более высокой точностью, чем стандартный double, и зависит от реализации компилятором и системой.

Предупреждение, которое вы получаете, связано с тем, что система не может найти подходящее соответствие для сигнатуры типа longdouble в используемой вами конфигурации ОС и архитектуре. Это часто происходит в окружениях, где поддержка типа longdouble не реализована на аппаратном уровне или несовместима с библиотеками интерпретатора Python на данной платформе, что, как правило, не критично, но предупреждение может быть назойливым.

Пример (Example)

Ваша текущая ситуация включает использование Windows 10 с WSL1, и при запуске команды myth analyze вы получаете следующее предупреждение:

Error message occured /home/slither/mythril-env/lib/python3.10/site-packages/numpy/_core/getlimits.py:551:
UserWarning: Signature b'\x00\xd0\xcc\xcc\xcc\xcc\xcc\xcc\xfb\xbf\x00\x00\x00\x00\x00\x00' for <class 'numpy.longdouble'> does not match any known type: falling back to type probe function. This warnings indicates broken support for the dtype! machar = _get_machar(dtype)***

Данное предупреждение указывает на то, что тип данных longdouble не поддерживается, и используется запасной метод для определения машино-специфичных характеристик этого типа. В ответах, которые вы нашли в интернете, отмечается, что WSL1 имеет ограничения, из-за чего некоторые функции и библиотеки могут работать некорректно.

Применение (Application)

Чтобы минимизировать влияние этого предупреждения и продолжить работу с Mythril эффективно, рассмотрите следующие шаги:

  1. Переход на WSL2: WSL2 использует полную виртуализацию и обладает более совместимой средой для Unix-подобных приложений, предлагая более высокую производительность и улучшенную поддержку системных функций. Если вы сталкиваетесь с проблемами установки WSL2, проверьте следующее:

    • Обновите Windows 10 до последней версии, поскольку WSL2 требует обновленных компонентов ОС.
    • Убедитесь, что виртуализация включена в BIOS вашего компьютера.
    • Следуйте официальным инструкциям Microsoft для установки и настройки WSL2.
  2. Работа в Обход: Если обновление до WSL2 невозможно, а предупреждение не влияет на функциональность приложений, оставьте его без внимания. Это предупреждение носит образовательный характер и не должно влиять на работу Mythril.

  3. Локальная Установка: Рассмотрите возможность установки всей необходимой среды разработки напрямую на Linux, чтобы избегать проблем, связанных с WSL. Использование непосредственно Ubuntu на выделенном устройстве может ликвидировать многие проблемы совместимости.

  4. Обновление Пакетов: Убедитесь, что все используемые пакеты (Python, NumPy, Mythril и т.д.) обновлены до последних версий. Это может включать в себя использование pip для обновления Python-пакетов:

    pip install --upgrade mythril numpy
  5. Оптимизация Среды: Настройте виртуальное окружение Python для изоляции библиотек, чтобы избежать конфликтов. Используйте venv или virtualenv:

    python -m venv myenv
    source myenv/bin/activate

Заключение

Данная проблема с ошибочным сообщением о типе longdouble не должна существенно влиять на вашу работу с Mythril. Однако переход на WSL2 или использование нативной установки Ubuntu может улучшить общую производительность и устранить множество неудобств. Если переустановка или обновление среды вызвало сложности, проконсультируйтесь с официальной документацией или сообществами разработчиков, такими как Stack Overflow или Ubuntu Forums, для уточнения деталей конфигурации и решения возможных проблем.

Оцените материал
Добавить комментарий

Капча загружается...