当前位置:主页 > 行业资讯 > 区块链开发 >
区块链钱包开发:区块链钱包的基本知识点有哪些?
发布日期:2020-10-12 阅读次数: 字体大小:

要学会使用区块链钱包,一定要掌握以下五个相关名词定义,即公钥、私钥、助记词、Keystore、密码。
    公钥
 
    公钥=账号=转账地址,相当于你的银行卡号,公钥是可以对外随意公开的,没有任何风险,就像别人知道了你的银行卡号一样,除了给你转账啥也干不了。
 
    私钥
 
    私钥=身份认证,相当于你的银行卡号+密码。私钥是由数字和大小写字母组成,不同区块链的私钥⻓度一般不一样。通过私钥可以推导出公钥。需要注意的是,一旦你的私钥丢失或遗忘,将无法再找回,所以一定要妥善保管好。
 
    助记词
 
    由于私钥不方便记忆,因此出现了助记词,助记词只是私钥的另一种展现形式。一般由12或24个英文单词组成,为了方便国内用户,也有提供汉字版本助记词。只要你记住这些单词,按照顺序在钱包中输入,就能恢复钱包并且进行任意操作。如果别人拿到了你的助记词,就相当于拿到了你的私钥,就可以对你的资产进行掌控了。
 
    Keystore
 
    Keystore=卡号,Keystore的本质是加密后的私钥,Keystore必须配合你的钱包密码来使用才有效。Keystore、私钥、助记词是所有钱包通用的,钱包服务商可能会因为产品设计原因,仅为用户提供其中一种或多种方式,但是如果存在同一方式在某钱包无法正常恢复,则该钱包可能存在一定的问题。
 
    密码
 
    为了进一步增强安全性,大部分钱包会采取密码的方式对私钥做二次加密。每个钱包的加密方法和存储方式是不一样的。这也是为什么你使用钱包进行交易的时候,总需要进行授权,这背后其实涉及了钱包使用密码进行私钥解密,然后再使用私钥对交易进行签名等复杂的过程。
    区块链钱包开发安全小贴士
 
    公钥是可以曝光的,对你的资产安全无影响。相当于你告诉人家你的银行卡账号一样。
 
    助记词、私钥一旦泄露,资产将有很大风险被他人掌控,此时你需要立即转移资产到其他地址,原先的地址不再使用。
 
    keystore泄露,不管密码有没有泄露,都存在他人掌控资产的⻛险,因此需要赶快把资产转移其他地址。
 
    如果是EOSIO(包括EOS、BOS、WAX等)和IOST的账号私钥泄露时,还可以采取更换新私钥的方式,阻止他人掌控自己的资产。
 
    在存储私钥、助记词时,我们都建议采用离线形式(手抄、打印等)进行数据备份,同时将备份好的内容妥善保管。对于keystore这样的信息,采用抄写进行备份是很不科学并且很容易出错的,所以用户可以将keystore存储为文件形式,然后可以将其存储在U盘中再妥善管理好U盘;其中,我们非常不建议您进行截屏、网络传输(QQ、微信)、云端存储等方式备份,这些方式都有可能遭遇黑客攻击,从而造成资产损失。
 
 
    我们将从私钥的存储和私钥的生成两个方向对钱包进行分类。
 
    私钥存储
 
    根据私钥的存储方式,即用户是否掌握了私钥,我们可以把钱包划分为,「中心化钱包」及「去中心化钱包」。
 
    存储方式是指存在哪,只有用户持有私钥导入钱包后私钥仅存储在用户设备上的才叫「去中心化」,而无私钥,或者私钥有上传存储在服务商的服务器里的,则是「中心化」。
 
    去中心化钱包,我们又可根据私钥存储过程中是否接触网络,划分为「冷钱包」和「热钱包」;这里的接触网络是指,钱包是否联网了,而不是私钥是否在网络中传输的意思。
 
    常见的热钱包有桌面钱包、手机钱包和网页钱包。而冷钱包一般是指纸钱包、硬件钱包这些不联网或无法联网的工具。
 
    根据钱包的去中心化程度又可将钱包分为全节点钱包、轻节点钱包、中心化钱包。
 
    全节点钱包就是将区块链上所有数据同步到钱包,这样会占用很大的存储空间,所以大部分全节点钱包都是桌面钱包。其中最有代表性的有比特币核心钱包、Geth、Parity等等。正因为全节点钱包需要同步所有区块数据,所以其可以实现完全去中心化。
    根据DApptotal数据,截止到2019年9月份:以太坊的全节点数据大小为433GB,EOS的为430GB,而比特币为279GB。
 
    轻钱包就是依赖区块链网络中的其他全节点的钱包。
 
    去中心化钱包的数据都是区块链上的数据,而中心化钱包的数据则依赖钱包服务商自己的账本。举个例子,我们在交易所的钱包就是中心化钱包,我们往交易所指定的某个地址转账,然后交易所在自己的账本上记录了我们的充值记录,此后我们每做一次充值转账,交易所直接在他的账本上进行加或减。而这整个过程,完全没有发生在区块链上。
 
    私钥生成
 
    本小节内容稍微超纲
 
    从私钥的生成,我们可以把钱包划分为,「非确定性钱包」、「确定性钱包」及「分层确定性钱包」,而其中「分层确定性钱包」是「确定性钱包」的加强版本。
 
    非确定性钱包
 
    在钱包中生成的私钥之间没有任何关系,是相互独立的。
 
    确定性钱包
 
    私钥都是由一个「种子」通过算法生成,比如「助记词」就是种子的形式。通过这个方式生成的私钥,只要算法一致,私钥就可以保持前后一致;且一个种子可以派生出无限的私钥地址。
 
    为了更好理解,我们可以「确定性钱包」比喻一根树枝,树枝上不同位置的叶子不同,但是只要你选择的位置一样,那个位置的叶子永远是同一片。而这里的叶子就是我们提到的「私钥」。
    分层确定性区块链钱包
 
    是确定性钱包的加强版,为确定性钱包引入「主私钥」概念,即HD钱包。它的层级结构是,从主私钥生成的私钥,本身就可以成为一把主私钥,再通过上述方法生成一个确定性钱包。
 
    同样的,我们可以把「分层确定性钱包」比喻成树干;一个树干上有很多树枝,每一根树枝上的叶子都是确定的。所以,只要我们确定了某一树枝上的某一个位置,那这片叶子就是确定的。也就是私钥是确定的。