Bölüm 1: Sahafın Tozlu Rafı

Kadıköy sokaklarında akşamüstü bastıran yağmur, gri betonları parlatırken Ali montunun fermuarını boğazına kadar çekti. Kurumsal bir siber güvenlik şirketinde geçirdiği yorucu penetrasyon testi mesaisinden sonra kafası karmakarışıktı. Büyük bankaların, e-ticaret devlerinin yapay güvenlik duvarlarını aşmak, açıklarını raporlamak onun günlük rutiniydi ama içten içe bu dijital dünyanın temellerindeki çürüklüğü hissediyordu. Her şey tek bir sunucuya, tek bir yöneticiye ya da merkezi bir şirketin insafına bağlıydı. Veri merkezleri hacklendiğinde ya da bir veri tabanı yöneticisi hata yaptığında milyonlarca insanın hayatı bir anda durabiliyordu.

Yağmurdan kaçıp sığındığı Akmar Pasajı'nın tozlu kokusu Ali'ye her zaman huzur verirdi. Sahaf Emre'nin dükkanına girdi. Emre, kalın gözlüklerinin arkasından Ali'ye hafifçe başıyla selam verip çayından bir yudum aldı. Ali, rafların arasında rastgele gezinirken en arkada, yıpranmış, cildi hafifçe soyulmuş yeşil kapaklı bir kitap gördü. Üzerinde yaldızları dökülmüş bir yazı okunuyordu: 'Bir Kitap Okudum Hayatım Değişti'.

Kapağını açtığında, sıradan bir kişisel gelişim safsatasıyla karşılaşacağını sanmıştı. Ancak sayfaları çevirdikçe gözleri büyüdü. Kitabın marjlarında el yazısıyla alınmış notlar, Ed25519 eliptik eğri grafikler, canonical JSON serileştirme akış şemaları ve UTXO ağaç diyagramları vardı. Kitap şu cümlelerle başlıyordu: 'Paranı tutmak için bankaya, sözünü tutmak için notere, kimliğini kanıtlamak için devlete muhtaç olduğun sürece özgür değilsin. Gerçek egemenlik, üçüncü şahıslara güven duymak zorunda olmadığın kriptografik sistemlerde yatar.'

Ali, siber güvenlik refleksiyle sayfaları daha hızlı çevirmeye başladı. Kitapta BitKuruş protokolünün temel yapı taşları açıklanıyordu. Tokenlar, veritabanında basit bir bakiye hanesi değil, değişmez birer UTXO nesnesiydi. Her token 'token_id', 'owner', 'value', 'version' ve 'status' içeren bağımsız bir varlıktı. Kitabın yazarı bunu şöyle özetlemişti: 'Bir kuruş göndermek için o kuruşu yakarsın ve alıcı için yeni bir kuruş yaratırsın.' Yazar kendini sadece 'S.' olarak tanıtmıştı. Son sayfada ise net bir yönerge ve bir GitHub adresi yer alıyordu: 'https://github.com/sencerhan/cuzdan. Bu adrese git ve dijital özgürlüğünün ilk adımını at.' Ali, cebindeki son 5 TL'yi Emre'ye uzatıp kitabı çantasına attı. Aklında 'Ya tüm sunucular çevrimdışı olursa?' ve 'Bu anonim S. kim?' sorularıyla metronun yolunu tuttu.

Bölüm 2: Tek Dosya, Sıfır Güven

Ali eve varır varmaz bilgisayarını açtı ve GitHub reposunu incelemeye başladı. Siber güvenlik dünyasında 'güven' kelimesi tehlikeli bir illüzyondu. Repo şaşırtıcı derecede yalındı: Sadece tek bir HTML dosyası ('cuzdan.html'), '.gitignore', 'README.md' ve 'LICENSE'. Tarayıcı tabanlı çalışan, hiçbir sunucu bağımlılığı olmayan saf bir arayüzdü. Ali hemen potansiyel saldırı vektörlerini analiz etmeye başladı: 'Kullanıcının tarayıcısına sızan zararlı bir eklenti private key'i okuyabilir miydi?', 'XSS açığı olsa kanonik JSON verisi manipüle edilebilir miydi?', 'jsDelivr CDN'inden çekilen noble/ed25519 kütüphanesine bir supply-chain saldırısı yapılsa ne olurdu?'

