美文网首页比特钱包
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。得到的该结果就是一个有效的以太坊地址。

相关文章

  • 以太坊ETH源码分析(1):地址生成过程

    一、生成一个以太坊钱包地址 通过以太坊命令行客户端geth可以很简单的获得一个以太坊地址,如下: 地址0x8011...

  • aaa

    比特币地址生成算法详解 比特币钱包地址生成代码-go实现 区块链以太坊以及hyperledger总结区块链技术 默...

  • Ethereum与Hyperledger的区别

    一、以太坊智能合约部署过程 搭建以太坊私链环境,生成私链的创世区块(不详述); 启动私链,生成一个初始的以太币账户...

  • 【iOS】以太坊公钥、地址生成

    本文背景导入私钥生成钱包 (私钥 => 公钥 => 地址) 以太坊地址的生成过程如下: 由secp256k1曲线生...

  • 1、以太坊地址生成

    在以太坊中,有两种类型的账户^1:一种是外部账户(EOAs,Externally Owned Accounts),...

  • 火星人许子敬:ETH 2.0达到最低启动门槛,将如期启动

    截至目前,以太坊2.0存款合约地址余额已达524288枚ETH,已达成启动以太坊2.0创世区块的最低要求。即以太坊...

  • 区块链开发之钱包基础

    1、什么是区块链钱包 钱包为我们管理账号:如比特币,以太坊,柚子等。 钱包可以创建账号:生成对应的账号,包括地址(...

  • 以太坊 EVM解析

    以太坊EVM原理与实现 太坊底层通过EVM模块支持合约的执行与调用,调用时根据合约地址获取到代码,生成环境后载入到...

  • 【以太坊钱包开发 四】密码、私钥、keystore与助记词的爱恨

    在前面的教程中我们对以太坊钱包已经有了一定的认识,上一章也重点介绍了账号地址的生成过程,在以太坊钱包中一个重点就是...

  • 以太坊交易的生命周期

    了解以太坊交易是如何生成并在网络中广播的 交易是以太坊区块链(或任何类似的区块链)的核心。在与以太坊区块链进行交互...

网友评论

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

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