Lightning Network Yaklaşımına Hızlı Bir Bakış
“The Lightning Network” Bitcoin üzerindeki mikro ölçekteki (0.00000001 btc’ye kadarki) elektronik ödemeleri efektif şekilde, güvenilir aracıya ihtiyaç duymadan (trustless) yapılabilmesini mümkün kılmak üzere geliştirilmiş bir peer-to-peer sistemdir. Ayrıca sistemin geliştirilmesine bir diğer sebep olan “Bitcoin” teknolojisindeki ölçeklenebilme (scalability) sorununa çözüm ihtiyacıdır. “The Lightning Network Paper” da bitcoin teknolojisinin ölçeklenebilme sorunu ve bu soruna sundukları çözüm ekseninde ele alınmıştır. Bu yazıda da Lightning Network Paper’a benzer şekilde bitcoin paralelinde ilerlenecektir. Ancak teoride, blockchain teknolojisi üstüne kurulu tüm sistemler “Lightning Network” uyarlamasına gidebilirler.
Problemler
- İşlemler anlık değildir. Bekleme süreleri uzundur.
- Yüksek işlem ücretleri sebebiyle mikro ödeme (micropayments) diye adlandırılan düşük ölçekteki para transferleri pratikte mümkün olmamaktadır.
- Bitcoin ölçeklenememektedir.
Bitcoin blockchain’i üzerinde blok boyutu 1 MB ve blok üretim aralığı da ortalama 10 dakikadır. Temel para transferi işlemlerinin ortalama boyutu 250 byte olarak alınır ise bu durumda Bitcoin’in işlem kapasitesi saniyede yaklaşık olarak 7 işlem (transactions) olmaktadır. Gittikçe artan bir kullanıcı kitlesi olan Bitcoin teknolojisinin bu değerleri çok düşük seviyede kalmaktadır. Hatırlamakta fayda var; Bitcoin’in ortaya çıkmasında 2007–2008 yılındaki küresel ekonomik krizin sonuçlarından biri olan finans kuruluşlarına karşı toplumda oluşan güvensizlik ve tepkinin yeri büyüktür. Bitcoin’in “Satoshi Nakamoto” ismiyle bilinen yaratıcısının fikir önderliği ettiği ve günümüzde de ana hedef olarak geçerliliğini devam ettiren merkezi olmayan (decentralized) olgusu; ödeme metodlarında kullanılan bankalar gibi aracıların ortadan kaldırılıp, peer-to-peer, trustless ve merkezi otoritesi bulunmayan elektronik ödeme sisteminin sunumudur.
Bahsini ettiğimiz saniyedeki 7 işlem kapasitesinin hedef alınan finansal kuruluşlar karşısındaki kapasite açısından durumunu anlamak amacıyla ödeme ağı olan Visa’nin verilerine bakabiliriz. 10 Ekim 2013 tarihinde Visa, saniyede 47.000 işlemi başarıyla gerçekleştirebilmiştir. Bitcoin’le teoride bu kapasiteye gelebilmek icin blok büyüklüğündeki sınırın göz ardı edildiğini varsaydığımızda dahi yılda 400 terabyte civarı bir verinin blockchain üzerine kayıt düşülmesi, Bitcoin’in üzerinde çalıştığı makine ağının neredeyse yok olmasına sebep olacaktır. Kayıt için bekleyen işlemleri alıp doğrulama işlemini yürütebilen ve blok olarak blockchain’e ekleyen “mining” dediğimiz proof of work işlemini yapabilecek donanım ihtiyacını karşılamaya ise “Moore’s Law”i baz aldığımızda dahi yakın gelecekte ulaşabilmek mümkün değildir. Mümkün olduğunda dahi yüksek maliyetleri yüzünden belli kişilerin elinde toplanması ve normal kullanıcının proof of work safhasının dışına itilmesi merkezileşme sorununa yol açacaktır.
Bitcoin’in bir başka önemli sorunu da yüksek ve sabit olmayan işlem ücretleridir. Şu anki değerlere göz attığımızda dahi optimum fiyat/hız dengesine göre ayarlanarak blockchain’de yayımlanmayı bekleyen bir işlemin 140 satoshis/byte gibi bir ücrete tabii olduğunu görmekteyiz (1 Satoshi = 0.00000001 ฿). Önceden baz aldığımız 250 byte/tx değeriyle 1.0038131250 USD işlem ücreti söz konusudur (฿1 = $4.099,04 USD). Kısacası, düşük ölçekteki para transferleri yüksek işlem ücreti sebebiyle pratikte mümkün olmamaktadır. Bitcoin’in şu anki blok boyutu ve blok süresiyle işlemimizin gerçekleşmesi için beklenilmesi gereken yaklaşık 60 dakikalık zaman dilimi (6 blok), Bitcoin’in günlük ödeme sistemi olarak kullanılma adaptasyonunu mümkün kılmayan başka bir etmendir.
Lightning Network Nedir?
Yüksek işlem ücretlerinden ve uzun bekleyişlerden kurtulmanın yolu olarak öne sürülen en ciddi çözümlerin başında Bitcoin’in Lightning Network sistemine geçişi gelmektedir. Bu sistemi blockchain üzerinde ikinci bir katman olarak görebiliriz. Lightning Network’ün blockchain teknolojilerine uyarlanırken teknik detaylarının sabit olmadığını ve uyarlayacak geliştirme ekibinin insiyatifinde bulunduğunu belirtmekte fayda var.
Genel olarak özetleyecek olursak: Lightning Network kullanımı blockchain üzerinde, blockchain kullanıcıları arasında akıllı sözleşme (smart contract) fonksiyonundan faydalanarak açılan çift yönlü ödeme kanallarına (bidirectional payment channels) dayanır. Yani bu ödeme kanalı ile taraflar aynı kanalı kullanarak birbirlerine ödeme yapabilirler. Bu ödeme kanalları esasen multisignature bitcoin adresidir. Bu ödeme kanallarında kullanılabilecek olan miktar blockchain üzerinde işlem görür ve Lightning Network katmanında bloke edilmiş olur. Bundan sonraki işlemler kanalların temel aldığı akıllı sözleşmeler ile kontrol edilir. Merkezi sistem yoktur, kod ödeme kanalı açılırken yapılmış olan anlaşmayı yürütür. Bu işlemlerin bir sınırı olmadığı gibi, masrafı da sıradan bilgisayarlarda yürütülebilecek olan bu akıllı sözleşmeler sayesinde neredeyse sıfırdır. Ne zaman ki bu kanallar sonlandırılır, o zaman Lightning Network katmanındaki işlemlerden sonraki bakiye (balance) bilgisi blockchain’e taşınır. Blockchain’de yapılacak işlem, kanalı açarken ve kanalın kapatılmasından sonra Lightning Network’te değişen durumu blockchain’e girmekle sınırlıdır. Lightning Network sistemine açılan kanalın kullanıcıları arasında yapılan işlemler blockchain üzerinde kayda girmeyeceklerinden, yani mining işlemini bekleme gereksinimleri duymayacaklarından ve lightning network kullanıcaları arasında akıllı sözleşmeler aracılığıyla yürütüleceğinden bu aşama neredeyse anında ve ücretsiz gerçekleşecektir. Bu da Bitcoin’in şu anda yaşadığı işlem ücreti, hız gibi sorunları ortadan kaldırmaya yardım edecektir.
Daha net olması açısından örneklendirmede fayda var. Bitcoin’i baz alırsak, çift yönlü bir ödeme kanalı oluşturmak için Asya ve Cihan’ın anlaşmaya vardıklarını ve 1'er bitcoin’lerini bloke ederek lightning network üzerinde ödeme kanalı açtıklarını düşünelim. Bu açılan kanalın bulunduğu multisignature adresin onayı karşılıklı imzalar sonucunda gerçekleşir. Yani Asya ve Cihan bu ortak adrese 1BTC yollayacaklarına dair imza verirler. Bu işlemi örneğin 1 gün zaman kısıtıyla başlatırlar. Bu zaman kısıtı içinde taraflardan biri anlaşmaya uymaz ise gönderilen BTC o kişinin geri ödeme adresine (refund address) iade edilir. Her iki tarafta imzalarını bu süre içinde birbirlerine iletirse anlaşma sağlanır ve kanal açılır. Blockchain üzerine düşülecek bilgi Asya ve Cihan’ın oluşturdukları ortak adrese 1'er bitcoin’lerinin transferidir. Sonrasındaki işlemlerde bu bilgi, Lightning Network katmanındaki akıllı sözleşme üzerinde işlem görecektir.
Asya Cihan’a, Cihan Asya’ya defalarca açtıkları ödeme kanalı üzerinden para transferi yapabilir. Bu işlemler lightning network katmanında off-chain olarak gerçekleşir yani kayıtları blockchain’de yer almaz. Son durumda Asya’nın 1,3 Cihan’ın 0,7 bitcoini olduğunu farzedelim (bu transferlerin trustless şekilde nasıl sağlanabildiği konusunda detaylı bilgiler için Hashed Timelock Contracts’a bakabilirsiniz). Bu kanal sonsuza dek açık kalabileceği gibi, ortak şekilde veya taraflardan biri tarafından kapatılabilir. Taraflardan birinin kanalı tek taraflı kapatması durumunda kanalın son durumunun yani tarafların sahip oldukları son bitcoin bakiyesinin doğrulanması için 1000 blok beklenir. Bu onay aşamasının amacı kanalı kapatan tarafın, kanalın eski durumu ile blockchain’e girdi yapmasını engellemeye yöneliktir. Son durum ortak iki tarafın imzaları ile doğrulanır. Yani, taraflar ortak şekilde kanalı kapatırlarsa, son durumu anında blockchaine taşıyabilecekleri gibi, bir tarafın kanalı kapatması halinde diğer tarafın doğrulama işlemine veri sunabilmesini sağlamak için uzunca süre beklenir. Son durum doğrulandıktan sonra kanalın açılmasında kullanılan Asya’nın adresine 1.3, Cihan’ın adresine 0.7 olacak şekilde işlemler havuzuna alınır ve mining süreciyle oluşturulan block’lardan birine dahil edilerek blockchain’de yer bulur yani yayımlanır.
Lightning Network’ün istenilen potansiyele ulaşabilmesi için çok fazla kanalın birbirine bağlanması arzu edilendir. Yani Asya’nın Cihan ile, Cihan’ın Gülşah ile ödeme kanalı varsa (kanalların çift yönlü olduğunu unutmamak gerekir) Asya’nın Gülşah ile direkt olarak kanalı olmadığı halde koşullara uyduğu takdirde ödeme yapabilmesi mümkündür. Buradaki koşul, Cihan’da aktarabileceği yeterli seviyede BTC olmalı ve işlem sonucunda bakiyesi sıfıra inmemelidir. Bu koşul sağlandığında Asya Cihan’a, Cihan Gülşah’a ödeme aktarabilir. Bunun işleyişi ise basitçe şöyledir:
Lightning network katmanındaki ikili ödeme kanallarındaki durumların görüntüsü şöyle olsun;
Asya ← 2,5BTC — — — 0,5BTC → Cihan ← 5BTC — — — 5BTC → Gülşah
Burada cüzdanımız (wallet) belli algoritmalar yardımıyla ödeme yolu bulmakla görevlidir. Çok sayıda yol, istediğimiz transfer işlemini yapmada kullanılabilir. Burada cüzdanın seçmesi gereken olabildiğince kısa, ödeme miktarını karşılayabilecek ve ücretleri düşük olan yoldur. Ücretler ödememizi aktaracağımız yol üzerindeki diğer kanallardaki tarafların cüzdanları tarafından belirlenecektir. Network arzulanan sayıda kullanıcı elde ettiğinde önerilecek işlem ücretlerinin neredeyse sıfır olması beklenir. Çünkü bu işlemler blok üretimi içermediklerinden büyük işlem gücü sağlayan ortamlara ihtiyaç duymazlar ve de ödemeyi gerçekleştirebilecek bir çok farklı yol olması rekabete sebep olacaktır. Bir başka önemli sebep ise beklenilenin kullanıcıların ödeme kanallarını kapatmamasıdır. Bahsettiğimiz gibi, kanalın kapatılması, on-chain işlem yani blockchain’e geri dönüş, proof of work ücretidir. Bu yüzden yukarıdaki verdigimiz örnek dahilinde, Cihan’ın Asya ile kanalını kullanma eğiliminin varlığını düşünelim. Cihan, Asya ile kanalın kapatılıp yeniden açılması, yani on-chain işlem ile ücret ödemek yerine, Asya’nın yapacağı işleme talip olup, o yolu kullanması için ücret almak yerine ücret dahi sunabilir. Yapılan olasılık tahminleri bu dengelerin neticesinde Lightning Network üzerindeki işlem ücretlerinin “effectively zero” yani neredeyse sıfır olacağı yönündedir.
Dikkat edilmesi gereken nokta her ikili ödeme kanalı kendi içerisindeki bakiye bilgisini tutar. Yani Asya’nın Gülşah’a Cihan üzerinden 0,5BTC ödeme yapmasından sonraki network durumu şu şekilde olacaktır:
Asya ← 2BTC — — — 1BTC → Cihan ← 4,5BTC — — — 5,5BTC → Gülşah
Farklı bir işlemi daha ayrıntılı ele alacak olursak çok kanallı bir yol aracılığıyla yapılan bir işlemi örnek alalım.

