比特幣的錢包地址是如何生成的
判斷一個人是否真的了解區(qū)塊鏈,可以先問一句:“我轉(zhuǎn) Token 給你,你的錢包地址是什么呢?”這個試金石可以輕松地區(qū)分很多人。在區(qū)塊鏈?zhǔn)澜?,沒有自己的錢包地址就是一個旁觀者。
要創(chuàng)建一個錢包,需要先獲得自己的錢包地址。比如,這就是一個合法的比特幣地址:1EHNa6Q4Jz2uvNExL497mE43ikXhwF6kZm
就像銀行賬戶一樣,有了它,任何人都可以給你轉(zhuǎn)賬。其實,任何人都可以獨立地、不聯(lián)網(wǎng)地生成自己的錢包。這是怎么做到的呢?
公鑰和私鑰
這涉及到一個密碼學(xué)上的一個基本概念:公鑰加密技術(shù)。
公鑰加密技術(shù)中,公鑰和私鑰成對出現(xiàn),公鑰加密的東西可以拿私鑰解開,私鑰加密的東西可以用公鑰解開。兩者的關(guān)系,大家可以想象成一個帶鎖的盒子和一把鑰匙之間的關(guān)系。這個特性用來加密和簽名。
加密的過程,就像是把要寄的信放到盒子里,鎖上并寫上地址,然后寄出去。寄件人和收件人都很放心,因為其他人無法打開盒子。
簽名的過程,類似于對外展示鑰匙的過程。鎖上的盒子只有你可以打開,如果有人拿著你發(fā)的鑰匙打開了盒子,那盒子里的東西一定是你發(fā)的。
你手里面握著私鑰,無論如何都不能泄露;你的錢包地址,是滿世皆知的轉(zhuǎn)換后的公鑰。鑰匙信息可以被公鑰打開,則說明是知道私鑰的人加密的。所以,任何的交易一旦用你的私鑰加密了,收到的人用你的公鑰可以解密,那就認(rèn)為是你授權(quán)的操作。
錢包地址的生成
比特幣世界幾個關(guān)鍵的信息是按照這個順序生成的:先生成私鑰,再由私鑰算出公鑰,再由公鑰經(jīng)過一系列哈希算出錢包地址。
私鑰 → 公鑰 → 錢包地址
上面的推導(dǎo)次序是單向的,反向不可能。也就是說,從錢包地址無法得到公鑰,從公鑰無法得到私鑰。比特幣的公鑰變形出來的錢包地址,可以想象成用戶名,這全世界都可以知道;私鑰可以想象成密碼,這個只有自己知道。
私鑰是一切的開端。私鑰是一個大于零、小于 2 的 256 次方的任意數(shù)字,比如下面這個私鑰:
00000000000000000000000001(也就是數(shù)字 1)
需要注意的是,不是隨機(jī)生成的私鑰,風(fēng)險非常大!
然后,私鑰通過橢圓曲線函數(shù),生成對應(yīng)的公鑰,比如下面這個:
0479BE667EF9DCBBAC55A06295CE870B07029BFCDB2DCE28D959F2815B16F81798483ADA7726A3C4655DA4FBFC0E1108A8FD17B448A68554199C47D08FFB10D4B8
經(jīng)過一系列哈希加密之后,最終形成比特幣地址,比如下面這個:1EHNa6Q4Jz2uvNExL497mE43ikXhwF6kZm
私鑰就像《阿里巴巴和四十大盜》故事里面的“芝麻開門”。世界上任何人只要知道“芝麻開門”這個咒語,就可以在那座大山里面找到那個山洞并且打開大門。一個人是否擁有賬戶,只看他知不知道那個咒語。四十大盜知道咒語后可以取走寶貝,阿里巴巴知道后也可以取走,至于那個山洞里面有沒有金銀財寶,則是另外一件事情了。
看這篇文章的你,在知道了本文舉例中的比特幣私鑰(即數(shù)字 1),這意味著我們對這個地址里面的“錢”都擁有控制權(quán)。
在比特幣的世界,雖然無法知道地址背后的人是誰,但這個地址歷史上所有的交易都是公開的,可以通過區(qū)塊鏈瀏覽器查詢。