Share this article

Ipinaliwanag ang Mga Pag-andar ng Bitcoin Hash

Lahat ng gusto mong malaman tungkol sa Bitcoin hashing, ngunit natatakot kang magtanong.

Ang sinumang may interes sa Bitcoin ay narinig ang pariralang 'cryptographic hash function' sa ilang panahon o iba pa. Ngunit ano nga ba ang ibig sabihin nito, at paano ito konektado sa Cryptocurrency?

Ang mga hash function ay isang mahalagang bahagi ng, hindi lamang ng Bitcoin protocol, ngunit ng seguridad ng impormasyon sa kabuuan.

Story continues
Don't miss another story.Subscribe to the Crypto for Advisors Newsletter today. See all newsletters

Sa susunod na artikulo, titingnan natin ang ilang simpleng halimbawa kung paano gumagana ang mga ito, na may simpleng pagpapakita din.

Ano ang hash function?

Sa abstract, ang hash function ay isang mathematical na proseso na kumukuha ng input data ng anumang laki, nagsasagawa ng operasyon dito, at nagbabalik ng output data ng isang nakapirming laki.

Sa isang mas konkretong halimbawa, ito ay maaaring gamitin upang kumuha ng pagkakasunod-sunod ng mga titik ng anuman haba bilang input – ang tinatawag nating a string – at ibalik ang pagkakasunod-sunod ng mga titik ng a naayos haba. Kahit na ang input string ay isang letra, isang salita, isang pangungusap, o isang buong nobela, ang output – tinatawag na digest - ay palaging magiging parehong haba.

Ang karaniwang paggamit ng ganitong uri ng hash function ay ang pag-imbak ng mga password.

Kapag gumawa ka ng user account gamit ang anumang serbisyo sa web na nangangailangan ng password, pinapatakbo ang password sa pamamagitan ng hash function, at iniimbak ang hash digest ng mensahe. Kapag nag-type ka ng iyong password upang mag-log in, ang parehong hash function ay tumatakbo sa salitang iyong inilagay, at ang server ay nagsusuri kung ang resulta ay tumutugma sa nakaimbak na digest.

Nangangahulugan ito na kung maa-access ng isang hacker ang database na naglalaman ng mga nakaimbak na hash, hindi nila agad makokompromiso ang lahat ng user account dahil walang madaling paraan upang mahanap ang password na gumawa ng anumang partikular na hash.

Mga simpleng hash function sa Python

Maaari kang mag-eksperimento sa mga hash value gamit ang Python, isang programming language na naka-install sa Mac at Linux operating system bilang default. (Ipapalagay ng tutorial na ito na gumagamit ka ng ilang bersyon ng alinman sa OS X o Linux, gaya ng paggamit ng Python sa Windows ay mas kumplikado.)

Una, buksan ang isang terminal, i-type sawa at pindutin ang ENTER.

Ilalagay ka nito sa Python REPL, isang kapaligiran kung saan maaari mong subukan ang mga utos ng Python nang direkta kumpara sa pagsusulat ng isang programa sa isang hiwalay na file.

Pagkatapos, i-type ang sumusunod, pagpindot sa ENTER pagkatapos ng bawat linya, at TAB kung saan minarkahan:

import hashlibdef hash(mystring):[TAB] hash_object = hashlib.md5(mystring.encode())[TAB] print(hash_object.hexdigest())[ENTER]

Nakagawa ka na ngayon ng isang function, hash(), na magkalkula at magpi-print ng hash value para sa isang naibigay na string gamit ang MD5 hashing algorithm. Upang patakbuhin ito, maglagay ng string sa pagitan ng mga panaklong sa mga panipi, hal:

hash("CoinDesk rocks")

At pindutin ang ENTER para makita ang hash digest ng string na iyon.

Makikita mo na ang pagtawag sa hash function sa parehong string ay palaging bubuo ng parehong hash, ngunit ang pagdaragdag o pagbabago ng ONE character ay bubuo ng isang ganap na naiibang halaga ng hash:

