$30 off During Our Annual Pro Sale. View Details »

BBc-1 と Ethereum 演習 III / BBc-1 and Ethereum Exercise III

BBc-1 と Ethereum 演習 III / BBc-1 and Ethereum Exercise III

2022年10月5日(水)、ブロックチェーンハブ主催のブロックチェーンアカデミーにて使用したスライドです。

Kenji Saito
PRO

October 05, 2022
Tweet

More Decks by Kenji Saito

Other Decks in Technology

Transcript

  1. 4 BBc-1 Ethereum III
    CSO /
    [email protected]
    — 4 BBc-1 Ethereum III — 2022-10-05 – p.1/26

    View Slide

  2. https://speakerdeck.com/ks91
    — 4 BBc-1 Ethereum III — 2022-10-05 – p.2/26

    View Slide

  3. ( )
    SFC ( )
    CSO (Chief Science Officer)
    1993 ( )
    2006 ( )
    SFC
    22 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 2022.8
    → ( )
    — 4 BBc-1 Ethereum III — 2022-10-05 – p.3/26

    View Slide

  4. BBc-1 Ethereum
    4
    NFT DAO
    — 4 BBc-1 Ethereum III — 2022-10-05 – p.4/26

    View Slide

  5. 1. NFT DAO
    2. : NFT
    3. : DAO
    4.
    — 4 BBc-1 Ethereum III — 2022-10-05 – p.5/26

    View Slide

  6. NFT DAO
    DeFi ( )
    — 4 BBc-1 Ethereum III — 2022-10-05 – p.6/26

    View Slide

  7. ( )
    = =
    :
    . . . ( : )
    ( ) . . .
    . . .
    . . .
    . . .
    — 4 BBc-1 Ethereum III — 2022-10-05 – p.7/26

    View Slide


  8. ( ) . . .
    . . .
    — 4 BBc-1 Ethereum III — 2022-10-05 – p.8/26

    View Slide

  9. DeFi ( )
    DeFi : Decentralized Finace
    — 4 BBc-1 Ethereum III — 2022-10-05 – p.9/26

    View Slide

  10. NFT ( )
    NFT : Non-Fungible Token
    ( )
    (1 ) → fungible token
    ( ) → NFT
    — 4 BBc-1 Ethereum III — 2022-10-05 – p.10/26

    View Slide

  11. 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 ( ) ( )
    — 4 BBc-1 Ethereum III — 2022-10-05 – p.11/26

    View Slide

  12. NFT
    NFT URL
    Marlinspike, M.: My first impressions of web3 (2022)
    Web3
    . . .
    URL
    ↑ NFT → → NFT
    NFT ↔
    NFT
    — 4 BBc-1 Ethereum III — 2022-10-05 – p.12/26

    View Slide

  13. DAO ( )
    DAO : Decentralized Autonomous Organization
    Vitalik Buterin (Ethereum )
    https://blog.ethereum.org/2014/05/06/daos-dacs-das-and-more-an-incomplete-terminology-guide/
    (1)
    (2) ( )
    (3)
    DAO
    . . .
    /
    — 4 BBc-1 Ethereum III — 2022-10-05 – p.13/26

    View Slide

  14. : NFT
    — 4 BBc-1 Ethereum III — 2022-10-05 – p.14/26

    View Slide

  15. NFT
    Linux (Ubuntu 22.04)
    Python3 + eth-brownie 1.19.1 (Python Ethereum )
    $ brownie bake nft
    nft ( )
    contracts
    SimpleCollectible.sol
    ERC-721
    — 4 BBc-1 Ethereum III — 2022-10-05 – p.15/26

    View Slide

  16. 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 ( )
    — 4 BBc-1 Ethereum III — 2022-10-05 – p.16/26

    View Slide

  17. NFT (2)
    NFT(?)
    NFT
    >>> collectible.ownerOf( NFT ID) #
    >>> collectible.ownerOf( NFT ID) #
    NFT Ethereum
    Ethereum NFT
    NFT
    Ethereum
    Lazy Minting (?)
    ( )
    ( )
    NFT
    — 4 BBc-1 Ethereum III — 2022-10-05 – p.17/26

    View Slide

  18. NFT
    < , ID>
    ERC-721
    OK
    NFT . . .
    ID
    → NFT
    ID NFT
    NFT
    URL . . . URL . . .
    →NFT
    — 4 BBc-1 Ethereum III — 2022-10-05 – p.18/26

    View Slide

  19. NFT
    NFT . . .
    NFT ( )

    ID . . .
    — 4 BBc-1 Ethereum III — 2022-10-05 – p.19/26

    View Slide

  20. NFT
    NFT
    >>> network.disconnect() #
    >>> network.connect(’goerli’) # Ethereum
    >>> accounts.add( ) #
    >>> collectible = SimpleCollectible.deploy({’from’: accounts[0]}) # NFT
    >>> collectible.createCollectible( ) # NFT
    goerli /
    ( )
    “Gas used”
    Gas
    Gwei
    ERC-721a ID 1
    — 4 BBc-1 Ethereum III — 2022-10-05 – p.20/26

    View Slide

  21. NFT :
    ERC-721 NFT
    NFT (ID)
    NFT → URI
    NFT
    ( NFT )
    (ID)
    (URI) → NFT ( )
    URI → ( )
    → ( )
    NFT
    NFT NFT
    — 4 BBc-1 Ethereum III — 2022-10-05 – p.21/26

    View Slide

  22. : DAO
    — 4 BBc-1 Ethereum III — 2022-10-05 – p.22/26

    View Slide

  23. DAO
    (1) ( )
    (2)
    (3)
    . . .
    (a) ( )
    (b) ( )
    https://medium.com/coinmonks/beanstalk-exploit-a-simplified-post-mortem-analysis-92e6cdb17ace
    — 4 BBc-1 Ethereum III — 2022-10-05 – p.23/26

    View Slide

  24. MakerDAO
    https://docs.makerdao.com/smart-contract-modules/governance-module
    plot ( )
    drop ( )
    plot eta ( ) exec ( )
    https://github.com/dapphub/ds-chief/blob/master/src/chief.sol
    https://github.com/dapphub/ds-auth/blob/master/src/auth.sol
    https://github.com/dapphub/ds-pause/blob/master/src/pause.sol
    — 4 BBc-1 Ethereum III — 2022-10-05 – p.24/26

    View Slide

  25. — 4 BBc-1 Ethereum III — 2022-10-05 – p.25/26

    View Slide

  26. — 4 BBc-1 Ethereum III — 2022-10-05 – p.26/26

    View Slide