Node blockchain menyimpan data dalam format yang dioptimalkan untuk konsensus dan verifikasi, bukan untuk query. Jika Anda ingin mengetahui saldo saat ini dari sebuah alamat Ethereum, sebuah node dapat memberitahu Anda. Namun jika Anda ingin mengetahui semua transaksi yang pernah dilakukan alamat tersebut, atau semua token yang dimilikinya, atau riwayat interaksinya dengan smart contract tertentu, Anda memerlukan indexer.
Indexer bekerja dengan membaca setiap block dari sebuah blockchain, mendekode transaksi dan event, dan menyimpan data yang telah diproses dalam database yang dioptimalkan untuk jenis query yang sebenarnya ingin dijalankan pengguna. Secara konseptual ini mirip dengan bagaimana search engine merayapi web dan membangun index. HTML mentah dari setiap halaman web memang ada, tetapi search engine membuatnya berguna dengan mengindeks dan menyusunnya.
The Graph adalah protokol indexing terdesentralisasi yang paling dikenal luas. Protokol ini memungkinkan developer mendefinisikan subgraph yang menentukan secara tepat data apa yang akan diekstrak dari sebuah blockchain dan bagaimana menyimpannya. Ketika event yang relevan terjadi on-chain, fungsi mapping subgraph memproses event tersebut dan memperbarui data yang tersimpan. Aplikasi kemudian meng-query subgraph menggunakan GraphQL alih-alih berinteraksi dengan blockchain secara langsung.
Proses indexing membutuhkan komputasi intensif. Untuk Ethereum, indexer perlu memproses setiap transaksi di setiap block sejak genesis, mendekode input data dan event log, dan mempertahankan state running dari semua data yang relevan. Full archive node Ethereum menyimpan lebih dari 15 terabyte data. Memproses ini menjadi format terindeks yang berguna membutuhkan sumber daya komputasi yang signifikan dan dapat memakan waktu berhari-hari atau berminggu-minggu untuk sinkronisasi historis lengkap.
Event log adalah sumber data utama untuk sebagian besar indexer. Ketika smart contract memancarkan event, seperti event Transfer untuk token ERC-20, ia membuat entri log yang dapat difilter dan diproses indexer secara efisien. Contract yang dirancang dengan baik memancarkan event untuk setiap perubahan state yang signifikan, membuat indexing menjadi mudah. Contract yang memodifikasi state tanpa memancarkan event lebih sulit untuk diindeks karena indexer perlu menelusuri eksekusi transaksi untuk mendeteksi perubahan.
Layanan indexing yang berbeda mengoptimalkan untuk use case yang berbeda. Dune Analytics menyediakan antarmuka SQL untuk data blockchain terindeks, membuatnya dapat diakses oleh analyst yang tahu SQL tetapi tidak Solidity. Nansen mengombinasikan indexing on-chain dengan pelabelan wallet, menghubungkan alamat dengan entitas yang dikenal. Flipside menyediakan dataset terkurasi untuk protokol tertentu. Masing-masing membuat pilihan berbeda tentang apa yang akan diindeks dan bagaimana menyajikannya.
Indexing real-time menghadirkan tantangan tambahan. Produksi block di Ethereum terjadi setiap 12 detik, dan indexer perlu memproses setiap data block baru dan memperbarui database-nya sebelum block berikutnya tiba. Selama periode aktivitas tinggi, satu block bisa berisi ribuan event yang relevan. Indexer perlu menangani beban ini sambil juga melayani trafik query dari aplikasi.
Penanganan reorg adalah aspek yang halus tetapi kritis dari indexing. Blockchain kadang-kadang mengalami reorganisasi, yang berarti sebuah block yang sudah diproses sebelumnya digantikan oleh block yang berbeda pada ketinggian yang sama. Indexer perlu mendeteksi reorg ini dan melakukan rollback terhadap perubahan data apa pun dari block yang digantikan. Gagal menangani reorg dengan benar dapat menyebabkan data yang tidak konsisten yang menampilkan transaksi atau perubahan state yang sebenarnya tidak pernah terjadi.
Bagi trader dan analyst, indexer adalah yang membuat analisis on-chain menjadi praktis. Tanpa mereka, memantau wallet whale, melacak aliran token, menganalisis penggunaan protokol DeFi, atau membangun sinyal trading dari data on-chain akan memerlukan menjalankan infrastruktur Anda sendiri dengan biaya yang signifikan. Kualitas dan cakupan indexer yang Anda andalkan secara langsung memengaruhi kualitas analisis Anda.