# FlipSide API的使用：以获取某一NFT项目的transfer记录为例

By [Untitled](https://paragraph.com/@0x59749c32329f8b52a4ef7a1b0a83aa94b9d20f2f) · 2022-07-30

---

写在开头
----

案例：从FlipSide获取某一NFT collection的transfer记录。

语法：python，sql。

网络：FlipSide网页端需要梯子，但在使用API时最好不使用代理工具，否则可能出现`proxy error`。

文章结构：1）Transaction和Transfer的区别；2）Flipside简介；3）具体实现。

Transaction和Transfer的区别
-----------------------

**Transaction**是指交易发起者向矿工提交的交易请求。下图为[Azuki的某一transaction](https://etherscan.io/tx/0x8f375478dc1b64ed2b0e607a3e22856892d612aace2c171a272860818a18b130)在Etherscan上的显示，‘From’地址是交易发起方（外部账户），‘To’地址是受到触发的合约（内部账户）。

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

**Transfer**是transaction中的一种事件，通常指token归属权的转移。在transfer中，‘from’地址为交易发生前token的持有人，‘to’地址为交易发生后token的拥有者。

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

Flipside简介
----------

[网页功能](https://app.flipsidecrypto.com/velocity)：使用spl语句获取数据和简单的数据可视化。与dune和footprint很相似，但可以将查询数据导出csv。每个SELECT不能超过900s，查询结果只能显示100000行。

[ShroomDK](https://sdk.flipsidecrypto.xyz/shroomdk)：在免费铸造API Key以后，可以使用操作性更强的语言（java、python和R）来调用数据库，具体使用可见[开发者文档](https://docs.flipsidecrypto.com/shroomdk-sdk/sdks/python-sdk)。该API的调用有非常宽松的限额，每天query执行的次数可达到10k。

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

具体实施
----

下文将以‘获取Azuki的所有transfer’为例介绍FlipSide Python API的使用。

步骤一：在[ShroomDK首页](https://sdk.flipsidecrypto.xyz/shroomdk)免费铸造API Key。

步骤二：安装shroomdk包 ⇒ `pip install shroomdk`

步骤三：使用API Key初始设置‘ShroomDK’。

    from shroomdk import ShroomDK
    sdk = ShroomDK("<Your API Key>")
    

步骤四：写调用数据库的sql语句。

    nft_address = "0xED5AF388653567Af2F388E6224dC7C4b3241C544"
    sql = f"""
        SELECT
            *
        FROM ethereum.core.ez_nft_transfers
        WHERE nft_address = LOWER('{nft_address}')
    """
    

注意：在写sql语句时，不能同时SELECT ‘\*’ 和其他‘column\_name’，否则会出现`user error`。因此，当出现`user error`可以尝试改动sql代码，也许是该形式的sql代码目前后端不支持。

步骤五：获取返回结果。

    query_result_set = sdk.query(sql)
    print(query_result_set.records) #records为list格式
    

参考资料
----

[Python SDK - Flipside Docs (flipsidecrypto.com)](https://docs.flipsidecrypto.com/shroomdk-sdk/sdks/python-sdk)

[如何使用SQL分析Web3中的数据 - BlockBeats (theblockbeats.info)](https://www.theblockbeats.info/news/30637?search=1)

对于以上内容有想要交流或值得改进的地方，欢迎联系[Cheng](http://twitter.com/ChengTa89822449)。

---

*Originally published on [Untitled](https://paragraph.com/@0x59749c32329f8b52a4ef7a1b0a83aa94b9d20f2f/flipside-api-nft-transfer)*
