比特币地址生成方法

目标:生成比特币地址

私钥

公钥

Base58check编码

比特币地址是公开的,为了收款而设计,生成地址需经历以下阶段:

  1. 获得私钥,私钥为钱包密码,不对外可见,事关财产安全
  2. 利用私钥去生成公钥,利用椭圆曲线乘法,定义一个私钥为k, G为椭圆曲线上的一点,公钥为 K= G * k。 椭圆曲线乘法由椭圆曲线加法累加而来,椭圆曲线加法可简述为:一个点与其自身相加等同于在这个点上画一条切线,找到切斜与曲线相交的点,相交点相对x轴对称的点就是我们要找的点。生成点是作为secp256k1标准的一部分定义的,对于比特币而言,其所有密钥均使用相同G点。
  3. 生成公钥哈希:为了加密公钥,公钥需先经历SHA256进行一次哈希运算,然后从其结果中计算RIPEMD160的哈希值,这样我们就创建了一个160比特(20字节)长度的数字:A=RIPEMD160(SHA256(K))
  4. 添加版本前缀:为了指明该哈希所属用途,我们在上一步生成的公钥哈希前加入一个前缀:Data = 前缀 + 公钥哈希
  5. 将上一步得到的Data再次进行两次哈希加密,这是为了获得一个更加安全的验证码。具体做法如下:HASH = SHA256(SHA256(Data)), 然后只提取HASH的前4字节作为校验码,并将其添加到Data最后,现在我们有了新的 Data* = Data(前缀 + 公钥哈希) + 校验码
  6. Base58check编码:这一步的目的是为了大幅度缩减数据长度,举个例子,是用十六进制就可大幅缩短十进制下的数字的长度,58代表类似于58进制表示方法,在此不作详细说明。这一步对上一步Data*进行Base58编码即可。至此,我们获得了一个比特币地址,即一个收款账号,用来接收支付。

这篇笔记只是为了描述地址生成大致过程,很多知识没有展开,具体伪代码及流程图,请参考《Mastering Bitcoin》(Andreas M. Antonopoulos)-- 比特币地址 一章

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章