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

イーサリアム (Ethereum) 入門 / Introduction to Ethereum

イーサリアム (Ethereum) 入門 / Introduction to Ethereum

2018年7月11日(水)、ブロックチェーンハブ主催で開催されたブロックチェーンアカデミー「イーサリアム入門」(【ハンズオン】スマートコントラクトプログラミング (1)) にて使用したスライドです。

Kenji Saito
PRO

July 11, 2018
Tweet

More Decks by Kenji Saito

Other Decks in Technology

Transcript

  1. (Ethereum)
    (1)
    CSO / SFC
    ( https://speakerdeck.com/ks91 )
    [email protected]
    (Ethereum) — (1) — 2018-07-11 – p.1/39

    View Slide

  2. ( )
    CSO (Chief Science Officer)
    SFC ( )
    1993 ( )
    2006 ( )
    SFC 17
    P2P (Peer-to-Peer)
    2011
    → ( )
    (Ethereum) — (1) — 2018-07-11 – p.2/39

    View Slide

  3. (2017)
    : SF + +
    SF (2048 )
    2048
    (Ethereum) — (1) — 2018-07-11 – p.3/39

    View Slide

  4. 1.
    2.
    3.
    4.
    5.
    (Ethereum) — (1) — 2018-07-11 – p.4/39

    View Slide

  5. 1.
    (Ethereum) — (1) — 2018-07-11 – p.5/39

    View Slide

  6. ( )
    (1)
    (2)
    (3)
    (4) ( )
    state machine replication
    (Ethereum) — (1) — 2018-07-11 – p.6/39

    View Slide

  7. 1)
    2)
    3)


    ·
    / (dependable )
    (Ethereum) — (1) — 2018-07-11 – p.7/39

    View Slide

  8. /DLT
    ( )
    Bitcoin ( )
    Open Assets Protocol (OAP)
    ( )
    Ethereum ( ) ( )
    Enterprise Ethereum Alliance (↓ )
    (DLT) ( )
    Hyperledger (Linux Foundation)
    Fabric (IBM/DAH), Sawtooth (Intel), Iroha ( )
    Corda (R3), Tangle (IOTA),
    . . .
    , BBc-1 ( )
    (Ethereum) — (1) — 2018-07-11 – p.8/39

    View Slide

  9. /DLT
    ( )
    ( )
    ( vs. )
    ( )
    ( )
    ( )

    ( : BBc-1)
    DLT
    :
    :
    (Ethereum) — (1) — 2018-07-11 – p.9/39

    View Slide

  10. Vitalik Buterin, “Ethereum White Paper: A NEXT GENERATION SMART
    CONTRACT & DECENTRALIZED APPLICATION PLATFORM”
    15
    (Ethereum) — (1) — 2018-07-11 – p.10/39

    View Slide

  11. 2.
    macOS (High Sierra 10.13) + Homebrew
    Linux (Ubuntu 16.04)
    Windows 10 + Windows Subsystem for Linux
    geth, solidity populus
    (Ethereum) — (1) — 2018-07-11 – p.11/39

    View Slide

  12. geth
    GO
    https://github.com/ethereum/go-ethereum/wiki/Building-Ethereum #installation-instructions
    geth 1.8.12-stable (7/10 )
    $ geth -help
    (Ethereum) — (1) — 2018-07-11 – p.12/39

    View Slide

  13. Solidity
    http://solidity.readthedocs.io/en/latest/installing-solidity.html
    solc 0.4.24 (7/10 )
    $ solc --version
    (Ethereum) — (1) — 2018-07-11 – p.13/39

    View Slide

  14. Python3
    macOS
    $ brew install python3
    Linux
    $ sudo add-apt-repository ppa:deadsnakes/ppa
    $ sudo apt update
    $ sudo apt install python3.6 python3.6-dev python3.6-venv
    16.10 python3 apt
    (Ethereum) — (1) — 2018-07-11 – p.14/39

    View Slide

  15. Python (venv)
    macOS ‘python3.6’ ‘python3’
    $ python3.6 -m venv popenv
    $ source popenv/bin/activate
    (popenv) $ pip install -U pip
    (popenv) $ deactivate
    (Ethereum) — (1) — 2018-07-11 – p.15/39

    View Slide

  16. Populus
    Python
    http://populus.readthedocs.io/en/latest/quickstart.html
    Open SSL
    Populus
    $ pip install populus==2.1.0
    $ pip install -U web3==3.16.5
    $ pip install -U eth-utils==0.7.4
    version 2.1.0
    (Ethereum) — (1) — 2018-07-11 – p.16/39

    View Slide

  17. $ populus init
    contracts/Greeter.sol tests/test_greeter.py
    $ populus compile
    $ py.test .
    (Ethereum) — (1) — 2018-07-11 – p.17/39

    View Slide

  18. (1)
    http://beyond-blockchain.org/public/BcH-smart-contract-programming.zip
    Python (init.py, run.py, deploy.py)
    project.json genesis.json
    $ python init.py
    $ touch MyToken.sol
    (Ethereum) — (1) — 2018-07-11 – p.18/39

    View Slide

  19. (2)
    $ geth init genesis.json
    $ geth account new
    16
    (Ethereum) — (1) — 2018-07-11 – p.19/39

    View Slide

  20. “run.py”
    ‘--etherbase’ 0x
    ( run.py):
    http://beyond-blockchain.org/public/modified_run_py.zip
    $ python run.py
    $ tail -f geth.log
    process id kill
    (Ethereum) — (1) — 2018-07-11 – p.20/39

    View Slide

  21. DAG (Directed Acyclic Graph)
    Ether
    (Ethereum) — (1) — 2018-07-11 – p.21/39

    View Slide

  22. 3.
    (Ethereum) — (1) — 2018-07-11 – p.22/39

    View Slide

  23. (Ethereum) — (1) — 2018-07-11 – p.23/39

    View Slide

  24. . . .
    (Ethereum) — (1) — 2018-07-11 – p.24/39

    View Slide

  25. vs.
    (Ethereum) — (1) — 2018-07-11 – p.25/39

    View Slide

  26. = run
    (Ethereum) — (1) — 2018-07-11 – p.26/39

    View Slide

  27. Ether
    Ethereum
    EOA : Externally-Owned Account
    Ether EVM
    EVM
    (Ethereum) — (1) — 2018-07-11 – p.27/39

    View Slide

  28. EVM : Ethereum Virtual Machine
    Gas
    (Ethereum) — (1) — 2018-07-11 – p.28/39

    View Slide

  29. EVM
    :
    :
    Solidity — JavaScript
    LLL — Lisp
    (Ethereum) — (1) — 2018-07-11 – p.29/39

    View Slide

  30. Solidity ( )
    pragma solidity ˆ0.4.24;
    contract IndivisibleAsset { /* */
    string public _name;
    string public _symbol;
    uint256 public _quantity;
    address public _owner;
    constructor (string name, string symbol, uint256 quantity) public {
    _name = name;
    _symbol = symbol;
    _quantity = quantity;
    _owner = msg.sender;
    }
    function transfer(address to) external returns (bool) {
    require(_owner == msg.sender);
    _owner = to;
    return true;
    }
    }
    (Ethereum) — (1) — 2018-07-11 – p.30/39

    View Slide

  31. (Ethereum) — (1) — 2018-07-11 – p.31/39

    View Slide

  32. 4.
    (Ethereum) — (1) — 2018-07-11 – p.32/39

    View Slide

  33. ADEPT
    ADEPT : IBM IoT
    (Ethereum) — (1) — 2018-07-11 – p.33/39

    View Slide

  34. (Ethereum) — (1) — 2018-07-11 – p.34/39

    View Slide


  35. (Ethereum) — (1) — 2018-07-11 – p.35/39

    View Slide

  36. The DAO ( )
    The DAO
    Split ( ) 360 ETH (50∼60 ) (2016/6/17)
    ( )
    ( ; )
    (2016/7/20 )
    (Ethereum) — (1) — 2018-07-11 – p.36/39

    View Slide

  37. 5.
    (Ethereum) — (1) — 2018-07-11 – p.37/39

    View Slide

  38. Greeter.sol
    “deploy.py”
    __main__ Greeter
    0x
    &
    $ python deploy.py
    (Ethereum) — (1) — 2018-07-11 – p.38/39

    View Slide

  39. I
    : ERC20
    ∼ ∼
    (Ethereum) — (1) — 2018-07-11 – p.39/39

    View Slide