# ERC 1155 は openseaとの相性を調査してみた **Published by:** [蒼い惑星](https://paragraph.com/@blueplanet42/) **Published on:** 2022-11-30 **URL:** https://paragraph.com/@blueplanet42/erc-1155-opensea ## Content 前の記事 で ERC 1155 のマルチトークンの扱い方が分かったが、opensea でどう表示され、相性はどうなっているかを調査してみました。デプロイした内容画像ファイル・metadata ファイルこの辺は、pinata を使って ipfs にアップロードしておきましたコイン画像剣画像盾画像metadata ファイルコントラクト内容// SPDX-License-Identifier: MIT pragma solidity ^0.8.9; import "@openzeppelin/contracts@4.8.0/token/ERC1155/ERC1155.sol"; import "@openzeppelin/contracts@4.8.0/access/Ownable.sol"; import "@openzeppelin/contracts@4.8.0/utils/Strings.sol"; contract FishToken is ERC1155, Ownable { constructor() ERC1155("https://gateway.pinata.cloud/ipfs/QmNYCwzyM4FUaRpEypyqsFPA8j7jmh6aH2Nc8RBq5BsihX/{id}.json") { _mint(msg.sender, 100000000, 99, ""); // 0000000100000000 は先頭の 0 が許されない _mint(msg.sender, じょう, 1, ""); _mint(msg.sender, 1000000100000005, 1, ""); _mint(msg.sender, 1000000200000001, 1, ""); } function uri(uint256 _tokenId) override public pure returns (string memory) { return string( abi.encodePacked( "https://gateway.pinata.cloud/ipfs/QmNYCwzyM4FUaRpEypyqsFPA8j7jmh6aH2Nc8RBq5BsihX/", Strings.toString(_tokenId), ".json" ) ); } } 補足openzeppelin の ERC 1155 コントラクトのままで、初期化処理にてテスト用データを mint するだけの内容ですERC1155 の初期化パラメータにわたす URL に {id} 文字列を含めていますこれは EIP 1155 Metadata に書いている内容に従う実装です上記と似ている役割を持っている関数 uri も定義していますが、これは opensea に metadata url を正しく識別させるためですデプロイ結果https://testnets.opensea.io/collection/unidentified-contract-tvgepf7tthhttps://testnets.opensea.io/collection/unidentified-contract-tvgepf7tthopensea 上の表示は、ERC 1155 コントラクトは、ERC 721 と同じく、1つのコレクションとして表示されるなので、コントラクトの中で、id のルールに従って更にセクションを分けるのは、対応されていません上記デプロイした内容の中、下記2つのトークンは10000001配下の #2 と #5 ということは認識されませんmetadata も ERC 721 と同じルールに従えば、正常に表示されるNFT / FT の区別については、前の記事に書いたどおりに、コントラクトの id ルールの設計次第なので、opensea はそのルールを知らないため、サポートできるわけがないと思いましたが、意外にそれっぽく表示されています。該当 token id 配下の残高合計(全オーナー)が 1 個の場合、NFTっぽいような表示になっています該当 token id 配下の残高合計(全オーナー)が 2 個以上の場合、残高合計数・ログインしているユーザ所有している個数・オーナー個数のデータが表示されます注意点現時点(2022 年 12 月)testnet でやってみた限りでは、オークションに出品できて、固定価格の出品でも価格を下げることができましたが、opensea のヘルプセンターに、ERC 1155 は、opensea 上のオークションに出品できない、かつ、固定価格の場合価格を下げることができない のような記載があります。There are a few things to know when interacting with ERC-721 and ERC-1155 NFTs.On OpenSea, ERC-1155 NFTs can't be listed on auction.You can only lower a listing price on ERC-721 NFTs, not ERC-1155 NFTs. Some wallets, like MetaMask mobile, have issues displaying ERC1155's in-app.https://support.opensea.io/hc/en-us/articles/360063450733オークション出品もできる固定価格出品も価格下げることができるまとめERC 1155 は opensea 上で出品・売買・送金できるようにみえます。 ただ、コントラクト全体が1つのコレクションとして扱われるため、id のルールによるサブコレクションのような扱い方は、サービス提供者側がサービス内で対応できますが、その範囲を超えると、意味がなくなります さらに、ERC 1155 に対してウォレット・アプリのサポートもいまいちなので、特別な理由がない限りでは、ERC 721 を使うほうが無難だと思います。 ## Publication Information - [蒼い惑星](https://paragraph.com/@blueplanet42/): Publication homepage - [All Posts](https://paragraph.com/@blueplanet42/): More posts from this publication - [RSS Feed](https://api.paragraph.com/blogs/rss/@blueplanet42): Subscribe to updates - [Twitter](https://twitter.com/blueplanet42): Follow on Twitter