Kodu satır satır inceledikçe S.'nin güvenlik mimarisine hayran kaldı. Ed25519 anahtar çifti tamamen kullanıcının tarayıcısında, WebCrypto API kullanılarak yerel olarak üretiliyordu. Özel anahtar (private key) sunucuya asla gönderilmiyor, ağa sadece genel anahtar (public key) ve imzalanmış işlem paketleri iletiliyordu. Cüzdan verileri tarayıcının yerel depolama alanında (localStorage) doğrudan saklanmıyordu; bunun yerine kullanıcının belirlediği şifre ile PBKDF2-SHA256 (250.000 iterasyon) üzerinden türetilen bir anahtarla AES-GCM 256-bit algoritması kullanılarak şifreli bir kasa ('bk.encryptedPrivateKey') halinde saklanıyordu.

Yine de Ali siber güvenlik paranoyasından vazgeçmedi. Dışarıdan gelebilecek tüm riskleri sıfırlamak için, internet bağlantısı tamamen kesilmiş, fiziksel olarak yalıtılmış (air-gapped) eski bir ThinkPad bilgisayarı bu iş için ayırdı. GitHub reposunu internete bağlı bilgisayarına klonladı, CDN bağımlılığı olan noble/ed25519 kütüphanesini indirip yerel bir JS dosyası olarak kaydetti ve hepsini bir USB bellek ile air-gapped bilgisayarına aktardı. Bilgisayarda yerel bir Python HTTP sunucusu başlattı ve cüzdanı tamamen çevrimdışı çalıştırdı.

Cüzdan arayüzünden 'Yeni Cüzdan Oluştur' butonuna tıkladı. Tarayıcı anında bir Ed25519 anahtar çifti üretti. Genel anahtarı '7a3f8e...d41b' hex formatında ekrana yansıdı. Özel anahtarı ise air-gap korumalı bilgisayarın belleğinde kaldı ve 24 karakterlik güçlü bir parola ile şifrelenerek 'bitkurus-wallet-7a3f8e.json' adıyla şifreli bir yedek dosyasına dönüştürüldü. Ali yedek dosyasını ayrı bir USB belleğe kaydetti. 'Artık anahtarlarım güvende' diye düşündü Ali, 'sırada sistemi test etmek var.'

Bölüm 3: Newton'ın Ağacından İlk Elma

Cüzdanını başarıyla oluşturan Ali, kitaptaki diğer adıma geçti: BitKuruş ağının faucet (musluk) sistemini denemek. Ağın ana sayfasına girdiğinde karşısına Newton temalı dijital bir elma ağacı çıktı. Tasarım minimalist ve etkileyiciydi. Ağaç altında düşünen bir Newton figürü yer alıyor, dallarında ise kırmızı elmalar duruyordu. Sistem kurallarına göre elmaların olgunlaşması için ağacın sulanması gerekiyordu. Ali 'Sula' butonuna tıkladı. Bu işlem ağın veritabanında IP adresine bağlı bir 'TreeWatering' kaydı oluşturdu ve 1 saatlik bir geçerlilik süresi başlattı. Saniyeler ilerledikçe elmalar dallarda belirmeye başladı.

Ali dallardaki elmalardan birine tıkladı. Karşısına cüzdan adresini soran bir claim penceresi çıktı. Air-gapped cüzdanından kopyaladığı '7a3f8e...d41b' genel anahtarını yapıştırdı ve işlemi onayladı. Arka planda sunucu, Ali'nin bu talebini 'POST /api/tree/claim' endpoint'i üzerinden aldı. Sistemdeki 'IssuanceService' devreye girdi. Ali'nin IP adresini, sulama durumunu ve ağaç limitlerini kontrol ettikten sonra 'fruit-node1-slot3' benzersiz ID'si ile yeni bir token ihraç etti. Bu token 'apple-x7km9qr2wbfe' kimliği, '1.000000000000000000 BK$' değeri ve 'active' durumu ile deftere işlendi. Toplam arz kontrolü yapılarak 21 milyon BK$ sınırı denetlendi.

