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
マニフェスト: 人類の知のフロンティアに向けた拡張的足場へ / Manifesto: Toward Expansive Scaffolding for Humanity's Knowledge Frontier
ks91
PRO
0
8
続・スマートコントラクトと分散ファイナンス / Smart Contracts and Decentralized Finance, Continued
ks91
PRO
0
42
スマートコントラクトと分散ファイナンス / Smart Contracts and Decentralized Finance
ks91
PRO
0
63
シン・ブロックチェーン / Truth of Blockchain
ks91
PRO
0
92
パスワード/パスフレーズと認証 / Password, Passphrase and Authentication
ks91
PRO
0
37
git と GitHub / git and GitHub
ks91
PRO
0
35
ソフトウェアの開発と保守 / Software Development and Maintenance
ks91
PRO
0
50
インターネットの特徴 / Features of the Internet
ks91
PRO
0
34
インターネットのガバナンス / Governance of the Internet
ks91
PRO
0
30
Other Decks in Technology
See All in Technology
United Airlines Customer Service– Call 1-833-341-3142 Now!
airhelp
0
170
Should Our Project Join the CNCF? (Japanese Recap)
whywaita
PRO
0
340
Lazy application authentication with Tailscale
bluehatbrit
0
210
AWS Organizations 新機能!マルチパーティ承認の紹介
yhana
1
280
マーケットプレイス版Oracle WebCenter Content For OCI
oracle4engineer
PRO
3
960
LLM時代の検索
shibuiwilliam
2
150
「クラウドコスト絶対削減」を支える技術—FinOpsを超えた徹底的なクラウドコスト削減の実践論
delta_tech
4
170
american airlines®️ USA Contact Numbers: Complete 2025 Support Guide
supportflight
1
110
Getting to Know Your Legacy (System) with AI-Driven Software Archeology (WeAreDevelopers World Congress 2025)
feststelltaste
1
130
fukabori.fm 出張版: 売上高617億円と高稼働率を陰で支えた社内ツール開発のあれこれ話 / 20250704 Yoshimasa Iwase & Tomoo Morikawa
shift_evolve
PRO
2
7.7k
KubeCon + CloudNativeCon Japan 2025 Recap
ren510dev
1
380
OSSのSNSツール「Misskey」をさわってみよう(右下ワイプで私のOSCの20年を振り返ります) / 20250705-osc2025-do
akkiesoft
0
170
Featured
See All Featured
4 Signs Your Business is Dying
shpigford
184
22k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
53k
Adopting Sorbet at Scale
ufuk
77
9.5k
Done Done
chrislema
184
16k
Side Projects
sachag
455
42k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
331
22k
Building Adaptive Systems
keathley
43
2.7k
Site-Speed That Sticks
csswizardry
10
690
Fashionably flexible responsive web design (full day workshop)
malarkey
407
66k
Optimizing for Happiness
mojombo
379
70k
The Power of CSS Pseudo Elements
geoffreycrofte
77
5.9k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
32
2.4k
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