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

资讯 2024-07-11 阅读:10 评论:0
美化布局示例

欧易(OKX)最新版本

【遇到注册下载问题请加文章最下面的客服微信】永久享受返佣20%手续费!

APP下载   全球官网 大陆官网

币安(Binance)最新版本

币安交易所app【遇到注册下载问题请加文章最下面的客服微信】永久享受返佣20%手续费!

APP下载   官网地址

火币HTX最新版本

火币老牌交易所【遇到注册下载问题请加文章最下面的客服微信】永久享受返佣20%手续费!

APP下载   官网地址

通过以太坊命令行客户端geth可以很简单的获得一个以太坊地址,如下:

An Etheria address xff0c; xff1a below;

 

地址0x8011cf2892985cdc58f447063bc6a089ba89f514 (20字节16进制)就是新生成的以太坊地址。

Address 0x8011cf2892985cdc58f447063bc6a089ba89f514 & #xff08; 20 byte ) is the newly generated ethercom address.

从以太坊源码 https://github.com/ethereum/go-ethereum 出发,分析地址生成过程
运行命令 :geth account new
程序入口在 https://github.com/ethereum/go-ethereum/blob/master/cmd/geth/main.go

Start with <#xff0c > analysis of address generation
running command & #xff1a; geth account new
at https://gethub.com/etheum/go-etheum/blob/master/cm/geth/main.go

 

账户相关的命令在 https://github.com/ethereum/go-ethereum/blob/master/cmd/geth/accountcmd.go 里,
新建账户命令为new:

Account-related commands at https://github.com/etheum/go-etheum/blob/master/cmd/geth/acaccountcmd.go & #xff0c;
new account commands are new:

 

关键:new一个新账户的时候,会调用accountCreate

Key : new #xff0c; will call acaccount

 

由此可见,accountCreate分为三个步骤,其中最关键的为第三步
(1)获取配置
(2)解析用户密码
(3)生成地址

