Lock in $30 Savings on PRO—Offer Ends Soon! ⏳
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
サービスデザインプロジェクトB 第2回「ブロックチェーン概論とインストール大会」 / Over...
Search
Kenji Saito
PRO
October 19, 2020
Technology
1
170
サービスデザインプロジェクトB 第2回「ブロックチェーン概論とインストール大会」 / Overview of Blockchain and Installation
2020年10月19日、慶應義塾大学大学院メディアデザイン研究科の「サービスデザインプロジェクトB (2020 秋)」第2回にて使用したスライドです。
Kenji Saito
PRO
October 19, 2020
Tweet
Share
More Decks by Kenji Saito
See All by Kenji Saito
成果 / Achievements
ks91
PRO
0
6
意思決定 / Decision-Making
ks91
PRO
0
10
ファンディングとデジタル市民社会 / Funding and Digital Civil Society
ks91
PRO
0
15
生成AI による論文執筆サポート・ワークショップ 論文執筆・推敲編 / Generative AI-Assisted Paper Writing Support Workshop: Drafting and Revision Edition
ks91
PRO
0
27
私たちの前提は揺るがないのか / Are Our Premises Unshakeable?
ks91
PRO
0
22
貨幣無き世界への過程 / The Process Towards a World without Money
ks91
PRO
0
10
ファンディング / Funding
ks91
PRO
0
8
デジタル市民社会 / Digital Civil Society
ks91
PRO
0
11
発表と総括 / Presentations and Summary
ks91
PRO
0
6
Other Decks in Technology
See All in Technology
[デモです] NotebookLM で作ったスライドの例
kongmingstrap
0
140
乗りこなせAI駆動開発の波
eltociear
1
1.1k
2025年 開発生産「可能」性向上報告 サイロ解消からチームが能動性を獲得するまで/ 20251216 Naoki Takahashi
shift_evolve
PRO
1
120
プロンプトやエージェントを自動的に作る方法
shibuiwilliam
5
4.1k
CARTAのAI CoE が挑む「事業を進化させる AI エンジニアリング」 / carta ai coe evolution business ai engineering
carta_engineering
0
1.3k
Databricks向けJupyter Kernelでデータサイエンティストの開発環境をAI-Readyにする / Data+AI World Tour Tokyo After Party
genda
1
120
技術以外の世界に『越境』しエンジニアとして進化を遂げる 〜Kotlinへの愛とDevHRとしての挑戦を添えて〜
subroh0508
1
450
「Managed Instances」と「durable functions」で広がるAWS Lambdaのユースケース
lamaglama39
0
310
Power of Kiro : あなたの㌔はパワステ搭載ですか?
r3_yamauchi
PRO
0
120
LLM-Readyなデータ基盤を高速に構築するためのアジャイルデータモデリングの実例
kashira
0
250
IAMユーザーゼロの運用は果たして可能なのか
yama3133
1
120
コンテキスト情報を活用し個社最適化されたAI Agentを実現する4つのポイント
kworkdev
PRO
0
1.1k
Featured
See All Featured
Statistics for Hackers
jakevdp
799
230k
GraphQLとの向き合い方2022年版
quramy
50
14k
Large-scale JavaScript Application Architecture
addyosmani
515
110k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
122
21k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
26
3.2k
KATA
mclloyd
PRO
32
15k
Code Reviewing Like a Champion
maltzj
527
40k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
659
61k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
162
16k
Designing for Performance
lara
610
69k
Navigating Team Friction
lara
191
16k
Building an army of robots
kneath
306
46k
Transcript
B 2020 2 ( ) B 2020 — 2 —
2020-10-19 – p.1/56
https://speakerdeck.com/ks91 Discord Discord ( / / ) Zoom URL (
) B 2020 — 2 — 2020-10-19 – p.2/56
( ) 1 10 12 • 2 10 19 •
3 10 26 4 11 2 5 11 9 1 6 11 16 2 7 11 30 8 12 7 B 2020 — 2 — 2020-10-19 – p.3/56
– : : Ethereum ( ) ( ) Ethereum B
2020 — 2 — 2020-10-19 – p.4/56
– B 2020 — 2 — 2020-10-19 – p.5/56
( ) ( ) ( ) (BP : Blockchain Property
) BP-1 : BP-2 : BP-3 : ( ) ( ) B 2020 — 2 — 2020-10-19 – p.6/56
( ) (LIFO : Last In, First Out) ( )
B 2020 — 2 — 2020-10-19 – p.7/56
( ) ( ) ( ) ( ) ( 16
) SHA (Secure Hash Algorithm) ( ) 1bit B 2020 — 2 — 2020-10-19 – p.8/56
( ) ( ) < , > ( ) ←
: < , > : : < , , > : OK ( 1 ) NG ( ) B 2020 — 2 — 2020-10-19 – p.9/56
BP-1 ( ), BP-2 ( ) BBc-1 f : →
BP-3 ( ) ( ) ( ) ← BP-2 ← BP-3 ( ) ← BP-3 + ← BP-{1,2} B 2020 — 2 — 2020-10-19 – p.10/56
[Lamport 1984][Schneider 1990] (1) (2) (3) (4) ( ) ←
↑ B 2020 — 2 — 2020-10-19 – p.11/56
TX : transaction ( 4 TX ) SMRP (State Machine
Replication Problem) SMRP-1 ( ) SMRP-2 : B 2020 — 2 — 2020-10-19 – p.12/56
( ) ( ) ϒϩοΫ൪߸O ϒϩοΫ൪߸O ϒϩοΫ൪߸O ϒϩοΫ൪߸O
ϒϩοΫ൪߸O ϒϩοΫ൪߸O ϒϩοΫ൪߸O ϒϩοΫ൪߸O ͍ͪΜهɾॻ͖͑ͷίετ͕ߴ͍ྺ࢙ ࠷վ͟Μ͠ʹ͍͘ྺ࢙ ͕༗ޮ ͻͱͭखલͷϒϩοΫͷ ʮμΠδΣετʯ σδλϧॺ໊͞Εͨ ʮτϥϯβΫγϣϯ औҾ ʯ ϒϩοΫΛ࡞ΔͨΊʹɺͦͷʮμΠδΣετʯ͕͋ΔҎԼͱ͍͏݅Λຬͨͨ͠Γ 1SPPGPG8PSL Ծ௨՟ͷ࣋ͪʹԠͨ͡ݖརΛͬͨථͰউͬͨΓ 1SPPGPG4UBLF ͢Δඞཁ͕͋Δ ίετ͕͔͔Δ ϒϩοΫΛ࡞ΔਓͦͷதʹࣗʹѼͯͨ Ծ௨՟ͰͷใुΛॻ͖ࠐΉ͜ͱ͕Ͱ͖ɺ ͦͷϒϩοΫ͕༗ޮͳྺ࢙ͷதʹ͋Δ߹ʹ ݶΓใु༗ޮͱͳΔ τϥϯβΫγϣϯͷଘࡏΛ֬ೝ͢Δ ͨΊͷޮతͳํ๏͕ఏڙ͞ΕΔ ਖ਼ੑ ଘࡏੑ །Ұੑ Proof of Work ( ) . . . → B 2020 — 2 — 2020-10-19 – p.13/56
(BP-3 ) ( : ) (BP-3 ) ( : )
BP-{1,2,3} BP-{1, 2} ⇒ B 2020 — 2 — 2020-10-19 – p.14/56
(Confidentiality) BP-{1,2,3} ↑ ( = ) (Integrity) BP-3 (Availability) BP-2
B 2020 — 2 — 2020-10-19 – p.15/56
: 2009 ↑ 11 B 2020 — 2 — 2020-10-19
– p.16/56
( ) ADR (Active (space) Debris Removal) : https://doi.org/10.1109/TCSS.2018.2890655 (1930
) ( ) B 2020 — 2 — 2020-10-19 – p.17/56
( ) ( ) ( ) B 2020 — 2
— 2020-10-19 – p.18/56
( ) ( - ) : https://doi.org/10.1016/j.future.2019.05.019 B 2020 —
2 — 2020-10-19 – p.19/56
( ) ( ) ( ) B 2020 — 2
— 2020-10-19 – p.20/56
( ) B 2020 — 2 — 2020-10-19 – p.21/56
/ ( ) ( ) ( ) ( ) B
2020 — 2 — 2020-10-19 – p.22/56
( ) ( ) ( ) B 2020 — 2
— 2020-10-19 – p.23/56
( ) B 2020 — 2 — 2020-10-19 – p.24/56
( ) ( ) B 2020 — 2 — 2020-10-19
– p.25/56
B 2020 — 2 — 2020-10-19 – p.26/56
with ( ) ( ) ( ) B 2020 —
2 — 2020-10-19 – p.27/56
DNS IP AS B 2020 — 2 — 2020-10-19 –
p.28/56
( ) ( ) (web ) B 2020 — 2
— 2020-10-19 – p.29/56
( ) ( ) ( ) ( ) ( )
( ) B 2020 — 2 — 2020-10-19 – p.30/56
( ) ( ) 3D B 2020 — 2 —
2020-10-19 – p.31/56
: Ethereum macOS (Catalina 10.15.7) + Homebrew Homebrew Linux (Ubuntu
18.04) Windows 10 + Windows Subsystem for Linux (Ubuntu 18.04 ) WSL Ethereum solidity brownie B 2020 — 2 — 2020-10-19 – p.32/56
Solidity Ethereum http://solidity.readthedocs.io/en/latest/installing-solidity.html Linux (on Windows) “sudo apt”, macOS “brew”
solc 0.7.3 (10/10 ) $ solc --version brownie py-solc-x solc (dependencies) ( solc py-solc-x ) B 2020 — 2 — 2020-10-19 – p.33/56
Python3 macOS $ brew install python3 Linux $ sudo add-apt-repository
ppa:deadsnakes/ppa $ sudo apt update $ sudo apt install python3.8 python3.8-dev python3.8-venv python3.8-tk 16.10 python3(.8) apt B 2020 — 2 — 2020-10-19 – p.34/56
macOS : . . . macOS wget brew dyld: Library
not loaded: /usr/local/opt/gettext/lib/libintl.8.dylib $ brew uninstall --force gettext $ brew install gettext B 2020 — 2 — 2020-10-19 – p.35/56
Python (venv) macOS ‘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 2020 — 2 — 2020-10-19 – p.36/56
Ganache CLI Ethereum RPC CLI : Command Line Interface 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 2020 — 2 — 2020-10-19 – p.37/56
Brownie Python Ethereum https://eth-brownie.readthedocs.io Brownie $ pip install eth-brownie version
1.11.8 (10/10 ) B 2020 — 2 — 2020-10-19 – p.38/56
$ brownie init ( ERC-20 ) $ brownie bake token
$ cd token ( ) $ brownie compile ( ) $ pytest tests B 2020 — 2 — 2020-10-19 – p.39/56
Brownie $ brownie console Python >>> len(accounts) 10 >>> accounts[0].balance()
100000000000000000000 >>> quit() B 2020 — 2 — 2020-10-19 – p.40/56
( ) Ethereum ropsten B 2020 — 2 — 2020-10-19
– p.41/56
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 2020 — 2 — 2020-10-19 – p.42/56
ropsten ETH brownie console ropsten >>> network.disconnect() >>> network.connect(’ropsten’) >>>
len(accounts) 0 >>> accounts.add() <LocalAccount object ’ 16 ’> >>> accounts[0].private_key 16 >>> quit() Ropsten Testnet ETH Faucet 5.0ETH https://faucet.dimensions.network/ ( ) https://metamask.io/ B 2020 — 2 — 2020-10-19 – p.43/56
ropsten ETH brownie console ropsten ETH >>> network.disconnect() >>> network.connect(’ropsten’)
>>> len(accounts) 0 >>> accounts.add( 16 ) <LocalAccount object ’ 16 ’> >>> accounts[0].balace() ETH >>> quit() ETH >>> accounts[0].transfer(accounts[1], "1 ether") B 2020 — 2 — 2020-10-19 – p.44/56
Ethereum B 2020 — 2 — 2020-10-19 – p.45/56
Ethereum Vitalik Buterin, “Ethereum White Paper: A NEXT GENERATION SMART
CONTRACT & DECENTRALIZED APPLICATION PLATFORM” 15 (= ) = ⇒ → Dapps ( / / ) B 2020 — 2 — 2020-10-19 – p.46/56
B 2020 — 2 — 2020-10-19 – p.47/56
. . . B 2020 — 2 — 2020-10-19 –
p.48/56
vs. B 2020 — 2 — 2020-10-19 – p.49/56
= run B 2020 — 2 — 2020-10-19 – p.50/56
Ether Ethereum EOA : Externally-Owned Account ( ) Ether EVM
EVM B 2020 — 2 — 2020-10-19 – p.51/56
EVM : Ethereum Virtual Machine Gas B 2020 — 2
— 2020-10-19 – p.52/56
EVM : : Solidity — JavaScript LLL — Lisp Vyper
— Python B 2020 — 2 — 2020-10-19 – p.53/56
Solidity ( ) pragma solidityˆ0.5.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 2020 — 2 — 2020-10-19 – p.54/56
Ethereum B 2020 — 2 — 2020-10-19 – p.55/56
B 2020 — 2 — 2020-10-19 – p.56/56