Ethereum learning path · 05.01

一串秘密,
如何变成公开地址?Private key · Public key · Address

从一个只有你知道的数出发,经过椭圆曲线与 Keccak-256, 得到全世界都能看见的 20 字节地址。正向只需片刻,反向却在现实中不可行。

  • 05 · 01 密码学基础
  • 58 MIN 阅读与实验
  • 0 → 深入 无需高等数学

The thesis

控制权不来自“知道一个地址”,而来自能否为明确数据产生有效授权。 地址负责被找到,私钥负责证明你有权行动。

01 · Orientation

先把四个对象分开

私钥、公钥、地址和账户彼此相关,却处在不同位置、承担不同职责。

第五章开场 · 经典执行层 EOA 的密码学根

上一章把以太坊账户解释成“世界状态中由地址索引的一条记录”。现在要追问: 一个经典外部账户为什么能够证明某次操作获得了授权?答案不是把秘密交给网络, 而是让秘密只在本地参与计算,向网络公开可以验证、却不能反推出秘密的结果。

一句话地图

私钥是秘密整数;公钥是由它计算出的椭圆曲线点;地址是公钥摘要的 20 字节后缀; 账户则是以该地址为索引的链上状态。[1]

01 · Secret material 签名设备里

私钥只应存在于硬件钱包、安全芯片或受保护的软件签名环境。它不进入交易,也不进入区块。

32 BYTES · NEVER SHARE
02 · Derived material 可以公开计算

公钥和地址都可以从私钥确定性算出。公钥还能在给定交易签名与签名哈希时被恢复。

Q = d · G · ONE WAY
03 · Shared state 以太坊网络里

地址定位 nonce、ETH 余额、代码哈希与存储根;账户字段里没有私钥,也没有公钥字段。

σ[20-BYTE ADDRESS]
图 01 “链上账户”与“链外控制材料”必须分开。网络保存可验证的公开状态,不替经典 EOA 保管秘密。

四个名词,四种职责

PRIVATE KEY · d

产生授权

一个满足 secp256k1 范围约束的秘密标量。谁拿到它,谁就能为该经典 EOA 产生有效签名。

PUBLIC KEY · Q

验证授权

曲线点 Q = d · G。它可以公开;由 Q 反求 d 是椭圆曲线离散对数问题。

ADDRESS · A

定位状态

公钥 Keccak-256 摘要的最右 20 字节。它是公开标识,不是秘密,也不是公钥本身。

ACCOUNT · σ[A]

保存当前事实

链上记录余额、nonce 等状态。钱包读取它并帮助签名,但钱包应用本身不等于账户。

更准确的“钥匙”类比

把地址想成保险箱、私钥想成金属钥匙虽然直观,却会误导:ETH 并不装在地址里, 私钥也不会“打开一个盒子”。更准确地说,地址定位公开账本记录,私钥产生协议认可的授权

这一课聚焦经典执行层 EOA。合约账户也有 20 字节地址,却通常不是由某把私钥的公钥推导出来; 权益证明验证者又使用另一套 BLS 密钥。看到相同的“key”或“address”字样时,必须先问它属于哪一层。

02 · Private key

私钥不是密码,而是一个数

它通常显示成 64 个十六进制字符;真正的协议条件是落在曲线阶规定的范围内。

在 secp256k1 中,私钥 d 是一个按大端解释的非零整数。 它不是你自己想出来的口令,也不是钱包服务器分配的用户名。安全钱包会使用经过审计的密码学安全随机源 生成高熵种子或私钥,再按标准派生与范围检查规则得到不可预测的有效标量。 HD 钱包的子私钥通常由种子确定性派生,并非每把子钥都现场重新抽样。

1 ≤ d < n
n = 0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141 n 是生成点 G 的阶。0 无效,n 以及更大的数也无效;因此有效私钥数量是 n − 1, 不是把所有 2²⁵⁶ 个位串都不加检查地接受。[2]
32 B 定长字节表示;不足 32 字节时,显示层在左侧补零。
64 hex 每个字节用两个十六进制字符表示;0x 只是常见前缀。
≈ 2²⁵⁶ 有效范围接近 2²⁵⁶,但严格上是 n − 1 个值。
公开教学向量 d = 1 32 bytes · big-endian

