
Geleneksel blok zincirlerinde, blok yayılımı, yeni blokların ve işlemlerin yayılan tüm düğümlere yayınlandığı eşler arası bir ağ üzerinden gerçekleşir. Bu süreç genellikle sıralı olarak gerçekleşir veya yoğun olarak gerçekleşir. Ancak, bu yöntem ölçeklenebilir değildir, çünkü iletişimlerin çokluğu nedeniyle ağ büyüdükçe yönetimi zorlaşır.
35.000 doğrulayıcıdan oluşan bir ağı ele alalım. Liderin 128 MB'lık bir bloğu (işlem başına 250 bayt ile yaklaşık 500.000 işlem) tüm 35.000 doğrulayıcıya iletmesi gerekir. Geleneksel blok yayılımı uygulaması, liderin her doğrulayıcıya benzersiz bir bağlantıya sahip olmasını ve 128 MB'ın tamamını 35.000 kez iletmesini gerektirir. Bu, tipik bant genişliği kapasitelerinin çok ötesinde olan ve bu kadar çok bağlantıyla uyum sağlaması mümkün olmayan 4,69 TB'lık toplam veri iletimiyle sonuçlanır.
Yavaş blok yayılımı sorununu çözmek için Solana, kümeler tarafından defter girişlerini tüm düğümlere yayınlamak için kullanılan çok katmanlı bir blok yayılım mekanizması olan Turbine'i tanıttı. Genel olarak konuşursak, Turbine blokları daha küçük bloklara böler ve bunları bir düğüm sırasına göre yayarak tek bir düğümdeki yükü azaltır.
Turbine'in mimarisi büyük ölçüde BitTorrent'inkinden esinlenmiştir. Her ikisi de veri parçalamaya dayanır - büyük verileri daha küçük parçalara böler - ve verileri yaymak için eşler arası ağı kullanır. Turbine, akış için optimize edilmiştir. Verileri yalnızca UDP kullanarak iletir, bu da gecikme avantajları sağlar. Liderler (blok üreticileri) verilerini akıttıkça ağ boyunca paket başına rastgele bir yol uygular. Bu yüksek blok yayılım hızı, Solana'nın yüksek verimini korumasına olanak tanır.
Dahası, Turbine veri kullanılabilirliği sorununu ele alarak tüm düğümlerin işlemleri verimli bir şekilde doğrulamak için gereken verilere erişebilmesini sağlar. Bu, diğer blok zinciri ağlarında yaygın bir darboğaz olan muazzam miktarda bant genişliği gerektirmeden yapılır.
Bir blok yayılmadan önce, lider gelen işlem akışına göre bloğu oluşturur ve sipariş eder. Blok oluşturulduktan sonra, Turbine aracılığıyla ağın geri kalanına gönderilmeye hazırdır. Bu işleme blok yayılımı denir. Daha sonra doğrulayıcılar arasında mesajlar iletilir ve bu mesajlar, taahhüt durumu "onaylandı" veya "sonlandırıldı"yı karşılamak için blok verilerinin içine kapsüllenir.
Liderler tüm blokları inşa edip önerirken, gerçek veriler ağdaki diğer doğrulayıcılara parçalar (kısmi bloklar) olarak gönderilir. Parçalar, doğrulayıcılar arasında gönderilen atomik birimlerdir. Bu parçalama ve yayma süreci, blok verilerinin Solana genelinde hızlı ve verimli bir şekilde dağıtılmasını sağlayarak yüksek verim ve ağ güvenliğini korur.
Not: Onaylanmış bir blok, defter oylarının büyük çoğunluğunu almışken, sonlandırılmış bir blok onaylanmış olup hedef bloğun üzerine inşa edilmiş 31+ onaylanmış bloğa sahiptir.
Türbin Ağacına gönderilmeden önce, parçalar belirli hata düzeltme kodu türlerini kullanan bir veri koruma yöntemi olan Reed-Solomon silme kodlamasıyla kodlanır. Bu yöntem, arızalar veya hatalar durumunda veri kaybına karşı koruma sağlamak için tasarlanmıştır. Verileri daha küçük bloklara böler ve her bloğu ekstra bilgilerle kodlar.
Turbine, yanlış veya eksik verileri yeniden yayınlamaya karar verebilecek doğrulayıcılar arasındaki paketlerin yeniden iletilmesine büyük ölçüde güvenir. Yeniden iletim nedeniyle, ağ genelindeki herhangi bir paket kaybı birleşir ve paketin hedefine ulaşamama olasılığı her atlamada artar. Örneğin, bir lider bloğun paketlerinin %20'sini silme kodları olarak iletirse, ağ bloğu kaybetmeden paketlerin herhangi %20'sini düşürebilir. Liderler, yakın zamanda gözlemlenen ağ genelindeki paket kaybı ve ağaç derinliği gibi değişkenleri hesaba katarak bu sayıyı (FEC oranı) ağ koşullarına göre dinamik olarak ayarlayabilir.
Solana'da, veri parçaları lider tarafından oluşturulan orijinal bloktan gelen kısmi bloklardır ve kurtarma parçaları Reed-Solomon tarafından oluşturulan silme kodlu bloklardır. Solana'daki bloklar genellikle 32:32'lik bir FEC'den yararlanır (64 paketten 32'si yeniden iletmeye gerek kalmadan kaybolabilir).
Solana, doğrulayıcılar arasında parçaların etkili bir şekilde yayılmasını kolaylaştırmak için yapılandırılmış bir ağ topolojisi olan Türbin Ağacı kullanır. Parçalar, ilgili parça gruplarına düzgün bir şekilde kodlandığında, ağdaki diğer doğrulayıcılara en güncel durumu bildirmek için Türbin Ağacı aracılığıyla yayılmaya hazır hale gelir.
Türbin Ağacı, herkes tarafından bilindiği için her doğrulayıcının o parçayı iletmekle sorumlu olduğu yeri tam olarak bilmesini sağlar. Türbin Ağacı, mevcut DATA_PLANE_FANOUT değeri 200 olarak verildiğinde, genellikle 2 veya 3 atlamalı bir ağaçtır (aktif doğrulayıcı sayısına bağlı olarak).
Ayrıca, düğümler yeterli parça almazlarsa veya kayıp oranı FEC oranını aşarsa dedikodu ve onarıma başvurabilirler. Mevcut uygulamada, bloğu yeniden oluşturmak için yeterli parçaya sahip olmayan bir düğüm, yeniden iletim için lidere bir istek gönderir. Deterministik Türbin altında, tam bloğu alan herhangi bir düğüm, talep eden düğümün ihtiyaç duyduğu onarım parçalarını gönderebilir, böylece veri iletimi veri talep eden ağacın daha aşağı alanlarına itilir.
Bu raporda, büyük blokları ağ genelinde verileri verimli bir şekilde dağıtmak için daha küçük parçalara bölen Solana'nın Turbine blok yayılım mekanizmasını inceledik. Silme kodlamasının veri bütünlüğünü nasıl sağladığını ve Turbine Ağacının doğrulayıcılar arasında hızlı iletimi nasıl kolaylaştırdığını vurguladık.