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

Ethereum 演習 III / Ethereum Exercise III

Ethereum 演習 III / Ethereum Exercise III

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

Kenji Saito
PRO

September 13, 2023
Tweet

More Decks by Kenji Saito

Other Decks in Technology

Transcript

  1. 4 Ethereum III
    CSO /
    [email protected]
    — 4 Ethereum III — 2023-09-13 – p.1/28

    View Slide

  2. https://speakerdeck.com/ks91
    — 4 Ethereum III — 2023-09-13 – p.2/28

    View Slide

  3. ( )
    SFC ( )
    CSO (Chief Science Officer)
    1993 ( )
    2006 ( )
    SFC
    22 P2P (Peer-to-Peer)
    2011 ( )
    2018 2019
    VR 2021.9 & VR 2022.3
    2023 AI VR&RPG 2023.5 “Don’t Be So Serious”
    VOXEL 2023.7 DAZE 2023
    → ( )
    — 4 Ethereum III — 2023-09-13 – p.3/28

    View Slide

  4. web3
    4 web3
    NFT (Non-Fungible Token)
    DAO (Decentralized Autonomous Organization)
    — 4 Ethereum III — 2023-09-13 – p.4/28

    View Slide

  5. 1. NFT DAO
    2. : NFT
    3. : DAO
    4.
    — 4 Ethereum III — 2023-09-13 – p.5/28

    View Slide

  6. NFT DAO
    DeFi ( )
    — 4 Ethereum III — 2023-09-13 – p.6/28

    View Slide

  7. ( )
    = =
    :
    . . . ( : )
    ( ) . . .
    . . .
    . . .
    . . .
    — 4 Ethereum III — 2023-09-13 – p.7/28

    View Slide


  8. ( ) . . .
    . . .
    — 4 Ethereum III — 2023-09-13 – p.8/28

    View Slide

  9. DeFi ( )
    DeFi : Decentralized Finace
    . . .
    ( )
    DeFi
    DAO
    — 4 Ethereum III — 2023-09-13 – p.9/28

    View Slide

  10. NFT ( )
    NFT : Non-Fungible Token
    ( )
    (1 ) → fungible token
    ( ) → NFT
    — 4 Ethereum III — 2023-09-13 – p.10/28

    View Slide

  11. ERC-721
    ERC (Ethereum Request for Comments) 721 EIP (Ethereum Improvement Proposal)
    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 Ethereum III — 2023-09-13 – p.11/28

    View Slide

  12. ERC-721 NFT
    τʔΫϯ *%
    ൪߸
    63-
    ΞυϨε
    63-
    /'5
    Ұҙ
    Ұҙʁ Ұҙʁ
    Ұҙ
    ࣄ্࣮
    Ұҙ
    ެ։伴ͷ
    μΠδΣετ
    ϝλσʔλ
    ίϯτϥΫτͱ͍͏ఆٛҬ
    ˞ͦͷίϯτϥΫτͱ͍͏ఆٛҬͷதͰ ࣮ઢ໼ҹͰࣔͨ͠ҰҙੑΛอূ͢Δʹա͗ͳ͍
    ˞ഁઢ໼ҹͰࣔͨ͠Ұҙੑ͸ ࣮૷ɾӡ༻ͷ޻෉࣍ୈͰอূͰ͖Δ
    ɹྫ͑͹ 63- ʹͦΕ͕ࢦ͢Ϧιʔεͷ҉߸ֶతμΠδΣετΛؚΊΔ͜ͱ ྫ *1'4 ͷར༻
    ʹΑΓ
    ɹ
    ʮ63-ˠσʔλʯͷҰҙੑΛอͯΔ ͦͷ৔߹Ͱ΋ʮσʔλˠ63-ʯͷҰҙੑ͸ແ͍

    ର৅σʔλ
    ը૾౳
    ॴ༗ऀ
    ϝλσʔλ 63- ର৅σʔλ 63-
    ൿີ伴
    Ұҙ
    Ұҙʁ
    Ϣʔβ
    Ұҙʁ
    — 4 Ethereum III — 2023-09-13 – p.12/28

    View Slide

  13. NFT
    NFT URL
    Marlinspike, M.: My first impressions of web3 (2022)
    Web3
    . . .
    URL
    ↑ NFT → → NFT
    NFT ↔
    NFT
    — 4 Ethereum III — 2023-09-13 – p.13/28

    View Slide

  14. 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 Ethereum III — 2023-09-13 – p.14/28

    View Slide

  15. : NFT
    — 4 Ethereum III — 2023-09-13 – p.15/28

    View Slide

  16. NFT
    Linux (Ubuntu 22.04)
    Python3 + eth-brownie 1.19.3 (Python Ethereum )
    $ brownie bake nft
    nft ( )
    contracts
    SimpleCollectible.sol
    ERC-721
    — 4 Ethereum III — 2023-09-13 – p.16/28

    View Slide

  17. 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 Ethereum III — 2023-09-13 – p.17/28

    View Slide

  18. NFT (2)
    NFT(?)
    NFT
    >>> collectible.ownerOf( NFT ID) #
    >>> collectible.ownerOf( NFT ID) #
    NFT Ethereum
    Ethereum NFT
    NFT
    Ethereum
    Lazy Minting (?)
    ( )
    ( )
    NFT
    — 4 Ethereum III — 2023-09-13 – p.18/28

    View Slide

  19. NFT
    < , ID>
    ERC-721
    OK
    NFT . . .
    ID
    → NFT
    ID NFT
    NFT
    URL . . . URL . . .
    →NFT
    — 4 Ethereum III — 2023-09-13 – p.19/28

    View Slide

  20. NFT
    σʔλ "
    ϒϩοΫνΣʔϯ #⒩
    ʜ ʜ
    ϒϩοΫνΣʔϯ #⒪
    ʜ ʜ
    εϚʔτίϯτϥΫτ $⒩
    εϚʔτίϯτϥΫτ $⒪
    ಛఆͷετϨʔδ
    ˞Ͳ͜ʹஔ͔ΕΑ͏ͱ΋
    ɹ౳͍͠σʔλ͸ಉ͡΋ͷ
    ϒϩοΫνΣʔϯ͕ಉ͡Ͱ΋ҟͳͬͯ
    ͍ͯ΋ εϚʔτίϯτϥΫτ͕ҟͳ
    ΔΠϯελϯεͳΒఆٛҬ͸ผͱͳΔ
    ଟ͘ͷ৔߹
    ې͡ΒΕͳ͍
    ېࢭͰ͖ͳ͍
    ˞/'5 ͕σʔλΛࢦ͢ํࣜͱσʔλΛ֨ೲ͢Δํࣜ͸ σʔλͷՄ༻ੑ͸ҟͳΔͱͯ͠΋ҰҙੑʹؔΘΔੑ࣭͸มΘΒͳ͍
    ಉҰ
    εϚʔτίϯτϥΫτ $⒫
    εϚʔτίϯτϥΫτ $⒬
    /'5⒩ /'5⒪
    /'5⒫
    /'5⒬
    /'5⒮
    /'5⒭
    σʔλ "

    ېͣΔΑ͏ͳ
    ઃܭ͸ίετߴ
    ېࢭͰ͖ͳ͍
    — 4 Ethereum III — 2023-09-13 – p.20/28

    View Slide

  21. NFT
    NFT . . .
    NFT ( )

    ID . . .
    — 4 Ethereum III — 2023-09-13 – p.21/28

    View Slide

  22. 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 Ethereum III — 2023-09-13 – p.22/28

    View Slide

  23. NFT :
    ERC-721 NFT
    NFT (ID)
    NFT → URI
    NFT
    ( NFT )
    (ID)
    (URI) → NFT ( )
    URI → ( )
    → ( )
    NFT
    NFT NFT
    — 4 Ethereum III — 2023-09-13 – p.23/28

    View Slide

  24. : DAO
    — 4 Ethereum III — 2023-09-13 – p.24/28

    View Slide

  25. DAO
    (1) ( )
    (2)
    (3)
    . . .
    (a) ( )
    (b) ( )
    https://medium.com/coinmonks/beanstalk-exploit-a-simplified-post-mortem-analysis-92e6cdb17ace
    — 4 Ethereum III — 2023-09-13 – p.25/28

    View Slide

  26. 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 Ethereum III — 2023-09-13 – p.26/28

    View Slide

  27. — 4 Ethereum III — 2023-09-13 – p.27/28

    View Slide

  28. — 4 Ethereum III — 2023-09-13 – p.28/28

    View Slide