比特币交易地址生成

地址生成

比特币的地址生成方式如图所示。首先,随机生成一个 256 bit 长度 0 与 1 的随机数,这个随机数就是私钥。私钥在经过椭圆曲线算法之后生成出公钥。这个过程是不可逆的。无法再次通过公钥快速计算出私钥。公钥再经由hash计算得到一个地址。在交易时则可以通过这个地址转出或转入比特币。

下面将介绍比特币地址是如何一步步生成的。

私钥生成

首先随机生成的 256 bit 即 32 位的数。因为是使用二进制生成,可以最大限度的保证了随机性。类属于就是随机抛 256 次硬币,记录下结果。这就是私钥。

WIF

为了方便记录私钥,通常会将 32 位长的私钥转换为 WIF (钱包导入格式)。具体的转换方式可以看另一篇文章。这个不是生成地址所必须的步骤。

公钥

第二步就是通过随机生成的私钥转换为公钥,公钥的生成依赖于私钥,但是,以现在的计算机算力还无法通过公钥推导出私钥。私钥通过椭圆曲线算法,计算得出一个在曲线上的点,这个点就是公钥,公钥由 (x, y) 组成的 512 bit 长的数。

压缩公钥与非压缩公钥

上面说到公钥是一个在椭圆曲线上的点,这个点是一个 x, y 组成的。x 256bit + y 256bit 长度为 512bit,但是由于椭圆曲线算法的特性,即可以通过已知的 x 即可计算出 y,同样的通过 y 也可以计算出 x。所以就有了压缩公钥的概念,通常压缩公钥都会在公钥前面添加一个标示位,表明这个压缩公钥是 x 还是 y 的值。

地址

最后就是生产地址了,比特币的地址通过的 RIPEMD160(SHA256(公钥))得出。即先对公钥进行一次 SHA256 运算,然后用 RIPEMD160 椭圆算法对结果进行一次运算。最后在添加一下附加数据,如对应的版本、校验码等内容之后,对其进行一次 base58 得到的就是最后的地址了。