dYdX V4 ‘e Derin Bakış: Indexer


1

Hatırlatma: dYdX bildiğiniz gibi 2023 yılının son çeyreğinde v3’den v4’e geçecek ve tam merkeziyetsiz olacak. Mevcut olarak StarkNet üzerinde çalışan platform ve tüm ekosistem; bütünüyle Cosmos’a taşınacak ve kendine ait bir blok zincire sahip olacak. Bu konu hakkında daha detaylı bilgi arayanlara dYdX V4 yazımızı bırakıyorum.

dYdX Global geliştirici ekibinden v4 hakkında bilgiler geldikçe bunları sizlere anlatmaya çalışacağız. Bugünki konumuz Inndexer / Dizin Oluşturucu. v4 Mainnet’in lansmanına yaklaşırken, dYdX ekibinin ne inşa ettiğinden bahsederken biraz detaylandırmak istiyoruz. 

Indexer

Dizin Oluşturucu, zincirin kendisi ile son kullanıcılar arasında bulunan salt okunur bir katmandır. Indexer’ın amacı, verileri kullanımı daha kolay bir biçimde çevirmek ve sunmaktır.

Dizin oluşturucu hakkında en iyi örneklere; Infura veya Alchemy‘nin Ethereum ekosistemindeki rolü diyebiliriz. Ancak, Infura/Alchemy’den farklı olarak ve dYdX v4’teki diğer her şey gibi, Indexer tamamen açık kaynak ve herkes tarafından çalıştırılabilir şekilde dizayn edilmektedir.

İndeksleyici Nedir?

dYdX ekosistemi araçlarının bir parçası olarak, müşterilerin dYdX v4 değişimini kullanırken yüksek performanslı veri sorgularına erişebilmelerini sağlamak istiyor. Cosmos SDK Full Nodes / Tam Düğümler, zincir üstü verileri talep etmek için kullanılabilecek bir dizi API sunar. Ancak bu Tam Düğümler, web/mobil istemcilerden gelen yüksek frekanslı, düşük gecikmeli isteklere hizmet vermek için değil, blokları işlemek ve yürütmek için optimize edilmiştir.

Bu nedenle bir indeksleme servisi dYdX özel bir yazılım hazırlıyor. Indexer; zincir dışı verileri REST API‘leri ve Websockets üzerinden istemcilere sunan salt okunur bir hizmettir. Amacı, dYdX zincirinde var olan verileri kullanımı daha kolay bir şekilde depolamak ve sunmaktır. Başka bir deyişle, bir indeksleyicinin amacı, verileri daha performanslı, verimli ve web2 dostu bir şekilde indekslemek ve müşterilere sunmaktır. Örneğin, indeksleyici, sipariş defterinin durumu ve doldurmaları hakkında güncellemeler sağlayan websocket’lara hizmet edecektir. Bu istemciler, ön uç uygulamalarını (mobil ve web), pazar yapıcıları, kurumları ve geleneksel web2 API aracılığıyla dYdX zincir verilerini sorgulamak isteyen diğer tarafları içerecektir.

On-chain ve Off-chain verileri

Dizin Oluşturucu, v4 Full Node’dan gelen verilerle iki ayrı alım/depolama işlemi çalıştıracak:

  • On Chain – Zincir Üstü
  • Off Chain – Zincir Dışı

Şu anda, zincir üstü veri durumu değişikliklerinin veriminin saniyede 10-50 olay olması bekleniyor. Öte yandan, zincir dışı veri durumu değişikliklerinin beklenen verimi saniyede 500-1.000 olay arasındadır. Bu, verimlilik gereksinimlerinde 10-100x’lik bir farkı temsil eder. Bu veri türlerini ayrı ayrı ele alan v4, farklı hizmetlerin aktarım hızı gereksinimlerine göre daha iyi ölçeklenebilmesini sağlamak için oluşturulmuştur.

Zincir Üstündeki Veriler

