imtoken钱包下载苹果|比特币钱包助记词

作者: imtoken钱包下载苹果
2024-03-10 00:17:47

小科普:助记词和私钥到底是什么? - 知乎

小科普:助记词和私钥到底是什么? - 知乎首发于派派区块链小科普切换模式写文章登录/注册小科普:助记词和私钥到底是什么?派派​​踏入区块链世界后,我们经常听到的话就是“私钥如何如何重要”、“助记词如何如何重要”...那么助记词和私钥到底是啥东西啊天天被念叨...他俩为啥这么重要?到底谁又更重要?助记词和私钥之间又有啥不可告人的关系?相信多数人对此肯定是云里雾里,如果我要不是得写科普文我也懒得捋...但是有一点毫无争议:私钥和助记词毫无疑问都是管理和使用加密货币过程中最重要的东西。如此重要的内容,可得好好听讲,我们接下来就从私钥开始说起...1、私钥长什么样?比特币私钥本质上就是一个随机数,就跟你扔骰子扔出一个数字来是一个东西。不过比特币的私钥会比较长一些,再具象一点,是一个256位,由0和1组成的数字。0100101…01010100 (共256位)那么问题来了,这么多0和1看都看晕了,还怎么备份?聪明的聪哥发明了一种特殊编码(Base58)可以将一大串01010转化为较容易备份的样子。比如下面这段字符,这就是我们常见的私钥的形态:KwYHFL7WfhJPkfQkp1LsUwHvy1Pd9KynuxjjVDMZvRSV5D9VJq3v这样的私钥“相对”来说还是比较容易备份和输入的,咳咳…(私钥一般为5、K、L开头)2、私钥有什么用?你的收币地址是怎么诞生的?是私钥计算的。你的交易怎样授权发出去的?是私钥签名的。你的资产怎样在钱包恢复的?是私钥帮忙的。私钥是电,私钥是光,私钥是爸爸私钥就是你区块链世界的资产的唯一凭证,拥有了私钥的,便拥有了对应地址上的资产。3、私钥安全吗?我们前面提到了私钥是本质是256位的随机数,那么私钥生成的总数为2的256次方。这个总数听上去好像很普通,但其实已经无法用常见事物来描述了:“一根头发丝儿的直径,尺寸约为50万个原子叠加,私钥的总数接近可观测宇宙中所有原子的数量。”“360个地球上的每一克土地(物质)都变成一个地球,这些地球上所有的水分子数量之和就是私钥的总数。”所以想通过暴力碰撞去获取特定地址的私钥,难度相当于在辣么多地球上找一个水分子,在浩渺的宇宙中寻找一个原子……而你,连家里钥匙丢了都找不到。虽然私钥可生成范围足够大,但是如果生成私钥的算法有问题,那也会有隐患。比如一个钱包的随机数生成不够随机,那么是有可能给两个用户生成同一组私钥的,这里就比较考验钱包团队的密码学功底了。(比太&比特派团队首创的极随机算法,是在用户计算私钥时,加入用户端信号、声音、图像等随机因素来增大熵池,来生成高质量的随机数。发明极随机算法也是我们团队被http://bitcoin.org推荐的原因之一。)看到这,大家一愣,私钥这么重要,可是好多钱包我只备份了12个单词,没有备份私钥啊,我岂不是凉凉了?!别怕,有我温暖你,你怎么会凉呢。那个12个单词叫做助记词,下面我们再来说下助记词,4、助记词长什么样?最常见的助记词就是一组12个单词。1、health 2、fine 3、profit 4、below 5、crowd 6、wish 7、task 8、gown 9、mind 10、surge 11、apple 12、max(我瞎写的啊,别试了啊)5、助记词有什么用?你的收币地址是怎么诞生的?是助记词计算的。你的交易怎样授权发出去的?是助记词签名的。你的资产怎样在钱包恢复的?是助记词帮忙的。助记词是电,助记词是光,助记词是爸爸助记词就是你区块链世界的资产的唯一凭证,拥有了助记词的,便拥有了对应地址上的资产。“……不对啊,你刚才对私钥也是这么说的!”“闭嘴...我这不凑字数呢么”6、助记词和私钥有什么关系?其实助记词和私钥在功能上是一致的。(证明上一段根本没有在凑字数)助记词本质也是一串随机数(128—256位),不过因为随机数形式和私钥形式都不方便使用,所以比特币社区通过了BIP39协议,来允许将随机数通过特定编码转化为词库中的单词。(小知识:比特币改进协议 Bitcoin improvement proposals 简称BIP,是为比特币社区提供规范,完善比特币及其运行进程和外部环境特性的设计指导文件)助记词不用区分大小写,又是较为常见的单词,比私钥的使用上要方便的多,所以近年来,助记词钱包已经逐渐成为主流钱包。助记词钱包还有一个好处是,一组助记词可以派生出N个私钥,每个私钥都可以对应一个币种。如果你有30个币种(BTC、ETH、LTC、EOS等等等等),你不需要每个币种都单独记录一下私钥,只需记录好一组助记词就可以掌控所有资产。像比特派钱包会将助记词和私钥都展示给用户,但一般来说备份好助记词就好了。(我们将私藏在了收币二维码页面的右上角)7、各个钱包间的助记词是通用的吗?助记词的生成依靠了比特币的BIP32、39、44协议。因此只要是遵循了标准协议的助记词,都是可以互相使用的。(但是因为每个钱包的安全水平不同,不建议将助记词互相混着使用)8、助记词会被淘汰吗?助记词的出现是经过比特币核心开发团队和社区认可的,相应的BIP协议都是写在比特币开源代码中。从钱包备份的发展历史来看:钱包经历了备份钱包文件——备份私钥——备份助记词三个过程。但是每一个新趋势的诞生都是向下依旧兼容的,比如助记词的诞生并没有导致私钥不可用,假如后面发展出新的备份形式,那么助记词也依旧可以使用。9、私钥、助记词备份和恢复时需要注意什么?1、私钥有大写、小写、数字组成,备份和恢复时要注意区分。2、私钥和助记词请不要存放在联网设备中,认真抄写在纸上或者存放在冰甲助记词板中。3、各个钱包水平良莠不齐,如果没有迫切的需求,尽量不要将各个钱包的助记词、私钥导入混用。10、当用助记词恢复时提示“无效的助记词”是什么原因?这种原因一般是抄错了某一个单词,不过因为单词都是有固定的词库,所以可以在词库中检索类似的单词尝试下替换输入。官方英文词库地址:https://github.com/bitcoin/bips/blob/master/bip-0039/english.txt官方中文词库地址:https://github.com/bitcoin/bips/blob/master/bip-0039/chinese_simplified.txt11、中文助记词和英文助记词有什么不同?emmm 只有语种不同,用法一样。中文、英文助记词都是有官方的词库。但是因为全球范围内支持英文助记词的钱包更多一点,并且中文词库是有生僻字的,会容易导致用户留下没有文化的眼泪,所以我比较建议大家使用英文。(中文和英文助记词不能互相转换)12、助记词和密语是一个东西吗?是的。在最早做钱包的时候,国内还没诞生“助记词”这名词,于是我们创造了“密语”这个名词。后来大家好像对助记词这个名词受度更广一些,所以我们后来的新客户端中都将“密语”改为了“助记词”我目前只想到了这么多哎,还有啥问题,你们就留下言呗,我后面再整理下。派派http://bitpie.com​​​​发布于 2019-09-09 10:43比特币 (Bitcoin)区块链(Blockchain)​赞同 89​​47 条评论​分享​喜欢​收藏​申请转载​文章被以下专栏收录派派区块链小科普每周一篇区块链小

比特币:手把手教你做出属于自己的12汉字助记词 - 知乎

比特币:手把手教你做出属于自己的12汉字助记词 - 知乎首发于比特币切换模式写文章登录/注册比特币:手把手教你做出属于自己的12汉字助记词守夜人dogking.eth本文结构:助记词例子:脑酒老 丰如德 核角归 事挖商听我解开这个谜团助记词库汉字助记词库高阶玩儿法字母移位替换数列移位替换把助记词改成不像助记词的样子:比如一首诗后记:呼吁国内钱包团队阅读本篇文章通过上期文章,我们知道了如何3分钟用旧手机做一个安全的冷钱包,可是新的问题又来了,这是那个困扰了各路好汉很多年的问题:私钥丢了怎么办?私钥丢了,神仙难救,所以问题变成了:我如何能够保证助记词的安全?放得太秘密,怕自己找不到;放得不够隐秘,就被人发现,直接取走了我的钱。我今天告诉你一套混合拳,可以保证你丢不了助记词,也能保证别人看到你助记词的时候不知道这是什么——这是密码学最实用和简单的生活应用。别怕,不枯燥,看数字、字母的时候直接跳过看汉字就好了。助记词可以这样写:脑酒老 丰如德 核角归 事挖商承接上篇文章,你有了助记词(如下图所示),如果要放很多加密资产进去这时候怎么记录这些助记词呢?我以此为例,我可以记录成这样:1208 786 212850 76 502758 234 999124 1419 396然后我再记录成:脑酒老,丰如德。核角归,事挖商。好了的我的助记词就是,脑酒老 丰如德 核角归 事挖商。这十二个汉字。我知道很多读者这时候还是一脸懵,这玩意儿怎么出来的?准不准?听我解开这个谜团助记词库现在加密钱包最常用的协议是BIP39,然后给你生成12个助记词害怕你记不住,然后如果英文不好,反复核对麻烦到不行,其实这英文单词都来自一个单词库,单词库里有2048个单词,2048个单词对应着多个国家的单词体系。BIP39词库总览:https://github.com/bitcoin/bips/blob/master/bip-0039/bip-0039-wordlists.md英文词表:https://github.com/bitcoin/bips/blob/master/bip-0039/english.txt助记词ctrl+f(搜索),比如第一个单词lesson:汉字助记词库lesson是第1028个词,对应到汉字词表:https://github.com/bitcoin/bips/blob/master/bip-0039/chinese_simplified.txt#L11028就是个“脑字”。其他的单词全部可以按照顺序对应,不同的国家有不同的单词对照,都是常用字。全部对照完,就可以得出12个汉字的助记词了,为了方便大家使用。我专门做了一个表格:https://shimo.im/docs/vjwcPPQPgVY6kQhd/ 《BIP39助记词:中英文序列对照表(Excel)》根据这个表格就可以快速地查找单词(ctrl+f)对应的序列以及汉字,直接用汉字写下自己的助记词,然后如果要使用的时候打开对照表,输入对应的英语即可,打开后看到的部分形态是这样的:这就做成了自己的12字汉字助记词,准确地说是把英文助记词转换成汉字方便记录,给看到你助记词的人也不知道这是什么。但是问题来了,这篇文章一发很多人都已经知道了,或许看到了12个汉字连起来的东西,还是能找到你的助记词(其实,大概率不会发生)。高阶玩儿法1、字母移位替换比如abc换成bcd,往后移动一位去记录单词,当然你可以移动两位或者有自己的一套移位方法去记录助记词,这样需要用的时候换回来,移动了几位,以及怎么替换的只有你自己知道,比如你的单词里移位后,把b全部换成了q——这是替换法和移位法结合。2、数列移位替换在记录的时候,可以记录汉字,也可以记录数列,也可以把数列全部转变为二进制。如下这个例子,我把前文提到的助记词转化为序列数: 1208 786 212 850 76 502 758 234 999 124 1419 396每个加5、加3或者加1记录下来,你只要记住这个数字不是真的数字,下面每个数字都加1了(你也可以加任意一个数,比如你的幸运数字)。 1209 787 213 851 77 503 759 235 1000 125 1420 397。这么写更没有人看得懂,因为不知道你心里加了几,只需要你记录好之后,心里记住这些数字你加了几,还可以12个数字,第一个加1,第二个2……第十二个是加12,或者倒过来第一个加12,第二个加11……第十二个加1,等等,有一个自己方便记忆的方法就好。3、把助记词改成不像助记词的样子:比如一首诗脑酒老 丰如德 核角归 事挖商这十二个汉字就是我的助记词(文中例子),然后我来个断句修改:醒脑酒老,财丰如德。夜核角归,临事挖商。好了,你是在每句话前加了一个字,也可以随意在末尾或者第二个字等等地方加入一个字,写的莫名其妙,自己一看就懂,别人怎么看都不懂,不知道这是什么东西。你看到这些汉字的时候,打开链接就可以找到英文单词,一个一个输入进去。当你的助记词只有你知道它的本来面目,是什么的时候,你就不用担心存放问题,多放几个地方,也没有人看出来这是你的助记词,看出来了也不知道你进行了怎么样的修改。做到神出鬼没,你的助记词还用担心会丢吗?后记:呼吁国内钱包团队阅读本篇文章如果加密资产不多,这篇文章就当个乐趣吧,密码学在生活中的应用有很多。你玩儿密室逃脱的时候其实就有简单的密码学原理。在此呼吁国内的钱包团队,做出来钱包可以用中英文对照,或者在app中加个小程序,直接让客户记录汉字,随时方便转换英文——这篇文章的思路写成程序就可以实现这个功能了。英文记录真的挺麻烦的。对一个不常用英文的人,另外一个圈内人无意中(或者有意)发现这个人本子上记录了12个英文单词,还用想吗?这大概率就是助记词了。拍个照片,回去就把钱提走。所以钱包app发展这么多年,底层逻辑上要让大家觉得好用,这篇文章献给各位朋友,同时也希望钱包团队,做出一点革新,让大家使用钱包更加方便——至少助记词记着方便。github上的助记词库:https://github.com/bitcoin/bips/blob/master/bip-0039/bip-0039-wordlists.md英文词库:https://github.com/bitcoin/bips/blob/master/bip-0039/english.txt汉字词库:https://github.com/bitcoin/bips/blob/master/bip-0039/chinese_simplified.txt#L1028本人所做的、方便使用的Excel表格下载地址(可阅读原文直接跳转):https://shimo.im/docs/vjwcPPQPgVY6kQhd/ 《BIP39助记词:中英文序列对照表(Excel)》文章转载巴比特:https://www.8btc.com/media/660224 发布于 2020-10-23 10:08密码学比特币 (Bitcoin)​赞同 2​​添加评论​分享​喜欢​收藏​申请转载​文章被以下专栏收录

助记词会不会被试出来? - 知乎

助记词会不会被试出来? - 知乎首页知乎知学堂发现等你来答​切换模式登录/注册网络安全比特币 (Bitcoin)数字货币钱包数字货币币圈助记词会不会被试出来?既然助记词是单词,也是26位字母,如果有人用电脑24小时计算所有组成可能性会不会把别人的账户试出来?显示全部 ​关注者89被浏览385,523关注问题​写回答​邀请回答​好问题 6​添加评论​分享​41 个回答默认排序孤鹤​​互联网行业 监事​ 关注会,目前主流的助记词是12个英语单词,词库一共2048个单词。也就是2048^12=5.44e39种(5444517870735000000000000000000000000000)如果有人想暴力枚举破解你的钱包,最多要尝试这么多种可能。但如果你想随便试出来一个钱包,倒也不能只看一共有多少可能性,分母虽然大,分子大了结果也会变小嘛。以目前持币地址最多的比特币为例,目前BTC的持币地址数量是38762665个,不到4000万。方便计算就假设这些地址全都是12个助记词没有24个的吧。38762665/5.44e39=1/1.404577799471e32所以每次瞎填试出来BTC钱包的概率,不能说没有,只能说接近0。电脑如果有这个算力,说实话还不如直接去挖BTC收益高啊........0817更新下,目前有两类加密解析算法已经证实可以在微型量子计算机上运行,其中更为先进的Shor算法,可以有效破解BTC、ETH都在使用的椭圆形曲线数字签名算法(ESDSA)。量子威胁下的虚拟币该何去何从呢?编辑于 2021-08-17 01:52​赞同 41​​39 条评论​分享​收藏​喜欢收起​Xcellia区块链 加密货币​ 关注不会。现在应用最广的BIP39助记词标准,助记词字典里有2048个单词。现行助记词标准一般有12词和24词两种12词组合的可能性是2048^12 = 5.44e39 , 24 词组合可能性是 2048^24 = 2.96e7910^79 这个数量级接近宇宙里所有原子的数目,所以暴力破解是不可能的。别说用你的电脑24小时算,就算你用超级计算机从宇宙诞生到现在一刻不停地算都算不出来。编辑于 2021-01-24 07:16​赞同 22​​44 条评论​分享​收藏​喜欢

一文搞懂 HD 钱包 | 一组助记词打天下 - 知乎

一文搞懂 HD 钱包 | 一组助记词打天下 - 知乎首发于币圈金马奖切换模式写文章登录/注册一文搞懂 HD 钱包 | 一组助记词打天下金马搞事情的程序员,给你希望与方向今天我们聊点基础但是刚需的内容。前言不知道你在使用钱包的时候,有没有想过一个问题?为什么可以只使用一组助记词去控制多条链上的资产?正常来说,不应该是比特币在比特币的链上,以太坊在以太坊的链上吗?地址由私钥及公钥推导来,不同的地址,为什么助记词却一样?比如在比特派钱包上?多链钱包竟然只需要备份一组助记词?为什么比特币规定每一笔交易都需要生成一个新地址(新私钥)?了解私钥管理方式前,先要解决一个问题:为什么比特币规定每一笔交易都需要生成一个新地址(新私钥)?我如果就一个比特币钱包,难道不是只备份一个私钥就行了?比特币有特殊的找零机制,在频繁交易的过程中,会产生非常多的找零地址,而每个地址对应了一个密钥对(私钥+公钥)。那什么是找零地址?假设 A 有 20 个BTC,他需要转 5 个 BTC 给用户 B 。交易的输出部分应该是:A 支付 5 个 BTC 给B,再支付 15 个 BTC 给 A。发现了吗,这个有个找零(15个BTC),转回给 A 的这个地址就是找零地址,为了匿名性,这个找零地址一般规定是一个新地址。当然,你可以使用相同的地址作为找零地址,这样你就只备份一个私钥,或者说你只有一个比特币地址,但是一般不这么做。一般找零地址是一个新地址,而且 A 每一笔交易的找零地址都是一个全新的地址,不是固定的。这样的好处是为了保护用户的隐私和避免一些安全隐患。(关于找零,我这里解释的比较简略,大家如果有兴趣可以去寻找一些文章。了解一些 UTXO 模型。)非确定性钱包(Non-deterministic Wallet)根据上面讲的,一个钱包,在用户交易的过程中需要生成非常多的私钥。而非确定性钱包生成的私钥没有任何的关联,这意味着私钥的管理及备份会变得非常麻烦。如果用户的交易量够多,地址数量也会变得非常非常多,钱包需要保存的私钥数,也会非常多。钱包和用户都需要经常性地备份,否则就有可能丢失BTC。《精通比特币》中说:举个例子, 比特币核心客户端预先生成 100 个随机私钥,从最开始就生成足够多的私钥并且每个密钥只使用一次。图片不过,现在非确定性钱包已经被确定性钱包代替。确定性钱包(Deterministic Wallet)确定性钱包,你可以简单理解为,确定性钱包可以通过一个 seed(种子)派生出一系列的子私钥。备份时,只需要备份种子就可以了。完美解决了非确定性钱包中各私钥不相关联,不方便备份的问题。所以确定性钱包又可以称作种子钱包。分层确定性钱包 | HD 钱包(Hierarchical Deterministic Wallet)HD钱包就是现在最常见的“高级版”确定性钱包。最早基于 BIP32 协议实现(目前常用的还有 BIP39 、BIP44协议)。BIP32 协议中定义,HD 钱包以树状结构衍生密钥(私钥和公钥), 这就意味着种子生成主私钥(或者说是主密钥对),再通过主私钥,可以派生出一系列的子私钥,而每个子私钥又可以衍生出一系列孙密钥,以此类推,不断可以衍生。主私钥派生出子私钥的过程不可以逆,子私钥不能向上推导出父私钥,同时也不能水平推导出同一级的私钥。所以能够非常安全的分层管理私钥。BIP39协议虽然,只需要备份一个种子,就能够掌握海量的子私钥,但 BIP32 协议中的种子是一个 16 字节的 16 进制的随机数,非常难记。于是比特币开发社区在 BIP39 协议中提出了一个助记词方案。说到助记词,大家应该都不陌生,每次注册钱包的时候,都会要求备份。很多人可能会误以为助记词是为了方便保存私钥,是钱包公司创建的一种保存私钥的方式。实际上是相反的,BIP39 协议中提出的助记词是为了方便记录种子,而主私钥是由助记词推演而来。整个过程生成私钥的过程比较复杂,大家可以简单理解为助记词使用 PBKDF2 转化为种子,然后通过 HMAC-SHA512 生成主私钥。16 进制表示的种子: 0C1E24E5917779D297E14D45F14E1A1A助记词表示的种子:army van defense carry jealous true garbage claim echo media make crunchBIP44协议从协议的数字上来看,不难知道,这又是一个升级版了,BIP44 基于 BIP32 协议,对 HD 钱包的树状结构中的每一层给予了特殊的意义(5层)。能让同一个种子支援多币种、多帐户等。各层定义如下:m / purpose’ / coin_type’ / account’ / change / address_index第二层的“coin_type”,就是指的不同币种,多链HD钱包可以在这个层级分出不同体系的数字货币钱包。比方说比特币钱包、以太坊钱包…..到这里,就完全解决了文中最开始的问题了:为什么我可以只使用一个私钥/助记词去控制多条链上的资产?因为使用了 BIP44 协议的 HD 钱包,可以分出不同体系币种的私钥。意味着,一个主私钥可以生成一个比特币钱包私钥,可以生成一个以太坊钱包的私钥…..而且因为同用一个主私钥和助记词,非常方便用户备份。总结1、因为比特币的 UXTO 模型,每次交易都最好要生成一个新地址作找零地址,而每个地址对应了一个私钥,这意味着,伴随着频繁的比特币交易,会产生大量的私钥。2、非确定性钱包生成的私钥没有任何的关联,非常不方便钱包和用户备份。3、HD 钱包产生的私钥有关联,只需要记住一个种子就可以访问所有地址的钱,而不需要每个地址都备份私钥,而且基于 BIP44 协议的 HD钱包,还能支持多币种、多账户。4、BIP32、BIP39、BIP44等等,都是HD钱包技术的的底层协议。HD 钱包主要基于 BIP-32协议。助记码主要基于 BIP-39协议。多币种和多帐户钱包,基于 BIP-44协议另:HD 钱包最适用的还是比特币HD 钱包的几个协议(BIP32/BIP39/BIP44)最适用的还是比特币。主要是因为比特币是基于 UTXO,可以使用 HD 钱包为每个交易分配一个新地址,而以太坊、EOS 这些公链都使用的是账户体系,意味着,并不需要找零地址,交易后的余额会存留在旧的账户。不过,在BIP44协议之后,HD 钱包让一个钱包管理多个币种,多个账户,已经是一个非常实用且高效的选择。「注意」 我是金马,别人离开币圈的时候,正是我深耕的时候。你的熊市,让我陪你度过可好?币圈金马奖,和你一起走币圈这条光明大道。希望和你成为朋友,我的微信:lijinma666发布于 2019-08-25 16:33币圈区块链(Blockchain)数字货币钱包​赞同 14​​7 条评论​分享​喜欢​收藏​申请转载​文章被以下专栏收录币圈金马奖专注区块链社群、媒体、项

比特币钱包找回指南 | 登链社区 | 区块链技术社区

比特币钱包找回指南 | 登链社区 | 区块链技术社区

文章

问答

讲堂

专栏

集市

更多

提问

发表文章

活动

文档

招聘

发现

Toggle navigation

首页 (current)

文章

问答

讲堂

专栏

活动

招聘

文档

集市

搜索

登录/注册

比特币钱包找回指南

BTCStudy

更新于 2023-10-26 15:48

阅读 1471

了解助记词和钱包背后的基本原理

> *作者:Mi Zeng*

什么!找回比特币钱包竟然也需要一份指南?难道不是将助记词随便导入一个钱包软件,比特币就回来了吗?

先别急。看了这篇指南,你将了解助记词和钱包背后的基本原理。以及,如何找回你的比特币钱包。

## 从助记词到地址,发生了什么

### 私钥、公钥和地址

首先,搞清楚私钥、公钥和地址之间的关系非常重要。

私钥是一切的源头。本质上,它是一长串由 0 和 1 组成的 256 位随机数。有各种各样的方式帮助你生成这样一串随机数。当花费资产时,钱包需要用到私钥来签名,这是解锁比特币最关键的要素。”Not your key, not your coin.” 这句广为流传的名言,强调的便是私钥的重要性。

公钥是由私钥通过椭圆曲线算法计算得到的。由私钥计算得出公钥的过程不可逆。

公钥经过一系列单向的哈希运算和编码,就得到了我们使用的比特币地址。

注意,这三者之间的推导关系是单向的,你可以由私钥计算出公钥,得出对应的地址,而无法由地址逆向算出私钥。哈希算法和非对称密码学为此提供了安全上的保障。

![image.png](https://img.learnblockchain.cn/attachments/2023/10/0eg8Tcmg653a16cc66a38.png)

\- 图源:精通比特币 -

在早期的比特币钱包软件中,每当用户需要一个新地址时,钱包就会创建一个新的私钥并产生一个新的地址。用到的地址越多,对应的私钥也就越多。而糟糕的是,这些私钥彼此之间没有任何联系,这意味着每一个私钥都需要备份,给用户带来了极大的不便。在早期,用户需要定期备份一个叫作 “wallet.dat” 文件。一旦该备份文件丢失,资金将无法找回。

那么,如何让不同私钥之间如何产生联系?助记词又是如何取代这一繁琐而危险的备份方式的?这一切,得从三个最重要的 BIP 说起。

### [](https://www.btcstudy.org/2023/10/25/a-guide-for-recovering-your-bitcoin-wallets/#BIP39%EF%BC%9A%E5%8A%A9%E8%AE%B0%E8%AF%8D "BIP39:助记词")BIP39:助记词

这是最广为人知的一个 BIP 标准,它的出现大大简化了私钥备份的难度。私钥的形式对于普通人而言过于复杂,用户很难安全且准确无误地记录和输入那么一长串字符。而有了 BIP39,我们就可以将私钥转换为 12 或 24 个简单的单词,也可以更方便地在钱包之间导入导出。如果你对私钥具体是如何转换成助记词的感兴趣,可以看[这篇文章](https://www.btcstudy.org/2020/09/04/understand-bitcoin-public-and-private-keys-encode-and-extend/)。

如今,**几乎**所有的比特币钱包都支持了助记词这一备份形式。然而,光靠助记词是不够的。如果私钥之间并没有关联,那就意味着每使用一个新地址,就需要备份一份新的助记词。这样的方式看上去并不比备份钱包文件优雅多少。那么,目前常用的这些钱包,是如何做到通过一个助记词管理一大堆钱包地址的呢?

实际上,在助记词出现之前,一个 BIP 已经为此打下了基础。

### BIP32:分层确定性钱包

BIP32 提供了一种方案:通过一个**初始的主密钥** ,按照特定的算法(密钥派生函数)可以推导出成千上万的扩展密钥对(扩展公钥和扩展私钥)。“分层” 两个字,已经很好地概括了这一结构的特点。它就像一棵树一样,通过最初的主密钥派生出一堆子密钥,任意一个子密钥都可以使用这套算法继续往下派生自己的子密钥。

![image.png](https://img.learnblockchain.cn/attachments/2023/10/NWbm5glZ653a16df2b521.png)

\- 分层确定性钱包图示 -

如果你对这一密钥派生的技术过程感兴趣,可以看看这篇文章:[BIP32 拓展密钥图解](https://www.btcstudy.org/2023/10/09/bip-32-extended-keys-diagram/)

通过这种分层派生密钥的方式,我们可以拥有近乎无限的地址。尽管这些扩展密钥对之间并没有直接的关联,但它们都来自于同一个初始密钥。那么,如何建立这些扩展密钥和主密钥之间的联系?派生路径登场!

派生路径长这样:`m/0'/0'/0/0/`

它清楚地表达了如何从最开始的主密钥计算出具体某一对密钥的全过程。在这一串字符中,“m” 代表着最初的主密钥,每一层子密钥由 “/” 分隔开。每一个 “/” 代表运行了一轮密钥派生算法,斜杠之间的数字就是这一轮密钥派生算法的参数,也可以表示密钥的索引号。例如,由主密钥派生出的第一个子密钥为 `m/0` ,由这个子密钥派生出的第一个子密钥为 `m/0/0` ,以次类推······ 其中任何一个数字的改变,都将得出不同的密钥和地址。派生路径就像是电脑里的文件路径,告诉你如何找到某个具体的地址。

BIP 32 的出现给钱包的管理带来了极大的便利,通过一个私钥可以管理千万个地址。借此,用户可以摒弃之前繁琐的备份方式。无论通过这种方式产生过多少个密钥,都可以借助 “派生路径” 找回来。

到这里,聪明的读者会发现:如果仅仅依靠助记词本身,是无法直接得到某一个具体的地址的。必须加上派生路径,才能推导出具体的比特币地址。但是,为什么在大多数情况下,我只是把助记词导入到钱包,曾经用过的那些地址就出来了?

标准化的派生路径功不可没。

### BIP44:为派生路径定义规范

BIP44 为 “派生路径” 中的每一层都赋予了特定含义,它的形式如下:

`m / purpose' / coin_type' / account' / change / address_index`

* `purpose`:代表该分层确定性钱包遵循的规范。对于比特币钱包而言,通过这一层的数字,就可以知道最终的比特币地址类型。

* `coin_type`:代表币种的类型。 同一个助记词可以用于派生不同的加密货币钱包,0 代表比特币,1 代表测试网上的比特币,每种密码学货币都有其特定的编号。

* `account`:账户的索引值,代表当前路径下的第 0 个账户、第 1 个账户、第 2 个账户 ······

* `change`:定义该地址是收款地址还是找零地址。0 代表收款地址,1 代表找零地址。

* `address_index`:地址的索引值,代表当前路径下的第 0 个地址、第 1 个地址、第 2 个地址 ······

![image.png](https://img.learnblockchain.cn/attachments/2023/10/JcxYhCUp653a16f862eee.png)

\- BIP44 定义下的分层确定性钱包,图源:River -

#### 动手一试

在浏览器里打开这个网站:

利用网站提供的功能随机生成一个助记词。

尝试在 “Derivation Path” (派生路径)这一部分手动更改 “Account” 和 “External / Internal”(也就是上面提到的“Change”)的值。

![image.png](https://img.learnblockchain.cn/attachments/2023/10/Ujrq8DUC653a1707bdaab.png)

当你输入不同的数值时,可以看到随着派生路径(BIP32 Derivation Path)的变化,产生的钱包地址(Derived Addresses)也会截然不同。

你也可以通过在 “Derivation Path” 这一部分切换不同的选项卡(例如 BIP49 / BIP84)来改变 “purpose” 的值,看看在不同的派生标准下,生成的地址有何区别。

以下是比特币钱包中最常用的三种地址派生路径标准:

**BIP44**:用于推导 P2PKH 地址的派生路径标准,即最传统的以 “1” 开头的比特币地址,派生路径为 `m/44'/0'/···`

**BIP49**:用于推导 P2WPKH-nested-in-P2SH 地址的派生路径标准,即以 “3” 开头的隔离见证地址,派生路径为 `m/49'/0'/···`

**BIP84**:用于推导 P2WPKH 地址的派生路径标准,即以 ”bc1q“ 开头的原生隔离见证地址,派生路径为 `m/84'/0'/···`

正是因为有了这些标准化的派生路径,钱包们才知道应该跟随哪条派生路径来生成地址。这就是为什么在大多数情况下,用户只需要导入助记词,选择地址类型,就能找回用过的钱包。

助记词、分层确定性钱包和标准化派生路径的组合,使得备份和找回比特币资产变得前所有未有的方便。所以说:只备份好助记词,就够了吗?

## 助记词不是万能药

即便已经有了上述一系列关于钱包的 BIP,当你真正需要找回钱包时,仅有助记词或许仍然是不够的。不同的钱包在开发时并没有一个绝对的标准,总是存在一些例外的情况,是单靠助记词无法挽救的:

* 部分钱包并没有实施 BIP 标准

* 钱包实施了 BIP 标准,但与其它钱包不一致

* 实施了一些较新的标准,但采用的钱包很少

这样的困境并不会因为你避免使用小众的钱包就完全消失。

举个很简单的例子,如果你使用 Electrum 钱包创建了助记词,当你将这份助记词导入其它钱包中时,会面临 “助记词无效” 的尴尬局面。这是因为 Electrum 并没有采用行业通用的 BIP39 助记词标准,而是使用了自己独特的助记词系统。

如果你是 Ledger 钱包和以太坊的用户,当你想更换硬件钱包时, Ledger 也会给你上一课。同样的助记词导入到其它钱包,会得到完全不一样的以太坊地址。这是因为 Ledger 使用了与其它钱包都不同的派生路径。如果想找回原来用过的地址,必须手动设置成和 Ledger 一样的路径。

不同钱包采用不同标准的情况相当常见,经常有人在找回资金的路上犯了难。以致于出现了像 [Wallets Recovery](https://walletsrecovery.org/) 这样的网站,专门指导用户如何在不同的钱包里找回自己的资金。如果你恰好遇到了找回钱包上的困难,也可以去那里碰碰运气。

## 钱包找回指南

回到一开始的问题:如何找回比特币钱包?换言之:当我们需要找回自己的钱包时,需要哪些东西?

在了解完上文提供的基础知识后,这个问题的答案已经非常明确了:如果你的比特币钱包使用了标准化的派生路径(绝大多数钱包都提供了查看派生路径的功能),那么,记住你所使用的**地址类型**,做好助记词的备份就足够了。在找回钱包时,软件会根据你指定的地址类型自动匹配派生路径的标准,推导出正确的地址。

如果你无法确定当前钱包使用的派生路径是否标准,那么请一定要备份好助记词和派生路径。有了二者的备份,你总是可以找回自己的资产。

不过,对于那些喜欢尝鲜特色功能,或是对自我托管有着更多诉求的用户来说,助记词加派生路径还不是找回钱包所需的全部。

### 例外情况

#### Passphrase (密语)钱包

对于普通用户来说,最容易出问题的一种情况是使用了[密语钱包](https://www.btcstudy.org/2022/12/06/everything-you-need-to-know-about-passphrases/),而忘了备份密码短语。

Passphrase,被称为第 25 个助记词。实际上,它可以是单词、字符、数字、空格,以及这些元素的组合。通过在原有助记词的基础上增加这样一段密码短语,用户就可以创建出一套新的钱包账户,与原来的钱包完全没有联系,实现一个隐秘的保险库。这样,即便助记词泄漏,资产也不会丢失。在很多安全教程里,密语钱包也是抵御 “五美金扳手攻击” 的最佳选择之一。

如今,密语钱包的用户群体相当广泛,很多软硬件钱包都支持了这一功能。如果你选择使用密语钱包来提升安全性,最应当牢记的一点是:**一定要做好密码短语的备份工作!** 它和助记词一样,是无法通过任何方式找回的。不同的密码短语对应着完全不同的隐藏钱包,哪怕只改变原密码短语中的一个字符,得到的钱包也会截然不同。

一旦弄丢了密码短语,找回资产如同大海捞针。这比忘记了派生路径要严重得多。

![image.png](https://img.learnblockchain.cn/attachments/2023/10/fGCnYNyZ653a1723e091a.png)

\- 图源:Trezor -

#### 多签钱包

多签钱包将比特币自我托管的安全性提升到了前所未有的高度,在社区里应用相当广泛。但对于新手用户而言,使用多签的过程中也极易犯错。

以最常见的 2-3 多签为例,对于绝大多数新手来说,一个常见的误区是:我只需要持有两把私钥,就可以拿回属于我的资产。

这实际上是远远不够的。当你丢失了自己的钱包时,仅仅依靠两把私钥无法帮助你恢复资产。在私钥之外,你还需要备份所有参与创建多签钱包的扩展公钥。只有依靠这些信息,才可以在任意一款多签工具中恢复出原来的钱包,并利用手上满足数量要求的私钥来花费里面的资金。

一个更优雅的备份方式是记录下你多签钱包的描述符。描述符是一段字符串,里面包含了找回钱包所需的全部信息,可以用它来代替扩展公钥的备份,简化备份操作。目前主流的比特币钱包软件都添加了对描述符的支持。

另外,一些钱包最近也添加了对 [BIP129(比特币安全多重签名设置,BSMS)](https://github.com/bitcoin/bips/blob/master/bip-0129.mediawiki)的支持,它会在你创建多签钱包后给你一个 BSMS 文件。类似于描述符,这个文件里包含了关于恢复多签钱包所需的全部信息,在任何支持的钱包导入该文件,也可以恢复多签钱包。BSMS 的出现,就是为了在不同钱包之间提供一个标准化的多签设置流程。

关于如何用好比特币多签钱包,这里有一份非常详细的[指南](https://www.btcstudy.org/2022/12/09/a-guide-for-bitcoin-multi-sig-wallets-by-mi-zeng/)可供实践。

#### BIP85

BIP85 是一种利用助记词来派生助记词的新颖方案,目前已有少数钱包支持。有了 BIP85,用户利用一套助记词加上索引号(index),即可派生出确定性的新助记词。只要索引号不变,派生出的助记词就不会发生改变。利用该功能创建出来的子助记词之间互无关联,也无法逆向推导出主助记词。BIP85 常用于简化助记词的管理:当遇到各种需要创建新助记词的场景时,BIP85 可以极大地简化助记词的备份工作。

![image.png](https://img.learnblockchain.cn/attachments/2023/10/ERl9sj3g653a1736735bd.png)

\- BIP85 助记词派生方案 -

如果你使用了由 BIP85 派生的子助记词,记得备份好对应的索引号。和密码短语类似的是,索引号也是独一无二的。

#### 非标准的助记词形式

少数钱包为用户提供了非标准助记词的选择,借以实现独特的功能。

上文提到的 Electrum 是个很典型的案例。Electrum 有自己[独特的助记词版本系统](https://electrum.readthedocs.io/en/latest/seedphrase.html),它在助记词内融合了版本号(Version Number),版本号用于指导钱包如何通过助记词派生出私钥和地址。因此,在 Electrum 的助记词系统里,用户需要备份的只有助记词,助记词本身已经包含了关于如何派生地址的一切信息。然而,这一特定类型的助记词只能用于 Electrum 钱包,无法与其它钱包兼容。因此,当你决定使用 Eletctum 创建的钱包助记词时,请做好一直使用 Electrum 钱包或者未来迁移资产的打算。(注:Electrum 支持导入标准的 BIP39 助记词,但不提供长期支持该类助记词的保证。)

另一种常见的非标准助记词形式就是 SLIP39([Shamir 密钥分割方案](https://www.btcstudy.org/2021/10/07/multisig-and-split-backups-two-ways-to-make-your-bitcoin-more-secure/))。利用该方案,用户可以创建多份助记词分片,只需要持有指定数额的分片,即可恢复出钱包。以 3/5 的 Shamir 密钥分割方案为例:在创建钱包的时候会生成 5 份助记词分片,用户将这些分片分开保存。当需要恢复钱包时,需要凑齐其中的 3 份分片,才可以恢复出钱包。这一备份方案提供了更多的冗余,避免了助记词丢失/被盗的单点故障。如果你选择了这一备份方案,请记住:Shamir 密钥分割方案产生的助记词分片和标准的 BIP39 助记词无法互相转换。因此,当你需要恢复自己的助记词时,只能挑选支持该方案的钱包工具。而目前仅有少数几款软硬件钱包支持了 Shamir 备份。

此外,五花八门的非标准方案还有很多,由于受众过少,本文不再详述。

## 总结

对于任何一个持有比特币的人来说,都应该花点时间了解这些钱包相关的基础知识。已经有太多因为备份不当而导致资产丢失的惨痛案例了。

如果你还是一名新手,请使用支持标准助记词和派生路径的钱包,这可以帮你避免绝大部分坑。如果你已经有了一定的经验积累,想尝试一些复杂的方案来获得更高的安全性。那么,搞清楚它们背后运作的机制非常重要,请熟悉你所使用的工具后再转入资产。享受这些进阶方案所提供的附加优点的同时,做好必要的备份工作,避免悲剧发生。

感谢 [@AurtrianAjian](https://twitter.com/AurtrianAjian) 对本文部分细节的指正。

(完)

### 延伸阅读

[精通比特币:密钥、地址、钱包](https://www.8btc.com/books/261/master_bitcoin/\_book/4/4.html)

[比特币钱包备份方案简史](https://learnblockchain.cn/article/6779)

[比特币都有哪些类型的助记词?](https://learnblockchain.cn/article/6780)

[助记词备份指南](https://learnblockchain.cn/article/6781)

[多签和拆分备份:让你的比特币更安全](https://learnblockchain.cn/article/6782)

作者:Mi Zeng

什么!找回比特币钱包竟然也需要一份指南?难道不是将助记词随便导入一个钱包软件,比特币就回来了吗?

先别急。看了这篇指南,你将了解助记词和钱包背后的基本原理。以及,如何找回你的比特币钱包。

从助记词到地址,发生了什么

私钥、公钥和地址

首先,搞清楚私钥、公钥和地址之间的关系非常重要。

私钥是一切的源头。本质上,它是一长串由 0 和 1 组成的 256 位随机数。有各种各样的方式帮助你生成这样一串随机数。当花费资产时,钱包需要用到私钥来签名,这是解锁比特币最关键的要素。”Not your key, not your coin.” 这句广为流传的名言,强调的便是私钥的重要性。

公钥是由私钥通过椭圆曲线算法计算得到的。由私钥计算得出公钥的过程不可逆。

公钥经过一系列单向的哈希运算和编码,就得到了我们使用的比特币地址。

注意,这三者之间的推导关系是单向的,你可以由私钥计算出公钥,得出对应的地址,而无法由地址逆向算出私钥。哈希算法和非对称密码学为此提供了安全上的保障。

- 图源:精通比特币 -

在早期的比特币钱包软件中,每当用户需要一个新地址时,钱包就会创建一个新的私钥并产生一个新的地址。用到的地址越多,对应的私钥也就越多。而糟糕的是,这些私钥彼此之间没有任何联系,这意味着每一个私钥都需要备份,给用户带来了极大的不便。在早期,用户需要定期备份一个叫作 “wallet.dat” 文件。一旦该备份文件丢失,资金将无法找回。

那么,如何让不同私钥之间如何产生联系?助记词又是如何取代这一繁琐而危险的备份方式的?这一切,得从三个最重要的 BIP 说起。

BIP39:助记词

这是最广为人知的一个 BIP 标准,它的出现大大简化了私钥备份的难度。私钥的形式对于普通人而言过于复杂,用户很难安全且准确无误地记录和输入那么一长串字符。而有了 BIP39,我们就可以将私钥转换为 12 或 24 个简单的单词,也可以更方便地在钱包之间导入导出。如果你对私钥具体是如何转换成助记词的感兴趣,可以看这篇文章。

如今,几乎所有的比特币钱包都支持了助记词这一备份形式。然而,光靠助记词是不够的。如果私钥之间并没有关联,那就意味着每使用一个新地址,就需要备份一份新的助记词。这样的方式看上去并不比备份钱包文件优雅多少。那么,目前常用的这些钱包,是如何做到通过一个助记词管理一大堆钱包地址的呢?

实际上,在助记词出现之前,一个 BIP 已经为此打下了基础。

BIP32:分层确定性钱包

BIP32 提供了一种方案:通过一个初始的主密钥 ,按照特定的算法(密钥派生函数)可以推导出成千上万的扩展密钥对(扩展公钥和扩展私钥)。“分层” 两个字,已经很好地概括了这一结构的特点。它就像一棵树一样,通过最初的主密钥派生出一堆子密钥,任意一个子密钥都可以使用这套算法继续往下派生自己的子密钥。

- 分层确定性钱包图示 -

如果你对这一密钥派生的技术过程感兴趣,可以看看这篇文章:BIP32 拓展密钥图解

通过这种分层派生密钥的方式,我们可以拥有近乎无限的地址。尽管这些扩展密钥对之间并没有直接的关联,但它们都来自于同一个初始密钥。那么,如何建立这些扩展密钥和主密钥之间的联系?派生路径登场!

派生路径长这样:m/0'/0'/0/0/

它清楚地表达了如何从最开始的主密钥计算出具体某一对密钥的全过程。在这一串字符中,“m” 代表着最初的主密钥,每一层子密钥由 “/” 分隔开。每一个 “/” 代表运行了一轮密钥派生算法,斜杠之间的数字就是这一轮密钥派生算法的参数,也可以表示密钥的索引号。例如,由主密钥派生出的第一个子密钥为 m/0 ,由这个子密钥派生出的第一个子密钥为 m/0/0 ,以次类推······ 其中任何一个数字的改变,都将得出不同的密钥和地址。派生路径就像是电脑里的文件路径,告诉你如何找到某个具体的地址。

BIP 32 的出现给钱包的管理带来了极大的便利,通过一个私钥可以管理千万个地址。借此,用户可以摒弃之前繁琐的备份方式。无论通过这种方式产生过多少个密钥,都可以借助 “派生路径” 找回来。

到这里,聪明的读者会发现:如果仅仅依靠助记词本身,是无法直接得到某一个具体的地址的。必须加上派生路径,才能推导出具体的比特币地址。但是,为什么在大多数情况下,我只是把助记词导入到钱包,曾经用过的那些地址就出来了?

标准化的派生路径功不可没。

BIP44:为派生路径定义规范

BIP44 为 “派生路径” 中的每一层都赋予了特定含义,它的形式如下:

m / purpose' / coin_type' / account' / change / address_index

purpose:代表该分层确定性钱包遵循的规范。对于比特币钱包而言,通过这一层的数字,就可以知道最终的比特币地址类型。

coin_type:代表币种的类型。 同一个助记词可以用于派生不同的加密货币钱包,0 代表比特币,1 代表测试网上的比特币,每种密码学货币都有其特定的编号。

account:账户的索引值,代表当前路径下的第 0 个账户、第 1 个账户、第 2 个账户 ······

change:定义该地址是收款地址还是找零地址。0 代表收款地址,1 代表找零地址。

address_index:地址的索引值,代表当前路径下的第 0 个地址、第 1 个地址、第 2 个地址 ······

- BIP44 定义下的分层确定性钱包,图源:River -

动手一试

在浏览器里打开这个网站:

利用网站提供的功能随机生成一个助记词。

尝试在 “Derivation Path” (派生路径)这一部分手动更改 “Account” 和 “External / Internal”(也就是上面提到的“Change”)的值。

当你输入不同的数值时,可以看到随着派生路径(BIP32 Derivation Path)的变化,产生的钱包地址(Derived Addresses)也会截然不同。

你也可以通过在 “Derivation Path” 这一部分切换不同的选项卡(例如 BIP49 / BIP84)来改变 “purpose” 的值,看看在不同的派生标准下,生成的地址有何区别。

以下是比特币钱包中最常用的三种地址派生路径标准:

BIP44:用于推导 P2PKH 地址的派生路径标准,即最传统的以 “1” 开头的比特币地址,派生路径为 m/44'/0'/···

BIP49:用于推导 P2WPKH-nested-in-P2SH 地址的派生路径标准,即以 “3” 开头的隔离见证地址,派生路径为 m/49'/0'/···

BIP84:用于推导 P2WPKH 地址的派生路径标准,即以 ”bc1q“ 开头的原生隔离见证地址,派生路径为 m/84'/0'/···

正是因为有了这些标准化的派生路径,钱包们才知道应该跟随哪条派生路径来生成地址。这就是为什么在大多数情况下,用户只需要导入助记词,选择地址类型,就能找回用过的钱包。

助记词、分层确定性钱包和标准化派生路径的组合,使得备份和找回比特币资产变得前所有未有的方便。所以说:只备份好助记词,就够了吗?

助记词不是万能药

即便已经有了上述一系列关于钱包的 BIP,当你真正需要找回钱包时,仅有助记词或许仍然是不够的。不同的钱包在开发时并没有一个绝对的标准,总是存在一些例外的情况,是单靠助记词无法挽救的:

部分钱包并没有实施 BIP 标准

钱包实施了 BIP 标准,但与其它钱包不一致

实施了一些较新的标准,但采用的钱包很少

这样的困境并不会因为你避免使用小众的钱包就完全消失。

举个很简单的例子,如果你使用 Electrum 钱包创建了助记词,当你将这份助记词导入其它钱包中时,会面临 “助记词无效” 的尴尬局面。这是因为 Electrum 并没有采用行业通用的 BIP39 助记词标准,而是使用了自己独特的助记词系统。

如果你是 Ledger 钱包和以太坊的用户,当你想更换硬件钱包时, Ledger 也会给你上一课。同样的助记词导入到其它钱包,会得到完全不一样的以太坊地址。这是因为 Ledger 使用了与其它钱包都不同的派生路径。如果想找回原来用过的地址,必须手动设置成和 Ledger 一样的路径。

不同钱包采用不同标准的情况相当常见,经常有人在找回资金的路上犯了难。以致于出现了像 Wallets Recovery 这样的网站,专门指导用户如何在不同的钱包里找回自己的资金。如果你恰好遇到了找回钱包上的困难,也可以去那里碰碰运气。

钱包找回指南

回到一开始的问题:如何找回比特币钱包?换言之:当我们需要找回自己的钱包时,需要哪些东西?

在了解完上文提供的基础知识后,这个问题的答案已经非常明确了:如果你的比特币钱包使用了标准化的派生路径(绝大多数钱包都提供了查看派生路径的功能),那么,记住你所使用的地址类型,做好助记词的备份就足够了。在找回钱包时,软件会根据你指定的地址类型自动匹配派生路径的标准,推导出正确的地址。

如果你无法确定当前钱包使用的派生路径是否标准,那么请一定要备份好助记词和派生路径。有了二者的备份,你总是可以找回自己的资产。

不过,对于那些喜欢尝鲜特色功能,或是对自我托管有着更多诉求的用户来说,助记词加派生路径还不是找回钱包所需的全部。

例外情况

Passphrase (密语)钱包

对于普通用户来说,最容易出问题的一种情况是使用了密语钱包,而忘了备份密码短语。

Passphrase,被称为第 25 个助记词。实际上,它可以是单词、字符、数字、空格,以及这些元素的组合。通过在原有助记词的基础上增加这样一段密码短语,用户就可以创建出一套新的钱包账户,与原来的钱包完全没有联系,实现一个隐秘的保险库。这样,即便助记词泄漏,资产也不会丢失。在很多安全教程里,密语钱包也是抵御 “五美金扳手攻击” 的最佳选择之一。

如今,密语钱包的用户群体相当广泛,很多软硬件钱包都支持了这一功能。如果你选择使用密语钱包来提升安全性,最应当牢记的一点是:一定要做好密码短语的备份工作! 它和助记词一样,是无法通过任何方式找回的。不同的密码短语对应着完全不同的隐藏钱包,哪怕只改变原密码短语中的一个字符,得到的钱包也会截然不同。

一旦弄丢了密码短语,找回资产如同大海捞针。这比忘记了派生路径要严重得多。

- 图源:Trezor -

多签钱包

多签钱包将比特币自我托管的安全性提升到了前所未有的高度,在社区里应用相当广泛。但对于新手用户而言,使用多签的过程中也极易犯错。

以最常见的 2-3 多签为例,对于绝大多数新手来说,一个常见的误区是:我只需要持有两把私钥,就可以拿回属于我的资产。

这实际上是远远不够的。当你丢失了自己的钱包时,仅仅依靠两把私钥无法帮助你恢复资产。在私钥之外,你还需要备份所有参与创建多签钱包的扩展公钥。只有依靠这些信息,才可以在任意一款多签工具中恢复出原来的钱包,并利用手上满足数量要求的私钥来花费里面的资金。

一个更优雅的备份方式是记录下你多签钱包的描述符。描述符是一段字符串,里面包含了找回钱包所需的全部信息,可以用它来代替扩展公钥的备份,简化备份操作。目前主流的比特币钱包软件都添加了对描述符的支持。

另外,一些钱包最近也添加了对 BIP129(比特币安全多重签名设置,BSMS)的支持,它会在你创建多签钱包后给你一个 BSMS 文件。类似于描述符,这个文件里包含了关于恢复多签钱包所需的全部信息,在任何支持的钱包导入该文件,也可以恢复多签钱包。BSMS 的出现,就是为了在不同钱包之间提供一个标准化的多签设置流程。

关于如何用好比特币多签钱包,这里有一份非常详细的指南可供实践。

BIP85

BIP85 是一种利用助记词来派生助记词的新颖方案,目前已有少数钱包支持。有了 BIP85,用户利用一套助记词加上索引号(index),即可派生出确定性的新助记词。只要索引号不变,派生出的助记词就不会发生改变。利用该功能创建出来的子助记词之间互无关联,也无法逆向推导出主助记词。BIP85 常用于简化助记词的管理:当遇到各种需要创建新助记词的场景时,BIP85 可以极大地简化助记词的备份工作。

- BIP85 助记词派生方案 -

如果你使用了由 BIP85 派生的子助记词,记得备份好对应的索引号。和密码短语类似的是,索引号也是独一无二的。

非标准的助记词形式

少数钱包为用户提供了非标准助记词的选择,借以实现独特的功能。

上文提到的 Electrum 是个很典型的案例。Electrum 有自己独特的助记词版本系统,它在助记词内融合了版本号(Version Number),版本号用于指导钱包如何通过助记词派生出私钥和地址。因此,在 Electrum 的助记词系统里,用户需要备份的只有助记词,助记词本身已经包含了关于如何派生地址的一切信息。然而,这一特定类型的助记词只能用于 Electrum 钱包,无法与其它钱包兼容。因此,当你决定使用 Eletctum 创建的钱包助记词时,请做好一直使用 Electrum 钱包或者未来迁移资产的打算。(注:Electrum 支持导入标准的 BIP39 助记词,但不提供长期支持该类助记词的保证。)

另一种常见的非标准助记词形式就是 SLIP39(Shamir 密钥分割方案)。利用该方案,用户可以创建多份助记词分片,只需要持有指定数额的分片,即可恢复出钱包。以 3/5 的 Shamir 密钥分割方案为例:在创建钱包的时候会生成 5 份助记词分片,用户将这些分片分开保存。当需要恢复钱包时,需要凑齐其中的 3 份分片,才可以恢复出钱包。这一备份方案提供了更多的冗余,避免了助记词丢失/被盗的单点故障。如果你选择了这一备份方案,请记住:Shamir 密钥分割方案产生的助记词分片和标准的 BIP39 助记词无法互相转换。因此,当你需要恢复自己的助记词时,只能挑选支持该方案的钱包工具。而目前仅有少数几款软硬件钱包支持了 Shamir 备份。

此外,五花八门的非标准方案还有很多,由于受众过少,本文不再详述。

总结

对于任何一个持有比特币的人来说,都应该花点时间了解这些钱包相关的基础知识。已经有太多因为备份不当而导致资产丢失的惨痛案例了。

如果你还是一名新手,请使用支持标准助记词和派生路径的钱包,这可以帮你避免绝大部分坑。如果你已经有了一定的经验积累,想尝试一些复杂的方案来获得更高的安全性。那么,搞清楚它们背后运作的机制非常重要,请熟悉你所使用的工具后再转入资产。享受这些进阶方案所提供的附加优点的同时,做好必要的备份工作,避免悲剧发生。

感谢 @AurtrianAjian 对本文部分细节的指正。

(完)

延伸阅读

精通比特币:密钥、地址、钱包

比特币钱包备份方案简史

比特币都有哪些类型的助记词?

助记词备份指南

多签和拆分备份:让你的比特币更安全

转载

学分: 1

分类: 比特币

标签:

比特币 

钱包 

助记词 

点赞 0

收藏 0

分享

Twitter分享

微信扫码分享

本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

该文章收录于

BTCStudy 精选

31 订阅

53 篇文章

订阅专栏

你可能感兴趣的文章

关于dapp和钱包连接的真相

549 浏览

RoochBTC - 用链上索引器实现比特币二层

848 浏览

重新思考闪电网络

808 浏览

深入探讨比特币二层概念

1781 浏览

TI 专访 Merlin Protocol:构建在比特币网络上的资产适配协议

511 浏览

Web3专题(四) keccak256背后的故事(一个小八卦)

923 浏览

相关问题

debank钱包交易历史中的scam tx是什么意思

3 回答

小狐狸钱包点击connet连接,无法登陆Rabbithole

2 回答

小白问题:区块链的钱包余额,这数字是在哪儿存着了?

3 回答

RainbowKit / Wagmi 如何得到 custom chain 的 token balance?

1 回答

老板让做一个钱包, 后端就我一个,请问有什么开源的钱包可以拿来fork的么,语言最好是java ?

3 回答

metamask可以按照bip44中的分层路径导入钱包吗

1 回答

0 条评论

请先 登录 后评论

BTCStudy

关注

贡献值: 665

学分: 113

江湖只有他的大名,没有他的介绍。

专栏: BTCStudy 精选

文章目录

关于

关于我们

社区公约

学分规则

Github

伙伴们

ChainTool

为区块链开发者准备的开源工具箱

合作

广告投放

发布课程

联系我们

友情链接

关注社区

Discord

Twitter

Youtube

B 站

公众号

关注不错过动态

微信群

加入技术圈子

©2024 登链社区 版权所有 |

Powered By Tipask3.5|

粤公网安备 44049102496617号

粤ICP备17140514号

粤B2-20230927

增值电信业务经营许可证

×

发送私信

请将文档链接发给晓娜,我们会尽快安排上架,感谢您的推荐!

发给:

内容:

取消

发送

×

举报此文章

垃圾广告信息:

广告、推广、测试等内容

违规内容:

色情、暴力、血腥、敏感信息等内容

不友善内容:

人身攻击、挑衅辱骂、恶意行为

其他原因:

请补充说明

举报原因:

取消

举报

×

如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!

比特币都有哪些类型的助记词?

有哪些类型的助记词?BTCStudyBTCStudy首页全站目录标签地图mempool123btc比特币都有哪些类型的助记词?BTCStudyBTCStudy比特币都有哪些类型的助记词?搜 索首页全站目录标签地图mempool123btc主题设置字体设置使用助记词的目的是什么?BIP39ElectrumShamir 密钥分割(SLIP39)LND(AEZEED)结论仅有助记词并不一定能找回比特币钱包?比特币都有哪些类型的助记词?ColdBit2021-10-23钱包作者:ColdBit来源:https://coldbit.com/what-types-of-mnemonic-seeds-are-used-in-bitcoin/比特币助记词主要分为 4 类:BIP39ElectrumShamir 备份(SLIP39)LND(AEZEED)助记词存在的意义是什么?不同类型的助记词之间有何区别?我们能轻松辨别它们吗?在这篇文章中,我们将带你找到这些问题的答案。- 刻在 Coldbit Steel 上的 BIP39 助记词 -使用助记词的目的是什么?助记词主要用来将一个巨大的数字(私钥)转换成人类可读的形式,便于人们在不使用电子设备的情况下对其进行复制和备份。那为什么要方便人们用非电子设备来备份呢?好吧,与物理(如纸或金属)私钥备份相比,电子设备,尤其是联网设备,更容易被黑客入侵。联网设备和存储器容易遭到远程攻击,物理备份则必须亲身接触,而且执行起来难度更大。BIP39这一格式创建于 2013 年,之后开始成为最受欢迎也是最常用的助记词格式。BIP39 格式支持 128 位和 256 位随机数的编码,另外还可添加校验和(checksum)和口令词(passphrase)来保护私钥。单词表是固定的,共包含 2048 个单词。除了英语单词表之外,还有另外 7 种语言的单词表,但是英语之外的语言并不常用。BIP39 格式不支持有意的版本控制(简单至上)。ElectrumElectrum 钱包软件有两种助记词格式。从 2011 到 2014 左右,Electrum 使用的是旧版助记词格式。Electrum 2.0 开始使用 “新版” 助记词格式。Electrum 的旧版助记词格式(Electrum 2.0 之前的版本):单词表包含 1626 个英语单词。这个单词表与 BIP39 单词表之间存在部分重合,但并非完全相同。旧版格式支持助记词和随机数之间的双向编码。“双向” 在这里的意思是你既可以将二进制的随机数转换成助记词,也可以将助记词转换回二进制的随机数。这个格式不使用校验和。当前版本的 Electrum 依然可以识别这种格式并导入这类钱包(输入助记词后整个过程是自动化的)。Electrum 的新版助记词格式:Electrum 2.0 开始采用一种新的助记词格式 “助记词版本系统” 来修复已经发现的 BIP39 不足。这个格式使用不依赖固定单词表的 UTF8 标准化助记词的哈希值来生成密钥和地址。虽然这个助记词格式不依赖于固定单词表,但它使用了和 BIP39 一样的包含 2048 词的英语单词表。这个格式的另一个显著特征是,将版本号编码到助记词中。这么做的目的是,使得向前兼容未来钱包版本成为可能。版本号还对输出地址(Legacy、P2SH-Segwit、Native Segwit)的类型、使用的网络(主网或测试网)以及是单签钱包还是多签钱包进行了编码,以降低未来钱包找回的难度。点击此处,查看关于这一格式的完整表述。Shamir 密钥分割(SLIP39)2019 年,SatoshiLabs **基于 Adi Shamir 在 1979 年提出的密钥分割方案发布了助记词拆分格式 SLIP39**。这个格式的主要目的是能够使用 N 组单词对助记词进行编码,这样只要拥有 M 组单词即可找回助记词(M < = N)。这是一种门限助记词拆分方案,例如,假设有人使用 3 个不同的份额对助记词进行编码,只需要拥有其中 2 个份额就可以找回助记词。最多可支持 16 个份额。该编码方案支持基于里德-所罗门码(Reed-Solomon code)的健壮校验和,确保能够检测到影响在 3 个单词以内的任何错误,并且,对影响更大的错误,侦测失败的概率低于 1/10^9。和 BIP39 一样,SLIP39 也支持口令词作为可选项,用于提供额外的 保护/多账户设置。SLIP39 不支持版本控制。其单词表包含 1024 个英语单词。助记词长度通常是 20 个单词。33 个单词也是有可能的,但是目前没有硬件钱包支持这个长度的助记词。Trezor Model T 使用的是 20 个单词的助记词。LND(AEZEED)无论是 BIP39 还是 Electrum 格式都不够健壮,不能满足 Lightning Network Daemon 开发者的需求,所以他们在 2018 年创建了新格式。反对使用 BIP39 的主要原因是:缺少版本控制(因此,未来的钱包版本不一定知道如何生成所有必需的地址)缺少钱包生日(因此,钱包可能不知道要向前回溯多少个区块)- 初始状态:已经有 14 种标准了。“什么?14 种?荒唐!我们需要一种通用标准来满足所有用户场景!”“没错没错!” 结果状态:有了 15 种标准。 -LND AEZEED 应运而生。它是一种编码了生日的版本化方案,支持口令词作为可选项,而且同样使用 BIP39 单词表。助记词的长度是 24 个单词。有趣的是,没有其它闪电网络钱包使用 AEZEED 格式。例如,Eclair 使用的是 BIP39,C–Lightning 使用的是 Bitcoin Core 内置钱包。值得一提的是,AEZEED 有一些有趣的特性:助记词本身就是一段密文。也就是说,如果用户另外设置了口令词,让助记词原样保存也没有问题。相反,在 BIP39 格式下,有时候只需要助记词(不需要口令词)就足以盗取资金。可通过修改一个 cipherseed 来改变口令词。这意味着,如果用户想要安全强度更高的密码,可以先(使用旧口令)解密,然后(使用新口令)加密。最终结果是,用户升级了口令,但使用的还是之前那个 HD 密钥路径(钱包地址不变)。相反,在 BIP39 格式下,如果用户使用了口令,由于映射是单向的,他们无法改变已有 HD 密钥链的口令(在 BIP 39 格式下,改变口令会生成一个全新的 HD 密钥链,因此地址也会改变,既两个密钥链并存)。缺点是你无法为一个助记词设置多个口令(但是 BIP39 支持这一功能)。在 AEZEED 格式下,使用新的口令会创建新的助记词,因为密码是用来对最终助记词进行编码的。在 BIP 39 格式下,口令仅用于将助记词转化为二进制种子的最后一步。结论方向默认长度单词表口令应用年份BIP 39单向12/24 词2048 词可选2013Electrum (旧版)双向12 词1626 词无2011-2014Electrum (新版)单向12 词BIP 39 单词表可选2014Shamir Secret Sharing (SLIP39)双向20 词1024 词可选2019LND (AEZEED)双向24 词BIP 39 单词表可选2018仅有助记词并不一定能找回比特币钱包?没错。在某些情况下,如果你只有一个 12/24 词助记词,并不一定可以找回钱包。如果你忘了这个助记词对应的是哪种格式,你可能得尝试几种不同的组合和格式。希望上文的列表可以帮到你。NostrrssTeleg

求助大佬们,怎么理解(地址、密码、私钥、助记词、keystore)这些词? - 知乎

求助大佬们,怎么理解(地址、密码、私钥、助记词、keystore)这些词? - 知乎首页知乎知学堂发现等你来答​切换模式登录/注册信息技术(IT)密码比特币 (Bitcoin)区块链(Blockchain)币圈求助大佬们,怎么理解(地址、密码、私钥、助记词、keystore)这些词?关注者11被浏览4,711关注问题​写回答​邀请回答​好问题​添加评论​分享​7 个回答默认排序倚天照海​好阅读,好思考,好游历四方,好奇。永远年轻,永远热泪盈眶。​ 关注我们用支付宝付款时,需要输入密码或通过其它方式验证身份,借以控制自己的账户。对于比特币,如何证明你发出的支付信息是你发出的呢?如何确保发出的信息不被篡改呢?换言之,如何控制自己的比特币呢?这就涉及到一种叫数字签名的技术了。与银行开户不同,比特币的账户无需申请注册,可随机生成。首先,我们可以随机生成一个私钥,私钥也是一个256位的二进制数。抛256次硬币,正面朝上记成1,反面朝上记成0,这样也能随机生成一个私钥。然后用椭圆曲线数字签名算法(ECDSA)对私钥进行运算,生成公钥,再对公钥进行哈希运算,就得到了地址。私钥生成公钥的过程也是不可逆的,从公钥无法反推私钥,想试出私钥得试到天荒地老。用椭圆曲线数字签名算法生成的公钥可以配合私钥,进行非对称加密。非对称加密是什么意思呢?我们先来了解一下对称加密,对称加密中,加密解密的密钥都是一样的。比如有一条信息是1234567,我们用密钥9对它进行加密,1234567×9就得到了密文11111103,解密的时候11111103÷9就解密出了1234567,加密解密的密钥都是9(当然实际的加密解密过程肯定比我这个例子复杂得多)。但在非对称加密中,加密解密的密钥则互不相同。比特币里,私钥可以用来加密信息,而公钥则用来解密该信息。比特币里没有人的概念,只有地址的概念,提到你有多少个比特币,其实是说你的地址上有多少个比特币。那要怎么才能控制你地址上的币呢?就要靠私钥。公钥和地址都可以公开,但私钥一定不能泄露。比如小明要给小强一个比特币,小明的比特币地址是A,小强的比特币地址是B,小明就要将“A地址给B地址一个比特币”这条账单进行哈希运算,得到的哈希值再用A地址的私钥加密,加密得到的密文连同A地址的公钥、“A地址给B地址一个比特币”这条账单一起,广播出去。收到该信息的人会进行检查,计算公钥得到地址,判断该信息中公钥和地址是否对应,再用公钥把密文解密成哈希值,同时也对账单进行哈希运算,得到另一个哈希值。这时候比较一下两个哈希值,如果哈希值相同,就说明这条信息确实是地址的主人发出的,也没有被篡改。如果有人伪造了“A地址给B地址一个比特币”这一信息,首先,伪造信息里A的公钥不能变,因为公钥可以推算出地址,变了公钥推算出的地址就会与A不符,别人立马就能发现这是假消息了。其次,伪造者没有A地址的私钥,他伪造的账单哈希值密文必然与真实密文不同,这时候别人用公钥解密,解密出的哈希值也必然不同于用账单计算出的哈希值,这条信息就肯定不真实。还有一种情况是信息内容遭到篡改,比如把信息篡改成“A地址给B地址十个比特币”,这种情况下,账单变了,但公钥和账单哈希值密文都没变。按上面的思路分析一遍,你也会发现,篡改信息会导致两个哈希值相异。可以看出,私钥犹如地址对应的一支独一无二的签字笔,能签出独一无二的签名,证明你是对应地址的主人,所以我们也把该过程称为数字签名。你用私钥签名了,你这个地址的付款信息才会被别人接受。要是你丢了私钥,你就无法使用地址上的币,尽管你地址上有多少币都是清清楚楚地记录在区块链账本上的。要是别人知道了你的私钥,他就可以转走你地址上的币,比特币的世界里,是只认私钥不认人的。所以,说私钥安全性重于泰山也不为过。不过,私钥并不像登录时输入的密码,它本身是可以完全不触网的,完全可以在离线状态下对付款信息签名(其实就是用私钥加密付款信息的哈希值),然后把付款信息和签名信息发送到网上即可,别人也无法从签名反推私钥,这是由椭圆曲线数字签名算法的性质决定的。比特币的“钱包”,存放的不是币而是私钥,所谓的“冷钱包”就是不联网的钱包,可以有效防御黑客盗取私钥。用比特币钱包付款时输入的密码,实际上起到的作用是授权调用私钥进行签名,而非是私钥本身。由于地址之类信息用二进制表示非常长,比特币采取了一种叫Base58的编码方式,将二进制数转换成58进制数表示,所以我们看到的地址之类信息就是一串大小写字母和数字的组合。为便于记忆及管理私钥,人们又设计出了助记词,助记词一般是12个单词,出自2048个常见单词构成的词库,助记词对应着一个随机生成的种子,是种子一种易于记忆的形式。种子可生成一个主私钥,主私钥可通过确定性的、不可逆的算法,生成多个币种的子私钥,子私钥又可继续生成孙私钥……子子孙孙无穷匮也。这样,用一组助记词就可以统一管理多个币种的多个私钥,省去了很多麻烦,这样的加密货币钱包,被称为HD钱包(分层确定性钱包)。不要以为助记词只有12个词就不安全,2048^12≈5.4×10^39是个天文数字,指望随机输入助记词碰巧试出一个有币的地址,是根本不可能的。需要补充的是,比特币记账实际上是UTXO(未花费的交易输出)模型,比特币的账户余额实际上是地址上的UTXO总和。UTXO模型类似于不断销毁用掉的旧币又不断创造可用的新币,感兴趣的朋友可以深入了解UTXO模型,这里不再赘述了。编辑于 2022-04-15 23:14​赞同 5​​2 条评论​分享​收藏​喜欢收起​知乎用户WmbEer​ 关注地址:卡号密码:登录密码私钥:实名(人脸)认证助记词:密保keystore:存储私钥的加密方式,比如你的私钥串是123456,经过加密后存储在后台就是Txtygd发布于 2021-10-25 01:55​赞同 1​​添加评论​分享​收藏​喜欢

Just a moment...

a moment...Enable JavaScript and cookies to conti

助记词 - 廖雪峰的官方网站

助记词 - 廖雪峰的官方网站

Index

廖雪峰的官方网站

Blog

Java教程

手写Spring

手写Tomcat

Makefile教程

Python教程

JavaScript教程

区块链教程

SQL教程

Git教程

文章

问答

More

Java教程

手写Spring

手写Tomcat

Makefile教程

Python教程

JavaScript教程

区块链教程

SQL教程

Git教程

文章

问答

Java教程

手写Spring

手写Tomcat

Makefile教程

Python教程

JavaScript教程

区块链教程

SQL教程

Git教程

文章

问答

 

Profile

Passkey

Sign Out

Sign In

English

简体中文

Index

区块链教程

比特币

区块链原理

P2P交易原理

私钥

公钥和地址

签名

挖矿原理

可编程支付原理

多重签名

UTXO模型

Segwit地址

HD钱包

钱包层级

助记词

地址监控

以太坊

账户

区块结构

交易

智能合约

编写合约

部署合约

调用合约

编写Dapp

常用合约

ERC20

Wrapped Ether

关注公众号不定期领红包:

加入知识星球社群:

关注微博获取实时动态:

助记词

Last updated: ...

/

Reads: 558864

Edit

从HD钱包的创建方式可知,要创建一个HD钱包,我们必须首先有一个确定的512bit(64字节)的随机数种子。

如果用电脑生成一个64字节的随机数作为种子当然是可以的,但是恐怕谁也记不住。

如果自己想一个句子,例如bitcoin is awesome,然后计算SHA-512获得这个64字节的种子,虽然是可行的,但是其安全性取决于自己想的句子到底有多随机。像bitcoin is awesome本质上就是3个英文单词构成的随机数,长度太短,所以安全性非常差。

为了解决初始化种子的易用性问题,BIP-39规范提出了一种通过助记词来推算种子的算法:

以英文单词为例,首先,挑选2048个常用的英文单词,构造一个数组:

const words = ['abandon', 'ability', 'able', ..., 'zoo'];

然后,生成128~256位随机数,注意随机数的总位数必须是32的倍数。例如,生成的256位随机数以16进制表示为:

179e5af5ef66e5da5049cd3de0258c5339a722094e0fdbbbe0e96f148ae80924

在随机数末尾加上校验码,校验码取SHA-256的前若干位,并使得总位数凑成11的倍数。上述随机数校验码的二进制表示为00010000。

将随机数+校验码按每11 bit一组,得到范围是0~2047的24个整数,把这24个整数作为索引,就得到了最多24个助记词,例如:

bleak version runway tell hour unfold donkey defy digital abuse glide please omit much cement sea sweet tenant demise taste emerge inject cause link

由于在生成助记词的过程中引入了校验码,所以,助记词如果弄错了,软件可以提示用户输入的助记词可能不对。

生成助记词的过程是计算机随机产生的,用户只要记住这些助记词,就可以根据助记词推算出HD钱包的种子。

注意:不要自己挑选助记词,原因一是随机性太差,二是缺少校验。

生成助记词可以使用bip39这个JavaScript库:

const bip39 = require('bip39');

----

let words = bip39.generateMnemonic(256);

console.log(words);

console.log('is valid mnemonic? ' + bip39.validateMnemonic(words));

运行上述代码,每次都会得到随机生成的不同的助记词。

如果想用中文作助记词也是可以的,给generateMnemonic()传入一个中文助记词数组即可:

const bip39 = require('bip39');

----

// 第二个参数rng可以为null:

var words = bip39.generateMnemonic(256, null, bip39.wordlists.chinese_simplified);

console.log(words);

注意:同样索引的中文和英文生成的HD种子是不同的。各种语言的助记词定义在bip-0039-wordlists.md。

根据助记词推算种子

根据助记词推算种子的算法是PBKDF2,使用的哈希函数是Hmac-SHA512,其中,输入是助记词的UTF-8编码,并设置Key为mnemonic+用户口令,循环2048次,得到最终的64字节种子。上述助记词加上口令bitcoin得到的HD种子是:

b59a8078d4ac5c05b0c92b775b96a466cd136664bfe14c1d49aff3ccc94d52dfb1d59ee628426192eff5535d6058cb64317ef2992c8b124d0f72af81c9ebfaaa

该种子即为HD钱包的种子。

要特别注意:用户除了需要记住助记词外,还可以额外设置一个口令。HD种子的生成依赖于助记词和口令,丢失助记词或者丢失口令(如果设置了口令的话)都将导致HD钱包丢失!

用JavaScript代码实现为:

const bip39 = require('bip39');

----

let words = bip39.generateMnemonic(256);

console.log(words);

let seedBuffer = bip39.mnemonicToSeed(words);

let seedAsHex = seedBuffer.toString('hex');

// or use bip39.mnemonicToSeedHex(words)

console.log(seedAsHex);

根据助记词和口令生成HD种子的方法是在mnemonicToSeed()函数中传入password:

const bip39 = require('bip39');

----

let words = bip39.generateMnemonic(256);

console.log(words);

let password = 'bitcoin';

let seedAsHex = bip39.mnemonicToSeedHex(words, password);

console.log(seedAsHex);

从助记词算法可知,只要确定了助记词和口令,生成的HD种子就是确定的。

如果两个人的助记词相同,那么他们的HD种子也是相同的。这也意味着如果把助记词抄在纸上,一旦泄漏,HD种子就泄漏了。

如果在助记词的基础上设置了口令,那么只知道助记词,不知道口令,也是无法推算出HD种子的。

把助记词抄在纸上,口令记在脑子里,这样,泄漏了助记词也不会导致HD种子被泄漏,但要牢牢记住口令。

最后,我们使用助记词+口令的方式来生成一个HD钱包的HD种子并计算出根扩展私钥:

const

bitcoin = require('bitcoinjs-lib'),

bip39 = require('bip39');

----

let

words = 'bleak version runway tell hour unfold donkey defy digital abuse glide please omit much cement sea sweet tenant demise taste emerge inject cause link',

password = 'bitcoin';

// 计算seed:

let seedHex = bip39.mnemonicToSeedHex(words, password);

console.log('seed: ' + seedHex); // b59a8078...c9ebfaaa

// 生成root:

let root = bitcoin.HDNode.fromSeedHex(seedHex);

console.log('xprv: ' + root.toBase58()); // xprv9s21ZrQH...uLgyr9kF

console.log('xpub: ' + root.neutered().toBase58()); // xpub661MyMwA...oy32fcRG

// 生成派生key:

let child0 = root.derivePath("m/44'/0'/0'/0/0");

console.log("prv m/44'/0'/0'/0/0: " + child0.keyPair.toWIF()); // KzuPk3PXKdnd6QwLqUCK38PrXoqJfJmACzxTaa6TFKzPJR7H7AFg

console.log("pub m/44'/0'/0'/0/0: " + child0.getAddress()); // 1PwKkrF366RdTuYsS8KWEbGxfP4bikegcS

可以通过https://iancoleman.io/bip39/在线测试BIP-39并生成HD钱包。请注意,该网站仅供测试使用。生成正式使用的HD钱包必须在可信任的离线环境下操作。

小结

BIP-39规范通过使用助记词+口令来生成HD钱包的种子,用户只需记忆助记词和口令即可随时恢复HD钱包。

丢失助记词或者丢失口令均会导致HD钱包丢失。

Comments

Make a comment

Sign in to

make a comment

Index

区块链教程

比特币

区块链原理

P2P交易原理

私钥

公钥和地址

签名

挖矿原理

可编程支付原理

多重签名

UTXO模型

Segwit地址

HD钱包

钱包层级

助记词

地址监控

以太坊

账户

区块结构

交易

智能合约

编写合约

部署合约

调用合约

编写Dapp

常用合约

ERC20

Wrapped Ether

廖雪峰的官方网站

©Copyright 2019-2021

Powered by iTranswarp

Feedback

License

什么是助记词以及为什么它对加密货币钱包至关重要?

记词以及为什么它对加密货币钱包至关重要?MENU知识库返回explainCKBot·October 4, 20232 mins什么是助记词以及为什么它对加密货币钱包至关重要?在庞大的加密货币数字环境中,深入了解保护和安全机制显得尤为重要。在保护数字资产安全的关键工具中,助记词起着至关重要的作用。本文旨在揭示助记词的概念及其在保护加密货币钱包中的关键作用。

认识加密货币钱包

加密货币钱包是一种特殊的软件,用于存储私钥和收发加密货币。我们可以将其视为加密货币的银行账户。这些钱包主要分为两种类型:软件钱包(在线钱包、桌面端钱包、移动端钱包)和硬件钱包。在线钱包基于云,可从任何设备访问,而桌面端钱包和移动端钱包则下载到特定设备。另一方面,硬件钱包将用户的私人密钥存储在物理设备上,往往看起来像一个便携式 U 盾。

这些钱包的运行基于公钥和私钥。公钥类似于银行账号,用于接收资金;私钥则类似于 PIN 码,是验证交易的秘密信息。确保私钥的安全至关重要,因为私钥泄露可能会导致加密货币丢失。

什么是助记词?

助记词,也称为恢复短语或种子短语,是存储恢复加密货币钱包所需的全部信息的单词列表。它是加密货币安全性的重要组成部分,可被视为钱包的 "万能钥匙"。

助记词通常由 12、15、18、21 或 24 个单词组成,这些单词是从一个包含 2048 个单词的预定列表中生成的。助记词的单词数量与安全级别相对应——更多的单词意味着更多的可能组合,因此安全性更高。

如何生成助记词?

助记词是根据加密标准生成的,其中最常见的加密标准是 BIP-39(比特币第 39 号改进提案)。以下是该过程的简化概述:

生成随机数: 流程从生成随机数开始,这个随机数也称为熵。熵的大小决定了种子的安全性;熵越大,种子越难猜测。

创建校验和: 接下来,生成随机数的校验和。校验和是冗余校验的一种形式,是一种检测数据传输或存储期间可能引入错误的简单方法。

合并熵和校验和: 将步骤 2 生成的校验和附加到步骤 1 生成的随机数末尾。

分段: 将合并数据(根据助记词中的所需单词数)分成若干段。

映射到单词表: 每个部分都映射到单词表中的一个单词。该数字代表单词列表中的位置,因此可以翻译成单词。

创建助记词: 将相应的单词按顺序排列在一起,形成助记词。助记词中的最后一个单词通常是校验和,用于验证其他单词的记录是否正确。

BIP-39 标准被广泛应用于许多不同类型的加密货币钱包,包括比特币和许多其他加密货币的钱包。它是一种经过验证的生成安全助记词的方法,因此经常成为助记词讨论的焦点。

然而,一些以太坊钱包,如小狐狸钱包(MetaMask),使用另一种称为 BIP-32/44 的标准来生成和管理密钥。它们仍然使用一个 12 个单词的种子短语(类似于 BIP-39 的助记词),但生成该短语和从中提取密钥的方法有所不同。

就 MetaMask 而言,它使用 BIP-44 标准进行密钥派生,让用户可以使用多账户钱包。每个账户都有自己的一对公钥和私钥,但它们都源自同一个根助记词。这与 BIP-39 不同,在 BIP-39 中,每对密钥都有自己独特的助记词。

无论使用哪种特定标准,助记词的目的都是一样的:提供一种人类可读的密钥(或根密钥)格式,用于恢复和备份钱包。处理这些助记词的安全考虑因素在所有钱包和标准中也是相似的。

助记词与私钥的关系

助记词与加密货币钱包中使用的私钥直接相关。私钥允许你访问区块链钱包中的加密货币并授权交易。助记词是一种备份,如果你丢失了加密货币钱包的访问权限,它可以让你重新获得私钥。

加密货币钱包中助记词的重要性

助记词可以视为数字资产的故障保险。如果你的钱包软件不小心被删除了,或者你的设备丢失或被盗,助记词可以让你恢复你的加密货币。这是因为助记词充当了你钱包的主密钥,能够重新生成你的私钥并恢复你的资产。

此外,助记词强化了加密货币的去中心化原则。助记词让用户对其数字资产拥有绝对的控制权和所有权,而无需依赖外部方进行恢复。然而,这种自我保管也伴随着风险。如果你的助记词丢失或曝露,你可能会永久失去对钱包的访问权限。因此,以最高的安全性存储和处理助记词至关重要。

如何安全地保存助记词

对于任何涉足加密货币的人来说,保存好你的助记词都应该是重中之重。第一步也是最重要的一步,是将你的助记词写下来,最好抄写两份,这样可以确保在其中一份丢失或损坏时有备份。

甚至有一些产品可以让你将助记词记录在金属面板上,以确保在火灾或其他自然灾害中它也不会被毁灭。

将助记词数字化似乎非常便利也很有吸引力,但这样做存在着巨大的安全风险。在电脑的记事本上记录助记词,或者以照片或截图的方式保存助记词,都会为潜在黑客打开访问助记词的通道,例如通过侵入你的 iCloud 或其他基于云的存储系统获取到你的助记词。

保持助记词的机密性也至关重要。绝不能与任何人分享你的助记词。任何信誉良好的服务提供商或钱包开发商都不会要求你提供助记词。如果他们要求你提供助记词,那显然是在与骗子打交道。

如果你怀疑助记词已经暴露或丢失,必须立即采取行动。最关键的一步是将你的资金转移到一个带有新助记词的新钱包。

有关助记词的常见问题和误解

关于助记词存在一些常见的误解和问题。例如,一旦生成,助记词就不能更改。此外,由于黑客攻击的风险,不建议以数字化的方式存储助记词。尽管大多数钱包都使用助记词,但也有例外。只要钱包兼容 BIP-32,助记词就可以在不同的钱包中使用。但需要注意的是,一旦创建,助记词就不能更改了。助记词是永久性的,应该以最谨慎和最安全的方式处理。

总结

总体而言,助记词是加密货币钱包安全的支柱。助记词不仅能在钱包丢失或损坏时恢复钱包,还能确保用户保持对其资产的绝对所有权。

随着加密货币的日益普及,了解助记词的功能和重要性至关重要。助记词在提供强大安全措施的同时,也要求用户负责任地处理。最重要的是,要以物理的方式(而非数字化的方式)去存储它们,避免共享,并在它们受到暴露时立即采取行动。毕竟,加密货币的世界不仅涉及投资,还涉及操作的安全性。Table of contents:最近的文章:What are Wrapped Tokens in Cryptocurrency?The Ultimate Guide to Bitcoin Ordinals and InscriptionsWhat are Airdrops in Cryptocurrency?分类:bitcoinaccount abstractionpopularconsensuseconomicsnodeeducationpownervosblockchainutxoscaling分享此文章:发现CKB挖矿钱包旅途WikiMedia Kit开发者文档Github区块浏览器生态系统CryptapeGodwokenNervina LabsTunnel Vision LabsAxon.bitMagickbase社区社区基金 DAONervos Talk ForumRFCs CKB 节点探针学习知识库MediumYoutube成为更大的一部分。订阅 Nervos 月度通讯,保持领先。©Nervos is an open-source project initiated by the Nervos Foundation. All Rights Reserv