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 领域。

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

相关推荐
中微子几秒前
React状态管理最佳实践
前端
烛阴10 分钟前
void 0 的奥秘:解锁 JavaScript 中 undefined 的正确打开方式
前端·javascript
中微子17 分钟前
JavaScript 事件与 React 合成事件完全指南:从入门到精通
前端
Hexene...26 分钟前
【前端Vue】如何实现echarts图表根据父元素宽度自适应大小
前端·vue.js·echarts
初遇你时动了情28 分钟前
腾讯地图 vue3 使用 封装 地图组件
javascript·vue.js·腾讯地图
dssxyz32 分钟前
uniapp打包微信小程序主包过大问题_uniapp 微信小程序时主包太大和vendor.js过大
javascript·微信小程序·uni-app
天天扭码1 小时前
《很全面的前端面试题》——HTML篇
前端·面试·html
xw51 小时前
我犯了错,我于是为我的uni-app项目引入环境标志
前端·uni-app
!win !1 小时前
被老板怼后,我为uni-app项目引入环境标志
前端·小程序·uni-app
Burt1 小时前
tsdown vs tsup, 豆包回答一坨屎,还是google AI厉害
前端