4 dakika
Yeni Zincir Entegrasyonu
Chains can bring Subgraph support to their ecosystem by starting a new graph-node
integration. Subgraphs are a powerful indexing tool opening a world of possibilities for developers. Graph Node already indexes data from the chains listed here. If you are interested in a new integration, there are 2 integration strategies:
- EVM JSON-RPC
- Firehose: Tüm Firehose entegrasyon çözümleri, Firehose temelinde geliştirilmiş ve
graph-node
tarafından doğal olarak desteklenen büyük ölçekli bir akış motoru olan Substreams’i içerir. Bu sayede paralelleştirilmiş dönüşümler gerçekleştirilebilir.
Unutmamak gerekir ki, önerilen yaklaşım tüm yeni zincirler için yeni bir Firehose geliştirmektir. Ancak bu sadece EVM dışı zincirler için bir zorunluluktur.
Entegrasyon Stratejileri
1. EVM JSON-RPC
İlgili blokzinciri EVM eşdeğeriyse ve istemci/düğüm standart EVM JSON-RPC API’sini dışarıya sunuyorsa, Graph Düğümü yeni zinciri endeksleyebilmelidir.
EVM JSON-RPC’yi test etme
Graph Düğümü’nün bir EVM zincirinden veri alabilmesi için RPC düğümünün şu EVM JSON-RPC metotlarını dışarıya sunması gerekir:
eth_getLogs
eth_call
(geçmiş bloklar için gereklidir. EIP-1898 ile gelmiştir. Arşiv düğümü gerektirir)eth_getBlockByNumber
eth_getBlockByHash
net_version
eth_getTransactionReceipt
, bir JSON-RPC toplu talebindetrace_filter
(sınırlı izleme ve isteğe bağlı olarak Graph Düğümü için gerekli olabilir)
2. Firehose Entegrasyonu
Firehose, yeni nesil bir veri çekme katmanıdır. Geçmiş verileri düz dosyalarda saklar ve gerçek zamanlı olarak akışa alır. Firehose teknolojisi, sorgulama tabanlı API çağrılarını, veri akışı sağlayan bir itme (push) modeliyle değiştirerek verileri endeksleme düğümüne daha hızlı iletir. Bu, senkronizasyon ve endeksleme hızını artırmaya yardımcı olur.
NOT: StreamingFast ekibi tarafından yapılan tüm entegrasyonlar, Firehose çoğaltma protokolünün zincirin kod tabanına entegre edilmesini ve güncel tutulmasını içerir. StreamingFast, zincirin kodunda veya kendi kodunda yapılan değişiklikleri takip eder ve gerekli durumlarda ikili (binary) dosyalarını yayımlar. Bu süreç, protokol için Firehose/Substreams ikili dosyalarının yayımlanmasını, zincirin blok modeline uygun Substreams modüllerinin bakımını ve gerektiğinde ölçümleme (instrumentation) içeren blokzinciri düğümü ikili dosyalarının yayımlanmasını kapsar.
EVM Dışı Zincirler İçin Entegrasyon
Firehose’u zincirlere entegre etmenin temel yöntemi, bir RPC sorgulama stratejisi kullanmaktır. Sorgulama algoritmamız, yeni bir bloğun ne zaman geleceğini tahmin eder ve o zaman diliminde yeni blok olup olmadığını daha sık kontrol ederek düşük gecikmeli ve verimli bir çözüm sunar. Firehose’un entegrasyonu ve bakımı konusunda yardım almak için StreamingFast ekibiyle iletişime geçin. Yeni zincirler ve entegratörleri, Firehose ve Substreams’in ekosistemlerine kazandırdığı çatallanma farkındalığını ve yüksek derecede paralelleştirilmiş endeksleme yeteneklerini takdir edecektir.
EVM (geth
) Zincirleri İçin Özel Ölçümleme
EVM zincirleri için, geth
live-tracer kullanılarak daha derin bir veri seviyesine erişilebilir. Bu, Go-Ethereum ve StreamingFast iş birliğiyle, yüksek verimli ve kapsamlı bir işlem izleme sistemi oluşturmak amacıyla geliştirilmiştir. Live Tracer, en kapsamlı çözüm olup, Genişletilmiş blok detayları sağlar. Bu sayede, olayların durum değişikliklerine, çağrılara, üst çağrı ağaçlarına dayalı olarak örüntü eşleştirme, veya akıllı sözleşmelerdeki değişkenlerin güncellenmesine bağlı olarak olay tetikleme gibi yeni endeksleme yaklaşımları mümkün hale gelir.

NOT: Firehose üzerine yapılan bu iyileştirme, zincirlerin geth version 1.13.0
ve üstü EVM motoru kullanmasını gerektirir.
EVM değerlendirmeleri - JSON-RPC ve Firehose arasındaki farklılıklar
While the JSON-RPC and Firehose are both suitable for Subgraphs, a Firehose is always required for developers wanting to build with Substreams. Supporting Substreams allows developers to build Substreams-powered Subgraphs for the new chain, and has the potential to improve the performance of your Subgraphs. Additionally, Firehose — as a drop-in replacement for the JSON-RPC extraction layer of graph-node
— reduces by 90% the number of RPC calls required for general indexing.
- All those
getLogs
calls and roundtrips get replaced by a single stream arriving into the heart ofgraph-node
; a single block model for all Subgraphs it processes.
NOTE: A Firehose-based integration for EVM chains will still require Indexers to run the chain’s archive RPC node to properly index Subgraphs. This is due to the Firehose’s inability to provide smart contract state typically accessible by the eth_call
RPC method. (It’s worth reminding that eth_calls
are not a good practice for developers)
Graph Node Configuration
Configuring Graph Node is as easy as preparing your local environment. Once your local environment is set, you can test the integration by locally deploying a Subgraph.
-
Bu satırı düzenleyerek yeni ağ adını ve EVM JSON-RPC veya Firehose uyumlu URL’yi ekleyin.
Çevre değişkeni adının kendisini değiştirmeyin. Ağ adı farklı olsa bile
ethereum
olarak kalmalıdır. -
Bir IPFS düğümü çalıştırın veya The Graph tarafından kullanılanı kullanın: https://ipfs.thegraph.com
Substreams destekli Subgraph’ler
For StreamingFast-led Firehose/Substreams integrations, basic support for foundational Substreams modules (e.g. decoded transactions, logs and smart-contract events) and Substreams codegen tools are included. These tools enable the ability to enable Substreams-powered Subgraphs. Follow the How-To Guide and run substreams codegen subgraph
to experience the codegen tools for yourself.