手机版
扫描查看手机站
首页 > 文章 > 加密世界 > 正文

区块链钱包科普:如何通过私钥创建以太坊钱包地址?

时间:2025-11-11 01:24:36来源:525游

编者注:我们翻译和出版与密码学货币的私钥、地址和钱包有关的内容,无非希望传达清楚几个要点:

1. 密码学货币不同于传统的银行,你有很多工具可以生成一把私钥来持有密码学货币,既不需要向银行申请,也不需要给谁报备,没有任何人能阻止你拥有自己的私钥和钱包;

2. 公钥和用来接收转账的地址都是由私钥使用单向的数学运算推导出来的,如果不信任现有的工具,你完全可以自己使用这些数学运算来生成地址;同时,公开地址不会产生安全问题,因为地址无法反推出公钥,也无法反推出私钥;

3. 使用第三方提供的服务时,弄清楚服务的性质,不要向任何人暴露自己的私钥,并且定期备份。

区块链钱包科普:如何通过私钥创建以太坊钱包地址?

在本系列文章的第一篇中,我们得到了如下的比特币私钥:

60cf347dbc59d31c1358c8e5cf5e45b822ab85b79cb32a9f3d98184779a9efc2

编者注:这里没有写出私钥的生成过程。简单来说,私钥就是一串随机的十六进制字符串,为了安全(私钥不暴露、不被他人重现出来),这串随机数的生成环境应尽可能满足随机性、不可预测性、不可重现性。

所以,不要自己写一串数字来当私钥,因为你自以为的“随机”往往并不怎么随机,很不安全。

(理论上来说你确实可以自己连抛 256 次硬币产生符合长度要求(64 位)的随机数,但还是很不推荐。)

在本文中,我们会演示使用这个私钥来获得公开地址,以及与该私钥对应的以太坊钱包地址。

通过私钥来获得比特币钱包地址的具体流程有些复杂,因此我们会描述简化后的版本。我们需要使用一个哈希函数去获得公钥,还需要使用另一个函数去获得地址。

现在,让我们开始吧。

公钥

这部分内容和之前讨论比特币的文章中所说的相同,所以如果你已经读完了,那么就可以跳过(除非你想要复习一下)。

首先,我们需要在私钥上使用 ECDSA,即椭圆曲线数字签名算法。椭圆曲线是通过 y² = x³ + ax + b 公式得出的,其中 a 和 b 可以自定义。椭圆曲线家族有很多知名并且广泛应用的案例。比特币使用了 secp256k1 曲线,关于椭圆曲线密码学,如果你想了解更多,可以参考此文章。

以太坊使用了同样的椭圆曲线,secp256k1,因此对于比特币和以太坊来说,获得公钥的流程是相同的。

对私钥作了 ECDSA 运算之后,我们得到了 64 字节的整数,这是由两个 32 字节的整数串联组成,代表了椭圆曲线上某个点的 X 值和 Y 值。

在 Python 程序中,代码显示如下:

private_key_bytes = codecs.decode(private_key, ‘hex’)
# Get ECDSA public key
key = ecdsa.SigningKey.from_string(private_key_bytes, curve=ecdsa.SECP256k1).verifying_key
key_bytes = key.to_string()
key_hex = codecs.encode(key_bytes, ‘hex’)

注意:从上面的代码可以看出,我使用了 ecdsa 模块并通过编码器解码了私钥。这样写更多是因为 Python 的关系,而与算法本身无关,为免误解,让我来好好解释一下。

Python 语言中,至少有两种数据类型可以保存私钥和公钥:“str”和“bytes”。前者对应的是 string(字符串),后者则是 byte array(数值)。Python 语言中的密码学运算只能对“bytes”类操作,将 byte 型数据作为输入,并且将输出作为结果。

但是,这里面有个小问题:作为字符串的“4f3c”和作为 byte array 的 4f3c 是不等同的,string 等于 byte array 和两个元素 O< 的结合。codecs.decode 方法就是将字符串转换为 byte array。本文中使用的密码学操作都要进行这一步骤。

