Hash – Teka-teki Bitcoin


Dalam jawatan terdahulu, kami telah menjelaskan idea-idea di sebalik sistem Bitcoin, namun, satu isu masih tidak dapat dijelaskan: Apakah teka-teki keras berdarah ini bahawa penambang Bitcoin sentiasa berusaha menyelesaikannya?

Ingatlah bahawa dalam sistem Bitcoin pelombong berada dalam persaingan yang berterusan: Siapa pun yang menyelesaikan teka-teki terlebih dahulu akan mendapat kehormatan untuk menambah blok baru ke rantaian blok dan membuat sedikit wang juga. Oleh itu, para pelombong cuba untuk menjadi yang pertama untuk menyelesaikan teka-teki. Dalam seksyen yang berikut, kami akan menangani soalan-soalan berikut:

  • Apa sebenarnya teka-teki ini?
  • Bagaimana ia disepadukan dalam sistem Bitcoin?

Puzzle - Teka-teki Hash Kriptografi

Jangan ketinggalan kata 'kriptografi', dalam konteks kita ia hanya bermaksud bahawa teka-teki 'hash' berkaitan dengan dunia kriptografi, iaitu membangun sistem yang tidak dapat dipecahkan.

Mungkin analogi dunia sebenar yang terbaik untuk teka-teki hash adalah sidik jari.

Cap jari di latar belakang biru

Bayangkan anda diberikan sampel cap jari dan anda diminta untuk menemui ketinggian, berat badan dan melihat keseluruhan orang yang mempunyai cap jari ini. Apa yang anda akan lakukan?

Untuk menjadikannya lebih sukar, anggap bahawa tiada korelasi di antara cap jari dan ciri-ciri manusia yang lain (seperti warna rambut) jadi satu-satunya cara untuk menguji jika cap jari ini datang dari sahabat anda adalah untuk mengambil cap jari dan bandingkan dengan yang lain.

Pilihan terbaik anda, kemudian, akan mengambil cap jari dari setiap orang di Bumi dan kemudian membandingkannya dengan cap jari yang dipersoalkan, sehingga anda mencari perlawanan dan berhenti. Sekiranya anda tidak bernasib baik, orang yang betul akan menjadi yang terakhir yang anda periksa, yang bermaksud bahawa anda akan terus mencari dia untuk 13,555 tahun akan datang, dengan menganggap anda memeriksa satu orang seminit (dan penduduk Bumi adalah kira-kira 7.125 bilion orang). Jika anda bernasib baik, bagaimanapun, anda dijangka mencari orang itu hanya separuh daripada masa itu, hooray! Berita buruk ah?

Mari kita kembali ke teka-teki hash kami. Dalam teka-teki hash, cap jari yang diberikan kepada anda adalah senarai watak-watak (mari kita panggil perkataan), seperti "anjing", selepas itu tugas anda adalah untuk mencari orang yang betul (dalam kes kita ini juga perkataan) yang menghasilkan cap jari. Untuk tujuan ini, satu-satunya perkara yang boleh anda lakukan ialah mencuba semua kemungkinan kombinasi digit (beberapa panjang), satu demi satu.

crypto

