當前位置︰首頁 ? 區塊鏈 ? 正文

引言

目前市面上講授區塊鏈技術大多比較膚淺,夾雜著很多商業的元素,很難一下子觸及技術核心技術,前兩天有朋友在群里問,索性決定把 Andreas M. Antonopoulos的經典之作翻譯一下,英文名︰《Mastering Bitcoin-Unlocking Digital Cryptocurrencies》,中文名《精通比特幣》,翻譯完第一節的時候才發現網上已經有了翻譯版本。

下面的時間里將和大家一起探索比特幣技術,以後將嘗試推出一系列的文章去探究比特幣和區塊鏈的技術本質,今天的主要內容包括︰比特幣地址,比特幣密鑰使用,比特幣錢包,以及這三者存在怎樣的關系。


密鑰

私鑰

A private key in the context of Bitcoin is a secret number that allows bitcoins to be spent. Every Bitcoin wallet contains one or more private keys, which are saved in the wallet file. The private keys are mathematically related to all Bitcoin addresses generated for the wallet. -wiki

私鑰就是一個隨機選出的數字而已。一個比特幣地址中的所有資金的控制取決于相應私鑰的所有權和控制權。在比特幣交易中,私鑰用于生成支付比特幣所必需的簽名以證明資金的所有權。私鑰必須始終保持機密,因為一旦被泄露給第三方,相當于該私鑰保護之下的比特幣也拱手相讓了。私鑰還必須進行備份,以防意外丟失,因為私鑰一旦丟失就難以復原,其所保護的比特幣也將永遠丟失。

比特幣私鑰只是一個數字。你可以用硬幣、鉛筆和紙來隨機生成你的私鑰︰擲硬幣256次,用紙和筆記錄正反面並轉換為0和1,隨機得到的256位二進制數字可作為比特幣錢包的私鑰。該私鑰可進一步生成公鑰。

生成密鑰的第一步也是最重要的一步,是要找到足夠安全的熵源,即隨機性來源。生成一個比特幣私鑰在本質上與“在1到2256之間選一個數字”無異。只要選取的結果是不可預測或不可重復的,那麼選取數字的具體方法並不重要。比特幣軟件使用操作系統底層的隨機數生成器來產生256位的熵(隨機性)。通常情況下,操作系統隨機數生成器由人工的隨機源進行初始化,也可能需要通過幾秒鐘內不停晃動鼠標等方式進行初始化。對于真正的偏執狂,可以使用擲骰子的方法,並用鉛筆和紙記錄。

? 比特幣私鑰空間的大小是22562256,這是一個非常大的數字。用十進制表示的話,大約是10771077,而可見宇宙被估計只含有1080個原子。
? 把私鑰以Base58校驗和編碼格式顯示,這種私鑰格式被稱為錢包導入格式(WIF,Wallet Import Format)。

公鑰

非對稱密鑰往往有一對密碼組成,一個是私鑰,另一個是公鑰,公鑰就像銀行的帳號,而私鑰就像控制賬戶的PIN碼或支票的簽名。比特幣的用戶很少會直接看到數字密鑰。一般情況下,它們被存儲在錢包文件內,由比特幣錢包軟件進行管理。

其中公鑰是有私鑰生成,根據選擇的算法(RSA,DSA,EIGamal等)不同,生成的方式也不同。比特幣采用是的橢圓曲線算法。通過橢圓曲線算法可以從私鑰計算得到公鑰,這是不可逆轉的過程︰K = k * G 。其中k是私鑰,G是被稱為生成點的常數點,而K是所得公鑰。其反向運算,被稱為“離散對數分解”——已知公鑰K來求出私鑰k——是非常困難的,就像去試驗所有可能的k值,即暴力破解。為了更好的理解私鑰和公鑰的對應關系

橢圓曲線加密法是一種基于離散對數問題的非對稱(或公鑰)加密法,可以用對橢圓曲線上的點進行加法或乘法運算來表達。

下面我們舉出一個例子,如下就是我們高中最常見的橢圓曲線

假設我們設p=17,就是說在x = 17, y= 17 的範圍內找出所有符合上面公式的值。當然了這些值一會落在曲線上面。

比特幣的地址,密鑰,錢包之間的關系

上面的這些點其實就是構成了一個群GROUP,群一定的特征,這里就不深究了,但是提一點,在群中也具有一定運算,也具有加法乘法等,但是和我們平時認知的加減乘除有所區別。

關于此部分是知識,如果讀者有濃厚的興趣可以私信我,因為太過學術,所以點到為止。

下面舉一個乘法的例子,下面整數點的乘法,我們的目標是找到生成點G的倍數kG。也就是將G相加k次。在橢圓曲線中,點的相加等同于從該點畫切線找到與曲線相交的另一點,然後映射到x軸。

比特幣的地址,密鑰,錢包之間的關系

相關閱讀︰

Sharding(分片)技術的前世今生

偽隨機數生成器

虛擬資產如何估值?

上一篇︰EOS新手必備的賬戶知識
下一篇︰比較流行的幾種區塊鏈共識算法

猜你喜歡


二維碼