• 助记词:通常由12-24个单词组成。这些单词是从2048个预定义单词中随机选择的。助记词可能的组合数:
    • 对于12个单词的助记词:2048^12 ≈ 5.44 × 10^39 种可能性。
    • 对于24个单词的助记词:2048^24 ≈ 2.96 × 10^79 种可能性。
  • 私钥:由助记词经过一系列的哈希过程生成的主私钥,主私钥经过派生成子私钥
  • 公钥:由私钥生成,用于验证签名和生成地址。
  • 地址:用于接收比特币的标识符。地址是公钥的哈希值,提供了额外的安全层。比特币链上记录的是地址,而不是公钥。使用地址收币,公钥不暴露。使用地址法币,公钥暴露。

在UTXO模型中,每次转账,剩余的零钱会进入到一个新的地址,这个地址也就对应另外一组私钥和公钥。

Q:穷举所有助记词,并查看钱包中有没有钱是否可行?

A:不可行。即使使用世界上最强大的超级计算机,也需要比宇宙年龄还要长得多的时间来穷举。具体的计算过程:

1. 以12个单词的助记词组合总数为例:

2048^12 ≈ 5.44 × 10^39

2. 假设使用世界上最快的超级计算机:

以 2022 年的 Frontier 超级计算机为例,其峰值性能为 1.1 exaflops (1.1 × 10^18 次浮点运算/秒)

3. 假设每次尝试一组助记词需要 100 次浮点运算 (这是一个保守估计,实际可能更多):

每秒可尝试的组合数 = 1.1 × 10^18 / 100 = 1.1 × 10^16

4. 穷举所有组合所需时间:

5.44 × 10^39 / (1.1 × 10^16) ≈ 4.95 × 10^23 秒

5. 转换为年:

4.95 × 10^23 秒 / (365 * 24 * 3600) ≈ 1.57 × 10^16 年

6. 比较:

宇宙年龄约为 13.8 × 10^9 年

穷举时间是宇宙年龄的约 1,138,405 倍

对于单组助记词的处理时间:

1. 生成一组助记词的时间:

– 通常在毫秒级别,假设 1ms

2. 检查钱包是否有余额:

– 这涉及网络请求,可能需要 100ms 到几秒不等

– 假设平均 500ms

3. 总时间:

1ms + 500ms = 501ms ≈ 0.5 秒

但要注意:

– 网络延迟可能大幅增加检查时间

– 区块链的响应时间也会影响

– 批量处理可能会提高效率

即使我们能够每秒检查 2 个地址(这是非常乐观的估计),穷举所有可能性仍需要:

5.44 × 10^39 / 2 ≈ 2.72 × 10^39 秒 ≈ 8.62 × 10^31 年

这个时间跨度远远超出了宇宙的预期寿命。

总结:

虽然检查单个助记词组合的时间相对较短,但由于可能的组合数量巨大,完全穷举在计算上是不可行的。这就是为什么比特币等加密货币被认为是安全的 – 它们的安全性建立在这种数学上的不可行性之上。

分享到