Итак, у вас есть проект со смарт-контрактами, над которым постоянно работают и обновляются. Как реализовать непрерывную интеграцию для автоматизации тестирования и аудита этих смарт-контрактов? Это то, что я собираюсь рассказать.

Используя существующий инструмент 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 для аудита смарт-контрактов, но не заменяет и не расширяет возможности профессионального аудита ваших смарт-контрактов. Любой смарт-контракт, который вы публикуете для публичного использования или даже в частном порядке, должен пройти профессиональный аудит. Эти инструменты - просто способ помочь выявить общие известные проблемы и избежать их. Он может не охватывать все, поэтому любой смарт-контракт должен проходить профессиональный аудит.