Вы можете попробовать это прямо сейчас!

Это перевод следующей статьи:
https://medium.com/uniqys/uniqys-kit-preview-c806e5918b98

25 июля наша команда проекта Uniqys объявила о концепции сети Uniqys, и в то же время мы выпустили предварительную версию Uniqys Kit.



Сеть Uniqys — океаны DApps
Сеть Uniqys состоит из «Uniqys kit
, масштабируемого комплекта для разработки DApps и Quragé, простых в использовании мобильных DApps… uniqys.net»



В этой статье я расскажу, что вы можете сделать с предварительной версией Uniqys Kit. Наши цели и перспективы всего проекта описаны в предыдущем посте, так что ознакомьтесь с ним!



Что такое комплект Uniqys?

Проект Uniqys Network направлен на то, чтобы DApps стали привычными для нашей жизни, и Uniqys Kit — один из наших подходов к достижению этой цели. Uniqys Kit — это продукт для поддержки DApps с точки зрения разработки. Два компонента Uniqys Kit — это Chain Core, который создает блокчейны для каждого DApp, и Easy Framework, упрощающий разработку DApp. Оба в настоящее время находятся в стадии разработки, и наши разработчики сейчас работают над созданием удобного инструмента для разработки DApps!

Chain Core будет поддерживать сеть P2P, алгоритм консенсуса на основе PBFT и соединение с Ethereum. Это позволяет каждому DApp иметь свою собственную цепочку блоков и, следовательно, решает проблему масштабируемости, позволяя разработчикам выбирать комиссию за транзакции в соответствии со своими собственными вариантами использования.

Easy Framework стремится стать платформой для разработчиков, позволяющих создавать DApp без каких-либо специальных навыков для создания блокчейна. Разработчики могут использовать существующие инструменты для создания DApps и сосредоточиться на разработке интересной части приложения.

Подробности на нашем официальном сайте.

Что вы можете сделать с предварительной версией?

Цель предварительной версии — показать, насколько далеко мы продвинулись в разработке Uniqys Kit и как создавать DApps с помощью Easy Framework. Если вы посмотрите на наш пример DApp, вы поймете, на что будет похоже создание DApp с помощью Uniqys Kit. (Сейчас есть только один образец, но в будущем мы добавим еще!)

Uniqys Kit все еще находится на ранней стадии разработки. Для Chain Core мы уже реализовали часть P2P-сети, но не реализовали следующее:

  • Алгоритм консенсуса
  • Связь с Эфириумом
  • Управление долей
  • Управление развертыванием и обновлением DApps
  • Плазменная система безопасности
  • Меры противодействия DoS-атаке
  • Песочница для DApps в каждом узле
  • Получение государственного доказательства Меркла

Имейте в виду, что наш пример приложения работает с chain-core-dev, в котором еще не реализована функция сети P2P.

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

Это первый шаг нашего долгого пути!

Пример приложения

Теперь давайте попробуем запустить пример приложения!

Здесь мы попробуем запустить «Сообщения», приложение для обмена сообщениями, с помощью которого вы можете отправлять токены другим учетным записям.

1. Установите комплект Uniqys

Сначала клонируйте репозиторий.

$ git clone [email protected]:uniqys/UniqysKit-preview.git $ cd UniqysKit-preview

Далее нам нужно настроить пакеты. Uniqys Kit — это монорепозиторий, созданный с помощью npm и Lerna, и вы можете настроить его с помощью двух команд.

💡Обязательно используйте Node v10 или более поздние версии. Мы рекомендуем использовать ndenv.

$ npm install
$ npm run bootstrap

niqys Kit реализован с помощью TypeScript, поэтому вам нужно собрать.

$ npm run build

2. Запустите сообщения

С предыдущими настройками также будут создаваться сообщения. Итак, теперь все, что вам нужно сделать, это сменить каталог и начать!

$ cd packages/samples/messages 
$ npm start

3. Используйте сообщения

Откройте браузер и откройте http://localhost:8080. Давайте попробуем опубликовать сообщение и отправить токен.

3.1 Опубликовать сообщение

В текстовом поле введите сообщение и нажмите кнопку post message. Затем вы увидите диалоговое окно подтверждения, поэтому нажмите «Принять».

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

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

3.2 Переход на другую учетную запись

