見出し画像

NFT Market Placeの購買履歴(もしくは他者へのTokenのTransfer履歴)をX Scanサイトから取得できるか

はじめに

@yutakikuchi_です。

本NoteはNFT Market placeでのNFT売買履歴(もしくはTokenのTransfer履歴)をETH ScanやPolygon Scanなどから取得することを目的とした記事です。

NFT Market Place、例えばOpenseaやRaribleなど、NFTを販売しているサイトがあるかと思います。NFT Marketplace上での取引については各サイトが提供しているWeb API(下記リンクのRetrieve ownersなど)を経由して取得することが最短のように思えますが、OpenSeaについては2022.09.13時点ではWeb API Keyの発行を停止しており、開発者が今からNFTの購買履歴をOpensea上でのNFT売買を履歴として取得しようとした場合、

  • Web APIの発行が再開されるのを待つか

  • OpenSea自体のWebページをスクレイピングするか

  • 本記事のようにX Scanサイトを利用するか

などが考えられると思います。

X ScanサイトからNFTの購買履歴を取得できるか

結論できます。

購入履歴(ERC-20)を直接追うという手段ももしかしたら可能かもしれませんが、ここでは代替的な手段として、Polygon ScanのWeb APIを活用してERC-721のTokenのTransfer履歴を取得します。

https://api.polygonscan.com/api?module=account&action=tokennfttx&contractaddress=0x7227e371540cf7b8e512544ba6871472031f3335&address=0x30b32e79ed9c4012a71f4235f77dcf90a6f6800f&startblock=0&endblock=99999999&page=1&offset=100&sort=asc&apikey=YourApiKeyToken

https://docs.polygonscan.com/api-endpoints/accounts#get-a-list-of-erc-721-token-transfer-events-by-address

上記のAPIのRequest仕様に従って、Parameterとしてcontractaddress, address(from address)を指定すると、どのaddressからNFTをmintしたか、またそのaddressから別のto addressに渡ったかの履歴を追うことができます。下記はAPIのResponse bodyの一部です。

https://docs.polygonscan.com/api-endpoints/accounts#get-a-list-of-erc-721-token-transfer-events-by-address

Web APIのRequest仕様としてtokenIDを指定できないようなので、sort parameterを降順であるsort=descにして、

  • contractaddress, address(from address)を指定して一旦Responseをリストとして取得

  • 取得したResponseからtokenIDごとに最新の情報を取得し、どのto addressにTokenがtransferがされているかを検知する

  • MintのToken transferの場合、Response bodyのfrom項目が `0x0000000000000000000000000000000000000000` のようになるため、Mintと売買の譲渡によるTransferの判別は可能

といった処理で対応が可能かと思います。これでOpenSeaのWeb APIのKeyが発行できなくても購買履歴(代替としてのTransfer履歴)は取得可能になります。

この記事が気に入ったらサポートをしてみませんか?