Seaport プロトコルについて調べてみた
Seaport とは
OpenSea が新しくリリースしたNFTを安全かつ効率よくトレードすることができるプロトコル。 具体的にはNFTをERC20トークン(ETHなど)や必要購入金額に相当する別のNFTでトレードすることができる。 たとえば、100ETH相当のNFTを、購入者は暗号資産60ETHと「40ETH相当のNFT」を組み合わせて支払うといったイメージだ
もともと OpenSea は、 Wyvern というプロトコル上でNFTの売買ができるようになっていたが、今後は Seaport に寄せていく動き。
マイグレーションガイドによると、Seaport が正式ローンチされた後1ヶ月間は、移行期間として両方のプロトコルを運用していく。それまでに売買関係の機能を OpenSea SDK で利用している開発者は、移行作業を行う必要がある。
・Official Announcement: https://opensea.io/blog/announcements/introducing-seaport-protocol/ ・Migration Guide for Developers: https://nft.mirror.xyz/Bi_UbdXOi4AU3LtHT3WoLAN0a9YIWE2gYQmkyZ5whVM
Seaport と 以前のプロトコル(Wyvern) の違い
前述したように、欲しいNFTと別のNFTとのトレードができる。 Orderが完了するまでに発生するガス代が、Seaport だと安くなるようにコントラクトのロジックが最適化されている
Seaport リリースに伴う OpenSea SDK v4, API V2 の変更点
- スマートコントラクトの向き先が、 順次 wyvern → seaport に変わる
- 徐々に wyvern プロトコル上での更新、参照が行われなくなる
- マイグレーションの猶予期間は最大30日
SDK
- wyvern プロトコルから取得・トランザクションを行う関数がリネームする
- isOrderFulfillableLegacyWyvern
- cancelOrderLegacyWyvern
- fulfillOrderLegacyWyvern
- createBuyOrderLegacyWyvern
- createBundleBuyOrderLegacyWyvern
- createSellOrderLegacyWyvern
- createBundleSellOrderLegacyWyvern
- getCurrentPriceLegacyWyvern
- getOrderLegacyWyvern
API
- GET /asset, GET /assetsの I/F 変更
- もともとの仕様として、GET /asset, GET /assets で include_order のクエリパラメータを true にしてAPIフェッチした場合、Order の情報を配列で取得することができる。
今回のアップデートで、seaport プロトコルの Order が seaport_sell_orders としてレスポンスに追加される。既存の wyvern プロトコルのOrder は既存I/Fの sell_orders として扱われる。もし使っている場合、Orders を確認する field を seaport_sell_orders に変更する必要がある
"asset": { ... "sell_orders": [], "seaport_sell_orders": [], ... }
- Order を取得するAPI のエンドポイントが変わる
- before: GET /wyvern/v1/orders
- after: GET /v2/orders/rinkeby/seaport/listings or GET /v2/orders/rinkeby/seaport/offers
- これまで buy / sell のフィルタリングは side パラメータを使用していたが、v2 移行はエンドポイント単位で分かれることになった。
- buy = offers
- sell = listings
- これまで buy / sell のフィルタリングは side パラメータを使用していたが、v2 移行はエンドポイント単位で分かれることになった。