Обновление Enigma Development
Привет от команды Enigma! Далее следует наше последнее обновление для разработчиков, содержащее подробности о недавнем прогрессе в развертывании Discovery в testnet и запуске нашей Genesis Game , включая открытый исходный код для Discovery. Пожалуйста, прочитайте внимательно!
Enigma создает уровень конфиденциальности для децентрализованной сети. Узнайте больше о нашем проекте, протоколе и миссии с нашим вводным руководством - или присоединяйтесь к нашему форуму разработчиков.
Как упоминалось в качестве захватывающей предстоящей вехи в наших предыдущих обновлениях, по состоянию на конец марта 2019 года мы открыли исходный код для различных компонентов, составляющих протокол Enigma.
В целом, этот код представляет более 2377 комбинированных коммитов в трех репозиториях за последние месяцы. В этих репозиториях содержится около 60 000 строк нового кода и документации, которые теперь доступны для общественности впервые. Наша команда не может быть гордостью!
Ниже приведено краткое руководство по видимым на данный момент компонентам в нашем репозитории:
Enigma контракт и Enigmaа Библиотека : Энигма умный контракт написан на солидности обеспечивают консенсус слой для выпуска Discovery протокола Энигмы. Один экземпляр этого контракта будет сначала развернут в тестовой сети Ethereum, а затем в основной сети. Из-за сложности контракта и ограничений виртуальной машины Ethereum контракт разбит на несколько меньших, более модульных контрактов и библиотек, которые предоставляют различные части его функциональности. Посмотрите на миграцию контрактов, чтобы понять, как все эти контракты и библиотеки объединяются в то, что мы называем контрактом Enigma .
Этот репозиторий также включает библиотеку JavaScript Enigma , которая предоставляет интерфейс для секретного контракта и разработчиков DApp для использования протокола Enigma. Исходный код написан на ECMAScript 6 (ES6); в комплекте с Webpack и экспортируется в формате UMD, чтобы он работал везде. Репозиторий включает в себя более 100 модульных тестов, которые обеспечивают покрытие кода до 98% и подробно описывают функциональные возможности, предоставляемые как библиотекой Enigma, так и контрактом Enigma.
Ядро Enigma : Код этого хранилища лежит в основе протокола Enigma, отсюда и его название. Написанный на Rust, он включает в себя код, который выполняется внутри анклава (доверенный) и его аналог, который работает вне анклава (ненадежный) и взаимодействует с остальной частью сети. Следуя архитектуре кода Rust, этот репозиторий организует свой код в несколько ящиков, которые предоставляют несколько различных компонентов: реализацию Enigma интерпретатора WebAssembly (WASM) в Rust, среду выполнения Enigma, криптографическую (AES, ECDSA, ECDH) и хеш-библиотеку (Keccak256) и клиент удаленной аттестации.
Этот репозиторий также включает в себя узел управления ключами, написанный на Rust, который работает внутри анклава (доверенного) и управляет ключами для шифрования состояния для всех контрактов в каждой эпохе. Он отвечает на законные запросы от всех других анклавов в сети Enigma на ключи шифрования, назначенные любым таким узлам.
Enigma Core обеспечивает поддержку режима моделирования, в котором программное обеспечение можно запускать на компьютерах без поддержки Intel SGX для целей разработки (то есть для разработчиков DApp, которые разрабатывают и тестируют свои секретные контракты перед их развертыванием в реальной сети). Однако после развертывания сети Enigma в тестовой сети и основной сети присоединиться к сети Enigma смогут только анклавы, работающие в аппаратном режиме (на хостах с включенным SGX).
Enigma Peer-to-Peer (P2P) : написанный на Javascript и разветвляющийся на libp2p, этот репозиторий обеспечивает функциональность одноранговой сети для каждого из вышеперечисленных анклавов, образующих децентрализованную сеть. И Enigma-Core, и Enigma-P2P обычно работают на одном хосте, но структурированы как два отдельных репозитория, потому что они написаны на разных языках (Rust и Javascript, соответственно) и предоставляют очень разные функциональные возможности. Enigma-P2P работает в Node.js и предоставляет интерфейс командной строки (CLI), хотя обычно он запускается автоматически из файла конфигурации.
Enigma-P2P упаковывает различные автономные среды выполнения, которые обмениваются данными друг с другом через главный контроллер. Связь осуществляется по каналам, которые являются реализациями двунаправленной отправки сообщений, и с помощью действий, которые являются предопределенными сообщениями, к которым прикреплены определенные функциональные возможности. Эта инфраструктура оптимизирована для асинхронной связи, которая реагирует на уведомления между различными компонентами.
Каждый из репозиториев (и компонентов внутри каждого репозитория) содержит комплексный набор модульных тестов, которые описывают их функциональные возможности и обеспечивают широкий охват кода. Модульные тесты для всех вышеперечисленных репозиториев проходят, и каждый из этих репозиториев работает как отдельные компоненты. Хотя мы открыли эти репозитории с открытым исходным кодом, работа продолжается, и вы можете взглянуть как на текущий поток коммитов, так и на запросы и проблемы, которые мы открываем, разрабатываем, проверяем и объединяем.
В настоящее время мы работаем над одинаково обширным набором интеграционных тестов, которые проверяют разработанную функциональность каждого компонента как часть большего целого, охватывающего как сценарии «солнечного дня» (где все идет по плану), так и сценарии «дождливого дня» (где мы проверить правильную обработку ошибок в стеке). Этот набор тестов разрабатывается в отдельном четвертом репозитории, который мы выпустим в ближайшие недели, и который также обеспечивает докеризированную среду, в которой все вышеперечисленные компоненты собираются вместе.
Ближайшим следующим шагом для нашей команды разработчиков является выпуск этого набора тестов и среды разработки, которые позволят разработчикам dApp начать строить поверх Discovery. Пожалуйста, имейте в виду, что до завершения этого шага вы не сможете использовать непосредственно наш код. После этого нашей следующей вехой будет развертывание Discovery в testnet. Мы сообщим обо всех этих достижениях в этом официальном блоге, а также в социальных сетях, поэтому продолжайте смотреть это место!
Наша команда очень взволнована тем, что достигла этой стадии развития после нескольких месяцев напряженной работы, и мы надеемся, что в скором времени у вас будет больше новостей, чтобы поделиться с вами.