(Sumber imej: https://blog.varonis.com/the-definitive-guide-to-cryptographic-hash-functions-part-1/)

Secara konseptual, anda mempunyai mesin yang setiap kali anda meletakkan beberapa digit di dalamnya, ia menghasilkan output beberapa kombinasi digit lain. Anda tahu apa-apa tentang mesin ini dan ia berfungsi seperti sihir - anda tidak melihat apa-apa hubungan antara watak-watak yang anda masukkan dan watak-watak yang dihasilkannya. Satu-satunya peraturan yang telah anda perhatikan adalah tidak kira berapa banyak aksara yang anda masukkan ke dalam mesin, output yang dihasilkan selalu mempunyai panjang yang sama.

Satu teknikal yang sedikit: aksara yang digunakan oleh mesin (kedua-dua input dan keluarannya) hanya dibuat oleh sepuluh digit 0-9 dan enam huruf a-f. Ini bermakna setiap karakter input atau output boleh menjadi satu daripada 16 aksara.

Teka-teki itu pada dasarnya adalah perkataan (senarai watak), memanggilnya A, yang mewakili output mesin, untuk menyelesaikan tugas anda adalah untuk mencari input yang betul (kata lain), panggil iti B, sehingga apabila anda meletakkan B ke dalam mesin anda akan mendapat A sebagai output.

Bermula dengan kes yang mudah, anggap bahawa mesin menghasilkan output satu aksara. Ini bermakna terdapat hanya 16 output yang mungkin berbeza. Sebagai contoh, anggap anda mendapat watak 'd' (sebagai teka-teki) dan mesin berfungsi sedemikian rupa sehingga setiap watak yang dimasukkan membawa kepada watak keluaran yang berbeza. Oleh itu, jika anda mencuba semua aksara yang mungkin 0-9 dan a-f, anda akan mendapati perlawanan, iaitu watak yang apabila dimasukkan ke dalam mesin menghasilkan watak 'd' sebagai keluaran. Terutama sekurang-kurangnya 16 perbandingan diperlukan untuk menjadi benar-benar pasti bahawa perlawanan akan ditemui.

Komplikasi ini sedikit lebih jauh, pertimbangkan kasus di mana mesin menghasilkan output 2 karakter dan bukannya satu sama seperti pada contoh terdahulu. Ini bermakna terdapat 16X16 = 256 output yang mungkin berbeza. Oleh itu, apabila diberi teka-teki, contohnya '4c', maka anda perlu mencuba semua input yang mungkin sebanyak 2 aksara (iaitu '00', '01' ... 'fd', 'fe', 'ff') untuk menjamin kejayaan.

Perhatikan bahawa meningkatkan panjang output mesin dengan satu aksara meningkatkan jumlah percubaan yang anda perlukan untuk membuat satu magnitud (dalam contoh kami dengan faktor 16!). Oleh itu, output satu aksara membawa kepada 16 percubaan, output 2 aksara membawa kepada 256 percubaan, output 3 aksara membawa kepada 4096 percubaan, dan sebagainya.

Jadi, 'apa masalah besar?' Seseorang mungkin bertanya. Komputer begitu cepat hari ini, anda boleh membina perisian yang akan menghitung semua ujian untuk anda dalam beberapa saat!

Nah, anda mungkin dapati bahawa bilangan percubaan semakin meningkat eksponen cara! Ini bermakna bahawa untuk output aksara x anda perlu membuat x16trials! Untuk output 40 aksara anda perlu membuat 1461501637330902918203684832716283019655932542976 ujian! Nombor ini sangat tidak ada komputer moden yang boleh membuat jumlah ujian ini walaupun ia berfungsi secara berterusan sehingga runtuhnya sistem suria.

Jika anda masih tidak yakin bahawa teka-teki hash adalah yang sukar, anda mungkin ingin mencubanya dan mencari penyelesaian kepada teka-teki berikut: Cari senarai watak yang apabila anda memasukkannya melalui mesin SHA1 anda mendapat output dari semua sifar aksara (iaitu '000000 ...'). Mesin ini boleh didapati di sha1-online.com. Nasib baik ��

Sambungan ke Bitcoin

Ingatlah (dari jawatan terdahulu) bahawa dalam setiap masa yang singkat (biasanya 10 minit) satu 'blok' dilampirkan ke 'rantaian blok' oleh satu 'pelombong' (pemenang pusingan). Penambang itu, yang memasukkan blok itu, adalah yang pertama yang mencari penyelesaian untuk teka-teki hash. Untuk memahami teka-teki ini, kita perlu tahu bagaimana blok kelihatan seperti. Butiran terperinci.

Secara ringkas, satu blok dalam rantaian blok adalah beberapa struktur data yang mengandungi:

  1. A nonce, ini adalah nukleus penyelesaian, bahagian blok yang memberi hak kepada penambang yuran transaksi.
  2. Rujukan kepada blok sebelumnya - ini diperlukan untuk dapat mengesan sejarah semua urus niaga, setiap blok merujuk pendahulunya, dengan cara ini seseorang boleh kembali dalam sejarah sehingga blok pertama (Anda boleh menjejaki sejarah urus niaga di blockchain .info)
  3. Senarai semua transaksi yang akan diproses jika blok ini dilampirkan ke rantaian blok.

Dalam gambar di bawah, anda dapat melihat ketiga-tiga sifat ini: nonce (dalam barisan terakhir yang terakhir), rujukan ('hash blok sebelumnya'), dan senarai urus niaga dalam baris yang berwarna-warni (yang disorot sebelah kanan gambar itu dijelaskan tidak lama lagi).

block-diagram-ghash

(sumber gambar: http://www.righto.com/2014/09/mining-bitcoin-with-pencil-and-paper.html)

Seperti yang dinyatakan, pelombong sedang mencari yang tidak betul yang akan menyelesaikan teka-teki. Teka-teki hash yang diterangkan dalam soalan sebelumnya adalah a khusus Senarai aksara yang dihasilkan oleh mesin sebagai output, untuk menyelesaikannya perlu mencari masukan yang menghasilkan ini khusus pengeluaran.

Walau bagaimanapun, dalam sistem bitcoin, teka-teki hash agak mudah: Daripada mengejar output tertentu, pelombong perlu mencari input yang menghasilkan output daripada set output yang dibenarkan. Iaitu, teka-teki boleh menjadi senarai watak-watak sedemikian rupa sehingga 16 watak pertama adalah '0' manakala tiada batasan pada watak-watak lain, mereka boleh menjadi apa-apa. Walaupun ini menjadikan teka-teki jauh lebih mudah, ia adalah masalah masa dan tenaga yang digunakan untuk menyelesaikannya. Dalam gambar di atas, pelombong melakukan banyak ujian untuk menyelesaikan teka-teki, satu-satunya medan yang dibenarkan untuk diubah dalam setiap percubaan adalah nonce. Dalam setiap percubaan, pelombong menggabungkan nota yang hanya dipilihnya, senarai urus niaga yang ingin ditambahkan ke rantaian blok dan merujuk kepada blok sebelumnya bersama-sama, kemudian memasukkannya ke mesin SHA1. Jika output mesin SHA1 bermula dengan aksara 16 '0' maka ia menyelesaikan teka-teki dan memenangi permainan.

Semoga anda suka membaca, lihat anda dalam jawatan seterusnya!

Brayan Jackson
Brayan Jackson Administrator
Sorry! The Author has not filled his profile.
follow me