这是稍后实验使用的真实有效值,但全世界都知道它,安全性为零。前导零不能在定长编码里随意丢失。

随机性比“看起来复杂”更重要

一串很长的字符可能仍然很容易猜。例如把姓名、生日或一句话直接哈希成私钥, 会形成所谓 brainwallet:攻击者可以批量尝试常见语料,根本不需要遍历整个密钥空间。 正确做法是使用经过审计的钱包或硬件签名器:它们从 CSPRNG 或 TRNG 获得高熵根材料, 并按标准算法派生、检查或拒绝无效标量;不要自己设计随机或派生算法。

绝对安全边界

绝不要把真实私钥粘贴进任何教程、网页、聊天、表单或截图。 本页只提供 1 到 8 的公开测试值,不提供私钥文本输入框,也绝不能用这些值接收真实资产。

四个常被混用的对象
对象 本质 是否可公开 改变后影响
私钥 签名用的秘密标量 绝对不可公开 经典 EOA 没有“原地改私钥”;迁移意味着换地址并转移控制关系
钱包密码 解锁本地加密文件或应用 不可公开 可更换;通常不改变底层私钥和地址
助记词 / 种子 派生许多私钥的根材料 绝对不可公开 同一根材料与派生路径可恢复同一组密钥;第五章第三课详讲
地址 20 字节公开标识 可以公开 公开不等于授权,但会暴露可查询的链上活动
“256 位密钥”不等于 256 位攻击强度

私钥空间接近 2²⁵⁶,但针对椭圆曲线离散对数的最佳通用攻击具有平方根量级, 因而 secp256k1 通常被描述为约 128 位经典安全强度。无论哪种说法, 对正确生成的私钥,现实威胁几乎总是泄露、钓鱼、恶意签名或备份失败,而不是穷举数学空间。

03 · Public key

公钥是曲线上的一个点

“私钥乘以生成点”不是普通整数乘法,而是在有限域椭圆曲线群中反复做点运算。

secp256k1 定义了一条有限域上的曲线、一枚固定生成点 G、一个素数模数 p 与生成点阶 n。给定私钥 d,公钥就是 G 被群运算“累加” d 次得到的点 Q

y² ≡ x³ + 7 (mod p)
Q = d · G “mod p”把坐标限制在有限域里,所以真实曲线不是纸面上连续的弧线,而是一组离散点。 下方只是群运算的概念路径,不按几何位置或距离绘制。
图 02 实现使用“倍加”等算法在约 256 次比特步骤内计算 d · G,不会真的逐次相加 d 遍。 正向计算很快;已知 Q 反求 d 则是椭圆曲线离散对数问题。

点、坐标与编码不是同一件事

抽象公钥是点 Q = (x, y);为了存储或传输,必须把坐标编码成字节。 secp256k1 的每个坐标固定为 32 字节。SEC 1 的未压缩编码会在前面加一字节 04,形成 65 字节;压缩编码则保留 x 并用前缀记录 y 的奇偶性,形成 33 字节。[4] 但以太坊经典 EOA 地址公式使用的是不带 04 前缀的 64 字节 x ∥ y[2]

抽象点 Q = (x, y) 数学对象
未压缩 SEC 1 04 ∥ x[32 B] ∥ y[32 B] 65 bytes
地址公式输入 x[32 B] ∥ y[32 B] 64 bytes
压缩 SEC 1 02/03 ∥ x[32 B] 33 bytes
私钥 d → 公钥 QFAST
d · G → (x, y)

确定性、可重复且高效。同一私钥与同一曲线参数总得到同一公钥。

公钥 Q → 私钥 dINFEASIBLE
(x, y) ⇢ ? · G

没有已知的现实可行捷径。这里的安全依赖计算困难,不是“反向在数学上没有答案”。