钱包地址

一旦获得公钥,我们就可以计算出钱包地址,和比特币不同,以太坊在主网和所有测试网都有相同的地址。当用户发起转账和签名的时候,他们需要选择相应的网络。

为了通过公钥得出地址,我们需要做的就是在公钥上应用 Keccak-256 加密算法,然后拿出结果的后 20 个字节,这样就可以了。整个过程不需要其他的哈希函数,无需 Base58 编码,也不用其他任何转换,你唯一需要做的事情就是在地址的开头添加“0x”。

Python代码如下:

public_key_bytes = codecs.decode(public_key, ‘hex’)
keccak_hash = keccak.new(digest_bits=256)
keccak_hash.update(public_key_bytes)
keccak_digest = keccak_hash.hexdigest()
# Take the last 20 bytes
wallet_len = 40
wallet = ‘0x’ + keccak_digest[-wallet_len:]

校验和(checksum)

我们都知道,比特币是对公钥使用哈希算法,然后取结果的前 4 个数字,以此创建校验和。这对于所有比特币地址来说都是适用的,因此在没有添加 checksum 字节之前,用户无法获得有效地址。

编者注:校验和(checksum)是一种较为简单的验证数据完整性的方法,具体方法有很多种,比如说对一段数据逐次取 4 个比特,把取出的数全部加起来,最后得到一个 4 个比特的值作为校验和。如果两段数据不一样,产生的校验和有极大概率是不一样的。跟哈希函数的原理有相似之处,但够不上密码学哈希函数那样的强度。)

例:

MD5(cvsoiu687y0adbfiq7et5tgho0) = a277a316d38c21786eac518b83af898f

MD5(wysoiu687y0adbfiq7et5tgho0) = becd314fb8d277cfe20aaadc2b52c177

在以太坊中,产生地址的流程与此并不相同。最初的时候,以太坊中没有校验和这样的机制来验证秘钥的完整性。但是在 2016 年,Vitalik Buterin 引进了 checksum 机制,现在已经被钱包提供商和交易所使用。

在以太坊钱包地址上添加 checksum 使得我们可以通过大小写来校验地址的有效性。

首先,你需要获得地址的 Keccak-256 哈希值。注意,将地址放入哈希函数的时候不可以添加 0x 部分。

其次,你需要迭代初始地址的字符,如果哈希值中的第 i 个字节(byte)大于或者等于 8,那么你要将地址中的第 i 个字符变为大写,否则就还是保持小写。

最后,你需要把 0x 添加到结果的开头。如果忽略大小写,那么校验和地址与初始地址是相同的。但是,这种使用大写字母的做法让人们可以随时随地检查地址是否有效。你可以通过这个网页找到有效验证 checksum 的算法。

通过 checksum 验证方法,我们可以得到下面的结论:

“平均来看每个地址有 15 个校验位,并且随机得出的错误地址能够偶然通过检验的概率为 0.0247%。”

下面是将 checksum 添加到以太坊地址的代码:

checksum = ‘0x’
# Remove ‘0x’ from the address
address = address[2:]
address_byte_array = address.encode(‘utf-8’)
keccak_hash = keccak.new(digest_bits=256)
keccak_hash.update(address_byte_array)
keccak_digest = keccak_hash.hexdigest()
for i in range(len(address)):
address_char = address[i]
keccak_char = keccak_digest[i]
if int(keccak_char, 16) >= 8:
checksum += address_char.upper()
else:
checksum += str(address_char)

结论

如文中所述,和比特币相比,创建以太坊地址要容易地多。我们需要做的事情就是用私钥在 ECDSA 上找出公钥,然后使用 Keccak-256 算法,并以最终哈希值的后 20 个字节作为地址。

区块链钱包科普:如何通过私钥创建以太坊钱包地址?

如果你想使用这些代码,我已经把它们发布到这个 GitHub repository 上了.

编者注:如上图所示,以太坊的公钥和地址都由私钥生成,并且其生成所需的数学运算都是完全公开的。

