Ana içeriğe geç
Change page

Bloklar

Son düzenleme: @insidetrader(opens in a new tab), 27 Şubat 2024

Bloklar, zincirde yer alan bir önceki blok hakkındaki hash değerlerini barındıran işlem gruplarıdır. Bu, blokları birbirine (bir zincir hâlinde) bağlar çünkü hash değerleri blok verilerinden kriptografik olarak türetilir. Bu, geçmişteki herhangi bir bloktaki tek bir değişikliğin sonraki tüm hash değerlerini değiştirerek tüm blokları geçersiz kılacağı ve bu durum blok zincirini yürüten herkes tarafından fark edileceği için dolandırıcılığı önler.

Ön Koşullar

Bloklar, yeni başlayanlar için uygun bir konudur. Ancak bu sayfayı daha iyi anlamanıza yardımcı olmak için önce Hesaplar, İşlemler ve Ethereum'a giriş bölümlerini okumanızı öneririz.

Bloklar neden gerekli?

Ethereum ağındaki tüm katılımcıların senkronize durumlarını sürdürmesini ve işlemlerin kesin geçmişi üzerinde anlaşmasını sağlamak için işlemleri bloklar hâlinde topluyoruz. Bu, düzinelerce (veya yüzlerce) işlemin aynı anda yapıldığı, üzerinde anlaşmaya varıldığı ve senkronize edildiği anlamına gelir.

Durum değişikliklerine neden olan bir bloktaki işlemi gösteren bir diyagram Diyagram Ethereum EVM resmediciden(opens in a new tab) uyarlanmıştır

Kod girişleri arasında belirli bir süre tanıyarak ağ katılımcıları için yeterli zamanı veriyoruz: işlem talepleri saniye başına düzinelerce oluşsa da bloklar Ethereum üzerinde on iki saniyede bir yaratılmaktadır ve oluşmaktadır.

Blokların çalışma şekli

İşlem geçmişini korumak için, bloklar titizlikle sıralanır (oluşturulan her yeni blok, önceki bloğa bir referans içerir) ve bloklar içindeki işlemler de titizlikle sıralanır. Herhangi bir zamanda olabilecek nadir durumlar dışında ağdaki tüm katılımcılar, blokların tam sayısı ve geçmişi konusunda mutabıktır ve mevcut aktif işlem taleplerini bir sonraki blokta gruplandırmak için çalışmaktadır.

Bir blok, ağ üzerinden rastgele seçilmiş doğruluyacılar tarafından bir araya getirildiğinde ağın geri kalanına yayılır, bütün düğümler bu bloku kendi blok zincirlerinin sonuna ekler ve yeni bloku yaratmak için yeni bir doğrulayıcı seçilir. Bu blok birleştirme süreci ve taahtütname/mutabakat süreci şu anda Ethereum'un "hisse ispatı" protokolü tarafından özelleştiriliyor.

Hisse ispatı protokolü

Hisse ispatının anlamı aşağıdaki gibidir:

  • Doğrulayıcı düğümler, kötü davranışlara karşı bir teminat olarak yatırım sözleşmesine 32 ETH hisselemek zorundadır. Bu, ağın korunmasına yardımcı olur çünkü gerçek anlamda dürüst olmayan aktivite hisselerin kısmen veya tamamen yok olmasına yol açabilir.
  • Her bir yuvada (12 saniyelik boşluklara ayrılmış) bir doğrulayıcı, blok önerici olarak seçilir. Doğrulayıcılar işlemleri paketler, yürütür ve yeni "duruma" karar verirler. Bu bilgileri bir bloka atar ve öbür doğrulayıcılara iletirler.
  • Yeni blokun haberini alan diğer doğrulayıcılar küresel durum değişim önerisine uydukarını güvence altına almak için işlemleri tekrar yürütürler. Blokun geçerli olduğunu varsayarsak kendi veritabanlarına ekler.
  • Eğer bir doğrulayıcı çelişen iki blok hakkında bir haber alırsa en çok ETH hisselemiş olanı çatal seçim algoritmasını kullanarak seçer.

Hisse ispatı hakkında daha fazla bilgi

Bir blokta neler yer alır?

Bir blok içinde barındırılan çok fazla bilgi vardır. En yüksek düzeyde, bir blok aşağıdaki alanları barındırır:

AlanAçıklama
yuvablokun ait olduğu yuva
proposer_indexbloku öneren doğrulayıcının kimliği
parent_rootönceki blokun karması
state_rootdurum nesnesinin kök karması
şablonaşağıda tanımlandığı gibi birkaç alan içeren bir nesne

Blok gövdesi kendi başına birkaç alana sahiptir:

AlanAçıklama
randao_revealbir sonraki blok önericisini seçmek için kullanılan değer
eth1_datadepozito sözleşmesi hakkında bilgi
graffitiblokları etiketlemek için kullanılan keyfi veriler
proposer_slashingskesilecek doğrulayıcıların listesi
attester_slashingskesilecek doğrulayıcıların listesi
tasdiklermevcut blok lehine tasdik listesi
depozitolardepozito sözleşmesine yeni depozito listesi
voluntary_exitsağdan çıkan doğrulayıcıların listesi
sync_aggregatehafif istemcilere hizmet etmek için kullanılan doğrulayıcıların alt kümesi
execution_payloadyürütüm istemcisinden geçirilen işlemler

Tasdik alanı, bloktaki tüm tasdiklerin bir listesini içerir. Tasdiklerin, birkaç veri parçası içeren kendi veri türleri vardır. Her tasdik şunları içerir:

AlanAçıklama
aggregation_bitsbu tasdiğe hangi doğrulayıcıların katıldığının bir listesi
veribirden çok alt alana sahip bir barındırıcı
i̇mzatüm onaylayan doğrulayıcıların toplu imzası

