Tim Teknik Cardano Foundation baru-baru ini mulai mengembangkan alat penyediaan data berbasis Java yang disebut Ledger Sync, yang memberikan akses ke data blockchain Cardano. Ledger Sync bertujuan untuk mencapai tingkat kelengkapan data yang sama dengan Cardano DB Sync —juga disebut sebagai db-sync—sambil menyediakan opsi dalam bahasa pemrograman yang sudah mapan di antara beragam perusahaan serta dalam basis pengguna yang luas. Sejalan dengan upaya Yayasan untuk mendorong kematangan sumber terbuka Cardano, kerangka kerja ini akan dirilis di bawah lisensi sumber terbuka untuk membekali pengembang dan mitra dengan alat tambahan untuk pengindeksan rantai, sehingga meningkatkan keragaman ekosistem pengembang Cardano.
Foundation telah memilih untuk menerbitkan repositori di bawah lisensi Apache 2.0 , yang memungkinkan penggunaan kerangka kerja dalam aplikasi komersial dan non-komersial serta alat sumber terbuka lainnya. Lisensi juga memberikan kepastian hukum dalam bentuk hak paten atas alat yang dibangun di atas atau bersamanya, ditambah perubahan pada kerangka itu sendiri yang perlu ditunjukkan tetapi tidak harus diungkapkan kepada publik. Pengaturan ini menjamin aksesibilitas optimal dan kepastian hukum bagi perusahaan serta pengembang lain dan anggota masyarakat.
Blockchain sebagai struktur data
Banyak sistem berbasis blockchain menghadapi tantangan yang sama: data tidak dapat diambil secara efisien dengan cara akses acak karena organisasi penyimpanan dalam format daftar tertaut. Misalnya, untuk mengakses transaksi yang disimpan di blok nomor 200 di Cardano, aplikasi harus melakukan iterasi pada 199 blok pertama sebelum mencapai blok yang berisi informasi yang diinginkan. Jika jaringan blockchain terus berkembang, pendekatan ini menjadi tidak mungkin dilakukan. Cardano, misalnya, saat ini memiliki lebih dari 9,5 juta blok yang dicetak di mainnet.
Fakta bahwa informasi tertentu tidak disimpan secara eksplisit di blockchain menghadirkan tantangan lain. Karena model akuntansi berbasis EUTxO Cardano , hal ini berlaku bahkan untuk saldo dompet saat ini atau historis. Untuk mengetahui keluaran transaksi yang belum terpakai (UTxO) di dompet, penting untuk melacak semua UTxO yang masuk dan keluar dari dompet, lalu menggabungkannya untuk menentukan saldo akhir.
Hingga sekitar awal tahun 2022, db-sync telah menjadi satu-satunya pilihan yang tersedia bagi pembangun di ekosistem untuk mengakses data dari blockchain Cardano dengan cara yang efisien. Namun, untuk mencapai ujung rantai, db-sync juga memerlukan pemrosesan data dalam jumlah besar selama sinkronisasi awal. Hal ini membuatnya tidak mungkin menjalankan db-sync untuk semua proyek. Selain itu, dalam banyak kasus, proyek tidak memerlukan semua data yang disediakan oleh db-sync, sebuah kenyataan yang mengarah pada pengembangan apa yang disebut pengindeks rantai tercakup, yang memungkinkan pengguna untuk menentukan dengan tepat data mana yang perlu diindeks dan disediakan untuk jangka waktu tertentu. aplikasi tertentu. Proyek seperti Kupo , Scrolls , Oura , dan Carp semuanya memberikan cara berbeda kepada komunitas untuk melakukannya.
Selain persyaratan teknis tersebut, bisnis juga sering kali memiliki kebutuhan mengenai keandalan layanan penyediaan data tersebut. Secara umum, persyaratan ini tidak berkaitan dengan implementasi sebenarnya dalam kode sumber tetapi bagaimana sistem tersebut dioperasikan. Cardano Foundation mengembangkan Ledger Sync untuk memenuhi kebutuhan bisnis seperti itu. Meskipun di satu sisi ia memiliki beberapa kesamaan dengan db-sync, pilihan desain tertentu membuatnya lebih cocok untuk arsitektur terdistribusi karena memungkinkan pengaturan ketersediaan tinggi. Faktanya, penjelajah baru Foundation telah menggunakan Ledger Sync sebagai saluran data yang mendasarinya.
Jika proyek memerlukan data yang sangat spesifik dari blockchain Cardano tetapi dapat mengabaikan fitur seperti ketersediaan tinggi bawaan dan pembongkaran konsolidasi data, pengindeks rantai modular seperti yaci-store, scrolls, dan Kupo memberikan pilihan yang sesuai. Ledger Sync, di sisi lain, melengkapi proyek dengan opsi yang andal untuk lapisan data berbasis Java di atas Cardano, terutama ketika proyek memerlukan akses yang dapat diandalkan ke data terkait blockchain berdasarkan kerangka kerja yang dibangun dalam bahasa pemrograman yang mudah diakses.
Desain awal Ledger Sync bertujuan untuk mencapai tiga tujuan:
- Menerapkan protokol mini jaringan di Java sehingga data jaringan dapat diakses dengan cara asli bahasa pemrograman Java tanpa ketergantungan pada kerangka kerja lain.
2.Pisahkan langkah-langkah perayapan murni dan konsolidasi data untuk memungkinkan arsitektur perluasan skala , yang berarti bahwa bagian-bagian komputasi dapat dipindahkan ke beberapa instans, seperti kontainer atau server, dengan konsekuensi evaluasi dampak negatif yang diwarisi dari transfer data melalui jaringan. menyimpannya secara lokal di satu server. - Menerapkan versi penghitungan perbendaharaan, cadangan, dan imbalan yang independen terhadap node , yang baru-baru ini menjadi sumber terbuka bagi Foundation.
Implementasi asli yang ditayangkan dengan versi beta dari penjelajah Foundation mencakup dua poin pertama. Tim Teknik Yayasan saat ini sedang mengerjakan poin ketiga sebagai bagian dari proyek sumber terbuka lainnya .
Perjalanan ke repositori Ledger Sync
Tim mencapai sejumlah pembelajaran selama fase pengembangan pertama, semuanya telah ditangani dalam versi yang sekarang dirilis di bawah lisensi sumber terbuka.
Kami mulai mengembangkan protokol mini jaringan di Java dari awal karena, pada saat proyek dimulai, perpustakaan Yaci yang terkenal belum tersedia dalam keadaan yang kami anggap dapat digunakan. Meskipun demikian, kami mengganti implementasi protokol mini jaringan sebelumnya dengan Yaci di versi saat ini untuk membantu mendorong penerapan proyek komunitas ini. Perubahan ini berarti bahwa hanya satu tumpukan teknologi Java yang perlu dipelihara dan selalu diperbarui dengan perubahan apa pun pada protokol.
Untuk mengoordinasikan tugas antara berbagai layanan—seperti memisahkan perayapan dari pemrosesan hilir dan konsolidasi data—, tim awalnya menggunakan Redis dan Apache Kafka , platform data streaming sumber terbuka yang dikenal luas. Meskipun pendekatan ini terbukti efektif dan Kafka serta Redis menyediakan komponen yang kuat dalam arsitektur terdistribusi, penerapannya cukup mahal dan dapat menjadi rumit, terutama untuk penyiapan skala kecil. Dengan rilis terbaru, tim mengganti kebutuhan Kafka dan menjadikannya opsional. Meskipun Ledger Sync beroperasi tanpa Kafka, pengembang dapat menggunakan mekanisme peristiwa dalam aplikasi yang disediakan oleh Yaci Store dan memilih untuk mempublikasikan data blok ke berbagai platform perpesanan, seperti Kafka dan RabbitMQ , lalu menggunakannya dari aplikasi lain.
Kami juga awalnya memulai dengan skema database yang sama yang digunakan oleh db-sync. Pendekatan ini terbukti berguna saat mengembangkan penjelajah Foundation secara paralel karena memungkinkan backend penjelajah menggunakan data nyata untuk pengujian. Namun, hal ini juga mengakibatkan tantangan desain untuk Ledger Sync karena kami menyimpang dari pendekatan Desain Berbasis Domain dan tidak membuat skema yang dibuat untuk tujuan tertentu untuk versi Ledger Sync pertama. Meskipun skema database db-sync memenuhi tujuannya, skema ini tidak mendukung arsitektur yang dipilih dan bertujuan untuk paralelisasi selama pemrosesan data Ledger Sync. Oleh karena itu, kami sedang merancang skema baru untuk menggantikan skema yang ada saat ini.
Selain itu, sebagian besar penambahan kode sumber baru-baru ini mencakup dukungan untuk era Conway di Yaci. Pembaruan ini memungkinkan Ledger Sync, serta semua alat berbasis Java lainnya untuk bekerja dengan versi protokol mini jaringan dan buku besar terbaru.
Tim Teknik Yayasan juga memulai alur kerja untuk menerapkan pemrosesan paralel beberapa blok, ditambah transaksi dalam satu blok selama proses sinkronisasi awal. Memparalelkan perhitungan tersebut tidaklah mudah karena ketergantungan antar UTxO perlu diperhitungkan, sehingga menurunkan kinerja yang diperoleh dari paralelisasi. Selain itu, upaya pengembangan yang sedang berlangsung termasuk menawarkan cetak biru untuk menghosting Ledger Sync dalam berbagai skenario penerapan, seperti dalam pengaturan berbasis Kubernetes atau hanya melalui penulisan buruh pelabuhan.
Jalan di depan
Selain fitur teknisnya, Ledger Sync hadir dengan komitmen dari Cardano Foundation untuk menyediakan pemeliharaan berkelanjutan, ditambah pengoperasian repositori sebagai proyek sumber terbuka. Selain kerangka kerja sebagai perpustakaan dan alat itu sendiri, upaya ini bertujuan untuk bekerja sama dengan kelompok komunitas, mencari cara untuk menentukan implementasi referensi standar dan potensial untuk API data terdesentralisasi di mana Ledger Sync dapat digunakan sebagai lapisan data yang mendasarinya.
Memberikan API data yang dihosting yang menjamin ketersediaan, akurasi, dan kebenaran tinggi dengan model dukungan profesional merupakan tujuan tambahan. Menjamin hal ini akan memenuhi kebutuhan organisasi dan perusahaan, sehingga memudahkan mereka untuk menerapkan solusi blockchain dengan lancar dan dengan demikian mendorong adopsi perusahaan yang lebih besar. Namun upaya seperti ini memerlukan keselarasan dan kolaborasi dengan proyek-proyek yang ada. Hanya dengan melakukan hal ini maka dimungkinkan untuk memanfaatkan seluruh kapasitas ekosistem Cardano yang sudah ada sekaligus memastikan pendekatan yang mendukung keragaman model bisnis yang sedang berkembang.
Cardano Foundation mendorong semua orang untuk mencoba Ledger Sync dan terlibat dengan tim kami baik melalui Discord atau dengan mengajukan permintaan fitur atau laporan bug di repositori Ledger Sync . Kami menantikan tanggapan dan kontribusi Anda.