比特币交易涉及到很多密码学知识:公钥、私钥、地址、哈希、对称加密、非对称加密等等。那么哪些是需要用户保管不能对外泄露的,哪些是需要用户公开的呢?先从钱包地址的生成说起。

钱包地址生成

1、随机数发生器会首先生成一个【私钥】。一个256bits的字符串,有这串数字就可以对【钱包地址】中的比特币进行操作,所以必须被安全地保管起来。

2、【私钥】经过SECP256K1算法处理形成了【公钥】。SECP256K1是一种椭圆曲线算法,通过一个已知的【私钥】可以算出【公钥】,而【公钥】无法反向计算出【私钥】,这是保障比特币安全的基础算法。

3、同SHA256一样,RIPEMD160也是一种Hash算法,可以由【公钥】计算得到【公钥哈希】,反过来【公钥哈希】是不能计算得到【公钥】的。

4、将一字节的地址版本号连接到【公钥哈希】的头部(比特币网络的pubkey地址中这一字节为“0”),然后对他进行两次SHA256运算,将结果的前4个字节作为【公钥哈希】的校验值,连接在它尾部。

5、将上一步的结果使用BASE58进行编码(比特币定制编码),就可以得到一串【钱包地址】。例如:

1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa

在上述的五个步骤里只有“BASE58编码”有相应的可逆算法(“BASE58解码”),其他算法都是不可逆的,所以这些数据之间的关系可以表示为:

可以看到:

【私钥】可以计算得到公钥、公钥哈希、钱包地址。

【公钥哈希】和【钱包地址】可以互相进行转换,它们是等价的。

比特币钱包间的转账是交易,交易数据是由转出钱包【私钥】的所有者发出,也就是说有了【私钥】就可以使用该钱包的比特币。

交易发出的过程如下:

1、交易的数据包括“转账金额”和“转入钱包地址”,但是只有这些是不够的,因为无法确认交易的发出人对“转出钱包”余额的使用权。所以需要用【私钥】对交易数据进行签名认证。

2、生成“转出钱包公钥”,这一过程与生成【钱包地址】的第2步是一样的。

3、将“转出签名”和“转出公钥”添加到交易数据中,生成了正式的交易数据,这样数据就可以广播到比特币网络中进行转账确认了。

交易数据被广播到比特币网络中后,节点会对交易数据进行检验,其中就包括对签名的验证。如果验证正确,那么这笔金额就成功地从“转出钱包”转移到“转入钱包”。

小结

1、如果一个【钱包地址】从未曾发送余额到其他【钱包地址】,那么它的【公钥】是不会被暴露在比特币网络上的。而公钥生成算法(SECP256K1)是不可逆的,即使【公钥】被暴露,也很难对【私钥】的安全性造成影响(难易取决于【私钥】生成的算法)。

2、【私钥】用来生成【公钥】和【钱包地址】,也用来对交易进行签名。拥有了【私钥】就是拥有了对这个钱包余额的一切操作权力。所以,保护【私钥】是所有比特币钱包应用最基本也是最重要的功能。

