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

ブロックチェーン概論 / Introduction to Blockchain

ブロックチェーン概論 / Introduction to Blockchain

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

Kenji Saito
PRO

October 17, 2022
Tweet

More Decks by Kenji Saito

Other Decks in Technology

Transcript

  1. Service Design, generated by Stable Diffusion
    B 2022
    1
    ( )
    B 2022 — 1 — 2022-10-17 – p.1/63

    View Slide

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

    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
    → ( )
    B 2022 — 1 — 2022-10-17 – p.3/63

    View Slide

  4. (2 )
    https://youtu.be/ZHdP9BKuQX8
    JCSG2022 —
    Academy Camp VR Cells VRChat
    https://vrchat.com/home/launch?worldId=wrld_2f8602af-a7ea-42a4-833b-789261f55205
    Steam and/or Quest 2
    Stable Diffusion / MidJourney
    3D ( )
    B 2022 — 1 — 2022-10-17 – p.4/63

    View Slide

  5. . . . ( )
    2018
    1 2 2018
    OK Google, Google
    ( )
    Python
    ( )

    Alexa,
    B 2022 — 1 — 2022-10-17 – p.5/63

    View Slide

  6. Alexa,
    ত࿨࣌୅ ੈلޙ൒
    ࣾձγεςϜ
    ࣾձ؀ڥ
    ػց
    ٕज़
    ਓؒ ࣗಈγεςϜ
    ྩ࿨࣌୅ ੈلલ൒
    ిؾ͚ͭͯ ͸͍ ͸͍
    ిؾ͚ͭͯ
    ͜ͷ৚݅ͷͱ͖

    ٕज़Ͱ͋Γࣾձ؀ڥˠࣗવ؀ڥ


    ( )
    Web3 B 2022 — 1 — 2022-10-17 – p.6/63

    View Slide

  7. — ( )
    ( )
    “FinTech — Financial Innovation and the Internet” ( )
    ( ) ( )
    B — (2020 ∼)
    ( )
    → ( )
    https://speakerdeck.com/ks91
    B 2022 — 1 — 2022-10-17 – p.7/63

    View Slide

  8. (?) (1)
    2020 9
    60 (2020)
    :
    ( )
    . . .
    = ( )
    B 2022 — 1 — 2022-10-17 – p.8/63

    View Slide

  9. (?) (2)
    (2020)
    :
    ( )
    B 2022 — 1 — 2022-10-17 – p.9/63

    View Slide

  10. ( )
    Python 3 Ethereum
    B 2022 — 1 — 2022-10-17 – p.10/63

    View Slide

  11. B 2022 — 1 — 2022-10-17 – p.11/63

    View Slide

  12. (1/2) —
    World Wide Web
    COVID-19
    2020
    1990 World Wide Web
    (← )
    End-to-End ( ) ( )
    ( )
    End-to-End
    ( )
    2008
    B 2022 — 1 — 2022-10-17 – p.12/63

    View Slide

  13. (2/2) —
    ( web3 )
    B 2022 — 1 — 2022-10-17 – p.13/63

    View Slide


  14. Python
    Flask (Python )
    Ethereum
    Brownie (Python Ethereum )
    BBc-1 ( )
    B 2022 — 1 — 2022-10-17 – p.14/63

    View Slide

  15. ( 2 )
    ( )
    Discord miro
    VR Discord miro
    ( ) ( : )
    . . .
    : ( )
    : DApp ( )
    B 2022 — 1 — 2022-10-17 – p.15/63

    View Slide

  16. ( ) 25%
    25%
    20%
    30%
    ( )
    B 2022 — 1 — 2022-10-17 – p.16/63

    View Slide

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

    View Slide

  18. 1.
    2. Ethereum
    3.

    B 2022 — 1 — 2022-10-17 – p.18/63

    View Slide

  19. / STAND ALONE COMPLEX
    Yes.
    B 2022 — 1 — 2022-10-17 – p.19/63

    View Slide

  20. ( )
    ੪౻
    0DVMVT2VFTU
    खݩͷΩʔϘʔυ
    ࣮ߦ
    )%.*
    #MVFUPPUI
    #MVFUPPUI
    खݩͷτϥοΫϘʔϧ
    .BD1SP
    ໨ͷલͷσΟεϓϨΠ
    എޙͷ..BD#PPL"JS
    "QQMF
    3FNPUF%FTLUPQ
    0DVMVT
    3FNPUF%FTLUPQ
    )PSJ[PO8PSLSPPNT
    VT2VFTU
    MacBook Air
    B 2022 — 1 — 2022-10-17 – p.20/63

    View Slide

  21. 1.
    B 2022 — 1 — 2022-10-17 – p.21/63

    View Slide

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

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

    View Slide

  23. ( )
    ( )
    ( )

    ( ( ))
    (BP : Blockchain Property )
    BP-1 : ( )
    BP-2 : ( ( ) )
    BP-3 : ( )
    ( ) ( )
    B 2022 — 1 — 2022-10-17 – p.23/63

    View Slide

  24. ( )
    (LIFO : Last In, First Out)
    ( )
    B 2022 — 1 — 2022-10-17 – p.24/63

    View Slide

  25. ( ) ( )
    ( )
    (
    ) ( 16
    )
    SHA (Secure Hash Algorithm)
    ( ) 1bit
    B 2022 — 1 — 2022-10-17 – p.25/63

    View Slide

  26. ( ) ( )
    < , >
    ( )

    : < , >
    :
    : < , , >
    : OK ( 1 ) NG ( )
    B 2022 — 1 — 2022-10-17 – p.26/63

    View Slide

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

    View Slide

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


    B 2022 — 1 — 2022-10-17 – p.28/63

    View Slide

  29. TX : transaction
    ( 4 TX )
    SMRP (State Machine Replication Problem)
    SMRP-1 ( )
    SMRP-2
    :
    B 2022 — 1 — 2022-10-17 – p.29/63

    View Slide

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

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

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

    View Slide

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

    B 2022 — 1 — 2022-10-17 – p.31/63

    View Slide

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

    ( = )
    (Integrity)
    BP-3
    (Availability)
    BP-2
    B 2022 — 1 — 2022-10-17 – p.32/63

    View Slide

  33. 2009

    13
    ( 5 )
    B 2022 — 1 — 2022-10-17 – p.33/63

    View Slide

  34. ( )
    ADR (Active (space) Debris Removal)
    : https://doi.org/10.1109/TCSS.2018.2890655
    (1930 )
    ( )
    B 2022 — 1 — 2022-10-17 – p.34/63

    View Slide

  35. ( )
    ( )
    ( )
    B 2022 — 1 — 2022-10-17 – p.35/63

    View Slide

  36. ( )
    ( - )
    : https://doi.org/10.1016/j.future.2019.05.019
    B 2022 — 1 — 2022-10-17 – p.36/63

    View Slide

  37. ( )
    ( )
    ( )
    B 2022 — 1 — 2022-10-17 – p.37/63

    View Slide

  38. ( )
    B 2022 — 1 — 2022-10-17 – p.38/63

    View Slide

  39. / ( )
    ( )
    ( )
    ( )
    B 2022 — 1 — 2022-10-17 – p.39/63

    View Slide

  40. ( )
    ( )
    ( )
    B 2022 — 1 — 2022-10-17 – p.40/63

    View Slide

  41. ( )
    : https://www.lij.jp/html/jli/jli_2017/
    2017summer_p018.pdf
    B 2022 — 1 — 2022-10-17 – p.41/63

    View Slide

  42. ( )
    ( )
    B 2022 — 1 — 2022-10-17 – p.42/63

    View Slide

  43. B 2022 — 1 — 2022-10-17 – p.43/63

    View Slide

  44. with
    ( )
    ( )
    : https://doi.org/10.1016/j.icte.2021.08.012
    ( )
    B 2022 — 1 — 2022-10-17 – p.44/63

    View Slide

  45. DNS
    : https://ieeexplore.ieee.org/document/9686409 ( )
    IP
    AS
    B 2022 — 1 — 2022-10-17 – p.45/63

    View Slide

  46. ( )
    ( )
    :
    https://ieeexplore.ieee.org/document/9686409
    ( )
    : https://doi.org/10.1016/j.icte.2021.08.012
    (web )
    B 2022 — 1 — 2022-10-17 – p.46/63

    View Slide

  47. ( )
    ( )
    ( )
    : https://doi.org/10.1016/j.icte.2021.08.012
    ( )
    ( )
    ( )
    :
    https://ieeexplore.ieee.org/document/9686409
    B 2022 — 1 — 2022-10-17 – p.47/63

    View Slide

  48. ( )
    ( )
    :
    https://ieeexplore.ieee.org/document/9686409
    3D
    ( )
    :
    HACCP ( )
    B 2022 — 1 — 2022-10-17 – p.48/63

    View Slide

  49. 2. Ethereum
    macOS (Monterey 12.6) + Homebrew
    Linux (Ubuntu 22.04) (x86/AMD64 and ARM)
    Windows 10 + Windows Subsystem for Linux (Ubuntu )
    Ethereum solidity brownie
    B 2022 — 1 — 2022-10-17 – p.49/63

    View Slide

  50. 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 — 1 — 2022-10-17 – p.50/63

    View Slide

  51. 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 — 1 — 2022-10-17 – p.51/63

    View Slide

  52. 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 — 1 — 2022-10-17 – p.52/63

    View Slide

  53. 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 — 1 — 2022-10-17 – p.53/63

    View Slide

  54. 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 — 1 — 2022-10-17 – p.54/63

    View Slide

  55. Brownie
    Python Ethereum
    https://eth-brownie.readthedocs.io
    Brownie
    $ pip install eth-brownie
    version 1.19.1 (9/6 )
    B 2022 — 1 — 2022-10-17 – p.55/63

    View Slide

  56. $ brownie init
    ( ERC-20 )
    $ brownie bake token
    $ cd token
    B 2022 — 1 — 2022-10-17 – p.56/63

    View Slide

  57. 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 — 1 — 2022-10-17 – p.57/63

    View Slide

  58. Brownie
    $ brownie console
    Python
    >>> len(accounts)
    10
    >>> accounts[0].balance()
    100000000000000000000
    >>> quit()
    B 2022 — 1 — 2022-10-17 – p.58/63

    View Slide

  59. 3.
    Ethereum Görli
    B 2022 — 1 — 2022-10-17 – p.59/63

    View Slide

  60. 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 — 1 — 2022-10-17 – p.60/63

    View Slide


  61. 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 — 1 — 2022-10-17 – p.61/63

    View Slide


  62. 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 — 1 — 2022-10-17 – p.62/63

    View Slide

  63. B 2022 — 1 — 2022-10-17 – p.63/63

    View Slide