区块链账户地址相关问题

本文最后更新于:2023年6月19日 晚上

私钥、公钥和地址是如何生成的?

以太坊地址生成的流程也是:私钥 -> 公钥 -> 地址。因此地址的生成需要三步:

  1. 生成一个随机的私钥(32 字节)-64 位的 16 进制字符
  2. 通过私钥生成公钥(64 字节)
  3. 通过公钥得到地址(20 字节)

第一步:私钥 (private key)

伪随机数产生的 256bit 私钥示例(256bit  16 进制 32 字节)
18e14a7b6a307f426a94f8114701e7c8e774e7f9a47e2c2035db29a206321725

第二步:公钥 (public key)

  1. 采用椭圆曲线数字签名算法 ECDSA-secp256k1 将私钥(32 字节)映射成公钥(65 字节)(前缀 04+X 公钥+Y 公钥):

0450863ad64a87ae8a2fe83c1af1a8403cb53f53e486d8511dad8a04887e5b23522cd470243453a299fa9e77237716103abc11a1df38855ed6f2ee187e9c582ba6

  1. 拿公钥(非压缩公钥)来 hash,计算公钥的Keccak-256哈希值(32bytes):

fc12ad814631ba689f7abe67**1016f75c54c607f082ae6b0881fac0abeda21781**

  1. 取上一步结果取后 20bytes 即以太坊地址:

1016f75c54c607f082ae6b0881fac0abeda21781

第三步:地址 (address)

0x1016f75c54c607f082ae6b0881fac0abeda21781


本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!