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

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

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

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

可以看到这样的页面:

post image

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

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

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

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

post image

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

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

post image

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

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

post image

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

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

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

0xd596ccbc498c7c845d929536c0ce37298a65ae32

看代码的方式在这里:

https://etherscan.io/address/0xd596ccbc498c7c845d929536c0ce37298a65ae32#code

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

post image

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

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

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

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

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

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

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

然后回车。

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

post image

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

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

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

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