《精通以太坊》:一次性读懂密钥、地址与数字所有权

·

原文改编自以太坊经典读物《Mastering Ethereum》中关于“Keys, Addresses”的章节,原章节深入剖析了以太坊赖以运行的密码学基础。本文为中文精简版,适合开发者、投资者及区块链爱好者入门与复习。

本文将逐步拆解以太坊密钥公钥以太坊地址之间的关系,并给出日常操作、开发及安全防护的实用建议。请准备好纸笔或代码编辑器,跟着实操会更直观。


以太坊账户的两种形态:EOA 与合约

以太坊网络中有且只有两类账户:

  1. 外部拥有账户(EOA):由一对密钥对(私钥 + 公钥)控制,对应我们最常见的个人钱包。
  2. 合约账户:由部署时自动生成的地址标识,逻辑被合约代码约束,没有传统意义的私钥。

判断某人能否动用一笔以太,关键在于其是否掌握对应账户的私钥

小提示:当你听说“我把币提到钱包”时,99% 指的是第一类 —— EOA。

FAQ ① 私钥丢了怎么办?


数字密钥如何证明资金所有权

数字密钥根本不“存在”于链上,而是由用户本机生成并离线保存

交易被广播到网络前,钱包会用私钥生成一次性的数字签名。节点验证签名有效即可确认“此人确实有权转账”。


FAQ ② 为什么公钥又可以公开?


私钥:仅 256 位随机数,却价值连城

示例(十六进制):
f8f8a2f43c8376ccb0871305060d7b27b0554d2cc72bccf41b2705608452f315

生成高品质随机数时,一定要用操作系统 CSPRNG 或硬件随机源,切勿手写“看起来乱”的数字。
⚠️ 自己写随机数生成器 ≈ 把钱交给黑客。


FAQ ③ 纸钱包安全吗?


从私钥到公钥:一次椭圆曲线乘法即可

公式:K = k × G

整个过程不可逆,因此可以放心把 K 告诉任何人,他们依旧无法算出 k。
在代码实操中,OpenSSL、libsecp256k1 都会帮你在毫秒级完成计算。


FAQ ④ 为什么地址不用公钥而要多此一举做哈希?


以太坊地址的 3 种主流格式

格式示例特点
原始十六进制0x001d3f1ef827552ae1114027bd3ecf1f086ba0f9最长见,无校验
EIP-55 Mixed-case0x001d3F1ef827552Ae1114027BD3ECF1f086bA0F9大小写校验,钱包可防误输
ICAPXE60HAMICDXSV5QXVJA7TJW47Q9CHWKJD兼容 IBAN,33-35 字符,仅部分钱包支持

👉 想知道你常用钱包是 EIP-55 还是 ICAP?点这里自查

编码逻辑:

  1. 小写地址做 Keccak-256
  2. 逐位比对哈希十六进制,若位 ≥ 8 则对应地址字母 大写
  3. 钱包检查大小写即可 99.986% 定位输入错误

FAQ ⑤ 钱包显示“地址无效”怎么办?


常见攻击场景与安全实践

  1. 钓鱼网站:域名伪装小写字母“l” 和 数字“1” 混淆,粘贴前在区块浏览器二次核对地址。
  2. 剪贴板木马:电脑木马自动替换收款地址,发送前多次交叉确认。
  3. 弱熵助记词:使用 12~24 词 BIP-39 随机短语,并冷存于金属板。

👉 去完成一次完整的安全演练,用真机离线环境生成密钥


FAQ ⑥ 可以在多台设备同用一把私钥吗?


小结与行动清单

把本文收藏、转发或打印——在数字世界里,“你的钥匙真的就是你的钱”