Итак, у вас есть проект со смарт-контрактами, над которым постоянно работают и обновляются. Как реализовать непрерывную интеграцию для автоматизации тестирования и аудита этих смарт-контрактов? Это то, что я собираюсь рассказать.
Используя существующий инструмент MythX CLI под названием Mythos, мы собираемся автоматизировать тестирование конкретного смарт-контракта каждый раз, когда CircleCi завершает автоматическую сборку.
Шаг 1. Создайте учетную запись MythX
Первый шаг - создать учетную запись на https://mythx.io.
Шаг 2. Откройте файл config.yaml проекта.
Я предполагаю, что у вас уже есть проект с CircleCi. Если нет, есть много руководств по этому поводу. Добавьте следующий шаг выполнения.
- run: yarn mythx
Шаг 3. Откройте файл проекта package.json
Мы собираемся обновить раздел скриптов, чтобы включить команду MythX и зависимости, чтобы включить Mythos.
Установите Mythos клиент MythX CLI npm install -D @cleanunicorn/mythos --save
В этом примере я использую пример Контракт на продажу токенов, но вы можете использовать сглаживание, такое как трюфель-сглаживание, для файлов с включенным импортом. Вы также можете автоматизировать выравнивание, включив вызов flatten в свой config.yaml.
Обновите раздел скриптов в package.json "mythx": "mythos analyze ./test.sol Tokensale"
Шаг 4. Настройте Circle CI
Теперь настройте CircleCli для хранения окружения. Загляните в настройки вашего проекта на предмет переменных окружения
Выберите «Добавить переменную», чтобы добавить учетные данные MythX: MYTHX_ETH_ADDRESS
MYTHX_PASSWORD
Шаг 4. Разверните новую сборку
Когда процесс сборки CircleCI вызывает yarn MythX, вы должны увидеть вывод консоли, если он обнаружит какие-либо проблемы. Обратите внимание, что предупреждения не останавливают сборку, а ошибки останавливают.
Вот и все. Теперь у вас есть MythX, интегрированный в вашу сборку автоматического развертывания!
Примечание. Я не тестировал все сценарии, чтобы узнать, всегда ли он будет останавливать сборку в случае ошибки.
Покрывающий тест для нескольких смарт-контрактов
Вы можете сгруппировать несколько смарт-контрактов для проверки в package.json с помощью && и нескольких сценариев, пометив их в package.json
Протестируйте два смарт-контракта контракты с «пряжей мифх»:
"mythx": "mythos analyze ./test.sol Tokensale && mythos analyze ./token.sol MyToken"
Также пропустите тестирование конкретного смарт-контракта с флагом «yarn Myx: nosale»:
"mythx:nosale": "mythos analyze ./token.sol MyToken"
Вы можете добавить несколько сценариев в свои config.yaml и package.json. В зависимости от того, какое тестовое покрытие вы хотите.
Отказ от ответственности: MythX предоставляет набор инструментов и API для аудита смарт-контрактов, но не заменяет и не расширяет возможности профессионального аудита ваших смарт-контрактов. Любой смарт-контракт, который вы публикуете для публичного использования или даже в частном порядке, должен пройти профессиональный аудит. Эти инструменты - просто способ помочь выявить общие известные проблемы и избежать их. Он может не охватывать все, поэтому любой смарт-контракт должен проходить профессиональный аудит.