# 为什么我抢购总慢一步——以PUMA为例

By [DFarm](https://paragraph.com/@dfarm) · 2022-08-23

---

PUMA 是什么？
---------

PUMA 是一个知名的服装品牌，发布了自己的 NFT。

![](https://storage.googleapis.com/papyrus_images/115c3ea74b13833cd63bf668be72ff775029f284465eef0c6dde380711857d46.png)

之前在 premint 发布了抽奖，中奖分为两组，分别是白名单列表和候选列表。

![](https://storage.googleapis.com/papyrus_images/8ba634cd1503b3dd555c67e3a7e7c520468d119b977ecdec35497d12c20f5dd1.png)

因为 premint 开奖错误，所以官方发布了两个表格，代表中奖的两个分组。

PUMA 数据分析
---------

PUMA 总量 4000，白名单的表格打开是这样：

![](https://storage.googleapis.com/papyrus_images/02f405032b183e2e8b517abd5e9c14a2560e289301b63ca7d16ac013c24ee4e3.png)

猛一看 3962 行，基本就剩下三十多个了？其实不然：

![](https://storage.googleapis.com/papyrus_images/fa0498d79d692b21209298be3272105bbf7fe77be978bccb559ddc1203a88a3b.png)

注意到没有，居然有1672个重复项，只有 3151 个唯一地址，那就是说还有 800 多个可以给候选名单卷。

最终实际上，候选名单的唯一地址有 1.7 万个左右，当时还剩下 1300 左右可以抢。

候选名单也就是 premint 参与了，但是没中奖，可以被选入候选。

换句话说你只要参与 PUMA 的 premint 基本就在候选中。

抢购
--

现在来到了候选名单 mint 前，也就是8月22日晚上12点前！

在这之前，先回答大家 mint 抢购的时候，最多问的一个问题。

### 为什么我在准点 mint 抢购，有时候刷新页面才能 mint，有时候不用刷新就能 mint？

回答这个问题就要涉及到 mint 网站的程序设计。

一般白名单 mint ，咱们都是无法在智能合约直接操作 mint，因为需要一个凭证（proof）：

![](https://storage.googleapis.com/papyrus_images/ee1a0020f1027de3cbdbc610d953275914ba53cad18e49107393ec8ca27822e7.png)

这个凭证只能从网站上生成，也就是说白名单一般都要在网站 mint。

那么这个凭证的生成方式，一般有两种：

1.  前端存储所有白名单地址，直接生成签名。
    
2.  数据库存储白名单地址，通过接口生成签名。
    

在智能合约开启开关的前提下，第一种方式白名单更新必须要刷新页面，第二种方式，只需要接口开始返回新结果即可。

如何区分这两种方式呢？

其实只要监视请求就能知道是否发生了请求。

因为 PUMA 白名单已经进行了一轮，所以可以直接通过请求看到接口地址：

![](https://storage.googleapis.com/papyrus_images/b9ea7a91ad1ae4417476af4559842b0f300b541726308ce74f1558081b41f013.png)

截图这个接口返回就是之前白名单成功的一个人的记录：

![](https://storage.googleapis.com/papyrus_images/31c3185c24a1dd10b995b9e7a09e6a0cefad0bd187782dc781dc216b7e5f6de9.png)

然后我们再看看其他人的地址是：

![](https://storage.googleapis.com/papyrus_images/e00e1565f9cefbfd72d753fbe3b74b74a57977d2d1a1e8c15ad7ac2215e53171.png)

这就可以清楚的用来区分是否开启了下一轮，按照逻辑推测，下一轮开始这个接口会返回候选地址的凭证。

其实说了这么多，就是解释了一下，PUMA 不用刷新页面，到时间接口就会返回结果。

经验教训
----

很多有候选名单的朋友，在抢购的那个时刻刷新了页面，直接卡死了，是为什么呢？

瞬时间大流量的访问，让对方服务器负载过高，返回数据的时间会变慢或者直接不返回。

如果你在那个时刻刷新页面，页面加载都要等半天，别说等接口拿凭证了，页面还没加载完估计就结束了。

所以，PUMA 这个抢购在开始的那一刻不刷新是最明智的选择。

参与抢购前，判断一下刷不刷新对于成功结果有很大的影响。

科学的力量
-----

那有没有科学的办法的呢？

对于上面提出的两种方式：

1.  前端存储所有白名单地址，直接生成签名。
    
2.  数据库存储白名单地址，通过接口生成签名。
    

对于第一种方法，只能扒他们代码，然后取到凭证自己用代码执行 mint。

第二种方式，需要监控接口数据，在获取数据的时，立刻用代码执行 mint。

所以大家知道为什么抢不过机器人了吧，他们在不断的去请求，查询接口是否返回凭证，并且在第一时间 mint。普通人这个时候应该还在等网页加载吧…

这次有个朋友，有很多个候选地址，这时候还需要你把你的地址分批发送。

比如一次发10个，或者一次发5个。

因为你一个 IP 瞬间请求上百次，在接口服务器负载大的时候，很难完整返回。

分成多个服务发送，效果更好，尽量避免 503 错误。

最后
--

这次 PUMA 白名单和候选名单是 0 成本 mint，现在在 opensea 的价格也在 0.1E 以上，所以有白抢到基本就是赚。

没有白，参与了 premint 基本也是候选，手速快候选也能抢到。

![](https://storage.googleapis.com/papyrus_images/e77c300296ec305c87a287764165e6dd1ffefca179cfdfb251c306970daabc97.png)

幸亏这次候选名单没什么坏人，我在研究了 PUMA 之后，说了截图这句话。

为什么这么说呢，因为接口请求的这个方式，最怕有人来搞破坏了，如果有人作恶，他在第一时间通过不断的请求，第一时间拿到凭证之后，马上对接口进行 DDOS 攻击，那么后面就没人能拿到凭证了。

PUMA 这次你可能没有参与，但是大概也对抢购有了一些了解吧？

如果你以后要参与类似的抢购，可以开多个浏览器，一个刷新，一个不刷新，两手准备，准没有错！

希望你能从本文学到一些经验。

熊市记得多学习！

广告
--

之前，也推荐过很多黑科技工具和方法，但这次的 Python 是真的想强烈安利给大家。

Python 作为人工智能的常用语言是时代发展的趋向，希望大家都能学会 Python，跟紧这股科技潮流，无论在生活和工作中都能脱颖而出。

话说，0 元的价格是尽力争取到的，学会一个实用又重要的技能，怎么算都不亏，真心建议大家学一学。

机会稍纵即逝，把握住现在，未来的质变或许就在这一瞬间！

那么教程在哪里领取呢？关注我，等我后面的文章！

微博：@DFarm

推特：@DFarm\_club

---

*Originally published on [DFarm](https://paragraph.com/@dfarm/puma)*
