在加密货币的世界里,以太坊无疑是“智能合约”与“去中心化应用”的代名词,但当我们谈论以太坊时,目光往往聚焦于价格波动、DApp交互或DeFi收益,却很少有人问:一笔以太坊交易从发送到上链,究竟经历了怎样的数学运算?一个新区块如何通过“挖矿”被创造出来?这些看似自动化的过程,底层都由一系列精密的算法和计算支撑,我们就来“手算以太坊”——从交易签名到区块哈希,亲手拆解区块链的底层逻辑,看看代码与数学如何构建起一个去中心化的世界。

手算第一步:从私钥到地址,加密算法的“身份生成术”

以太坊的核心是“账户系统”,每个账户都由一对密钥构成:私钥与公钥,其中私钥是绝对秘密,公钥则用于生成地址,要理解账户的本质,得从椭圆曲线算法(Elliptic Curve Cryptography, ECC)说起——这是以太坊生成密钥的数学基础。

以太坊使用的椭圆曲线是secp256k1,其方程为:
$$y^2 = x^3 + 7 \pmod{p}$$
p$是一个巨大的质数:$p = 2^{256} - 2^{32} - 977$,这个曲线上的点构成了一个有限 Abel 群,满足“点加”运算规则:给定曲线上两点$P$和$Q$,可以通过几何作图法找到第三点$R = P + Q$,且运算满足交换律和结合律。

私钥的生成:本质上是一个随机数,以太坊要求私钥是一个256位的随机整数,范围在$[1, n-1]$之间,n$是曲线的阶(约$2^{256}$),我们随机生成一个私钥$d = 0x1a2b3c...$(256位十六进制数)。

公钥的生成:通过椭圆曲线“标量乘法”计算:$P = d \cdot G$,G$是曲线的基点(固定点,坐标已知),$d$是私钥,这里的“标量乘法”不是简单的乘法,而是$G$点自加$d$次(d=3$时,$P = G + G + G$),由于椭圆曲线离散对数问题的困难性,已知$P$和$G$几乎无法反推出$d$,保证了私钥的安全。

地址的生成:以太坊地址由公钥$P$的坐标$(x,y)$通过哈希算法生成:

  1. 取公钥的未压缩格式(前缀0x04,后接$x$和$y$坐标,各32字节);
  2. 对其进行随机配图