主页 > imtoken官网地址打不 > 比特币地址生成过程

比特币地址生成过程

imtoken官网地址打不 2023-12-26 05:13:19

比特币地址生成过程

我们知道比特币地址用于发送和接收硬币。钱包可以生成地址。每个地址对应一个私钥。使用私钥,您可以操作地址上的硬币。地址的生成首先从种子生成私钥,然后私钥生成公钥,公钥生成地址。有了公钥,私钥不能反向生成,但是如果保存了私钥,可以随时生成私钥。公钥,有了公钥,当然也可以生成地址。

从公钥生成地址的方法是对公钥进行sha256,再RIPEMD160,再Base58Check编码。最终地址类似于这种格式 155JJbE4SVrjQ1h8iGsSiTLUnRqFr8mSao。地址生成公式如下:

address = base58check(ripemd160(sha256(publickey)))

莱特币转账比特币地址了_比特币地址是怎么存起来的_q币和比特币是货币吗

Base58 有的朋友可能不明白,但是会知道Base64,Base64可以通过基本的64个可读的字符串对任何二进制数据进行编码,Base58通过58个可读的基本字符串将原来的Base64基本字符串减去6,剩下的基本字符串如下:

123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz

比特币地址生成过程总结如下图:

莱特币转账比特币地址了_q币和比特币是货币吗_比特币地址是怎么存起来的

我们通过实际操作生成地址比特币地址是怎么存起来的,下载libbitcoin-explorer(和bx),这个工具可以帮助我们生成私钥、公钥、地址,并且可以支持sha256、ripemd16<@等各种编码0、base58,如果你使用的是macOS系统,可以输入下载的命令直接下载安装

brew install bx
brew link libbitcoin-explorer

第一步是生成私钥。生成私钥需要指定种子,可以使用 bx 提供生成随机种子的方法

bx seed
06d67bacf53ce6c1e1a8309f0ca4d34c4448180989e474aa

比特币地址是怎么存起来的_莱特币转账比特币地址了_q币和比特币是货币吗

您也可以自己指定种子。为了学习和演示的方便,我们可以自定义一个简单的种子,但在实际情况下使用。不要太随便,否则太容易有人撞到私钥了。比如我们用来测试的种子都是1,使用ec-new生成私钥,然后使用ec-to-public通过私钥生成公钥,再使用ec-new生成公钥。使用ec-to-address通过公钥生成地址,最终地址为155JJbE4SVrjQ1h8iGsSiTLUnRqFr8mSao,操作步骤如下:

bx ec-new "111111111111111111111111111111111111111111111111"
69bac3b554a6464315a3023ebad58cf1cc8abbf5c735cda68f06bce608ff953b
bx ec-to-public 69bac3b554a6464315a3023ebad58cf1cc8abbf5c735cda68f06bce608ff953b
0246c15dc356bd419dc297cd7c178fea2a10bfac8a0a2a33826b9602d2535a05a4
bx ec-to-address 0246c15dc356bd419dc297cd7c178fea2a10bfac8a0a2a33826b9602d2535a05a4
155JJbE4SVrjQ1h8iGsSiTLUnRqFr8mSao

通过上面的操作,很方便的得到了地址,但是为什么不是sha256和ripemd160,base58呢?别着急,下面我们用一步一步生成地址,是0246c15dc356bd419bd419297cd7c178fea297cd7c178fea297cd7c178fea2a10bfac80a2a33dc296b9602d2505a4,使用sha256,再使用ripemd160得到的结果是2cb09c6c84654b22a54e8c142ef4370cbe9ebb72,然后再使用base58check完整编码的地址和得到第一次的样例,操作显示:

bx sha256 0246c15dc356bd419dc297cd7c178fea2a10bfac8a0a2a33826b9602d2535a05a4
b533eba7460321151266276429b03a7e09f9f95679a753d925dd00d64f116a3b
bx ripemd160 b533eba7460321151266276429b03a7e09f9f95679a753d925dd00d64f116a3b
2cb09c6c84654b22a54e8c142ef4370cbe9ebb72
bx base58check-encode 2cb09c6c84654b22a54e8c142ef4370cbe9ebb72
155JJbE4SVrjQ1h8iGsSiTLUnRqFr8mSao

q币和比特币是货币吗_比特币地址是怎么存起来的_莱特币转账比特币地址了

base58check 和 base58 有什么区别? base58check就是先做base58,然后在开头加上版本号,最后加上校验和。这是为了防止用户输入错误的地址。一般的钱包软件会计算数据的校验和来比较用户地址是否有效,避免造成资金损失。 base58check-decode可以解码的信息如下,可以看到版本号为0。

bx base58check-decode 155JJbE4SVrjQ1h8iGsSiTLUnRqFr8mSao      
wrapper
{
    checksum 2628507585
    payload 2cb09c6c84654b22a54e8c142ef4370cbe9ebb72
    version 0
}

在公钥开头加上版本号00比特币地址是怎么存起来的,然后计算两次sha256。结果开头的4个字段是校验码c1d7ab9c。添加到公钥末尾,执行base58生成和第一次一样的地址。

bx sha256 002cb09c6c84654b22a54e8c142ef4370cbe9ebb72    
3fda3c2e378e7a43eb6649bc776b69d223a53c22fba0855e0e7e0da602a9af36
bx sha256 3fda3c2e378e7a43eb6649bc776b69d223a53c22fba0855e0e7e0da602a9af36
c1d7ab9c919166b11aa869d29c5d9cc6b831cace97450bf0b217f743ae1377e9
bx base58-encode 002cb09c6c84654b22a54e8c142ef4370cbe9ebb72c1d7ab9c
155JJbE4SVrjQ1h8iGsSiTLUnRqFr8mSao

转载请注明:exchen的博客 » 比特币地址生成过程