Asya Deniz’e Cihan ve Gülşah aracılığıyla BTC göndermek istiyor. Deniz rastgele bir R (preimage) sayısı üretir ve bunu gizli tutar. Ayrıca R’nin SHA256 hash’ini oluşturur hash(R) = H.
Asya ve Cihan, Cihan’a 0.01 BTC göndermek için kanalda HTLC (Hash Time Locked Contracts) çıktısını 3-day nLockTime ile oluşturur. Buradaki zaman kısıtı eğer ki bu zaman içinde aktarılan BTC’nin harcanabilir olmasını mümkün kılacak olan R (preimage), BTC’yi aktardığımız tarafından bize iletilmezse, işlemi geçersiz kılmaya yarar.
Cihan ve Gülşah, Gülşah’a 0.01 btc göndermek için HTLC’yi 2-day nLockTime ile oluşturur. Zaman kısıtlaması işlem yolu içinde kanaldan kanala azalarak gitmeli ki işlemin başarısızlığı sonucunda geri ödemeler tersine başlayarak gerçekleşebilsin. Bu sebeple Gülşah ile Deniz arasındaki anlaşma 1-day nLockTime ile oluşturulur. Asya Cihana hash’i iletir ve R karşılığında 0.01 BTC vereceğine dair sözleşme yapılır. Cihan Gülşah’a hash’ iletir ve R karşılığında 0.01 BTC vereceğine dair sözleşme yapılır.

