比特币的**(yue)、公钥、和地址之间的概念理解

随机取32个字节的【秘钥】


---》椭圆加密算法 ----》【公钥】(压缩的话,只取前面的32位。)


-----》sha256 ----》哈希160 ---》生成【公钥哈希】




然后比特币程序会加上校验码(【公钥哈希】进行两次sha256后取前4个字节)和比特币主网版本号(0x00)形成 最终的【地址】






私钥 >> 公钥 >> 两个【公钥哈希】(压缩【公钥哈希】和非压缩【公钥哈希】)


1.从2个公钥哈希(两个或者任意一个都无法),无法推导出【公钥】。
2.但是从【公钥】 公钥哈希可以推导出 【公钥哈希】

3.【私钥】可以推导出 两个【公钥哈希】和【公钥】,但是反过来,无论是【公钥】还是【公钥哈希】都无法推导出【**】


交易的验证理解:
1.交易数据的签名只用**的拥有者可以生成(加密),而且这个签名加上公钥运算后(解密)可以得到交易数据(明文),只需要将得到的明文跟真实的明文做对比即可知道该交易是否为私钥拥有者发起。
2.而一个公钥有且仅有一个【公钥哈希】(即账户地址),我们可以通过公钥哈希算出需要被扣款的比特币地址。
3.一个公钥只能对应一个私钥,
4。一个私钥允许对多个公钥,这个类似于,一个人拥有多张银行卡,但椭圆算法不存在这种情况,也就是说一个秘钥只有一个公钥和他对应。
5.秘钥相同,公钥也相同,所以竟可能的把秘钥设计的复杂一点,避免被别人猜中你的秘钥。
6.由于地址是由【公钥】经过两次sha256算出来的,所以理论上不存在哈希碰撞,因此一个【比特币账号地址】只能由一个【公钥】推导出来,而公钥是唯一的,所以【地址也是唯一的】
7.可以理解为【秘钥】是唯一的和【椭圆算法】生成的【公钥】也是唯一的,而假定【公钥两次sha256生成的值】也是唯一,所以【地址】是唯一的。即,一个【秘钥】对应一个【公钥】对应一个【地址】

比特币的**(yue)、公钥、和地址之间的概念理解