Ali hemen cüzdan bakiyesini yeniledi. Ekranda tam olarak 1.000000000000000000 BK$ değerindeki ilk aktif token'ı görünüyordu. Ancak siber güvenlik uzmanı içgüdüsü devreye girdi: 'Peki ya sunucu bana sahte bir token gösteriyorsa? Ya ağaç sunucusu hacklenmişse ve beni kandırıyorsa?' Ali, ağın durumunu doğrulamak için 'GET /api/state' endpoint'ini sorguladı. Dönen 'state_hash' değerini ağdaki diğer bağımsız düğümlerle karşılaştırdı. Hepsi birebir eşleşiyordu. Ayrıca kendi token'ını 'GET /api/token/apple-x7km9qr2wbfe' adresi üzerinden doğrudan sorgulayarak sahibinin kendi anahtarı olduğunu ve node tarafından Ed25519 ile imzalandığını doğruladı.

O gece Ali, Newton figürünün yanındaki küçük yılan simgesine tıklayarak yılan oyununu da keşfetti. Oyunda yön tuşlarıyla yeyiği her elma cüzdanına '0.020000000000000000 BK$' kazandırıyordu. Yılanın kendi kuyruğuna çarpması durumunda elmalar yanıyordu; bu da Ali'ye UTXO'nun atomik yapısını hatırlattı: İşlem başarıyla tamamlanana kadar hiçbir şey kesinleşmezdi. Ali günlük yılan limiti dolana kadar oynadı ve cüzdanına 2.54 BK$ daha ekledi. Artık bakiyesi 3.54 BK$'a ulaşmıştı.

Bölüm 4: İlk Transfer — BigInt ve Canonical JSON

Ali kazandığı tokenların gerçekten harcanabilir olduğunu kanıtlamak istedi. Kadıköy sahafı Emre'nin de BitKuruş cüzdanı açtığını öğrenmişti. Kitabın sembolik bedeli olarak Emre'ye 1.0 BK$ göndermeye karar verdi. Emre cüzdan adresini Ali'ye iletti. Ali transfer işlemini hazırlamak için offline cüzdanına girdi. Cüzdan yazılımı otomatik olarak girdi (input) seçimi yaptı. Ali'nin elindeki 1.0 BK$ değerindeki elma token'ını girdi olarak belirledi ve işlem verisini (payload) oluşturdu. Alıcı adresi olarak Emre'nin cüzdanını yazdı.

Ancak Ali bu işlemin ağda nasıl doğrulanacağını ve harcanacağını siber güvenlik gözüyle adım adım takip etti. İlk olarak, işlem verisinin ağdaki tüm düğümler tarafından aynı şekilde yorumlanması gerekiyordu. Bunun için 'Canonical JSON' kuralları uygulanıyordu. Verideki tüm anahtarlar alfabetik olarak sıralanıyor, gereksiz boşluklar atılıyor ve sayılar 18 ondalıklı string olarak taşınıyordu. Ali, Javascript'in kayan nokta (float) hesaplama hatalarının bu sistemde felakete yol açabileceğini fark etti. Eğer cüzdan float aritmetiği kullansaydı, yuvarlama kalıntıları yüzünden girdi ve çıktı toplamları arasında minik farklar oluşur ve ağ işlemi 'Output value exceeds input value' hatasıyla reddederdi. BitKuruş bu yüzden tüm işlemleri BigInt tamsayılar kullanarak kuruşu kuruşuna yapıyordu.

Ali, canonical JSON verisini air-gapped bilgisayarında Ed25519 özel anahtarı ile imzaladı. Oluşan 128 karakterlik hex imzasını işlem paketine ekleyerek bir USB bellek ile internete bağlı bilgisayara taşıdı ve 'POST /api/tx/submit' üzerinden ağa gönderdi. Ağdaki düğüm işlemi aldığında 'TransactionService' devreye girdi. Ali'nin imzasını, tokenın durumunu, kilit altında olup olmadığını kontrol etti. Ardından federasyondaki diğer düğümlerden onay (quorum) istedi. Çoğunluk onayı alındıktan sonra veritabanında tek bir atomik transaction çalıştırılarak girdi tokenı 'burned' yapıldı ve Emre'nin adresine tanımlı yeni bir aktif token yaratıldı. İşlem başarılıydı.

