Kaynak: Liu Jiaolian
Perşembe günü BTC, 86-87 bin aralığında hafif yatay hareket etti. 2025 Mart ayı neredeyse bitmek üzere. Mart ayı bitti ve ilk çeyrek bitmek üzere. Today’s Teaching Chain’in de belirttiği gibi, bu ilk çeyrek 2018’den bu yana en kötü çeyrek olabilir.
Zaman su gibidir, yıllar ise şarkılar. BTC zamanın çaldığı müziktir. Ancak hareketin ilk yıllarında, özellikle 2013 öncesinde, hareketin içinde bazı uyumsuz sesler de vardı. Bu uyumsuz banknotlar tekrarlanan madeni para bazlı işlemlerdir (madeni para basım işlemleri).
Coinbase işlemi (coin mining transaction) olarak da bilinen coinbase işlemi, her yeni oluşturulan BTC bloğundaki ilk işlemdir. Bloğu çıkaran madenci genellikle bu işlemi blok ödülünü kendi adresine göndermek için kullanır.
Hepimizin bildiği gibi sıradan BTC işlemlerinin tekrarlanması mümkün değildir. Çünkü sıradan işlemler, var olan bir işlemin harcanmamış çıktısını harcamak zorundadır, buna "coin"lerle karşılaştırılan UTXO denir. Bu coinler farklı olduğu için bu coinlerin harcandığı işlemler de farklı olmak zorundadır. Bir coin'in iki işlemde harcanması durumunda BTC tarafından kesinlikle yasaklanan "çift harcama" durumu ortaya çıkar.
Ancak bir istisna vardı. İşte Coinbase ticareti. Coinbase işlemleri, madencilere ödül olarak verilen UTXO coin'lerini harcamak yerine, doğrudan havadan yeni BTC yaratılabilmesini sağlayan bir işlemdir.
Bir madenci birden fazla bloğu art arda çıkarırsa ve coinbase işlem verilerini oluştururken alıcı adresi ve diğer ek bilgiler gibi tam olarak aynı bilgileri kullanırsa, o zaman tam olarak aynı iki işlem oluşturmak mümkündür. Bu durum, blok zincirinde farklı bloklarda yer alan, ancak aynı işlem verisi ve karma değerine sahip iki coin tabanlı işlem olarak yansıtılır.
Bu tekrarlanan bir coinbase işlemidir.
Bu Bitcoin hatası gerçek. İşte iki gerçek örnek. Aşağıdakileri doğrulamak için herhangi bir BTC blok zinciri tarayıcısını açabilirsiniz:
Blok yüksekliği 91812 ve blok yüksekliği 91842, tam olarak aynı hash değerlerine sahip iki coinbase işlemine sahiptir.
Blok yüksekliği 91722 ve blok yüksekliği 91880, tam olarak aynı hash değerlerine sahip iki coinbase işlemine sahiptir.
İyi haber şu ki, daha önce hiç kimse bu tür çoğaltılmış coinbase işlemlerini harcamak ve aynı olan sonraki sıradan işlemleri oluşturmak için kullanmadı ve böylece tüm UTXO alanını kirletmedi. 15 Mart 2012 tarihinde BIP-30'un soft fork ile uygulanmasının ardından bu tür kopyalanmış işlemlerin kullanımı artık mümkün olmamıştır.
Ayrıca Mart 2013'te, coinbase işleminin yapısına "versiyon numarası" olarak blok yüksekliği bilgisi ekleyen BIP-34 soft forku aktifleştirildi ve coinbase işleminin hash değerinin tekrarlanması imkânsız hale getirildi.
Özellikle teknik açıdan bakıldığında, blok yüksekliği coinbase işleminin scriptSig'inin başına eklenir. İlk bayt, blok yüksekliği değerinin bayt sayısını gösterir - şu anda 0x03, bu da sonraki 3 baytın coinbase işleminin blok yüksekliğini gösterdiği anlamına gelir. Coinbase işlemindeki scriptSig'e coinbase script'i de denir. Madencilerin özgürce özelleştirebileceği bir alandır. İlk zamanlarda keyfi verilerin yazılmasına olanak sağlıyordu. Mesela Satoshi Nakamoto bu alanda The Times'ın başlığını yazmıştır.
Daha sezgisel bir karşılaştırma. Öncelikle, coinbase işlem kopyası sorununun yaşandığı #91812 bloğunun coinbase işleminin scriptSig'ine bakalım: 0456720e1b00 (OP_PUSHBYTES_4 56720e1b OP_0).
Bu makaleyi yazdığım sırada, Jiaolian tarafından yeni üretilen #889678 numaralı bloğun coinbase işlem betiği imzası şudur: 034e930d044260e5672f466f756e6472792055534120506f6f6c202364726f70676f6c642f23648154608b1500000000000 (OP_PUSHBYTES_3 4e930d OP_PUSHBYTES_4 4260e567 OP_PUSHBYTES_47).
0x03 ile başlar ve takip eden üç bayt 43930d'dir, bu da blok yüksekliğinin onaltılık tabanda 0x0d934e, ondalık tabanda 889678 olduğu anlamına gelir.
Kötü haber ise 2013'teki düzeltmeden önce, oluşturulan coinbase işlemlerinin bir kısmının 0x03 ile başlamasıydı! Bu, gelecekteki madencilerin bunu istismar ederek kasıtlı olarak coinbase işlemlerini kopyalamasını mümkün kılıyor.
Size somut bir örnek vereyim. #164384 bloğunun coinbase betiği 0x03 ile başlıyor: 03d6441e014b0136 (OP_PUSHBYTES_3 d6441e OP_PUSHBYTES_1 4b OP_PUSHBYTES_1 36).
Madencinin bu senaryoyu yazarken ne amaçladığını bilmiyoruz. Ancak bildiğimiz bir şey var ki, bu açığı istismar edip gelecekte Coinbase'dekine tamamen benzer bir işlem yapmaya çalışma fırsatına sahip.
Tam olarak saat kaç? Basit bir hesaplama yapmamız gerekiyor.
BIP-34 tanımına göre 0x03'ten sonraki 3 bayt blok yüksekliğini ifade eder. Yukarıdaki örnek için bu d6441e'dir, yani onaltılık sistemde 0x1e44d6, ondalık sistemde ise 1983702'dir.
#1983702 numaralı blok ne zaman üretilecek? BTC yaklaşık olarak her 10 dakikada bir blok ürettiğinden, mevcut #889678 numaralı bloktan gelecekteki #1983702 numaralı bloğa kadar (1983072 - 889678)/6/24/365 = 20,8 yıl, yani yaklaşık 2046 yıl süreceği kolayca çıkarılabilir.
Kötü haber ise bu tür blokların hâlâ çok sayıda olması. İşte tam tablo:
blok_yüksekliği,coinbase_yüksekliği,eşit
164384,1983702,DOĞRU
169895,3708179,DOĞRU
170307,3709183,DOĞRU
171896,3712990,DOĞRU
172069,3713413,DOĞRU
172357,3714082,DOĞRU
172428,3714265,DOĞRU
174151,5208854,DOĞRU
176684,490897,DOĞRU
183669,3761471,DOĞRU
196988,4275806,DOĞRU
201577,5327833,DOĞRU
206039,7299941,DOĞRU
206354,7299941,DOĞRU
209920,209921,DOĞRU

Yukarıdaki çubuk grafikte de görüldüğü üzere riskin en yüksek olduğu dönem 2078 civarıdır.
Yukarıdaki çubuk grafikte de görüldüğü üzere riskin en yüksek olduğu dönem 2078 civarıdır.
İyi haber şu ki, mevcut devasa ve gelecekte daha da büyük bir ağ hesaplama gücüyle, o zamanki madenciler bu fikre sahip olsalar bile, o yükseklikteki bloğun paketleme haklarını (üretim hakları, madencilik hakları) ele geçirmeleri zor olacaktır.
Ayrıca, madencilik haklarını ele geçirmek için bu kadar büyük çaba sarf edip, bir daha asla harcanamayacak ve önceki yıllara ait verileri taklit eden bir işlem oluşturarak boş yere zarara uğramak isteyen madencilerin ne kadar sıkılmış olması gerekir?
Dolayısıyla, coinbase'deki kopyalanmış işlem hatasının %100 çözüldüğü söylenemez ancak büyük dalgalara yol açması da pek olası görünmüyor.
Tüm Yorumlar