hash("CoinDesk rocks") => 7ae26e64679abd1e66cfe1e9b93a9e85hash("CoinDesk rocks!") => 6b1f6fde5ae60b2fe1bfe50677434c88

Mga function ng hash sa Bitcoin

Sa Bitcoin protocol, ang hash function ay bahagi ng harangan ang algorithm ng hashing na ginagamit upang magsulat ng mga bagong transaksyon sa blockchain sa pamamagitan ng proseso ng pagmimina.

Sa pagmimina ng Bitcoin , ang mga input para sa function ay ang lahat ng pinakabago, hindi pa nakumpirma na mga transaksyon (kasama ang ilang karagdagang input na nauugnay sa timestamp at isang reference sa nakaraang block).

Sa halimbawa ng code sa itaas, nakita na natin na ang pagbabago ng isang maliit na bahagi ng input para sa isang hash function ay nagreresulta sa isang ganap na naiibang output. Ang pag-aari na ito ay mahalaga sa algorithm ng 'patunay ng trabaho' na kasangkot sa pagmimina: upang matagumpay na 'malutas' ang isang bloke, sinusubukan ng mga minero na pagsamahin ang lahat ng mga input sa kanilang sarili arbitrary na piraso ng input data sa paraang ang resultang hash ay nagsisimula sa isang tiyak na bilang ng mga zero.

Bilang pangunahing demonstrasyon, maaari naming subukan ang 'pagmimina' gamit ang aming Python hash function sa pamamagitan ng manu-manong pagdaragdag ng mga tandang padamdam pagkatapos ng "CoinDesk rocks!" hanggang sa makakita kami ng hash na nagsisimula sa iisang zero.

>>> hash("CoinDesk rocks!!")66925f1da83c54354da73d81e013974d>>> hash("CoinDesk rocks!!!")c8de96b4cf781a6373766c668ceac0f0>>> hash("CoinDesk rocks!!!!")9ea367cea6a2cc4a6f5a1d9a334d0d9e>>> hash("CoinDesk rocks!!!!!")b8d43387d98f035e2f0ac49740a5af38>>> hash("CoinDesk rocks!!!!!!")0fe46518541f4739613b9ce29ecea6b6 => SOLVED!

Siyempre, paglutas ng hash para sa isang bloke ng Bitcoin – na sa panahon ng pagsulat dapat magsimula sa 18 zero - nangangailangan ng isang lubhang malaking halaga ng computation (at kaya ang pinagsamang kapangyarihan sa pagproseso ng lahat ng mga computer sa network ay tumatagal pa rin ng humigit-kumulang 10 minuto upang malutas ang isang bloke).

Ito ay ang pangangailangan para sa malaking halaga ng kapangyarihan sa pagpoproseso na nangangahulugan na ang mga bagong bitcoin ay nakuha sa loob ng mahabang panahon, hindi lahat nang sabay-sabay.

Upang kumita ng mga bitcoin sa pamamagitan ng pagmimina, kailangan mong maglagay ng malaking halaga ng trabaho na kinakailangan upang malutas ang isang bloke – at sa pamamagitan ng pagkamit ng gantimpala na iyon, nai-lock mo ang lahat ng mga bagong transaksyon sa isang bloke, na idinagdag sa permanenteng tala ng lahat ng nakaraang transaksyon: ang blockchain.

Anumang mga pangunahing kaalaman sa Crypto na gusto mong ipaliwanag sa susunod? Email: editors@ CoinDesk.com.

Bitcoin sa larawan ng keyboard sa pamamagitan ng Shutterstock

Corin Faife

Si Corin Faife ay isang kontribyutor ng CoinDesk at sumaklaw sa panlipunan at pampulitika na epekto ng mga umuusbong na teknolohiya para sa VICE, Motherboard at Independent. Si Corin ay hindi isang mamumuhunan sa anumang mga digital na pera o mga proyekto ng blockchain (Tingnan ang: Policy sa Editoryal). Social Media Corin: corintxt

Picture of CoinDesk author Corin Faife