不要把“公开”误解成“用于加密所有交易”

以太坊普通交易内容是公开的。经典 EOA 的公钥主要进入签名验证与发送者恢复; 数字签名提供授权与完整性,不会把转账金额、接收方或 calldata 自动变成密文。 下一课会完整拆解 rsyParity 与签名哈希。

04 · Address

地址是公钥摘要的右侧 20 字节

先哈希原始 64 字节坐标,再丢掉摘要左侧 12 字节;最后的 0x 只是十六进制显示前缀。

得到公钥点后,以太坊不会直接把 64 字节坐标当成账户标识。 Yellow Paper 定义:对 x ∥ y 做 Keccak-256,得到 32 字节摘要, 再取最右侧 160 位,也就是最后 20 字节。[2]

A(d) = rightmost₍₂₀ bytes₎(Keccak-256(x ∥ y))
Q = d · G, Q = (x, y) Keccak-256 的输入是 64 字节原始坐标,不是它们的 ASCII 十六进制文本, 也不包含 SEC 1 未压缩前缀 04。这里的 Keccak-256 也不是 NIST 最终标准的 SHA3-256。
01 · secret scalar 私钥 d 有效范围中的 32 字节整数
02 · curve point x ∥ y 公钥坐标共 64 字节,不带 04
03 · digest Keccak-256 输出固定为 32 字节
04 · state index 后 20 字节 显示为 0x + 40 个 hex 字符
图 03 每一步都是确定性的。生成密钥与地址可以完全离线完成,不需要先向以太坊注册,也不会自动产生链上交易。

20 字节值与 42 字符字符串

协议层地址本体是 20 字节。每个字节写成两个十六进制字符,得到 40 个字符; 人们再加上 0x 表明“后面是十六进制”,于是常见字符串长度是 42。 0x 不属于那 20 字节。ERC-55 还可以按哈希规则混合大小写, 给显示字符串增加轻量校验,但底层 20 字节不变。

EOA ADDRESS

来自公钥

d → Q → Keccak → 20 B。经典 EOA 的控制者能用对应私钥产生签名。

CONTRACT ADDRESS

通常来自创建过程

CREATE 地址由创建者与 nonce 推导;CREATE2 则改用 keccak256(0xff ∥ deployer ∥ salt ∥ keccak256(init_code)) 的最后 20 字节,nonce 不进入 CREATE2 的地址公式。外观同为 20 字节,却不意味着背后有对应私钥。

同一个地址可以出现在多条链

地址推导不包含 chain ID,所以同一私钥在采用相同地址规则的 EVM 链上会得到同一地址。 各链状态彼此独立。受 EIP-155 保护的 legacy 交易以及现代 typed transactions 会把 chain ID 纳入签名域以限制重放;历史的未保护 legacy 签名不包含 chain ID。[6]

地址只有 160 位,而公钥信息更长,所以理论上不止一个公钥可能映射到同一地址。 这不是数据库里预先“注册唯一用户名”的机制。不过对正确随机生成的密钥, 找到某个既定地址的可控预像在现实中不可行;实际用户更应防范复制错误、地址投毒和界面欺骗。

05 · Derivation lab

亲手走完一条真实推导链

选择一个公开、故意不安全的小私钥;页面会用真实 secp256k1 与 Keccak-256 计算结果。

抽象公式只有经过测试向量才真正落地。下面不是“形似密码学”的随机动画: 点坐标、摘要和 ERC-55 地址均由页面内的确定性实现实时计算,并以私钥 d = 1 的公开向量做自动校验。

Interactive · 01

地址推导显微镜

只能选择 1–8。它们全部是公开测试值,任何人都能立刻转走其中的资产。

d = 1
Private key · 32 B
0000000000000000000000000000000000000000000000000000000000000001
Public x · 32 B
79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798
Public y · 32 B
483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8
Keccak-256 · 32 B
c0a6c424ac7157ae408398df7e5f4552091a69125d5dfcb7b8c2659029395bdf
Raw address · 20 B
0x7e5f4552091a69125d5dfcb7b8c2659029395bdf
ERC-55 display
0x7E5F4552091A69125d5DfCb7b8C2659029395Bdf

