2018年7月11日(水)、ブロックチェーンハブ主催で開催されたブロックチェーンアカデミー「イーサリアム入門」(【ハンズオン】スマートコントラクトプログラミング (1)) にて使用したスライドです。
(Ethereum)(1)CSO / SFC( https://speakerdeck.com/ks91 )[email protected](Ethereum) — (1) — 2018-07-11 – p.1/39
View Slide
( )CSO (Chief Science Officer)SFC ( )1993 ( )2006 ( )SFC 17P2P (Peer-to-Peer)2011→ ( )(Ethereum) — (1) — 2018-07-11 – p.2/39
(2017): SF + +SF (2048 )2048(Ethereum) — (1) — 2018-07-11 – p.3/39
1.2.3.4.5.(Ethereum) — (1) — 2018-07-11 – p.4/39
1.(Ethereum) — (1) — 2018-07-11 – p.5/39
( )(1)(2)(3)(4) ( )state machine replication(Ethereum) — (1) — 2018-07-11 – p.6/39
1)2)3)⇒⇒·/ (dependable )(Ethereum) — (1) — 2018-07-11 – p.7/39
/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
/DLT( )( )( vs. )( )( )( )⇒( : BBc-1)DLT::(Ethereum) — (1) — 2018-07-11 – p.9/39
Vitalik Buterin, “Ethereum White Paper: A NEXT GENERATION SMARTCONTRACT & DECENTRALIZED APPLICATION PLATFORM”15(Ethereum) — (1) — 2018-07-11 – p.10/39
2.macOS (High Sierra 10.13) + HomebrewLinux (Ubuntu 16.04)Windows 10 + Windows Subsystem for Linuxgeth, solidity populus(Ethereum) — (1) — 2018-07-11 – p.11/39
gethGOhttps://github.com/ethereum/go-ethereum/wiki/Building-Ethereum #installation-instructionsgeth 1.8.12-stable (7/10 )$ geth -help(Ethereum) — (1) — 2018-07-11 – p.12/39
Solidityhttp://solidity.readthedocs.io/en/latest/installing-solidity.htmlsolc 0.4.24 (7/10 )$ solc --version(Ethereum) — (1) — 2018-07-11 – p.13/39
Python3macOS$ brew install python3Linux$ sudo add-apt-repository ppa:deadsnakes/ppa$ sudo apt update$ sudo apt install python3.6 python3.6-dev python3.6-venv16.10 python3 apt(Ethereum) — (1) — 2018-07-11 – p.14/39
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
PopulusPythonhttp://populus.readthedocs.io/en/latest/quickstart.htmlOpen SSLPopulus$ pip install populus==2.1.0$ pip install -U web3==3.16.5$ pip install -U eth-utils==0.7.4version 2.1.0(Ethereum) — (1) — 2018-07-11 – p.16/39
$ populus initcontracts/Greeter.sol tests/test_greeter.py$ populus compile$ py.test .(Ethereum) — (1) — 2018-07-11 – p.17/39
(1)http://beyond-blockchain.org/public/BcH-smart-contract-programming.zipPython (init.py, run.py, deploy.py)project.json genesis.json$ python init.py$ touch MyToken.sol(Ethereum) — (1) — 2018-07-11 – p.18/39
(2)$ geth init genesis.json$ geth account new16(Ethereum) — (1) — 2018-07-11 – p.19/39
“run.py”‘--etherbase’ 0x( run.py):http://beyond-blockchain.org/public/modified_run_py.zip$ python run.py$ tail -f geth.logprocess id kill(Ethereum) — (1) — 2018-07-11 – p.20/39
DAG (Directed Acyclic Graph)Ether(Ethereum) — (1) — 2018-07-11 – p.21/39
3.(Ethereum) — (1) — 2018-07-11 – p.22/39
(Ethereum) — (1) — 2018-07-11 – p.23/39
. . .(Ethereum) — (1) — 2018-07-11 – p.24/39
vs.(Ethereum) — (1) — 2018-07-11 – p.25/39
= run(Ethereum) — (1) — 2018-07-11 – p.26/39
EtherEthereumEOA : Externally-Owned AccountEther EVMEVM(Ethereum) — (1) — 2018-07-11 – p.27/39
EVM : Ethereum Virtual MachineGas(Ethereum) — (1) — 2018-07-11 – p.28/39
EVM::Solidity — JavaScriptLLL — Lisp(Ethereum) — (1) — 2018-07-11 – p.29/39
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
(Ethereum) — (1) — 2018-07-11 – p.31/39
4.(Ethereum) — (1) — 2018-07-11 – p.32/39
ADEPTADEPT : IBM IoT(Ethereum) — (1) — 2018-07-11 – p.33/39
(Ethereum) — (1) — 2018-07-11 – p.34/39
⇒(Ethereum) — (1) — 2018-07-11 – p.35/39
The DAO ( )The DAOSplit ( ) 360 ETH (50∼60 ) (2016/6/17)( )( ; )(2016/7/20 )(Ethereum) — (1) — 2018-07-11 – p.36/39
5.(Ethereum) — (1) — 2018-07-11 – p.37/39
Greeter.sol“deploy.py”__main__ Greeter0x&$ python deploy.py(Ethereum) — (1) — 2018-07-11 – p.38/39
I: ERC20∼ ∼(Ethereum) — (1) — 2018-07-11 – p.39/39