Peringatan Cabang main
sekarang melacak V2 . Versi baru ini adalah perombakan lengkap dari pipa pemrosesan, beberapa perubahan putus. Jika Anda mencari V1 , Anda dapat beralih ke cabang dukungan jangka panjang bernama lts/v1
Kami memiliki alat untuk "menjelajahi" blockchain Cardano, yang berguna ketika Anda tahu apa yang Anda cari. Kami berpendapat bahwa ada kasus penggunaan yang berbeda dan komplementer yaitu untuk "mengamati" blockchain dan bereaksi terhadap pola peristiwa tertentu.
Oura adalah implementasi asli dari pipa yang terhubung ke ujung simpul Cardano melalui kombinasi mini-protokol Ouroboros (menggunakan soket UNIX atau pembawa TCP), menyaring peristiwa yang cocok dengan pola tertentu dan kemudian mengirimkan a Payload yang ringkas dan mandiri untuk pengamat pluggable yang disebut "wastafel".
Periksa dokumentasi kami untuk informasi terperinci tentang cara mulai bekerja dengan Oura .
Nama alat ini diilhami oleh perintah tail
yang tersedia dalam sistem seperti Unix yang digunakan untuk menampilkan ujung ekor file teks atau data pipa. Nama protokol konsensus Cardano, Ouroboros , adalah referensi ke simbol kuno yang menggambarkan seekor ular atau naga yang memakan ekornya sendiri, yang berarti "makan ekor". "Oura" adalah kata Yunani kuno untuk "ekor".
Dalam perekaman terminal ini kita bisa melihat beberapa menit output langsung dari node testnet yang terhubung ke terminal wastafel.
Tonton asciicast penuh
Semua pengangkatan berat yang diperlukan untuk berkomunikasi dengan simpul Cardano dilakukan oleh Perpustakaan Pallas, yang menyediakan implementasi multiplexer Ouroboros dan beberapa mesin negara mini-protokol yang diperlukan (chainsync dan localstate khususnya).
Pipa data diimplementasikan oleh Perpustakaan Gasket yang menyediakan kerangka kerja untuk membangun aplikasi yang dipentaskan dan digerakkan oleh peristiwa. Di bawah abstraksi ini, setiap komponen pipa (alias: stage ) berjalan di utasnya sendiri dan berkomunikasi dengan tahap lain dengan mengirim pesan (sangat mirip dengan pola aktor ).
Anda dapat menjalankan oura watch <socket>
untuk mencetak data TX ke terminal dari ujung simpul lokal atau jarak jauh. Ini dapat berguna sebagai alat debugging bagi pengembang atau jika Anda hanya ingin tahu apa yang terjadi di jaringan (misalnya, untuk melihat airdrops saat terjadi atau oracles memposting informasi baru).
Mirip dengan alat DB-Sync terkenal yang disediakan oleh IOHK, Oura dapat digunakan sebagai daemon untuk mengikuti node dan mengeluarkan data ke dalam teknologi penyimpanan data yang berbeda yang lebih cocok untuk kasus penggunaan akhir Anda. Perbedaan utama dengan DB-Sync adalah bahwa Oura dirancang untuk integrasi yang mudah dengan pipa streaming data alih-alih database relasional.
Mengingat ingatannya yang kecil / jejak CPU, Oura dapat digunakan berdampingan dengan simpul cardano Anda bahkan di lingkungan yang dibatasi sumber daya, seperti raspberry pis.
Oura berjalan dalam mode daemon
dapat dikonfigurasi untuk menggunakan filter khusus untuk menunjukkan pola transaksi tertentu dan memicu tindakan setiap kali menemukan kecocokan. Misalnya: Kirim email ketika kombinasi kebijakan / aset tertentu muncul dalam transaksi; Hubungi fungsi AWS Lambda ketika dompet mendelegasikan ke kolam tertentu; Kirim http-call ke webhook setiap kali kunci metadata muncul di payload TX;
Jika fitur out-of-the-box yang tersedia tidak memuaskan kasus penggunaan khusus Anda, Oura dapat digunakan perpustakaan di proyek karat Anda untuk mengatur pipa yang dibuat khusus. Setiap komponen (sumber, filter, wastafel, dll) di Oura bertujuan untuk mandiri dan dapat digunakan kembali. Misalnya, filter dan wastafel khusus dapat dibangun saat menggunakan kembali sumber yang ada.
Our pada intinya hanyalah jalur pipa untuk memproses acara. Setiap tahap pipa memenuhi peran yang berbeda:
Tahap Sumber: Bertanggung jawab untuk menarik data dari blockchain dan memetakan blok mentah menjadi peristiwa yang lebih kecil dan lebih granular. Setiap acara kemudian dikirim melalui port output panggung untuk diproses lebih lanjut.
Tahapan Filter: Menerima acara individual dari tahap sumber dan menerapkan semacam transformasi untuk masing -masing. Transformasi yang diterapkan akan tergantung pada kasus penggunaan tertentu, tetapi mereka biasanya berputar di sekitar pemilihan peristiwa yang relevan dan memperkaya mereka dengan informasi tambahan.
Tahap Sink: Menerima acara akhir dari tahap filter dan mengirimkan muatan ke beberapa sistem eksternal, basis data atau layanan untuk pemrosesan lebih lanjut.
Tipe data
Blok CBOR
CBOR TXS
Model owa v1 (untuk kompatibilitas mundur)
Parsed TXS (objek terstruktur dengan semua data TX)
JSON generik (nilai JSON apa pun)
Sumber
Sync rantai dari simpul lokal
Rantai-sinkronisasi + blok-Fetch dari node relai jarak jauh
S3 Bucket dengan data blok
Topik kafka dengan data blok
Wastafel
Topik Kafka
Indeks Elasticsearch / Stream Data
Memutar file log dengan kompresi
Stream Redis
Antrian AWS SQS
Panggilan AWS Lambda
Objek AWS S3
GCP Pubsub
Fungsi Cloud GCP
Azure tenggelam
Webhook (posting http)
Terminal (hanya ditambahkan, seperti ekor)
Filter
Parse Block / TX CBOR
Split block menjadi txs
Pilih TXS dengan aturan pencocokan (alamat, metadata, kebijakan, dll)
Memperkaya data TX dengan input terkait
Kode TypeScript Kustom (Menggunakan Deno)
Plugin Wasm Kustom
Buffer rollback dengan tindakan kompensasi
Lainnya
kursor rantai stateful untuk pulih dari restart
Tahap penyangga untuk menampung blok sampai mencapai kedalaman tertentu
metrik pipa untuk melacak kemajuan dan kinerja
Oura membaca acara dari blok / transaksi yang dicetak. Dukungan untuk meminta MEMPOOL belum diterapkan.
Semua kontribusi dipersilakan, tetapi silakan baca panduan yang berkontribusi dari proyek sebelum mulai kode.
Proyek ini dilisensikan di bawah lisensi APACHE-2.0. Silakan lihat file lisensi untuk lebih jelasnya.