区块链基础原理:地址、私钥、keystore等钱包概念详解

以以太坊钱包为例:

在第一次创建钱包时,一般都会让你设置一个密码,设置完成后,会提供给你私钥助记词keystore,以及为你生成你的以太坊钱包地址。

地址:

地址形式是一个以0x开头的42位字符串,当你需要其他人给你转账时,仅需要提供生成的地址即可,无需提供其他任何多余的信息。类比银行卡,地址就是:银行卡号。

地址形如:0xe23f26b23413bcfabb1c72313d33b3d701cffab9

私钥:

因为以太坊内部使用非对称加密算法进行加密,所以会产生一个公钥私钥对,而公钥就是你的钱包地址(使用公钥进行了hash计算后的),而拥有私钥进行加密你的交易,使用公钥解密你的交易,拥有私钥就拥有了你的钱包的所有权。类比银行卡就是拥有了:银行卡+密码。

私钥形如:0x52fd604b1743eb04810735aa0f12038a141a78e8a1d5d2ca0ba397a1a08fc6cd

助记词:

看到上述私钥,任何人都会觉得太过于难记,为了解决这个问题,设计者创造了助记词,使用2000多个常用英文单词里面随机出其中12个单词作为你的私钥的易记模式,其实他的功能和私钥是一模一样的,同样类比银行卡就是拥有了:银行卡+密码。

助记词形如:carry mention ice border merit plug return help spy evoke state keep

keystore:

使用私钥和助记词可以完全控制钱包,而keystore是加密过后的私钥,加密时使用了你在创建钱包时设置的密码,使用该密码可以解密出私钥,进而控制你自己的钱包,但是一旦keystore进行加密后,该keystore的密码就确定了,该keystore无法修改密码。

keystore形如:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
{
"version":3,
"crypto":{
"mac":"bc35b76eae30a304d243689046984a232dffca9613f3ca2fd6aaec6312bc24d8",
"cipherparams":{
"iv":"3d2619834818af3f5dc6acd2c1b144f1"
},
"kdfparams":{
"dklen":32,
"r":8,
"salt":"f844478b0de98bc7412e5ed2a2f13d7165658a334e99a673bf7522a26f90498f",
"p":1,
"n":262144
},
"cipher":"aes-128-ctr",
"ciphertext":"771362f0b2de288e5dceeae6ffd324ea6e1c9b0038186f6573dc3c1555a67f43",
"kdf":"scrypt"
},
"id":"7c5ca435-277e-4d89-ad1b-9f90a0026b46",
"address":"cfb85049eb28efeccf276e6e9a6e753fc0cc97b3"
}

如何修改密码?

只要拥有助记词或者私钥,我们在导入钱包的时候,即可重新设置密码,而此时我们可以重新导出新的keystore,该keystore就是使用新密码加密的私钥。

重要的事情说三遍:

一定要备份好你的私钥和助记词。
一定要备份好你的私钥和助记词。
一定要备份好你的私钥和助记词。