Blok zincirine başlarken

Bugün önemli bir Bitcoin konseptine bakıyoruz: hash fonksiyonu. Bu makale ilk olarak bir hash fonksiyonunun ne olduğunu ve üç ana özelliğini tanıtıyor: çarpışma direnci, gizlilik ve bulmaca dostu olma. Blockchain'in özellikleriyle birleştirildiğinde, hash fonksiyonunun blockchain madenciliği iş yükünün ispatında spesifik uygulaması paylaşıldı ve hash fonksiyonu ile kurcalamaya dayanıklı modifikasyon arasındaki ilişki kısaca açıklandı.

Tam metin yaklaşık 2.600 kelimedir ve okunması yaklaşık 8 dakika sürer.

01

Karma işlevi nedir

Hash fonksiyonu (Hash Function), şifreleme algoritması hash algoritmasında yaygın olarak kullanılan ve hash fonksiyonu veya hash fonksiyonu olarak da bilinen bir fonksiyondur. Bir genel işlev olarak, karma işlevi herhangi bir uzunluktaki bir M mesajını, bir özet değeri veya bir ileti özeti (Mesaj Özeti) olarak adlandırılan daha kısa ve sabit uzunluklu bir H (M) değerine eşleyebilir. Hash işlemi tek yönlü bir şifreleme sistemidir, yani düz metinten şifreli metne geri dönüşü olmayan bir eşlemedir.Sadece bir şifreleme işlemi vardır ve şifre çözme işlemi yoktur. İşlev ifadesi:

y = H (x)

Secure Hash Algorithm 256 (SHA-256), Bitcoin tarafından sıklıkla kullanılan bir hash fonksiyonudur. Bu makale örnek olarak temel olarak SHA-256 algoritmasını kullanır. Giriş hangi dijital formatta olursa olsun ve dosya ne kadar büyük olursa olsun, hash işleminin çıktısı sabit uzunlukta bir bit dizisidir.Örneğin, ikili olarak 256 bit, yani 2560 veya 1'den oluşan bir dizi vardır ve onaltılık sayılarda 64'tür. Bit, örneğin:

Yaygın olarak kullandığımız onaltılık:

0xd7a8fbb307d7809469ca9abcb0082e4f8d5651e46d3cdb762d02d0bf37c9e592

İkiliye dönüştür:

1101011110101000111110111011001100000111110101111000000010010100011010011100101010011010101111001011000000000010000010111001001111111000110101010110010100011110010001101101100111110011100

02

Hash fonksiyonlarının üç özelliği

Karma işlevinin şifre güvenliğini sağlamasını sağlamak için şu üç özelliğin eklenmesi gerekir: çarpışma direnci, gizlilik ve bulmaca dostu.

Özellik 1: Çarpışma direnci

Hash fonksiyonu H, girdi olarak değişken uzunluklu bir veri bloğu M alır ve sabit uzunlukta bir Hash değeri h = H (M) üretir. M, H.'nin orijinal görüntüsüdür. H çoktan bire bir eşleme olduğundan, herhangi bir Hash değeri H için birden fazla ön görüntü vardır. Eğer x y ve H (x) = H (y), yani iki farklı giriş x ve y aynı çıktıyı H (x) = H (y) üretirse, buna çarpışma denir. H (x) hash fonksiyonu için hiç kimse bir çarpışma bulamazsa, o zaman fonksiyonun çarpışma direncine sahip olduğu söylenir.

Verilen bir X verisi için, hash değerini H = H (M) hesaplamak kolaydır; ancak X'i H'ye göre tersine hesaplamak zordur; H (X) = H (Y) olacak şekilde X ve Y'yi bulmak zordur. Aslında, geniş bir alandaki mesajlar küçük bir alana sıkıştırılırsa, çakışmaların olması gerekir.

