Solana'nın Proof of History Mekanizması: Dağıtık Sistemlerdeki Saat Problemi
Solana'nın Proof of History (PoH) konsensüs mekanizmasının derinlemesine incelemesi. PoH'un 65.000 TPS hedefine nasıl ulaştığı, VDF mantığı ve ağın darboğazları.
Dağıtık Sistemlerde “Zaman” Neden Bu Kadar Zor?
Distributed systems üzerine kafa yoran her mühendisin bildiği bir gerçek vardır: Zaman, ağdaki en büyük düşmandır. Binlerce node’un olduğu bir yapıda “Hangi işlem önce gerçekleşti?” sorusuna cevap vermek, göründüğü kadar basit değil. Geleneksel blockchain yapılarında (Bitcoin, Ethereum) node’lar, bir bloğun zaman damgası üzerinde uzlaşmak için birbirleriyle sürekli haberleşmek zorundadır.
Bu haberleşme trafiği, ağın hızını limitliyen ana faktördür. Node’lar arasında dönen “dedikodu” (gossip) mesajları, ağ büyüdükçe eksponansiyel olarak artar. Eğer 1000 node varsa, her birinin diğeriyle senkronize olması saniyeler sürer. Bu da bizi blockchain dünyasındaki “ölçeklenebilirlik üçlemi”ne (Scalability Trilemma) hapseder.
Solana bu probleme radikal bir mühendislik yaklaşımıyla cevap veriyor: Proof of History (PoH).
PoH, aslında bir konsensüs algoritması değil; her node’un kendi içinde doğrulayabildiği yüksek çözünürlüklü bir kriptografik saattir. Bu yazıda, Solana’nın bu mimariyi nasıl kurduğunu, neden “Verifiable Delay Function” (VDF) kullandığını ve gerçek dünya senaryolarında (özellikle ağın durduğu o meşhur anlarda) neler yaşandığını inceleyeceğiz.
PoH: Bir Tarihsel Kayıt Zinciri
PoH’un temelinde SHA-256 özetleme (hashing) fonksiyonunun ardışık olarak çalıştırılması yatar. Basitçe ifade etmek gerekirse, bir hash fonksiyonunun çıktısını bir sonraki hash’in girdisi yaparsanız, bu işlemi paralel olarak hızlandıramazsınız. Bu durum bize “zamanın geçtiğini” matematiksel olarak kanıtlama imkanı verir.
Yukarıdaki görselde de görebileceğiniz gibi, PoH her saniye milyonlarca hash üreterek bir “zaman şeridi” oluşturur. Eğer bu şeridin içine bir veri eklersek, o verinin tam olarak hangi hash’ten sonra ve hangisinden önce geldiğini kesin olarak biliriz. Bu, node’ların birbirine “Bu işlem ne zaman geldi?” diye sormasına gerek kalmadan senkronize olmasını sağlar.
VDF (Verifiable Delay Function) Mantığı ve Adımları
Mühendislik perspektifinden baktığımızda PoH, aslında bir VDF uygulamasıdır. VDF’lerin iki temel özelliği vardır:
- Ardışık Hesaplanma: Hesaplamak zaman alır ve tek bir çekirdekli (single-thread) CPU’da yapılması zorunludur.
- Hızlı Doğrulama: Sonucu doğrulamak, hesaplamaktan binlerce kat daha hızlıdır.
VDF Süreci Şöyle İşler:
- Adım 1: Sistem bir
seedhash değeri ile başlar. - Adım 2: Bu hash, bir sonraki döngü için girdi olarak kullanılır.
- Adım 3: Belirli aralıklarla (örneğin her 1000 iterasyonda bir) çıktı kaydedilir.
- Adım 4: Eğer araya bir veri (transaction) girecekse, o anki hash ile XOR’lanıp yeni bir hash üretilir.
- Adım 5: Tüm süreç loglanır ve ledger’a yazılır.
Bu asimetri, Solana’nın saniyede binlerce işlemi paralel olarak işlemesine olanak tanırken, doğrulayıcıların (validators) saniyenin küçük bir kesrinde bu sırayı teyit etmesini sağlıyor.
Mimari Bütünlük: PoH ve Tower BFT
PoH tek başına yeterli değildir. Solana, PoH’un sağladığı zaman kaydını, Tower BFT (Practical Byzantine Fault Tolerance’ın Solana versiyonu) ile birleştirir. Tower BFT, node’ların hangi “fork”un doğru olduğu konusunda oy kullanmasını sağlar. Ancak geleneksel BFT’den farkı, zaman aşımı (timeout) sürelerinin “gerçek zaman” yerine PoH slotları üzerinden hesaplanmasıdır.
Bu durum, ağdaki tüm doğrulayıcıların aynı saat hızında dönen bir dişli sistemine bağlanması gibi düşünülebilir. Eğer bir doğrulayıcı yanlış bir bloğa oy verirse, PoH saatine dayalı bir “lockout” (kilitlenme) cezası alır. Bu ceza, yanlış oy verildiği sürece eksponansiyel olarak artar. Mühendislik açısından bu, hatalı node’ların ağın hızını yavaşlatmasını engelleyen muazzam bir otokontrol mekanizmasıdır.
PoH Hakkında Doğru Bilinen Yanlışlar
Mühendislik topluluğunda PoH ile ilgili çok fazla bilgi kirliliği mevcut. Bunları netleştirmek, sistemin mimarisini anlamak adına kritik önem taşıyor:
- “PoH bir konsensüs algoritmasıdır”: Hayır, PoH bir konsensüs algoritması değildir. Solana hala bir Proof of Stake (PoS) ağıdır. PoH sadece bu konsensüsün çok daha hızlı çalışmasını sağlayan bir “pre-ordering” mekanizmasıdır.
- “PoH ağı merkezi yapar”: Donanım gereksinimleri merkeziyetsizliği zorlaştırsa da, PoH’un kendisi matematikseldir. ASIC cihazlarla PoH üretmek mümkün olsa da, bunun ağa bir saldırı avantajı sağlaması çok zordur çünkü doğrulama süreci son derece hızlıdır.
- “PoH sadece bir timestamp’tir”: Klasik timestamp’ler güvene dayalıdır (trusted third party). PoH ise güvene dayalı olmayan (trustless), matematiksel olarak ispatlanabilir bir zaman dizisidir.
Daha geleneksel ve farklı bir konsensüs yaklaşımı için Ethereum 2.0 Staking mekanizmasını inceleyebilirsiniz.
Paralel İşlem ve Sealevel Motoru
Geleneksel blockchain’ler “single-threaded” (tek çekirdekli) çalışırken, Solana’nın PoH motoru sayesinde işlemler Sealevel adı verilen bir mekanizmayla paralel olarak yürütülür. Eğer iki işlem birbiriyle çakışmıyorsa (farklı hesapları ilgilendiriyorsa), aynı anda işlenebilirler. PoH, bu paralel işlemlerin finalde hangi sırayla deftere (ledger) yazılacağını garanti altına alan “trafik polisi” görevini üstlenir.
Önemli Mühendislik Notu: Solana’nın akıllı kontratları (programlar) “stateless” yapıdadır. Yani her işlem, hangi dataya erişeceğini önceden belirtmek zorundadır. Bu, runtime’ın hangi işlemlerin paralel çalışabileceğine milisaniyeler içinde karar vermesini sağlar. Eğer iki işlem aynı hesabı modify ediyorsa, bunlar mecburen sıraya konur.
Gerçek Hayat Senaryosu: Spam ve Ağın Durması
Kağıt üzerinde her şey harika görünse de, Solana’nın bu agresif hız odaklı mimarisi bazı zayıflıkları da beraberinde getiriyor. Geçtiğimiz yıllarda ağın birkaç kez saatlerce durduğunu gördük. Peki neden?
Mesele genellikle “spamlerden” kaynaklanıyor. PoH saati o kadar hızlı dönüyor ki, eğer ağa saniyede yüz binlerce bot işlemini boca ederseniz, doğrulayıcıların CPU’ları ve network kuyrukları (ingress) bu yükü kaldıramıyor. PoH zinciri koptuğu an, ağın tekrar senkronize olması için manuel müdahale ve “restart” gerekiyor.
Bu durum, “mükemmel hız” ile “dayanıklılık” arasındaki ince çizgiyi bize hatırlatıyor. Solana ekibi bu sorunu çözmek için UDP yerine QUIC protokolüne geçiş yaptı ve “Local Fee Markets” (Yerel Ücret Piyasaları) sistemini getirdi. Böylece bir NFT koleksiyonundaki yoğunluk, tüm ağı kilitleyemiyor.
Donanım Canavarı: Doğrulayıcı Gereksinimleri
PoH’un saniyede milyonlarca hash üretmesi ve binlerce işlemi paralel işlemesi bedava değil. Solana doğrulayıcısı olmak için ciddi bir donanım yatırımına ihtiyaç var. Eğer “evdeki laptopumla node çalıştırayım” derseniz, muhtemelen ağın hızına yetişemez ve sistemden atılırsınız.
Teknik Bir Karşılaştırma:
- Ethereum Node: Bir Raspberry Pi veya 8GB RAM’li bir PC’de çalışabilir.
- Solana Node: 12 Core+ CPU, 256GB+ RAM, NVMe SSD ve 1 Gbps internet gerektirir.
Mühendislik açısından bu bir “trade-off”. Solana, hızı artırmak için donanım gereksinimlerini yukarı çekiyor. Bu da bizi blockchain dünyasının en ateşli tartışmasına getiriyor: Merkeziyetsizlik. Eğer node sayısı donanım maliyeti yüzünden azalırsa, sistem ne kadar güvenli olur?
Merkeziyetsizlik vs. Ölçeklenebilirlik Dengelemesi
Eleştirenlerin en büyük argümanı, bu yüksek donanım maliyetinin node sayısını kısıtladığı ve ağın zamanla birkaç büyük veri merkezine mahkum olacağı yönünde. Ethereum tarafında “herkes evinde node çalıştırabilsin” vizyonu hakimken, Solana tarafında “dünya çapında bir süper bilgisayar inşa edelim” vizyonu var.
Kendi tecrübelerime dayanarak şunu söyleyebilirim: Eğer amacınız yüksek frekanslı bir trading platformu inşa etmekse, merkeziyetsizlikten bir miktar ödün verip Solana’nın hızını kullanmak mantıklı bir mühendislik kararı olabilir. Ancak sansüre karşı %100 direnç önceliğinizse, adresiniz başka bir zincir olabilir. Mühendislik, her zaman bir denge sanatıdır.
Geliştirici Gözüyle Solana: Rust ve Anchor
PoH’un sağladığı bu hızın üzerine bir uygulama inşa etmek de kendine has zorluklar barındırıyor. Solana’da akıllı kontratlar Rust diliyle yazılıyor. Eğer Solidity dünyasından geliyorsanız, “Account management” kavramı başlangıçta biraz başınızı ağrıtabilir.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
// Solana Anchor Framework Kontrat Yapısı
#[program]
pub mod solana_poh_intro {
use super::*;
pub fn initialize(ctx: Context<Initialize>) -> Result<()> {
// Clock syscall'u doğrudan PoH zincirinden beslenir
// Bu sayede blok içi zaman damgaları milisaniye hassasiyetindedir
let clock = Clock::get()?;
// Log mesajları da zaman damgalı olarak ledger'a yazılır
msg!("Zaman kaydı PoH üzerinden alındı: {}", clock.unix_timestamp);
Ok(())
}
}
Burada dikkat ederseniz Clock::get()? ile sistem saatine değil, PoH kaynağından gelen doğrulanmış zamana erişiyoruz. Bu, uygulamanızın deterministik olmasını ve her node’da aynı sonucu üretmesini garanti eder. Blockchain’lerde determinizm hayati önem taşır.
PoH Progresyonu: Basit Python Simülasyonu
PoH’un mantığını kod ile anlamak isteyenler için şöyle basit bir Python simülasyonu düşünebiliriz. Bu kod, sequential hashing işleminin nasıl bir “zaman dizisi” oluşturduğunu gösterir:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
import hashlib
import time
def simulate_poh(iterations):
current_hash = hashlib.sha256(b"genesis").hexdigest()
start_time = time.time()
for i in range(iterations):
# Önceki hash'i girdi olarak kullan (Sequential)
current_hash = hashlib.sha256(current_hash.encode()).hexdigest()
end_time = time.time()
print(f"{iterations} iterasyon tamamlandı.")
print(f"Toplam süre: {end_time - start_time:.4f} saniye")
return current_hash
# Solana ağında bu işlem saniyede milyonlarca kez yapılır
simulate_poh(1000000)
Bu kodu çalıştırdığınızda, CPU’nuzun tek bir çekirdeği tam yükte çalışacak ve işlemi paralelleştiremeyecektir. İşte “zamanın kanıtı” budur.
Ağ Sıkışıklığı (Congestion) ve “True TPS” Tartışması
Reddit ve Hacker News tartışmalarında sıkça dile getirilen “Solana aslında o kadar hızlı değil” argümanına da değinmek gerekiyor. Solana’nın reklamını yaptığı 65.000 TPS rakamının büyük bir kısmı aslında node’lar arasındaki “oylama” işlemlerini içeriyor.
Gerçek kullanıcı işlemlerine (non-vote TPS) baktığımızda, ağın yoğun zamanlarda 1.000 - 3.000 TPS bandına düştüğünü görüyoruz. Bu hala Ethereum ve Bitcoin’den kat kat fazla olsa da, “milyon TPS” hayalinden şimdilik uzak olduğumuzu gösteriyor. Bu farkı bilmek, proje geliştirirken doğru mimariyi seçmenizi sağlar.
Gelecek Vizyonu: Firedancer ve Yeni Limitler
Solana’nın mimari serüveni henüz bitmedi. Şu an ağın çoğu doğrulayıcısı tek bir yazılım (Solana Labs) üzerinde çalışıyor. Ancak Firedancer adı verilen yeni bir “validator client” geliştiriliyor. Jump Crypto tarafından geliştirilen bu client, C++ ile sıfırdan yazıldı.
Firedancer’ın en büyük iddiası, PoH mimarisini C++ ile en alt seviyeden optimize ederek toplam TPS kapasitesini 1 milyonun üzerine çıkarmak. Mühendislik topluluğunda büyük heyecan yaratan bu gelişme, ağın durma sorunlarına karşı da bir “yedek güç” görevi görecek. Tek tip client’tan kurtulmak, ağın güvenliğini de artıracaktır.
Teknik Sözlük (Glossary)
Yazıyı bitirmeden önce, Solana ekosisteminde sıkça duyacağınız bazı terimlerin teknik karşılıklarını buraya bırakıyorum:
- Slot: Bir liderin PoH dizisi üzerinde blok üretmesi için ayrılan süre (genellikle 400ms).
- Epoch: Yaklaşık 432.000 slotluk bir dönem. Lider çizelgesi burada güncellenir.
- PDA (Program Derived Address): Programlar tarafından kontrol edilen ancak private key’i olmayan adresler.
- Lamport: Solana’nın en küçük birimi (1 SOL = 10^9 Lamport). Leslie Lamport’a atıftır.
- Finality: Bir işlemin geri alınamaz hale gelme süresi. Solana’da bu yaklaşık 2-3 saniyedir.
- Jito: Solana üzerindeki MEV (Maximal Extractable Value) çözüm sağlayıcısı.
Son Teknik Notlar ve Çıkarımlar
Solana ve Proof of History’yi incelerken şu üç noktayı cebimize koymalıyız:
- Zaman Paradigması: Dağıtık bir sistemde zamanı dışarıdan değil, matematiksel bir gerçeklikten (VDF) almak, ölçeklenebilirliğin anahtarıdır.
- Paralellik Zorunluluğu: EVM gibi ardışık çalışan sistemlerin bir sınırı var. Gelecek, Sealevel gibi paralel işlem motorlarında.
- Maliyet ve İrade: Her performans artışının bir bedeli vardır. Solana bu bedeli donanım gereksinimleriyle ödetiyor.
PoH, “zaman kaybını” minimize etmek için tasarlanmış bir mühendislik harikasıdır. Ancak bu harikayı kullanırken ağın stabilitesini de birer “constrained variable” olarak hesaba katmak gerekir. Projelerinizde hıza mı yoksa ultra merkeziyetsizliğe mi ihtiyacınız olduğunu belirlediğiniz an, Solana’nın size neler sunabileceğini daha iyi anlayacaksınız.
Teknik olarak bakıldığında, PoH sadece bir zaman damgası değil; blockchain’lerin “fizik yasalarını” yeniden yazan bir yaklaşımdır. Eğer bir gün Web3 gerçekten Web2 hızına ulaşacaksa, bu muhtemelen PoH veya onun evrilmiş versiyonları sayesinde olacaktır. Reddit tartışmalarında görülen skeptisizme rağmen, PoH’un mühendislik başarısını inkar etmek teknik olarak mümkün değil.



