美文网首页比特钱包
1、以太坊地址生成

1、以太坊地址生成

作者: 谷歌派 | 来源:发表于2018-05-24 15:32 被阅读2885次

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

    它们在以太坊中所维护的都是一系列叫做状态对象(state objects)的实体。这些实体中都拥有状态信息:外部账户存储的是账户的余额(balance),合约账户存储的是余额和合约中的内容。

    对于外部账户来说,地址表示的是该账户公钥的后20字节(通常会以0x开头,例如,0xcd2a3d9f938e13cd947ec05abc7fe734df8dd826,该地址使用的是16进制表示法^2)。上述示例中的地址中的字母全部是小写。在EIP55^3中引入了一种大小写混用的地址表示方法,通过这种表示方法进行表示的地址隐含了一个校验和(checksum)能够验证该地址的有效性。

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

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

    1、生成一个随机的私钥(32字节)

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

    3、通过公钥得到地址(20字节)

    私钥的生成

    私钥是一组64位的16进制字符,通过私钥我们能够访问一个账户。以太坊的私钥生成是通过secp256k1^5曲线生成的,secp256k1是一个椭圆曲线算法,比特币使用的也是相同的曲线算法。

    地址的生成

    地址是通过对上述的公钥做Keccak-256哈希^7,然后取最后的40位16进制字符得到的。我们对上述的公钥做哈希后并取后40位的结果是:0x24602722816b6cad0e143ce9fabf31f6026ec622。得到的该结果就是一个有效的以太坊地址。

    相关文章

      网友评论

        本文标题:1、以太坊地址生成

        本文链接:https://www.haomeiwen.com/subject/wissjftx.html