警告main
部门现在正在跟踪V2 。这个新版本是对处理管道的全面大修,多次破裂的变化。如果您正在寻找V1 ,则可以切换到名为lts/v1
的长期支持分支
我们有“探索” Cardano区块链的工具,当您知道所需的内容时,它们很有用。我们认为有一个不同的互补用例,它是“观察”区块链并对特定事件模式做出反应。
OURA是管道的生锈实现,该管道通过Ouroboros Mini-Protocol(使用UNIX插座或TCP承载者)的组合连接到Cardano节点的尖端,过滤了与特定模式相匹配的事件,然后提交一个简洁,独立的有效载荷对可插入的观察者称为“水槽”。
检查我们的文档以获取有关如何开始与OURA合作的详细信息。
该工具的名称灵感来自Unix式系统中可用的tail
命令,该系统用于显示文本文件或管道数据的尾端。 Cardano的共识协议名称Ouroboros是描述蛇或龙在吃自己的尾巴的古代符号,意思是“尾巴吃”。 “ oura”是“尾巴”的古希腊语。
在此终端记录中,我们可以看到连接到端子接收器的测试网节点的几分钟实时输出。
观看完整的asciicast
与Cardano节点进行通信所需的所有繁重举重都是由Pallas库完成的,Pallas库提供了Ouroboros多路复用器的实现,尤其是链条和LocalState所需的一些所需的小型协议状态机器。
数据管道由垫片库实施,该库为建筑分阶段,事件驱动的应用程序提供了一个框架。在此抽象下,管道的每个组件(aka: stage )以自己的线程运行,并通过发送消息(与演员模式非常相似)与其他阶段进行通信。
您可以运行oura watch <socket>
从本地或远程节点的尖端将TX数据打印到终端中。它可以作为开发人员的调试工具有用,或者如果您只是好奇地看到网络中发生了什么(例如,在发生AirDrops时,或者在发布新信息时看到了AirDrops)。
类似于IOHK提供的著名DB-Sync工具,可以将OURA用作守护程序遵循节点并将数据输出到更适合您最终用例的不同数据存储技术中。与DB-Sync的主要区别在于, OURA是为与数据流中的管道而不是关系数据库的轻松集成而设计的。
鉴于其较小的内存 / CPU足迹,即使在资源受限的环境(例如Raspberry pis)中,也可以与Cardano节点并排部署URA 。
可以在daemon
模式下运行的OURA可以使用自定义过滤器来查明特定的事务模式,并在找到匹配时触发操作。例如:当交易中出现特定策略 /资产组合时,发送电子邮件;当钱包委托给特定池时,请致电AWS lambda功能;每次元数据键在TX有效载荷中出现时,将http-call发送到Webhook;
如果可用的开箱即用功能无法满足您的特殊用例,则可以在Rust Project中使用库来设置量身定制的管道。 OURA中的每个组件(来源,过滤器,下沉等)旨在被独立和重复使用。例如,可以在重用现有资源的同时构建自定义过滤器和水槽。
从本质上讲,欧拉只是处理事件的管道。管道的每个阶段都履行了不同的作用:
源阶段:负责从区块链中提取数据并将原始区块映射到较小,更精细的事件中。然后,每个事件都通过舞台的输出端口发送以进行进一步处理。
过滤阶段:从源阶段接收单个事件,并将某种转换应用到每个事件。所应用的转换将取决于特定用例,但是它们通常围绕选择相关事件并提供额外的信息。
接收器阶段:从过滤器阶段接收最终事件,并将有效载荷提交到某些外部系统,数据库或服务以进行进一步处理。
数据类型
CBOR块
CBOR TXS
OURA V1模型(用于向后兼容)
解析的TX(带有所有TX数据的结构化对象)
通用JSON(任何类型的JSON值)
来源
来自本地节点的链合成
从远程继电器节点从链-sync +块提取
带有块数据的S3存储桶
带有块数据的Kafka主题
水槽
卡夫卡主题
Elasticsearch索引 /数据流
用压缩旋转日志文件
REDIS流
AWS SQS队列
AWS Lambda致电
AWS S3对象
GCP Pubsub
GCP云功能
天蓝色下沉
Webhook(HTTP帖子)
终端(仅附加,类似尾巴)
过滤器
解析块 / TX CBOR
将块拆分为TXS
通过匹配规则(地址,元数据,策略等)选择TXS
富集具有相关输入的TX数据
自定义打字稿代码(使用DENO)
自定义WASM插件
带有补偿措施的回滚缓冲区
其他
从重新启动中恢复的状态连锁光标
缓冲阶段保持块直到达到一定深度
管道指标以跟踪进度和性能
OURA读取来自铸造块 /交易的事件。尚未实施支持查询备忘录的支持。
欢迎所有贡献,但请在开始编码之前阅读项目的贡献指南。
该项目已根据APACHE-2.0许可获得许可。请参阅许可证文件以获取更多详细信息。