• 钱包的基础概念


     

    交易所陆续关闭,大家都需要把币提到钱包。国内最好的以太系钱包—imToken,在使用imToken钱包时,地址、密码、私钥、助记词、keystore这五个名词总是弄混,今天就以银行账户为类比的方式让大家区分。

    地址 = 银行卡号

    密码 = 银行卡密码

    私钥 = 银行卡号+银行卡密码

    助记词 = 银行卡号+银行卡密码

    Keystore + 密码 = 银行卡号 + 银行卡密码

    Keystore ≠ 银行卡号

    钱包

    钱包是密钥的管理工具, 他只包含密钥而不是确切的某一个代币。钱包中包含成对的私钥和公钥。用户用私钥来签名交易, 从而证明该用户拥有交易的输出权。而输出的交易信息则存储在区块链中。

    用户在使用 imToken 时, 你的 Keystore, 助记词, 明文私钥, 都是钱包, Keystore 是你加了"锁"的钱包, 而助记词和明文私钥是完全暴露在外的钱包, 没有任何安全性可言, 所以在使用助记词和明文私钥时, 一定要注意保密。

    钱包地址

    地址由公钥 (公钥是私钥通过非对称加密算法生成) 生成, 以 0x 开头的 42 位 16 进制哈希值字符串。例如: 0xc2d5ef1b5e6234c6bcbce87bb05d579c8e9d5720
    如果将钱包比作银行卡, 那么钱包地址就是银行卡号。

    助记词

    助记词是明文私钥的另一种表现形式, 最早是由 BIP39 (BIP 39 生成助记词的过程非常重要, 大家肯定关心 BIP39 的安全性,如果一个 HD 钱包助记词是 12 个单词,一共有 2048 个单词可能性,如何算出随机的生成的助记词可能性是一个排列问题,根据公式: n!/( n - r )! ,既 2048!/(2048-12)! = 5.2715379713014884760003093175282e+39
    我们可以举个类比,地球上的沙子数量在大约是1 后面 18 个零。如果你可以每秒生成 一百万个助记词,那么一年可以生成  1000000*60*60*24*365=3.1536e+13,大约需要  1.6715937e+26 年遍历所有助记词,这是多少年呢?)提案提出, 其目的是为了帮助用户记忆复杂的私钥 (64位的哈希值)。助记词一般由12、15、18、21个单词构成, 这些单词都取自一个固定词库, 其生成顺序也是按照一定算法而来, 所以用户没必要担心随便输入 12 个单词就会生成一个地址。虽然助记词和 Keystore 都可以作为私钥的另一种表现形式, 但与 Keystore 不同的是, 助记词是未经加密的私钥, 没有任何安全性可言, 任何人得到了你的助记词, 可以不费吹灰之力的夺走你的资产。所以在用户在备份助记词之后, 一定要注意三点:
     
    1. 尽可能采用物理介质备份, 例如用笔抄在纸上, 尽可能不要采用截屏或者拍照之后放在联网的设备里, 以防被黑客窃取;
    2. 多次验证备份的助记词是否正确, 一旦抄错一两个单词, 那么将对后续找回正确的助记词带来巨大的困难; 
    3. 将备份后的助记词妥善保管, 做好防盗防丢措施。
     
    PS: 用户可以使用备份的助记词, 重新导入 imToken , 用新的密码生成一个新的 Keystore, 用这种方法来修改钱包密码。

    Keystore

    Keystore 文件是以太坊钱包存储私钥的一种文件格式 (JSON)。它使用用户自定义密码加密,以起到一定程度上的保护作用, 而保护的程度取决于用户加密该钱包的密码强度, 如果类似于 123456 这样的密码, 是极为不安全的。 在使用 Keystore 时有两点需要注意: 1. 使用不常用, 并且尽可能复杂的密码加密 Keystore 文件; 2. 一定要记住加密 Keystore 的密码, 一旦忘记密码, 那么你就失去了 Keystore 的使用权, 并且imToken 无法帮你找回密码, 所以一定要妥善保管好 Keystore 以及密码。

    下面是 keystore 的样式:
     
    {"version":3,"id":"b7467fcb-3c8b-41be-bccf-73d43a08c1b7","address":"540f18196da5a533fa36577a81de55f0a2f4e751","Crypto":{"ciphertext":"78ed11b8b6bf29b00f52b42b8542df0e4a6ac078e626af7edcf885c3b68154a4","cipherparams":{"iv":"4516579601d96695fe30ace985a9066f"},"cipher":"aes-128-ctr","kdf":"scrypt","kdfparams":{"dklen":32,"salt":"6276cfda7d40872352c801db5871e5a3368a8d0994cea39ed936760db78d1cdc","n":1024,"r":8,"p":1},"mac":"d889a5dc609c3f312a41394cc47640676d2612501a6f8c837ed55598158336db"}}

    PS: Keystore 的密码是唯一、不可更改的, 如果想更改钱包密码需要使用助记词或明文私钥重新导入钱包, 并使用新密码加密, 生成新的 Keystore。
     

    明文私钥

    我们常说, 你对钱包中资金的控制取决于相应私钥的所有权和控制权。在区块链交易中, 私钥用于生成支付货币所必须的签名, 以证明资金的所有权。私钥必须始终保持机密, 因为一旦泄露给第三方, 相当于该私钥保护下的资产也拱手相让了。它不同于Keystore, Keystore 是加密过后的私钥文件, 只要密码强度足够强, 即使黑客得到 Keystore, 破解难度也足够大。
     
    私钥实际上并不是存储在网络中, 而是由用户生成并存储在一个文件或者简单的数据库中, 称为钱包。存储在用户钱包中的私钥完全独立, 可由用户的钱包软件生成并管理, 无需区块链或者网络连接。用户的钱包地址就是由私钥通过椭圆曲线加密生成公钥, 进而生成以0x开头的42位地址。 私钥的样式为 64 位 16 进制的哈希值字符串, 例如: 56f759ece75f0ab1b783893cbe390288978d4d4ff24dd233245b4285fcc31cf6 
     
    PS: 用户可以使用明文私钥导入 imToken , 用新的密码生成一个新的 Keystore (记得要将旧的 Keystore 删除), 用这种方法来修改钱包密码。 

    去中心化

    在一个分布有众多节点的系统中,每个节点都具有高度自治的特征。节点之间彼此可以自由连接,形成新的连接单元。任何一个节点都可能成为阶段性的中心,但不具备强制性的中心控制功能, 没有单一方控制数据或信息。节点与节点之间的影响,会通过网络而形成非线性因果关系。这种开放式、扁平化、平等性的系统现象或结构,我们称之为去中心化。区块链上的每一方都可以访问整个数据库及其完整的历史记录。 直接验证其交易合作伙伴的记录,而无需中间人。
     
    例如用户在使用 imToken 进行 P2P 交易时, imToken 并不会充当第三方担保的角色, 一切行为都是用户自主发起, 就像私钥、助记词和 Keystore 这些钱包信息, 都是本地保存在用户的手机里, 并没有保存在 imToken 的数据库中, 所以用户要做好安全措施, 一旦丢失, imToken 无法帮你找回资产。
     
    深入浅出区块链: https://learnblockchain.cn
     
     
     
    用最好的情绪做最好的自我。开心是一天,不开心也是一天,不如天天开心。活在当下,生活就为你歌唱。
  • 相关阅读:
    Codeforces Round #610 (Div. 2)C(贪心,思维)
    Educational Codeforces Round 80 (Rated for Div. 2)C(DP)
    BZOJ2190 仪仗队
    BZOJ3613 南园满地堆轻絮
    BZOJ1084 最大子矩阵
    BZOJ1036 树的统计Count
    BZOJ1452 Count
    BZOJ2242 计算器
    BZOJ2705 Longge的问题
    BZOJ1509 逃学的小孩
  • 原文地址:https://www.cnblogs.com/lukunlun/p/8358791.html
Copyright © 2020-2023  润新知