阶段 01:d 以 32 字节大端形式表示;左侧补零不会改变整数值。

安全提示:这里没有文本输入框。不要把真实私钥改写进开发者工具或页面代码。

以 d = 1 为例,究竟发生了什么?

  1. 01

    范围检查:1 满足 1 ≤ d < n,所以是有效标量;但它可被任何人猜中,因此绝不安全。

  2. 02

    标量乘法:1 · G = G,所以输出坐标恰好就是标准规定的生成点坐标。

  3. 03

    序列化与哈希:把 x、y 各补齐 32 字节后直接连接;不带 04,对 64 个原始字节做 Keccak-256。

  4. 04

    截取与显示:摘要 c0a6…5bdf 的最后 40 个 hex 字符成为原始地址,再按 ERC-55 计算大小写。

四个实现错误会得到四个不同结果

x ∥ y 当 ASCII 字符串哈希、把 04 前缀也放进哈希、 用 SHA3-256 代替 Keccak-256、或取摘要左侧 20 字节,都会得到看似合理却完全错误的地址。 密码学工程要求精确到“哪一组字节、哪一种 padding、哪一端被截取”。

06 · One-way relations

哪些能推,哪些不能反推?

“单向”不是一句魔法咒语:曲线运算、哈希与截取分别制造不同的可见性边界。

掌握密码学关系最实用的方法,是逐条判断已知输入能否得到输出。 正向推导用于生成和验证;反向困难保护控制权;签名恢复则提供一条常被忽略的旁路: 给定正确的签名载荷与可恢复签名,节点可以恢复公钥,再核对发送者地址。[3]

私钥 → 公钥可以
d → d · G

确定性曲线标量乘法;钱包每次都会得到同一 Q。

公钥 → 私钥现实不可行
Q ⇢ d ?

需要解决 secp256k1 上的离散对数;没有已知现实可行算法。

公钥 → 地址可以
x ∥ y → Keccak → 20 B

公开、快速且无需联网;任何人都能检查公钥对应哪个地址。

地址 → 公钥不能直接
20 B ⇢ 64 B ?

哈希与截取丢失信息;一个从未签名的 EOA 可能没有公开可恢复的公钥。

签名 + 载荷 → 公钥可恢复
(hash, r, s, yParity) → Q

以太坊交易验证会利用可恢复 ECDSA 推导发送者,而不是信任任意填写的 from。

地址 → 私钥现实不可行
20 B ⇢ d ?

既要穿过哈希预像边界,又要拥有能产生匹配地址的有效私钥。

网络看得见什么?

TRANSACTION 字段与签名

接收方、金额、calldata、费用参数、nonce 和签名都会传播;普通交易不是密文。

RECOVERY 可恢复公钥

节点对规定载荷取签名哈希,用签名恢复公钥,再哈希得到发送者地址。

NEVER BROADCAST 私钥本身

签名器不会输出私钥;签名操作会输出签名或已签名载荷,并可公开公钥或地址。任何要求“上传私钥验证所有权”的服务都越过了安全边界。

公钥暴露并不是经典系统中的漏洞:协议本来就依赖它可被验证。真正的安全假设是, 在当前经典计算模型和正确参数下,从公钥恢复私钥不可行。这里不要把“不可行”写成“数学上绝对不可能”; 密码学结论始终依赖算法、计算资源与实现没有侧信道泄露。

160 位地址的两个不同问题

找到任意一对相同地址属于碰撞问题,生日界约为 2⁸⁰; 针对某个既定地址寻找可控预像则是约 2¹⁶⁰ 级别的哈希目标。 而直接从已知公钥求私钥的通用曲线攻击约为 2¹²⁸ 级别。三者目标不同,不能只用“256 位”一概而论。