This can be seen in xff0c; acaccountCreate divided into three steps xff0c; , the most critical of which is step 3
( 1xff09; get configuration
& #xff08; 2xff09; parsing user passwords
& #xff08; 3xff09; generating address

第三步生成地址调用的keystore.StoreKey:
程序位置在 https://github.com/ethereum/go-ethereum/blob/master/accounts/keystore/keystore_passphrase.go

Step 3 generates the call for Keystore. StoreKey:
application location at https://gethub.com/otherium/go-etherium/blob/master/accounts/keystore/keystore_passprase.go

 

直接调用了storeNewKey 创建新账户
程序位置:https://github.com/ethereum/go-ethereum/blob/master/accounts/keystore/key.go

Direct call to storeNewKey to create a new account
application locationxff1a; https://github.com/otherium/go-etherium/blob/master/accounts/keystore/key.go

 

可以看到,newKey创建新账户时,
1、由secp256k1曲线生成私钥,是由32字节随机数组成
2、采用椭圆曲线数字签名算法(ECDSA)将私钥映射成公钥,一个私钥只能映射出一个公钥。
3、然后由公钥算出地址并构建一个自定义的Key

xff0c; newKey created a new account xff0c;
1; private key generated by a secp256k1 curve xff0c; 32 by random number
, digital signature algorithm using an elliptical curve xff08; ECDSAff09; private key mapping into a public key xff0c; a private key can only map a public key.
3 and then a public key calculates the address and constructs a custom Key.
3

继续看公钥是怎样算出地址并构建一个自定义的Key

Keep looking at how the public key calculates the address and builds a custom Key.

 

由公钥算出地址是由crypto.PubkeyToAddress完成的:
代码位置:https://github.com/ethereum/go-ethereum/blob/master/crypto/crypto.go

The addresses calculated by the public key were completed by crypto. PubkeyToAddress & #xff1a;
code location & #xff1a; https://github.com/otherium/go-otherium/blob/ Master/crypto/crypto.go

 

可以看到公钥(64字节)经过Keccak-256单向散列函数变成了32字节,然后取后20字节作为地址。本质上是从32字节的私钥映射到20字节的公共地址。这意味着一个账户可以有不止一个私钥。

You can see a public key xff08; 64 byte xff09; a single hash function from Keccak-256 becomes a 32 byte xff0c; then the last 20 bytes are taken as an address. The private key map is essentially from 32 bytes to a 20 byte public address. This means that an account can have more than one private key.

以太坊地址的生成过程如下:

The following is the process of generating the address: #xff1a;

  1. 由secp256k1曲线生成私钥,是由32字节的随机数生成
  2. 采用椭圆曲线数字签名算法(ECDSA)将私钥(32字节)映射成公钥(65字节)。
  3. 公钥(去掉04后剩下64字节)经过Keccak-256单向散列函数变成了32字节,然后取后20字节作为地址
美化布局示例

欧易(OKX)最新版本

【遇到注册下载问题请加文章最下面的客服微信】永久享受返佣20%手续费!

APP下载   全球官网 大陆官网

币安(Binance)最新版本

币安交易所app【遇到注册下载问题请加文章最下面的客服微信】永久享受返佣20%手续费!

APP下载   官网地址

火币HTX最新版本

火币老牌交易所【遇到注册下载问题请加文章最下面的客服微信】永久享受返佣20%手续费!

APP下载   官网地址
文字格式和图片示例

注册有任何问题请添加 微信:MVIP619 拉你进入群

弹窗与图片大小一致 文章转载注明

分享:

扫一扫在手机阅读、分享本文

发表评论
平台列表
美化布局示例

欧易(OKX)

  全球官网 大陆官网

币安(Binance)

  官网

火币(HTX)

  官网

Gate.io

  官网

Bitget

  官网

deepcoin

  官网
热门文章
  • 0.00003374个比特币等于多少人民币/美金

    0.00003374个比特币等于多少人民币/美金
    0.00003374比特币等于多少人民币?根据比特币对人民币的最新汇率,0.00003374比特币等于2.2826 1222美元/16.5261124728人民币。比特币(BTC)美元(USDT)人民币(CNY)0.00003374克洛克-0/22216.5261124728比特币对人民币的最新汇率为:489807.72 CNY(1比特币=489807.72人民币)(1美元=7.24人民币)(0.00003374USDT=0.0002442776 CNY)。汇率更新于2024...
  • 0.00006694个比特币等于多少人民币/美金

    0.00006694个比特币等于多少人民币/美金
    0.00006694比特币等于多少人民币?根据比特币对人民币的最新汇率,0.00006694比特币等于4.53424784美元/32.5436 16人民币。比特币(BTC)美元(USDT)人民币(CNY)0.000066944.53424784【比特币密码】32.82795436 16比特币对人民币的最新汇率为:490408.64 CNY(1比特币=490408.64人民币)(1美元=7.24人民币)(0.00006694USDT=0.0004846456 CNY)汇率更新时...
  • 0.00015693个比特币等于多少人民币/美金

    0.00015693个比特币等于多少人民币/美金
    0.000 15693比特币等于多少人民币?根据比特币对人民币的最新汇率,0.000 15693比特币等于10.6 1678529美元/76.86554996人民币。比特币(BTC)【比特币价格翻倍】美元(USDT)人民币(CNY)0.000/克洛克-0/5693【数字货币矿机】10.6 167852976.8655254996比特币对人民币的最新汇率为:489,807.72 CNY(1比特币= 489,807.72人民币)(1美元=7.24人民币)(0.00015693 U...
  • 2000年美国GDP占世界的304%,中国GDP仅占35%,现在呢?

    2000年美国GDP占世界的304%,中国GDP仅占35%,现在呢?
    GDP作为全球公认的实力基准,就像是一个大国实力的代言人,它是布雷顿森林体系下全球团结的声音。它不仅仅是数字的累积,更是大国综合实力的人格化,默默诉说着每个国家的辉煌与荣耀。虽然GDP不是衡量一个国家综合实力的唯一标准,但无疑是最关键的指标之一。作为一面镜子,它反映了国家的经济实力和发展水平,是国家综合实力的重要体现,不容忽视。2000年,中国GDP迈过/克洛克-0/万亿美元的重要门槛,达到/克洛克-0/。2/克洛克-0/万亿美元(折合人民币7。7万亿元)。然而,在全球经济的...
  • PANews 2024年5月专栏作者影响力及专栏文章热度排行榜出炉

    PANews 2024年5月专栏作者影响力及专栏文章热度排行榜出炉
    货币网络报告:PANews 2024年5月影响力榜TOP5和栏目人气榜TOP 10(以下简称“双榜”)今日发布。我们对5月份PANEWS平台上所有专栏作家的帖子和专栏人气做了一个综合评价,做了一个双榜。我们根据发表文章的频率、质量、阅读量进行综合评价,做出了5月份专栏作家影响力排行榜TOP5。如上图,榜单上的五位专栏作家分别是:没有。1太阳、月亮和初晓日月初晓是知名投研KOL,擅长对外链进行深度研究和数据分析。5月期间输出了很多文章,内容涉及比特币生态、Notcoin、以太坊...
标签列表