# 关于 NFT 抢购

By [JamesTsao的个人成长笔记](https://paragraph.com/@pigfly) · 2022-06-29

---

我最近主要关注NFT市场，半年多的时间，也算是有一些经验了吧。

我给自己定的原则：永远不碰2级。

这个说起来简单，但是其实很难做到。我之前就一度闲不住，在市场的FOMO情绪带动下，跟着大V们的喊单，把自己为数不多的ETH花在了二级市场。那阵子一级市场没有什么可操作的，白名单也没有几个，大部分还破发。分别花了0.2E左右的价格在二手市场购买了两个NFT，然后一路看着归零了…说白了就是得管住手，没有项目冲赚不到钱没关系，不能瞎冲二级亏钱。

说回到一级市场，最近的行情是免费图狗为王，颇有点之前币圈的山寨土狗币的感觉。其实我觉得就是一个原理，大家都赌一个以小博大，最后看谁跑得快。免费图狗的赋能几乎没有，就看谁会炒作，谁能吸引到赌徒们的资金。

首先得挑选项目，这个我也不擅长，主要跟紧一些良心大V的步伐，一般他们分享的项目我都会自己做下研究（如果有时间的话）。我个人主要看3个方面吧，第一看官推（如果有…），关注的人数太多的，基本没戏。被关注太多的，基本也没戏。因为刷号或者买号的可能性大。然后看推文，感受下项目方的营销手段。有的还没发几条推文，就开始Mint了。但是也不排除有的项目故作神秘，啥也不发，就给Mint链接的。第二看官网（如果有…）。官网可以看项目的图片质量，如果官网一看就很劣质，基本就是来割韭菜的。虽然大家都是想来割韭菜，但是起码要有点诚意，请个靠谱点的前端吧。第三看合约。有的项目不会公布合约，但是一些牛人总能扒出来项目的合约地址。应该是两个途径吧，一个是项目官网源代码里找，一个是测试网里找。但是目前我都没成功过，主要是对JS掌握程度不够，不能快速定位到合约地址。测试网用的也不熟练，技术有待打磨。

选到了优秀的项目了，下一步就该购买了。一般热门的项目都会有很多人盯着，有手动抢的，有工具抢的。合约开关的开启主要有2种方式，一种是项目方手动开启，一种是写在合约里，在规定的时间开启。

如果是项目方手动开启，那么可以通过Alchemy的Websocket来监听与合约地址交互的pending，当合约的Owner通过指定的方法对合约进行调用的时候，我们就可以监听到Pending Transaction，从而开始抢购。也有一种情况，就是调用者不一定是合约的创建者，也有可能会另外指定一个地址，这个时候就要注意一下了。当监听到合约开关开启的Transaction之后，就可以将我们的Mint的Transaction发送出去了，这样可以挤进所谓的0区块。但是还是存在一个问题，如果我们的交易在合约开关开启之前就被矿工执行了，那么由于合约还没有开启，我们的交易就会失败。这取决于我们给矿工的小费以及合约开关开启的Transaction给矿工的小费。如果我们的小费比他低，那么肯定会排在他的后面，但是不一定能挤进0区块。如果我们的小费给高了，那么肯定会失败。目前我还没找到能够获取合约开关的Transaction给的小费的途径，一般来说，Priority Fee会在1到2.5之间。

如果是在合约里面写了当到达规定的时间开关自动开启，那么就不用这么麻烦了，在我们的脚本里面设定好当到达规定时间后发送交易即可。不过这种形式采用的比较少。

还有一种比较通用的方法，速度慢一些。一般合约里都会有一个状态变量，当Mint开启后为True，否则为False。可以通过每隔几秒钟获取一下这个状态变量的值，当其为True后，发送交易即可。采用这种方式的话，肯定进不去0区块，基本在0区块后面2到3个区块成交。成交的速度取决于我们的小费给的多少。对于热门项目，如果小费给少了，也存在Mint失败的现象。这种就属于纯粹拼Gas的方式了。只不过比手动Mint省去了前端操作以及在小狐狸钱包确认的过程。

如果想跑得快的话，也可以通过脚本对Mint到的NFT进行OpenSea授权。实现的方式是调用GetApprovedForAll，然后填入自己在OpenSea的一个专属的地址进行调用就可以了。这个我没有实际操作过，毕竟这个功能主要是用来卷底板的，对整个市场的破坏性很大。好多热门项目硬生生被这种脚本砸到归零。还是建议大家理性打狗，不要为了蝇头小利就狂砸地板…

说一下我的脚本的思路。我平时用的最多的，是跟单的脚本。这个功能在许多的NFT机器人中都会提供。我都是半自动跟单，因为那些机器人的自动跟单可能一晚上就把你钱包里的余额霍霍没了…我通过Python的Selenium，获取@free\_mint\_bot的最新推文。这个推特很好，基本上免费的图狗都会监测到并自动发推。当出现新的项目后，抓取项目的合约地址，监听向合约地址发送的Pending Transaction，并且统计Transaction中相同的Input data出现的次数。取出现次数最多的，作为默认的输入参数。通过Input data，还可以看出单次mint的数量，比如下图中，出现次数最多的Input data（33个Pending中出现28次），mint的个数是1个。那么这个项目大概率单次最大Mint数量就是1个。另外，统计累计的Pending的数量，这是判断项目热度的最直观的因素。一般一些项目会通过刷单的方式来提高自己的热度，好让一些自动跟单机器人注意到。不过这种一般不会刷的太狠，一个是有成本（链上Gas），一个刷多了剩下的可Mint数量也少了。所以基本上看pending的增长速度以及总的pending数量，可以判断一个项目的热度。这个时候，如果有时间，可以再去OS看下项目的图（如果开图了），没开图的话就再看看推特、合约，如我前面所说对项目的质量进行判断。如果觉得项目质量还可以，Mint速度也可以的话，我就会考虑跟单了。在我的程序中输入Y并回车就会自动发送Mint交易了，这样的速度也挺快的。至于小费、Max gas什么的我都会提前设置好，一般的项目基本都能成交。

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

* * *

Github:

[https://github.com/CAOYUhhu](https://github.com/CAOYUhhu)

Twitter:

[https://twitter.com/james\_tsao21](https://twitter.com/james_tsao21)

---

*Originally published on [JamesTsao的个人成长笔记](https://paragraph.com/@pigfly/nft)*
