Upgrade to PRO for Only $50/Year—Limited-Time Offer! 🔥
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Overview of Blockchain and Installation
Search
Kenji Saito
PRO
October 24, 2022
Technology
0
110
Overview of Blockchain and Installation
2022年10月24日(月)、慶應義塾大学大学院メディアデザイン研究科「サービスデザインプロジェクト B」2022秋で使用したスライドです。
Kenji Saito
PRO
October 24, 2022
Tweet
Share
More Decks by Kenji Saito
See All by Kenji Saito
成果と意思決定 / Performance and Making Decisions
ks91
PRO
0
22
ボランティア / Volunteers
ks91
PRO
0
12
理事会 / Board of Directors
ks91
PRO
0
11
成果 / Achievements
ks91
PRO
0
19
意思決定 / Decision-Making
ks91
PRO
0
20
ファンディングとデジタル市民社会 / Funding and Digital Civil Society
ks91
PRO
0
23
生成AI による論文執筆サポート・ワークショップ 論文執筆・推敲編 / Generative AI-Assisted Paper Writing Support Workshop: Drafting and Revision Edition
ks91
PRO
0
44
私たちの前提は揺るがないのか / Are Our Premises Unshakeable?
ks91
PRO
0
27
貨幣無き世界への過程 / The Process Towards a World without Money
ks91
PRO
0
14
Other Decks in Technology
See All in Technology
JEDAI認定プログラム JEDAI Order 2026 エントリーのご案内 / JEDAI Order 2026 Entry
databricksjapan
0
180
【開発を止めるな】機能追加と並行して進めるアーキテクチャ改善/Keep Shipping: Architecture Improvements Without Pausing Dev
bitkey
PRO
1
120
AgentCoreとStrandsで社内d払いナレッジボットを作った話
motojimayu
1
870
AgentCore BrowserとClaude Codeスキルを活用した 『初手AI』を実現する業務自動化AIエージェント基盤
ruzia
7
1.4k
フィッシュボウルのやり方 / How to do a fishbowl
pauli
2
370
Strands Agents × インタリーブ思考 で変わるAIエージェント設計 / Strands Agents x Interleaved Thinking AI Agents
takanorig
4
2k
Bedrock AgentCore Evaluationsで学ぶLLM as a judge入門
shichijoyuhi
2
240
20251219 OpenIDファウンデーション・ジャパン紹介 / OpenID Foundation Japan Intro
oidfj
0
490
Strands AgentsとNova 2 SonicでS2Sを実践してみた
yama3133
1
1.8k
New Relic 1 年生の振り返りと Cloud Cost Intelligence について #NRUG
play_inc
0
220
Knowledge Work の AI Backend
kworkdev
PRO
0
210
AWSインフルエンサーへの道 / load of AWS Influencer
whisaiyo
0
210
Featured
See All Featured
Leading Effective Engineering Teams in the AI Era
addyosmani
9
1.4k
The agentic SEO stack - context over prompts
schlessera
0
560
For a Future-Friendly Web
brad_frost
180
10k
Building the Perfect Custom Keyboard
takai
1
660
Docker and Python
trallard
47
3.7k
GitHub's CSS Performance
jonrohan
1032
470k
Why Our Code Smells
bkeepers
PRO
340
57k
Claude Code のすすめ
schroneko
65
200k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
16
1.8k
The World Runs on Bad Software
bkeepers
PRO
72
12k
AI Search: Implications for SEO and How to Move Forward - #ShenzhenSEOConference
aleyda
1
1k
Building a Modern Day E-commerce SEO Strategy
aleyda
45
8.4k
Transcript
Service Design, generated by Stable Diffusion B 2022 2 (
) B 2022 — 2 — 2022-10-24 – p.1/60
https://speakerdeck.com/ks91 ( ) ( ) Discord Discord ( / /
) Zoom URL ( ) B 2022 — 2 — 2022-10-24 – p.2/60
( ) 1 10 17 • 2 10 24 •
3 10 31 4 11 7 2 5 11 14 1 6 11 21 2 7 11 28 8 12 5 Discord B 2022 — 2 — 2022-10-24 – p.3/60
– : : Ethereum ( ) ( ) Ethereum B
2022 — 2 — 2022-10-24 – p.4/60
– B 2022 — 2 — 2022-10-24 – p.5/60
ެ։ா ެ։Ͱͳ͚ΕͳΒͳ͍ ʜ ຊਓ ɾૹۚه ɾίʔυ ɾσʔλͷมԽ ɾ࣮ߦϩά ݕӾͰ͖Δୈࡾऀ ͜Εɺ
ه͍ͨ͠Μ͚ͩͲ ͋ͳͨ ॻ͍ͨΒμϝ ͜ͷ༰ ॻ͍ͨΒμϝ ॻ͍ͪΌͬͨͷʁ ͜͏ॻ͖͑·͠ΐ͏ ॻ͍ͯͳ͍ͷʁ ͜͏ॻ͔Εͨ͜ͱʹ ͠·͠ΐ͏ ॻ͍ͪΌͬͨͷʁ ফ͠·͠ΐ͏ %P4 ߈ܸͱ͔Ͱ ͯ͠ࢭΊ·͠ΐ͏ B 2022 — 2 — 2022-10-24 – p.6/60
( ) ( ) ( ) ↓ ( ( ))
(BP : Blockchain Property ) BP-1 : ( ) BP-2 : ( ( ) ) BP-3 : ( ) ( ) ( ) B 2022 — 2 — 2022-10-24 – p.7/60
( ) (LIFO : Last In, First Out) ( )
B 2022 — 2 — 2022-10-24 – p.8/60
( ) ( ) ( ) ( ) ( 16
) SHA (Secure Hash Algorithm) ( ) 1bit B 2022 — 2 — 2022-10-24 – p.9/60
( ) ( ) < , > ( ) ←
: < , > : : < , , > : OK ( 1 ) NG ( ) B 2022 — 2 — 2022-10-24 – p.10/60
BP-1 ( ), BP-2 ( ) BBc-1 f : →
BP-3 ( ) ( ) ( ) ← BP-2 ← BP-3 ( ) (BP-2 ) ( ) ← BP-3 (?) + ← BP-{1,2} B 2022 — 2 — 2022-10-24 – p.11/60
[Lamport 1984][Schneider 1990] (1) (2) (3) (4) ( ) ←
↑ B 2022 — 2 — 2022-10-24 – p.12/60
TX : transaction ( 4 TX ) SMRP (State Machine
Replication Problem) SMRP-1 ( ) SMRP-2 : B 2022 — 2 — 2022-10-24 – p.13/60
( ) ( ) ϒϩοΫ൪߸O ϒϩοΫ൪߸O ϒϩοΫ൪߸O ϒϩοΫ൪߸O
ϒϩοΫ൪߸O ϒϩοΫ൪߸O ϒϩοΫ൪߸O ϒϩοΫ൪߸O ͍ͪΜهɾॻ͖͑ͷίετ͕ߴ͍ྺ࢙ ࠷վ͟Μ͠ʹ͍͘ྺ࢙ ͕༗ޮ ͻͱͭखલͷϒϩοΫͷ ʮμΠδΣετʯ σδλϧॺ໊͞Εͨ ʮτϥϯβΫγϣϯ औҾ ʯ ϒϩοΫΛ࡞ΔͨΊʹɺͦͷʮμΠδΣετʯ͕͋ΔҎԼͱ͍͏݅Λຬͨͨ͠Γ 1SPPGPG8PSL Ծ௨՟ͷ࣋ͪʹԠͨ͡ݖརΛͬͨථͰউͬͨΓ 1SPPGPG4UBLF ͢Δඞཁ͕͋Δ ίετ͕͔͔Δ ϒϩοΫΛ࡞ΔਓͦͷதʹࣗʹѼͯͨ Ծ௨՟ͰͷใुΛॻ͖ࠐΉ͜ͱ͕Ͱ͖ɺ ͦͷϒϩοΫ͕༗ޮͳྺ࢙ͷதʹ͋Δ߹ʹ ݶΓใु༗ޮͱͳΔ τϥϯβΫγϣϯͷଘࡏΛ֬ೝ͢Δ ͨΊͷޮతͳํ๏͕ఏڙ͞ΕΔ ਖ਼ੑ ଘࡏੑ །Ұੑ Proof of Work ( ) . . . → B 2022 — 2 — 2022-10-24 – p.14/60
(BP-3 ) ( : ) (BP-3 ) ( : )
← NFT BP-{1,2,3} BP-{1, 2} ⇒ B 2022 — 2 — 2022-10-24 – p.15/60
(Confidentiality) BP-{1,2,3} ↑ ( = ) (Integrity) BP-3 (Availability) BP-2
B 2022 — 2 — 2022-10-24 – p.16/60
2009 ↑ 13 ( 5 ) B 2022 — 2
— 2022-10-24 – p.17/60
( ) ADR (Active (space) Debris Removal) : https://doi.org/10.1109/TCSS.2018.2890655 (1930
) ( ) B 2022 — 2 — 2022-10-24 – p.18/60
( ) ( ) ( ) B 2022 — 2
— 2022-10-24 – p.19/60
( ) ( - ) : https://doi.org/10.1016/j.future.2019.05.019 B 2022 —
2 — 2022-10-24 – p.20/60
( ) ( ) ( ) B 2022 — 2
— 2022-10-24 – p.21/60
( ) B 2022 — 2 — 2022-10-24 – p.22/60
/ ( ) ( ) ( ) ( ) B
2022 — 2 — 2022-10-24 – p.23/60
( ) ( ) ( ) B 2022 — 2
— 2022-10-24 – p.24/60
( ) : https://www.lij.jp/html/jli/jli_2017/ 2017summer_p018.pdf B 2022 — 2 —
2022-10-24 – p.25/60
( ) ( ) B 2022 — 2 — 2022-10-24
– p.26/60
B 2022 — 2 — 2022-10-24 – p.27/60
with ( ) ( ) : https://doi.org/10.1016/j.icte.2021.08.012 ( ) B
2022 — 2 — 2022-10-24 – p.28/60
DNS : https://ieeexplore.ieee.org/document/9686409 ( ) IP AS B 2022 —
2 — 2022-10-24 – p.29/60
( ) ( ) : https://ieeexplore.ieee.org/document/9686409 ( ) : https://doi.org/10.1016/j.icte.2021.08.012
(web ) B 2022 — 2 — 2022-10-24 – p.30/60
( ) ( ) ( ) : https://doi.org/10.1016/j.icte.2021.08.012 ( )
( ) ( ) : https://ieeexplore.ieee.org/document/9686409 B 2022 — 2 — 2022-10-24 – p.31/60
( ) ( ) : https://ieeexplore.ieee.org/document/9686409 3D ( ) :
HACCP ( ) B 2022 — 2 — 2022-10-24 – p.32/60
— τʔΫϯ ସ՟ฎ εϚʔτίϯτϥΫτ ݕূՄೳͳঢ়ଶϚγϯ ϓϩϏφϯε དྷྺূ໌ ସՄೳ ঈؐෆೳ
ସՄೳ ঈؐՄೳ ସෆೳ ঈؐՄೳ ସෆೳ ঈؐෆೳ ূ໌͢Δ ಉఆ͢Δ ࢧ͍ ࠷ॳͷԠ༻ *%Χʔυ ηΩϡϦςΟ τʔΫϯ ূ݊ ηϯαʔ ྲྀɾ Ҩݴॻ อݥਃ ͢Δ ײ͢Δ தԝۜߦ σδλϧ௨՟ ҭήʔϜ ൿີ伴Λ͑Δ͔Βຊਓʁ ෛ࠴ Ξηοτͷ දݱΛҠసͰ͖Δʁ ొ͞Εͨίʔυͱ ͦͷ࣮ߦϩάͱ݁Ռͷ ਅਖ਼ੑΛ୲อͰ͖Δʁ ݖҖ͕ Կ͔ͷ༰Λূ໌͢Δʁ ࣋ଓ͢Δଘࡏʹ͍ͭͯ هΛΞοϓσʔτՄʁ ओମ͕͍ͳ͘ͳͬͯ աڈͷσʔλ༗ޮʁ /'5 Ұൠతͳ ೝࣝ ػೳͷ ੳ݁Ռ B 2022 — 2 — 2022-10-24 – p.33/60
Ethereum macOS (Monterey 12.6) + Homebrew Linux (Ubuntu 22.04) (x86/AMD64
and ARM) Windows 10/11 + Windows Subsystem for Linux (Ubuntu ) Ethereum solidity brownie B 2022 — 2 — 2022-10-24 – p.34/60
Solidity Ethereum ( ) http://solidity.readthedocs.io/en/latest/installing-solidity.html Linux (on Windows) “sudo apt”,
macOS “brew” Linux ARM git clone dependencies solc 0.8.16 (9/6 ) $ solc --version brownie py-solc-x solc (dependencies) ( solc py-solc-x ) B 2022 — 2 — 2022-10-24 – p.35/60
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 2022 — 2 — 2022-10-24 – p.36/60
Python3 macOS $ brew install python3 Python 3.8 Homebrew $
brew uninstall --ignore-dependencies
[email protected]
$ brew install
[email protected]
/usr/local/opt/
[email protected]
/bin/python3 Linux $ sudo apt update $ sudo apt install python3.8 python3.8-dev python3.8-venv python3.8-tk 16.10 python3(.8) apt (PPA ) python3 python3-dev python3-venv python3-tk B 2022 — 2 — 2022-10-24 – p.37/60
macOS : . . . macOS wget brew dyld: Library
not loaded: /usr/local/opt/gettext/lib/libintl.8.dylib $ brew uninstall --force gettext $ brew install gettext B 2022 — 2 — 2022-10-24 – p.38/60
Python (venv) macOS (Linux python3 ) ‘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 2022 — 2 — 2022-10-24 – p.39/60
Brownie Python Ethereum https://eth-brownie.readthedocs.io Brownie $ pip install eth-brownie version
1.19.1 (9/6 ) B 2022 — 2 — 2022-10-24 – p.40/60
$ brownie init ( ERC-20 ) $ brownie bake token
$ cd token B 2022 — 2 — 2022-10-24 – p.41/60
contracts (macOS Linux (x86/AMD64) ) $ brownie compile Linux (ARM)
(AMD64 ) $ python # >>> import solcx >>> solcx.compile_solc(’0.6.12’) # >>> quit() /tmp ∼/.solcx/solc-v0.6.12 ( ) $ pytest tests B 2022 — 2 — 2022-10-24 – p.42/60
Brownie $ brownie console Python >>> len(accounts) 10 >>> accounts[0].balance()
100000000000000000000 >>> quit() B 2022 — 2 — 2022-10-24 – p.43/60
Ethereum Görli B 2022 — 2 — 2022-10-24 – p.44/60
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 2022 — 2 — 2022-10-24 – p.45/60
G¨ orli ETH brownie console Görli >>> network.disconnect() >>> network.connect(’goerli’)
>>> len(accounts) 0 >>> accounts.add() <LocalAccount object ’ 16 ’> >>> accounts[0].private_key 16 >>> quit() Görli Testnet ETH Faucet ETH https://goerlifaucet.com ( ) ( ) https://metamask.io/ B 2022 — 2 — 2022-10-24 – p.46/60
G¨ orli ETH brownie console Görli ETH >>> network.disconnect() >>>
network.connect(’goerli’) >>> len(accounts) 0 >>> accounts.add( 16 ) <LocalAccount object ’ 16 ’> >>> accounts[0].balace() ETH >>> quit() ETH >>> accounts[0].transfer(accounts[1], "0.01 ether") B 2022 — 2 — 2022-10-24 – p.47/60
Ethereum B 2022 — 2 — 2022-10-24 – p.48/60
Ethereum Vitalik Buterin, “Ethereum White Paper: A NEXT GENERATION SMART
CONTRACT & DECENTRALIZED APPLICATION PLATFORM” 12 (= ) = ⇒ → Dapps ( / / ) B 2022 — 2 — 2022-10-24 – p.49/60
( ) B 2022 — 2 — 2022-10-24 – p.50/60
. . . B 2022 — 2 — 2022-10-24 –
p.51/60
vs. B 2022 — 2 — 2022-10-24 – p.52/60
= run B 2022 — 2 — 2022-10-24 – p.53/60
Ether Ethereum EOA : Externally-Owned Account ( ) Ether EVM
EVM B 2022 — 2 — 2022-10-24 – p.54/60
EVM : Ethereum Virtual Machine Gas ( EVM = (
burn)) . . . B 2022 — 2 — 2022-10-24 – p.55/60
EVM : : ← : Solidity — JavaScript LLL —
Lisp Vyper — Python Fe — Vyper Rust ← NEW! Solidity Vyper Python B 2022 — 2 — 2022-10-24 – p.56/60
Solidity ( ) pragma solidityˆ0.7.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 2022 — 2 — 2022-10-24 – p.57/60
( , ) (constructor) (deploy) = ( ) ( )
ETH Trusted Actor Model B 2022 — 2 — 2022-10-24 – p.58/60
Ethereum B 2022 — 2 — 2022-10-24 – p.59/60
B 2022 — 2 — 2022-10-24 – p.60/60