五个必须拆掉的误区

  1. 01

    “地址就是公钥。”错。地址只有公钥 Keccak 摘要的最后 20 字节。

  2. 02

    “私钥存在链上。”错。链上保存状态、交易与签名等公开数据,私钥应始终在链外。

  3. 03

    “知道地址就能花钱。”错。知道索引只能查询和收款,不能产生授权。

  4. 04

    “签名会加密交易。”错。签名证明授权与完整性,普通交易内容仍然公开。

  5. 05

    “所有 0x 地址背后都有私钥。”错。合约地址、预编译地址或无人掌握预像的 20 字节值都可能存在。

07 · ERC-55 checksum

大小写为什么能发现部分抄错?

ERC-55 不创造新地址,只为同一个 20 字节值设计一种带轻量校验的十六进制显示。

十六进制数字 0–9 没有大小写,但字母 a–f 有。 ERC-55 利用这一点,把地址自身的小写 ASCII 文本再做一次 Keccak-256; 对每个字母位置,如果对应哈希半字节不小于 8,就把字母大写。[5]

lower = lowercase(address without 0x)
h = Keccak-256(UTF-8 / ASCII bytes of lower)
letter[i] is uppercase iff hex(h)[i] ≥ 8 这是第二次、用途不同的 Keccak:地址生成时哈希 64 字节原始公钥坐标; ERC-55 则哈希 40 个小写十六进制字符的文本字节。数字位置没有大小写可用。

Interactive · 02

地址大小写检查器

这里只处理公开地址。切换示例,观察“底层值相同”和“校验通过”并不是同一句话。

应有大小写 0xfB6916095ca1df60bB79Ce92cE3Ea74c37c5d359

校验通过:输入与 ERC-55 编码完全一致。

40 去掉 0x 后仍是 40 个十六进制字符;校验不增加长度。
≈ 15 bit 平均可利用约 15 个字母大小写位置作为校验信息。
0.0247% ERC-55 给出的随机错误地址偶然通过校验的净概率。

把任意地址强制转换成全小写或全大写,通常会丢失 ERC-55 校验模式;但少数地址的规范 ERC-55 输出恰好全小写或全大写。是否通过校验不能只看“有没有混合大小写”,必须按规则重算并逐字符比较。 不同大小写的地址文本如果忽略大小写,底层 20 字节可以相同;校验失败应被视为 “请停止并重新核对”,而不是替你自动猜测正确收款人。

校验不是身份认证

ERC-55 只能发现一部分输入错误,不能证明“这个地址确实属于 Bob”。 地址投毒会发送首尾相似的攻击者地址,诱导你从历史记录复制;恶意网页还可能在确认前替换剪贴板。 大额操作应核对完整地址、可信地址簿、域名解析结果与硬件设备上的最终显示,并先做小额测试。

08 · Wallet boundaries

钱包保管什么,链上保存什么?

正确的恢复与防护策略,建立在“秘密材料、加密容器、公开标识、链上状态”四层分离之上。

“币在钱包里”是一句方便但不精确的话。钱包或硬件设备管理密钥与授权流程, 资产归属则表现为以太坊状态中的余额、合约映射或 NFT 所有者字段。 同一个地址可以被多个只读界面观察,也可以由多台持有同一秘密的设备控制。

什么存在于哪里
对象 典型位置 网络是否需要 核心风险
私钥 硬件签名器、安全芯片、加密 keystore 或受保护内存 不需要,也绝不应收到 复制、恶意软件、侧信道、错误备份
钱包密码 用户记忆与本地密钥派生流程 不需要 弱口令、钓鱼;它只保护容器,不改变链上控制根
公钥 / 签名 可由签名恢复;签名随交易公开 验证授权需要 实现错误、ECDSA 签名随机数 k 重用(不是账户 nonce)、签错消息;风险不来自公钥或签名“被看见”本身
地址 钱包界面、交易、合约存储、区块浏览器 作为状态索引与消息目标 隐私关联、复制错误、地址投毒
ETH / Token 状态 以太坊账户状态或代币合约存储 由全节点共同验证 错误授权、合约风险、链或网络选择错误

