主页 > 苹果商城可以直接下载imtoken吗 > 1. 以太坊地址生成

1. 以太坊地址生成

在以太坊中,有两种账户:一种是外部账户(EOAs,Externally Owned Accounts),另一种是合约账户(Contracts Accounts)。 当我们提到术语账户时,我们通常指的是外部账户(EOA),而当我们提到合约账户时,我们通常将其称为“合约”。

他们在以太坊中维护的是一系列称为状态对象的实体。 这些实体都有状态信息:外部账户存储账户余额,合约账户存储余额和合约内容。

对于外部账户,地址代表账户公钥的最后20字节(通常以0x开头,例如0xcd2a3d9f938e13cd947ec05abc7fe734df8dd826以太坊私钥生成过程以太坊私钥生成过程,地址使用十六进制表示法)。 上面例子中地址中的字母都是小写的。 在EIP55^3中,引入了一种大小写混合的地址表示方法。 这种表示方法所表示的地址隐含了一个校验和(checksum)来验证地址的有效性。

每个账户都由一对密钥定义,一个私钥(Private Key)和一个公钥(Public Key)。 账户以地址为索引,地址由公钥推导出来,取公钥的最后20字节。 每个私钥/地址对都编码在一个密钥文件 (Keystore) 中。

生成地址的过程是:私钥->公钥->地址。 因此,地址生成需要三个步骤:

1.生成随机私钥(32字节)

2.通过私钥生成公钥(64字节)

3.通过公钥获取地址(20字节)

私钥的生成

私钥是一组 64 位的十六进制字符,我们可以通过它访问帐户。 以太坊的私钥是通过secp256k1^5曲线生成的,secp256k1是一种椭圆曲线算法,比特币采用的是同一种曲线算法。

地址生成

地址是对上面的公钥做Keccak-256 hash^7,然后取最后40个十六进制字符得到的。 我们对上面的公钥进行哈希处理,取最后 40 位后,结果为:0x24602722816b6cad0e143ce9fabf31f6026ec622。 结果是一个有效的以太坊地址。