Tasdikteki veri alanı şunları içerir:

AlanAçıklama
yuvatasdiğe bağlı yuva alanı
indekstasdik eden doğrulayıcılar için endeksler
beacon_block_rootbu nesneyi içeren İşaret blokunun kök düğümü
kaynakgerekçeli son denetim noktası
targetson dönem sınır bloku

Bu işlemleri execution_payload'da yapmak global durumu günceller. Tüm istemciler yeni durum yeni blok state_root alanıyla eşleştiğinden emin olmak için işlemleri execution_payload'da yeniden çalıştırır. Bu, müşteriler tarafından yeni bir blokun kendi blok zincirlere eklenmesi için geçerli ve güvenli olduğunun söylenmesidir. Yürütme yükü birkaç farklı alandan oluşan bir nesnedir. Ayrıca çalıştırma verisiyle ilgili önemli bilgileri içinde bulunduran execution_payload_header bir veri yapısı var. Bu veri yapıları şu şekilde organize edilmiştir:

execution_payload_header aşağıdaki alanları içerir:

AlanAçıklama
parent_hashüst blokun karması
fee_recipientişlem ücretlerinin ödeneceği hesap adresi
state_rootbloka değişimleri uyguladıktan sonraki küresel durum için kök karması
receipts_rootişlem makbuzları karması
logs_bloomolay günlüklerini içeren veri yapısı
prev_randaorastgele doğrulayıcı seçiminde kullanılan değer
block_numbermevcut blokun numarası
gas_limitbu blokta izin verilen maksimum gaz
gas_usedbu blokta kullanılan net gaz miktarı
zaman damgasıblok süresi
extra_datai̇steğe bağlı ham bayt olarak eklenen veri
base_fee_per_gasana ücret değeri
block_hashUygulama blokunun özeti
transactions_rootyükteki işlemlerin kök karması
withdrawal_rootyükteki para çekme işlemlerinin kök karması

execution_payload ise aşağıdakileri kapsar (bunun başlık olanla aynı olduğuna dikkat edin, ancak işlemlerin kök karmaları yerine asıl işlem listesini ve çekim bilgisini kapsıyor):

AlanAçıklama
parent_hashüst blokun karması
fee_recipientişlem ücretlerinin ödeneceği hesap adresi
state_rootbloka değişimleri uyguladıktan sonraki küresel durum için kök karması
receipts_rootişlem makbuzları karması
logs_bloomolay günlüklerini içeren veri yapısı
prev_randaorastgele doğrulayıcı seçiminde kullanılan değer
block_numbermevcut blokun numarası
gas_limitbu blokta izin verilen maksimum gaz
gas_usedbu blokta kullanılan net gaz miktarı
zaman damgasıblok süresi
extra_datai̇steğe bağlı ham bayt olarak eklenen veri
base_fee_per_gasana ücret değeri
block_hashUygulama blokunun özeti
İşlemleryürütülecek işlemlerin listesi
para çekimleripara çekim nesnelerinin listesi

Çekimlerin listesi aşağıdaki gibi çekilmiş nesnelerden oluşur:

AlanAçıklama
adrespara çekilen hesap adresi
amountpara çekim miktarı
indekspara çekim endeksi değeri
validatorIndexdoğrulayıcı endeks değeri

Blok süresi

Blok süresi, blokların ayrılması sırasındaki süreye karşılık gelir. Ethereum'da zaman, "yuva" adı verilen 12 saniyelik birimlere bölünmüştür. Her bir yuvada blok önermek için tek bir doğrulayıcı seçilmiştir. Tüm doğrulayıcıların çevrimiçi ve tam anlamıyla işlevsel olduğunu varsayarsak her bir yuvada bir blok oluşacaktır, bu da blok zamanının 12 saniye olduğu anlamına gelir. Ancak bazen doğrulayıcılar, blok önerisine çağrıldıklarında çevrimdışı olabilir, bu da kimi zaman yuvaların boş olacağı anlamına gelir.

Bu uygulama; blok sürelerinin tahmin edilebilir olduğu ve protokolün hedef madencilik zorluğu tarafından ayarlanan iş ispatı temelli sistemlerden ayrılır. Ethereum'un ortalama blok süresi(opens in a new tab) yeni 12li blok süresinin istikrarına bağlı olarak bakıldığında iş ispatı ve hisse ispatı arasındajki geçişi net olarak gösteren mükemmel bir örnektir.

Blok boyutu

Son olarak önemli bir not: Blokların kendileri de boyut olarak sınırlandırılmıştır. Her blokun hedef boyutu 15 milyon gazdır ama blok boyutu ağ isteklerine göre 30 milyon gaz olan blok limitine kadar (blok boyutu hedefinin 2 katı) artabilir veya azalabilir. Bloktaki işlemlerden kesilen toplam gaz miktarı, blokun gaz limitinden daha az olmalıdır. Bu, blok boyutunun keyfi olarak belirlenememesini sağladığı için önemlidir. Bloklar keyfi boyutlarda olabilseydi, daha az performans gösteren tam düğümler, alan ve hız gereksinimleri nedeniyle yavaş yavaş ağa ayak uyduramazlardı. Blok ne kadar büyük olursa onu bir sonraki yuvada zamanında işlemek için gereken işlemci gücü de o denli büyük olacaktır. Bu blok boyutlarına üst sınırlar koyarak direnen bir merkezileştirici kuvvet.

Daha fazla bilgi

Size yardımcı olan bir topluluk kaynağı biliyor musunuz? Bu sayfayı düzenleyin ve ekleyin!

Bu makale yararlı oldu mu?