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

资讯 2024-07-11 阅读:65 评论: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

  官网
热门文章
  • 从 IPFS社区Meetup谈谈2020年的IPFS的发展历程

    从 IPFS社区Meetup谈谈2020年的IPFS的发展历程
    8月3日, IPFS社区Meetup 如期举办,这一次的社区Meetup由交流与演讲和闪电演示两部分组成,其实该会议主要带领我们回顾了IPFS在2020年的发展历程(包括项目进展、IPFS生态发展等),展示了IPFS及其生态。2020年对于IPFS而言是不平凡的一年,其唯一激励层Filecoin的主网即将上线,这让IPFS和Filecoin在全球范围内得到了前所未有的关注,也推动了IPFS的高速发展。接下来,我们一起走进IPFS在20...
  • 超10万人爆仓,比特币跳水,发生了什么

    超10万人爆仓,比特币跳水,发生了什么
    现货比特币ETF上市第二日,数字货币再迎来抛售。比特币一度跌破42000美元/枚,截止1月13日内跌幅超7%,报42562.1美元/枚。The current Bitcoin ETF is on the second day of the market and the digital currency is sold again. Bitcoin fell by over 7% to $4562.1 on 13 January.现货比特币ETF普遍跌6%左右。其中,DEFI跌...
  • 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...
  • 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...
  • 兴业基金调研远光软件、东芯股份

    兴业基金调研远光软件、东芯股份
    根据6月6日公布的公开市场信息和机构研究,世界安全基金会最近对下列两家上市公司进行了一项研究: 1) 光电软件(工程师基金参与公司专项研究) 其中一个亮点是该公司深入参与建造南方网中心和技术平台,导致南网市场在 " 九天 " 平台产品方面取得重大突破;该公司的Won-宇宙大厅已上线,而且,除了Won-宇宙之外,远洋宇宙的应用现已扩大到Won-宇宙发射、Won-宇宙-教师和政党建设-宇宙;该公司的Far-O-Cloud平台已经实现了完全成熟的国家生产,也可以在全国云中运作。...
标签列表