Zincir üstü veriler, dYdX Zincirinde taahhüt edilen işlemleri okuyarak yeniden üretilebilen tüm verilerdir. Zincir üzerindeki tüm veriler fikir birliği ile doğrulanmıştır. Bu veriler şunları içerir:

  • Hesap bakiyeleri (USDC)
  • Hesap pozisyonları (açık faiz)
  • Sipariş Doldurma
    • Trade
    • Tasfiyeler
    • Kaldıraçsızlaştırma
    • Kısmen ve tamamen doldurulmuş siparişler
  • Fon oranı ödemeleri
  • Trade Komisyonları
  • Tarihsel Oracle fiyatları (fonlamayı hesaplamak ve tasfiyeleri işlemek için kullanılan spot fiyatlar)
  • Uzun vadeli sipariş verme ve iptal
  • Koşullu sipariş verme ve iptal

Zincir Dışı Veriler

Zincir dışı veriler, her v4 düğümünde bellekte tutulan verilerdir. Blok zincirine yazılmaz veya uygulama durumunda saklanmaz. Bu veriler, v4 düğümlerinde gRPC API aracılığıyla sorgulanamaz ve bloklarda depolanan verilerden türetilemez. Bellek içi veri depolarından verilerin yeniden başlatılması/temizlenmesi sırasında kaybolan v4 düğümündeki etkili bir şekilde kısa ömürlü verilerdir. Bunlar;

  • Kısa vadeli sipariş verme ve iptaller
  • Her kalıcı değişim çiftinin sipariş defteri
  • Zincire çarpmadan önce endeksli sipariş güncellemeleri

Dizin Oluşturucu Mimarisi

Dizin Oluşturucu, v4 Tam Düğümlerden bilgi alan ve bu bilgileri çeşitli istemcilere sunan bir dizi hizmetten oluşur. Kafka konuları, olayları/verileri Dizin Oluşturucu içindeki hizmetlere iletmek için kullanılır. Dizin oluşturucuyu oluşturan temel hizmetler aşağıda özetlenmiştir.

Ender (Zincir üstü alım)

Ender, Indexer’ın zincir üstü veri toplama hizmetidir. Kafka konusundan veri tüketir (tüm zincir üstü olayları blok başına kuyruğa alır) ve her veri paketi, bir bloktaki tüm olay verilerini içerir. Ender, bu bloktan tüm durum değişikliklerini alır ve bunları tüm zincir üstü verileri depolayan Dizin Oluşturucu için bir Postgres veritabanına uygular. Ender ayrıca yayılması gereken tüm websocket olayları için bir “to-websocket-?” Kafka konusu.

Vulcan (Zincir dışı alım)

Vulcan, Indexer’ın zincir dışı veri toplayıcı hizmetidir. “to-vulcan” Kafka konusundan (tüm zincir dışı olayları kuyruğa alır) veri tüketecektir. Bu, aktif emir defteri güncellemelerini, emir güncellemelerini, emir iptal güncellemelerini ve kısmi emir gerçekleştirmelerini içerecek veri paketi taşıyacaktır. Bu veriler, bir Redis önbelleğinde saklanacaktır. Vulcan, Redis’i yeni açık siparişlerle güncelleyecek, iptal edilen siparişlerin durumunu bekleyen iptal olarak ayarlayacak ve alınan yüke göre sipariş defterlerini güncelleyecektir. Vulcan, Postgres’teki siparişin durumunu güncellemek için kısmen doldurulmuş bir sipariş iptal edildiğinde Postgres’i de güncelleyecektir. Vulcan ayrıca websocket olayları oluşturacak ve bir “to-websocket-?” Yayılması gereken tüm websocket olayları için Kafka konusu.

Comlink (API Sunucusu)

Comlink, hem zincir içi hem de zincir dışı verileri okumak için REST API uç noktalarını ortaya çıkaran bir API sunucusudur. Örneğin, bir kullanıcı USDC bakiyesini veya belirli bir pozisyonun boyutunu Comlink aracılığıyla talep edebilir ve biçimlendirilmiş bir JSON yanıtı alır.

dYdX ekibi tarafından belirlenen açık bir hedef olarak, dYdX kullanıcıları zaten bu API’lere aşina olduğundan, v4 API’lerini v3 değişim API’leriyle yakından eşleşecek şekilde tasarlıyoruz . v3 ile zaman içinde geri bildirim toplamak ve bu API’leri yinelemek için zamanımız oldu ve bunların ürün düzeyinde makul olduklarına güveniyoruz.

Rountable

