자작의 ERC721Token을 OpenSea에 대응시킨다

6847 단어 openseasolidityERC721

소개



자작의 아이템을 시장에서 트레이드하고 싶은 경우, 이른바 「판」이라고 불리는 매매 기능을 만들 필요가 있습니다만,
서비스 자체의 응용 프로그램을 만드는 것 외에도 거래 기능을 만드는 것은 매우 어렵습니다.
또 다른 게임등과 교환이나 트레이드를 실시하기 위해서는, 이외에, 다른 게임의 아이템 정보등을 받아들여야 합니다.
OpenSea를 사용하면 자체 제작 ERC721 토큰을 매매할 수 있습니다. 이번은 자작 아이템을 OpenSea에서 취급하기 시작할 때까지의 기억입니다.

문서



기본적인 사용법은 아래 문서를 참조하십시오.
htps : // / cs. 오세아. 이오 / 드 cs / 1-st 루 c 쓰린 g

절차



1.token 용 json endpoint를 준비합니다.



아래와 같은 형태로 json을 준비합니다.
attributes와 같은 항목은 OpenSea에 표시되는 매개 변수이며,
표시 방법은 display_type 등으로 바꿀 수 있습니다.
(
이 근처의 작법은 본가의 개발 가이드를 참조해 주세요
htps : // / cs. 오세아. 이오 / 드 cs / 2 - 어서
)
app.get('/opensea/tokens/:id', function (req, res) {
    res.json(
{
    "attributes": [{
        "trait_type": "base",
        "value": "A"
    }, {
        "trait_type": "rarity",
        "value": 5
    }, {
        "display_type": "resouce_number",
        "value": 10
    }, {
        "display_type": "resouce_percentage",
        "value": 5
    }, {
        "display_type": "number",
        "trait_type": "generation",
        "value": 1
    }],
    "description": "find new planet",
    "external_url": "http://planettravelers.net/planets/1",
    "image": "http://planettravelers.net/planet_img_001.png",
    "name": "CAB3X"
}
);
});

2.ERC721의 계약을 준비하고 baseTokenURI()에서 1의 endpoint를 반환하도록 설정합니다.


pragma solidity ^0.4.24;

//import 'openzeppelin-solidity/contracts/token/ERC721/ERC721Token.sol';
//import 'openzeppelin-solidity/contracts/ownership/Ownable.sol';

import "./ERC721Token.sol";
import "./Ownable.sol";
import "./Strings.sol";

/**
 * @title Creature
 * OpenSea Creature - a contract for a non-fungible creature.
 */
contract PlanetToken is ERC721Token, Ownable {
  address proxyRegistryAddress;

  constructor(address _proxyRegistryAddress) ERC721Token("PlanetToken", "PLT") public {
    proxyRegistryAddress = _proxyRegistryAddress;
  }

  function mint(address _to, uint256 _tokenId) public {
    super._mint(_to, _tokenId);
  }

  /**
   * @dev Returns an URI for a given token ID
   */
  function tokenURI(uint256 _tokenId) public view returns (string) {
    return Strings.strConcat(
        baseTokenURI(),
        Strings.uint2str(_tokenId)
    );
  }

  function baseTokenURI() public view returns (string) {
    return "http://planettravelers.net/opensea/tokens/";
  }

  /**
   * Override isApprovedForAll to whitelist user's OpenSea proxy accounts to enable gas-less listings.
   */
  function isApprovedForAll(
    address owner,
    address operator
  )
    public
    view
    returns (bool)
  {
    // Whitelist OpenSea proxy contract for easy trading.
    ProxyRegistry proxyRegistry = ProxyRegistry(proxyRegistryAddress);
    if (proxyRegistry.proxies(owner) == operator) {
        return true;
    }

    return super.isApprovedForAll(owner, operator);
  }
}

contract OwnableDelegateProxy { }

contract ProxyRegistry {
    mapping(address => OwnableDelegateProxy) public proxies;
}


2-2proxyRegistryAddress란?



htps : // / cs. 오세아. 이오 / ぢ s 쿠 s / 5d4 아 942564 베에 c007431 f1 아 f
견적:

It depends on the network you're deploying to. It's 0xf57b2c51ded3a29e6891aba85459d600256cf317 on Rinkeby and 0xa5409ec958c83c3f309868babaca7

3.mint하여 동전을 만듭니다.



htps : // 기주 b. 코 m/P로지ぇc와 펜세아/오펜세아-c레아트레 s/bぉb/마s r/미g라치온 s/2_로 pぉy_안 t등 cts. js#L7-L12

4. 접근하기




(예) htps : // 링케 by. 오세아. 이오 / 아세 ts / 안 t 등 ct_ 아 d s / 토켄_ 이 d
cache를 지우려면? force_update = true를 붙입니다.
기타 샘플 htps : // 링케 by. 오세아. 이오 / 아세 ts / 0x9368672605133f7841024에서 8c67295b236b62b / 3

htps : // / cs. 오세아. 이오 / 레후 렌세 # 레 t 리에 ゔ ぃ



5.매매를 시도해 보기



FixedPrice,Auction,Bundle 중에서 판매 방법을 선택할 수 있습니다.



6.store top 만들기



아이템이 속한 서비스의 top 화면을 준비할 수 있습니다.
작성 방법은 token이 관리되는 contract를 입력하고 top에 표시되는 이미지를 설정하는 것만으로 작성할 수 있습니다.

Create 화면


설명
htps // 링케 by. 오세아. 이오 / 게 t ぃ s d / s t p와 ぉ

7. 병아리를 사용하여 우선 시도하고 싶은 경우의 최단 단계.


//nodeのversionを決める
$ nodebrew use v9.11.1
$ git clone https://github.com/ProjectOpenSea/opensea-creatures 
$ cd opensea-creatures 

//open-zippelinをinstallする
$ npm install

//remixdを立ち上げ
$ remixd -s ./ --remix-ide https://remix.ethereum.org

//deployとmintを行う。
//mint時のproxyRegistoryAddressはこちらを参照(networkによって異なる)
//https://docs.opensea.io/discuss/5d4a942564beec007431f1af
deploy.TradeableERC721Token
"AAA","AAA","0xf57b2c51ded3a29e6891aba85459d600256cf317"

//openseaを開く
https://rinkeby.opensea.io/assets/コントラクトのアドレス/1?force_update=true

좋은 웹페이지 즐겨찾기