En son Gülşah Deniz’e hash iletir ve R karşılığında 0.01 BTC vereceğine dair sözleşme yapılır. Bu aşamadan sonra Deniz en başta oluşturup sakladığı R’yi anlaşmasındaki gibi 1 gün içinde Gülşah’a verirse, Gülşah’tan 0.01 BTC’yi alabilir. Gülşah da artık R’ye sahip olduğu için Cihan’dan 0.01 BTC’yi alabilir. Artık Gülşah ile Deniz arasındaki kanaldaki bakiyelerin güncel halini her iki taraf da onaylar.

Aynı şekilde Gülşah R’yi 2 gün içinde Cihan’a verirse, Cihan Asya’dan BTC’yi almak için yeterli bilgiye sahip olur ve Cihan ile Asya arasındaki kanalda bakiyelerin güncel halini her iki taraf da onaylar. Tüm işlem yolu üstündeki kanallarda anlaşma onaylanırsa işlem gerçekleşir ve bakiyeler kanallarda güncellenir.
Eğer ki işlem yolunda herhangi bir tarafta sorun çıkarsa buna çözüm olarak değişik yollar sunulmaktadır. Örneğin;

Eğer ki Cihan ve Gülşah anlaşmaya varamazsa, Gülşah kanalı kapatır ve kanaldaki bütün bekleyen işlemleri blockchaine yayımlar. Gülşah HTCL çıktısını ve R’yi açıklayarak 0.01 BTC’yi kullanabilir hale gelir.

Cihan blockchain üzerinden R’yi alarak Asya’dan BTC’yi alabilir konuma gelir.
Bir diğer yaşanabilcek sorunlardan birisi de zaman aşımı konusu. Eğer ki R belirtilen zaman kısıtı içinde açıklanmazsa, varış yerinden sırayla yapılan işlemler geçersiz kılınır. Yani tüm kanallar işlem başlamadan önceki durum bakiyelerine geri döner.
Yazımı tamamlarken değinmek istediğim nokta yukarıdaki iddiaları tutturabilmek için sistemin muazzam şekilde uyarlanması, teknik detaylarının ve ayarlamalarının optimum seviyeye çekilmesi gerekir. Ayrıca tekrar hatırlatmakta fayda var, Lightning Network Bitcoin’e özel değildir ve her blockchain teknolojisine uyarlanabilme iddiasındadır. Başarısı yüksek ölçüde uyarlanma şekline bağlıdır.