Genel olarak sharding, büyük veritabanlarını daha küçük, daha hızlı ve daha kolay yönetilen parçalara ayıran bir veritabanı bölümleme türü olarak tanımlanabilir. Kripto para sektörüne ve blokzincir teknolojisine olan ilgi gün geçtikçe artmaktadır. Buna bağlı olarak işlem hacmi ve ağ tarafından işlenen iş yükü de artış göstermektedir. Bir blokzincir paylaşılan veri tabanı olarak ele alalım. Gün geçtikçe eklenen daha fazla veri, ağın tüm bu verileri verimli ve hızlı bir şekilde işleyebilmesi için yeni yollar bulmasını gerektirmektedir. Bu noktada sharding çözüm sunan bir yöntem olarak ortaya çıkmaktadır.
Parçalama, bir blokzincir şirketinin tüm ağını "parçalar" olarak bilinen daha küçük bölümlere ayırır. Her parça kendi verilerinden oluşur ve diğer parçalarla karşılaştırıldığında onu farklı ve bağımsız kılar.
Sharding Neden Önemlidir?
Blokzincir ağları ne kadar çok kullanıcı alırsa, ağ o kadar yavaşlar ve önemli gecikmelere yol açar, bu sebeple sharding çözüm olarak işlev görür.
Sharding, bir blokzincir ağını her biri diğer parçalardan ayrı olarak kendi verilerine sahip ayrı parçalara bölerek ağ gecikmesini iyileştirebilir.
Ölçeklenebilirlik oluşturmak için düşünülen çözümlerden biri sharding işlemidir.
Sharding Nasıl Yapılır?
- Blokzincir Doğrulayıcıları
Bir blokzincirdeki doğrulayıcılar bağımsızdır ve merkeziyetsiz bir ağdaki tüm verilerin korunmasından ve depolanmasından sorumludur. Başka bir deyişle her doğrulayıcı, hesap bakiyeleri ve işlem geçmişi gibi kritik bilgileri depolamalıdır. Bu işleyiş modeli, her işlemi tüm doğrulayıcılarda depolayarak bir blokzincirin güvenliğini sağlarken, işlemlerin işlenmesini önemli ölçüde yavaşlatır. Bu da işlemleri işlerken düşük hızlı olmasına neden olur ve blokzincirlerin milyonlarca işlemden sorumlu olduğu düşünülürse olumsuz bir durum yaratır.
Sharding, bir blokzincir ağındaki işlemsel iş yükünü böldüğü ve dağıttığı için bu noktada çözüm yoludur. Böylece iş bölümü olduğu için her doğrulayıcı blokzincirin tüm iş yükünü depolamak ve işlemek zorunda kalmaz.
- Yatay Bölünme
Sharding, veri tabanlarının yatay olarak satırlara bölümlenmesi yoluyla gerçekleştirilebilir. Belirli bir durumu ya da işlem geçmişini depolamaktan bir shard (parça) sorumludur. Ayrıca Sharding içerisinde depolanan dijital bilgileri ya da varlıkları türüne göre yeni bir shard kombinasyonu ile yeniden bölebilir.
Örneğin, bilgi ve depolama yükünün fazla olduğu eyaleti düşünelim. Bir eyalette 100.000 kişinin kişisel kayıtlarını içeren bir veri tabanı olduğunu hayal edelim. Bir kişi için bilgi bulmak, yaklaşık 100.000 işlemin hesaplanmasını gerektirir; bu maliyetli ve oldukça zaman alan bir iş yüküdür. Bu eyalette yönetimi burada yaşayan kişilerin; ikamet ettiği yer, ev ve iş adresi, doğum tarihi, sağlık bilgisi, çalıştığı sektör, çocuk sayısı, evlilik durumu, aylık ekonomik geliri gibi tüm verileri bir sistemde depolamak zorundadır. Bu büyük miktardaki veriler yıllar geçtikçe nüfus arttık ve göç aldıkça ağırlaşarak yavaşlayacaktır. Peki bu büyük veri tabanını daha küçük veri tabanlarına bölersek ne olur? Tüm veriler daha küçük ve spesifik parçalara bölünerek yönetilebilirse daha verimli hale gelecektir. Bu noktada devreye giren sharding, bilgileri veri tabanı içerisinde küçük shardlara (parçalara) böler ve alt listelerle bağımsız bir şekilde, açık olarak organize eder. Bu da yönetim sistemine ne kadar fazla data yüklenirse yüklensin hızlı ve ölçeklenebilir olarak çalışmasına olanak sağlar. Sharding sayesinde zincire eklenen tüm verileri doğrulamak için tüm blokzincir düğümlerinin doğrusal olarak çalışmasına gerek kalmaz. Yatay şekilde çalışmak yeterlidir. Her doğrulayıcı kendi sorumlu olduğu shardını (parçasını) yönetecek depolayacak ve işleyecektir.
- Shard (Parça) Paylaşımı
Her shard, blokzincir teknolojisinin önemli bir bölümünü (Örn: merkeziyetsiz defter) koruyan diğer parçalar arasında paylaşılabilir. Başka bir ifadeyle deftere, tüm defter işlemlerini görüntülemelerine izin veren her kullanıcı tarafından erişilebilir ve paylaşım sağlanabilir.
- Sharding ve Güvenlik
Sharding ile uygulamada ortaya çıkan ana sorunlardan biri güvenliktir. Her blokzincir ağı için güvenlik 3 temel önem arz eden unsurdan biridir. Her bir shard ayrı olsa ve yalnızca kendi verilerini işlese de buradaki endişe şudur; bir parçanın başka bir parçayı ele geçirerek bilgi ya da veri kaybına neden olması, parçaların sisteminin bozulmasıyla ilgili bir güvenlik endişesidir.
Herhangi bir shard (parça) bir bilgisayar korsanı veya bir siber saldırı yoluyla ele geçirebilir. Saldırgan daha sonra yanlış işlemler veya kötü amaçlı bir program ile ağa sızabilir.
Örneğin; Ethereum, gecikme ve ölçeklenebilirlik sorunlarına olası bir çözüm olarak shardingi test etmenin ön saflarında yer alıyor. Ethereum, Ethereum Mainnet'in Beacon Chain Pay İspatı (Proof of Stake) sistemi ile birleşeceği "The Merge"ü gerçekleştikten sonra 64 yeni shard zincirine bölünmeyi planlamaktadır. Ethereum, doğrulayıcılarını belirli shardlara (parçalara) rastgele bir şekilde atayacak ve bunları sürekli olarak rastgele aralıklarla yeniden atayarak bir shard (parça) saldırısı potansiyelini minimuma indirecektir. Rastgelelik buradaki en önemli ve güvenliği arttıracak noktadır. Çünkü siber saldırganlar, herhangi bir sharda (parçayı) ne zaman ve nerede sızacağını rastgelelik sayesinde bilemeyecek ve güvenlik ihlali sorunu minimize edilecektir.
Ethereum’da Sharding’in Rolü ve Önemi Nedir?
Sharding, Ethereum ölçeklenebilirliğinin geleceği olarak ele alınmaktadır. Ekosistemin saniyede binlerce işlemi desteklemesine yardımcı olmasının yanı sıra dünyadaki birçok kişinin platformu uygun maliyetle ve düzenli olarak kullanmasına izin verecek bir anahtar olarak görülmektedir.
(Not: Burada önemli olan bir noktaya değinmek gerekmektedir. Blokzincir ağlarının kullanmaya çalıştığı üç önemli özellik; merkeziyetsizlik, ölçeklenebilirlik ve güvenlik hakkında detaylı bilgiye buradan ulaşabilirsiniz.)
Ethereum bağlamında Sharding, tüm ağ üzerinde ihtiyaç duyulan büyük miktarda veriyi işleme yükünü bölerek katman 2 sistemiyle sinerjik olarak çalıştırır. Bu ağ tıkanıklığını azaltmaya ve saniye başına işlemleri artırmaya devam edecektir. Ayrıca rastgele yapılan doğrulayıcı atamaları ile yüksek oranda güvenlik sağlanacaktır.
Sharding, Ethereum'un ölçeklenebilirliğini ve kapasitesini geliştirmek için çok aşamalı bir yükseltmedir.
Sharding, veri depolama gereksinimlerinin güvenli bir şekilde dağıtılmasını sağlayarak, toplamaların daha da ucuz olmasını sağlar ve düğümlerin daha kolay çalıştırılmasını sağlar.
Ethereum'un güvenliğinden yararlanırken, 2. katman çözümlerinin düşük işlem ücretleri sunmasını sağlar.
Bu yükseltmenin, The Merge of Mainnet with the Beacon Chain'i takip etmesi planlanıyor.