公钥 私钥_比特币私钥、公钥、钱包地址之间的关系相关推荐

  1. 密码、私钥、keystore与助记词之间的关系

    密码.私钥.keystore与助记词之间的关系 一.它们关系可以用下面的图来表述. 二.私钥 基于以上的分析,我们对以太坊钱包的账号系统有了一个很好的认识,那么我们在使用钱包的过程中,该如何保管自己的 ...

  2. 细说数组名、数组地址、数组首字节地址之间的关系

    数组名.数组地址.数组首字节地址之间的关系 首先定义一个数组: int A[5]={0,1,2,3,4,5}; 此处A为数组名,看似代表整个数组,但是实际上该数组名A为数组首元素A[0]的地址,同理A ...

  3. 指针和地址之间的关系是什么?

    学习交流可加 微信读者交流①群 (添加微信:coderAllen) 程序员技术QQ交流①群:736386324 **常见的一个疑问是: 归根结底, 指针就是地址, 地址就是内存中被分配的"门 ...

  4. C语言数组名、数组名取地址、数组首元素地址之间的关系

    C语言中数组名a.数组名取地址&a.数组首元素地址&a[0]三者的概念有点绕,花了点时间好好琢磨了一下,将自己的理解记录下来,如有错误之处,欢迎赐教. 首先看下面的一小段代码: #in ...

  5. 网址,域名,IP地址之间的关系是什么?

    什么是ip? 我们知道,在Internet上有千百万台主机,为了区分这些主机,人们给每台主机都分配了一个专门的地址,称为IP地址.通过IP地址就可以访问到每一台主机. IP地址由4部分数字组成,每部分 ...

  6. 快门光圈感光度口诀_光圈、快门、感光度之间的关系

    接触摄影免不了要和快门.光圈.感光度这三个摄影的基本要素打交道.摄影的本质是通过光线来记录场景,而这三项数值都是控制光线的射入量,所以在这三者这间就存在一个转换系数.比如在同等场景下拍摄参数为光圈F2 ...

  7. 债券价格和到期收益率的关系_债券价格与到期收益率之间的关系.PPT

    债券价格与到期收益率之间的关系 可转换债券首先表现出债性特征.类似于普通债券,可转换债券的债权价值反映在票面利率与本金的偿付方面.由于受到<可转换债券管理暂行办法>的限制,已发行转债的票面 ...

  8. 思博伦Spirent Testcenter交换机性能测试主要技术指标_丢帧率/吞吐量/转发速率之间的关系_双极未来

    转发速率.丢帧率和吞吐量是描述交换机转发性能的主要技术指标,这些指标的测试结果可以客观地反映出被测交换机的性能.正确理解它们之间的联系与区别对于设计吞吐量.丢帧率和转发速率的测试方法非常重要. 如下图 ...

  9. 怎么查看mysql数据库表之间的关系_怎么查看mysql数据库表之间的关系图

    {"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],&q ...

  10. php实现助记词转TRX,ETH 私钥和钱包地址

    TRX助记词转地址网上都是Java,js或其他语言开发的示例,一个简单的功能需要依赖其他环境来实现表示不能忍,毕竟php是世界上最好的语言.[狗头] 一.知识准备 要实现助记词转TRX私钥和地址,先需 ...

最新文章

  1. 深度学习(4)基础4 -- 神经网络架构激活函数过拟合处理
  2. python深入与提高_Python深入01 特殊方法与多范式
  3. python多态_python 多态
  4. Storyboard中segue使用总结
  5. Java阻塞IO与非阻塞IO
  6. SqlLoader(Sqlldr) 的用法
  7. Ubuntu使用Windows字体
  8. 谷歌负载均衡Maglev实现简析
  9. python倒数切片_python切片
  10. windows用VS2019下编译log4cxx日志库
  11. 淘码手机验证码平台——唯一可以批量接收验证码及批量解封账号的平台
  12. 100脚的STM32F103VE单片机通过FSMC接口读写DS12C887时钟芯片中的寄存器
  13. 制作室内效果图必不可少的因素有哪些?
  14. 微信小程序-收藏功能
  15. 【Word】论文的章标题以汉字编号,图、表以数字编号的实现
  16. rayleigh波的频散曲线matlab,运用matlab画出瑞利波的频散曲线
  17. 金山软件CEO张宏江:技术与经营,优化不同的参数而已
  18. 做一个网站多少钱?建一个网站要多少钱?
  19. 【高等代数】第一章:多项式部分【1】
  20. 飞书二开系列之创建测试企业与企业应用等准备工作(一)

热门文章

  1. mysqlplus 字段验证策略fieldStrategy
  2. 【Hoxton.SR1版本】Spring Cloud Gateway网关初体验
  3. 【node.js】GET/POST请求、Web 模块
  4. bind + DNSCrypt 实现安全加密转发,避免DNS污染
  5. 一步一步学Silverlight 2系列(15):数据与通信之ASMX
  6. centos7.2如何升级到centos7.3最新版本
  7. 重庆科技学院计算机专业好吗,重庆科技学院什么专业好
  8. vue2使用脚手架配置prettier报错:‘prettier/prettier‘: context.getPhysicalFilename is not a function
  9. http抓包实践--(一)--fiddler和http(s)
  10. vue属性绑定加载图片不成功