Hash değerinin uzunluğunun 256 bit olarak sabitlendiğini varsayarsak, sıra 1, 2, ... 2 ^ 256 + 1 ise, bu 2 ^ 256 + 1 giriş değerleri ve hash değerleri tek tek hesaplanırsa, bunu yapmak için iki giriş değeri bulunmalıdır. Karma değeri aynı. Ama çok erken mutlu olmayın, çünkü anlamak için zamanınız olmalı ve bu sizin.

256 bitlik karma değerine sahip bir karma işlevi için, bir çarpışma çifti bulmak için ortalama 2 ^ 128 karma hesaplama gerekir. Bir bilgisayar saniyede 10.000 karma hesaplama yaparsa, 2 ^ 128 karma hesaplamasını tamamlamak yaklaşık 10 ^ 27 yıl sürecektir.

Özellik 2: Gizli

Gizlilik, r girdisi yüksek dereceli bir minimum entropi olasılık dağılımından seçildiğinde, belirli bir H (r || x) koşulu altında x'i belirlemenin imkansız olduğunu ifade eder. Basitçe söylemek gerekirse, çıktıdan girdi almak imkansızdır. Y = H (x) varsayalım, eğer y'yi biliyorsak, koşulları karşılayan x'i hızlıca bulmak zordur, bu durumda H (x) hash fonksiyonuna gizleme denir. Gizleme, x '= H' (y) 'nin ters fonksiyonunu bulmanın neredeyse imkansız olduğu anlamına gelir.Aslında, koşulu karşılayan birden fazla x olması gerekir ve gizleme gereksinimlerinden biri bile burada bulunamaz. Bunun nedeni, yukarıda bahsedilen hash fonksiyonunun tek yönlü olmasıdır.Belirli bir hash değeri için, 2 ^ 128 hash hesaplaması miktarı altında bu mümkün değildir.

Gizliliğin bir uygulaması, girdi olarak bilgiyi (mesaj) ve rastgele bir sayıyı (isim) alan "vaat" dir ve ortaya çıkan çıktı vaattir. Buradaki vaadin iki anlamı vardır: vaat yoluyla başkaları sizin katkınızı bilemez ve sözü bir kez kamuoyuna verdiğinizde, sözün başka bir bilgi parçası olduğu konusunda başkalarını aldatamazsınız. Bu nedenle gizlilik burada uygulanır. Ek olarak, her söz, sözün güvenliği için çok önemli olan yeni bir rastgele sayı gerektirir.

Özellik 3: Bulmaca dostu

Herhangi bir n-bit çıktı değeri y için, k'nin yüksek sıralı minimum entropi dağılımından seçildiğini varsayın, uygun bir yöntem bulunamazsa, x'i 2'nin n'inci kuvvetinden çok daha küçük bir zamanda bulun ve H (k || x) garantisi verin = y kurulduğunda, hash fonksiyonunu H bulmaca dostu olarak adlandırıyoruz. Arama bulmacası uygulamasında, bir çözüm bulmak için büyük bir alanda arama yapılmasını gerektiren matematiksel bir problem olan bir arama bulmacası oluşturacağız. Basitçe ifade etmek gerekirse, rastgele olması gerekir.Herhangi bir girdi sabit basamaklı bir çıktı alabilir.Giriş ile çıktı arasında herhangi bir korelasyon bulmak zordur.Giriş biraz ayarlanmış olsa bile, elde edilen çıktı, ayarlama dışında rastgele olur "Şiddet içeren deneme hesaplaması" içeriğini girin, daha iyi başka bir yol yoktur.

Çarpışma direnci, gizleme ve bulmaca dostu, her birinin kendi vurgusu var, ancak birbirleriyle bağlantılılar. Özellikle gizleme ve bulmaca-dostu çok benzerdir.Derinden anlamak isteyen okuyucular için gizlemenin x'i belirlemek, bulmaca-dostu k'yi bulmak anlamına geldiğine dikkat edilmelidir. Hash fonksiyonu H (x) için aşağıdaki özeti yapıyoruz:

  • Y = H (x) için, hash değerini y hesaplamak için x'i bilmek kolaydır;
  • Çarpışma direnci: Farklı x ve y'yi bulmak zordur, dolayısıyla H (x) = H (y);
  • Gizli / bulmaca dostu (yaklaşık anlayış): y = H (x) için, y hash değerini bilmek, x'i tersine bulmak zordur.

