# Panda DAO RFC: 投资者基本数据获取

By [0xbe1](https://paragraph.com/@0xbe1) · 2022-04-04

---

背景
--

Panda DAO 募资阶段即将结束，我们需要对投资者（由钱包地址定义）有更多的了解。

目标
--

为此，我们需要建立 Panda DAO 投资者的用户画像。这是一个大型项目，至少包括以下几个环节：

1.  基本数据的获取
    
2.  数据加工
    
3.  将数据通过多种方式（The Graph API，Dune dashboard 等）提供出来
    

在此我们只涉及第一个环节——基本数据的获取。一个钱包地址的基本数据包括：

*   持有的 NFT
    
*   发生过的交易
    
*   （有待补充）
    

High level 实现
-------------

首先，通过 juicebox 的下载按钮获取投资者名单，上面是所有投资者的投资金额和钱包地址。

其次，根据这个名单，调用 SimpleHash API 的 [NFTs by owners](https://simplehash.readme.io/reference/nfts-by-owners) 接口获取一批投资者所持有的 NFT；调用 SimpleHash API 的 [Transfers by wallets](https://simplehash.readme.io/reference/transfers-by-wallets) 接口获取一批投资者所进行的交易。

最后，将获取的信息存储起来。

实现细节
----

建议使用 JavaScript / TypeScript 调用 SimpleHash API。三个原因：

*   以后如果我们在获取数据的过程中，发现 SimpleHash 并没有提供相应数据，可以很容易地使用 ethers.js 或者 web3.js 这样的 js 库去调用 smart contract 来获取。
    
*   在本地跑数据获取脚本总是不理想的，我建议未来可以使用 [Vercel Function](https://vercel.com/docs/concepts/functions/introduction)（背后是 AWS Lambda Function）来跑脚本，而 Node.js 被 Vercel Function 很好地支持了（比 Go 的支持程度要高）。
    
*   上手简单，便于扩大开发团队。
    

建议初步将逻辑以一个 Node.js 脚本的方式实现，之后迁移到 Vercel 上。

建议将基本数据以 JSON 的方式存储在如 MongoDB 这样的数据库里，schemaless 的设计便于早期迭代。

优化空间
----

能否通过程序下载投资者名单？

---

*Originally published on [0xbe1](https://paragraph.com/@0xbe1/panda-dao-rfc)*
