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. 【暴富抽奖器】效果

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

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

大概为:

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

这个数量级吧。

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

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

关于我

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

目前正在学习 web3 领域。

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

相关推荐
猫猫不是喵喵.20 分钟前
Vue3 Props 属性
前端·javascript·vue.js
醉城夜风~1 小时前
CSS元素显示模式(display)
前端·css
AI大模型-小华2 小时前
Codex 三方充值快速入门指南
java·前端·数据库·chatgpt·ai编程·codex·chatgpt pro
做前端的娜娜子4 小时前
同一链接实现 PC Web 与移动 H5 自适应
前端·掘金·金石计划
小帅不太帅4 小时前
架构没变、规模没变,DeepSeek V4 Flash 正式版凭什么暴涨 47 分?
前端·aigc·deepseek
jarvisuni5 小时前
DeepSeekFlash前端依旧拉垮,而且变慢了很多!
前端·javascript·算法
卷福同学6 小时前
AI编程出海第二步:验证关键词能否做站
前端·人工智能·后端
赵庆明老师6 小时前
Vben精讲:21-详解web-antd:tsconfig.json
前端·json·vim
wc887 小时前
微软EDGE浏览器功能学习
前端·学习·edge