警告main
ブランチは現在V2を追跡しています。この新しいバージョンは、処理パイプラインの完全なオーバーホールであり、複数の壊れた変更です。 V1を探している場合は、 lts/v1
という名前の長期サポートブランチに切り替えることができます
カルダノブロックチェーンを「探索」するツールがあります。これは、探しているものがわかっているときに役立ちます。私たちは、ブロックチェーンを「観察」し、特定のイベントパターンに反応することである、別の、補完的なユースケースがあると主張します。
ウエラは、ウロボロスミニプロトコル(UNIXソケットまたはTCPベアラーのいずれかを使用)の組み合わせを介してカルダノノードの先端に接続するパイプラインの錆びたネイティブの実装であり、特定のパターンに一致するイベントをフィルタリングしてから、提出します。 「シンク」と呼ばれるプラグ可能なオブザーバーへの簡潔で自己完結型のペイロード。
Ouraとの作業を開始する方法の詳細については、ドキュメントを確認してください。
ツールの名前は、テキストファイルまたは配管データのテールエンドを表示するために使用されるUnixのようなシステムで利用可能なtail
コマンドに触発されています。カルダノのコンセンサスプロトコル名であるウロボロスは、「尾を食べる」ことを意味する蛇またはドラゴンが独自の尾を食べることを描いた古代のシンボルへの言及です。 「ウエラ」は「尾」の古代ギリシャ語の言葉です。
この端末記録では、ターミナルシンクに接続されたテストネットノードから数分のライブ出力を見ることができます。
完全なasciicastをご覧ください
カルダノノードと通信するために必要なすべての重いリフティングは、パラスライブラリによって行われます。パラスライブラリは、ウロボロスマルチプレクサと、必要なミニプロトコル状態マシン(特にチェーンシンクとローカルステート)のいくつかの実装を提供します。
データパイプラインは、ガスケットライブラリによって実装されており、段階的なイベント駆動型アプリケーションを構築するためのフレームワークを提供します。この抽象化の下で、パイプライン(別名:ステージ)の各コンポーネントは独自のスレッドで実行され、メッセージを送信することで他の段階と通信します(アクターパターンに非常に似ています)。
oura watch <socket>
実行して、ローカルまたはリモートノードの先端からTXデータを端末に印刷できます。開発者向けのデバッグツールとして、またはネットワークで何が起こっているのかを知りたいだけで興味がある場合(たとえば、エアドロップが発生したり、新しい情報を投稿しているのを見たりするのに役立ちます。
IOHKが提供するよく知られているDB-Syncツールと同様に、 Ouraはデーモンとして使用してノードに従い、データを最終的なユースケースに適した異なるデータストレージテクノロジーに出力できます。 DB-Syncの主な違いは、Relationalデータベースの代わりにデータストリーミングパイプラインと簡単に統合するようにWORAAが設計されたことです。
小さなメモリ / CPUフットプリントを考えると、Raspberry PISなどのリソースに制約のある環境でも、Cardanoノードと並んで展開できます。
daemon
モードで実行されているOuraは、特定のトランザクションパターンを特定し、一致するときはいつでもアクションをトリガーするようにカスタムフィルターを使用するように構成できます。たとえば、特定のポリシー /資産の組み合わせがトランザクションに表示されたときに電子メールを送信します。ウォレットが特定のプールに委任するとき、AWSラムダ関数を呼び出します。 TXペイロードにメタデータキーが表示されるたびに、http-callをWebhookに送信します。
利用可能なボックス外の機能が特定のユースケースを満たしていない場合、 OuraをRustプロジェクトのライブラリを使用して、テーラーメイドのパイプラインをセットアップできます。 USOSAの各コンポーネント(ソース、フィルター、シンクなど)は、自己完結型で再利用可能であることを目指しています。たとえば、既存のソースを再利用しながら、カスタムフィルターとシンクを構築できます。
Ouraは本質的にイベントの処理のためのパイプラインです。パイプラインの各段階は、異なる役割を果たします。
ソースステージ:ブロックチェーンからデータを引き出し、生のブロックをより小さく、より詳細なイベントにマッピングすることを担当しています。その後、各イベントは、さらに処理するためにステージの出力ポートから送信されます。
フィルターステージ:ソース段階から個々のイベントを受け取り、それぞれに何らかの変換を適用します。適用される変換は特定のユースケースに依存しますが、通常、関連するイベントを選択し、追加の情報で濃縮することを中心に展開します。
シンクステージ:フィルターステージから最終イベントを受け取り、ペイロードを外部システム、データベース、またはサービスに追加するために送信します。
データ型
Cborブロック
CBOR TXS
Oura V1モデル(後方互換性のため)
解析されたTXS(すべてのTXデータを含む構造化されたオブジェクト)
ジェネリックJSON(あらゆる種類のJSON値)
ソース
ローカルノードからのチェーンシンク
リモートリレーノードからのチェーンシンク +ブロックフェッチ
ブロックデータを備えたS3バケット
ブロックデータを使用したKafkaトピック
シンク
Kafkaトピック
ElasticSearchインデックス /データストリーム
圧縮でログファイルを回転させます
Redisストリーム
AWS SQSキュー
AWSラムダコール
AWS S3オブジェクト
GCP pubsub
GCPクラウド機能
Azure Sink
webhook(http post)
ターミナル(付録のみ、尾のような)
フィルター
解析ブロック / TX CBOR
ブロックをtxsに分割します
ルールを一致させてTXSを選択します(アドレス、メタデータ、ポリシーなど)
関連する入力でTXデータを濃縮します
カスタムタイプスクリプトコード(denoを使用)
カスタムWASMプラグイン
補償アクションを備えたロールバックバッファー
他の
再起動から回復するためのステートフルチェーンカーソル
ブロックが特定の深さに達するまでブロックを保持するバッファ段階
進捗とパフォーマンスを追跡するためのパイプラインメトリック
ウエラは、造られたブロック /トランザクションのイベントを読みます。 Mempoolの照会のサポートはまだ実装されていません。
すべての貢献は大歓迎ですが、コードを開始する前にプロジェクトの寄稿ガイドをお読みください。
このプロジェクトは、Apache-2.0ライセンスの下でライセンスされています。詳細については、ライセンスファイルをご覧ください。