四种故障,四种不同后果

ADDRESS EXPOSED

地址公开

不会直接失去控制权,但交易关系、余额与交互历史可能被关联。警惕针对性钓鱼。

PASSWORD LOST

钱包密码忘记

若仍有私钥、助记词或其他恢复机制,可以在新工具中恢复;只有加密文件而无密码则可能无法解密。

PRIVATE KEY LOST

控制材料丢失

经典单私钥 EOA 本身没有重置或恢复入口;若控制私钥及其种子、备份全部丢失,链不会替你恢复。社交恢复等功能属于智能账户或额外控制层。

PRIVATE KEY LEAKED

控制材料泄露

攻击者拥有同等签名能力。应尽快把资产迁往新控制根,并撤销旧地址的代币授权与应用权限。若泄露的是助记词或设备根材料,应迁移其全部派生账户;撤销授权不能让旧地址重新安全。

MAINNET 0x7E5F…Bdf

同一地址在主网有一套独立 nonce、余额、合约与历史。

TESTNET 0x7E5F…Bdf

字符串可以相同,但测试网维护另一套状态;测试 ETH 不是主网 ETH。

SIGNING DOMAIN chain ID

受保护的 legacy 与现代 typed 交易把链身份纳入签名域;历史未保护 legacy 签名例外。chain ID 不参与地址推导。

一套务实的密钥卫生

  1. 01

    让成熟工具生成密钥。不使用脑钱包、不手抛硬币、不从短口令直接哈希。

  2. 02

    把长期大额与日常交互分层。硬件签名器保管高价值控制根,热钱包只承担可承受损失。

  3. 03

    离线备份根材料。明确备份的是私钥、keystore 还是助记词;定期用无资产环境演练恢复。

  4. 04

    在可信显示上核对签名意图。设备安全不能弥补用户批准恶意 calldata 或无限代币授权。

  5. 05

    不在多个地方复制秘密。每增加一个云盘、剪贴板、相册或聊天副本,攻击面就扩大一次。

两个重要边界

权益证明验证者的签名密钥使用 BLS,与执行层 EOA 的 secp256k1 私钥不同; 提款凭证或提款密钥又是另一套控制关系。智能账户还可以使用多签、社交恢复或 passkey 等自定义验证规则。 它们都不改变本课这条经典推导链的正确性, 只是说明“所有账户都等于一把 EOA 私钥”已经不是完整的现代账户模型。

09 · Recap

把整课压缩成一条单向链

从秘密标量到公开状态索引,每一步都要说清输入、输出、编码和安全边界。

安全随机私钥 d secp256k1 点 Q = dG 64 B 坐标 x ∥ y Keccak-256 摘要 保留右侧 20 B ERC-55 显示 索引 σ[address]
  1. 01

    私钥是范围内的秘密整数。32 字节是编码长度,安全依赖均匀且不可预测的生成。

  2. 02

    公钥是曲线点。Q = d · G 正向很快,反向求 d 在现实中不可行。

  3. 03

    地址公式使用 64 字节 x ∥ y。不要带 04 前缀,不要哈希 ASCII hex。

  4. 04

    Ethereum 使用 Keccak-256。它与最终 NIST SHA3-256 的 padding 不同,不能互换。

  5. 05

    地址是摘要最右 20 字节。0x 只是显示前缀;40 个 hex 字符表示 20 字节。

  6. 06

    ERC-55 只编码大小写。它检测部分抄错,不改变底层地址,也不验证现实身份。

  7. 07

    链上没有私钥字段。节点从签名恢复并核对发送者;私钥永远不应广播。

  8. 08

    钱包是授权工具,不是资产容器。资产状态在链上,钱包管理密钥、权限与交互。

现在检查你的理解

1. 哪项最准确地描述以太坊经典 EOA 私钥?

2. 经典 EOA 地址计算时,Keccak-256 的直接输入是什么?

3. 从 32 字节 Keccak 摘要得到地址时保留哪一段?

4. 网络怎样验证经典 EOA 的交易,而不接触私钥?

