Результаты нашего аудита смарт-контракта с отслеживанием битов и подход к обеспечению безопасности в Origin
В Origin мы очень серьезно относимся к безопасности. В частности, мы очень осторожно относимся к нашим смарт- контрактам, так как они являются основой нашей одноранговой торговой платформы, и на карту поставлены вопросы безопасности финансовых операций наших пользователей.
Наша философия безопасности смарт-контрактов состоит из нескольких этапов:
Открытый исходный код. Как и остальная часть нашей кодовой базы, наш код смарт контрактов тоже является открытым. Таким образом, мы можем использовать сообщество для предупреждения о возможной ошибке, что поможет нам быстро исправить новые потенциальные угрозы безопасности.
Статический анализатор кода. Такие инструменты, как slither, помогают выявить слабые места и рекомендуют лучшие методы кодирования. Хотя на эти инструменты нельзя положиться, чтобы выявить все возможные слабые места, они обеспечивают эффективный дополнительный уровень контроля.
Модульное тестирование. Когда речь идёт проверке подходящего логического алгоритма для смарт контракта, имеющий нетривиальный набор возможных состояний (например, контракт Origin маркетплейс), невозможно полагаться на ручное тестирование. Мы написали полный набор модульных тестов, которые автоматически запускаются при каждой фиксации изменений через CircleCI. Тесты написаны на Javascript и используют стандартные инструменты и библиотеки, такие как компилятор Solidity, Truffle и Web3.js.
Независимая экспертиза. Любой запрос на включение изменений, отправленный в кодовую базу Origin Protocol, должен быть тщательно проверен старшим инженером проекта, прежде чем он будет зафиксирован в репозитории.
Multi-sig. После выполнения развертывания наших смарт-контрактов мы передали их право собственности в Gnosis multi-sig кошельки. Теперь любые изменения в наших смарт-контрактах требуют цифровой подписи от нескольких подписантов до их исполнения. Для нашего маркетплейс контракта мы используем 3 из 8 multi-sig, что означает, что для любых изменений требуется 3 из 8 ключевых держателей. Для нашего ERC-20 токен контратка, где ставки еще выше, мы используем multi-sig 5 из 8 для еще большей безопасности. Это дает нам уверенность в том, что даже если один из наших ключевых держателей выйдет из строя или его полномочия будут скомпрометированы, злоумышленник не сможет изменить наши контракты.
Внутренний аудит. В дополнение к независимой экспертизе кода, во время его разработки, когда наши смарт-контракты находятся на заключительной стадии разработки, мы отводим время для проведения исчерпывающего внутреннего аудита безопасности. Мы выбрали инженера в нашей команде, который заботится о безопасности, но не принимал участие в реализации контрактов - так что он посмотрит на дело с новой точки зрения.
Внешний аудит. Мы проверили референсы и опросили несколько холдинг компаний, прежде чем принять решение о найме Trail of Bits для проведения внешнего аудита наших смарт- контрактов. Trail of Bits высоко ценится не только в блокчейн мире, но и среди более широкого технического сообщества.
В целом этот подробный аудит выявил 11 вопросов различной степени серьезности (4 высоких, 4 средних, 1 низкий и 2 информационных) и типов (условия гонки, контроль доступа, ограничения в случае будущих обновлений, ошибки в логике).
Платформа Origin Protocol состоит из двух основных уровней: наверху наших смарт-контрактов находится библиотека Javascript на основе GraphQL, обеспечивающая более высокий уровень абстракции. Клиенты (например, DApps) используют библиотеку, а не взаимодействуют непосредственно со смарт-контрактими. Мы тщательно продумали, на каком уровне было бы наиболее целесообразно устранять проблемы в каждом уязвимом месте. В конце концов, в то время как для решения некоторых проблем мы внедрили исправление в код смарт-контракта, для других мы решили, что исправление в библиотеке Javascript будет столь же эффективным и даст нам больше гибкости в будущем.
Вот несколько интересных элементов, которые были обнаружены и исправлены в рамках общего процесса аудита:
Было уязвимое место, заключающееся в том, что если для оплаты листинга на рынке будет использоваться токен с возможностью внешнего запуска (как, токен ERC-223), злоумышленник мог бы снять больше средств, чем было депонировано, повторно введя метод изъятия предложения. Это было устранено путем рефакторинга кода смарт-контракта на рынке, чтобы более точно придерживаться модели Check-Effects-Interactions.
Трудно находимая ошибка(эта строка отсутствовала!) этап реализации метода аннулирования листинга на торговой площадке могла позволить злоумышленнику получить возмещение более одного раза вклада OGN связанного с их листингом. На самом деле это также оказалось хорошей проверкой качества нашего процесса аудита, поскольку как внутренние, так и внешние аудиторы обнаружили проблему!
Полный отчет о внешнем аудите доступен в Trail of Bits, а также приведен ниже:
Работа, описанная в этой статье, является хорошей иллюстрацией вовлеченности нашей команды в обеспечение безопасного, заслуживающего доверия и восхитительного опыта для всех пользователей нашего рынка!
Для справки, вот адреса основных контрактов Origin Protocol на Ethereum Mainnet:
Origin Token (OGN): 0x8207c1FfC5B6804F6024322CcF34F29c3541Ae26
Origin Marketplace: 0x698Ff47B84837d3971118a369c570172EE7e54c2
Узнайте больше про Origin:
Покупай и продавай на мобильном: www.originprotocol.com/mobile
Используйте наш веб: shoporigin.com
Узнайте больше на нашем сайте: originprotocol.com
GOLOS: golos.io/@originprotocol