İçeriğe geçin
buybitcoinsmart

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

OP_HASH160

OP_HASH160 nedir?
OP_HASH160, yığının en üstündeki öğe üzerinde SHA-256, ardından bu sonuç üzerinde RIPEMD-160 çalıştırır ve 20 baytlık bir özet bırakır; bu, 1 veya 3 ile başlayan her adresin içinde taşınan aynı parmak izidir.

Tek bir bayt, 0xa9, kriptografide en çok incelenmiş iki hash işlevinin yerini tutuyor. Bu ikili, 32 baytlık bir çıktıyı 20 bayta indirir ve iki algoritmadan birindeki bir zayıflığa karşı sigorta sağlar; bunun bedeli, çarpışma direncinin 128 bit yerine kabaca 80 bit olmasıdır. Bir bitcoin adresinin telefonda sesli okunabilecek kadar kısa olmasının nedeni budur.

Nasıl çalışır

OP_HASH160 herhangi bir uzunluktaki tek bir öğeyi yığından çıkarır ve yığına tam olarak 20 bayt koyar; aynı girdi her zaman aynı özeti üretir.

İki işlev birbiriyle ilgisiz tasarım geleneklerinden gelir. RIPEMD-160, 1996'da açık biçimde çalışan Avrupalı bir akademik ekip tarafından yayımlandı; SHA-256 ise NSA'dan çıktı ve 2001'de NIST tarafından standartlaştırıldı. İkisini art arda bağlamak temkinli bir tercihti. Birindeki yapısal bir kırılma, bir saldırgan ile işe yarar bir sahtecilik arasında yine de diğerini bırakırdı ve otuz yıldır hiçbiri bu yapıyı tehdit edecek biçimde kırılmadı.

Boyuttaki azalma kozmetik değildir. Kalıcı, küresel bir defteri küçük tutmak amaçken her çıktıda on iki bayt kazanmak önemliydi; klasik kilitleme betiğinin 37 değil 25 bayt olmasının nedeni de budur.

Yirmi baytın bir tavanı vardır. 160 bitlik bir özeti paylaşan iki girdi bulmak, 2 üzeri 128 yerine kabaca 2 üzeri 80 işlem gerektirir; bu, yalnızca sizin özetlenen anahtarı seçtiğiniz durumda rahatlatıcıdır, ancak taahhüt edilen betiğin seçilmesine bir karşı taraf yardım ettiğinde çok daha az rahatlatıcıdır. Segregated witness'ın betik taahhütlerini P2WSH'de tek bir 32 baytlık SHA-256'ya taşıyıp tek anahtarlı çıktılar için daha kısa biçimi korumasının nedeni tam olarak budur.

Nerede görülür

OP_HASH160 iki betik şablonunda yer alır ve çıktısı, şimdiye kadar kopyaladığınız hemen her adresin içinde bulunur.

Eski tür çıktılar onu bir açık anahtar üzerinde çalıştırır. Pay-to-script-hash çıktıları ise bir redeem script üzerinde çalıştırır. Her iki durumda da gördüğünüz adres, önüne bir sürüm baytı eklenmiş ve Base58Check sağlama toplamıyla sarılmış bu 20 baytlık özettir; 1 ile başlayan adresler için 0x00, 3 ile başlayanlar için 0x05. Yerel segwit tek anahtarlı çıktılar aynı 20 baytı hiçbir işlem kodu bulunmadan taşır, çünkü bu çıktı türünün kuralları betik olarak yazılmak yerine doğrulayıcının içine yerleştirilmiştir.

Taproot bu alışkanlığı bozdu. Bir bc1p çıktısı, arada hiçbir hash adımı olmadan 32 baytlık bir açık anahtara taahhüt eder; bu nedenle bir Taproot adresi hiçbir yerde hash160 içermez.

Bir donanım cüzdanının ekranında adresi kontrol etmenin işe yaramasının pratik nedeni de budur. Herhangi bir yerde farklı olan iki adres birbiriyle ilgisiz iki özet üretir; bu yüzden değiştirilmiş bir adres neredeyse doğru görünemez. Cihazdaki adresin ilk ve son birkaç karakterini bilgisayarınızın gösterdiğiyle karşılaştırmak, panoyu ele geçiren kötü amaçlı yazılımı yakalamaya yeter.

OP_HASH160 vs SHA-256

SHA-256 bir hash işlevidir; OP_HASH160 ise bu işlevi bir kez çağıran bir komuttur. İşlev, hiçbir betiğin söz konusu olmadığı bitcoin'in her yerinde karşımıza çıkar: iş kanıtı bir blok başlığını onunla iki kez hash'ler, işlem kimlikleri onun çift uygulamasıdır ve merkle ağaçları ondan inşa edilir. İşlem kodu ise yalnızca Bitcoin Script içinde bulunur, yalnızca bir çıktı harcanırken çalışır ve her zaman 32 değil 20 bayt üretir. Yaptığı bileşim, yani SHA-256 çıktısı üzerinde RIPEMD-160, cüzdan kodunda kendi adını (hash160) alacak kadar yaygındır; bir kütüphanenin işlev listesini okurken bunu tanımanız işinize yarar.

Karıştırılmaması gerekenler

Sık sorulan sorular

Bitcoin neden iki farklı algoritmayla iki kez hashler?

İki neden. İkinci hash, özeti 32 bayttan 20 bayta indirir; bu her adresi ve her çıktı betiğini kısaltır; ayrıca birbiriyle ilgisiz iki tasarım kullanmak, tek bir algoritmadaki bir kırılmanın bir eşleşmeyi sahteleştirmeye yetmemesi anlamına gelir.

20 baytlık bir hash hâlâ güvenli mi?

Sıradan tek anahtarlı bir adres için evet. Daha zayıf durum, hashlenen içeriğin bir kısmını başka birinin seçtiği bir betiktir; ayrık tanık düzenlemesinin betikleri bunun yerine tam 32 baytlık SHA-256 ile taahhüt etmesinin nedeni budur.

Sıradaki okuma

İlgili terimler

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

Bu sayfayı İngilizce okuyun