Предупреждение main
Branch теперь отслеживает V2 . Эта новая версия представляет собой полный капитальный ремонт трубопровода обработки, множественные изменения разрыва. Если вы ищете V1 , вы можете переключиться на долгосрочную отделение поддержки с именем lts/v1
У нас есть инструменты, чтобы «исследовать» блокчейн Cardano, которые полезны, когда вы знаете, что ищете. Мы утверждаем, что существует другой, дополнительный вариант использования, который должен «наблюдать» блокчейн и реагировать на конкретные модели событий.
Oura -это ненормативная реализация трубопровода, который соединяется с кончиком узла кардано посредством комбинации мини-протокола Uwoboros (используя либо носитель Unix, либо носитель TCP), отфильтровывают события, которые соответствуют конкретному шаблону, а затем подчиняются Краткая, автономная полезная нагрузка для подключаемых наблюдателей, называемых «раковинами».
Проверьте нашу документацию для получения подробной информации о том, как начать работать с Aura .
Название инструмента вдохновлено командой tail
, доступной в Unix-подобных системах, которые используются для отображения хвостового конца текстового файла или данных. Название консенсуса Cardano, Touroboros , является ссылкой на древний символ, изображающий змея или дракона, едящего собственный хвост, что означает «еда хвоста». «Оур» - это древнегреческое слово «хвост».
В этой записи терминала мы видим несколько минут живого вывода из узла Testnet, подключенного к раковине терминала.
Смотрите полный Asciicast
Весь тяжелый разряд, необходимый для связи с узлом кардано, выполняется библиотекой Палласа, которая обеспечивает реализацию мультиплексора Уроборос и некоторые из необходимых мини-протокол государственных машин (в частности, цепно и локальный статус).
Трубопровод данных реализован библиотекой Gasket, которая предоставляет основу для поставленных построек приложений, управляемых событиями. В соответствии с этой абстракцией каждый компонент трубопровода (aka: stage ) работает в своем собственном потоке и общается с другими этапами, отправляя сообщения (очень похоже на шаблон актера ).
Вы можете запустить oura watch <socket>
для печати данных TX в терминал с кончика локального или удаленного узла. Это может быть полезно в качестве инструмента отладки для разработчиков или вам просто любопытно посмотреть, что происходит в сети (например, чтобы увидеть воздушные кадры по мере их возникновения, или оракулы публикуют новую информацию).
Подобно хорошо известному инструменту DB-Sync, предоставляемому IOHK, Aura может использоваться в качестве демона для следования узлу и вывода данных в другую технологию хранения данных, более подходящую для вашего окончательного использования. Основное различие с DB-Sync заключается в том, что Oura была разработана для легкой интеграции с трубопроводами по потоке данных вместо реляционных баз данных.
Учитывая его небольшую память / процессору, Oura может быть развернута бок о бок с вашим узлом Cardano даже в условиях, ограниченных ресурсами, такими как Raspberry PIS.
Работа Aura в режиме daemon
может быть настроена на использование пользовательских фильтров для определения конкретных шаблонов транзакций и запускающих действий всякий раз, когда он находит совпадение. Например: отправьте электронное письмо, когда в транзакции появляется конкретная комбинация политики / активов; Вызовите функцию AWS Lambda, когда кошелек делегат в определенный бассейн; Отправляйте HTTP-отчет в веб-крючок каждый раз, когда в полезной нагрузке TX появляется ключ метаданных;
Если доступные необоснованные функции не удовлетворяют вашему конкретному варианту использования, Aura может быть использована библиотека в вашем проекте Rust для настройки специальных трубопроводов. Каждый компонент (источники, фильтры, раковины и т. Д.) В Oura стремится быть автономным и повторным использованием. Например, пользовательские фильтры и раковины могут быть построены при повторном использовании существующих источников.
Oura в его сущности просто трубопровод для обработки событий. Каждый этап трубопровода выполняет другую роль:
Стадии источника: отвечают за извлечение данных из блокчейна и картирование необработанных блоков на более мелкие, более детальные события. Каждое событие затем отправляется через выходной порт сцены для дальнейшей обработки.
Стадии фильтра: получайте отдельные события от исходного этапа и примените какое -то преобразование к каждому. Применяемые преобразования будут зависеть от конкретного случая использования, но они обычно вращаются вокруг выбора соответствующих событий и обогащения их дополнительной информацией.
Стадии погрузки: Получите окончательные события с этапа фильтра и передают полезную нагрузку на некоторую внешнюю систему, базу данных или службу для дальнейшей обработки.
Типы данных
Блоки CBOR
Cbor TXS
Модель Oura V1 (для обратной совместимости)
Парсированные TXS (структурированные объекты со всеми данными TX)
Универсальный json (любые значения JSON)
Источники
цепь-синхронизация из локального узла
цепочка Sync + Block-Block от удаленного ретрансляционного узла
S3 Bucket с блоками
Тема KAFKA с данными блоков
Раковины
Кафка Тема
Индекс Elasticsearch / поток данных
Вращение файлов журнала с сжатием
Redis Streams
Aws sqs queue
AWS Lambda Call
AWS S3 объекты
GCP Pubsub
Облачная функция GCP
Лазурный раковится
webhook (http post)
терминал (только для приложения, хвостоподобный)
Фильтры
Parse Block / TX Cbor
Разделить блок на TXS
Выберите TXS, соответствуя правилам (адрес, метаданные, политики и т. Д.)
Обогатить данные TX с связанными входами
Пользовательский код TypeScript (использует DENO)
Пользовательский плагин WASM
Буфер отката с компенсационными действиями
Другой
Цепный курсор состояния для восстановления после перезапуска
Буферный этап, чтобы удерживать блоки, пока они не достигнут определенной глубины
Метрики трубопровода для отслеживания прогресса и производительности
Oura читает события из прошлых блоков / транзакций. Поддержка запроса Mempool еще не реализована.
Все взносы приветствуются, но, пожалуйста, прочитайте руководство по проекту, прежде чем начать код.
Этот проект лицензирован по лицензии Apache-2.0. Пожалуйста, смотрите файл лицензии для получения более подробной информации.