Graph Hakkında
Reading time: 4 min
The Graph, blokzinciri verilerinin pürüzsüz bir şekilde sorgulanmasını ve endekslenmesini sağlayan güçlü bir merkeziyetsiz protokoldür. Blokzinciri verilerini sorgulama sürecini basitleştirerek merkeziyetsiz uygulama (dapp) geliştirmeyi daha hızlı ve daha kolay hale getirir.
Karmaşık akıllı sözleşmelere sahip gibi projeler ve gibi NFT girişimleri Ethereum blokzinciri üzerinde veri depolar. Bu akıllı sözleşmelerin karmaşık doğası, temel verilerin ötesinde herhangi bir şeyin doğrudan blokzincirinden okunmasını ciddi derecede zorlaştırır.
Yukarıda bahsedilen Bored Ape Yacht Club örneğinde, okuma fonksiyonlarını kullanarak temel veri sorgulama işlemleri gerçekleştirebilirsiniz. Belirli bir Ape'in sahibini, ID numarasına göre Ape'in içerik URI'sini, ya da toplam arzı sorgulayabilirsiniz.
-
Bu işlemler, okuma fonksiyonlarının doğrudan akıllı sözleşmeye kodlanmış olması sayesinde mümkündür. Ancak agregasyon, arama, ilişkisel veriler ve daha karmaşık filtrelemeler ile birlikte daha ileri düzey, spesifik ve gerçek dünyada karşılaşılan işlemlerin doğrudan akıllı sözleşmeler üzerinden yapılması mümkün değildir.
-
Örneğin, belirli bir adresin sahip olduğu Ape'leri sorgulamak ve aramanızı belirli bir özelliğe göre daraltmak isterseniz, bu bilgiyi doğrudan sözleşme ile etkileşime girerek elde edemezsiniz.
-
Daha fazla veri elde etmek için, şimdiye kadar yayımlanmış her bir olayını işlemek, Token ID ve IPFS hash'ini kullanarak metaveriyi IPFS'ten okumak ve ardından bunları bir araya getirmeniz gerekir.
Bu basit sorulara yanıt almak, tarayıcıda çalışan bir merkeziyetsiz uygulama (dapp) için **saatler, hatta günler ** sürebilir.
Alternatif olarak, kendi sunucunuzu kurup işlemleri işleyebilir, bunları bir veri tabanında depolayabilir ve veriyi sorgulamak için bir API uç noktası oluşturabilirsiniz. Ancak, bu seçenek olup sürekli bakım gerektirir, tek bir arıza noktası oluşturur ve merkeziyetsizliğin gerektirdiği önemli güvenlik özelliklerini ortadan kaldırır.
Finalite, zincir yeniden organizasyonu ve "uncle" bloklar gibi blokzinciri özellikleri, sürece karmaşıklık katar ve doğru sorgu sonuçlarını blokzinciri verilerinden elde etmeyi zaman alıcı hale getirip kavramsal olarak zorlaştırır.
The Graph, blokzinciri verilerini endeksleyip verimli, yüksek performanslı sorgulama imkanı sunan merkeziyetsiz bir protokol ile bu zorluğu çözer. Bu endekslenmiş API'lar ("subgraph'ler"), standart bir GraphQL API'ı ile sorgulanabilir.
Artık, bu süreci mümkün kılan, 'nün açık kaynaklı implementasyonuna dayanan merkeziyetsiz bir protokol mevcut.
Blokzinciri verilerini endekslemek oldukça zordur, ancak The Graph bunu kolaylaştırır. The Graph, Ethereum verilerini nasıl endeksleyeceğini subgraph'ler kullanarak öğrenir. Subgraph'ler, blokzinciri verileri üzerine kurulu özel yapım API'lerdir; bu API'ler blokzincirinden veriyi çıkarır, işler ve sorguların GraphQL ile sorunsuz bir şekilde yapılabilmesi için depolar.
-
The Graph, subgraph tanımlarını kullanır; bu tanımlar subgraph içinde subgraph manifestosu olarak bilinir.
-
Subgraph tanımı, bir subgraph için ilgili akıllı sözleşmeleri, bu sözleşmelerde odaklanılacak olayları ve bu olay verilerinin The Graph'in veritabanında depolayacağı verilere nasıl eşleneceğini açıklar.
-
Subgraph oluştururken bir subgraph manifestosu yazmanız gerekir.
-
Subgraph manifestosunu
yazdıktan sonra, Graph CLI'yi kullanarak tanımı IPFS'e depolayabilir ve bir Indexer'a bu subgraph için veri endekslemeye başlaması talimatını verebilirsiniz.
Aşağıdaki diyagramda, subgraph manifestosunun Ethereum blokzinciri üzerinde yapılan işlemler aracılığıyla yayına alınmasından sonra veri akışının nasıl ilerlediğine dair daha detaylı bilgi bulabilirsiniz.
Veri akışı şu şekildedir:
- Bir dapp, bir akıllı sözleşme üzerinde işlem yaparak Ethereum'a veri ekler.
- Akıllı sözleşme, işlemi işlerken bir veya daha fazla olay yayımlar.
- Graph Düğümü, Ethereum blokzincirini yeni blokları sürekli olarak tarar ve blokların subgraph'iniz için endekslenmesi gereken verileri içerip içermediğini kontrol eder.
- Graph Düğümü, bu bloklarda subgraph'iniz için Ethereum olaylarını bulur ve sağladığınız eşleme işleyicilerini (mapping handler) çalıştırır. Eşleme (mapping), Ethereum olaylarına karşılık olarak Graph Düğümünün depoladığı veri varlıklarını oluşturan veya güncelleyen bir WASM modülüdür.
- Dapp, blokzincirinden endekslenen veriler için Graph Düğümüne, düğümün üzerinden sorgu gönderir. Graph Düğümü ise veriyi getirmek için bu sorguları kendi veri deposuna yönelik sorgulara çevirir ve depolama sisteminin endeksleme kabiliyetlerini kullanarak bu verileri alır. Dapp, bu verileri son kullanıcılar için zengin bir arayüzde gösterir ve kullanıcılar bu arayüzü kullanarak Ethereum'da yeni işlemler gerçekleştirir. Bu döngü tekrarlanır.
Sonraki bölümler, subgraph'lere, yayına alınmalarına ve veri sorgulama sürecine daha derin bir bakış sunmaktadır.
Kendi subgraph'inizi yazmadan önce, 'ı keşfetmeniz ve halihazırda yayına alınmış bazı subgraph'leri incelemeniz önerilir. Her subgraph'in sayfasında bir GraphQL playground bulunur. Bu aracı kullanarak subgraph'in verilerine erişebilir ve sorgulamalar yapabilirsiniz.