Open1
NFTマーケットプレイスのアイテムイベントの設計について検討する
要件
- Seaport経由で売買されたNFTはイベントログに売買イベントとして保存する
- 単純な転送イベントは、転送イベントとして保存する
以下のようなイメージ
Event name | Price | From | To | Date |
---|---|---|---|---|
mint | 0x00000 | ropital | 2022-01-28 | |
transfer | ropital | taro | 2022-01-29 | |
sale | 10ETH | taro | ropital | 2022-01-30 |
accept offer | 20ETH | ropital | alice | 2022-02-01 |
難点
Seaport経由で売買された場合も、内部で転送イベントが発行されるため、contract.on("Transfer")
で転送イベントを受け取ってしまう。そのため、contract.on("Trasnfer")で受け取ったイベントが
売買イベント内で発生した転送イベントなのか、単純な転送イベントなのかを区別する必要があること。
大まかな方針
現在思いつく大まかな幾つかの方針
Seaport経由か解析するパターン
- 受け取った転送イベントが属するトランザクションを解析してそれがSeaport経由でなければ転送イベントとして保存する。
- Seaportのイベントは売買イベントとして保存する
EOAから呼び出されたか解析するパターン
- 受け取った転送イベントが発行された関数がEOAから呼び出されていれば、転送イベントとして保存する
- Seaportのイベントは売買イベントして保存する。