以上就是区块链钱包科普:如何通过私钥创建以太坊钱包地址的详细内容,更多关于通过私钥创建以太坊钱包地址的资料请关其它相关文章!


The Rock Trading交易所怎么样?The Rock Trading交易所全面介绍 冰原守卫者如何开启猎魔城堡(冰原守卫者手游攻略) gate.io交易平台转币需填写Memo&Tag的币种如何充值和提现? otcbtc交易平台怎么样?OTCBTC交易手续费多少 什么手游网页游戏上线送vip(网页游戏会员app) 电脑怎么重装系统?小白也能轻松掌握这些方法 dota2怎么解锁剑圣至宝(dota2剑圣至宝起源和传承) GT是什么币种?GT币的未来价值如何? 盘点全球区块链数字货币交易所前50排名 DNF手游宠物装备洗练材料怎么获得(dnf宠物装备怎么刷) 永劫无间最高段位是什么(永劫无间段位多少算厉害) Kishu币2025年会涨100倍吗?Kishu币未来2025-2030价格预测 雷达币今日最新价格,雷达币价格实时走势K线图历史趋势 和平精英头像右下角数字代表什么(和平精英头像右上角有个红点) BITGET交易所创始人是谁?BITGET交易所官方资料官网地址入口 消逝的光芒2幸存者感知怎么按不出来(消逝的光芒幸存者技能怎么刷) 第五人格什么叫抽刀(第五人格抽刀怪啥意思) BTCChina交易平台可靠吗?BTCChina交易平台官网下载 梦幻西游门派技能介绍(梦幻西游门派技能介绍最全) 比特币线上交易平台有哪些?比特币线上交易平台排行榜前十 蜀门手游法宝融合的规则(蜀门手游各个职业法宝搭配) 云顶之弈巨龙之境蛋能开出什么(云顶之弈巨龙掉了三个装备) 创造与魔法狗在哪里抓(创造与魔法狗怎么抓能当战宠) 问道武器10改11要多少钱(问道武器改3到改4多钱) 上公链后意味着什么 上公链带来了什么影响和挑战 数字货币钱包怎么安装?数字货币钱包新手使用教程 ICP币会跌到一文不值还有希望吗?ICP币还能涨回1千美金可能性 比特币账本存在哪里?比特币账本是谁在记账? dnfpk场需要装备吗(现在dnfpk场怎么玩?) 苹果手机怎么清理内存垃圾清理?八招教你清理出10G垃圾 创造与魔法最大地基面积是多少(创造与魔法房子最大面积) 消逝的光芒死亡后丢失的点数是什么(消逝的光芒突然死亡) csgo胸章佩戴效果是什么(csgo胸章的作用) 光遇留影蜡烛怎么获得(光遇留影蜡烛怎么获得乌龟蜡烛) 王者荣耀炮车第几波加入战斗(王者炮车几分钟加入战斗) 近期好玩的西游手游是什么(最近出的西游游戏) 摩尔庄园手游八音树怎么获得(摩尔庄园8) 中国正规的虚拟币交易所有哪些?数字货币交易APP排行榜前十名 宝可梦传说阿尔宙斯神兽阿尔宙斯怎么进化(宝可梦传说阿尔宙斯宝可梦) 区块链NFT是什么意思?区块链NFT核心价值分析 SENT是什么币种?SENT币前景和未来价值如何? EOS币还能回到100元吗?EOS柚子币2025最近利好消息分享 我的世界等级有什么用处(我的世界等级划分) 创造与魔法附魔石怎么升级(创造与魔法中附魔石怎样升级?) Bitstamp交易平台新用户注册教程 BUT币是什么币?BUT币上架交易所及用途盘点 诛仙手游套装怎么获得(诛仙手游套装怎么获取) 阴阳师椒图哪里多2022(阴阳师椒图获得) IPFS/FIL挖矿必看,FIL挖矿需要注意哪些细节? BigONE交易所排名第几,哪个国家的?BigONE交易所官方资料官网地址 蜀门手游换手机了怎么登录(蜀门手游更换手机绑定) ACH币发行总量多少?ACH币发行量及项目介绍 比特币为什么值钱?原理是什么? 魔兽世界残忍角斗士怎么换(wow残忍角斗士板甲在哪买) 蜀门手游百花技能加点(蜀门手游百花怎么加血多) PUSH币发行价多少?PUSH币发行价格一览 一文了解EL是什么币种?EL币怎么样? 开发一条公链多少钱很难吗?公链DAPP开发流程详解 期货交易平台哪个最可靠?正规期货交易平台APP排行榜 手把手教你把币从交易所提到imToken钱包 BCEX交易平台如何充值XRP、XLM等特殊币种?详细图文教程 IDEX交易所平台币是什么?IDEX交易所怎么样? 阴阳师神龛ssr多久一次(阴阳师神龛ssr多久一次出) 有哪些武侠卡牌手机游戏好玩(好玩的武侠卡牌手游) Bitstamp交易所怎么交易?Bitstamp交易所交易教程 时空猎人冰魄技能搭配(时空猎人冰魄刷图技能搭配) 我的世界34种敌对生物有哪些(我的世界34种敌对生物是什么) 抹茶app倒闭了吗?抹茶重新支持大陆用户了吗 好玩的经营策略手游有哪些(好玩的经营策略游戏手游) 王者荣耀微信区怎么换头像(王者荣耀微信区怎么换头像,不在微信里换) 使用.bat 随机生成url链接的解决方案 BITBANK交易所怎么提币到其他地址?BITBANK交易所提币教程 怪物猎人曙光dlc多少钱(怪物猎人 曙光) 区块链RAMP币是什么币种?RAMP币前景及价值分析 央行数字货币cbdc属于什么货币?中国唯一的数字货币 宝可梦传说阿尔宙斯眼睛数量是多少(宝可梦阿尔宙斯有多少宝可梦) 数字货币全球最大交易所排名,币圈交易所数字货币app排名前十名 星露谷物语海莉在哪里(星露谷物语海莉在哪里 海莉全出现位置一览) 穿越火线传说之路3怎么升级快(cf传说之路3任务详解) 哪些手游适合非RMB玩家畅玩(非rmb手游排行榜推荐) 显卡挖矿原理究竟是什么?为什么要用显卡挖矿? 太阁立志传5怎么冥想(太阁立志传5自创流派冥想) 外媒盘点十大最佳开放世界RPG《艾尔登法环》第一 冰原守卫者佣兵有什么作用如何获得(冰原守卫者游戏视频) Mana币怎么获得?如何挖矿?Mana币是什么项目以及挖矿教程 和平精英全网十大主播有哪些(和平精英主播收入排名) 免费又不用登录的古风手游有哪些(有什么好玩的古风游戏不用登录吗?) 在火币APP中绑定银行卡的方法 火币APP的钱怎么提出到银行卡? 比特币期货行情今日最新消息,比特币期货CME合约实时价格行情 我的世界怎么在活板门上放东西(我的世界活板门怎么向上开) Coinsuper是什么交易所?币成交易所充值提现操作教程 诛仙手游诛仙剑怎么使用(诛仙手游中的剑玉在哪里弄) 王者荣耀心愿点怎么提取出来(王者荣耀心愿点满了怎么提取心愿点) 有什么高画质的仙侠手游(画质很好的仙侠手游) 手机模拟炒币软件哪个好用?2025最新虚拟币模拟交易app下载安装 江南百景图中庭步月图怎么获得(江南百景图 山水庭帐) 梦幻新诛仙坐骑多少级开启(梦幻新诛仙坐骑奇缘触发地点) 什么是合约交易?一文读懂什么是合约交易 虚拟货币钱包如何使用?虚拟货币钱包imtoken使用教程图文介绍 元宇宙概念股有哪些?国内元宇宙概念股一览

热门文章

推荐专题

更多>>

游戏推荐

更多>>