Bölüm 5: Fısıltı Gazetesi — Ağın Yayılması

Kitap elden ele gezdikçe BitKuruş projesi Kadıköy'den çıkıp siber güvenlik forumlarına, yazılımcı topluluklarına yayılmaya başladı. Ali'nin üniversiteden arkadaşı olan yazılım mühendisi Defne, projenin web sitesindeki '/run-a-node' sayfasını inceledikten sonra heyecanla Ali'yi aradı. 'Ben bu ağa kendi düğümümle katılmak istiyorum' dedi. Defne, referans implementasyonun kapalı kaynak koduna bağımlı kalmamak için, protokol spesifikasyonlarına tamamen uyumlu kendi Go tabanlı düğüm yazılımını sıfırdan yazmaya karar verdi. Ali ona bu süreçte güvenlik danışmanlığı yaptı.

Defne düğümünü HTTPS üzerinden yayına verdi. Ed25519 ile yeni bir düğüm kimliği ve komisyon toplamak için bir cüzdan adresi üretti. Mevcut operatörlere bir katılma talebi (join packet) gönderdi. Operatörler Defne'nin public key'ini onayladıktan sonra kendi peer listelerine eklediler. Defne de kendi düğümünün konfigürasyonunu ağdaki diğer peer'larla güncelledi. Ardından ağın geçmişini indirmek için 'GET /api/peer/committed-transactions' endpoint'ini kullanarak geçmişteki tüm işlemleri çekti ve her birinin imzasını kendi Go kodunda doğrulayarak veritabanına işledi. Yerel 'state_hash' değeri ağın geneliyle eşleştiğinde Defne'nin düğümü artık ağın tam yetkili bir üyesiydi.

Ali bu yayılma sürecinde ağın eşleme (replication) güvenliğini sorguladı. 'Ya ağa kötü niyetli bir düğüm sızarsa ve sahte işlemler yaymaya çalışırsa?' sorusunu sordu. Protokolü incelediğinde, düğümler arasındaki tüm iletişimin Ed25519 imzalı zarflarla yapıldığını gördü. Her zarfın 60 saniyelik bir geçerlilik süresi (TTL) vardı ve eski ya da imzasız paketler anında reddediliyordu. Eğer bir düğüm ağın geneliyle uyumsuz bir işlem yazmaya kalkışırsa, diğer düğümler bunu 'state_hash' uyuşmazlığı olarak tespit ediyor ve 'PeerIntegrityAlertService' üzerinden alarm vererek o düğümü ağdan uzaklaştırıyordu (fence/suspension). Güvenlik, merkezi bir sunucuyla değil, matematiksel tutarlılıkla sağlanıyordu.

Bölüm 6: En Kötü Senaryo — Defterin Küllerinden Doğuşu

Bir gece Ali, siber güvenlikçilerin en çok korktuğu o katastrofik senaryo üzerine düşünmeye başladı: 'Ya bir gün tüm düğüm operatörleri aynı onda hacklenirse? Ya tüm sunucular fiziksel olarak ele geçirilir, veritabanları silinir ya da domain adreslerine el konulursa? BitKuruş tamamen yok mu olacaktı?' Bu sorunun cevabını bulmak için projenin 'GET /api/ledger/export' mekanizmasını derinlemesine inceledi. Bu endpoint, ağın o andaki durumunun deterministik ve byte-identik bir JSON yedeğini üretiyordu. İki farklı düğümden indirilen yedeklerin SHA-256 hash'leri alındığında sonuçlar kuruşu kuruşuna aynı çıkıyordu.

