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
Solidityの複数コントラク ト連携を色々試してる話
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
yudetamago
April 10, 2018
Programming
1
2.3k
Solidityの複数コントラク ト連携を色々試してる話
yudetamago
April 10, 2018
Tweet
Share
More Decks by yudetamago
See All by yudetamago
ブロックチェーンとIndexer
yudetamago
0
950
Unityでブロックチェーンアプリを作る
yudetamago
0
1.8k
DApps開発特有の_ハマりポイントご紹介.pdf
yudetamago
1
1.4k
スマートコントラクトの監査について
yudetamago
2
620
DApps開発事例 ~CryptoCrystal概要編~
yudetamago
3
330
Gasを誰が払うのか問題について
yudetamago
5
4.6k
Dapps開発におけるSoliidityのはまりどころ
yudetamago
3
2.4k
Other Decks in Programming
See All in Programming
AI Agent の開発と運用を支える Durable Execution #AgentsInProd
izumin5210
7
2.3k
Claude Codeと2つの巻き戻し戦略 / Two Rewind Strategies with Claude Code
fruitriin
0
150
OSSとなったswift-buildで Xcodeのビルドを差し替えられるため 自分でXcodeを直せる時代になっている ダイアモンド問題編
yimajo
3
630
LLM Observabilityによる 対話型音声AIアプリケーションの安定運用
gekko0114
2
440
【卒業研究】会話ログ分析によるユーザーごとの関心に応じた話題提案手法
momok47
0
200
Best-Practices-for-Cortex-Analyst-and-AI-Agent
ryotaroikeda
1
110
AWS re:Invent 2025参加 直前 Seattle-Tacoma Airport(SEA)におけるハードウェア紛失インシデントLT
tetutetu214
2
120
AI時代の認知負荷との向き合い方
optfit
0
170
Apache Iceberg V3 and migration to V3
tomtanaka
0
170
開発者から情シスまで - 多様なユーザー層に届けるAPI提供戦略 / Postman API Night Okinawa 2026 Winter
tasshi
0
210
AtCoder Conference 2025
shindannin
0
1.1k
16年目のピクシブ百科事典を支える最新の技術基盤 / The Modern Tech Stack Powering Pixiv Encyclopedia in its 16th Year
ahuglajbclajep
5
1k
Featured
See All Featured
Bootstrapping a Software Product
garrettdimon
PRO
307
120k
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
Exploring the relationship between traditional SERPs and Gen AI search
raygrieselhuber
PRO
2
3.6k
コードの90%をAIが書く世界で何が待っているのか / What awaits us in a world where 90% of the code is written by AI
rkaga
60
42k
Stewardship and Sustainability of Urban and Community Forests
pwiseman
0
110
A better future with KSS
kneath
240
18k
Art, The Web, and Tiny UX
lynnandtonic
304
21k
Ten Tips & Tricks for a 🌱 transition
stuffmc
0
72
The Curse of the Amulet
leimatthew05
1
8.7k
Side Projects
sachag
455
43k
Kristin Tynski - Automating Marketing Tasks With AI
techseoconnect
PRO
0
150
AI Search: Where Are We & What Can We Do About It?
aleyda
0
7k
Transcript
Solidityの複数コントラク ト連携を⾊々試してる話 blockchain.tokyo #7 LT 2018-04-10 ゆで卵 1
⾃⼰紹介 名前: ゆで卵 Twitter: @takayukib Github: yudetamago 所属: フリーランス •
blockchain.tokyo #6 でもLTしてた⼈ • ブロックチェーン界隈に来たのはわりと最近(2ヶ⽉前ぐらい) • 業務でDapps作ってます 2
複数Contract連携の経緯 • 複数のトークンを扱うような処理が出てきたので必然 的に複数のContractになった • しかも、複数のContractでアトミックな処理が必要に なった • トークンのContract同⼠だけで頑張って解決しようと したら難しくなったので他のContractを導⼊して⾒通
しを良くしようとした • そもそもContractの役割ってロジックとストレージの 管理で2種類あるよね? ←イマココ 3
• publicやexternalを付けた関数はどこからでも呼べてしまう • contractAの関数AとcontractBの関数Bを必ず同時に実⾏したい 場合は? 4 複数Contract間のアトミックな処理 Contract A Contract
B function A() public function B() public User Account User Account アトミックに 実⾏したい
アクセス制御の⽅法 • 呼び出し元(msg.sender)を制限するには、アドレスで判断する 5
例: Zeppelin-SolidityのOwnable • Ownableを継承してContractを作るとonlyOwnerという modifierが使えるようになる • onlyOwnerが付けられた関数はContractの作成者(デプロイし た⼈)しか呼べなくなる 6 https://github.com/OpenZeppelin/zeppelin-solidity/blob/master/contracts/ownership/Ownable.sol
解決⽅法 7 Frontend Contract Backend Contract A Backend Contract B
function A() public onlyAcceptable function B() public onlyAcceptable function useAB() Owner setAcceptable(Frontend.address) setAcceptable(Frontend.address) https://github.com/yudetamago/solidity-example/blob/master/contracts/AtomicProcess.sol
(1Dapps開発者から⾒た)Contractの役割 • ロジック • アプリケーションの要件に応じて作るところ • ストレージの管理 • (ERC20のような)トークンの実装が特化してい るところ
•トークン以外の追加の情報の保存 8 これら2つの処理が混在しているので例えば…
例: 変数への代⼊とストレージ書き込み 9 オンメモリな変数への代⼊とストレージ書き込みがぱっと⾒では同じ
⽅針 • Contractではロジックとストレージへの書き込みが混 在している • ロジック⽤のContractとストレージ⽤のContractを分 けると⾒通しがよくなるのでは? • すでに考えている⼈がいた •
ref. https://medium.com/rocket-pool/upgradable- solidity-contract-design-54789205276d 10
利点/⽋点 • 利点: 柔軟性 • ロジック⽤のContractをいつでも変えられる(アップグレー ド可能) • ⽋点: gasコスト上昇
• Contractのサイズが⼤きくなるのでデプロイ時のgasが上が る • 外部Contract呼び出し(DELEGATECALL)のコストが⾼い 11
Contractを分けた時の図 12 Logic Contract Token A Token B Storage Contract
まとめ • Contractの数を少なくする(≒継承して作る)か多くする かはgasとの戦い • アクセス制御がアドレスベースでしか出来ないのは地 味につらい • (誰か良い⽅法知っていたら教えてください) 13
スライド中のコード: https://github.com/yudetamago/solidity-example