Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
サービスデザインプロジェクトB 第1回「ブロックチェーン概論」 / Overview of B...
Search
Kenji Saito
PRO
October 12, 2020
Technology
0
190
サービスデザインプロジェクトB 第1回「ブロックチェーン概論」 / Overview of Blockchain
2020年10月12日、慶應義塾大学大学院メディアデザイン研究科の「サービスデザインプロジェクトB (2020 秋)」第1回にて使用したスライドです。
Kenji Saito
PRO
October 12, 2020
Tweet
Share
More Decks by Kenji Saito
See All by Kenji Saito
スマートコントラクトデザイン / Smart Contract Design
ks91
PRO
0
6
FinTech 7-8 : Blockchain
ks91
PRO
0
70
スマートコントラクトプログラミング / Smart Contract Programming
ks91
PRO
0
19
AI が研究する時代に、人はどう育つのか? — GAMER PAT にみる "シリアスゲームとしての知的訓練" / In an era where AI conducts research, how will humans develop? — "Intellectual Training as a Serious Game" Seen in GAMER PAT
ks91
PRO
0
58
FinTech 5-6 : The World of Apps
ks91
PRO
0
110
生成AI による論文執筆サポート・ワークショップ ─ サーベイ/リサーチクエスチョン編 / Workshop on AI-Assisted Paper Writing Support: Survey/Research Question Edition
ks91
PRO
0
81
ブロックチェーン概論とインストール大会 / Introduction to Blockchain and Installation Workshop
ks91
PRO
0
10
FinTech 3-4 : Internet Technology and Governance
ks91
PRO
0
83
民主主義と博愛(Humanitarianism) / Democracy and Humanitarianism
ks91
PRO
0
18
Other Decks in Technology
See All in Technology
東京大学「Agile-X」のFPGA AIデザインハッカソンを制したソニーのAI最適化
sony
0
150
serverless team topology
_kensh
3
240
データとAIで明らかになる、私たちの課題 ~Snowflake MCP,Salesforce MCPに触れて~ / Data and AI Insights
kaonavi
0
120
re:Invent 2025の見どころと便利アイテムをご紹介 / Highlights and Useful Items for re:Invent 2025
yuj1osm
0
340
IBC 2025 動画技術関連レポート / IBC 2025 Report
cyberagentdevelopers
PRO
2
220
AWS re:Invent 2025事前勉強会資料 / AWS re:Invent 2025 pre study meetup
kinunori
0
790
プレイドのユニークな技術とインターンのリアル
plaidtech
PRO
1
490
ゼロコード計装導入後のカスタム計装でさらに可観測性を高めよう
sansantech
PRO
1
540
RemoteFunctionを使ったコロケーション
mkazutaka
1
140
知覚とデザイン
rinchoku
1
630
20251027_マルチエージェントとは
almondo_event
1
470
OpenCensusと歩んだ7年間
bgpat
0
180
Featured
See All Featured
Why Our Code Smells
bkeepers
PRO
340
57k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
31
2.7k
Making the Leap to Tech Lead
cromwellryan
135
9.6k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
36
6.1k
What's in a price? How to price your products and services
michaelherold
246
12k
The World Runs on Bad Software
bkeepers
PRO
72
11k
Fireside Chat
paigeccino
41
3.7k
Site-Speed That Sticks
csswizardry
13
930
Building Applications with DynamoDB
mza
96
6.7k
Balancing Empowerment & Direction
lara
5
700
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
12
1.2k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
21
1.2k
Transcript
B 2020 1 ( ) B 2020 — 1 —
2020-10-12 – p.1/56
https://speakerdeck.com/ks91 ( ) ( . . . ) Discord Discord
( / / ) Zoom URL ( ) B 2020 — 1 — 2020-10-12 – p.2/56
( ) SFC ( ) CSO (Chief Science Officer) 1993
( ) 2006 ( ) SFC 20 P2P (Peer-to-Peer) ( 9 ) 2011 2018 2019 2019 2020 2020 → ( ) B 2020 — 1 — 2020-10-12 – p.3/56
2020 9 60 (2020) : . . . ( )
. . . B 2020 — 1 — 2020-10-12 – p.4/56
. . . ( ) 2018 1 2 2018 OK
Google, Google ( ) Python (2020 ) ( ) ∈ Alexa, B 2020 — 1 — 2020-10-12 – p.5/56
Alexa, ত࣌ ੈلޙ ࣾձγεςϜ ࣾձڥ ػց ٕज़ ਓؒ ࣗಈγεςϜ ྩ࣌
ੈلલ ిؾ͚ͭͯ ͍ ͍ ిؾ͚ͭͯ ͜ͷ݅ͷͱ͖ ٕज़Ͱ͋Γࣾձڥˠࣗવڥ ਓ ⇒ ( ) B 2020 — 1 — 2020-10-12 – p.6/56
Python 3 Ethereum B 2020 — 1 — 2020-10-12 –
p.7/56
B 2020 — 1 — 2020-10-12 – p.8/56
(1/2) — World Wide Web SARS-CoV-2 COVID-19 2020 1990 World
Wide Web End-to-End ( ) ( ) ( ) End-to-End ( ) 2008 B 2020 — 1 — 2020-10-12 – p.9/56
(2/2) — 2020 ( ) B 2020 — 1 —
2020-10-12 – p.10/56
← Python Flask (Python ) Ethereum Brownie (Python Ethereum )
BBc-1 ( ) B 2020 — 1 — 2020-10-12 – p.11/56
( 2 ) ( ) Discord ( ) ( :
) . . . : ( ) : DApp ( ) B 2020 — 1 — 2020-10-12 – p.12/56
( ) 25% 25% 20% 30% ( ) B 2020
— 1 — 2020-10-12 – p.13/56
( ) 1 10 12 • 2 10 19 3
10 26 1 4 11 2 2 5 11 9 1 6 11 16 2 7 11 30 8 12 7 B 2020 — 1 — 2020-10-12 – p.14/56
1. 2. Ethereum 3. B 2020 — 1 — 2020-10-12
– p.15/56
1. B 2020 — 1 — 2020-10-12 – p.16/56
( ) ( ) ( ) (BP : Blockchain Property
) BP-1 : BP-2 : BP-3 : ( ) ( ) B 2020 — 1 — 2020-10-12 – p.17/56
( ) (LIFO : Last In, First Out) ( )
B 2020 — 1 — 2020-10-12 – p.18/56
( ) ( ) ( ) ( ) ( 16
) SHA (Secure Hash Algorithm) ( ) 1bit B 2020 — 1 — 2020-10-12 – p.19/56
( ) ( ) < , > ( ) ←
: < , > : : < , , > : OK ( 1 ) NG ( ) B 2020 — 1 — 2020-10-12 – p.20/56
BP-1 ( ), BP-2 ( ) BBc-1 f : →
BP-3 ( ) ( ) ( ) ← BP-2 ← BP-3 ( ) ← BP-3 + ← BP-{1,2} B 2020 — 1 — 2020-10-12 – p.21/56
[Lamport 1984][Schneider 1990] (1) (2) (3) (4) ( ) ←
↑ B 2020 — 1 — 2020-10-12 – p.22/56
TX : transaction ( 4 TX ) SMRP (State Machine
Replication Problem) SMRP-1 ( ) SMRP-2 : B 2020 — 1 — 2020-10-12 – p.23/56
( ) ( ) ϒϩοΫ൪߸O ϒϩοΫ൪߸O ϒϩοΫ൪߸O ϒϩοΫ൪߸O
ϒϩοΫ൪߸O ϒϩοΫ൪߸O ϒϩοΫ൪߸O ϒϩοΫ൪߸O ͍ͪΜهɾॻ͖͑ͷίετ͕ߴ͍ྺ࢙ ࠷վ͟Μ͠ʹ͍͘ྺ࢙ ͕༗ޮ ͻͱͭखલͷϒϩοΫͷ ʮμΠδΣετʯ σδλϧॺ໊͞Εͨ ʮτϥϯβΫγϣϯ औҾ ʯ ϒϩοΫΛ࡞ΔͨΊʹɺͦͷʮμΠδΣετʯ͕͋ΔҎԼͱ͍͏݅Λຬͨͨ͠Γ 1SPPGPG8PSL Ծ௨՟ͷ࣋ͪʹԠͨ͡ݖརΛͬͨථͰউͬͨΓ 1SPPGPG4UBLF ͢Δඞཁ͕͋Δ ίετ͕͔͔Δ ϒϩοΫΛ࡞ΔਓͦͷதʹࣗʹѼͯͨ Ծ௨՟ͰͷใुΛॻ͖ࠐΉ͜ͱ͕Ͱ͖ɺ ͦͷϒϩοΫ͕༗ޮͳྺ࢙ͷதʹ͋Δ߹ʹ ݶΓใु༗ޮͱͳΔ τϥϯβΫγϣϯͷଘࡏΛ֬ೝ͢Δ ͨΊͷޮతͳํ๏͕ఏڙ͞ΕΔ ਖ਼ੑ ଘࡏੑ །Ұੑ Proof of Work ( ) . . . → B 2020 — 1 — 2020-10-12 – p.24/56
(BP-3 ) ( : ) (BP-3 ) ( : )
BP-{1,2,3} BP-{1, 2} ⇒ B 2020 — 1 — 2020-10-12 – p.25/56
(Confidentiality) BP-{1,2,3} ↑ ( = ) (Integrity) BP-3 (Availability) BP-2
B 2020 — 1 — 2020-10-12 – p.26/56
2009 ↑ 11 B 2020 — 1 — 2020-10-12 –
p.27/56
( ) ADR (Active (space) Debris Removal) : https://doi.org/10.1109/TCSS.2018.2890655 (1930
) ( ) B 2020 — 1 — 2020-10-12 – p.28/56
( ) ( ) ( ) B 2020 — 1
— 2020-10-12 – p.29/56
( ) ( - ) : https://doi.org/10.1016/j.future.2019.05.019 B 2020 —
1 — 2020-10-12 – p.30/56
( ) ( ) ( ) B 2020 — 1
— 2020-10-12 – p.31/56
( ) B 2020 — 1 — 2020-10-12 – p.32/56
/ ( ) ( ) ( ) ( ) B
2020 — 1 — 2020-10-12 – p.33/56
( ) ( ) ( ) B 2020 — 1
— 2020-10-12 – p.34/56
( ) B 2020 — 1 — 2020-10-12 – p.35/56
( ) ( ) B 2020 — 1 — 2020-10-12
– p.36/56
B 2020 — 1 — 2020-10-12 – p.37/56
with ( ) ( ) ( ) B 2020 —
1 — 2020-10-12 – p.38/56
DNS IP AS B 2020 — 1 — 2020-10-12 –
p.39/56
( ) ( ) (web ) B 2020 — 1
— 2020-10-12 – p.40/56
( ) ( ) ( ) ( ) ( )
( ) B 2020 — 1 — 2020-10-12 – p.41/56
( ) ( ) 3D B 2020 — 1 —
2020-10-12 – p.42/56
2. Ethereum macOS (Catalina 10.15.7) + Homebrew Linux (Ubuntu 18.04)
Windows 10 + Windows Subsystem for Linux (Ubuntu 18.04 ) Ethereum solidity brownie B 2020 — 1 — 2020-10-12 – p.43/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 — 1 — 2020-10-12 – p.44/56
Python3 macOS $ brew install python3 Linux $ sudo add-apt-repository
ppa:deadsnakes/ppa $ sudo apt update $ sudo apt install python3.7 python3.7-dev python3.7-venv python3.7-tk 16.10 python3(.7) apt python3.8 B 2020 — 1 — 2020-10-12 – p.45/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 — 1 — 2020-10-12 – p.46/56
Python (venv) macOS ‘python3.7’ ‘python3’ $ python3.7 -m venv bbc1env
$ source bbc1env/bin/activate (bbc1env) $ pip install -U pip (bbc1env) $ pip install wheel bbc1env ( BBc-1 ) ( ) (bbc1env) $ deactivate B 2020 — 1 — 2020-10-12 – p.47/56
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 2020 — 1 — 2020-10-12 – p.48/56
Brownie Python Ethereum https://eth-brownie.readthedocs.io Brownie $ pip install eth-brownie version
1.8.4 (5/13 ) B 2020 — 1 — 2020-10-12 – p.49/56
$ brownie init ( ERC-20 ) $ brownie bake token
$ cd token ( ) $ brownie compile ( ) $ pytest tests B 2020 — 1 — 2020-10-12 – p.50/56
Brownie $ brownie console Python >>> len(accounts) 10 >>> accounts[0].balance()
100000000000000000000 >>> quit() B 2020 — 1 — 2020-10-12 – p.51/56
3. Ethereum ropsten B 2020 — 1 — 2020-10-12 –
p.52/56
infura.io Brownie https://infura.io SIGN UP PROJECT ID infura Ethereum API
infura . . . infura.io PROJECT ID Brownie “brownie-config.yaml” . . . YAML WEB3_INFURA_PROJECT_ID PROJECT ID (∼/.bash_profile ) $ export WEB3_INFURA_PROJECT_ID= PROJECT ID B 2020 — 1 — 2020-10-12 – p.53/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 Ethereum Faucet 1.0ETH https://faucet.ropsten.be ( ) https://metamask.io/ B 2020 — 1 — 2020-10-12 – p.54/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() B 2020 — 1 — 2020-10-12 – p.55/56
B 2020 — 1 — 2020-10-12 – p.56/56