Обзор Юботов


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

Что такое Юбот?

Юбот - это программа, написанная на современном языке JavaScript (ECMA-262+ – это полный по Тьюринггу язык, и следовательно от вас не потребуется изучения совершенно нового языка и архитектуры, если вы знаете JavaScript), код которой интегрирован в специальный тип смарт-контракта Universa, подписанный и зарегистрированный в сети Universa. Таким образом, код юбота не может быть подделан. Программа может делать практически все, что может делать обычная программа, не ограничиваясь типичными ограниченными песочницей возможностями dApp. В первую очередь, юботы предназначены для выполнения любой клиентской обработки смарт-контрактов Universa. Юбот, например, может выполнять периодические проверки, связываться с любым интернет-сервисом / API, сам предоставлять HTTP API и даже запускать веб-сайты, общаться с другими юботами, создавать и изменять состояние смарт-контрактов и выполнять многие другие действия.

Юбот может предоставить:

  • функциональный интерфейс: методы, которые могут быть вызваны из клиентов с использованием интерфейса в стиле UMI из юниклиента, библиотек или напрямую с использованием протокола, подобного UMI.
  • события, запускаемые по таймеру, а также периодические события.
  • сетевой ввод-вывод (например, юбот может представлять себя как HTTP-сервис).

Юботы имеют некоторые уникальные особенности, обеспечиваемые тесной интеграцией с основной сетью Universa:

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

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

  • специальные общие потоки данных, позволяющие параллельно выполняющимся экземплярам юботов накапливать результаты. Такой подход, например, позволяет юботам генерировать безопасные распределенные последовательности случайных чисел, выполнять параллельные вычисления и т. д.

  • специфические для Universa функции, разрешения и роли, представляющие консенсус экземпляров юбота, запущенных на нескольких юбот-серверах. Например, можно передать некоторые токены UTN в распоряжение юбота, но требуется консенсус более 30 экземпляров для внесения в него каких-либо изменений (например, для выполнения платежей). Другими словами, консенсус экземпляров юбота может подписывать контракты Universa, а некоторые контракты Universa могут требовать наличия такой подписи.

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

Ожидается, что количество юбот-серверов будет намного больше, чем количество узлов, поскольку юботы обычно выполняют медленные и асинхронные операции (включая ожидание сетевых операций / ввода-вывода, выполнение вычислений и многое другое). Юбот-серверы запускают юботов и берут за это плату. Размер комиссии зависит от множества факторов, таких как продолжительность работы юбота, выполняемые операции, использование общего хранилища и некоторые другие факторы такого рода. В отличие от сети Universa, юбот-серверу платят только за те экземпляры юботов, которые запускаются на нём.

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

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

Возможные сценарии использования

Торговый бот

Периодически проверяет курсы на биржах с помощью сетевого интерфейса и API бирж. В зависимости от курсов он автоматически торгует находящимися в портфеле токенами. Чтобы получить безопасный доступ к активам токенов, он использует согласованное разрешение (консенсус). Может также получить доступ к внешним компонентам, таким как выделенный персональный бот-сервер, который имеет доступ к личным данным, чтобы использовать внешние кошельки и торговые счета.

Магазин

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

Пропускной пункт

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

Игры с призами

Юбот может запускать пошаговые игры и обеспечивать честную и надежную логику присуждения призов. Настольные игры, карточные игры, пошаговые онлайн-стратегии отлично вписываются в возможности юбота. В играх виртуального мира в реальном времени юботов можно использовать для реализации надежной игровой экономики, транзакций, конкурсов и наград. И не забывайте про игры в стиле «криптокотят», их (как правило, довольно примитивная) игровая логика может быть реализована так же просто, как школьный проект.

Лотерея

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

Тотализатор

Юбот может принимать ставки на любые события, которые могут быть программно проверены с помощью сетевых интерфейсов / API (вы хотите сделать ставку на исход матча FIFA гонки F1? Или даже если завтра будет дождь? Просто найдите услугу предоставление этой информации через общедоступный API!) Обработка на основе консенсуса защищает пользователей от возможного мошенничества.

Веб-приложения и сервисы

Могут быть легко реализованы и развернуты как юботы. Простота разработки (предполагается современный JavaScript), простота развертывания, оплата только за фактическую нагрузку, сеть автоматически будет использовать столько юбот-серверов, сколько требуется для загрузки приложения. Конечно, любые статические ресурсы (изображения, сценарии CSS) должны обслуживаться отдельно по соображениям производительности и стоимости.

Персональный кошелек с веб-интерфейсом

Безопасно хранит все зашифрованные активы в общем облачном хранилище в зашифрованной пользователем форме. Вы больше никогда не потеряете свои данные: это своего рода улучшенное и децентрализованное криптовалютное облако. Может также разрешать периодические платежи, автоматически принимать и обрабатывать входящие платежи и т. д. Кроме того, его можно использовать как надежно защищенный блокнот, дневник и файловое хранилище. Планируется, что такое зашифрованное хранилище будет намного дешевле, чем хранение в SLOT1 в сети Universa.

Чат-боты для чат-сервиса Universa

У юботов планируется простой и удобный доступ к сервису чата Universa ( Unichat ).

Бронирование ресурсов и билетов

Шаг вперед для бронирования билетов. Использование смарт-контрактов для начального пула билетов гарантирует отсутствие избыточного бронирования; и нет необходимости в отдельном этапе регистрации (подтверждения), как в аэропортах. Юбот может легко генерировать, продавать, обменивать билеты, а также возвращать их, делая немедленно доступными для новой продажи.

Наблюдение и сбор доказательств

Юбот может собирать информацию и безопасно хранить ее, всегда имея одобрение сети Universa. Достаточно сложно удалить любую информацию, которая когда-либо была вставлена в общее хранилище, и просто невозможно её подделать.

Голосование и выборы

Чрезвычайно легко реализовать с помощью смарт-контрактов Universa в качестве голосов и даже с использованием некоторой службы KYC для аутентификации человека в автономном режиме.

Акции, акционеры, собрания и т. д.

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

Умный дом, город, организация

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

Распределенные вычисления

Это можно сделать исключительно легко с помощью сети юботов. Юботы будут иметь «приоритет простоя»: низкопроизводительный и дешевый режим выполнения для обработки фоновых процессов.

Распределенные случайные последовательности (ДГСЧ - децентрализованный генератор случайных чисел)

Многие юботы (работающие вместе) образуют длинную псевдослучайную (или случайную) последовательность, где каждый экземпляр юбота добавляет свою часть энтропии и проверяет, действительно ли она использовалась в конечном случайном числе. Специальный двухпроходный алгоритм предотвращает любую возможность мошенничества, даже если какие-либо владельцы юбот-серверов заинтересованы в некоторых конкретных результатах ДГСЧ (например, он используется для лотереи) - они все равно не смогут настроить их ввод в ДГСЧ, чтобы повлиять на конечный результат.

Распределенный сценарий: распознавание изображений

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