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

Ethereum 入門 / Introduction to Ethereum

Ethereum 入門 / Introduction to Ethereum

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

Kenji Saito
PRO

August 23, 2023
Tweet

More Decks by Kenji Saito

Other Decks in Technology

Transcript

  1. 1 Ethereum
    CSO /
    [email protected]
    — 1 Ethereum — 2023-08-23 – p.1/33

    View Slide

  2. https://speakerdeck.com/ks91
    — 1 Ethereum — 2023-08-23 – p.2/33

    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
    → ( )
    — 1 Ethereum — 2023-08-23 – p.3/33

    View Slide

  4. 1
    Ethereum
    BBc (Beyond Blockchain)
    — 1 Ethereum — 2023-08-23 – p.4/33

    View Slide

  5. 1. Ethereum
    2. Ethereum
    3. Ethereum
    4.
    — 1 Ethereum — 2023-08-23 – p.5/33

    View Slide

  6. 1. Ethereum
    — 1 Ethereum — 2023-08-23 – p.6/33

    View Slide

  7. Ethereum
    Vitalik Buterin, “Ethereum White Paper: A NEXT GENERATION SMART
    CONTRACT & DECENTRALIZED APPLICATION PLATFORM”
    12 ( 12 )
    (= )
    =


    Dapps ( / / )
    — 1 Ethereum — 2023-08-23 – p.7/33

    View Slide

  8. 2. Ethereum
    macOS (Big Sur 11.6.4, Monterey 12.6.7) + Homebrew
    Linux (Ubuntu 22.04) (x86/AMD64 (and ARM))
    Windows 10 + Windows Subsystem for Linux (Ubuntu )
    Ethereum solidity brownie
    — 1 Ethereum — 2023-08-23 – p.8/33

    View Slide

  9. Solidity
    Ethereum ( )
    http://solidity.readthedocs.io/en/latest/installing-solidity.html
    Linux (on Windows) “sudo apt”, macOS “brew”
    Linux ARM
    git clone dependencies
    solc 0.8.21 (8/23 )
    $ solc --version
    brownie py-solc-x
    solc (dependencies) ( solc py-solc-x )
    — 1 Ethereum — 2023-08-23 – p.9/33

    View Slide

  10. Ganache
    Ethereum RPC
    npm ( )
    macOS
    https://qiita.com/kyosuke5_20/items/c5f68fc9d89b84c0df09
    Linux
    https://qiita.com/seibe/items/36cef7df85fe2cefa3ea
    npm Ganache
    $ sudo npm install -g ganache
    — 1 Ethereum — 2023-08-23 – p.10/33

    View Slide

  11. Python3
    macOS
    $ brew install python3
    Python
    3.8
    Homebrew
    $ brew uninstall --ignore-dependencies [email protected]
    $ brew install [email protected]
    /usr/local/opt/[email protected]/bin/python3
    Linux
    $ sudo apt update
    $ sudo apt install python3.8 python3.8-dev python3.8-venv python3.8-tk
    16.10 python3(.8) apt (PPA )
    python3 ( python3.9 )
    python3-dev python3-venv python3-tk
    — 1 Ethereum — 2023-08-23 – p.11/33

    View Slide

  12. macOS :
    . . .
    macOS wget brew
    dyld: Library not loaded: /usr/local/opt/gettext/lib/libintl.8.dylib
    $ brew uninstall --force gettext
    $ brew install gettext
    — 1 Ethereum — 2023-08-23 – p.12/33

    View Slide

  13. Python (venv)
    macOS (Linux python3 ) ‘python3.8’ ‘python3’
    $ python3.8 -m venv bbc2env
    $ source bbc2env/bin/activate
    (bbc2env) $ pip install -U pip
    bbc2env ( BBc-2 )
    ( )
    (bbc2env) $ deactivate
    — 1 Ethereum — 2023-08-23 – p.13/33

    View Slide

  14. Brownie
    Python Ethereum
    https://eth-brownie.readthedocs.io
    Brownie
    $ pip install eth-brownie
    version 1.19.3 (8/23 )
    — 1 Ethereum — 2023-08-23 – p.14/33

    View Slide

  15. $ brownie init
    ( ERC-20 )
    $ brownie bake token
    $ cd token
    — 1 Ethereum — 2023-08-23 – p.15/33

    View Slide

  16. contracts
    (macOS Linux (x86/AMD64) )
    $ brownie compile
    Linux (ARM) (AMD64 )
    $ python #
    >>> import solcx
    >>> solcx.compile_solc(’0.6.12’) #
    >>> quit()
    /tmp ∼/.solcx/solc-v0.6.12
    ( )
    $ pytest tests
    — 1 Ethereum — 2023-08-23 – p.16/33

    View Slide

  17. Brownie
    $ brownie console
    Python
    >>> len(accounts)
    10
    >>> accounts[0].balance()
    100000000000000000000
    >>> quit()
    — 1 Ethereum — 2023-08-23 – p.17/33

    View Slide

  18. 3. Ethereum
    — 1 Ethereum — 2023-08-23 – p.18/33

    View Slide

  19. ( )
    — 1 Ethereum — 2023-08-23 – p.19/33

    View Slide

  20. . . .
    — 1 Ethereum — 2023-08-23 – p.20/33

    View Slide

  21. vs.
    — 1 Ethereum — 2023-08-23 – p.21/33

    View Slide

  22. = ( ) run ( )
    — 1 Ethereum — 2023-08-23 – p.22/33

    View Slide

  23. Ether
    Ethereum
    EOA : Externally-Owned Account
    ( )
    Ether EVM
    EVM
    — 1 Ethereum — 2023-08-23 – p.23/33

    View Slide

  24. EVM : Ethereum Virtual Machine
    ঢ়ଶ
    ֎෦ΞΫλʔ
    ΞΧ΢ϯτ
    &7. ίʔυ
    &UIFSˠ(BT
    ىಈ
    ίϯτϥΫτ

    ϝοηʔδ͔ɺ৽͍ࣗ͠ಈΦϒδΣΫτ
    ΞΧ΢ϯτؒͰ΍ΓऔΓ͞ΕΔσʔλ΍&UIFS
    ετϨʔδ
    ঢ়ଶ`
    τϥϯβΫγϣϯ
    ηοτ
    σδλϧॺ໊
    &7.
    ਓؒͱ͔
    ࣗಈ
    ΦϒδΣΫτ
    Gas Gas ETH (Gas )
    (burn ) ETH ( . . .)
    — 1 Ethereum — 2023-08-23 – p.24/33

    View Slide

  25. EVM
    :
    : ←
    :
    Solidity — JavaScript
    LLL — Lisp
    Vyper — Python
    Fe — Vyper Rust ← NEW!
    Solidity
    Vyper Python
    — 1 Ethereum — 2023-08-23 – p.25/33

    View Slide

  26. Solidity ( )
    pragma solidityˆ0.7.0;
    contract IndivisibleAsset { /* */
    string public _name;
    string public _symbol;
    uint256 public _quantity;
    address public _owner;
    constructor(string memory name, string memory symbol, uint256 quantity) public {
    _name = name;
    _symbol = symbol;
    _quantity = quantity;
    _owner = msg.sender;
    }
    function transfer(address to) public returns (bool) {
    require (_owner == msg.sender);
    _owner = to;
    return true;
    }
    }
    — 1 Ethereum — 2023-08-23 – p.26/33

    View Slide

  27. ( , )
    (constructor)
    (deploy) =
    ( )
    ( )
    ETH
    Trusted Actor Model
    — 1 Ethereum — 2023-08-23 – p.27/33

    View Slide

  28. Ethereum
    — 1 Ethereum — 2023-08-23 – p.28/33

    View Slide

  29. 4.
    Ethereum Görli
    — 1 Ethereum — 2023-08-23 – p.29/33

    View Slide

  30. infura.io Brownie
    https://infura.io SIGN UP PROJECT ID
    infura Ethereum API
    infura . . .
    infura.io
    PROJECT ID
    WEB3_INFURA_PROJECT_ID
    PROJECT ID (∼/.bash_profile )
    $ export WEB3_INFURA_PROJECT_ID= PROJECT ID
    — 1 Ethereum — 2023-08-23 – p.30/33

    View Slide


  31. orli ETH
    brownie console Görli
    >>> network.disconnect()
    >>> network.connect(’goerli’)
    >>> len(accounts)
    0
    >>> accounts.add()

    >>> accounts[0].private_key
    16
    >>> quit()
    Görli Testnet ETH Faucet ETH
    https://goerlifaucet.com ( )
    ( )
    https://metamask.io/
    — 1 Ethereum — 2023-08-23 – p.31/33

    View Slide


  32. orli ETH
    brownie console Görli ETH
    >>> network.disconnect()
    >>> network.connect(’goerli’)
    >>> len(accounts)
    0
    >>> accounts.add( 16 )

    >>> accounts[0].balace()
    ETH
    >>> quit()
    ETH
    >>> accounts[0].transfer(accounts[1], "0.01 ether")
    — 1 Ethereum — 2023-08-23 – p.32/33

    View Slide

  33. 2 Ethereum I
    : ERC-20
    — 1 Ethereum — 2023-08-23 – p.33/33

    View Slide