İçeriğe geçin
buybitcoinsmart

Sözlük / Protokol ve güncellemeler

Medyan geçmiş zaman

Diğer adları: MTP.

Medyan geçmiş zaman nedir?
Medyan geçmiş zaman, Bitcoin'in konsensüs saati: önceki on bir bloğun zaman damgalarının medyanı ve zamana dayalı her kilitleme süresinin (locktime) karşılaştırıldığı değer.

Tanımlandığı belge: BIP-113.

Düğümler, doğruladıkları bloktan önceki on bir bloğun zaman damgalarını alır, sıralar ve orta değeri mevcut zaman olarak kullanır. Bu medyan yaklaşık altı blok geride kalır, dolayısıyla duvar saatinden kabaca bir saat geridedir. Bu nedenle öğlene kadar kilitlediğiniz bir Bitcoin, öğleden sonra bir civarında harcanabilir hale gelir.

Nasıl çalışır

Medyan geçmiş zaman, GetMedianTimePast adlı bir fonksiyondan çıkar; bu fonksiyon on bir blok kaydında geriye doğru ilerler, her zaman damgasını bir diziye kopyalar, diziyi sıralar ve ortadaki öğeyi döndürür.

BIP-113'ün tanımladığı sabit nMedianTimeSpan = 11 olduğundan, sonuç her zaman on bir sayının altıncı en küçüğüdür. Sonucu güvenilir kılan şey sıralamadır. Bir bloğun zaman damgası ebeveynininkinden daha erken olabilir, ancak konsensüs kuralları her yeni zaman damgasını kendinden önceki on birin medyanının üstünde olmaya zaten zorlar, dolayısıyla medyan yalnızca ileri gidebilir. Bu yüzden tek bir zaman damgasını saptırmak bir madenciye neredeyse hiçbir şey kazandırmaz.

BIP-113'ün çözdüğü sorun bir hata değil, bir teşvikti. Eski kuralda bir işlemin uygunluğu, onu içeren bloğun zaman damgasına göre değerlendiriliyordu; bu, madencinin yazdığı bir sayıdır ve BIP'nin gerekçe bölümü bunu "a perverse incentive for miners to lie about the time of their blocks in order to collect more fees" (madencilerin daha fazla ücret toplamak için bloklarının zamanı hakkında yalan söylemesine yönelik sapkın bir teşvik) diye adlandırır. Çözüm tek bir değişiklikti: IsFinalTx'e yapılan konsensüs çağrıları, bloğun kendi zamanı yerine önceki bloğun GetMedianTimePast değerini alır ve kural, coinbase işlemi dahil her işlemi kapsar.

BIP9 sürüm bitlerine dayalı bir soft fork olarak 0 biti üzerinde yayımlandı; ana ağda sinyalleşme 1 Mayıs 2016 gece yarısı UTC'de açıldı ve bir yıl sonra zaman aşımına uğradı. Üç kilitleme süresi kuralının tek bir paket olarak gelmesi için BIP68 ve BIP112 ile birlikte devreye alındı.

Nerede görülür

Medyan geçmiş zaman, Bitcoin Core RPC çıktısında mediantime adlı bir alan olarak, doğrudan ham time alanının yanında yer alır.

getblock herhangi bir blok için ikisini de döndürür ve getblockchaininfo zincir ucunun medyan zamanını zincir ucunun zaman damgasının yanında bildirir; çalışan bir düğümde bir saatlik gecikmeyi izlemenin en hızlı yolu budur. getchaintxstats daha ileri gider ve penceresinin süresini iki bloğun başlık zamanları yerine medyan zamanları arasındaki fark olarak ölçer, böylece iki uçtan birindeki tek bir sapmış zaman damgası sonucu neredeyse hiç etkilemez.

Bunun sorun yarattığı yer mempool'dur. Bitcoin Core yazılımının CheckFinalTxAtTip fonksiyonu bir aday işlemi, geçerli zincir ucunun medyan geçmiş zamanına ve onun bir üstündeki yüksekliğe göre değerlendirir; bu yüzden bir son tarih geçtiği anda işlemi yayan cüzdan, iletim yerine ret alır ve medyan duvar saatinize yetişene kadar yeniden denemeye devam etmek zorunda kalır.

Göreli kilitleme süreleri aynı saati her iki uçta da devralır. BIP-68, 512 saniye birimleriyle sayılan zamana dayalı bir dizi kilidini, coinin çıkarıldığı bloktan önceki bloğun medyan geçmiş zamanından harcamanın yapıldığı bloktan önceki bloğun medyan geçmiş zamanına kadar ölçer; böylece gecikme iki kez ortaya çıkar ve büyük ölçüde birbirini götürür.

Medyan geçmiş zaman vs blok başlığı zaman damgası

Medyan geçmiş zaman on bir başlık zaman damgasından hesaplanır ama hiçbir blokta saklanmaz; bir başlık zaman damgası ise madencinin yazdığı ve her düğümün sonsuza kadar tuttuğu bir alandır.

Bitcoin ikisini de farklı işler için kullanır. Kilitleme süreleri medyanı kullanır, çünkü medyan tekdüze biçimde ilerler ve ücret geliri için ileri çekilemez. Zorluk yeniden hedeflemesi hâlâ ham başlık zamanlarını okur: Bitcoin Core, 14 günlük penceredeki son bloğun blok zamanını alır, ilk bloğun blok zamanını çıkarır ve hedefi bu farka göre yeniden ölçekler. Tek bir zincirde iki saatin bulunması düzensiz görünür ve bu bilinçli bir tercihtir. Bir yeniden hedefleme iki haftalık bloklar boyunca gerçek geçen süreyi isterken, bir kilitleme süresi hiçbir madenci tek başına oynatamayacağı bir sayı ister.

Karıştırılmaması gerekenler

Sık sorulan sorular

Zamana dayalı kilitlenmiş bir işlem neden belirlediğim saatten yaklaşık bir saat sonra onaylanıyor?

Çünkü Bitcoin, zamana dayalı kilitleme sürelerini medyan geçmiş zamana, yani önceki on bir blok zaman damgasının medyanına göre kontrol eder ve bu değer duvar saatinden kabaca bir saat geride kalır. BIP-113 bunu uyumluluk bölümünde belirtir. Kesin an önemliyse, son tarihi yürürlüğe girmesini istediğiniz andan bir saat öncesine ayarlayın.

Medyan geçmiş zaman bir bloğun içinde saklanır mı?

Hayır, her düğüm medyan geçmiş zamanı doğruladığı bloktan önceki on bir blok zaman damgasından kendisi hesaplar. Bitcoin Core sonucu getblock ve getblockchaininfo içinde mediantime alanı olarak sunar, ancak blok verisinin hiçbir parçası bu değeri taşımaz.

Medyan geçmiş zaman sıradan bir Bitcoin alımını etkiler mi?

Hayır, sıradan bir borsadan para çekme veya cüzdandan ödeme zamana dayalı bir kilit taşımaz, dolayısıyla medyan geçmiş zaman bunları hiçbir zaman geciktirmez. Yalnızca bir harcama zamana dayalı bir kilitleme süresine, bir OP_CHECKLOCKTIMEVERIFY betiğine veya zamana dayalı göreli bir kilitleme süresine bağlı olduğunda önemlidir.

Sıradaki okuma

İlgili terimler

Daha fazlası: Protokol ve güncellemeler

Bu sayfayı İngilizce okuyun