Oura:Cardano区块链的观察者
ouraThe tail of Cardano项目地址:https://gitcode.com/gh_mirrors/ou/oura
项目介绍
在Cardano区块链的世界中,我们有许多工具可以帮助我们“探索”区块链,这些工具在你知道自己在寻找什么时非常有用。然而,Oura项目的初衷是提供一种不同的、互补的使用场景,即“观察”区块链并对其中的特定事件模式做出反应。
Oura是一个用Rust编写的原生实现,它通过_Ouroboros_迷你协议(使用unix套接字或tcp承载)连接到Cardano节点的末端,过滤匹配特定模式的事件,并将简洁的自包含有效载荷提交给可插拔的观察者,称为“sinks”。
项目技术分析
Oura的核心技术架构基于Rust语言,利用了Pallas库与Gasket库。Pallas库负责与Cardano节点通信,实现了Ouroboros多路复用器和一些必要的迷你协议状态机(如ChainSync和LocalState)。Gasket库则提供了一个用于构建分阶段、事件驱动应用程序的框架,使得Oura的每个组件(即“Stage”)可以在自己的线程中运行,并通过发送消息与其他阶段通信,类似于Actor模式。
项目及技术应用场景
实时交易监控
通过oura watch <socket>
命令,用户可以从本地或远程节点的末端打印交易数据到终端。这对于开发者调试或仅仅是好奇网络中发生了什么(例如,查看空投或预言机发布新信息)非常有用。
数据持久化桥梁
类似于IOHK提供的db-sync工具,Oura可以作为一个守护进程,跟随节点并将数据输出到更适合最终使用场景的不同数据存储技术中。与db-sync的主要区别在于,Oura设计用于轻松集成数据流管道,而不是关系数据库。
自定义动作触发器
在daemon
模式下运行的Oura可以配置为使用自定义过滤器来精确定位特定交易模式,并在找到匹配项时触发动作。例如,当特定策略/资产组合出现在交易中时发送电子邮件;当钱包委托给特定池时调用AWS Lambda函数;每次在TX有效载荷中出现元数据键时向webhook发送http调用。
作为自定义场景的库
如果现有的开箱即用功能不能满足您的特定用例,Oura可以作为Rust项目中的库,设置量身定制的管道。Oura的每个组件(源、过滤器、sinks等)都旨在自包含和可重用。例如,可以构建自定义过滤器和sinks,同时重用现有的源。
项目特点
- 高效的事件处理:Oura通过分阶段的事件处理管道,确保每个阶段在自己的线程中运行,提高了处理效率。
- 丰富的数据类型支持:支持CBOR块、CBOR交易、Oura v1模型、解析的交易(包含所有交易数据的结构化对象)和通用JSON等多种数据类型。
- 多样化的数据源和sinks:支持从本地节点、远程中继节点、S3桶、Kafka主题等多种数据源获取数据,并可以将数据输出到Kafka主题、Elasticsearch、Redis流、AWS SQS队列等多种sinks。
- 灵活的过滤器:提供多种过滤器,包括解析CBOR、按规则选择交易、丰富交易数据、自定义Typescript代码和WASM插件等。
- 轻量级部署:由于其小内存/CPU占用,Oura可以部署在与Cardano节点相同的资源受限环境中,如Raspberry PI。
Oura不仅是一个强大的工具,更是一个灵活的平台,适用于各种Cardano区块链的观察和反应需求。无论您是开发者、区块链爱好者,还是企业用户,Oura都能为您提供高效、可靠的解决方案。立即体验Oura,开启您的Cardano区块链观察之旅!
ouraThe tail of Cardano项目地址:https://gitcode.com/gh_mirrors/ou/oura