web3实战课04:【暴富抽奖器】和它的密码学原理

如果当你按下一个按钮的时候,你有极其微弱的概率获得一笔巨额财富,或者你什么也没有获得。 而且按下这个按钮的成本几乎完全为零时,你会选择按下吗?

这个按钮的开发非常容易,你只需要理解 web3 私钥的密码学原理,就可以轻松开发出这个按钮。

📖阅读本文,你将

  1. 获取一个 demo 仓库。
  2. 了解 web3 hash 碰撞的原理,了解 【暴富抽奖器】 的本质以及 web3 密钥安全的本质。
  3. 认识 wgami 中查询 address 余额的接口。

1. 私钥和地址的海洋

在大部分 web3 链中,私钥是 64 位的十六进制字符串。

那么,它能容纳多少个不同的私钥呢?

js 复制代码
16 ** 64 = 1.1579209e+77

所以,一个 web3 链的私钥海洋,大概可以容纳 1.1579209e+77 个有效私钥吗?

答案是:不。

为什么?

因为最终决定一个密钥有效性的,还是其 address 钱包地址。

以【以太坊】为例,其钱包长度为 40 个十六进制字符。

钱包海洋的容量为 16 ** 40 = 1.46150164e+48

虽然私钥海洋的 1.1579209e+77 数量级,要远大于地址 1.46150164e+48 数量级。

但最终提供给验证方的,还是 address。

因此我们可以认为:

如果私钥 A 和 私钥 B,生成的 address 相同,那么这两个私钥是重叠的。它们具备完全相同的密码学能力。

这也就是密码学中所谓的 Hash 碰撞原理。

2. 【暴富抽奖器】的原理是什么?

根据 web3 私钥的密码学原理,我们很容易开发出【暴富抽奖器】。

  1. 在 web3 生成私钥是一件非常容易的事情,并且0成本。
  2. 在 web3 通过私钥生成 address 是一件非常容易的事情,并且0成本。
  3. 你生成的 address 非常可能和另一个正在被使用的 address 相同,一旦相同,你将有资格获取这个 address 名下的所有 token。

(当然,这并不道德,能不能和做不做是两码事,本文只讨论技术层面)

因此,理论上每当你生成 1 个钱包地址的时候,你其实正在进行一次 【暴富抽奖】。

3. 【暴富抽奖器】的代码

先上 demo: wagmi-demos.vercel.app/04-fortune-...

再上源码仓库:github.com/zhangshichu...

如果你阅读过我的上一篇文章 《web3实战课03:认识密钥和签名,批量创建账户》 你应该能知道如何快捷地批量生成 web3 私钥。

而本文只需要增加一个步骤:查询地址余额。

js 复制代码
import { usePublicClient } from "wagmi";
const balance = await client?.getBalance({
  address: account.address,
});

非常容易。

4. 【暴富抽奖器】效果

用手机或者电脑打开页面,当你点击按钮的时候,你会批量创建 100 个 web3 账户,并查询其余额。

理论上,这其实是一种 【抽奖行为】,只不过概率非常感人罢了。

大概为:

js 复制代码
1/ (10 ** 42) 

这个数量级吧。

这是必然的,如果概率太高,web3 早就没有安全可言了。

继续贫穷吧,强盗没那么好当。

关于我

我是春哥,一个前端工程师。

目前正在学习 web3 领域。

如果你有任何问题,欢迎留言。

相关推荐
小万74210 小时前
God‘s Eye View 深度解析:15 路公开信号 + CesiumJS 的浏览器级 OSINT 控制台,60 帧渲染的“真实间谍卫星模拟器”
前端
IT星宿10 小时前
浏览器标签页全是一个图标:我用名字哈希生成 favicon,让每个项目都有身份标识
前端
OpsEye10 小时前
大模型账单对账难:不同厂商 Token 统计口径差异怎么处理
javascript·ai编程
全栈项目管理程序猿10 小时前
ArcGIS JS 基础教程(32):体元系列 - VoxelSlice 体元切片
前端·javascript
拖孩12 小时前
AI 帮我写的小程序「厨菜记」上线满月了,挣了两百块!!!
前端·后端·微信小程序
用户3600555790012 小时前
Kestrel_VLLM - 13 · 为什么排除 MoE FFN Tiling 与 Tensor Core
前端
Hilaku12 小时前
AI 流式输出都用 SSE,什么时候必须换 WebSocket?
前端·javascript·程序员
奇牙coding13 小时前
Codex CLI 升级后多文件编辑静默失效:config.yaml 枚举变更排查与修复指南
java·前端·javascript·ai
小羊没烦恼!13 小时前
Ajax与JSON的一些总结
android·java·前端·数据库·mysql·算法·okhttp
程序员老赵13 小时前
Docker 部署 Filestash:轻松搭建浏览器文件管理平台
前端·docker·开源