# 【撸毛必备技能】-手把手教你用数据制定partybid交互策略

By [YakimZ](https://paragraph.com/@yakimz) · 2022-07-23

---

本文适合的阅读对象：撸毛交互小白。

最近参考[gm365大神的教程](https://twitter.com/gm365/status/1532188979835334656)，学会了使用dune来分析项目，本篇是学习心得分享给大家。

[\# partybid-NFT众筹项目-交互数据分析Dune](https://dune.com/zyakun2016/zhong-chou-fen-xi)

![未命名1658550126png](https://storage.googleapis.com/papyrus_images/9445bdc6699653ad310ec8487ed18481d65b374fa4c9178c6eacd9dde94a1cd2.png)

未命名1658550126png

一、撸毛做交互，分析数据的重要性
================

现在做撸毛交互非常的卷，在交互的过程中，知己知彼才有可能撸到大毛。项目方面对大量的用户时，会做筛选过滤掉单纯撸毛的用户，留下真正的用户给与更多的奖励。

根据过往dydx等项目发空投的经验，项目方会根据阶梯发放奖励，构成阶梯的指标有：交互金额，交互次数，交互功能，交互日期等。

要做到自己的交互的金额和频次大于大部分人时，你才能获得更多的空投，如何知道这些数据呢 ?

区块链的数据库是开源的，任何人都可以查看，我们可以使用SQL语言查询各个项目的交互信息，下面是使用dune数据库进行分析的步骤。

二、partybid为例进行数据分析
==================

本篇教程以partybid为例，进行数据分析。

分析一个项目的前提是，你已经确定这个项目未来会发币，项目靠谱有需求，最近有融资投资，有知名投资机构。

2.1、寻找项目的合约
-----------

首先去partybid官网)，参与一次众筹，通过[区块链浏览器](https://etherscan.io/)查询交互的合约名称是什么。

下图是我交互完成后的链上记录，可以点击红框查看合约地址。

![未命名1658543640png](https://storage.googleapis.com/papyrus_images/1fa3b99477cee54756cedb9da82478f0d85a9f24cc53cd9bc24d25d2b6e552f4.png)

未命名1658543640png

进入合约页面后，点击 Contract查看合约的名称是：NonReceivableInitializedProxy

![未命名1658544294png](https://storage.googleapis.com/papyrus_images/b0ace2871d1f955c76ba265da5006b427c6e281b8932e9bfa960d2db4872926c.png)

未命名1658544294png

拿到合约名称后，去dune上搜索，查看dune是否有收录这个合约的数据。

![未命名1658544777png](https://storage.googleapis.com/papyrus_images/99b781f7eae7b434f21e816d1f791abe6184e4b3372a504caad3e7c826ef9f89.png)

未命名1658544777png

发现这个合约名称并没有收录，从合约名称上看这好像不是官方的合约名称，我们回到区块浏览器继续分析，可以通过数据发现这个合约交互了792次，每次交互金额0.01，这个合约应该是众筹NFT的合约，并不是partybid的主合约，我们需要拿到主合约来分析整个项目的数据。

![未命名1658544942png](https://storage.googleapis.com/papyrus_images/a12d4c2f18e3aee6f840e06518aaf3d45968c206aa7717dcf9de45850a03d99d.png)

未命名1658544942png

这众筹NFT的合约肯定是通过主合约创建的，我们继续在区块链浏览器中寻找。

通过下图，我们可以发现，这个合约是10天前通过红框的地址创建的，这个地址既然可以创建合约，那他自身肯定是个合约。

![未命名1658545223png](https://storage.googleapis.com/papyrus_images/d06ce24584453e29140dee5ab530ca127f1d34ce5d4bb2affcf16064c6cbaef9.png)

未命名1658545223png

我们进入这个地址，发现的确是个合约，查看他的合约代码，发现合约名称是：CollectionPartyFactory

![未命名1658545348png](https://storage.googleapis.com/papyrus_images/5eee97116790a80afcc3e03d23b12f97b766790cd814f1123dac866ade72c777.png)

未命名1658545348png

进入dune上，搜索合约名称，发现dune已经收录这个合约地址上的数据了。

![未命名1658545568png](https://storage.googleapis.com/papyrus_images/56e5239cfe69c1f36706dafefb6ec533b0559653eb59e902b5c83d0bdd38cbe6.png)

未命名1658545568png

2.2、分析数据结构，寻找有用的数据
------------------

可以通过函数名称粗略判断，我们要提取的数据在哪个函数中。

然后通过查询语句看看存的数据是否为我们想要的。

    SELECT
      *
    FROM
      partydao."CollectionPartyFactory_call_startParty"
    LIMIT
      10
    

我们先查下第一个函数，发现当中不存在任何数据。

![未命名1658545860png](https://storage.googleapis.com/papyrus_images/abaf7a2409dd057c4c3c97a8ffea1e9a0d4f16d50e8711063fa5b9d5e1ce2453.png)

未命名1658545860png

我们继续查下一个函数，查询到“CollectionPartyFactory\_call\_startParty”中有数据

![未命名1658546249png](https://storage.googleapis.com/papyrus_images/0fa679f2b40d80c4cfe7cc96cf1f85ec8e0817300994b85a16ccd74e34ceda27.png)

未命名1658546249png

CollectionPartyFactory\_call\_startParty 中有很多列，我们如何知道每列的具体含义呢，可以根据每列的名称 结合 具体的数据去猜测，再跟自己交互数据关联起来，来最终确定。

\_nftContract ： 众筹的NFT合约地址

output\_partyProxy：可能是创建众筹项目的合约地址。

我们之前参与了一个众筹，可以通过众筹的合约来验证下。

众筹的合约地址：0xbd1e6e6012f969ed554806E96B3E8C519E0C14b5

发现可以查到这一个合约，这个合约众筹的对象是BAYC，跟我们交互的项目一致。

![未命名1658547035png](https://storage.googleapis.com/papyrus_images/9333cb408df320a7d203b5a70388b1d28b6f10084fa445f628faae02d800cac5.png)

未命名1658547035png

2.3、制定交互策略的思路
-------------

我们分析数据的目的是刷交互获得空投，所以首先思考哪行行为动作会对项目方有利，最简单的就是罗列项目的所有功能，然后根据自己的判断设置对应的权重。

partybid这个项目目前功能比较简单，就以下2个：

*   发起众筹项目
    
*   参与众筹项目
    

发起众筹的人数少于参与众筹的人数，发起众筹的权重高，众筹成功，金额大，参与人数多的的权重大。参与众筹项目成功的权重高，参与次数多，金额大的权重高。

那么到底发起几个众筹，参与多少次众筹，参与金额多少 才能脱颖而出呢，这时就需要的链上数据进行分析。

2.4、查找数据确定交互策略
--------------

### 2.4.1、参与众筹金额控制在多少好呢？

我们通过链上数据可以进行查询。

查询思路：

1、确定要查询的数据库数据表分布在哪

2、编写SQL语句进行查询

通过“CollectionPartyFactory\_call\_startParty” 我们可以知道 partybid众筹的合约地址。

“ethereum.transactions”这个表可以查询所有在以太坊上产生的交互。

我们先获取到参与众筹的地址，然后看这些地址共参与了多少金额

具体的SQL语句如何编写，可以自行谷歌搜索学习，然后复制(fork)下面的语句改写。

    -- 查询用户参与众筹金额的区间
    with
      party as(
        SELECT
          sum(value / 1e18) as "total",
          et."from"
        from
          partydao."CollectionPartyFactory_call_startParty" party
          LEFT JOIN ethereum.transactions et on party."output_partyProxy" = et."to"
        group by
          et."from"
        ORDER by
          "total" DESC
      )
    select
      count(distinct party."from") as "数量",
      case
        when party.total > 1 then ' > 1 ETH'
        when party.total between 0.1 and 1 then '[0.1-1] ETH'
        when party.total < 0.1 and party.total > 0.01 then '(0.01-0.1) ETH'
        when party.total = 0.01 then '0.01 ETH'
        else '< 0.01 ETH'
      end as "参与众筹金额区间"
    from
      party
    group by
      2
    

![未命名1658548417png](https://storage.googleapis.com/papyrus_images/c72c924a5d7fc5a336c8e3a3161f3638cd65897323f58894d5920522599c69d3.png)

未命名1658548417png

不愿意动手查询数据的，也可以直接duen上搜索项目关键字进行查询别人已经做好的图表。

**关于partybid更多的数据，可以查看我做好的图表。**

[\# partybid-NFT众筹项目-交互数据分析Dune](https://dune.com/zyakun2016/zhong-chou-fen-xi)

* * *

我是一个从大厂离职不想上班all in web3，从撸毛起步养家糊口的懂点技术的互联网产品经理。

有志同道合的朋友，欢迎关注twitter，大家一起探索web3，一起探索未来~

*   twitter账号：
    
    [https://twitter.com/taotaoz1](https://twitter.com/taotaoz1)

---

*Originally published on [YakimZ](https://paragraph.com/@yakimz/partybid)*