03

Hash fonksiyonunun anlamı

Karma işlevi ve iş kanıtı

İlk önce blok yapısını hatırlayın. Bir Bitcoin bloğu, bir blok başlığından ve blokta yer alan işlemlerin bir listesinden oluşur.Blok başlığının boyutu, 4 baytlık sürüm numarası, önceki bloğun 32 baytlık karma değeri ve 32'den oluşan 80 bayttır. Bir bayt Merkle Kök Karma, 4 baytlık bir zaman eki (şimdiki zaman), 4 baytlık mevcut zorluk değeri ve 4 baytlık rasgele bir sayıdan oluşur. Bloğun içerdiği işlemlerin listesi blok başlığına eklenir İlk işlem, madencilerin ödül ve ücret alması için özel bir işlem olan bir madeni para temelli işlemdir.

Bloğun genel yapısı şekilde gösterilmiştir:

onların arasında:

  • Sürüm, mevcut bloğun sürüm numarasıdır
  • Blokta yer alan çoklu işlemlerin karma değeri, bloğun Merkel veri yapısını oluşturur
  • nbits, mevcut Bitcoin protokolü tarafından belirlenen hesaplama karmaşıklığıdır
  • ntime, bloğun zaman damgasıdır
  • pre_hash, önceki bloğun hash değeridir

Hash (L, x) = SHA256 (SHA256 (block_header))

block_header = version + Merkel + nbits + ntime + pre_hash

Sabit uzunluğu 80 bayt olan blok başlığı, Bitcoin çalışma kanıtı için kullanılan giriş dizesidir. Blok başlığındaki rastgele sayıyı, yani nonce değerini sürekli olarak değiştirin ve her değişiklikten sonra blok başlığında çift SHA256 işlemi (yani SHA256 (SHA256 (Block_Header))) yapın ve sonuç değerini mevcut ağ hedef değeri ile birleştirin Aksine, hedef değerin altındaysa, sorun başarıyla çözülür ve iş yükü kanıtı tamamlanır.

Özet: Basitçe, belirli bir formatta bir hash değeri bulmak için girdi olarak blok başlığını sürekli değiştirerek (yani, farklı rasgele değerler deneyerek) SHA256 hash işlemini gerçekleştirme işlemi olan Bitcoin iş yükü ispat süreci olarak anlaşılabilir. Yani, belirli sayıda önde gelen sıfır gerekir ve ne kadar çok sayıda sıfır gerekerse, zorluk o kadar büyük olur.

Hash işlevi ve kurcalamayı önleme

X yalnızca bir bayt değiştiğinde, y de yalnızca bir bayt değişir mi? Bu küçük fark gerçeği değiştirebilir mi?

Yapamam!

Eğer x girişi 1 bit değişirse, hash değerindeki bitlerin yarısından fazlası, "çığ etkisi" olarak da adlandırılan hash'in bir sonucu olarak değişecektir.

Blok zinciri, zincir olarak adlandırılır çünkü her blok, önceki bloğun hedef karma değerini kaydeder (genesis bloğu, önceki karma değerine sahip değildir). Belirli bir bloktaki bir işlem tahrif edildiğinde, bu bloğun hedef Hash değeri, Merkel ağaç algoritmasının etkisiyle değişecek ve bu da bir zincir reaksiyonuna neden olacaktır. Bu bloğa bağlı olarak, sonraki tüm blokların hash değeri değişecek ve herhangi bir muhasebe düğümü, defterin kurcalandığını kolayca bulabilir, böylece blok zincirindeki tüm blokların kurcalamaya karşı koruma işlevine sahip olmasını sağlar. .

