Ya her saat başı hafızanızı kaybederseniz? Ve sürekli olarak birinden size ne yaptığınızı söylemesini istemeniz mi gerekiyor? Akıllı sözleşmelerin mevcut durumu budur. Ethereum gibi blockchainlerde akıllı sözleşmeler 256 bloğun ötesindeki durumlara doğrudan erişemez. Bu sorun, farklı yürütme katmanları üzerinden verilerin alınmasının ve doğrulanmasının daha da zor olduğu çok zincirli ekosistemde daha da kötüleşiyor.
2020'de Vitalik Buterin ve Tomasz Stanczak, verilere zaman içinde erişmenin bir yolunu önerdi . EIP durgunlaşırken, toparlanma merkezli çok zincirli dünyada ihtiyacı yeniden ortaya çıktı. Günümüzde akıllı sözleşmelere farkındalık ve hafıza kazandırmak için depolama kanıtları bir sınır olarak ortaya çıkmıştır.
DApp'lerin verilere ve duruma erişebilmesinin çeşitli yolları vardır. Yaklaşımların tümü, uygulamanın insanlara/varlıklara veya kripto ekonomik güvenliğine veya koduna güvenmesini ve bazı ödünleşimlere sahip olmasını gerektirir:
Bu çözümlerin zorlukları ve sınırlamaları göz önüne alındığında, blok karmalarının zincir üzerinde saklanması ve sağlanmasına açık bir ihtiyaç vardır. Depolama kanıtlarının devreye girdiği yer burasıdır. Depolama kanıtlarını daha iyi anlamak için blok zincirlerdeki veri depolamaya hızlıca bir göz atalım.
Blockchain, bir ağdaki birçok bilgisayar arasında güncellenen ve paylaşılan halka açık bir veritabanıdır. Veriler ve durum, blok adı verilen ardışık gruplarda depolanır ve her blok, önceki blok başlığının karmasını depolayarak kriptografik olarak üst öğesine referans verir.
Örnek olarak Ethereum bloğunu ele alalım. Ethereum, "Merkle Patricia ağacı" (MPT) olarak bilinen belirli bir Merkle ağacı türünden yararlanır. Ethereum blok başlıkları dört farklı Merkle-Patricia denemesinin köklerini içerir; Durum üçlüsü, Depolama üçlüsü, Makbuzlar üçlüsü ve İşlem üçlüsü. Bu 4 deneme, tüm Ethereum verilerini içeren eşlemeleri kodlar. Merkle Ağaçları veri depolamadaki verimlilikleri nedeniyle kullanılmaktadır. Özyinelemeli karmalar kullanıldığında, sonuçta yalnızca kök karmanın depolanması gerekir, bu da çok fazla alan tasarrufu sağlar. Düğümleri yinelemeli olarak karma işleminin aynı kök karma değerine yol açtığını kanıtlayarak herkesin ağaçtaki bir öğenin varlığını kanıtlamasına olanak tanır. Merkle kanıtları, Ethereum'daki hafif istemcilerin aşağıdaki gibi soruların yanıtlarını almasına olanak tanır:
Bir "hafif istemci", her işlemi ve her bloğu indirmek yerine yalnızca blok başlıkları zincirini indirebilir ve Merkle Kanıtlarını kullanarak bilgileri doğrulayabilir. Bu, genel süreci oldukça verimli hale getirir. Merkle Ağaçları ile ilgili uygulamayı, avantajları ve zorlukları daha iyi anlamak için Vitalik ve Maven11 tarafından yazılan bu blog araştırma makalesine bakın.
Depolama kanıtları, veritabanında bir şeyin kaydedildiğini ve kriptografik taahhütler kullanılarak da geçerli olduğunu kanıtlamamıza olanak tanır. Eğer böyle bir kanıt sunabilirsek, bu, blockchainde bir şeyler yaşandığına dair doğrulanabilir bir iddiadır.
Depolama kanıtları iki ana işlevselliğe izin verir:
Depolama kanıtları, belirli bir bloğun blok zincirinin kanonik geçmişinin bir parçası olup olmadığını çok yüksek düzeyde kontrol eder ve ardından istenen belirli verilerin bloğun parçası olup olmadığını doğrular. Bu şu şekilde başarılabilir:
Bu yaklaşımı benimseyen projelerden bazıları Herodot, Lagrange, Axiom, Hyper Oracle, Brevis Network ve nil Foundation'dır. Uygulamaların birden fazla blok zincirinde durum farkındalığına sahip hale getirilmesi için önemli çaba sarf edilirken, IBC (Inter Blockchain Communication), ICQ (Interchain querys) ve ICA (Interchain Accounts) gibi uygulamalara olanak tanıyan bir birlikte çalışabilirlik standardı olarak öne çıkıyor. ICQ, A Zincirindeki uygulamaların, sorguyu basit bir IBC paketine dahil ederek B zincirinin durumunu sorgulamasına olanak tanır ve ICA, bir blockchain'in başka bir blockchain üzerindeki bir hesabı güvenli bir şekilde kontrol etmesine olanak tanır. Bunları birleştirmek ilginç zincirler arası kullanım senaryolarını mümkün kılabilir. Saga gibi RaaS sağlayıcıları, IBC'yi kullanarak bu işlevleri varsayılan olarak tüm uygulama zincirlerine sunar.
Bellek tüketimi, kanıtlama süresi, doğrulama süresi, bilgi işlem verimliliği ve geliştirici deneyimi arasında doğru dengeyi bulmak için depolama kanıtlarının optimize edilebileceği birçok yol vardır. Genel süreç genel olarak 3 ana alt sürece ayrılabilir.
Veri erişimi: Bu alt süreçte servis sağlayıcı, kaynak zincirinin blok başlıklarına yerel olarak yürütme katmanından veya zincir içi bir önbellek sağlayarak erişir. Zincirler arası veri erişimi için hedef zincirdeki kaynak zinciri konsensüsünün doğrulanması gerekir. Benimsenen yaklaşımlardan ve optimizasyonlardan bazıları şunlardır:
Akıllı sözleşmeler, verilere erişimin yanı sıra veriler üzerinde keyfi hesaplamalar da yapabilmelidir. Bazı kullanım durumları hesaplama gerektirmese de diğer birçok kullanım durumu için önemli bir katma değerli hizmettir. Hesaplamanın zk kanıtı oluşturulabildiğinden ve geçerlilik için zincir üzerinde sağlanabildiğinden, hizmet sağlayıcıların çoğu veriler üzerinde hesaplamalara izin verir. Axelar, LayerZero, Polyhedra Network gibi mevcut AMP çözümleri veri erişimi için potansiyel olarak kullanılabildiğinden, veri işleme, depolamaya dayanıklı hizmet sağlayıcılar için farklılaştırıcı bir unsur haline gelebilir.
Örneğin Hyper Oracle, geliştiricilerin JavaScript ile özel zincir dışı hesaplamalar tanımlamasına olanak tanır. Brevis, dApp'lerden gelen veri sorgularını kabul eden ve bunları onaylanmış blok başlıklarını kullanarak işleyen açık bir ZK Sorgu Motorları pazarı tasarladı. Akıllı sözleşme, pazardaki bir kanıtlayıcı tarafından alınan bir veri sorgusu gönderir. Prover, sorgu girişine, ilgili blok başlıklarına (Brevis toplama katmanından) ve sonuçlara dayalı bir kanıt oluşturur. Lagrange, SQL, MapReduce ve Spark/RDD gibi dağıtılmış programlama modellerini kanıtlamak için ZK Büyük Veri Yığını'nı tanıttı. Kanıtlar modülerdir ve mevcut zincirler arası köprülerden ve AMP protokollerinden kaynaklanan herhangi bir blok başlığından oluşturulabilir. Lagrange ZK BigData yığınındaki ilk ürün olan ZK MapReduce, büyük miktarda çok zincirli veri kümelerini içeren hesaplama sonuçlarını kanıtlamaya yönelik dağıtılmış bir hesaplama motorudur (iyi bilinen MapReduce programlama modeline dayalı). Örneğin, tek bir ZKMR kanıtı, belirli bir zaman penceresi boyunca 4-5 zincire dağıtılan bir DEX'in likiditesindeki değişiklikleri kanıtlamak için kullanılabilir. Nispeten basit sorgular için hesaplama, şu anda Herodot tarafından yapıldığı gibi doğrudan zincir üzerinde de yapılabilir.
Durum ve depolama kanıtları, uygulama, ara yazılım ve altyapı katmanındaki akıllı sözleşmeler için birçok yeni kullanım durumunun kilidini açabilir. Bunlardan bazıları:
Yönetim:
Yukarıdaki kanıtların tümü, kullanıcılara özelleştirilmiş bir deneyim sağlamak için kullanılabilir. Dapps, deneyimli yatırımcıları veya kullanıcıları elde tutmak için indirimler veya ayrıcalıklar sunabilir ve acemi kullanıcılar için basitleştirilmiş bir kullanıcı deneyimi sunabilir.
Son iki kullanım durumu, kaynak zincirine her yeni blok eklendiğinde kanıtın güncellenmesini gerektirecektir.
Farkındalık, teknoloji şirketlerinin müşterilerine daha iyi hizmet vermelerini sağlar. Teknoloji şirketleri, kullanıcı kimliğinden satın alma davranışına ve sosyal grafiklere kadar hassas hedefleme, müşteri segmentasyonu ve viral pazarlama gibi yeteneklerin kilidini açmak için farkındalıktan yararlanıyor. Geleneksel teknoloji şirketlerinin, kullanıcılarından açık izin alması gerekiyor ve kullanıcı verilerini yönetirken dikkatli olmaları gerekiyor. Bununla birlikte, izinsiz blok zincirlerdeki tüm kullanıcı verileri, kullanıcı kimliğinin açıklanmasına gerek kalmadan kamuya açıktır. Akıllı sözleşmeler, kullanıcılara daha iyi hizmet verebilmek için kamuya açık verilerden yararlanabilmelidir. Daha uzmanlaşmış ekosistemlerin geliştirilmesi ve benimsenmesi, zaman içinde devlet farkındalığını ve blok zincirlerini çözülmesi gereken giderek daha önemli bir sorun haline getirecektir. Depolama kanıtları, Ethereum'un bir yerleşim katmanı olmanın yanı sıra bir kimlik ve varlık sahipliği katmanı olarak ortaya çıkmasını sağlayabilir. Kullanıcılar, varlıkları her zaman köprülemeden birden fazla blok zincirinde kullanılabilecek kimliklerini ve önemli varlıklarını Ethereum'da tutabilirler. Gelecekte açılacak yeni olanaklar ve kullanım durumları konusunda heyecanımızı sürdürmeye devam ediyoruz.
Ya her saat başı hafızanızı kaybederseniz? Ve sürekli olarak birinden size ne yaptığınızı söylemesini istemeniz mi gerekiyor? Akıllı sözleşmelerin mevcut durumu budur. Ethereum gibi blockchainlerde akıllı sözleşmeler 256 bloğun ötesindeki durumlara doğrudan erişemez. Bu sorun, farklı yürütme katmanları üzerinden verilerin alınmasının ve doğrulanmasının daha da zor olduğu çok zincirli ekosistemde daha da kötüleşiyor.
2020'de Vitalik Buterin ve Tomasz Stanczak, verilere zaman içinde erişmenin bir yolunu önerdi . EIP durgunlaşırken, toparlanma merkezli çok zincirli dünyada ihtiyacı yeniden ortaya çıktı. Günümüzde akıllı sözleşmelere farkındalık ve hafıza kazandırmak için depolama kanıtları bir sınır olarak ortaya çıkmıştır.
DApp'lerin verilere ve duruma erişebilmesinin çeşitli yolları vardır. Yaklaşımların tümü, uygulamanın insanlara/varlıklara veya kripto ekonomik güvenliğine veya koduna güvenmesini ve bazı ödünleşimlere sahip olmasını gerektirir:
Bu çözümlerin zorlukları ve sınırlamaları göz önüne alındığında, blok karmalarının zincir üzerinde saklanması ve sağlanmasına açık bir ihtiyaç vardır. Depolama kanıtlarının devreye girdiği yer burasıdır. Depolama kanıtlarını daha iyi anlamak için blok zincirlerdeki veri depolamaya hızlıca bir göz atalım.
Blockchain, bir ağdaki birçok bilgisayar arasında güncellenen ve paylaşılan halka açık bir veritabanıdır. Veriler ve durum, blok adı verilen ardışık gruplarda depolanır ve her blok, önceki blok başlığının karmasını depolayarak kriptografik olarak üst öğesine referans verir.
Örnek olarak Ethereum bloğunu ele alalım. Ethereum, "Merkle Patricia ağacı" (MPT) olarak bilinen belirli bir Merkle ağacı türünden yararlanır. Ethereum blok başlıkları dört farklı Merkle-Patricia denemesinin köklerini içerir; Durum üçlüsü, Depolama üçlüsü, Makbuzlar üçlüsü ve İşlem üçlüsü. Bu 4 deneme, tüm Ethereum verilerini içeren eşlemeleri kodlar. Merkle Ağaçları veri depolamadaki verimlilikleri nedeniyle kullanılmaktadır. Özyinelemeli karmalar kullanıldığında, sonuçta yalnızca kök karmanın depolanması gerekir, bu da çok fazla alan tasarrufu sağlar. Düğümleri yinelemeli olarak karma işleminin aynı kök karma değerine yol açtığını kanıtlayarak herkesin ağaçtaki bir öğenin varlığını kanıtlamasına olanak tanır. Merkle kanıtları, Ethereum'daki hafif istemcilerin aşağıdaki gibi soruların yanıtlarını almasına olanak tanır:
Bir "hafif istemci", her işlemi ve her bloğu indirmek yerine yalnızca blok başlıkları zincirini indirebilir ve Merkle Kanıtlarını kullanarak bilgileri doğrulayabilir. Bu, genel süreci oldukça verimli hale getirir. Merkle Ağaçları ile ilgili uygulamayı, avantajları ve zorlukları daha iyi anlamak için Vitalik ve Maven11 tarafından yazılan bu blog araştırma makalesine bakın.
Depolama kanıtları, veritabanında bir şeyin kaydedildiğini ve kriptografik taahhütler kullanılarak da geçerli olduğunu kanıtlamamıza olanak tanır. Eğer böyle bir kanıt sunabilirsek, bu, blockchainde bir şeyler yaşandığına dair doğrulanabilir bir iddiadır.
Depolama kanıtları iki ana işlevselliğe izin verir:
Depolama kanıtları, belirli bir bloğun blok zincirinin kanonik geçmişinin bir parçası olup olmadığını çok yüksek düzeyde kontrol eder ve ardından istenen belirli verilerin bloğun parçası olup olmadığını doğrular. Bu şu şekilde başarılabilir:
Bu yaklaşımı benimseyen projelerden bazıları Herodot, Lagrange, Axiom, Hyper Oracle, Brevis Network ve nil Foundation'dır. Uygulamaların birden fazla blok zincirinde durum farkındalığına sahip hale getirilmesi için önemli çaba sarf edilirken, IBC (Inter Blockchain Communication), ICQ (Interchain querys) ve ICA (Interchain Accounts) gibi uygulamalara olanak tanıyan bir birlikte çalışabilirlik standardı olarak öne çıkıyor. ICQ, A Zincirindeki uygulamaların, sorguyu basit bir IBC paketine dahil ederek B zincirinin durumunu sorgulamasına olanak tanır ve ICA, bir blockchain'in başka bir blockchain üzerindeki bir hesabı güvenli bir şekilde kontrol etmesine olanak tanır. Bunları birleştirmek ilginç zincirler arası kullanım senaryolarını mümkün kılabilir. Saga gibi RaaS sağlayıcıları, IBC'yi kullanarak bu işlevleri varsayılan olarak tüm uygulama zincirlerine sunar.
Bellek tüketimi, kanıtlama süresi, doğrulama süresi, bilgi işlem verimliliği ve geliştirici deneyimi arasında doğru dengeyi bulmak için depolama kanıtlarının optimize edilebileceği birçok yol vardır. Genel süreç genel olarak 3 ana alt sürece ayrılabilir.
Veri erişimi: Bu alt süreçte servis sağlayıcı, kaynak zincirinin blok başlıklarına yerel olarak yürütme katmanından veya zincir içi bir önbellek sağlayarak erişir. Zincirler arası veri erişimi için hedef zincirdeki kaynak zinciri konsensüsünün doğrulanması gerekir. Benimsenen yaklaşımlardan ve optimizasyonlardan bazıları şunlardır:
Akıllı sözleşmeler, verilere erişimin yanı sıra veriler üzerinde keyfi hesaplamalar da yapabilmelidir. Bazı kullanım durumları hesaplama gerektirmese de diğer birçok kullanım durumu için önemli bir katma değerli hizmettir. Hesaplamanın zk kanıtı oluşturulabildiğinden ve geçerlilik için zincir üzerinde sağlanabildiğinden, hizmet sağlayıcıların çoğu veriler üzerinde hesaplamalara izin verir. Axelar, LayerZero, Polyhedra Network gibi mevcut AMP çözümleri veri erişimi için potansiyel olarak kullanılabildiğinden, veri işleme, depolamaya dayanıklı hizmet sağlayıcılar için farklılaştırıcı bir unsur haline gelebilir.
Örneğin Hyper Oracle, geliştiricilerin JavaScript ile özel zincir dışı hesaplamalar tanımlamasına olanak tanır. Brevis, dApp'lerden gelen veri sorgularını kabul eden ve bunları onaylanmış blok başlıklarını kullanarak işleyen açık bir ZK Sorgu Motorları pazarı tasarladı. Akıllı sözleşme, pazardaki bir kanıtlayıcı tarafından alınan bir veri sorgusu gönderir. Prover, sorgu girişine, ilgili blok başlıklarına (Brevis toplama katmanından) ve sonuçlara dayalı bir kanıt oluşturur. Lagrange, SQL, MapReduce ve Spark/RDD gibi dağıtılmış programlama modellerini kanıtlamak için ZK Büyük Veri Yığını'nı tanıttı. Kanıtlar modülerdir ve mevcut zincirler arası köprülerden ve AMP protokollerinden kaynaklanan herhangi bir blok başlığından oluşturulabilir. Lagrange ZK BigData yığınındaki ilk ürün olan ZK MapReduce, büyük miktarda çok zincirli veri kümelerini içeren hesaplama sonuçlarını kanıtlamaya yönelik dağıtılmış bir hesaplama motorudur (iyi bilinen MapReduce programlama modeline dayalı). Örneğin, tek bir ZKMR kanıtı, belirli bir zaman penceresi boyunca 4-5 zincire dağıtılan bir DEX'in likiditesindeki değişiklikleri kanıtlamak için kullanılabilir. Nispeten basit sorgular için hesaplama, şu anda Herodot tarafından yapıldığı gibi doğrudan zincir üzerinde de yapılabilir.
Durum ve depolama kanıtları, uygulama, ara yazılım ve altyapı katmanındaki akıllı sözleşmeler için birçok yeni kullanım durumunun kilidini açabilir. Bunlardan bazıları:
Yönetim:
Yukarıdaki kanıtların tümü, kullanıcılara özelleştirilmiş bir deneyim sağlamak için kullanılabilir. Dapps, deneyimli yatırımcıları veya kullanıcıları elde tutmak için indirimler veya ayrıcalıklar sunabilir ve acemi kullanıcılar için basitleştirilmiş bir kullanıcı deneyimi sunabilir.
Son iki kullanım durumu, kaynak zincirine her yeni blok eklendiğinde kanıtın güncellenmesini gerektirecektir.
Farkındalık, teknoloji şirketlerinin müşterilerine daha iyi hizmet vermelerini sağlar. Teknoloji şirketleri, kullanıcı kimliğinden satın alma davranışına ve sosyal grafiklere kadar hassas hedefleme, müşteri segmentasyonu ve viral pazarlama gibi yeteneklerin kilidini açmak için farkındalıktan yararlanıyor. Geleneksel teknoloji şirketlerinin, kullanıcılarından açık izin alması gerekiyor ve kullanıcı verilerini yönetirken dikkatli olmaları gerekiyor. Bununla birlikte, izinsiz blok zincirlerdeki tüm kullanıcı verileri, kullanıcı kimliğinin açıklanmasına gerek kalmadan kamuya açıktır. Akıllı sözleşmeler, kullanıcılara daha iyi hizmet verebilmek için kamuya açık verilerden yararlanabilmelidir. Daha uzmanlaşmış ekosistemlerin geliştirilmesi ve benimsenmesi, zaman içinde devlet farkındalığını ve blok zincirlerini çözülmesi gereken giderek daha önemli bir sorun haline getirecektir. Depolama kanıtları, Ethereum'un bir yerleşim katmanı olmanın yanı sıra bir kimlik ve varlık sahipliği katmanı olarak ortaya çıkmasını sağlayabilir. Kullanıcılar, varlıkları her zaman köprülemeden birden fazla blok zincirinde kullanılabilecek kimliklerini ve önemli varlıklarını Ethereum'da tutabilirler. Gelecekte açılacak yeni olanaklar ve kullanım durumları konusunda heyecanımızı sürdürmeye devam ediyoruz.