Предварительная версия Easy Framework сохраняет информацию об учетной записи в локальном хранилище клиентского браузера. (Эта реализация предназначена только для разработки.) Таким образом, вы должны использовать секретное окно для изменения своей учетной записи.

💡Адрес будет другим, а баланс токена будет равен 0.

3.3 Отправить токен

Отправьте сообщение с новой учетной записью и получите токен. Нажмите кнопку send token в сообщении, отправленном с предыдущего адреса, и токен будет отправлен на этот адрес.

Как это работает?

Давайте посмотрим, как работают Сообщения! Если вы проверите журнал, отображаемый при запуске приложения, вам будет легче следить за операцией.

Общая структура

DApps, использующие Uniqys Kit, включая Messages, состоят из Easy Framework, Chain Core, логики приложения (далее называемого приложением) и логики на стороне клиента.

Приложению не нужно реализовывать взаимодействие с цепочками блоков, и оно реализовано как простое приложение HTTP-сервера. сервер/src/app.ts»

Кроме того, клиент реализован в виде одностраничного HTTP-клиентского приложения.

HTTP-запрос и прокси

При доступе к http://localhost:8080 HTTP-запрос будет получен шлюзом Easy Framework. Шлюз проверит, подписан ли запрос, и если да, то отправит запрос в блокчейн как транзакцию. Если он не подписан, запрос будет отправлен непосредственно в приложение. В этом случае запрос представляет собой простой запрос GET / без знака, поэтому он будет отправлен непосредственно в приложение, и страница индекса получит ответ.

База данных приложений

Состояние приложения сохраняется в БД, предоставляемой Easy Framework. Приложение может управлять данными с помощью протокола Memcached. Внутри БД Easy Framework создает Merkle Patricia Trie, и его корневой хеш будет храниться в блокчейне через Chain Core.

Управление БД по протоколу Memcached:
https://github.com/uniqys/UniqysKit-preview/blob/632f79527a3fbd0a0547300aeb56f584b691ffd2/packages/samples/messages/server/src/app.ts#L31-L36

const db = new Memcached(dbUrl)
...
const message = await new Promise<{ sender: string, contents: string } | undefined>((resolve, reject) => {
  db.get(`messages:${id}`, (err, message) => {
    if (err) return reject(err)
    resolve(message)
  })
})

Создание транзакции

Каждая операция, которая обновляет состояние приложения, будет храниться в блокчейне. С Easy Framework вы можете создать транзакцию, отправив простой HTTP-запрос от клиента. Пользователи смогут увидеть, какие действия будут предприняты приложением в диалоговом окне подтверждения, и они смогут подписать транзакцию.

Создание транзакции:
https://github.com/uniqys/UniqysKit-preview/blob/632f79527a3fbd0a0547300aeb56f584b691ffd2/packages/samples/messages/client/app.vue#L155-L166

easy.post('/messages', { contents: message }, { sign: true })
  .then(({ data }) => {
    this.resolves.postMessage = {
      id: data.id,
      content: data.contents,
    }
    return this.updateMessages()
  })
  .then(() => {
    return this.updateAccount()
  })
  .catch((err) => this.rejects.postMessage = err.toString())

Как выполняется подтверждение транзакции в блокчейне?

Транзакции, созданные клиентами, будут отправлены в Chain Core и сохранены в блокчейне. Когда в сети блокчейн будет достигнут консенсус, в приложение будет отправлен HTTP-запрос с прикрепленной информацией об отправителе. Затем приложение обновит состояние с помощью протокола Memcached, как описано.

Проверка отправки запроса через блокчейн:
https://github.com/uniqys/UniqysKit-preview/blob/632f79527a3fbd0a0547300aeb56f584b691ffd2/packages/samples/messages/server/src/app.ts#L13-L18

function viaChain (ctx: Koa.Context): string {
  const sender = ctx.header['uniqys-sender']
  console.log(sender)
  if (!(sender && typeof sender === 'string')) ctx.throw(403, 'access via chain required')
  return sender
}

Uniqys Kit все еще находится в стадии разработки, но мы продолжим развивать его функции и надеемся, что он будет поддержан многими разработчиками DApps!

Чтобы достичь будущего с большим количеством DApps в наших руках, мы будем постоянно обновлять нашу информацию в этой среде. Пожалуйста, с нетерпением ждите этого!