Upgrade to Pro — share decks privately, control downloads, hide ads and more …

NFT (非代替性トークン) のリアリティ / Reality of Non-Fungible...

NFT (非代替性トークン) のリアリティ / Reality of Non-Fungible Tokens

2022年4月21日(木)、自律分散社会フォーラム (DASF) の定例会にて使用したスライドです。

Kenji Saito

April 21, 2022
Tweet

More Decks by Kenji Saito

Other Decks in Technology

Transcript

  1. ( ) SFC ( ) CSO (Chief Science Officer) 1993

    ( ) 2006 ( ) SFC 21 P2P (Peer-to-Peer) 2011 2018 2019 VR 2021.7 VR 2021.8 “ALL THESE WORLDS ARE YOURS” VR 2021.9 & VR 2021.12 VR 2022.3 ( (VR) ) → ( ) NFT ( ) — 2022-04-21 – p.3/17
  2. ( ) = = : . . . ( :

    ) ( ) . . . . . . . . . . . . NFT ( ) — 2022-04-21 – p.5/17
  3. ⇒ ( ) . . . . . . NFT

    ( ) — 2022-04-21 – p.6/17
  4. NFT ( ) NFT : Non-Fungible Token ( ) (1

    ) → fungible token ( ) → NFT NFT ( ) — 2022-04-21 – p.8/17
  5. ERC-721 ERC (Ethereum Request for Comments) 721 (721 ) https://github.com/ethereum/EIPs/blob/master/EIPS/eip-721.md

    interface ERC721 { function balanceOf(address _owner) external view returns (uint256); function ownerOf(uint256 _tokenId) external view returns (address); function safeTransferFrom(address _from, address _to, uint256 _tokenId, . . .) external payable; : } interface ERC721TokenReceiver { function onERC721Received(.. ., uint256 _tokenId, . . .) external returns(bytes4); } interface ERC721Metadata { function name() external view returns (string _name); function symbol() external view returns (string _symbol); function tokenURI(uint256 _tokenId) external view returns (string); } tokenURI URL ( ) ( ) NFT ( ) — 2022-04-21 – p.9/17
  6. NFT NFT URL Marlinspike, M.: My first impressions of web3

    (2022) Web3 . . . URL ↑ NFT → → NFT NFT ↔ NFT NFT ( ) — 2022-04-21 – p.10/17
  7. NFT Linux (Ubuntu 20.04.4) Python3 + eth-brownie 1.18.1 (Python Ethereum

    ) $ brownie bake nft nft ( ) contracts SimpleCollectible.sol ERC-721 NFT ( ) — 2022-04-21 – p.11/17
  8. NFT (1) NFT NFT $ cd nft # nft $

    brownie console # eth-brownie (Python ) # ↓ Python >>> network.disconnect() # ( ) >>> network.connect(’mainnet’) # Ethereum >>> collectible = SimpleCollectible.at(’ ’) # >>> collectible.ownerOf(OpenSea NFT ID) # >>> collectible.tokenURI(OpenSea NFT ID) # URL URL URL ( ) NFT ( ) — 2022-04-21 – p.12/17
  9. NFT (2) NFT(?) NFT >>> collectible.ownerOf( NFT ID) # >>>

    collectible.ownerOf( NFT ID) # NFT Ethereum Ethereum NFT NFT Ethereum Lazy Minting (?) ( ) ( ) NFT NFT ( ) — 2022-04-21 – p.13/17
  10. NFT < , ID> ERC-721 OK NFT . . .

    ID → NFT ID NFT NFT URL . . . URL . . . →NFT NFT ( ) — 2022-04-21 – p.14/17
  11. NFT NFT . . . NFT ( ) ↑ ID

    . . . NFT ( ) — 2022-04-21 – p.15/17
  12. NFT NFT >>> network.disconnect() # >>> network.connect(’ropsten’) # Ethereum >>>

    accounts.add( ) # >>> collectible = SimpleCollectible.deploy({’from’: accounts[0]}) # NFT >>> collectible.createCollectible( ) # NFT ropsten / ( ) “Gas used” Gas Gwei ERC-721a ID 1 NFT ( ) — 2022-04-21 – p.16/17
  13. ERC-721 NFT NFT (ID) NFT → URI NFT (ID) URI

    → NFT ( ) URI → ( ) → ( ) NFT NFT NFT NFT ( ) — 2022-04-21 – p.17/17