Ali bu JSON yedek dosyasını açtı. İçinde dört ana bölüm vardı: committed durumdaki tüm işlemler (transactions), aktif ve yakılmış tüm tokenlar (tokens), tokenların birbirleriyle olan soybağları (token_parents) ve defter olayları (ledger_events). Ali düşündü: 'Eğer elimizde bu JSON dosyası varsa, tüm sunucular yok olsa bile sistemi sıfırdan kurabiliriz.' Çünkü dosyadaki tüm işlemler zaten kullanıcıların kendi Ed25519 özel anahtarlarıyla imzalanmıştı. Bu imzalar geçmişe yöneliktir ve asla değiştirilemez veya taklit edilemezdi.

Yeni kurulacak bir ağın operatörü, bu yedek dosyasını alıp yeni bir düğüm yazılımına aktarabilir, tüm imzaları geçmişe dönük olarak yeniden doğrulayabilir ve aktif token bakiyelerini sıfırdan inşa edebilirdi. Ali düğüm mantığını, veri tutarlılığını ve konsensüs kurallarını kılcal damarlarına kadar çözmüştü. Ancak siber güvenlik uzmanı kimliğiyle, aktif olarak bir düğüm işletmenin kendi sistemleri için yeni bir saldırı yüzeyi oluşturacağını biliyordu. Bu yüzden kendisi doğrudan bir düğüm operatörü olmamayı, ağın güvenliğini dışarıdan denetleyen bir gözlemci ve tutkulu bir kullanıcı kalmayı tercih etti. Ali o günden sonra her ay düzenli olarak 'canonical_hash' değerini kontrol ederek defterin güncel bir kopyasını şifreli USB belleğinde saklamaya devam etti.

Bölüm 7: Elmaların Değerlenişi ve Borsaların Radarı

Ali bir düğüm kurup işletmese de, ağın doğasını anlamış olmanın getirdiği soğukkanlılıkla elma toplamaya ve yılan oyununu oynamaya devam etti. BitKuruş'un elma ağacı dağıtım mantığı o kadar sade ve adildi ki, insanlar sisteme akın etmeye başladı. Defne gibi bağımsız yazılımcıların da kendi düğümleriyle katılmasıyla ağ tamamen kararlı ve durdurulamaz bir yapıya kavuştu. Ağın ademi merkeziyetçi gücü ve Ali'nin yazdığı 'Bir Kitap Okudum Hayatım Değişti' adlı yeşil kapaklı kitabın kulaktan kulağa yayılması, projenin büyümesinde katalizör görevi gördü.

Kitap kısa sürede bestseller oldu. İnsanlar kitapta Ali'nin offline cüzdan ile elma toplama hikayesini okudukça BitKuruş ağını merak ediyor, kendi cüzdanlarını oluşturup ağaca koşuyorlardı. Kitap satışları patladıkça ağdaki aktif cüzdan sayısı on binlerden yüz binlere ulaştı. Bu organik büyüme ve topluluğun sadakati, küresel kripto para borsalarının da dikkatinden kaçmadı. Borsalar, sıfır komisyonlu, UTXO tabanlı ve Ed25519 güvenlikli bu yeni dijital varlığı listelemek için birbirleriyle yarışmaya başladı.

Bir gün, dünyanın en büyük borsalarından biri BitKuruş (BK$) listelemesini resmi olarak duyurdu. Duyuruyla birlikte, ağacın dallarından ücretsiz olarak toplanan ve yılan oyunundan kazanılan elma tokenları bir anda piyasada gerçek bir ekonomik değere kavuştu. Başlangıçta sadece sembolik birer deneme tokenı olan BK$'lar borsalarda işlem görmeye başladığında değeri hızla yükseldi. Ali'nin air-gapped ThinkPad'inde biriktirdiği elmalar ve yılan oyunu puanları, ağın bu devasa yayılımıyla birlikte muazzam bir finansal değere dönüştü.

Bölüm 8: Merge, Split ve Büyük Ödeme

