警告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許可獲得許可。請參閱許可證文件以獲取更多詳細信息。