Ana içeriğe atla
Change page

Blokzincir Veri Depolama Stratejileri

Bilgileri doğrudan blokzincir üzerinde veya blokzincir tarafından güvence altına alınacak şekilde depolamanın birden fazla yolu vardır:

  • EIP-4844 blob'ları
  • Çağrı verisi
  • Katman 1 (L1) mekanizmalarıyla zincir dışı
  • Sözleşme "kodu"
  • Olaylar
  • EVM depolaması

Hangi yöntemin kullanılacağının seçimi birkaç kritere dayanır:

  • Bilginin kaynağı. Çağrı verisindeki bilgiler doğrudan blokzincirin kendisinden gelemez.
  • Bilginin hedefi. Çağrı verisi yalnızca onu içeren işlemde mevcuttur. Olaylara zincir içi olarak hiçbir şekilde erişilemez.
  • Ne kadar zorluk kabul edilebilir? Tam ölçekli bir düğüm çalıştıran bilgisayarlar, tarayıcıda çalışan bir uygulamadaki hafif istemciden daha fazla işlem gerçekleştirebilir.
  • Bilgiye her düğümden kolay erişimi kolaylaştırmak gerekli mi?
  • Güvenlik gereksinimleri.

Güvenlik gereksinimleri

Genel olarak, bilgi güvenliği üç özellikten oluşur:

  • Gizlilik, yetkisiz varlıkların bilgileri okumasına izin verilmez. Bu birçok durumda önemlidir, ancak burada değil. Blokzincirde sır yoktur. Blokzincirler, herkesin durum geçişlerini doğrulayabilmesi sayesinde çalışır, bu nedenle onları doğrudan sırları depolamak için kullanmak imkansızdır. Blokzincirde gizli bilgileri depolamanın yolları vardır, ancak bunların hepsi en azından bir anahtar depolamak için bazı zincir dışı bileşenlere dayanır.

  • Bütünlük, bilgi doğrudur, yetkisiz varlıklar tarafından veya yetkisiz yollarla değiştirilemez (örneğin, bir Transfer olayı olmadan ERC-20 token'larını (opens in a new tab) transfer etmek). Blokzincirde, her düğüm her durum değişikliğini doğrular, bu da bütünlüğü sağlar.

  • Erişilebilirlik, bilgi yetkili herhangi bir varlık için mevcuttur. Blokzincirde bu, genellikle bilginin her tam düğümde (opens in a new tab) mevcut olmasıyla elde edilir.

Buradaki farklı çözümlerin tümü mükemmel bütünlüğe sahiptir, çünkü hash'ler L1'de yayınlanır. Ancak, farklı erişilebilirlik garantilerine sahiptirler.

Ön koşullar

Blokzincir temellerini iyi anlamış olmalısınız. Bu sayfa ayrıca okuyucunun bloklara, işlemlere ve diğer ilgili konulara aşina olduğunu varsayar.

EIP-4844 blob'ları

Dencun sert çatallanmasıyla (hardfork) (opens in a new tab) başlayarak Ethereum blokzinciri, Ethereum'a sınırlı bir ömre (başlangıçta yaklaşık 18 gün (opens in a new tab)) sahip veri blob'ları ekleyen EIP-4844 (opens in a new tab)'ü içerir. Bu blob'lar, benzer bir mekanizma kullanmalarına rağmen yürütme gazından ayrı olarak fiyatlandırılır. Geçici verileri yayınlamanın ucuz bir yoludur.

EIP-4844 blob'larının ana kullanım durumu, toplamaların işlemlerini yayınlaması içindir. İyimser rollup'ların işlemleri kendi blokzincirlerinde yayınlaması gerekir. Bu işlemler, rollup'ın sıralayıcısı (opens in a new tab) yanlış bir durum kökü yayınlarsa doğrulayıcıların (opens in a new tab) hatayı düzeltmesini sağlamak için itiraz süresi (opens in a new tab) boyunca herkesin erişimine açık olmalıdır.

Ancak, itiraz süresi geçtikten ve durum kökü kesinleşmiş olduktan sonra, bu işlemleri bilmenin geriye kalan amacı zincirin mevcut durumunu kopyalamaktır. Bu durum, çok daha az işlem gerektirerek zincir düğümlerinden de elde edilebilir. Bu nedenle işlem bilgileri blok gezginleri gibi birkaç yerde hala korunmalıdır, ancak Ethereum'un sağladığı sansür direnci seviyesi için ödeme yapmaya gerek yoktur.

Sıfır bilgi toplamaları da diğer düğümlerin mevcut durumu kopyalamasını ve geçerlilik kanıtlarını doğrulamasını sağlamak için işlem verilerini yayınlar, ancak bu yine kısa vadeli bir gereksinimdir.

Yazının yazıldığı sırada EIP-4844'te yayın yapmanın maliyeti bayt başına bir Wei'dir (10-18 ETH), bu da blob'ları yayınlayanlar da dahil olmak üzere herhangi bir işlemin maliyeti olan 21.000 yürütme gazına (opens in a new tab) kıyasla ihmal edilebilir düzeydedir. Mevcut EIP-4844 fiyatını blobscan.com (opens in a new tab) adresinde görebilirsiniz.

İşte bazı ünlü toplamalar tarafından yayınlanan blob'ları görebileceğiniz adresler.

Çağrı verisi

Çağrı verisi, işlemin bir parçası olarak gönderilen baytları ifade eder. O işlemi içeren blokta, blokzincirin kalıcı kaydının bir parçası olarak saklanır.

Bu, verileri blokzincire kalıcı olarak koymanın en ucuz yöntemidir. Bayt başına maliyet 4 yürütme gazı (bayt sıfırsa) veya 16 gazdır (diğer herhangi bir değer). Veriler sıkıştırılmışsa (ki bu standart bir uygulamadır), her bayt değerinin olasılığı eşittir, bu nedenle ortalama maliyet bayt başına yaklaşık 15,95 gazdır.

Yazının yazıldığı sırada fiyatlar 12 Gwei/gaz ve 2300 $/ETH'dir, bu da maliyetin kilobayt başına yaklaşık 45 sent olduğu anlamına gelir. EIP-4844'ten önce en ucuz yöntem bu olduğu için, toplamaların hata itirazları (opens in a new tab) için erişilebilir olması gereken ancak doğrudan zincir içi erişilebilir olması gerekmeyen işlem bilgilerini depolamak için kullandığı yöntem buydu.

İşte bazı ünlü toplamalar tarafından yayınlanan işlemleri görebileceğiniz adresler.

Katman 1 (L1) mekanizmalarıyla zincir dışı

Güvenlik ödünleşimlerinize bağlı olarak, bilgileri başka bir yere koymak ve gerektiğinde verilerin kullanılabilir olmasını sağlayan bir mekanizma kullanmak kabul edilebilir olabilir. Bunun çalışması için iki gereksinim vardır:

  1. Blokzincirde verilerin girdi taahhüdü adı verilen bir hash'ini (opens in a new tab) yayınlayın. Bu tek bir 32 baytlık kelime olabilir, bu nedenle pahalı değildir. Girdi taahhüdü mevcut olduğu sürece bütünlük sağlanır çünkü aynı değere hash'lenecek başka bir veri bulmak mümkün değildir. Bu nedenle yanlış veri sağlanırsa tespit edilebilir.

  2. Erişilebilirliği sağlayan bir mekanizmaya sahip olun. Örneğin, Redstone (opens in a new tab)'da herhangi bir düğüm bir erişilebilirlik itirazı sunabilir. Sıralayıcı son tarihe kadar zincir içi yanıt vermezse, girdi taahhüdü atılır, bu nedenle bilginin hiç yayınlanmadığı kabul edilir.

Bu, iyimser bir rollup için kabul edilebilirdir çünkü durum kökü için zaten en az bir dürüst doğrulayıcıya sahip olmaya güveniyoruz. Böyle dürüst bir doğrulayıcı, blokları işlemek için verilere sahip olduğundan da emin olacak ve bilgi zincir dışı mevcut değilse bir erişilebilirlik itirazı yayınlayacaktır. Bu tür iyimser rollup'a Plasma denir.

Sözleşme kodu

Yalnızca bir kez yazılması gereken, üzerine asla yazılmayan ve zincir içi erişilebilir olması gereken bilgiler sözleşme kodu olarak saklanabilir. Bu, verilerle bir "akıllı sözleşme" oluşturduğumuz ve ardından bilgileri okumak için EXTCODECOPY (opens in a new tab) kullandığımız anlamına gelir. Avantajı, kod kopyalamanın nispeten ucuz olmasıdır.

Bellek genişletme maliyeti dışında, EXTCODECOPY bir sözleşmeye ilk erişim için ("soğuk" olduğunda) 2600 gaz ve aynı sözleşmeden sonraki kopyalar için 100 gaz artı 32 baytlık kelime başına 3 gaz maliyetindedir. Bayt başına 15,95 maliyeti olan çağrı verisiyle karşılaştırıldığında, bu yaklaşık 200 bayttan itibaren daha ucuzdur. Bellek genişletme maliyetleri formülüne (opens in a new tab) dayanarak, 4 MB'tan fazla belleğe ihtiyacınız olmadığı sürece, bellek genişletme maliyeti çağrı verisi ekleme maliyetinden daha küçüktür.

Elbette bu sadece verileri okumanın maliyetidir. Sözleşmeyi oluşturmak yaklaşık 32.000 gaz + 200 gaz/bayt maliyetindedir. Bu yöntem yalnızca aynı bilginin farklı işlemlerde birçok kez okunması gerektiğinde ekonomiktir.

Sözleşme kodu, 0xEF ile başlamadığı sürece anlamsız olabilir. 0xEF ile başlayan sözleşmeler, çok daha katı gereksinimleri olan Ethereum nesne formatı (opens in a new tab) olarak yorumlanır.

Olaylar

Olaylar (opens in a new tab) akıllı sözleşmeler tarafından yayınlanır ve zincir dışı yazılımlar tarafından okunur. Avantajları, zincir dışı kodun olayları dinleyebilmesidir. Maliyeti gazdır (opens in a new tab), 375 artı veri baytı başına 8 gaz. 12 Gwei/gaz ve 2300 $/ETH'de bu, bir sent artı kilobayt başına 22 sente karşılık gelir.

Depolama

Akıllı sözleşmelerin kalıcı depolamaya (opens in a new tab) erişimi vardır. Ancak bu çok pahalıdır. Daha önce boş olan bir depolama slotuna 32 baytlık bir kelime yazmak 22.100 gaza mal olabilir (opens in a new tab). 12 Gwei/gaz ve 2300 $/ETH'de bu, yazma işlemi başına yaklaşık 61 sent veya kilobayt başına 19,5 $'dır.

Bu, Ethereum'daki en pahalı depolama biçimidir.

Özet

Bu tablo farklı seçenekleri, bunların avantajlarını ve dezavantajlarını özetlemektedir.

Depolama türüVeri kaynağıErişilebilirlik garantisiZincir içi erişilebilirlikEk sınırlamalar
EIP-4844 blob'larıZincir dışı~18 gün (opens in a new tab) için Ethereum garantisiYalnızca hash mevcuttur
Çağrı verisiZincir dışıSonsuza kadar Ethereum garantisi (blokzincirin bir parçası)Yalnızca bir sözleşmeye yazılmışsa ve o işlemde mevcuttur
Katman 1 (L1) mekanizmalarıyla zincir dışıZincir dışıİtiraz süresi boyunca "bir dürüst doğrulayıcı" garantisiYalnızca hashİtiraz mekanizması tarafından garanti edilir, yalnızca itiraz süresi boyunca
Sözleşme koduZincir içi veya zincir dışıSonsuza kadar Ethereum garantisi (blokzincirin bir parçası)Evet"Rastgele" bir adrese yazılır, 0xEF ile başlayamaz
OlaylarZincir içiSonsuza kadar Ethereum garantisi (blokzincirin bir parçası)Hayır
DepolamaZincir içiSonsuza kadar Ethereum garantisi (blokzincirin ve üzerine yazılana kadar mevcut durumun bir parçası)Evet