Lahza, şartnamesi.
Gözlemevinin mühendislik tanımı: ne gözlenir, nasıl saklanır, nasıl skorlanır, nasıl teslim edilir. Site vaadi anlatır; bu belge vaadi tutan makineyi.
Genel bakış
Lahza, Avalanche L1'lerinin güvenilirliğini ağlarının içinden gözler. Üç gözlemevi — Frankfurt, Virginia, Singapur — kapsanan her zincire eş olarak katılan tam yetenekli node'lar çalıştırır. Hiçbir şey göndermezler. Kendi saatleriyle, her kullanıcı işleminin ilk görüldüğü, dahil edildiği ve kesinleştiği anı kaydederler; her zincirler arası mesajı bacak bacak izlerler; validatör setlerini ve blok üretimini gözlerler. Bu kayıttan sistem, zincir başına kamusal ve deterministik bir skor, bir ekosistem endeksi ve bir olay akışı türetir.
- Dinle — eş olarak node'lar: gelen işlemler, bloklar, validatör setleri, ICM trafiği.
- Ölç — işlem başına kendi saatimizden üç damga; güven aralıklı yüzdelikler; üç bacaklı mesaj ölçümü.
- Söyle — kamu dashboard'u, kamusal akışı ve X akışını görür; ortaklar kanıt katmanını alır.
Mimari
| Bileşen | Rol | Not |
|---|---|---|
observer | Gözlemevi başına tam yetenekli AvalancheGo node'u, kapsanan L1'leri eş olarak izler; her işlem için t₀/t₁/t₂ damgalar, blokları, validatör değişimlerini ve ICM mesajlarını kaydeder; imzalı gözlemleri toplayıcıya iletir | Hiçbir zincir için cüzdan ya da anahtar yok. Kısmi birincil senkron, state sync, budama: tam yetenek, geçmiş yok. |
collector | Üç gözlemevinden gözlemleri alır, gözlemci imzalarını doğrular, ham depoya yazar | Gözlem id'siyle idempotent |
scorer | Yüzdelikleri ve aralıkları, bileşenleri, skoru, sıra bantlarını, endeksi, olayları hesaplar | Ham deponun ve metodoloji sürümünün saf fonksiyonu |
delivery | REST API, kamusal ve kanıt WebSocket akışları, webhook dağıtıcı, X yayıncısı, saatlik zincir üstü taahhüt | Hepsi tek olay günlüğünden okur |
dashboard | Kamusal konsol; herkes gibi kamusal akışın abonesi | Statik dosyalar; özel görünüm yok |
İki değişmez: yayımlanan her sayı, ham deponun ve bir metodoloji sürümünün deterministik fonksiyonudur — hiçbir bileşen elle skor yazamaz; ve hiçbir bileşen gözlenen bir zincire işlem göndermez ya da onun üzerinde çalışmaz.
Gözlemevleri ve kapsam
| Gözlemevi | Kod | Rol |
|---|---|---|
| Frankfurt | fra | Avrupa; batı CIS trafiğinin transit koridoru |
| Virginia | iad | Kuzey Amerika |
| Singapur | sin | Asya-Pasifik |
Yol haritası: São Paulo, Johannesburg, Dubai, Tokyo. Kapsam: her mainnet L1 kapsamdadır; bir zincir observed (node'larımız eşidir), listed (P-Chain'de kayıtlı, henüz kapsanmıyor), private (dışarıdan node kabul etmiyor; eşleşme verdiği gün gözlenir) ya da dormant (30 günde kullanıcı işlemi yok) olabilir. Kapsam aktivite sırasıyla büyür ve dashboard'da belirtilir. Tek sınıf ölçüm vardır; hiçbir şey ikinci elden ölçülmez.
Gözlem protokolü
t₀— bir kullanıcı işlemi zincirin ağında gözlemci node tarafından ilk görülür; duvar saati ve monoton zaman kaydedilir.t₁— işlemin bir bloğa dahil edildiği gözlenir.t₂— bloğun validatör setince geri alınamaz biçimde kabul edildiği gözlenir.- Bir
observationyayınla:{{id, chain, observatory, tx, t0, t1, t2, observer_sig, methodology}}. Görülen ama pencere içinde dahil edilmeyen işlemobservation.droppedyayınlar.
Kesinlik t₂ − t₀'dır. Zincir, gözlemevi ve pencere başına scorer p50, p95 ve p99'u bootstrap %95 aralıklarıyla raporlar. Kadans ve örnekleme yoktur: her işlem bir gözlemdir.
Veri modeli
observation { id, chain, observatory, tx, t0, t1, t2, observer_sig, methodology } visibility: evidence
icm_trace { id, route:{from,to}, message_id, leg1_ms, leg2_ms, leg3_ms, delivered, evidence_tx } visibility: evidence
validator_obs { chain, observed_at, count, hhi, churn_24h }
block_obs { chain, observatory, height, seen_at, tx_count }
incident { id, chain, type, leg?, started, ended, duration_ms, evidence_tx, public_post } visibility: public
score { chain, computed_at, F, U, M, V, score, ci_low, ci_high, rank_band, coverage, methodology } visibility: public
index { period, median_finality_ms, chains, methodology } visibility: public
commitment { period, merkle_root, methodology, tx } visibility: public
Ham gözlemler değişmezdir. Özetler türetilmiştir ve her an hamdan yeniden kurulabilir.
Skor şartnamesi
| Bileşen | Tanım | Normalizasyon |
|---|---|---|
| F · kesinlik | 24 s içinde t₂ − t₀ p99'u, gözlemevleri arası medyan | ≤ 1 s'de 1, ≥ 10 s'de 0, arası log ölçekli |
| U · uptime | blokların zamanında üretildiği ve gelen işlemlerin dahil edildiği 90 günlük pencere oranı | %100'de 1, %95'te 0, doğrusal |
| M · mesaj teslimi | 24 saatte 60 s içinde teslim edilen gözlenmiş zincirler arası mesaj oranı; relayer olmayan rotada uygulanamaz (ağırlıklar yeniden normalize) | %100'de 1, %80'de 0, doğrusal |
| V · validatör sağlığı | set büyüklüğü, stake yoğunlaşması (HHI), 24 s değişim | açık eşiklere göre 0–1 bileşik; set büyüklüğü skorun yanında yayımlanır |
Skorlar %95 aralık taşır; aralıkları çakışan zincirler aynı sıra bandını paylaşır. Ağırlıklar ve eşikler metodoloji sürümünün parçasıdır; değişiklik yeni sürümdür ve yürürlükten önce duyurulur. Dashboard bir zinciri skor ≥ 93'te sağlıklı, ≥ 87'de bozulmuş, altında olay gösterir.
Üç bacaklı ICM
Kapsanan bir zincirde gözlenen her zincirler arası mesaj üç bacakta ölçülür: 1. bacak kaynak kesinliği, 2. bacak relayer alımı, 3. bacak hedef teslimi. 90 s sonra teslim edilmemiş mesaj, kopan bacağa atfedilen icm.stalled olayını açar. Lahza asla relayer işletmez.
Olay modeli
| Tür | Açılış | Kapanış |
|---|---|---|
finality.degraded | p99 bir pencere boyunca 30 günlük taban çizgisinin 5 katının üstünde | 5 temiz dakika |
uptime.incident | blok üretimi durur ya da gelen işlemler ≥ 2 gözlemevinden 60 s boyunca dahil edilmez | 5 temiz dakika |
icm.stalled | gözlenen mesaj 90 s sonra teslim edilmemiş | teslim ya da 24 s sonunda düşme |
validators.changed | set büyüklüğü ya da HHI eşiği aşar | bilgi amaçlı; hemen kapanır |
region.gap | bir gözlemevinin p50'si diğerlerinden %25'ten fazla sapar | 5 temiz dakika |
Her olay bir kanıt işlemi — zincirdeki gerçek bir kullanıcı işlemi — taşır; açılışta ve toparlanmada X'te kamusal gönderi yapılır.
Gözlem kanıtı
Her gözlem gerçek bir işlemi adlandırır; bu, ne olduğunu kanıtlar. Her saat, o saatin ham gözlemlerinin Merkle kökü, yürürlükteki metodoloji sürümüyle birlikte tek işlemle zincire yazılır; bu, kaydın hiç değiştirilmediğini kanıtlar. Her aylık endeks değeri aynı yolla taahhüt edilir. Lahza'nın zincire yazdığı tek şey budur.
REST API
Temel https://api.lahza.xyz/v1. JSON, UTC, milisaniye. Kamusal, anahtarsız: /chains, /chains/{{id}}, /chains/{{id}}/incidents, /badge/{{id}}.svg, /index, /methodology. Kanıt, ortaklık anahtarı (Authorization: Bearer): /chains/{{id}}/finality, /icm/routes. Örnekler için API sayfası.
WebSocket
Tek olay günlüğünden iki akış. wss://…/v1/public — anahtarsız: score.updated, incident.opened, incident.recovered, index.updated; dashboard bir abonedir. wss://…/v1/stream?chain={{id}} — ortaklık anahtarı, zincir başına bir abonelik: o zincirin her gözlemi ve izi. 15 s'de bir kalp atışı; boşluğu tekrar oynatmak için ?since=<event id> ile yeniden bağlan.
Webhook
Olay başına JSON POST. Başlıklar X-Lahza-Event, X-Lahza-Signature: sha256=HMAC(gövde, gizli anahtar). 2xx olmayan yanıtlar üstel geri çekilmeyle 5 kez yeniden denenir (1 dk → 30 dk). Olaylar id ile idempotenttir; akış ve webhook aynı id'leri paylaşır.
Kamusal katman
İki katman. Kamusal, herkese, anahtarsız: dashboard, kamusal akış ve API (skorlar, kanıt işlemleriyle olaylar, endeks, rozetler) ve X'teki olay akışı. Kanıt, bir ekosisteme vakfının ortaklığıyla: ham gözlemler, üç bacak zamanlaması, bölge ve olay detayı, geçmiş, webhook'lar, imzalı karneler — L1 ekiplerine vakıf tarafından sağlanır. Ham tarihsel veri kurumlara lisanslanır. Skor asla satılmaz.
Operasyon
- Gözlemci node. Kısmi birincil ağ senkronu (yalnız P-Chain), izlenen L1'ler için state sync, budama ile AvalancheGo. Tam yetenek, geçmiş yok: bir gözlemcinin geçmişe değil ana ihtiyacı vardır. Bugün gözlemevi başına: 2 vCPU · 8 GB · 150 GB NVMe en aktif 25 L1'i kapsar; kapsamla disk ve bellek büyür, makine sınıfı değişmez.
- Saatler. sağlayıcının zaman servisine karşı chrony; ofset 1 ms altı; gözlemevleri arası tutarlılık sürekli kontrol edilir.
- Toplayıcı, scorer, teslim. Bugün Frankfurt gözlemevi sunucusunda çalışır; yük gerektirdiğinde ayrı sunucuya alınır.
- Zincirde taahhütten başka hiçbir şey yok. Bütün sistemde tek fonlu cüzdan vardır: C-Chain'de, saatlik Merkle taahhüdü için. Gözlenen hiçbir zincirde cüzdan yoktur.
Saklama
Ham gözlemler: 90 gün. Saatlik özetler: süresiz. Olaylar ve kanıt işlemleri: süresiz. Metodoloji sürümleri ve ham depo, yayınlanan her sayıyı yeniden kurmaya yeter.
Yayım
Site statiktir: HTML, CSS ve JavaScript, CDN'den Three.js; derleme adımı yok. Klasörü Cloudflare Pages'a yükle; _headers güvenlik başlıklarını ayarlar. Dashboard, kamusal akışa bağlanana kadar demo veri okur; assets/dashboard.js içinde DEMO=false yapıp window.ES_CH'yi aboneden aynı nesnelerle doldurarak geçiş yapılır.
Yapım sırası
- Tek gözlemevi. Frankfurt node'u, kısmi senkron, beş aktif L1; ham depoya inen ilk imzalı gözlemler. Ağın içinden t₀/t₁/t₂'yi kanıtlar.
- Üç gözlemevi, 25 L1. Virginia ve Singapur devrede; kapsam aktiviteye göre. Gözlemevleri arası tutarlılığı kanıtlar.
- Scorer, v1.0 dondurulur. Aralıklı yüzdelikler, sıra bantları, bileşenler, skor, olaylar, endeks. Bu adımdan itibaren skorlar yayımlanır. Vakıfla konuşmayı değiştiren adım budur: herkesin yeniden hesaplayabileceği bir sayı.
- Teslim. REST, kamusal ve kanıt akışları, webhook, X yayıncısı, C-Chain'de saatlik taahhüt.
- Akışa bağlı dashboard.
DEMO=false. - Kapsam büyümesi. Gözlemevi başına disk ve bellek; aktivite sırasıyla daha fazla L1, her aktif mainnet L1 gözlenene kadar.
Sözlük
| Terim | Anlam |
|---|---|
| gözlem | bir gözlemevinden t₀/t₁/t₂ damgalarıyla bir kullanıcı işlemi |
| gözlemevi | gözlemci node'umuzu çalıştıran bölge |
| kesinlik | t₂ − t₀; kullanıcının beklediği süre |
| olay | başlangıcı, bitişi ve kanıtı olan eşik aşımı |
| kanıt işlemi | bir gözlemin ya da olayın arkasındaki gerçek kullanıcı işlemi |
| bacak | zincirler arası mesajın ölçülen üç aşamasından biri |
| bölgesel fark | (max − min) / median gözlemevleri arası p50 |
| endeks | gözlenen tüm L1'lerin aylık medyan ölçülmüş kesinliği |
| taahhüt | ham gözlemlerin saatlik Merkle kökü, zincire yazılır |