Прогресс развития за последний квартал 2017 года

В последнем квартале 2017 года мы с головой погрузились в разработку всего для выпуска версии 0.5 приложения Aragon Core. Достигнут большой прогресс, первый аудит смарт-контрактов был проведен с хорошими результатами, и мы идем по плану, чтобы в ближайшее время выпустить тестовую сеть ™.

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

Без лишних слов, вот список некоторых крупных изменений, произошедших в четвертом квартале:

Новые проекты, которые мы начали в четвертом квартале 2017 года:

Поскольку мы занимались этим капитальным ремонтом проекта, который начался с изменения внешнего вида и был расширен с созданием aragonOS, потребовались также новые инструменты.

Новый подход делает Aragon модульным и детализированным, так что пользователи могут выбирать, как управлять своими организациями, а также могут создавать любые функции, которые, по их мнению, отсутствуют. Мы начали создавать инструменты, необходимые для создания любых приложений на базе Aragon, и это новейшие инструменты, которые помогут в создании экосистемы Aragon.

Первое аудиторское заключение

Чтобы обеспечить прозрачность хода нашей разработки, мы опубликовали первоначальный аудиторский отчет системы aragonOS, которая используется в версии 0.5 для Aragon Core.

Первый обзор архитектурной системы aragonOS был проведен Адамом Досса, и полный отчет можно найти в Aragon wiki.

В результате аудита были внесены некоторые изменения в кодовую базу, но критических проблем обнаружено не было.

Дальнейшие аудиты и публичные программы поощрения ошибок запланированы на начало в январе 2018 года. Если вы заинтересованы в том, чтобы принять участие и внести свой вклад в эти поощрения ошибок или любые другие поощрения в наших репозиториях GitHub, ищите _1 _ ярлыки в разных репозиториях выпусков!

Вести с фронта

Начиная со следующей версии, v0.5 - The Refactor Release, в Aragon будет полностью обновлен интерфейс. Решение о редизайне DApp было простым. Необходимо было привести приложение и его обновленную графическую идентификацию, принципы дизайна и варианты использования в соответствие с исходной документацией проекта.

Здесь Пьер Бертэ предоставил краткую информацию о прогрессе, достигнутом за последнее время в области разработки интерфейсов.

AragonOS

Смарт-контракты для управления организациями Aragon Core

С последними обновлениями после аудита версия aragonOS была обновлена ​​до 2.0.1.

Реализована поддержка динамических возвратов в прокси-серверах delegatecall.

Я представил эту тему на конференции Ethereum Devcon3 под названием Разработка ориентированных на будущее систем смарт-контрактов, и работа над этой темой продолжилась еще больше. слайды презентации можно найти в вики.

Этот PR абстрагирует концепцию DelegateProxy, которую теперь используют как KernelProxy, так и AppProxy для вызова делегатов в фактическую реализацию.

Также переадресация будет revert при попытке переадресовать вызов на адрес без кода, так как раньше он просто терпел неудачу.



Также обновляет контракты токенов Zeppelin до последней версии, чтобы избежать сбоев с утверждениями SafeMath.



Упрощенный родительский экземпляр разрешения для владельца разрешения в ACL

В текущей итерации ACL ядра каждый экземпляр разрешения имеет своего собственного родителя. Более подробное объяснение можно найти в разделе ACL документа aragonOS. В этой модели родительский элемент экземпляра разрешения означает две разные вещи:

Родитель всегда может отозвать экземпляр разрешения.

Если у сущности есть разрешение, и она также является собственным родительским объектом, она может повторно предоставить разрешение.

Проблема с этой моделью разрешений заключается в том, что в случае, если разрешение было предоставлено объекту, который не может выполнять произвольные вызовы (например, финансы или сбор средств)

Предлагаемая новая модель

Введите разрешение owner на уровне разрешения и удалите разрешение parent с уровня экземпляра разрешения. owner может grant или revoke произвольное количество экземпляров этого разрешения.



Приложение для сбора средств было изменено в соответствии с новым стандартом ERC-677.



Внедрение BaseFactory для атомарных развертываний DAO.

Идея, лежащая в основе развертывания организаций Factory, заключается в том, что для полной настройки организации по умолчанию с разумными настройками разрешений по умолчанию требуется всего одна транзакция в цепочке.

Он выполняет развертывание KernelProxy, одного MiniMeToken и одного экземпляра всех приложений aragonOS по умолчанию.

Разрешения по умолчанию дают слишком много полномочий группе, называемой «Founders Group», в которую добавлен создатель организации. Для очень деструктивных действий (например, обновления ядра) требуется голосование. Приложение для голосования использует созданный токен в качестве токена управления, создателю организации дается 1 токен, поэтому приложение для голосования можно использовать.

Когда приближается запуск, мы должны создать несколько типов фабрик (вроде шаблонов организаций).



Улучшенные интерфейсы для упрощения разработки приложений Aragon.

Упрощает «объединение» интерфейсов для разработки приложений вместо копирования всего файла ядра.



Полировка проводилась в приложении "Голосование".

После вызова votingApp.changeMinAcceptQuorumPct(uint256 _minAcceptQuorumPct) голосование, которое считалось отклоненным из-за несоблюдения минимального кворума, могло стать исполняемым из-за изменения кворума.

Возможен и обратный случай, когда голосование выглядит так, как будто оно будет одобрено, но изменение кворума принятия делает его неудачным.

Предлагаемое изменение заключается в том, чтобы при каждом голосовании отслеживать значение minAcceptQuorumPct во время создания.

Вместо того, чтобы возвращать хэш сценария вызова evm, верните весь сценарий.

Удалите из памяти бесполезное vote.open логическое значение.

Улучшение расчетов для поддержки и минимального кворума для малых кворумов



Новые тесты для токена MiniMe, предоставленные участником сообщества cpurta

Добавьте тесты, охватывающие как базовую функциональность ERC20, так и специфическую функциональность MiniMe, такую ​​как клонирование.



Обновление ЛИНТЕР, предоставленное участником сообщества cpurta

Обновите solium до последней версии и обновите файл конфигурации, чтобы использовать обновленный синтаксис конфигурации. Также добавлены некоторые исправления, предложенные линтером.



Добавлена ​​возможность выполнять полезную нагрузку инициализации при развертывании AppProxy.

Добавляет возможность предоставлять полезные данные для выполнения при развертывании AppProxy. Это позволяет выполнять атомарное развертывание и инициализацию любого приложения без необходимости иметь конкретную фабрику.

Он не должен создавать каких-либо уязвимостей безопасности, поскольку прокси-сервер будет переадресовывать любой вызов таким же образом после его развертывания.



Обновленный Solium до ^ 1.0.4, предоставленный участником сообщества cpurta

В пакет добавлена ​​самая последняя версия solium вместе со всеми зависимостями, необходимыми для этой версии.



Удален Babel

После выпуска Node 9 и 8.9.x у нас больше нет неподдерживаемых функций в этом репозитории. Я думаю, мы можем безопасно удалить Babel и использовать Node 8.9.x или Node 9, поскольку мы используем Node только для тестов.



CanPerform + getPermission обновлен до hasPermission в ядре.



Добавлен LogScriptCall для отслеживания пересылки

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



И все приложения были перемещены в собственный репозиторий aragon-apps.

Приложения были перемещены в собственное хранилище, aragon-apps, чтобы их можно было разрабатывать вместе со своим клиентским кодом и иметь стандартную структуру пакетов APM.

В aragonOS остается ядро ​​и общие компоненты, используемые приложениями. Решение о переносе контрактов APM в aragonOS еще не принято.



Арагон-приложения

Этот монорепозиторий содержит основные приложения, которые по умолчанию идут в комплекте с Aragon.

Приложение для голосования претерпело несколько небольших изменений.

  • Измените все случаи, когда «голосование» использовалось вместо «голосование».
  • Регистрирует долю избирателя в событии «отданный голос».
  • Добавьте логический параметр при голосовании, должен ли он выполняться автоматически.


Бюджет в приложении "Финансы" исправлен

После уменьшения бюджета проверка оставшегося бюджета может завершиться ошибкой, поскольку расходы превышают сумму бюджета для данного токена.

Мы должны добавить проверку того, не превышает ли уже потраченный бюджет, и вернуть 0 как оставшийся бюджет.



