İçeriğe geçin
buybitcoinsmart

Sözlük / Geliştirici başvuru kaynağı

OP_EQUALVERIFY

OP_EQUALVERIFY nedir?
OP_EQUALVERIFY yığının en üstündeki iki öğeyi karşılaştırır ve bunlar farklıysa betiği anında sonlandırır; eski tip bir harcamanın doğru genel anahtarı sunduğunu kanıtlaması da bu şekilde olur.

0x88 baytı, Bitcoin'in en eski betik şablonunun ortasındaki kontrol noktasıdır. Geçtiğinde arkasında hiçbir şey bırakmaz, başarısız olduğunda ise yürütmeyi tamamen durdurur; bu yüzden yanlış anahtar sağlayan bir girdi başarısız bir ödeme değil, hiçbir düğümün iletmeyeceği geçersiz bir işlem üretir. Cüzdanınızın gerçekten doğru anahtarla imzalayıp imzalamadığı genellikle burada belirlenir.

Nasıl çalışır

OP_EQUALVERIFY yığından iki öğe alır, bunları bayt bayt karşılaştırır ve ya sessizce devam eder ya da betiği bitirir.

Eski tip bir harcamada çalıştığı sırada yığında 20 baytlık iki dizi bulunur. Biri, bitcoinler geldiğinde, belki de yıllar önce, çıktının taahhüt ettiği parmak izidir. Diğeri, harcayanın az önce sunduğu genel anahtarın parmak izidir. Bu 20 bayt içinde tek bir farklı bit değerlendirmeyi bitirir ve bundan bir geri dönüş yoktur: Bitcoin Script'te istisna yönetimi ve ikinci bir deneme yoktur.

Başarı hiçbir şeyi geri itmez. Birleşik biçimin var olmasının tek nedeni budur ve 25 baytlık pay-to-public-key-hash betiğinin kimsenin istemediği artık bir boolean yerine bir imza kontrolüyle bitebilmesinin nedeni de budur. Bitcoin Core yorumlayıcısı birleştirmeyi harfiyen uygular: önce karşılaştırma durumunu çalıştırır, ardından genel doğrulama durumuna geçer, böylece ikisi benzer iki yol değil tek bir kod yoludur.

Desen dilin tamamında yinelenir. Her birleşik verify işlem kodu, sade karşılığının tam bir bayt üstünde yer alır: eşitlik için 0x87 ve 0x88, imza kontrolü için 0xac ve 0xad, eski multisig işlem kodu için 0xae ve 0xaf. Bir koşulun başka herhangi bir şey olmadan önce sağlanması gerektiğinde betik yazarları üstteki bayta başvurur.

Nerede görülür

OP_EQUALVERIFY ile karşılaşmanın en net yeri bir blok gezgini değil, bir reddetme mesajıdır.

Adrese uymayan bir anahtarla imzalanmış bir işlem yayımlarsanız Bitcoin Core mandatory-script-verify-flag-failed yanıtını verir ve ardından gelen parantez içinde başarısız olan OP_EQUALVERIFY işlemini adıyla belirtir. Pratikte bu hata neredeyse her zaman tek bir anlama gelir: imzalayan cihaz anahtarını, bitcoinlerin sahibi olandan farklı bir yoldan veya farklı bir kurtarma ifadesinden türetmiştir. Bir cüzdanı yanlış türetme yoluyla geri yükleyip sonra harcamaya çalışmak tam olarak bunu üretir.

Çözümlenmiş betikler de bunu açıkça gösterir. 1 ile başlayan bir adrese ödeme yapan her çıktı, bu işlem kodunun dördüncü sırada olduğu beş belirteçli bir betik olarak görünür ve Bitcoin-cli decodescript, yapıştırdığınız bir kullanım betiği için aynı assembly çıktısını verir.

OP_EQUALVERIFY vs OP_VERIFY

OP_EQUALVERIFY, kendisine bir doğrulamanın eklendiği belirli bir testtir; OP_VERIFY ise doğrulamanın kendisidir. Genel biçim, 0x69 baytı, incelediği değeri neyin ürettiği hakkında hiçbir şey bilmez; tek bir öğeyi yığından alır ve bu öğenin doğru olmasını talep eder. OP_EQUALVERIFY karşılaştırmayı ve talebi tek bir baytta birlikte yapar, bu yüzden ikisi nadiren ayrı ayrı yazılır. Koşul aritmetikten, bir zaman kilidi (timelock) kontrolünden ya da düz bir eşitlik olmayan bir öngörüntü testinden geliyorsa genel biçime başvurun. Soru gerçekten iki bayt dizisinin eşleşip eşleşmediğiyse, tek anahtarlı bir harcamada her zaman olduğu gibi, birleşik biçime başvurun.

Karıştırılmaması gerekenler

Sık sorulan sorular

İşlem yayımlarken alınan OP_EQUALVERIFY hatası ne anlama gelir?

Cüzdanınızın sunduğu genel anahtarın hash değerinin, çıktının taahhüt ettiği değerle eşleşmediği anlamına gelir; yani imza hiç kontrol edilmemiştir. Neredeyse her zaman imzalayan cüzdan yanlış türetme yolundadır veya yanlış kurtarma ifadesinden geri yüklenmiştir.

Neden sadece OP_EQUAL ve ardından OP_VERIFY yazılmıyor?

Aynı şekilde davranır ve bir bayt daha fazla maliyetlidir. Birleşik işlem kodu, bu karşılaştırma ve durdurma çifti her eski tip tek anahtarlı çıktıda göründüğü ve girdi başına bir bayt tüm zincir boyunca biriktiği için vardır.

İlgili terimler

Daha fazlası: Geliştirici başvuru kaynağı

Bu sayfayı İngilizce okuyun