首页Pi币教程 正文

区块链钱包详解

2022-08-17 5650 2条评论

区块链常被比喻是一个分布式的公开账本,账本记录了每个账户拥有那些加密货币资产,以及交易的纪录。 有几个名词会常看到:

 

l 公钥(Public Key:又称钱包地址(Wallet Address或是账户(Account

就像银行账户,可以拥有加密货币资产。 把地址告诉别人,对方就能转账进来,所以是可以公开的。

 

Pi的公钥是以“G”开头的、56个字符字符串。

 

(严格讲起来,在比特币中的公钥与钱包地址是不同的,钱包地址是由公钥单向推导而来,无法由钱包地址反推回公钥。 但在Pi当中我们就当成是相同的吧。 )

 

l 私钥(Private Key:又称密钥(Secret key钱包密码(Wallet Password

可以想象成银行账户的密码,有了密码就可以控制账户内的资产,所以千万不能让其他人知道

 

私钥跟公钥是成对的,私钥是随机产生的一串英文和数字,然后通过密码学算法从私钥生成公钥(但这个过程不可逆,无法由公钥反推出私钥)。 所以是没有「改密码」这件事的,换一个私钥,表示对应的公钥也变了,但是可以建立许多对「私钥+公钥」的组合。

 

Pi的私钥也是56个字符,但它以字母“S”开头。

 

l 助记词(Mnemonic Phrase:又称助记码助忆词种子短语(seed phrase密语(secret phrase恢复密码(Recovery Passphrase

因为私钥实在太难记忆了,为了拯救人类可怜的脑袋,所以BIP39Bitcoin Improvement Proposal: 39)登场了,简单的说:助记词 à 种子 à 私钥 à 公钥。 没错,是先有助记词才推导出私钥,不是把私钥转换成助记词的格式。

 

助记词为若干个常见的英文单词(例如Pi24个单字),容易阅读与记忆,它的重要性等同于私钥

 

但对于Pi钱包来讲,根本就不显示私钥给用户看,只有显示助记词(只有Developer App Wallet是用私钥解锁与签署)。 所以在Pi的世界中,助记词常被视为私钥,就连APP接口也是写「助记词私钥」。

 

u  BIP32

区块链是匿名的(KYC之后就难讲了),但却是透明的,一旦有人知道你的钱包地址,就能知道你所有的交易内容。 所以你可能会想要有好几个地址,不同的交易使用不同的地址。 但如果要使用不同的地址,就需要不同的私钥,也就产生了管理的麻烦。

 

BIP32就在这种情况下出现了,它定义了分层确定性钱包(Hierarchical Deterministic Wallets, HD Wallet。 概念是用一个随机的种子(Seed产生第一把私钥,称为Master Key,利用Master Key又可以继续往下一层产生更多子Keys,而子Keys也都可以再往下产生多个孙Keys。 其架构如下图所示:

区块链钱包详解

一个系统可以从单一个种子产生一树状结构储存多组keypairs(私钥和公钥)。 好处是可以方便的备份、转移到其他兼容装置(因为都只需要种子),以及分层的权限控制等。

 

u  BIP39

即使有了种子可以管理多个私钥,但仍然不方便记忆,所以BIP39提出使用随机算法生成的多个单词,采用PBKDF2Password-Based Key Derivation Function)方法推导出二进制种子,用生成的种子来推导私钥。

 

助记词生成的过程是这样的:先产生一个128位随机数,再加上对随机数做的校验和4位,得到一个132位的数,然后按每11位做切分,这样就有了12个二进制数字,然后用每个数去查BIP39定义的单词表,这样就得到12个助记词。 也可以用更长的随机数,就能产生更多助记词,被暴力解码的难度就更大,更安全。 如Pi就是用256位随机数产生24个助记词。

 

助记词推导出种子:这个过程使用PBKDF2密钥延伸(Key stretching)函数,来增强弱密钥的安全性。 基本原理是通过一个随机函数(例如HMAC函数),把助记词明文和“盐”作为输入参数,然后重复进行运算最终产生生成一个更长的(512位)密钥种子。

 

“盐”是由字符串“mnemonic”及一个可选的密码组成,可以提高暴力破解的难度,注意使用不同密码,则延伸函数在使用同一个助记词的情况下会产生一个不同的种子。

 

区块链钱包详解

 

u  BIP44

因为Master Key底下可以生成出无限多的子密钥、孙密钥、...。 所以BIP规范了这些分层路径的定义,也扩展了对多币种的支持。 这里有完整的币种列表Pi NetworkCoin type 314159

 

有个观念要澄清,钱包并没有真正储存加密货币资产,这些资产是在区块链上,钱包只是提供与区块链互动工具。 基本上可以协助用户管理私钥的服务,都可以称作钱包。 那管理私钥大致可分成三种功能:生成私钥,储存私钥,使用私钥。 所以钱包有各种的形式,包含纸钱包(就是把私钥印在纸上,这也算储存私钥)、硬件钱包、软件钱包、网页钱包、托管式钱包等等。 若钱包能连上区块链网络,就能做为参与区块链网络的入口,比如发起交易、进行资产的转移。

 

聪明的你有没有发现一件事? 私钥与公钥是可以离线生成的,只要在本地执行一个非对称加密算法即可,与是否连网无关。 而且因为Pi有「最低余额」的限制,光是有一对密钥对,并不代表帐户已经建立,必须由其他帐户提供资金来建立。

 

最后谈谈私钥储存在手机的安全,这里的「储存」并不是指将助记词截图或文字储存在手机,而是当你使用助记词解锁钱包后,可以选择启用生物辨识功能,以后就能用脸部辨识或指纹辨识来解锁,因为Pi钱包就将你的助记词加密后储存在手机上。

 

这样安全吗? 大家该有的观念是,世界上没有什么系统是100%安全的,这一切都只是成本考量。 使用助记词也有可能被侧录、被钓鱼骗走。 也可以参考这篇对 Face ID 的报道。


文章版权及转载声明

本站(Picn.cc)文章与教程皆为网络搜集和个人分享,并非代表Pi Network官方言论。如有误,望广大Pi友指正。

发表评论

快捷回复:

评论列表 (有 2 条评论,5650人围观)参与讨论
网友昵称:九天之悠然自得
九天之悠然自得2023-12-07 来自未知IP 沙发 Pi先锋 回复
最近几天钱包进入后闪退是怎么回事?
网友昵称:25445654
254456542023-12-07 来自山东 Pi矿工 回复
@九天之悠然自得 重新安装一下APP吧

目录[+]

取消
微信二维码
微信二维码
支付宝二维码