Покрытие тестами увеличено до 95%.

Изменения в нескольких приложениях для увеличения покрытия



Обновлена ​​зависимость aragonOS до 1.0.2 и адаптированы тесты для Byzantium, предоставленные участником сообщества yippee-ki-yay

Аналогичный пиар уже был слит для aragonOS.

Я обновил зависимость aragonOS до 1.0.2 и обновил тест, чтобы проверить наличие assertRevert (новый код операции, добавленный в Byzantium), также пришлось обновить ethereumjs-testrpc, чтобы он имел код операции возврата.



Изменены модификаторы доступа для всех контрактов

Все функции должны иметь явный модификатор доступа (external, public и т. Д.).



Арагон-уй

Aragon UI - это набор инструментов интерфейса, используемый Aragon и связанными с ним проектами.

Большим изменением в aragon-ui стал переход с Vue на React. В остальном прогресс в этом наборе интерфейсных инструментов был стабильным и очень хорошо продвигался вперед.

Перейти к React

Примечание: этот PR также включает цветовую систему.

Я имею в виду задачу выпустить веб-сайт документации (похожий на веб-сайт Aragon), а также предоставить спецификации дизайна.

В конце концов, я хотел бы предоставить разработчикам Aragon унифицированный веб-сайт, содержащий все необходимое для создания платформы: API node-aragon, API компонентов пользовательского интерфейса Aragon, а также руководства и рекомендации.

Storybook предоставляет прекрасную среду для разработки компонентов (это мое решение), но я не думаю, что она будет достаточно гибкой для нашего случая (или это означало бы отключение ее основных функций, таких как нижняя панель).

Подводя итог: больший контроль, простота реализации (меню + маршрутизация + истории), пробуждение и, в конечном итоге, лучший опыт.

Loader - единственный отсутствующий компонент, я думаю, что пока он слишком конкретен. Я хотел бы увидеть, как мы управляем состояниями загрузки в клиенте Aragon, прежде чем добавлять общий Loader компонент.



Перемещено из CSS с ограниченным объемом в модули CSS



Установите общедоступный URL-адрес ресурсов во время выполнения

Использование транспилированной библиотеки решает все эти проблемы, кроме одной. Большинство современных систем сборки имеют некоторый механизм для импорта зависимостей, отличных от JS, который позволяет в контексте библиотеки компонентов иметь активы компонента в одном каталоге (вместо использования глобальной папки).

Когда модули переносятся, связь между импортирующим модулем и активами теряется в процессе, и все ссылки на активы разрываются.

Решение, реализованное этим коммитом, следующее:

Библиотека переносится на «универсальный JS», с модулями ES6 и без них (для встряхивания дерева, если система сборки родительского проекта это поддерживает).

Родительский проект импортирует перенесенную версию пользовательского интерфейса Aragon, а также копирует ресурсы пользовательского интерфейса Aragon в каталог, где они могут обслуживаться веб-сервером.

Родительский проект оборачивает приложение пользовательского интерфейса Aragon в приложение AragonApp, которое позволяет установить общедоступный URL-адрес ресурсов набора инструментов: <AragonApp publicUrl="/">

Таким образом, каждый компонент пользовательского интерфейса Aragon, использующий актив, знает URL-адрес, из которого их можно получить.



Добавлены инструкции по импорту пользовательского интерфейса Aragon.



Добавлены компоненты babel-plugin-styled

Обеспечивает небольшое улучшение качества жизни отладки в галерее для имен компонентов и имен классов.

Я оставил собственные шаги минификации и транспиляции плагина, поскольку они кажутся довольно безопасными. Прямо сейчас они производят для меня незначительное уменьшение количества неминифицированных сборок на ~ 3–4 КБ.



Добавлен AppBar

Добавляет панель приложений Aragon по умолчанию с подключаемыми дочерними элементами (некоторые приложения имеют только заголовок на панели приложений; в этих случаях шеврон будет скрыт).



Добавлен набор иконок

Это изображения SVG, преобразованные в компоненты с помощью svgr (чтобы они были встроенными SVG и позволяли изменять их цвет).