5. ERC-55 能做什么?

6. 同一私钥在主网与采用同一规则的测试网上通常会怎样?

10 · Sources

术语与一手资料

地址推导按 Yellow Paper 与当前执行规范交叉核对;显示校验按 ERC-55 原始规范实现。

核心术语

私钥 PRIVATE KEY

满足 1 ≤ d < n 的秘密标量,用于生成经典 EOA 的 secp256k1 签名。它不是地址、钱包密码或链上字段。

公钥 PUBLIC KEY

曲线点 Q = d · G。以太坊地址公式把其 x、y 坐标各编码为 32 字节并连接。

secp256k1 ELLIPTIC CURVE

执行层经典 EOA 的 ECDSA 曲线参数集合,定义有限域、曲线方程、生成点 G 与阶 n。

标量乘法 SCALAR MULTIPLICATION

在椭圆曲线群中计算 d · G 的运算。正向高效,反向对应离散对数难题。

Keccak-256 HASH

以太坊使用的 256 位 Keccak 摘要函数。它与 NIST 最终 SHA3-256 的 padding 不同。

地址 ADDRESS

20 字节公开值,用作执行层状态索引与消息目标。经典 EOA 地址来自公钥摘要,合约地址通常来自创建规则。

ERC-55 CHECKSUM ENCODING

利用地址字母大小写携带轻量校验信息的显示编码;不改变底层 20 字节值。

keystore SECRET STORAGE

用密码派生密钥加密私钥的 JSON 容器。更换密码可以重加密容器,但不会自动改变私钥和地址。

官方一手资料

  1. 01
    ethereum.org — Ethereum accounts EOA、私钥与公钥关系、20 字节地址、账户字段以及“账户不等于钱包”的基础说明。 持续更新的官方开发者文档 · 核对:2026-07-25
  2. 02
    Ethereum Yellow Paper 附录 F 的 secp256k1 私钥范围、64 字节公钥、签名约束与地址推导公式。 形式化协议基线;当前分叉细节同时核对执行规范
  3. 03
    Ethereum Execution Specs — recover_sender 当前执行规范中从交易签名恢复公钥、Keccak 哈希并截取地址的可执行实现。 BPO2 分叉规范视图 · 核对:2026-07-25
  4. 04
    SECG SEC 2 v2 — secp256k1 domain parameters secp256k1 的有限域、曲线系数、生成点坐标与阶。 Standards for Efficient Cryptography Group
  5. 05
    ERC-55 — Mixed-case checksum address encoding 大小写算法、官方测试向量、平均校验位与 0.0247% 随机错误通过概率。 原编号 EIP-55;当前分类显示为 ERC
  6. 06
    EIP-155 — Simple replay attack protection 为受保护的 legacy 交易把 chain ID 纳入签名域;现代 typed transactions 也包含 chain ID。历史未保护 legacy 签名不含 chain ID,且 chain ID 不进入地址推导。 Spurious Dragon 协议变更
  7. 07
    EIP-1014 — Skinny CREATE2 CREATE2 合约地址使用 0xff、部署者、salt 与 init-code hash 的正式公式。 用于区分 EOA 与合约地址来源
  8. 08
    ethereum.org — Web3 Secret Storage keystore JSON、密码派生密钥、加密私钥与完整性校验的标准结构。 钱包密码与私钥边界
  9. 09
    ethereum.org — Keys in proof-of-stake Ethereum 验证者签名密钥与提款凭证;说明 BLS 验证者密钥不同于执行层 EOA 密钥。 共识层边界资料
  10. 10
    ethereum.org — The use of SHA3 / Keccak 解释 Ethereum 使用的 Keccak 与最终 NIST SHA-3 标准之间的命名及 padding 差异。 历史 Ethash 页面中的哈希说明
下一步

你现在已经知道地址从哪里来。下一课会把“私钥能够授权”拆成完整数字签名: 交易的哪些字节先被编码和哈希,rsyParity 怎样生成, 节点又怎样恢复发送者并拒绝伪造与重放。