Sözlük / Protokol ve güncellemeler
Sürüm bitleri
- Sürüm bitleri nedir?
- Sürüm bitleri, bir blok başlığındaki 32 bitlik sürüm alanını birbirinden bağımsız anahtarlardan oluşan bir dizi olarak ele alır; böylece madenciler birden çok soft fork için aynı anda destek sinyali verebilir.
Tanımlandığı belge: BIP-9.
Bir sürüm biti, bekleyen bir soft fork'u temsil eder ve sabit bir blok penceresi boyunca sayılır. BIP-9, 0 ile 28 arasındaki bitleri sunar ve bir dağıtım, 2.016 blokluk bir dönemde 1.916 blok kendi bitini ayarladığında kilitlenir ya da bir yıl olarak önerilen bir zaman aşımında başarısız olur. Bu sinyalleri okumak, cüzdanınızın istediği bir özelliğin aylar öncesinden ağ kuralına dönüşüp dönüşmeyeceğini bilmenin yoludur.
Nasıl çalışır
Sürüm bitleri, her düğümün kendisi için, her hedef ayarlama döneminde bir kez, bildiği her dağıtım için hesapladığı beş durumlu bir durum makinesi olarak işler.
Durumlar DEFINED, STARTED, LOCKED_IN, ACTIVE ve FAILED'dir. 2.016 blokluk bir hedef ayarlama dönemindeki her blok tek bir durumu paylaşır, bu yüzden bir geçiş yalnızca 2.016'nın katı olan bir yükseklikte gerçekleşebilir. Bir dağıtım, önceki bloğun medyan geçmiş zamanı yapılandırılmış başlangıç zamanını geçtiğinde DEFINED'den STARTED'e geçer; medyan geçmiş zaman, bir bloğun ve ondan önceki on bloğun zaman damgalarının medyanıdır.
STARTED'e geçtikten sonra bir düğüm tam olarak 2.016 ata bloğa geri gider ve üstteki üç sürüm biti 001 olan ve dağıtım biti ayarlanmış blokları sayar. Bunun dışındaki her şey sıfır sayılır, böylece başka bir sürüm şeması çalıştıran bir madenci kazara sinyal veremez. Mainnet bunlardan 1.916 tanesini gerektirir, testnet ise 1.512 tanesini. Medyan geçmiş zaman zaman aşımını geçene kadar eşik tutturulamazsa dağıtım kalıcı olarak FAILED'e geçer. BIP-9, bu zaman aşımının başlangıç zamanından 31.536.000 saniye, yani bir yıl sonraya konmasını önerir; böylece tıkanmış bir öneri sırayı sonsuza dek bloke etmek yerine bitini serbest bırakır.
İnsanları yanıltan bir ayrıntı var. Bir bloğun durumu asla kendi sürüm alanına bağlı değildir, yalnızca atalarının sürüm alanına bağlıdır, bu yüzden bir madenci bir kurala oy verip oyun kendisini kullanan bloğu bağlamasını sağlayamaz. Üstteki üç bitin 001 olarak sabitlenmesi ayrıca sinyal veren bir bloğun sürümünü 0x20000000 ile 0x3FFFFFFF aralığına sabitler ve 010 ile 011 desenlerini sürüm bitlerinin yerini sonunda alacak herhangi bir mekanizma için serbest bırakır.
Bitler harcanmaz, geri dönüştürülür. Bir dağıtım etkinleştiğinde ya da zaman aşımına uğradığında biti daha sonraki bir öneriyi taşıyabilir; bu, BIP-9'un hatalı yazılımın önce yakalanması için önerdiği bir dinlenme aralığından sonra olur. Şartname ayrıca düğümlerden tanımadıkları bitleri izlemelerini ve bilinmeyen bir dağıtım kilitlendiğinde yüksek sesle uyarı vermelerini ister; güncellenmemiş yazılım, uygulayamadığı bir kuralın yaklaştığını size bu şekilde bildirir.
Nerede görülür
Bitcoin'in mainnet'inde BIP-9'un kendi parametreleriyle iki dağıtım çalışmıştır ve BIP'nin dağıtım listesi ikisini de tabloda gösterir.
İlki, csv adını taşıyan dağıtım, 2016-05-01 başlangıç zamanı ve 2017-05-01 sona erme tarihiyle 0 numaralı biti aldı ve 419.328 numaralı blokta etkinleşti. BIP-68, BIP-112 ve BIP-113'i bir arada getiriyordu; bunlar BIP-9'un daha önce geçerli olan işlemleri geçersiz kılan değişiklikler arasında saydığı üç değişikliktir. İkincisi, segwit, 2016-11-15 ile 2017-11-15 arasında bir pencereyle 1 numaralı biti aldı ve kaçırabileceği bir son tarihten önce, 481.824 numaralı blokta etkinleşti.
Şema, madencilik altyapısında da görülür. BIP-9, getblocktemplate çağrısını zaten etkin olan dağıtımları adlandıran bir rules dizisi, bekleyen her dağıtımın adını bitiyle eşleyen bir vbavailable nesnesi ve sunucunun gerektirdiği bitlerden oluşan isteğe bağlı bir vbrequired maskesiyle genişletti. Bir havuz neye sinyal vereceğine karar vermek için bu anahtarları okur; yayımlanmış bir sürümü izleme sitelerindeki bir yüzdeye dönüştüren de budur.
Sürüm bitleri vs sürüm 2 bloğu
Sürüm 2 bloğu sürüm alanında bir sayaç taşır; sürüm bitleri ise aynı dört baytta bir bit vektörü taşır. BIP-34 kapsamında alan bir tamsayı olarak karşılaştırılıyordu, bu yüzden aynı anda yalnızca bir yükseltme yürürlükte olabiliyordu ve her başarı, geçerli bir bloğun kullanabileceği değerleri kalıcı olarak yakıyordu. BIP-9 hesabı açıkça yapar: BIP-34, BIP-66 ve BIP-65 sonrasında yalnızca 0x7FFFFFFB sürüm değeri kalmıştı; bu da herhangi bir bit vektörü şemasını 30 bağımsız dağıtımla sınırlar. Üstteki üç bitin sabitlenmesi ise geri kalanı, paralel çalışan ve yeniden kullanılabilen 29 şeride dönüştürdü.