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
ブロックチェーン概論とインストール大会 / Blockchain Overview and I...
Search
Kenji Saito
PRO
October 23, 2023
Technology
0
100
ブロックチェーン概論とインストール大会 / Blockchain Overview and Installation
2023年10月23日(月)、慶應義塾大学大学院メディアデザイン研究科「サービスデザインプロジェクト B」2023秋で使用したスライドです。
Kenji Saito
PRO
October 23, 2023
Tweet
Share
More Decks by Kenji Saito
See All by Kenji Saito
FinTech 9-10 : Smart Contracts and Decentralized Finance
ks91
PRO
0
45
AI とデジタルトランスフォーメーション / AI and Digital Transformation
ks91
PRO
0
5
スマートコントラクトデザイン / Smart Contract Design
ks91
PRO
0
10
FinTech 7-8 : Blockchain
ks91
PRO
0
98
スマートコントラクトプログラミング / Smart Contract Programming
ks91
PRO
0
21
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
65
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
88
ブロックチェーン概論とインストール大会 / Introduction to Blockchain and Installation Workshop
ks91
PRO
0
11
Other Decks in Technology
See All in Technology
Databricks Free Editionで始めるMLflow
taka_aki
0
790
CLIPでマルチモーダル画像検索 →とても良い
wm3
2
790
Oracle Database@Google Cloud:サービス概要のご紹介
oracle4engineer
PRO
0
430
日本のソブリンAIを支えるエヌビディアの生成AIエコシステム
acceleratedmu3n
0
120
Spec Driven Development入門/spec_driven_development_for_learners
hanhan1978
0
590
新米エンジニアをTech Leadに任命する ー 成長を支える挑戦的な人と組織のマネジメント
naopr
1
350
SREのキャリアから経営に近づく - Enterprise Risk Managementを基に -
shonansurvivors
1
730
Boxを“使われる場”にする統制と自動化の仕組み
demaecan
0
190
窓口業務を生成AIにおまかせ!Bedrock Agent Coreで実現する自治体AIエージェント!
rayofhopejp
0
100
OTEPsで知るOpenTelemetryの未来 / Observability Conference Tokyo 2025
arthur1
0
440
AIを使ってテストを楽にする
kworkdev
PRO
0
410
今のコンピュータ、AI にも Web にも 向いていないので 作り直そう!!
piacerex
0
600
Featured
See All Featured
Done Done
chrislema
186
16k
Gamification - CAS2011
davidbonilla
81
5.5k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
285
14k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
31
9.7k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
333
22k
Rails Girls Zürich Keynote
gr2m
95
14k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
21
1.2k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
162
15k
Optimising Largest Contentful Paint
csswizardry
37
3.5k
Fashionably flexible responsive web design (full day workshop)
malarkey
407
66k
The Art of Programming - Codeland 2020
erikaheidi
56
14k
Being A Developer After 40
akosma
91
590k
Transcript
generated by Stable Diffusion XL v1.0 B 2023 2 (
) B 2023 — 2 — 2023-10-23 – p.1/64
https://speakerdeck.com/ks91 ( ) ( ) Discord Discord ( / /
) Zoom URL ( ) B 2023 — 2 — 2023-10-23 – p.2/64
( ) 1 10 16 • 2 10 23 •
3 10 30 4 11 6 5 11 13 1 6 11 20 2 7 11 27 8 12 4 Discord B 2023 — 2 — 2023-10-23 – p.3/64
– : : Ethereum ( ) ( ) Ethereum B
2023 — 2 — 2023-10-23 – p.4/64
– B 2023 — 2 — 2023-10-23 – p.5/64
ެ։ா ެ։Ͱͳ͚ΕͳΒͳ͍ ʜ ຊਓ ɾૹۚه ɾίʔυ ɾσʔλͷมԽ ɾ࣮ߦϩά ݕӾͰ͖Δୈࡾऀ ͜Εɺ
ه͍ͨ͠Μ͚ͩͲ ͋ͳͨ ॻ͍ͨΒμϝ ͜ͷ༰ ॻ͍ͨΒμϝ ॻ͍ͪΌͬͨͷʁ ͜͏ॻ͖͑·͠ΐ͏ ॻ͍ͯͳ͍ͷʁ ͜͏ॻ͔Εͨ͜ͱʹ ͠·͠ΐ͏ ॻ͍ͪΌͬͨͷʁ ফ͠·͠ΐ͏ %P4 ߈ܸͱ͔Ͱ ͯ͠ࢭΊ·͠ΐ͏ B 2023 — 2 — 2023-10-23 – p.6/64
( ) ( ) ( ) ↓ ( ( ))
(BP : Blockchain Property ) BP-1 : ( ) BP-2 : ( ( ) ) BP-3 : ( ) ( ) ( ) B 2023 — 2 — 2023-10-23 – p.7/64
( ) (LIFO : Last In, First Out) ( )
B 2023 — 2 — 2023-10-23 – p.8/64
( ) ( ) ( ) ( ) ( 16
) SHA (Secure Hash Algorithm) ( ) 1bit B 2023 — 2 — 2023-10-23 – p.9/64
( ) ( ) < , > ( ) ←
: < , > : : < , , > : OK ( 1 ) NG ( ) B 2023 — 2 — 2023-10-23 – p.10/64
BP-1 ( ), BP-2 ( ) BBc-1/BBc-2 f : →
BP-3 ( ) ( ) ( ) ← BP-2 ← BP-3 ( ) (BP-2 ) ( ) ← BP-3 (?) + ← BP-{1,2} B 2023 — 2 — 2023-10-23 – p.11/64
[Lamport 1984][Schneider 1990] (1) (2) (3) (4) ( ) ←
↑ B 2023 — 2 — 2023-10-23 – p.12/64
TX : transaction ( 4 TX ) SMRP (State Machine
Replication Problem) SMRP-1 ( ) SMRP-2 : B 2023 — 2 — 2023-10-23 – p.13/64
( ) ( ) ϒϩοΫ൪߸O ϒϩοΫ൪߸O ϒϩοΫ൪߸O ϒϩοΫ൪߸O
ϒϩοΫ൪߸O ϒϩοΫ൪߸O ϒϩοΫ൪߸O ϒϩοΫ൪߸O ͍ͪΜهɾॻ͖͑ͷίετ͕ߴ͍ྺ࢙ ࠷վ͟Μ͠ʹ͍͘ྺ࢙ ͕༗ޮ ͻͱͭखલͷϒϩοΫͷ ʮμΠδΣετʯ σδλϧॺ໊͞Εͨ ʮτϥϯβΫγϣϯ औҾ ʯ ϒϩοΫΛ࡞ΔͨΊʹɺͦͷʮμΠδΣετʯ͕͋ΔҎԼͱ͍͏݅Λຬͨͨ͠Γ 1SPPGPG8PSL Ծ௨՟ͷ࣋ͪʹԠͨ͡ݖརΛͬͨථͰউͬͨΓ 1SPPGPG4UBLF ͢Δඞཁ͕͋Δ ίετ͕͔͔Δ ϒϩοΫΛ࡞ΔਓͦͷதʹࣗʹѼͯͨ Ծ௨՟ͰͷใुΛॻ͖ࠐΉ͜ͱ͕Ͱ͖ɺ ͦͷϒϩοΫ͕༗ޮͳྺ࢙ͷதʹ͋Δ߹ʹ ݶΓใु༗ޮͱͳΔ τϥϯβΫγϣϯͷଘࡏΛ֬ೝ͢Δ ͨΊͷޮతͳํ๏͕ఏڙ͞ΕΔ ਖ਼ੑ ଘࡏੑ །Ұੑ Proof of Work ( ) . . . → B 2023 — 2 — 2023-10-23 – p.14/64
(BP-3 ) ( : ) (BP-3 ) ( : )
← NFT ( ) BP-{1,2,3} BP-{1, 2} ⇒ B 2023 — 2 — 2023-10-23 – p.15/64
(Confidentiality) BP-{1,2,3} ↑ ( = ) (Integrity) BP-3 (Availability) BP-2
B 2023 — 2 — 2023-10-23 – p.16/64
2009 ↑ 14 ( 5 ) B 2023 — 2
— 2023-10-23 – p.17/64
( ) ADR (Active (space) Debris Removal) : https://doi.org/10.1109/TCSS.2018.2890655 (1930
) ( ) B 2023 — 2 — 2023-10-23 – p.18/64
( ) ( ) ( ) B 2023 — 2
— 2023-10-23 – p.19/64
( ) ( - ) : https://doi.org/10.1016/j.future.2019.05.019 B 2023 —
2 — 2023-10-23 – p.20/64
( ) ( ) ( ) B 2023 — 2
— 2023-10-23 – p.21/64
( ) B 2023 — 2 — 2023-10-23 – p.22/64
/ ( ) ( ) ( ) ( ) B
2023 — 2 — 2023-10-23 – p.23/64
( ) ( ) ( ) B 2023 — 2
— 2023-10-23 – p.24/64
( ) : https://www.lij.jp/html/jli/jli_2017/ 2017summer_p018.pdf B 2023 — 2 —
2023-10-23 – p.25/64
( ) ( ) B 2023 — 2 — 2023-10-23
– p.26/64
B 2023 — 2 — 2023-10-23 – p.27/64
with ( ) ( ) : https://doi.org/10.1016/j.icte.2021.08.012 ( ) B
2023 — 2 — 2023-10-23 – p.28/64
DNS : https://ieeexplore.ieee.org/document/9686409 ( ) IP AS B 2023 —
2 — 2023-10-23 – p.29/64
( ) ( ) : https://ieeexplore.ieee.org/document/9686409 ( ) : https://doi.org/10.1016/j.icte.2021.08.012
(web ) B 2023 — 2 — 2023-10-23 – p.30/64
( ) ( ) ( ) : https://doi.org/10.1016/j.icte.2021.08.012 ( )
( ) ( ) : https://ieeexplore.ieee.org/document/9686409 B 2023 — 2 — 2023-10-23 – p.31/64
( ) ( ) : https://ieeexplore.ieee.org/document/9686409 3D ( ) :
HACCP ( ) B 2023 — 2 — 2023-10-23 – p.32/64
— τʔΫϯ ସ՟ฎ εϚʔτίϯτϥΫτ ݕূՄೳͳঢ়ଶϚγϯ ϓϩϏφϯε དྷྺূ໌ ସՄೳ ঈؐෆೳ
ସՄೳ ঈؐՄೳ ସෆೳ ঈؐՄೳ ସෆೳ ঈؐෆೳ ূ໌͢Δ ಉఆ͢Δ ࢧ͍ ࠷ॳͷԠ༻ *%Χʔυ ηΩϡϦςΟ τʔΫϯ ূ݊ ηϯαʔ ྲྀɾ Ҩݴॻ อݥਃ ͢Δ ײ͢Δ தԝۜߦ σδλϧ௨՟ ҭήʔϜ ൿີ伴Λ͑Δ͔Βຊਓʁ ෛ࠴ Ξηοτͷ දݱΛҠసͰ͖Δʁ ొ͞Εͨίʔυͱ ͦͷ࣮ߦϩάͱ݁Ռͷ ਅਖ਼ੑΛ୲อͰ͖Δʁ ݖҖ͕ Կ͔ͷ༰Λূ໌͢Δʁ ࣋ଓ͢Δଘࡏʹ͍ͭͯ هΛΞοϓσʔτՄʁ ओମ͕͍ͳ͘ͳͬͯ աڈͷσʔλ༗ޮʁ /'5 Ұൠతͳ ೝࣝ ػೳͷ ੳ݁Ռ B 2023 — 2 — 2023-10-23 – p.33/64
Ethereum macOS (Ventura 13.6) + Homebrew Linux (Ubuntu 22.04) (x86/AMD64
and ARM) macOS + Lima (Linux Machines) mac M1/M2 (Apple )(ARM) x86/AMD64 Windows 11 + Windows Subsystem for Linux (Ubuntu ) Ethereum solidity brownie B 2023 — 2 — 2023-10-23 – p.34/64
macOS : Homebrew (Apple macOS ) UNIX macOS Lima Homebrew
brew Apple brew ( ) brew https://github.com/homebrew/install Path : https://zenn.dev/tet0h/articles/a92651d52bd82460aefb B 2023 — 2 — 2023-10-23 – p.35/64
macOS : Rosetta 2 Apple x86/AMD64 ( ) $ softwareupdate
–install-rosetta B 2023 — 2 — 2023-10-23 – p.36/64
macOS : Lima macOS Linux ( ) https://github.com/lima-vm/lima QEMU (
) Rosetta 2 Apple x86/AMD64 brew $ brew install lima Ubuntu 22.04 (x86/AMD64) “kmd.yaml” $ limactl start kmd.yaml B 2023 — 2 — 2023-10-23 – p.37/64
macOS : Lima Linux (Ubuntu) x86_64 $ limactl list Linux
(exit ) $ limactl shell kmd Linux limactl list STATUS Stopped limactl start kmd “.lima” diffdisk 100GB B 2023 — 2 — 2023-10-23 – p.38/64
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.21 (10/16 ) $ solc --version brownie py-solc-x solc (dependencies) ( solc py-solc-x ) B 2023 — 2 — 2023-10-23 – p.39/64
Ganache Ethereum RPC npm ( ) macOS https://qiita.com/kyosuke5_20/items/c5f68fc9d89b84c0df09 Linux https://qiita.com/seibe/items/36cef7df85fe2cefa3ea
npm Ganache $ sudo npm install -g ganache B 2023 — 2 — 2023-10-23 – p.40/64
Python3 ( Python3.9 ) macOS $ brew install
[email protected]
Linux
$ sudo add-apt-repository ppa:deadsnakes/ppa $ sudo apt update $ sudo apt install python3.9 python3.9-dev python3.9-venv python3.9-tk B 2023 — 2 — 2023-10-23 – p.41/64
macOS : . . . macOS wget brew dyld: Library
not loaded: /usr/local/opt/gettext/lib/libintl.8.dylib $ brew uninstall --force gettext $ brew install gettext B 2023 — 2 — 2023-10-23 – p.42/64
Python (venv) macOS (Linux python3 ) ‘python3.9’ ‘python3’ $ python3.9
-m venv bbc2env $ source bbc2env/bin/activate (bbc2env) $ pip install -U pip bbc2env ( BBc-2 ) ( ) (bbc2env) $ deactivate B 2023 — 2 — 2023-10-23 – p.43/64
Brownie Python Ethereum https://eth-brownie.readthedocs.io Brownie $ pip install eth-brownie version
1.19.3 (10/16 ) PyYAML $ pip install "cython<3.0.0" wheel && pip install pyyaml==5.4.1 --no-build-isolation B 2023 — 2 — 2023-10-23 – p.44/64
$ brownie init ( ERC-20 ) $ brownie bake token
$ cd token B 2023 — 2 — 2023-10-23 – p.45/64
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 2023 — 2 — 2023-10-23 – p.46/64
Brownie $ brownie console Python >>> len(accounts) 10 >>> accounts[0].balance()
100000000000000000000 >>> quit() B 2023 — 2 — 2023-10-23 – p.47/64
Ethereum Görli B 2023 — 2 — 2023-10-23 – p.48/64
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 2023 — 2 — 2023-10-23 – p.49/64
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 2023 — 2 — 2023-10-23 – p.50/64
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 2023 — 2 — 2023-10-23 – p.51/64
Ethereum B 2023 — 2 — 2023-10-23 – p.52/64
Ethereum Vitalik Buterin, “Ethereum White Paper: A NEXT GENERATION SMART
CONTRACT & DECENTRALIZED APPLICATION PLATFORM” 12 (= ) = ⇒ → Dapps ( / / ) B 2023 — 2 — 2023-10-23 – p.53/64
( ) B 2023 — 2 — 2023-10-23 – p.54/64
. . . B 2023 — 2 — 2023-10-23 –
p.55/64
vs. B 2023 — 2 — 2023-10-23 – p.56/64
= run B 2023 — 2 — 2023-10-23 – p.57/64
Ether Ethereum EOA : Externally-Owned Account ( ) Ether EVM
EVM B 2023 — 2 — 2023-10-23 – p.58/64
EVM : Ethereum Virtual Machine ঢ়ଶ ֎෦ΞΫλʔ ΞΧϯτ &7. ίʔυ
&UIFSˠ(BT ىಈ ίϯτϥΫτ ϝοηʔδ͔ɺ৽͍ࣗ͠ಈΦϒδΣΫτ ΞΧϯτؒͰΓऔΓ͞ΕΔσʔλ&UIFS ετϨʔδ ঢ়ଶ` τϥϯβΫγϣϯ ηοτ σδλϧॺ໊ &7. ਓؒͱ͔ ࣗಈ ΦϒδΣΫτ Gas ( EVM = ( burn)) . . . B 2023 — 2 — 2023-10-23 – p.59/64
EVM : : ← : Solidity — JavaScript LLL —
Lisp Vyper — Python Fe — Vyper Rust ← NEW! Solidity Vyper Python B 2023 — 2 — 2023-10-23 – p.60/64
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 2023 — 2 — 2023-10-23 – p.61/64
( , ) (constructor) (deploy) = ( ) ( )
ETH Trusted Actor Model B 2023 — 2 — 2023-10-23 – p.62/64
Ethereum B 2023 — 2 — 2023-10-23 – p.63/64
B 2023 — 2 — 2023-10-23 – p.64/64