İçeriğe geçin
buybitcoinsmart

Sözlük / Protokol ve güncellemeler

OP_CAT

OP_CAT nedir?
OP_CAT, betik yığınındaki en üstteki iki öğeyi tek bir öğede birleştirir; Satoshi'nin 2010 yılında devre dışı bıraktığı ve BIP-347'nin tapscript içinde yeniden etkinleştirmeyi önerdiği bir işlemdir.

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

Birleştirme kulağa önemsiz gelir ama öyle değildir. Onunla bir betik, bir işlemin imza hash'ini yığına itilen parçalardan, her biri en fazla 520 bayt olan parçalar hâlinde yeniden bir araya getirebilir ve sonra bu hash'i sıradan bir imza kontrolüyle doğrulayabilir. Tehlikeli olduğu için kapatılan bir işlem kodunun covenant listesinin en çok tartışılan maddesi hâline gelmesi böyle oldu.

Nasıl çalışır

Durum: Ağustos 2010'dan beri devre dışı; o tarihte betik motorunda savunma amaçlı bir temizlik sırasında bir dizi metin ve aritmetik işlem kodu kapatıldı. BIP-347 yalnızca tapscript içinde yeniden etkinleştirilmesini öneriyor. Mainnet'te etkin değil.

İşlemin kendisi tek satırdır: iki öğe yığından çıkarılır, baytları uç uca eklenerek yığına itilir. 2010 yılında tehlikeli olmasının nedeni, bir yığın öğesinin ne kadar büyüyebileceğine hiçbir şeyin sınır koymamasıydı. Bir öğeyi kendisiyle birleştirmek boyutunu ikiye katlar, bu yüzden kısa bir itme ve birleştirme döngüsü birkaç baytı gigabaytlara şişirip düğümün belleğini tüketebilirdi. Modern motorda her bir yığın öğesi için katı bir 520 baytlık sınır var, bu yüzden BIP-347 sonuç bu sınırı aşacaksa işlemi doğrudan başarısız kılar ve eski saldırı ortadan kalkar.

Yeniden etkinleştirmeyi alışılmadık ölçüde temiz kılan bir numaralandırma inceliği var. OP_CAT, 126 numaralı işlem kodudur. BIP-342 tapscript'i tanımlarken diğerlerinin yanı sıra 126'dan 129'a kadar olan işlem kodlarını OP_SUCCESS ilan etti: bunlardan biriyle karşılaşmak betiği anında başarılı kılar. Dolayısıyla eski düğümler 126 numaralı baytı içeren herhangi bir tapscript'i onu yürütmeden zaten kabul ediyor. Onu birleştirme yapacak şekilde yeniden tanımlamak yalnızca bu düğümlerin izin vereceği şeyi daraltır, bu da değişikliği zincir bölünmesi değil yumuşak çatal yapar.

Birleştirmenin önünü açtığı şeyler boyutuyla orantısızdır. Bayt dizileri oluşturabilen bir betik bir Merkle kanıtını doğrulayabilir, eliptik eğriler yerine hash'lerden kurulmuş bir Lamport veya Winternitz imzasını kontrol edebilir ve bir imzayı sabit bir nonce kullanmaya zorlayarak imza denkleminin kendisinin harcama işlemini betiğe açığa çıkarmasını sağlayabilir. OP_CAT işlem kodunu covenant'a özgü hiçbir işlem kodu olmadan genel bir covenant aracına dönüştüren hile işte bu son yöntemdir.

Nerede görülür

OP_CAT Bitcoin üzerinde hiç çalışmaz. Çalıştığı yerler, Bitcoin'in betik motorunu kopyalayıp sonra 2010 kararını tersine çeviren yan zincirler ve test ağlarıdır.

Elements, dolayısıyla Liquid, işlem kodunu etkin tutuyor; yayımlanan covenant gösterimlerinin çoğunun Bitcoin yerine Liquid için yazılmasının nedeni budur. BIP-347 kurallarını taşıyan özel signet'ler diğer ortamdır ve bunlar, geliştiricilerin kimseden konsensüsü değiştirmesini istemeden önce şeyi inşa edebilmesi için vardır.

Bitcoin satın alan veya elinde tutan biri için pratik içerik kısadır: OP_CAT etkinleşse de hiç etkinleşmese de cüzdanınız, adresleriniz veya yedekleriniz hakkında hiçbir şey değişmez. Adı bilmeye değer, çünkü Bitcoin'in ne kadar programlanabilir olması gerektiğine dair gerçek bir anlaşmazlığın merkezinde duruyor ve kuantum bilgisayarlı bir gelecek için hash tabanlı imzalar ekleme önerileri genellikle onun üzerinden geçiyor.

Sık sorulan sorular

OP_CAT ilk başta neden devre dışı bırakıldı?

Çünkü bir yığın öğesinin ne kadar büyüyebileceğine hiçbir şey sınır koymuyordu. Bir öğeyi tekrar tekrar kendisiyle birleştirmek boyutunu her seferinde ikiye katlar ve bu da bir düğümün belleğini tüketebilirdi. Mevcut 520 baytlık öğe sınırı bu riski ortadan kaldırıyor.

OP_CAT'in yeniden etkinleştirilmesi sert çatal gerektirir mi?

Hayır. Tapscript içinde işlem kodu numarası zaten OP_SUCCESS olarak ele alınıyor, bu yüzden eski düğümler onu içeren betikleri kabul eder. Ona gerçek bir davranış vermek yalnızca zaten izin verdiklerini daraltır, bu da onu yumuşak çatal yapar.

Sıradaki okuma

İlgili terimler

Daha fazlası: Protokol ve güncellemeler

Bu sayfayı İngilizce okuyun