主页 > 最新imtoken官网下载链接 > 区块链地址生成算法

区块链地址生成算法

最新imtoken官网下载链接 2023-06-16 05:25:28

该地址是为了方便人们交换而制定的方案,因为公钥太长(130 串或 66 串)。 地址的长度为 25 个字节。 转成base58编码后就是34或35个字符。 base58是一种类似于base64的编码,但是去掉了容易引起视觉混淆的字符,并在地址末尾增加了4个字节的校验位,以保证当人们错误地交换个别字符时,也可以因地址验证失败 滥用。

由于公钥有两种形式,一个公钥对应两个地址。 两个地址都可以使用相同的私钥签署交易。

公钥生成地址算法:

Version = 1 byte of 0 (zero); on the test network, this is 1 byte of 111
Key hash = Version concatenated with RIPEMD-160(SHA-256(public key))
Checksum = 1st 4 bytes of SHA-256(SHA-256(Key hash))
Bitcoin Address = Base58Encode(Key hash concatenated with Checksum)

下图显示了从非压缩公钥生成地址的过程:

详解比特币挖矿算法_比特币地址生成算法详解_比特币地址生成过程

压缩公钥生成地址时,只能取公钥的X部分。

比特币地址生成过程_比特币地址生成算法详解_详解比特币挖矿算法

派生关系

推导出三者的关系:私钥>>公钥>>两个地址。 这个过程是不可逆的。 有了私钥,就万事大吉了,但通常为了方便,也会存储对应的公钥和地址。

----------------------以下内容来自百度----------------

比特币地址生成过程

(注:有些数以“0x”开头,表示该数用十六进制表示,“0x”本身没有任何意义,是C语言传下来的,按照约定写成,比如0xA就是10十进制。此外,1 字节 = 8 位二进制 = 2 位十六进制)。

第一步是随机选择一个大小在 1 ~ 0xFFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFE BAAE DCE6 AF48 A03B BFD2 5E8C D036 4141 之间的 32 字节数字作为私钥。

18E14A7B6A307F426A94F8114701E7C8E774E7F9A47E2C2035DB29A206321725

第二步,使用椭圆曲线加密算法(ECDSA-secp256k1)计算出私钥对应的未压缩公钥。 (一共65个字节,1个字节0x04,32个字节为x坐标,32个字节为y坐标)关于公钥压缩和不压缩的问题会在另一篇文章中说明。

0450863AD64A87AE8A2FE83C1AF1A8403CB53F53E486D8511DAD8A04887E5B

23522CD470243453A299FA9E77237716103ABC11A1DF38855ED6F2EE187E9C582BA6

比特币地址生成算法详解_比特币地址生成过程_详解比特币挖矿算法

第三步,计算公钥的SHA-256哈希值

600FFE422B4E00731A59557A5CCA46CC183944191006324A447BDB2D98D4B408

第四步,取上一步的结果,计算RIPEMD-160哈希值

010966776006953D5567439E5E39F86A0D273BEE

第五步,取上一步的结果,在前面加上地址版本号(比特币主网版本号“0x00”)

00010966776006953D5567439E5E39F86A0D273BEE

第六步,取上一步的结果,计算SHA-256哈希值

445C7A8007A93D8733188288BB320A8FE2DEBD2AE1B47F0F50BC10BAE845C094

第七步,取上一步的结果,然后计算SHA-256哈希值(哈哈)

D61967F63C7DD183914A4AE452C9F6AD5D462CE3D277798075B107615C1A8A30

比特币地址生成过程_比特币地址生成算法详解_详解比特币挖矿算法

第八步,取上一步结果的前4个字节(8位十六进制)

D61967F6

第九步,将这4个字节加到第五步的结果中作为验证(这是比特币地址的十六进制形式)。

00010966776006953D5567439E5E39F86A0D273BEED61967F6

第十步,使用base58表示法改变地址(这是最常见的比特币地址形式)。

16UwLL9Risc3QfPqBUvKofHmBQ7wMtjvM

------------------------------来自以太坊黄皮书---------------- --------------------------------------

以太坊地址生成算法

详解比特币挖矿算法_比特币地址生成算法详解_比特币地址生成过程

------------------------------来自以太坊白皮书---------------- ---------------------------------------------- ------

比特币地址生成过程_比特币地址生成算法详解_详解比特币挖矿算法

#ethereum-账户

以太坊账户

在以太坊中,状态由称为“账户”的对象组成比特币地址生成算法详解,每个账户都有一个 20 字节的地址,状态转换是账户之间价值和信息的直接转移。

在以太坊中,一个账户包含一个 20 字节的地址,以及账户之间价值和信息转移的状态转换。

以太坊账户包含四个字段:

nonce,用于确保每笔交易只能处理一次的计数器

账户当前的以太币余额

账户的合约代码(如果存在)

账户的存储空间(默认为空)

一个以太坊账户由 4 个部分组成:

比特币地址生成过程_详解比特币挖矿算法_比特币地址生成算法详解

nonce是一个计数器,用来保证每笔交易只被处理一次

账户中当前的以太币数量

合约代码

以太坊存储空间?

“以太”是以太坊内部主要的加密燃料,用于支付交易费用。

以太币是以太坊中的主要加密货币,用于支付交易费用

一般来说,有两种类型的账户:由私钥控制的外部账户和由合约代码控制的合约账户。 外部账户没有代码比特币地址生成算法详解,可以通过创建和签署交易从外部账户发送消息; 在合约账户中,每当合约账户收到一条消息时,它的代码就会激活,允许它读取和写入内部存储,并依次发送其他消息或创建合约。

以太坊中有两种账户:一种是外部用户的账户,由私钥控制; 智能合约账户,由合约代码控制。

外部用户账户不包含代码,用户可以通过创建和签署交易向外部用户账户发送信息。

合约账户,每收到一条消息,合约代码就开始工作,允许读取、写入内部存储、发送信息或反向创建合约。

请注意,以太坊中的“合同”不应被视为应该“履行”或“遵守”的事物; 相反,它们更像是生活在以太坊执行环境中的“自主代理”,在被消息或交易“戳”时总是执行一段特定的代码,并直接控制自己的以太币余额和自己的密钥/值存储以跟踪持久变量。

请注意,以太坊中的合约不应被视为某种可以履行和遵守的祝贺。 它们更像是以太坊环境的自治代理。 能够直接控制他们的以太币和密钥来跟踪持久变量。