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

Overview of Blockchain and Installation

Overview of Blockchain and Installation

2022年10月24日(月)、慶應義塾大学大学院メディアデザイン研究科「サービスデザインプロジェクト B」2022秋で使用したスライドです。

Kenji Saito
PRO

October 24, 2022
Tweet

More Decks by Kenji Saito

Other Decks in Technology

Transcript

  1. Service Design, generated by Stable Diffusion
    B 2022
    2
    ( )
    B 2022 — 2 — 2022-10-24 – p.1/60

    View Slide

  2. https://speakerdeck.com/ks91
    ( )
    ( )
    Discord
    Discord ( / / )
    Zoom URL ( )
    B 2022 — 2 — 2022-10-24 – p.2/60

    View Slide

  3. ( )
    1 10 17 •
    2 10 24 •
    3 10 31
    4 11 7 2
    5 11 14 1
    6 11 21 2
    7 11 28
    8 12 5
    Discord
    B 2022 — 2 — 2022-10-24 – p.3/60

    View Slide


  4. :
    : Ethereum
    ( )
    ( ) Ethereum
    B 2022 — 2 — 2022-10-24 – p.4/60

    View Slide


  5. B 2022 — 2 — 2022-10-24 – p.5/60

    View Slide

  6. ެ։୆ா
    ެ։Ͱͳ͚Ε͹ͳΒͳ͍

    ʜ
    ຊਓ
    ɾૹۚه࿥
    ɾίʔυ
    ɾσʔλͷมԽ
    ɾ࣮ߦϩά
    ݕӾͰ͖Δୈࡾऀ
    ͜Εɺ
    ه࿥͍ͨ͠Μ͚ͩͲ
    ͋ͳͨ͸
    ॻ͍ͨΒμϝ
    ͜ͷ಺༰͸
    ॻ͍ͨΒμϝ
    ॻ͍ͪΌͬͨͷʁ
    ͜͏ॻ͖׵͑·͠ΐ͏
    ॻ͍ͯͳ͍ͷʁ
    ͜͏ॻ͔Εͨ͜ͱʹ
    ͠·͠ΐ͏
    ॻ͍ͪΌͬͨͷʁ
    ফ͠·͠ΐ͏
    %P4 ߈ܸͱ͔Ͱ
    ๦֐ͯ͠ࢭΊ·͠ΐ͏
    B 2022 — 2 — 2022-10-24 – p.6/60

    View Slide

  7. ( )
    ( )
    ( )

    ( ( ))
    (BP : Blockchain Property )
    BP-1 : ( )
    BP-2 : ( ( ) )
    BP-3 : ( )
    ( ) ( )
    B 2022 — 2 — 2022-10-24 – p.7/60

    View Slide

  8. ( )
    (LIFO : Last In, First Out)
    ( )
    B 2022 — 2 — 2022-10-24 – p.8/60

    View Slide

  9. ( ) ( )
    ( )
    (
    ) ( 16
    )
    SHA (Secure Hash Algorithm)
    ( ) 1bit
    B 2022 — 2 — 2022-10-24 – p.9/60

    View Slide

  10. ( ) ( )
    < , >
    ( )

    : < , >
    :
    : < , , >
    : OK ( 1 ) NG ( )
    B 2022 — 2 — 2022-10-24 – p.10/60

    View Slide

  11. BP-1 ( ), BP-2 ( )
    BBc-1 f : → BP-3
    ( )
    ( )
    ( ) ← BP-2
    ← BP-3 ( ) (BP-2 )
    ( ) ← BP-3 (?)
    + ← BP-{1,2}
    B 2022 — 2 — 2022-10-24 – p.11/60

    View Slide

  12. [Lamport 1984][Schneider 1990]
    (1)
    (2)
    (3)
    (4) ( )


    B 2022 — 2 — 2022-10-24 – p.12/60

    View Slide

  13. TX : transaction
    ( 4 TX )
    SMRP (State Machine Replication Problem)
    SMRP-1 ( )
    SMRP-2
    :
    B 2022 — 2 — 2022-10-24 – p.13/60

    View Slide

  14. ( ) ( )
    ϒϩοΫ൪߸O ϒϩοΫ൪߸O ϒϩοΫ൪߸O ϒϩοΫ൪߸O
    ϒϩοΫ൪߸O ϒϩοΫ൪߸O ϒϩοΫ൪߸O
    ϒϩοΫ൪߸O
    ͍ͪ͹Μه࿥ɾॻ͖׵͑ͷίετ͕ߴ͍ྺ࢙ ࠷΋վ͟Μ͠ʹ͍͘ྺ࢙
    ͕༗ޮ
    ͻͱͭखલͷϒϩοΫͷ
    ʮμΠδΣετʯ
    σδλϧॺ໊͞Εͨ
    ʮτϥϯβΫγϣϯ औҾ
    ʯ
    ϒϩοΫΛ࡞ΔͨΊʹ͸ɺͦͷʮμΠδΣετʯ͕͋Δ਺ҎԼͱ͍͏৚݅Λຬͨͨ͠Γ 1SPPGPG8PSL

    Ծ૝௨՟ͷ࣋ͪ෼ʹԠͨ͡ݖརΛ࢖ͬͨ౤ථͰউͬͨΓ 1SPPGPG4UBLF
    ͢Δඞཁ͕͋Δ ίετ͕͔͔Δ

    ϒϩοΫΛ࡞Δਓ͸ͦͷதʹࣗ෼ʹѼͯͨ
    Ծ૝௨՟ͰͷใुΛॻ͖ࠐΉ͜ͱ͕Ͱ͖ɺ
    ͦͷϒϩοΫ͕༗ޮͳྺ࢙ͷதʹ͋Δ৔߹ʹ
    ݶΓใु΋༗ޮͱͳΔ
    τϥϯβΫγϣϯͷଘࡏΛ֬ೝ͢Δ
    ͨΊͷޮ཰తͳํ๏͕ఏڙ͞ΕΔ
    ਖ਼౰ੑ ଘࡏੑ
    །Ұੑ
    Proof of Work ( )
    . . . →
    B 2022 — 2 — 2022-10-24 – p.14/60

    View Slide

  15. (BP-3 ) ( : )
    (BP-3 ) ( : )
    ← NFT
    BP-{1,2,3}
    BP-{1, 2}

    B 2022 — 2 — 2022-10-24 – p.15/60

    View Slide

  16. (Confidentiality)
    BP-{1,2,3}

    ( = )
    (Integrity)
    BP-3
    (Availability)
    BP-2
    B 2022 — 2 — 2022-10-24 – p.16/60

    View Slide

  17. 2009

    13
    ( 5 )
    B 2022 — 2 — 2022-10-24 – p.17/60

    View Slide

  18. ( )
    ADR (Active (space) Debris Removal)
    : https://doi.org/10.1109/TCSS.2018.2890655
    (1930 )
    ( )
    B 2022 — 2 — 2022-10-24 – p.18/60

    View Slide

  19. ( )
    ( )
    ( )
    B 2022 — 2 — 2022-10-24 – p.19/60

    View Slide

  20. ( )
    ( - )
    : https://doi.org/10.1016/j.future.2019.05.019
    B 2022 — 2 — 2022-10-24 – p.20/60

    View Slide

  21. ( )
    ( )
    ( )
    B 2022 — 2 — 2022-10-24 – p.21/60

    View Slide

  22. ( )
    B 2022 — 2 — 2022-10-24 – p.22/60

    View Slide

  23. / ( )
    ( )
    ( )
    ( )
    B 2022 — 2 — 2022-10-24 – p.23/60

    View Slide

  24. ( )
    ( )
    ( )
    B 2022 — 2 — 2022-10-24 – p.24/60

    View Slide

  25. ( )
    : https://www.lij.jp/html/jli/jli_2017/
    2017summer_p018.pdf
    B 2022 — 2 — 2022-10-24 – p.25/60

    View Slide

  26. ( )
    ( )
    B 2022 — 2 — 2022-10-24 – p.26/60

    View Slide

  27. B 2022 — 2 — 2022-10-24 – p.27/60

    View Slide

  28. with
    ( )
    ( )
    : https://doi.org/10.1016/j.icte.2021.08.012
    ( )
    B 2022 — 2 — 2022-10-24 – p.28/60

    View Slide

  29. DNS
    : https://ieeexplore.ieee.org/document/9686409 ( )
    IP
    AS
    B 2022 — 2 — 2022-10-24 – p.29/60

    View Slide

  30. ( )
    ( )
    :
    https://ieeexplore.ieee.org/document/9686409
    ( )
    : https://doi.org/10.1016/j.icte.2021.08.012
    (web )
    B 2022 — 2 — 2022-10-24 – p.30/60

    View Slide

  31. ( )
    ( )
    ( )
    : https://doi.org/10.1016/j.icte.2021.08.012
    ( )
    ( )
    ( )
    :
    https://ieeexplore.ieee.org/document/9686409
    B 2022 — 2 — 2022-10-24 – p.31/60

    View Slide

  32. ( )
    ( )
    :
    https://ieeexplore.ieee.org/document/9686409
    3D
    ( )
    :
    HACCP ( )
    B 2022 — 2 — 2022-10-24 – p.32/60

    View Slide


  33. τʔΫϯ
    ୅ସ՟ฎ

    εϚʔτίϯτϥΫτ
    ݕূՄೳͳঢ়ଶϚγϯ

    ϓϩϏφϯε
    དྷྺূ໌

    ୅ସՄೳ
    ঈؐෆೳ
    ୅ସՄೳ
    ঈؐՄೳ
    ୅ସෆೳ
    ঈؐՄೳ
    ୅ସෆೳ
    ঈؐෆೳ
    ূ໌͢Δ
    ಉఆ͢Δ
    ࢧ෷͍౳
    ࠷ॳͷԠ༻
    *%Χʔυ౳
    ηΩϡϦςΟ
    τʔΫϯ ূ݊

    ηϯαʔ౳
    ෺ྲྀɾ
    Ҩݴॻ౳
    อݥਃ੥౳
    ௥੻͢Δ ײ஌͢Δ
    தԝۜߦ
    σδλϧ௨՟౳
    ҭ੒ήʔϜ౳
    ൿີ伴Λ࢖͑Δ͔Βຊਓʁ
    ෛ࠴ Ξηοτͷ
    ਺஋දݱΛҠసͰ͖Δʁ
    ొ࿥͞Εͨίʔυͱ
    ͦͷ࣮ߦϩάͱ݁Ռͷ
    ਅਖ਼ੑΛ୲อͰ͖Δʁ
    ݖҖ͕

    Կ͔ͷ಺༰Λূ໌͢Δʁ
    ࣋ଓ͢Δଘࡏʹ͍ͭͯ
    ه࿥ΛΞοϓσʔτՄʁ ओମ͕͍ͳ͘ͳͬͯ΋
    աڈͷσʔλ͸༗ޮʁ
    /'5
    Ұൠతͳ
    ೝࣝ
    ػೳͷ
    ෼ੳ݁Ռ
    B 2022 — 2 — 2022-10-24 – p.33/60

    View Slide

  34. Ethereum
    macOS (Monterey 12.6) + Homebrew
    Linux (Ubuntu 22.04) (x86/AMD64 and ARM)
    Windows 10/11 + Windows Subsystem for Linux (Ubuntu )
    Ethereum solidity brownie
    B 2022 — 2 — 2022-10-24 – p.34/60

    View Slide

  35. 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.16 (9/6 )
    $ solc --version
    brownie py-solc-x
    solc (dependencies) ( solc py-solc-x )
    B 2022 — 2 — 2022-10-24 – p.35/60

    View Slide

  36. Ganache CLI
    Ethereum RPC
    npm ( )
    macOS
    https://qiita.com/kyosuke5_20/items/c5f68fc9d89b84c0df09
    Linux
    https://qiita.com/seibe/items/36cef7df85fe2cefa3ea
    npm Ganache CLI
    $ sudo npm install -g ganache-cli
    B 2022 — 2 — 2022-10-24 – p.36/60

    View Slide

  37. 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-dev python3-venv python3-tk
    B 2022 — 2 — 2022-10-24 – p.37/60

    View Slide

  38. macOS : . . .
    macOS wget brew
    dyld: Library not loaded: /usr/local/opt/gettext/lib/libintl.8.dylib
    $ brew uninstall --force gettext
    $ brew install gettext
    B 2022 — 2 — 2022-10-24 – p.38/60

    View Slide

  39. Python (venv)
    macOS (Linux python3 ) ‘python3.8’ ‘python3’
    $ python3.8 -m venv bbc1env
    $ source bbc1env/bin/activate
    (bbc1env) $ pip install -U pip
    (bbc1env) $ pip install wheel
    bbc1env ( BBc-1 )
    ( )
    (bbc1env) $ deactivate
    B 2022 — 2 — 2022-10-24 – p.39/60

    View Slide

  40. Brownie
    Python Ethereum
    https://eth-brownie.readthedocs.io
    Brownie
    $ pip install eth-brownie
    version 1.19.1 (9/6 )
    B 2022 — 2 — 2022-10-24 – p.40/60

    View Slide

  41. $ brownie init
    ( ERC-20 )
    $ brownie bake token
    $ cd token
    B 2022 — 2 — 2022-10-24 – p.41/60

    View Slide

  42. 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
    B 2022 — 2 — 2022-10-24 – p.42/60

    View Slide

  43. Brownie
    $ brownie console
    Python
    >>> len(accounts)
    10
    >>> accounts[0].balance()
    100000000000000000000
    >>> quit()
    B 2022 — 2 — 2022-10-24 – p.43/60

    View Slide

  44. Ethereum Görli
    B 2022 — 2 — 2022-10-24 – p.44/60

    View Slide

  45. 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
    B 2022 — 2 — 2022-10-24 – p.45/60

    View Slide


  46. 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/
    B 2022 — 2 — 2022-10-24 – p.46/60

    View Slide


  47. 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")
    B 2022 — 2 — 2022-10-24 – p.47/60

    View Slide

  48. Ethereum
    B 2022 — 2 — 2022-10-24 – p.48/60

    View Slide

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


    Dapps ( / / )
    B 2022 — 2 — 2022-10-24 – p.49/60

    View Slide

  50. ( )
    B 2022 — 2 — 2022-10-24 – p.50/60

    View Slide

  51. . . .
    B 2022 — 2 — 2022-10-24 – p.51/60

    View Slide

  52. vs.
    B 2022 — 2 — 2022-10-24 – p.52/60

    View Slide

  53. = run
    B 2022 — 2 — 2022-10-24 – p.53/60

    View Slide

  54. Ether
    Ethereum
    EOA : Externally-Owned Account
    ( )
    Ether EVM
    EVM
    B 2022 — 2 — 2022-10-24 – p.54/60

    View Slide

  55. EVM : Ethereum Virtual Machine
    Gas ( EVM = ( burn))
    . . . B 2022 — 2 — 2022-10-24 – p.55/60

    View Slide

  56. EVM
    :
    : ←
    :
    Solidity — JavaScript
    LLL — Lisp
    Vyper — Python
    Fe — Vyper Rust ← NEW!
    Solidity
    Vyper Python
    B 2022 — 2 — 2022-10-24 – p.56/60

    View Slide

  57. 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;
    }
    }
    B 2022 — 2 — 2022-10-24 – p.57/60

    View Slide

  58. ( , )
    (constructor)
    (deploy) =
    ( )
    ( )
    ETH
    Trusted Actor Model
    B 2022 — 2 — 2022-10-24 – p.58/60

    View Slide

  59. Ethereum
    B 2022 — 2 — 2022-10-24 – p.59/60

    View Slide

  60. B 2022 — 2 — 2022-10-24 – p.60/60

    View Slide