Ana içeriğe atla
Change page

Bloklar

Bloklar, zincirdeki bir önceki bloğun hash'ini içeren işlem gruplarıdır. Bu, blokları birbirine (bir zincir halinde) bağlar çünkü hash'ler kriptografik olarak blok verilerinden türetilir. Bu durum dolandırıcılığı önler, çünkü geçmişteki herhangi bir blokta yapılacak tek bir değişiklik, sonraki tüm hash'ler değişeceği ve blokzinciri çalıştıran herkes bunu fark edeceği için sonraki tüm blokları geçersiz kılacaktır.

Ön koşullar

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

Neden bloklar?

Ethereum ağındaki tüm katılımcıların senkronize bir durumu korumasını ve işlemlerin kesin geçmişi üzerinde mutabakata varmasını sağlamak için işlemleri bloklar halinde gruplandırıyoruz. Bu, düzinelerce (veya yüzlerce) işlemin aynı anda taahhüt edildiği, üzerinde anlaşıldığı ve senkronize edildiği anlamına gelir.

A diagram showing transaction in a block causing state changes Diyagram Ethereum EVM illustrated (opens in a new tab)'dan uyarlanmıştır

Taahhütleri aralıklı hale getirerek, tüm ağ katılımcılarına mutabakata varmaları için yeterli zaman tanıyoruz: işlem talepleri saniyede onlarca kez gerçekleşse bile, bloklar Ethereum'da yalnızca on iki saniyede bir oluşturulur ve taahhüt edilir.

Bloklar nasıl çalışır

İşlem geçmişini korumak için bloklar kesin bir şekilde sıralanır (oluşturulan her yeni blok, ebeveyn bloğuna bir referans içerir) ve bloklar içindeki işlemler de kesin bir şekilde sıralanır. Nadir durumlar dışında, herhangi bir zamanda, ağdaki tüm katılımcılar blokların tam sayısı ve geçmişi konusunda hemfikirdir ve mevcut canlı işlem taleplerini bir sonraki blokta gruplandırmak için çalışırlar.

Bir blok, ağ üzerinde rastgele seçilen bir doğrulayıcı tarafından bir araya getirildikten sonra ağın geri kalanına yayılır; tüm düğümler bu bloğu kendi blokzincirlerinin sonuna ekler ve bir sonraki bloğu oluşturmak için yeni bir doğrulayıcı seçilir. Kesin blok oluşturma süreci ve taahhüt/mutabakat süreci şu anda Ethereum'un "Hisse Kanıtı (PoS)" protokolü tarafından belirlenmektedir.

Hisse Kanıtı (PoS) protokolü

Hisse Kanıtı (PoS) şu anlama gelir:

  • Doğrulayıcı düğümler, kötü davranışlara karşı teminat olarak bir yatırma sözleşmesine 32 ETH stake etmek zorundadır. Bu, ağı korumaya yardımcı olur çünkü kanıtlanabilir şekilde dürüst olmayan faaliyetler, bu stake'in bir kısmının veya tamamının yok edilmesine yol açar.
  • Her slotta (on iki saniye arayla) bir doğrulayıcı rastgele olarak blok teklifçisi seçilir. İşlemleri bir araya getirir, yürütür ve yeni bir 'durum' belirlerler. Bu bilgileri bir blok içine sarar ve diğer doğrulayıcılara iletirler.
  • Yeni bloğu duyan diğer doğrulayıcılar, küresel durumdaki önerilen değişiklikle aynı fikirde olduklarından emin olmak için işlemleri yeniden yürütürler. Bloğun geçerli olduğunu varsayarak, onu kendi veritabanlarına eklerler.
  • Bir doğrulayıcı aynı slot için birbiriyle çelişen iki blok duyarsa, en çok stake edilen ETH tarafından desteklenen bloğu seçmek için çatal seçimi algoritmalarını kullanır.

Hisse Kanıtı (PoS) hakkında daha fazlası

Bir bloğun içinde ne var?

Bir bloğun içinde pek çok bilgi bulunur. En üst düzeyde bir blok aşağıdaki alanları içerir:

AlanAçıklama
slotbloğun ait olduğu slot
proposer_indexbloğu teklif eden doğrulayıcının kimliği (ID)
parent_rootönceki bloğun hash'i
state_rootdurum nesnesinin kök hash'i
bodyaşağıda tanımlandığı gibi çeşitli alanlar içeren bir nesne

Blok body kendi içinde çeşitli alanlar içerir:

AlanAçıklama
randao_revealbir sonraki blok teklifçisini seçmek için kullanılan bir değer
eth1_datayatırma sözleşmesi hakkında bilgi
graffitiblokları etiketlemek için kullanılan rastgele veriler
proposer_slashingsceza kesintisi uygulanacak doğrulayıcıların listesi
attester_slashingsceza kesintisi uygulanacak onaylayıcıların listesi
attestationsönceki slotlara karşı yapılan onayların listesi
depositsyatırma sözleşmesine yapılan yeni yatırımların listesi
voluntary_exitsağdan çıkan doğrulayıcıların listesi
sync_aggregatehafif istemcilere hizmet vermek için kullanılan doğrulayıcıların alt kümesi
execution_payloadyürütme istemcisinden aktarılan işlemler

attestations alanı, bloktaki tüm onayların bir listesini içerir. Onaylar, birkaç veri parçasını içeren kendi veri türlerine sahiptir. Her onay şunları içerir:

AlanAçıklama
aggregation_bitsbu onaya hangi doğrulayıcıların katıldığının bir listesi
databirden fazla alt alan içeren bir kapsayıcı
signaturebir dizi doğrulayıcının data kısmına karşı toplu imzası

attestation içindeki data alanı şunları içerir:

