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
スマートコントラクトデザイン / Smart Contract Design
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
Kenji Saito
PRO
October 27, 2025
Technology
51
0
Share
スマートコントラクトデザイン / Smart Contract Design
慶應義塾大学大学院メディアデザイン研究科「サービスデザインプロジェクトB」2025秋 第4回にて使用したスライドです。
Kenji Saito
PRO
October 27, 2025
More Decks by Kenji Saito
See All by Kenji Saito
AI とサービス・デザイン / AI and Service Design
ks91
PRO
0
2
ルール・ロール・ツールを創る / Creating Rules, Roles and Tools
ks91
PRO
0
43
コーディング・エージェントの活用 / Using Coding Agents
ks91
PRO
0
26
AGI (Artificial General Intelligence) の論点 / Key Issues in AGI (Artificial General Intelligence)
ks91
PRO
0
22
ワールドカフェ再び、そしてゴール・ルール・ロール・ツール / World Café Revisited, and the Goals-Rules-Roles-Tools
ks91
PRO
0
180
AI の技術 / AI technology
ks91
PRO
0
84
対話による知の拡張と傾聴の理論 / Expansion of Knowledge Through Dialogue and the Theory of Active Listening
ks91
PRO
0
24
プロンプトに対する攻撃と防御 / Attacks and Defenses Against Prompts
ks91
PRO
0
19
AI 前提社会における(地球)環境データのセンシング / Sensing of (Global) Environmental Data in an AI-Driven Society
ks91
PRO
0
32
Other Decks in Technology
See All in Technology
20260515 ログイン機能だけではないアカウント管理を全体で考える~サービス設計者向け~
oidfj
1
820
[4] Power BI Deep Dive [2026-05]
ohata_bi
0
100
Sansan Engineering Unit 紹介資料
sansan33
PRO
1
4.5k
既存プロダクトQAから新規プロダクトQAへ
ryotakahashi
0
160
How to learn AWS Well-Architected with AWS BuilderCards: Security Edition
coosuke
PRO
0
160
AI対話分析の夢と、汚いデータの現実 Looker / Dataplex / Dataform で実現する品質ファーストな基盤設計
waiwai2111
0
660
ECSのTerraformモジュールにコントリビュートした話
harukasakihara
0
240
AI飲み会幹事エージェントを作っただけなのに
ykimi
0
240
The Bag-of-Documents Model for Query Understanding and Retrieval
dtunkelang
0
170
生成AI時代に信頼性をどう保ち続けるか - Policy as Code の実践
akitok_
1
500
Oracle AI Database@Azure:サービス概要のご紹介
oracle4engineer
PRO
6
1.7k
【関西製造業祭り2026春】現場を変える技術はここまで来た〜世界最大の製造業見本市から持って帰ってきたもの〜
tanakaseiya
0
180
Featured
See All Featured
The B2B funnel & how to create a winning content strategy
katarinadahlin
PRO
1
360
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
133
19k
Why Your Marketing Sucks and What You Can Do About It - Sophie Logan
marketingsoph
0
140
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
28
3.5k
How GitHub (no longer) Works
holman
316
150k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
287
14k
Java REST API Framework Comparison - PWX 2021
mraible
34
9.3k
Gemini Prompt Engineering: Practical Techniques for Tangible AI Outcomes
mfonobong
2
400
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
360
30k
Leveraging LLMs for student feedback in introductory data science courses - posit::conf(2025)
minecr
1
250
Technical Leadership for Architectural Decision Making
baasie
3
370
AI: The stuff that nobody shows you
jnunemaker
PRO
7
640
Transcript
generated by Stable Image Ultra B 2025 4 ( )
B 2025 — 4 — 2025-10-27 – p.1/30
https://speakerdeck.com/ks91/collections/service-design-project-b-2025-fall ( ) ( ) Discord Discord ( / /
) Zoom URL ( ) B 2025 — 4 — 2025-10-27 – p.2/30
( ) 1 10 6 • 2 10 13 •
3 10 20 • 4 10 27 • 5 11 10 1 6 11 24 2 7 12 1 8 12 8 ( ) ( ) 4 ( 3 ) ↓ B 2025 — 4 — 2025-10-27 – p.3/30
( ) — (3) : Web3 B 2025 — 4
— 2025-10-27 – p.4/30
( ) — Ethereum Sepolia B 2025 — 4 —
2025-10-27 – p.5/30
infura.io Brownie https://infura.io SIGN UP PROJECT ID infura Ethereum API
infura . . . infura.io Amazon infura.io PROJECT ID WEB3_INFURA_PROJECT_ID PROJECT ID (∼/.bash_profile ) $ export WEB3_INFURA_PROJECT_ID= PROJECT ID B 2025 — 4 — 2025-10-27 – p.6/30
Sepolia ETH brownie console Sepolia >>> network.disconnect() >>> network.connect(’sepolia’) >>>
len(accounts) 0 >>> accounts.add() <LocalAccount object ’ 16 ’> >>> accounts[0].private_key 16 >>> quit() Sepolia Testnet ETH Faucet ETH https://sepoliafaucet.com ( ) ( ) . . . Ethereum 0.001 ETH 0.1 Sepolia ETH B 2025 — 4 — 2025-10-27 – p.7/30
Sepolia ETH brownie console Sepolia ETH >>> network.disconnect() >>> network.connect(’sepolia’)
>>> len(accounts) 0 >>> accounts.add( 16 ) <LocalAccount object ’ 16 ’> >>> accounts[0].balace() ETH >>> quit() ETH >>> accounts[0].transfer(accounts[1], "0.01 ether") B 2025 — 4 — 2025-10-27 – p.8/30
(3) : B 2025 — 4 — 2025-10-27 – p.9/30
transfer settle, retrieve asset, retrieve token 3 B 2025 —
4 — 2025-10-27 – p.10/30
1. ( ) 2. ( ) 3. ( ) B
2025 — 4 — 2025-10-27 – p.11/30
OneTimeEscrow settle() function settle() public returns (bool) { require(_token_.balanceOf(address(this)) >=
_price_); /* this */ require(_asset_.getOwner() == address(this)); _token_.transfer(_seller_ , _price_); _asset_.transfer(_buyer_); emit Settled(); /* */ return true; } settle() transfer ( / ) $ brownie compile B 2025 — 4 — 2025-10-27 – p.12/30
(1) from brownie import * import pytest seller = accounts[0]
buyer = accounts[1] def test_deploy_and_settle(Token, IndivisibleAsset, OneTimeEscrow): asset = accounts[0].deploy(IndivisibleAsset, "5322 Endo", "mˆ2", 300) token = accounts[0].deploy(Token, "Test Token", "TEST", 18, "1000 ether") B 2025 — 4 — 2025-10-27 – p.13/30
(2) token.transfer(buyer, 300, {’from’: accounts[0]}) escrow = accounts[0].deploy(OneTimeEscrow, token, buyer,
asset, seller, 300) accounts[0]/seller accounts[1]/buyer 300 300 TX buyer seller 300 bake Token 300 ETH wei B 2025 — 4 — 2025-10-27 – p.14/30
(3) token.transfer(escrow, 300, {’from’: buyer}) asset.transfer(escrow, {’from’: seller}) assert token.balanceOf(seller)
== 999999999999999999700 assert token.balanceOf(buyer) == 0 assert token.balanceOf(escrow) == 300 assert asset.getOwner() == escrow buyer ( ) 300 seller ( ) B 2025 — 4 — 2025-10-27 – p.15/30
(4) escrow.settle({’from’: seller}) assert token.balanceOf(seller) == 1000000000000000000000 assert token.balanceOf(buyer) ==
0 assert token.balanceOf(escrow) == 0 assert asset.getOwner() == buyer settle() seller OK B 2025 — 4 — 2025-10-27 – p.16/30
$ pytest tests/test_one_time_escrow.py : settle() ⇒ Discord B 2025 —
4 — 2025-10-27 – p.17/30
B 2025 — 4 — 2025-10-27 – p.18/30
1. (1) (2) Ethereum 2025 10 25 ( ) 23:59
JST B 2025 — 4 — 2025-10-27 – p.19/30
. . . . . . 3 1 ( )
( ) ( ) B 2025 — 4 — 2025-10-27 – p.20/30
A ⇒ B 2025 — 4 — 2025-10-27 – p.21/30
A Ethereum NFT NFT NFT B 2025 — 4 —
2025-10-27 – p.22/30
A — NFT NFT NFT ⇒ ( ) B 2025
— 4 — 2025-10-27 – p.23/30
⇒ 20 Discord . . . ( ) B 2025
— 4 — 2025-10-27 – p.24/30
Web3 Web3 HTTPS B 2025 — 4 — 2025-10-27 –
p.25/30
B 2025 — 4 — 2025-10-27 – p.26/30
miro ( ) ( ) B 2025 — 4 —
2025-10-27 – p.27/30
B 2025 — 4 — 2025-10-27 – p.28/30
2. API (1) ( ) (2) Web API 2025 11
8 ( ) 23:59 JST B 2025 — 4 — 2025-10-27 – p.29/30
B 2025 — 4 — 2025-10-27 – p.30/30