# 如何判断一个NFT项目的技术水平

By [koolob](https://paragraph.com/@koolob-2) · 2022-04-15

---

背景是这样的，今晚我有个小幽灵中的白，叫Sticky DAO的项目进行了白名单预售。然而十分拉垮，简单的前端跨域问题一晚上也没修好。

那么在这种前端问题无法mint的情况下，该做点什么呢？

首先确保我们是用Chrome浏览器打开的网站。然后右上角点开选项，选择更多工具，找到开发者工具打开。

可以看到这样的页面：

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

下方弹出来的就是开发者工具。此时可以点击上图红圈圈出来的按钮。这个按钮可以用于定位页面元素的代码。

因为我们关注的是MINT那个按钮，因此在点完上述按钮后，鼠标去选择MINT那个按钮，点击一下，就看到定位到的代码位置了。上图蓝色标记的那一行就是。

注意里面有个onclick=mint()。这句话意思是，点击时，调用mint方法。

好，那么我们就直接在源代码里搜索mint()，会发现可以搜索到这样一串东西：

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

这就是mint的前端核心代码，注意，要找到function这种关键字的地方。

然后可能看不懂，没关系，我们一直往下看，会发现一个应该很熟悉的名词：presaleMint，这个大家都知道了，白名单预售嘛。

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

于是我们知道了，白名单预售的逻辑其实就定义成这个名字了。那么我们就继续搜索。

接着就搜索到了白名单预售的关键代码：

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

这里不懂也没关系，关键只需要会看两个东西，第一，function presaleMint(account,maxMint) 这句话，表示白名单预售的逻辑需要哪些信息。

第二，下面的window.contract.methods.presaleMint这句，就是在调用合约里的代码了。

然后我们去看看合约的代码，合约地址是

0xd596ccbc498c7c845d929536c0ce37298a65ae32

看代码的方式在这里：

[https://etherscan.io/address/0xd596ccbc498c7c845d929536c0ce37298a65ae32#code](https://etherscan.io/address/0xd596ccbc498c7c845d929536c0ce37298a65ae32#code)

可以看到合约里，果然有前端调用的那个名字。

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

这意味着对于白名单来说，我们只需要执行到这个合约，就可以mint了。

那么再回来看之前的前端代码：presaleMint(account,maxMint)

这句话是说，要执行前端代码的presaleMint，需要两个信息，第一个是钱包地址，第二个是最大mint。

这就是项目方很离奇的设计，为什么要在前端设置最大mint数量。

不过我们先不管，就继续按项目方的规则玩。

既然这俩信息都有，我们就可以简单的打开console页签，也叫控制台。然后直接输入这样的一段话：

presaleMint('你的钱包地址',2)

然后回车。

稍微等一下，就可以看到，小狐狸开始弹交易窗了。

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

也就是说，可以绕过前端bug，直接去调用合约了。

这样的好处是，我们无需研究合约代码里复杂的验证逻辑，直接利用项目方写好的代码即可。

不过写这个目的也不是为了教大家怎么mint这种项目，而是让大家知道，有些项目的技术水平确实有问题，用这种简单的方法，就可以绕过一些关键环节，对于这种项目，你们敢冲么。

最后再说一个很关键的思考题：整个环节里，是不是都没有发现哪里是验证白名单地址的地方呢？大家可以去研究一下。

---

*Originally published on [koolob](https://paragraph.com/@koolob-2/nft)*
