NFT Market Placeの購買履歴(もしくは他者へのTokenのTransfer履歴)をX Scanサイトから取得できるか
はじめに
本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履歴を取得します。
上記のAPIのRequest仕様に従って、Parameterとしてcontractaddress, address(from address)を指定すると、どのaddressからNFTをmintしたか、またそのaddressから別のto addressに渡ったかの履歴を追うことができます。下記はAPIのResponse bodyの一部です。
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履歴)は取得可能になります。