什么是數(shù)字貨幣錢(qián)包
從廣義的角度講,錢(qián)包就是一個(gè)應(yīng)用程序,可以用來(lái)保存、接受、發(fā)送數(shù)字貨幣??梢杂脕?lái)簽署交易。
從狹義的角度講,錢(qián)包就是一個(gè)用于存儲(chǔ)和管理用戶密鑰的系統(tǒng)。
錢(qián)包可以存儲(chǔ)用戶的私鑰,而真正控制數(shù)字貨幣的卻是用戶私鑰。
私鑰的保存形式
私鑰
通常我們見(jiàn)到的私鑰是一個(gè)64位的16進(jìn)制數(shù)據(jù)
例如:0x1fe8b535adbc2640b03e7310e1ff94316b6a4c9a8c9294a872526f01893180d1
這是一個(gè)256位的二進(jìn)制數(shù)據(jù)。
keystore
keystore是私鑰的一種加密形式。簡(jiǎn)單點(diǎn)兒說(shuō)就是? keystore =私鑰 + 密碼。
以太坊的keystor的格式如下:
{
? ? "address": "734c590690b99e0deee3787cad1b1a0958be89d2",
? ? "crypto": {
? ? ? ? "cipher": "aes-128-ctr",
? ? ? ? "ciphertext": "b32cd4f8e5da640d73932d56c75a4efd6696cfafdbfb262bc94e8e01fda6ad87",
? ? ? ? "cipherparams": {
? ? ? ? ? ? "iv": "0b9cd5b3ad049b7200d9feb041f2aa78"
? ? ? ? },
? ? ? ? "kdf": "scrypt",
? ? ? ? "kdfparams": {
? ? ? ? ? ? "dklen": 32,
? ? ? ? ? ? "n": 262144,
? ? ? ? ? ? "p": 1,
? ? ? ? ? ? "r": 8,
? ? ? ? ? ? "salt": "b23ba81017d3062f3a6fe66c96f81bcd1af8291f5909d3f27cf431f80a8c73b5"
? ? ? ? },
? ? ? ? "mac": "c17395e8c7566054f904013763d9cdc57cbd5dd3c4705800b6bb1b9da6236198"
? ? },
? ? "id": "58701b58-a564-4dea-87fd-a3de6b6f5dfa",
? ? "version": 3
}
助記詞
助記詞是私鑰的一種便記形式,通過(guò)12個(gè)助記詞按照一定的算法,便可以還原出私鑰。簡(jiǎn)單說(shuō)就是:
助記詞=私鑰。
助記詞格式如下:
wolf juice proud gown wool unfair wall cliff insect more detail hub
錢(qián)包分類(lèi)
非確定性錢(qián)包
通過(guò)隨機(jī)算法生成的一個(gè)隨機(jī)秘鑰。秘鑰丟失將無(wú)法找回,與秘鑰綁定的資產(chǎn)也將無(wú)法支配。所以,非確定性秘鑰必須備份。備份也建議采用如上keystore的形式進(jìn)行保存。keystore比起直接保存私鑰會(huì)更安全(前提是必須記住密碼)。
確定性錢(qián)包(HD錢(qián)包)
確定性錢(qián)包就是通過(guò)一個(gè)seed(主私鑰)派生出一系列私鑰。我們只需要備份主私鑰,其它私鑰均可以通過(guò)主私鑰進(jìn)行恢復(fù)。
私鑰生成如圖所示:

通過(guò)圖示很容易發(fā)現(xiàn),私鑰派生的時(shí)候有層級(jí)關(guān)系。對(duì)于這個(gè)層級(jí)關(guān)系我們引入一個(gè)概念“HD衍生路徑”。
比如:m/44’/0’/0? 表示,通過(guò)seed生成的Master Key 然后生成第一級(jí)取第45個(gè)私鑰生成第二級(jí)取第1個(gè)私鑰生成第三級(jí)取第1個(gè)私鑰,最后的到的私鑰就是這個(gè)路徑對(duì)應(yīng)的私鑰(注意index 從 0 開(kāi)始)。
seed(主私鑰)也可以轉(zhuǎn)換成助記詞進(jìn)行更方便記憶。
錢(qián)包中私鑰與公鑰關(guān)系
每個(gè)私鑰通過(guò)橢圓加密算法均可以得到一個(gè)私鑰。私鑰可以生成公鑰,但是公鑰不能反推出私鑰。通過(guò)私鑰加密的數(shù)據(jù)公鑰可以解開(kāi)。通過(guò)公鑰加密的數(shù)據(jù)也只能私鑰才能解開(kāi)。
所有的數(shù)字貨幣均與公鑰綁定。我們可以通過(guò)私鑰簽名的方式去交易數(shù)字貨幣(簽名后對(duì)應(yīng)公鑰能解開(kāi)則可以證明其身份)。
在HD錢(qián)包中,主私鑰對(duì)應(yīng)一個(gè)主公鑰。派生出來(lái)的私鑰均有對(duì)應(yīng)的公鑰。
以太坊賬戶
外部賬戶
就是以上生成一個(gè)公私鑰對(duì)。公鑰綁定數(shù)據(jù),私鑰通過(guò)簽名的方式去操作數(shù)據(jù)。
合約賬戶
發(fā)布智能合約,也會(huì)生成一個(gè)256位的數(shù)字地址。這個(gè)地址類(lèi)似于外部賬戶的公鑰。但是合約賬戶沒(méi)有對(duì)應(yīng)的私鑰。操作合約賬戶的方式,只能通過(guò)合約代碼本身(代碼缺陷很可能導(dǎo)致合約賬戶中的資產(chǎn)丟失)。