Aylar geçtikçe Ali'nin cüzdanındaki elma ve yılan oyunu tokenları değerlenmişti. Bakiye sorguladığında toplamda 847.29 BK$ parası vardı ve borsadaki değer artışıyla birlikte bu miktar ciddi bir servete karşılık geliyordu. Ancak bu bakiye, ağacın dallarından tek tek topladığı yüzlerce ufak elma tokenı nesnesine bölünmüş durumdaydı. Ali bu parayla büyük bir siber güvenlik laboratuvarı kurmak ve ekipman satın almak istediğinde, cüzdanın bu küçük parçaları nasıl harcayacağını merak etti. Kripto paralardaki 'dust' (toz) token sorunu burada da geçerliydi. Ancak sencerhan/cuzdan tasarımı bu sorunu otomatik olarak çözüyordu.

Ali transfer miktarını ve satıcının adresini girip 'Gönder' butonuna tıkladığında offline cüzdan yazılımı arka planda iki aşamalı bir plan hazırladı. İlk aşamada, cüzdandaki yüzlerce küçük elma tokenı seçildi ve bir 'merge' (birleştirme) işlemi oluşturuldu. Merge işlemi, birden fazla girdiyi alıp tek bir çıktı tokenı haline getiren özel bir işlem türüydi. Ali bu merge işlemini air-gapped bilgisayarında imzaladı ve ağa gönderdi. Ağ, girdilerin sahipliğini ve kilit durumunu kontrol edip onayladıktan sonra tokenları yaktı ve Ali adına tek bir büyük aktif token yarattı.

İkinci aşamada ise bu tek büyük token girdi olarak kullanılarak asıl transfer işlemi (split/transfer) gerçekleştirildi. Token, satıcıya gidecek miktar ve Ali'ye geri dönecek para üstü (change) olmak üzere ikiye bölündü. Ali bu süreçte çift harcama (double spend) korumasını inceledi. Bir token merge veya transfer için seçildiği anda düğüm tarafından geçici olarak kilitleniyor ('TokenLock') ve başka bir işlemde kullanılması engelleniyordu. Eğer işlem yarıda kalırsa, kilit süresi (TTL) dolduğunda token tekrar otomatik olarak aktif hale geliyordu. Ali'nin transferi sorunsuz tamamlandı ve satıcının cüzdanına ulaştı.

Bölüm 9: Hayatım Değişti

Yıllar sonra Ali, siber güvenlik şirketindeki işinden ayrılmış, tamamen merkezsiz ağlar ve kriptografi üzerine çalışan bağımsız bir araştırmacı olmuştu. BitKuruş artık Kadıköy'deki küçük bir topluluğun deneyi olmaktan çıkmış, dünya çapında binlerce düğümü olan, borsalarda işlem gören ve dijital noterlik için kullanılan küresel bir standart haline gelmişti. Arz tavanı olan 21 milyon BK$'ın büyük kısmı dolaşıma girmiş ve Ali'nin erken dönemde topladığı ve borsaların listelemesiyle değer kazanan elmalar ona büyük bir finansal özgürlük sağlamıştı.

Ancak Ali için asıl değerli olan kazandığı para değildi. O, üçüncü şahıslara güvenmek zorunda kalmadan kendi verisinin ve parasının tam egemenliğine sahip olmanın ne anlama geldiğini öğrenmişti. Sistemler hacklenebilir, sunucular kapatılabilirdi ama matematik ve şifreli geçmiş asla yok edilemezdi. Bir gün yine Kadıköy'deki sahaf dükkanına uğradı. Sahaf Emre artık dükkanın tüm kitap envanterini ve satış kayıtlarını BitKuruş defteri üzerinden tutuyordu.

Ali raflarda gezinirken yeşil kapaklı kitabın yeni baskısını gördü. Bu sefer kapak altın yaldızlıydı ve üzerinde yazarın adı net bir şekilde yazıyordu: 'S.'. Ali kitabı eline aldı, sayfalarını kokladı ve gülümsedi. Kitabın ilk sayfasındaki o meşhur cümleyi içinden tekrarladı: 'Bir kitap okudum, hayatım değişti.' Cebinden çıkardığı cüzdanıyla kitabın bedelini anında transfer etti ve dükkandan yağmurlu Kadıköy akşamına doğru yürürken kendini hiç olmadığı kadar özgür hissetti.