Hash fonksiyonunun çarpışma direnci, bloğun ve işlemin bütünlüğünü doğrulamak için kullanılır ve herhangi bir kurcalama tanımlanabilir.

Son olarak, bu makaleyi özetliyor ve özetliyoruz:

1. Hash fonksiyonu herhangi bir uzunluktaki x bilgisini girer ve çıktı hash değeri H (x) 256 bitlik sabit bir uzunluğa sahiptir;

2. Hash fonksiyonunun üç önemli özelliği vardır: çarpışma direnci, mahremiyet ve bulmaca dostu olma. Özellikle:

  • Y = H (x) için, hash değerini y hesaplamak için x'i bilmek kolaydır;
  • Çarpışma direnci: Farklı x, y bulmak zordur, dolayısıyla H (x) = H (y);
  • Gizli / bulmaca dostu (yaklaşık anlayış): y = H (x) için, y hash değerini bildiğinden, x'i tersine bulmak zordur;

3. Her değişiklikten sonra blok başlığında çift SHA256 işlemi (yani SHA256 (SHA256 (Block_Header))) gerçekleştirin ve sonuç değeri hedef değerden daha azdır (önde gelen yeterli sıfır vardır) ve iş yükü kanıtı tamamlanır;

4. Hash fonksiyonu altındaki kurcalamaya karşı korumalı değişiklik, x girişindeki 1 bitlik bir değişikliğin bile her şeyi değiştireceği, dolayısıyla değiştirilemeyeceği anlamına gelir.

Bugünün küçük Bixin sınıfı ilk önce burada, gidecek uzun bir yol var, bir dahaki sefere görüşmek üzere.

-SON-

Yunnan'da neden bu kadar çok etnik azınlık var?
önceki
Güvenilmez insanlar her zaman insandır Otonom sürüşün suçu nedir?
Sonraki
Baojun 360, bir sonraki sıcak model olan 56.8006 MPV'den başlayarak resmen piyasaya sürüldü.
Ortadoğu'da yaşayanların savaş altındaki sefil hayatları, evleri kırıldı ve insanlar bir gecede yoksullaştı.
Ateş yükseliyor! Jingdezhen Seramik Üniversitesi'nin yeni kampüsünün yakınında bir elektrikli araba alevler içinde kaldı. Nedeni ...
Yeni Sagitar'ın fiyatı dalgalandı. Daha uygun maliyetli olan bu iki A + arabayı satın almak daha iyidir ve minimum sadece 70.000
BYD Song, yükseltilmiş konfigürasyona ve değişmeyen fiyata samimiyetle dolu yeni bir Zhilian lüks modeli ekler
Neredeyse her yıl yaşanan iç savaşlarla, bu Ortadoğu ülkesinde neden bu kadar çok çelişki var? Earth Knowledge Bürosu
Changan Auchan A600, 58.900'den başlayarak yeni güç ekleyerek tam LCD göstergeli resmi olarak piyasaya sürüldü
49.900 gibi düşük bir değerle, 5.3L yakıt tüketimi ile hala otomatik bir SUV. Gençler onu ilk otomobil olarak seçiyor
Babalar hiçbir yere gitmiyor! "Where Are You Going Dad" ın yeni sezonu durduruldu çünkü ...
Dünyanın en büyük adasına bir zamanlar beş güç tarafından itiraz edildi, neden şimdi Çin'e dönüyor? Earth Knowledge Bürosu
Bu arabalar, uzay sıçraması ve hatta ünlülerin onayları, ancak çok çirkin göründükleri için üretimin askıya alınmasıyla karşı karşıya.
Sadece 300.000 üstü açılır spor araba pistten çıkabilir, kızları kızdırabilir, netizenler: arabada oturmak odak noktayım
To Top