Roundtable, gerekli değişim toplama hesaplamalarını sağlayan periyodik bir iş hizmetidir. Bu hesaplamaların örnekleri ise şunlardır. Piyasa başına 24 saatlik hacim, açık pozisyon, hesaba göre PnL, mumlar, vb. 

Socks (Websocket hizmeti)

Socks, Indexer’ın istemciler ve Indexer arasında gerçek zamanlı iletişime izin veren websockets hizmetidir. Ender, vulcan ve roundtable’dan veri tüketecek ve bağlı istemcilere websocket mesajları gönderecektir.

Indexer Hosting / Barındırma ve Deploying / Yükleme

Uçtan uca merkeziyetsiz bir ürün yaratma yolunda, Indexer bütünüyle açık kaynak olacak. Bu, tüm hizmetler ve sistemler hakkında kapsamlı belgelerin yanı sıra Dizin Oluşturucuyu popüler bulut sağlayıcılarında çalıştırmak için altyapıyı kod olarak içerecek.

Dizin Oluşturucuyu barındırmak isteyen bir üçüncü taraf operatörün özel sorumlulukları arasında genellikle ilk devreye alma ve devam eden bakım yer alır. 

İlk yükleme şunları içerecek: 

  • Açık kaynak deposunu kullanmak için AWS altyapısını kurmak.
  • Bir tam düğümden veri almak ve bu bilgiyi API’ler ve web soketleri aracılığıyla yayınlamak için Dizin Oluşturucu kodunu dağıtmak
  • Indexer hizmetleri için faydalı metrikler ve izleme sağlayan Datadog ve insan müdahalesi gerektiren hatalar veya sorunlar konusunda gerçek zamanlı uyarı sağlayan Bugsnag alarm hizmetlerini kurmak.

İndeksleyicinin bakımı da şunları içerecek:

  • Dizin oluşturucuyu yeni açık kaynak sürümler için taşıma ve/veya yükseltme
  • Bugsnag ve Datadog’u herhangi bir sorun için izleme ve dahili ekibi ele alması için uyarma
  • dYdX tarafından sağlanan bir çalıştırma kitabıyla ilgili sorunları ayıklama ve düzeltme

dYdX, Dizin Oluşturucunun dağıtımı ve bakımı için gerekli görevleri yerine getirmesi için en azından bir DevOps mühendisinin gerekli olacağına inanıyor. Bir operatörün aşağıdaki hizmetleri kullanması gerekecektir: 

  • AWS
    • ECS – Fargate
    • RDS – Postgres Veritabanı
    • EC2
    • Lambda
    • ElastiCache Redis
    • EC2 ELB – Yük dengeleyici
    • Cloudwatch – Günlükler
    • Gizli Yönetici
  • Terraform Cloud – Buluta dağıtımı için
  • Bugsnag – hata farkındalığı
  • Datadog – ölçümler ve izleme
  • Pagerduty – uyarı

Operatörler, açık kaynaklı indeksleyiciyi genel erişim için oldukça erişilebilir (yani, yüksek çalışma süresi) bir şekilde barındırabilmelidir. Gereksinimler, yukarıdaki hizmetlerde hesap sahibi olmayı ve dağıtım ve bakım sorumluluklarını yerine getirmesi için uygun personeli işe almayı içerir. 

v4’ün hala geliştirme aşamasında olduğu göz önüne alındığında, yukarıda sunulanların değişebileceğini lütfen unutmayın. 

dYdX Hakkında

dYdX, açık, güvenli ve güçlü finansal ürünler inşa etme misyonuyla önde gelen merkeziyetsiz bir borsa geliştiricisidir. dYdX şu anda Ethereum üzerinde denetlenen akıllı sözleşmelerle çalışmaktadır, bu da trade yaparken merkezi bir borsaya güvenmek zorunda olmamanızı sağlar. Merkeziyetsiz bir borsanın güvenliği ve şeffaflığını, merkezi bir borsanın hızı ve kullanım kolaylığı ile birleştiriyor.

dYdX | Twitter | YouTube | Telegram | Discord | Medium

Bu Yazıya Tepkiniz Ne Oldu?

Bültenimize Katılın

Hemen ücretsiz üye olun ve yeni güncellemelerden haberdar olan ilk kişi olun.

Yorum Yap

Yorumlar (1)

    Bir cevap yazın

    E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir