钱包的原理

【技术深度】加密货币钱包恢复技术详解:从密码学原理到实战应用 加密货币钱包恢复是一个技术密集型的领域,涉及密码学、分布式计算、GPU编程等多个技术领域。虽然完全丢失私钥的情况下恢复几乎不可能,但在拥有部分信息的情况下,通过合理的技术方案和足够的计算资源,恢复成功率可以达到相当高的水平。 阅读详情

首先,我们需要知道一点,比特币钱包里面并没有比特币。钱包是管理密钥、地址、跟踪余额和创建交易的软件。我们的比特币数据是存储在区块链上的,而不是在钱包里。
经过前面几篇文章的解读,我们知道一个私钥生成公钥,公钥生成地址,这三者是一一对应的,就是一个私钥只有一个公钥和一个地址。但是我们在往交易所充币的时候,看到交易所为我们每个人生成一个独一无二的地址。这是怎么做的呢?接下来均益就来解读比特币的钱包。
目前钱包分为两种,一种是非确定性(随机)的钱包,就是随机生成多个私钥,钱包管理这些私钥。如果需要成千上万的地址,通过随机的方式来生成私钥,这就需要存储那么多无规律的私钥,这样就很麻烦不好管理。另一种是确定性(种子)的钱包,就是通过种子可以生成无数的私钥,我们只需要记住种子就可以了。我们在使用钱包时记住的助记词可以生成种子,只要我们保管好助记词,我们的币就能找回来。那么问题来了?

  1. 种子是怎么来的?
  2. 种子是怎么生成无数地址的?

带着这两个问题,我们来研究一下。先上一个大概图,然后我们再一步一步来解析


钱包生成私钥

主要流程是这样的

第一,随机生成128到258位的随机数,我们这里叫做熵;
第二,熵经过一定处理方法,生成助记词;
第三,助记词经过密钥延伸函数PBKDF2,生成种子;
第四,种子经过HMAC-SHA512算法,生成母密钥;
第五,通过CKD(child key derivation)函数,母密钥生成众多子密钥。

接下来均益一步步解析这里面的细节

一、从熵到助记词

1、随机生成一个128到258位的数字,叫做熵
2、熵通过SHA256哈希得一个值,取前面的几位(熵长/32),记为y
3、熵和y组成一个新的序列,
4、将新序列以11位为一部分,已经预先定义2048个单词的字典做对应,单词的列表像这样的 https://github.com/trezor/python-mnemonic/blob/master/mnemonic/wordlist/english.txt
5、生成的有顺序的单词组就是助记词
如图:

从熵到助记词

二、从助记词生成种子

助记词表示长度为128至256位的熵。 通过使用密钥延伸函数PBKDF2,熵被用于导出较长的(512位)种子。
PBKDF2的基本原理是通过一个伪随机函数(例如HMAC函数),把明文和一个盐值作为输入参数,然后重复进行运算,并最终产生密钥。如果重复的次数足够大,破解的成本就会变得很高。而盐值的添加也会增加“彩虹表”攻击的难度。
比特币钱包中,PBKDF2函数的第一个参数是助记词,第二个参数盐,由字符串常数“助记词”与可选的用户提供的密码字符串连接组成。使用HMAC-SHA512算法,使用2048次哈希来延伸助记符和盐参数,产生一个512位的值作为其最终输出。 这个512位的值就是种子。如图


从助记词生成种子

三、从种子到母密钥

512位分成平均分成两部分,左边的256位为母私钥,右边的256位为链码。母私钥、链码和索引号,CKD(child key derivation)函数去从母密钥衍生出子密钥。如图


从种子到主密钥

三、从母密钥到子密钥

母密钥、链码、索引合并在一起并且用HMAC-SHA512函数散列之后可以产生512位的散列。所得的散列可被拆分为两部分。散列右半部分的256位产出可以给子链当链码。左半部分256位散列以及索引码被加载在母私钥上来衍生子私钥。在图中,我们看到这个说明——索引集被设为0去生产母密钥的第0个子密钥(第一个通过索 引)。


从主密钥到子密钥

四、扩展密钥

母密钥和链码结合叫做扩展密钥,拥有扩展私钥可以推导出子私钥,扩展公钥可以推导出子公钥。拥有扩展公钥就可以推导出子公钥,在服务器不需要母私钥也可以,这样就更安全更方便。但是还有一个问题,那就是扩展公钥包含有链码,如果子私钥被知道或者被泄漏的话,链码就可以被用来衍生所有的其他子私钥。简单地泄露的私钥以及一个母链码,可以暴露所有的子密钥。更糟糕的是,子私钥与母链码可以用来推断母私钥。
为此,HD钱包使用一种叫做硬化衍生(hardened derivation)的替代衍生函数。这就“打破”了母公钥以及子链码之间的关系。这个硬化衍生函数使用了母私钥去推导子链码,而不是母公钥。这就在母/子顺序中创造了一道“防火墙”——有链码但并不能够用来推算子链码或者姊妹私钥。强化衍生函数看起来几乎与一般的衍生的子私钥相同,不同的是母私钥被用来输入散列函数中而不是母公钥。如图


扩展密钥

五、钱包索引

1、前面说到索引和私钥链码可以生成子密钥,这个索引号码是32位的整数。为了区分密钥是从正常衍生函数中衍生出来还是从强化衍生函数中产出,这个索引号被分为两个范围。索引号在0和2^31–1(0x0 to 0x7FFFFFFF)之间的是只被用在常规衍生。索引号在231和232– 1(0x80000000 to 0xFFFFFFFF)之间的只被用在强化衍生。因此,索引号小于231就意味着子密钥是常规的,而大于或者等于231的子密钥就是强化型的。

2、钱包索引识别路径
HD钱包中的密钥是用“路径”命名的,且每个级别之间用斜杠(/)字符来表示(见表5-6)。由主私钥衍生出的私钥起始以“m”打头。由主公钥衍生的公钥起始以“M“打头。因此,母密钥生成的第一个子私钥是m/0。第一个公钥是M/0。第一个子密钥的子密钥就是m/0/1,以此类推。
密钥的“祖先”是从右向左读,直到你达到了衍生出的它的主密钥。举个例子,标识符m/x/y/z描述的是子密钥m/x/y的第z个子密钥。而子密钥m/x/y又是m/x的第y个子密钥。m/x又是m的第x个子密钥。


钱包密钥识别符(路径)


作者:均益qrk
链接:https://www.jianshu.com/p/f4a41e62a682
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
【深度科普】加密货币钱包恢复的技术原理与实践:助记词、私钥丢失了怎么办? 在区块链的世界里,私钥和助记词就是你通往数字资产宝库的唯一钥匙。然而,由于各种原因——硬盘损坏、记忆模糊、备份丢失——这把钥匙可能会暂时“失灵”。本文将从技术原理出发,深入探讨加密货币钱包恢复的可能性,并为那些陷入困境的朋友们提供一个经过验证的专业解决方案。 阅读详情

相关推荐

英文助记词大全.doc

英文助记词大全.doc

java语言分析区块链钱包生成的原理

java语言分析区块链钱包生成的原理

nandao158的博客 4199

win7人机对话语音识别补丁

win7的语音输入功能非常实用,可以把人的语音转化成文字,使文字输入工作变得轻松,省去了打字的烦恼。这是人机对话语音识别软件补丁, 安装后增加识别准确率。

助记词

助记词 助记词顾名思义就是用来辅助记忆私钥的,私钥是32个字节数字,如:0xa8d264b13e6c7949fc31c0c7555fe10849d0f3f05af0a1ffeb8239f68b2fe7e1 ,不利于记忆,如果是以单词的形式记忆起来就好很多了。助记词一般由12/24个单词构成,2个单词之间由1个空格隔开,这些单词都来源于一个固定词库,是由私钥根据一定算法得来,所以助记词是私钥的另一种表现形式。 根据BIP39规范提出了一种计算私钥的方式,首先选择2048(0x800)个常用单词组成一个数组,

icefish_tm的博客 1万+

汇编语言基本指令记忆要点分析

汇编语言基本指令记忆要点分析 初学汇编语言难免感觉抽象难懂不好记忆,实际上任何语言都有其特点或规律,学习时只要能发现并掌握其规律就会事半功倍。本文以8086 微处理器为例,对一些常用基本指令的特点及记忆要点进行了分析。

imtoken英文助记词大全

这里汇聚了2048个英文助记词,您的钱包如果助记词记录有误,你可在这里进行校对,查询相近的单词

一文详解Bitcoin Wallet(btc钱包),推荐bitget钱包

比特币的诞生标志着去中心化金融系统的到来。为了保护用户隐私,比特币融合了四种类型的地址:遗留(Legacy)/支付公钥哈希(P2PKH)、支付脚本哈希(P2SH)、原生隔离见证(P2WPKH)和主根(P2TR),每种类型的地址都具有独特的隐私和安全功能。Bitget钱包 以其用户友好的界面和强大的安全措施而闻名,无论国内还是国外,它都是购买比特币的绝佳交易平台。无论你想要购买比特币还是以太坊或莱特币之类的币种,Bitget钱包 平衡了安全性和易用性,成为存储比特币、以太坊、莱特币等加密货币的热门选择。

QiJublockchain的博客 6867

Words图解词根词源10000单词速记下

内容介绍 本书采用的英语单词词根连锁记忆法,旨在帮助读者了解英语单词的内在规律,以便使读者能迅速地掌握大量单词,彻底摆脱单词记忆的痛苦。 本书特点如下: 一、用一种诙谐幽默的联想帮助读者牢牢记住词根的意思: 二、打破传统编排,将各个同根词图解为前缀派生(词义变化)和后缀派生(词性变化),只要记住前缀派生的单词,后缀派生的单词词义就迎刃而解,大大降低了单词记忆的难度; 三、对于前缀派生的单词词义进行了联想引申,让读者过目不忘,牢牢记住词义: 四、精选派生能力强的词根,摒弃了生僻的词根,减少读者不必要的负担,强调单词记忆的效率: 五、列出每个词根派生的所有单词,最大限度地扩充读者的词汇量: 六、在右上角对每个单词的等级进行了清晰的标注,让不同层次的读者有的放矢。

钱包架构与工作原理

fill:#333;important;important;fill:none;color:#333;color:#333;important;fill:none;fill:#333;height:1em;钱包安全实践密钥安全使用安全备份策略监控维护使用硬件钱包安全存储助记词使用强密码启用2FA验证网站URL检查交易详情谨慎授权合约避免公共WiFi多重备份异地存储定期测试恢复更新备份定期更新软件监控账户活动设置余额提醒学习安全知识。

m0_67298586的博客 1026

FPGA:将FIFO封装成AXI接口的IP

封装AXI_stream的接口IP核

m0_46830519的博客 4217

GPD源码分析

gpd使用示例 先看下面一段代码,为标准gpd算法的使用方法,可以看到输入为点云,cloud_camera_; 输入:std::unique_ptr<gpd::util::Cloud> cloud_camera_ 输出: std::vector<std::unique_ptr<gpd::candidate::Hand>> grasps; // detect grasp poses gpd对象:std::unique_ptr<gpd::GraspDetect.

weixin_41003113的博客 2334

钱包的原理-助记词

首先,我们需要知道一点,比特币钱包里面并没有比特币。钱包是管理密钥、地址、跟踪余额和创建交易的软件。我们的比特币数据是存储在区块链上的,而不是在钱包里。经过前面几篇文章的解读,我们知道一个私钥生成公钥,公钥生成地址,这三者是一一对应的,就是一个私钥只有一个公钥和一个地址。但是我们在往交易所充币的时候,看到交易所为我们每个人生成一个独一无二的地址。这是怎么做的呢?接下来均益就来解读比特币的钱包。目前...

wyf_ylrf的博客 1万+

AI 模型训练核心方法论:零基础也能落地的 8 个关键阶段

本文是为 AI 零基础学习者打造的模型训练入门指南,以生活化语言拆解核心概念,规避专业术语壁垒。内容先通俗阐释模型训练、监督学习、数据集划分等基础概念,再按问题定义、数据准备、模型选择、环境搭建、训练、评估、调参、部署 8 个阶段,拆解完整训练流程,搭配 PyTorch 代码示例与实战案例,同时提供资源预算、常见问题解决方案及学习路径。指南强调数据的核心重要性,推荐新手优先使用迁移学习和免费 GPU 资源,兼顾理论与实操,帮助学习者快速上手,避开训练误区,独立完成从模型搭建到部署的全流程。

weixin_52741870的博客 469

加密货币钱包原理与开发

在区块链技术蓬勃发展的今天,加密货币钱包作为管理数字资产的核心工具,已成为用户进入加密世界的必备钥匙。加密货币钱包分为热钱包(联网)和冷钱包(离线),前者便于频繁交易,后者以硬件或纸钱包形式提供更高安全性。分层确定性钱包(HD钱包)通过助记词派生无限子密钥,兼顾便捷与安全,成为主流方案。跨链钱包则依赖智能合约或原子交换技术,例如通过Cosmos SDK构建支持IBC协议的钱包,实现异构链互通。未来,随着账户抽象(AA)和零知识证明技术的成熟,钱包将进一步提升用户体验,成为连接现实与区块链宇宙的超级入口。

qxmxbn_551的博客 223

Ubuntu中snap简单介绍

通过Snap可以安装众多的软件包。需要注意的是,snap是一种全新的软件包管理方式,它类似一个容器拥有一个应用程序所有的文件和库,各个应用程序之间完全独立。所以使用snap包的好处就是它解决了应用程序之间的依赖问题,使应用程序之间更容易管理。但是由此带来的问题就是它占用更多的磁盘空间 介绍一些常用命令,有点类似docker 1、查看已经通过snap安装的snap包 snap list可以查看 2、可以搜索想要的snap包,例如tomcat snap search tomcat

icanflying的博客 4万+

Spring Boot 实现多图片上传并回显,涨姿势了~

上传 Controller的代码非常简单,由于用了SpringMVC框架,所以直接用MultipartFile来接即可。由于是多图片上传所以用数组来接。此处应该注意参数名应该和<input>中的name值相对应: @RequestMapping("/pic") @ResponseBody publicResponseEntity<String>pic(MultipartFile[]pictures)throwsException{ ResponseEnti...

weixin_54556126的博客 894

比特币安全之一 木马钱包盗币原理分析-——安全分析防范-东方仙盟

此LTC木马钱包盗取LTC的方式很简单,查看钱包的接收地址时,隐藏钱包的真实接收地址,显示黑客的LTC地址,当向此接收地址发送LTC时,发送的LTC自然就到了黑客的钱包中,永远到不了这个钱包中。验证过程很简单,先安装LTC木马钱包,创建新的接收地址,然后卸载木马钱包,安装LTC官网钱包,查看接收地址,两者显示的地址是不同的,官网钱包显示的是真实地址,木马钱包显示的是黑客的LTC地址。LTC的代码是开源的,黑客下载了LTC代码,做了些修改,重新编译代码,把程序打包,放到网盘中提供下载,盗取网友的LTC。

cybersnow精通 28 门计算机语言,凭借其超凡的技术能力,成功开发过上万个应用,广泛涉及政府、商业、个人等众多领域,甚至在检察院、环保局、公安局等专业场景中也大放异彩。不仅熟练掌握单片机和物联网开发,在软件架构设计方面更是独树一帜,自创了跨平台软件 321

Dify 第 4 篇 Dify 示例:数据库执行Agent

本文介绍了如何在Dify平台创建一个能够执行SQL查询的数据库Agent。通过安装并配置"通义千问"和"数据库"两个插件,实现自然语言到SQL语句的转换和执行。关键步骤包括:1)安装插件并配置API Key;2)设置默认数据库连接(建议使用只读账号);3)准备测试数据表结构。该Agent支持通过工具调用查询表结构、转换自然语言为SQL、执行查询并返回结果,同时提供了CSV查询和HTTP API接口功能。文中还提供了MySQL测试数据表的创建脚本和示例数据。

甘蓝的专栏 1157

分层确定性钱包--钱包的原理

随着数字货币的普及和区块链技术的快速发展,安全、高效地管理加密资产已成为用户和企业共同面临的挑战。在这一背景下,分层确定性钱包(HD Wallet)以其独特的优势和创新的设计,成为了加密货币管理领域的一个重要突破。HD钱包不仅提供了一种简便的方式来生成和管理大量的私钥和地址,还通过其确定性结构增强了交易的隐私性和安全性。一、分层确定性钱包是什么?

专注于全栈开发领域 165

使用AI预测彩票的架构思路

彩票是随机的数字游戏,不要过度依赖AI,本文仅供娱乐研究

淘淘小窝 9410

UNet + Shuffle Attention:一种轻量高效的医学图像分割注意力机制

本文提出了一种轻量高效的医学图像分割方法,将Shuffle Attention模块嵌入UNet的上采样路径中。Shuffle Attention通过通道分组注意力机制增强关键特征,同时保持计算轻量化。该方法在上采样后应用注意力模块,有效融合高层语义与低层细节,计算开销小且易于部署。实验表明,该模型在保持UNet原有优势的基础上,通过注意力机制提升了特征聚焦能力,适用于多种图像分割任务。未来可进一步结合空间注意力或Transformer模块以增强模型性能。

Henry的博客 240

ArcBlock 课堂预告 | 深入浅出 HD 钱包基本原理

ArcBlock Technical Learning Series 第十期深入浅出 HD 钱包基本原理下周三,11 月 28 日上午 9 时 (美国太平洋时间 27 日下午 5 时),...

ArcBlock的博客 195

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

web3钱包的运作原理

总结:Web3钱包的运作本质是通过加密技术构建“用户-区块链”的信任桥梁:私钥控制所有权,公钥实现资产接收,交易通过区块链共识机制全网验证,而智能合约则拓展了资产交互的可能性。- 交易签名:用户发起转账时,钱包用私钥对交易信息(如金额、接收地址)进行签名,生成唯一的数字签名,区块链节点通过公钥验证签名合法性。- 密钥管理:钱包负责存储私钥(需用户备份,如助记词),部分钱包(如硬件钱包)将私钥存储在物理设备中,避免网络攻击。- 助记词由12-24个单词组成,是私钥的人类可读形式,可用于恢复钱包账户。

2501_92249330的博客 1110

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

冷钱包原理

1、阅读文档 原理 原理 助记词

笑傲江湖 4532
上一篇: class ?
下一篇: InitializeNode
TuxedoLinux
博客等级 码龄9年 268粉丝 34原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值