Mevcut blok zincirlerin en önemli ve ortak sorunlarından birisi, ölçeklenebilirlik sorunudur. Blok zincirler de ölçeklenebilirlik, ağın aynı anda çok sayıda işlemin akışıyla başa çıkma yeteneğidir. Bitcoin saniyede 7 işlem gerçekleştirebilir. Eğer ağa saniyeden 7’den daha fazla bir işlem akışı olursa bunlar daha sonra gerçekleştirebilmek üzere kuyruğa alınır. İşlemi daha hızlı gerçekleştirilmesini isteyen kişi daha fazla fee vererek kuyrukta kaynak yapabilir.
Ölçeklenebilirlik sorunu da, ağda büyük miktarda işlem akışını gerçekleştirme konusundaki ağın sınırlı kabiliyetini ifade eder. Bu güne kadar ölçeklenebilirliği arttırma konusunda çeşitli öneriler çıktı. Ethereum’un 2013’te ortaya çıkmasından bu yana ortaya atılan bir fikirde “sharding” yöntemiydi.
Bu temel olarak Ethereum ağının altyapısın parçalara bölerek ölçeklenebilirlik yeteneğini arttırmaya yönelikti. Buna ek olarak Sharding, sadece blok zincirlere özgü değildir. Klasik merkezi veri tabanları için de kullanılan bir yöntemdir.
Sharding Nedir?
Sharding, ölçeklenebilirlik amacıyla kullanılan ve saniyede daha fazla işlem gerçekleştirmelerini sağlayan bir veri tabanı bölümleme tekniğidir. “Shard” kelimesi “bir bütünün küçük bir parçası” anlamına gelir. Dolayısıyla Sharding, basitçe daha büyük bir parçayı daha küçük parçalara bölmek anlamına gelir.
Bu işlem, bir blok zincir ağını “parçalar” olarak bilinen daha küçük bölümlere ayırır ve 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, bir blok zinciri ağını ayrı parçalara böldüğü için bir ağın ölçeklenebilirliğini arttırmaya yardımcı olabilir ancak uygulamada güvenlik ile ilgili bazı endişeler bulunmakta.
Veriler Nasıl Parçalanır?
Blok zincirlerinde, ağın tüm verilerini korunmasından ve depolanmasından sorumlu olan bilgisayarlara node denir. Söz konusu blok zincirinde gerçekleşen her işlem node’lar aracılıyla saklanır. Bunlar ağ için önemli olan bilgileri (örneğin, işlem geçmişi ve hesap bakiyeleri gibi) depolar.
Ağda gerçekleşen her işlemi tüm node’larda depolanarak bir blok zincirinin güvenliğini sağlarken, işlem akışını önemli ölçüde yavaşlatır.
Sharding, bir blok zinciri ağındaki işlem akış yükünü böldüğü veya dağıttığı için ölçeklenebilirliği arttırılacağı düşünülür, böylece her node’ın blok zincirinin tüm iş yükünü işlemesi gerekmez.
Blok zincirlerin parçalanması, yatay bölümleme ve parça paylaşımı olarak yapılabilir.
Yatay bölümleme, veri tabanlarının satırlara bölünerek yatay olarak bölümlenmesi yoluyla gerçekleştirilebilir. Satırlar olarak adlandırılan parçalar, özelliklere göre kavramsallaştırılır. Ayrıca, parçaları, içinde depolanan dijital varlığın türüne göre bölmek de mümkün olabilir.
Parça paylaşımı, Her parça, blok zinciri teknolojisinin dağıtık defter özelliğini koruyan diğer parçalar arasında paylaşılabilir. Yani, dağıtık deftere, tüm defter işlemlerini görüntülemelerine izin veren her kullanıcı tarafından erişilebilir.
Güvenlik Problemleri
Blok zincirlerde güvenlik oldukça önemlidir. Böyle bir bölümlemede geliştiriciler güvenlik gibi önemli bir sorun ile karşı karşıya kalacaktır. Buradaki endişe şu: Her parça ayrı olsa ve yalnızca kendi verilerini işlese de, bir parçanın başka bir parçayı devraldığı ve bilgi veya veri kaybına neden olduğu parçaların bozulması. Elde edilen parçalar siber korsanlar tarafından, siber saldırı ile eli geçirilebilir.
Saldırıda söz konusu parçaların içerisindeki bilgiler değiştirilebilir. Bu konuda ise Ethereum ortaya attığı fikirde şu: Belirli parçalara rastgele node’lara atayarak ve bunları sürekli olarak rastgele aralıklarla yeniden dağıtarak siber korsanların, parçayı nerede ve ne zaman değiştirebileceğini zorlaştırması.