Чтобы все значки не присутствовали в окончательной сборке, они экспортируются индивидуально (с префиксом Icon)



Обновления цветов

Этот коммит добавляет два новых цвета:

PositiveText

negativeText

Они оба белого цвета и должны использоваться для текста или контуров поверх «положительных» и «отрицательных» цветов.

Он также исправляет цвет theme.textTertiary для светлой темы, который был таким же, как theme.textSecondary.



Отображение отображаемых имен стилизованных компонентов в сборках

Позволяет отображать имена для пользователей этой библиотеки компонентов.

Увеличивает размер сборки на ~ 2–3 КБ, что, я думаю, пока нормально, учитывая улучшение качества жизни. В будущем у нас может быть производственная сборка, в которой это отключено, или, возможно, даже лучше, изменить плагин так, чтобы все отображаемые имена находились под флагом NODE_ENV.



Добавлен TextInput (и TextInput.Number)

Добавляет простую стилизованную рамку <input />.

Я добавил README как src/Form/Input.md, так как в будущем я вижу, что src/Form будет содержать несколько компонентов (все другие типы ввода и т. Д.). В общем, было бы интересно, если бы папки в src/ были группами, содержащими фактические компоненты, а документация по каждому компоненту была бы <component name>.md.



Добавлен компонент CircleGraph

Также содержит документацию и демонстрационную страницу.



Арагон-дев-кли

Инструмент командной строки для создания, тестирования и публикации приложений Aragon.

Также был проведен рефакторинг инструментария и добавлена ​​поддержка каркасов.

Первоначальный рефакторинг

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



Опорные леса

Добавляет поддержку скаффолдинга в команде init (например, aragon-dev-cli init [app ENS name] [template name, github repository name])

Команда клонирует репозиторий GitHub в папку. По умолчанию используется клонирование шаблона aragon / aragon-react-pipeline. Содержимое будет клонировано в «базовое имя» ENS-имени приложения, например для foo.aragonpm.eth он будет клонирован в папку с именем foo.

Учитывая, что у нас есть несколько официальных шаблонов, мы можем использовать их псевдонимы (например, вместо того, чтобы вводить aragon/aragon-react-boilerplate, достаточно просто ввести react).

Нерешенный

Нам как-то нужно обновить ключ name файла manifest.json в шаблонах, но они могут находиться в разных местах



Добавлен флаг адреса реестра ENS

Добавляет поддержку передачи настраиваемого адреса реестра ENS в качестве опции. Это позволяет использовать aragon-dev-cli в сети разработчиков без канонического реестра ENS.



Радспек

Radspec - безопасная альтернатива natspec Ethereum

Radspec представит следующие возможности:

  • Внешние вызовы: Radspec может выполнять вызовы внешних контрактов.
  • Безопасно: Radspec вообще не имеет доступа к DOM.
  • Просто. Несмотря на то, что radspec требует от вас встроенных типов для внешних вызовов, синтаксис очень знаком и удобочитаем (выглядит как Flow).
  • Совместимость: большинство уже существующих комментариев natspec также совместимы с Radspec.

Поддержка внешних звонков



Добавлены тесты сканера



Добавлены тестовые примеры для внешних вызовов и привязок



Добавлены типы привязок



Узел-арагон

Библиотека JavaScript для взаимодействия с Aragon

Рефакторинг обработчиков RPC



Рефакторинг `Proxy # call`



Добавлен инициализируемый ABI



Дополнительные ресурсы можно найти в Aragon GitHub и Aragon wiki!

В вики вы можете найти руководство по разработке aragonO S, документацию по aragonOS и Обзор разработки Aragon со списком владельцев репозиториев, и если вы чувствуете желание внести свой вклад или у вас есть какие-либо вопросы от разработчиков, перейдите на Aragon.Chat и дайте нам знать: мы рада помочь!

Текущие открытые баунти:

Чтобы идти в ногу с прогрессом Арагона:

Приходите пообщаться с нами в Арагонском чате

Следите за сообщениями Арагона в Twitter

Подпишитесь на сабреддит Арагона

Следите за Арагоном в LinkedIn

Сделайте вклад в Aragon на GitHub

Найдите нас на Youtube

Изучите Арагонскую вики