问题:经常被问题到样的问题,某某链的地址格式和比特币(或以太坊)的一样,是不是表示他们就是比特币(或以太坊)的分叉链?
回答: 并不一定,区块链地址生成是经过一系列数学运算得到的,只要运算方式一样,那么生成的地址格式就一样。
下面以比特币和以太坊为例 ,说明他们地址生成的过程。 目前绝大多数的比特币地址都是以1开头,长度在34位(也有非1开头,其它长度的, 不在此文中介绍),而以太坊地址固定以0x开头。
比特币地址: 18NBmPg56gty4NLe3hXYucboEvMDhBjBWL
以太坊地址: 0x21e441583e377226d3ac6631b3863da2c7b55ca2
地址生成流程(绝大多数区块链都遵循这一流程):
随机数—>私钥—>公钥—>地址
对于比特币和以太坊,前面的流程是完全一样的,差别只在从公钥到地址的转换过程。
比特币地址生成流程
![e0e54446753ecc7bd07c357f9ff36dde.png](https://i-blog.csdnimg.cn/blog_migrate/52714be063aeaebcbf761d2301f773c4.jpeg)
比特币地址生成流程
step1: 计算机通过随机数生成算法生成一个随机数, 并从随机数推导出私钥。
step2: 私钥通过椭圆曲线算法(secp256k1)生成公钥。
step3: 公钥通过两次哈希运算(sha256和ripemd160)得到公钥哈希。
stpe4: 在公钥哈希前加上地址版本号(固定0x00)。
step5: 将上一步的结果做2次sha256运算。
step6: 取上一步结果的前4字节,拼在第4步结果最后,得到一个16进制串。
step7: 对上一步的结果做Base58编码,就得到了比特币的区块链地址。
以太坊地址生成流程
![18e1a2fb22f891b0a6dab78cec7ebe29.png](https://i-blog.csdnimg.cn/blog_migrate/a295211f9ceb0819bf3593482ec12e04.jpeg)
以太坊地址生成流程
step1: 计算机通过随机数生成算法生成一个随机数, 并从随机数推导出私钥。
step2: 私钥通过椭圆曲线算法(secp256k1)生成公钥。
step3: 公钥通过一次哈希运算(keccak-256)得到公钥哈希。
stpe4: 取公钥哈希后后20位
step5: 在上一步结果前固定加上0x, 就得到以太坊的区块链地址。
扩展问题:
1. 可以用同一个私钥同时管理比特币和以太坊地址吗?
当然可以
2. 地址和公钥都是公开的,会不会不安全?
不会,上述的流程都是单向的。地址无法反向推导出公钥,公钥无法反向推导出私钥。
3. 私钥很长,又不规则,不方便记忆怎么办?
目前通过助记词的方式来记忆,后面文章会专门介绍助记词。