AlanAçıklama
slotonayın ilgili olduğu slot
indexonaylayan doğrulayıcılar için endeksler
beacon_block_rootzincirin başı olarak görülen işaret bloğunun kök hash'i
sourceson gerekçelendirilmiş kontrol noktası
targeten son dönem sınırı bloğu

execution_payload içindeki işlemleri yürütmek küresel durumu günceller. Tüm istemciler, yeni durumun yeni bloktaki state_root alanıyla eşleştiğinden emin olmak için execution_payload içindeki işlemleri yeniden yürütür. İstemciler yeni bir bloğun geçerli ve blokzincirlerine eklenmesinin güvenli olduğunu bu şekilde anlayabilirler. execution payload'ün kendisi çeşitli alanlara sahip bir nesnedir. Ayrıca yürütme verileri hakkında önemli özet bilgiler içeren bir execution_payload_header da vardır. Bu veri yapıları aşağıdaki gibi düzenlenmiştir:

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

AlanAçıklama
parent_hashebeveyn bloğunun hash'i
fee_recipientişlem ücretlerinin ödeneceği hesap adresi
state_rootbu bloktaki değişiklikleri uyguladıktan sonra küresel durum için kök hash
receipts_rootişlem makbuzları trie'sinin hash'i
logs_bloomolay günlüklerini içeren veri yapısı
prev_randaorastgele doğrulayıcı seçiminde kullanılan değer
block_numbermevcut bloğun numarası
gas_limitbu blokta izin verilen maksimum gaz
gas_usedbu blokta kullanılan gerçek gaz miktarı
timestampblok süresi
extra_dataham baytlar olarak rastgele ek veriler
base_fee_per_gastaban ücret değeri
block_hashYürütme bloğunun hash'i
transactions_rootyükteki işlemlerin kök hash'i
withdrawal_rootyükteki çekim işlemlerinin kök hash'i

execution_payload'ün kendisi aşağıdakileri içerir (bunun, işlemlerin kök hash'i yerine işlemlerin ve çekim bilgilerinin gerçek listesini içermesi dışında başlıkla aynı olduğuna dikkat edin):

AlanAçıklama
parent_hashebeveyn bloğunun hash'i
fee_recipientişlem ücretlerinin ödeneceği hesap adresi
state_rootbu bloktaki değişiklikleri uyguladıktan sonra küresel durum için kök hash
receipts_rootişlem makbuzları trie'sinin hash'i
logs_bloomolay günlüklerini içeren veri yapısı
prev_randaorastgele doğrulayıcı seçiminde kullanılan değer
block_numbermevcut bloğun numarası
gas_limitbu blokta izin verilen maksimum gaz
gas_usedbu blokta kullanılan gerçek gaz miktarı
timestampblok süresi
extra_dataham baytlar olarak rastgele ek veriler
base_fee_per_gastaban ücret değeri
block_hashYürütme bloğunun hash'i
transactionsyürütülecek işlemlerin listesi
withdrawalsçekim nesnelerinin listesi

withdrawals listesi, aşağıdaki şekilde yapılandırılmış withdrawal nesnelerini içerir:

AlanAçıklama
addressçekim yapan hesap adresi
amountçekim miktarı
indexçekim endeks değeri
validatorIndexdoğrulayıcı endeks değeri

Blok süresi

Blok süresi, blokları ayıran zamanı ifade eder. Ethereum'da zaman, 'slot' adı verilen on iki saniyelik birimlere bölünmüştür. Her slotta bir blok teklif etmek için tek bir doğrulayıcı seçilir. Tüm doğrulayıcıların çevrimiçi ve tamamen işlevsel olduğu varsayıldığında, her slotta bir blok olacaktır, bu da blok süresinin 12 saniye olduğu anlamına gelir. Ancak, bazen doğrulayıcılar bir blok teklif etmeye çağrıldıklarında çevrimdışı olabilirler, bu da slotların bazen boş kalabileceği anlamına gelir.

Bu uygulama, blok sürelerinin olasılıksal olduğu ve protokolün hedef madencilik zorluğu tarafından ayarlandığı İş Kanıtı (PoW) tabanlı sistemlerden farklıdır. Ethereum'un ortalama blok süresi (opens in a new tab), İş Kanıtı'ndan (PoW) Hisse Kanıtı'na (PoS) geçişin yeni 12 saniyelik blok süresinin tutarlılığına dayanılarak açıkça anlaşılabildiği bunun mükemmel bir örneğidir.

Blok boyutu

Son önemli bir not da blokların boyutlarının sınırlı olmasıdır. Her bloğun hedef boyutu 30 milyon gazdır ancak blokların boyutu, 60 milyon gazlık (hedef blok boyutunun 2 katı) blok limitine kadar ağ taleplerine göre artacak veya azalacaktır. Blok gaz limiti, önceki bloğun gaz limitinden 1/1024 oranında yukarı veya aşağı ayarlanabilir. Sonuç olarak, doğrulayıcılar mutabakat yoluyla blok gaz limitini değiştirebilirler. Bloktaki tüm işlemler tarafından harcanan toplam gaz miktarı, blok gaz limitinden az olmalıdır. Bu önemlidir çünkü blokların keyfi olarak büyük olmamasını sağlar. Bloklar keyfi olarak büyük olabilseydi, daha az performanslı tam düğümler alan ve hız gereksinimleri nedeniyle yavaş yavaş ağa ayak uyduramaz hale gelirdi. Blok ne kadar büyük olursa, onları bir sonraki slot için zamanında işlemek için gereken hesaplama gücü de o kadar büyük olur. Bu, blok boyutlarının sınırlandırılmasıyla direnilen merkezileştirici bir güçtür.

Daha fazla bilgi

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

Sayfanın son güncellenme tarihi: 23 Şubat 2026