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
スマートコントラクト入門
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
kazuhiro hara
June 11, 2022
Programming
180
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
スマートコントラクト入門
2022/06/10のOkachi.js vol.60で話したスライドです。その先週参加した合宿で作ったものがベースになっています。
kazuhiro hara
June 11, 2022
More Decks by kazuhiro hara
See All by kazuhiro hara
いまどきの Codex で開発する visionOS アプリの開発スタイルについて
karad
0
180
空間アプリ開発のフィードバックをCodexにするための抽象的なデザインツールの模索
karad
0
190
Exploring Abstract Design Tools to Turn Spatial App Feedback into Codex (En)
karad
0
68
visionOS 開発向けの MCP / Skills をつくり続けることで XR の探究と学習を最大化
karad
2
1.9k
Canon EOS R50 V と R5 Mark II 購入でみえてきた最近のデジイチ VR180 事情、そして VR180 静止画に活路を見出すまで
karad
0
290
Vapor を使って VisionPro とWebSocket 通信をしてみる
karad
0
400
slow types ってなんだろう?
karad
1
870
ほぼ日のハッカソン Team 1 発表資料
karad
0
570
Dist.43.英語仕事で地味につかうChatGPT 配布版
karad
0
840
Other Decks in Programming
See All in Programming
AI時代に学ぶ 好きなルール 嫌いなルール Linter編
shorty5121
0
800
一参加者から『中の人』へ 〜全通PHPerがブースに立って学んだ、カンファレンスを100倍楽しむコツ〜
wp_daisuke
0
110
AI に Inclusive UI を書かせよう — Design Rules Skill で Compose UI を作り直す
theoriatec2024
1
430
AI駆動開発にグラフDBを重ねてみた
satoshi256kbyte
2
720
Vibes Containers 〜AIで変わるコンテナ設計と運用〜
tkikuc
1
450
PyConJP2026_wat_Python × Signal Processing: How to Draw Pictures with Sound Using Spectrogram Art
wat
0
660
MySQLとPostgreSQLって何が違うの?
akagami
PRO
0
160
Claude Codeを組織的に動かして月400PRを実現した話
happy_ryo
0
250
typoなんかねぇよ
raspython3
0
660
Foundry Localでエージェント開発
seosoft
0
120
数年滞っていたダークモード対応をおよそ2週間で完了させる
chigichan24
0
660
What We Talk About When We Talk About XP
m_seki
2
320
Featured
See All Featured
Thoughts on Productivity
jonyablonski
76
5.4k
Leading Effective Engineering Teams in the AI Era
addyosmani
9
2.5k
Collaborative Software Design: How to facilitate domain modelling decisions
baasie
1
310
Gemini Prompt Engineering: Practical Techniques for Tangible AI Outcomes
mfonobong
2
510
Site-Speed That Sticks
csswizardry
13
1.5k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
49
3.5k
Building Experiences: Design Systems, User Experience, and Full Site Editing
marktimemedia
0
590
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
128
56k
Navigating the moral maze — ethical principles for Al-driven product design
skipperchong
2
520
Designing Powerful Visuals for Engaging Learning
tmiket
1
530
RailsConf 2023
tenderlove
30
1.5k
Why Our Code Smells
bkeepers
PRO
340
58k
Transcript
スマートコントラクト入門 Solidity と Truffle に入門 2022/06/10 Okachi.js vol.60 KAZUHIRO
HARA @kara_d
構成 • 自己紹介 • Web3とは • スマートコントラクトって何ですか? • Solidity? •
NFT? • いろいろツールたち • テストネットについて
自己紹介
自己紹介 • 原 一浩 (はら かずひろ) • Kansock.Industries 代表 1998年に独立し、同年、ウェブデザイン専門のメールメディアの発
行を開始。 Webデザインやフロントエンド、バックエンドなど雑食的にいろいろ な仕事に関わるかたわら、 Webデザイントレンドを通して情報発信 を行ってきた。 上場企業・自治体・グローバル企業および海外サイトなどを定点観 測し続けている。 最近はNreal社のXRデバイスを使ってメタバースの UIを研究する 日々。
Web3とは
Web3 • (?) Web3というJavaScriptライブラリ ◦ (オライリーのスマートコントラクト本では、ということ) ◦ web3.js -
Ethereum JavaScript API — web3.js 1.0.0 documentation https://web3js.readthedocs.io/en/v1.7.3/ • (こちらに賛成) どういうものを指すか ◦ Web3の「魂」は何なのか? https://wirelesswire.jp/2022/06/82564/ "
スマートコントラクトって何ですか?
スマートコントラクトとは • 1994年に登場 ◦ 当初は様々な文書うぃデジタルプロトコルや暗号署名を 使って自動的に履行できるのが目的 • プラットフォーム
◦ ブロックチェーンのデータを格納、更新、削除する • よく使われる言語 ◦ Solidity : プログラミング言語 SolidityとEthereumによる実践スマートコントラクト開発 p4, p5, frontend Web3 blockchain
Solidity?
Solidityについて • 概要 ◦ C++、Python、JavaScriptを参考に、 Ethereum Virtual Machine(EVM)
の操作を目的に作られている ◦ EVM (イーサリアム仮想マシン) 上で実行 • Document (日本語) • Remix IDE で試すことができる ◦ https://remix.ethereum.org/ • 拡張子 ◦ .sol ◦ VSCode のプラグインあり
NFT?
NFT? (1) • Non-Fungible Token (非代替性トークン) • ERC-721という規格で定義 (Ethereum Request
for Comments) ◦ https://ethereum.org/ja/developers/docs/standards/tokens/erc-721/ • 以下の関数が実装されていること ◦ balanceOf(address _owner) ◦ ownerOf(uint256 _tokenId) ◦ safeTransferFrom(address _from, address _to, uint256 _tokenId, bytes data) ◦ safeTransferFrom(address _from, address _to, uint256 _tokenId) ◦ transferFrom(address _from, address _to, uint256 _tokenId) ◦ approve(address _approved, uint256 _tokenId) ◦ setApprovalForAll(address _operator, bool _approved) ◦ getApproved(uint256 _tokenId) ◦ isApprovedForAll(address _owner, address _operator)
その他のERC (1) • ERC-20 ◦ https://ethereum.org/ja/developers/docs/standards/tokens/erc-20/ ◦ Fungible Tokenを作るときに使われる規格
◦ 相互に交換可能なトークン。残高を追跡する役割に使われる ◦ 以下の関数が実装されていること ▪ totalSupply() ▪ balanceOf(address _owner) ▪ transfer(address _to, uint256 _value) ▪ transferFrom(address _from, address _to, uint256 _value) ▪ approve(address _spender, uint256 _value) ▪ allowance(address _owner, address _spender) ◦ OpenZeppelinのコントラクトをベースにやるのがオススメとのこと ▪ 厳正に監査されているため
その他のERC (2) • ERC-1155 ◦ https://ethereum.org/ja/developers/docs/standards/tokens/erc-1155/ ◦ トークン標準と言われている
▪ バッチ転送:1回の呼び出しで複数のアセットを転送 ▪ バッチ残高:1回の呼び出しで複数の資産の残高を取得 ▪ バッチ承認:アドレスへのすべてのトークンを承認 ▪ フック:トークンフックを受け取る ▪ NFTサポート:供給が1のみの場合は、NFTとして扱う ▪ 安全な転送ルール:安全な転送のための一連のルール
いろいろツールたち
いろいろなツール • Geth https://geth.ethereum.org/ ◦ Ethereumクライアント • MetaMask
https://metamask.io/ ◦ Ethereum系ブロックチェーンの通貨やNFTを管理できるソフトウェアウォレット • Truffle Suite https://trufflesuite.com/ ◦ Ethereum 用 Blockchain の Smart Contract 開発用フレームワーク • Ganache https://trufflesuite.com/ganache/ ◦ Ethereum のローカル開発環境 • Goerli https://goerli.net/ ◦ 開発用のテストネット • Infura https://infura.io/ ◦ Ethereumノードホスティングサービス
サンプル
サンプル こういうアーキテクチャという理解 Ganache localhost:8545 MetaMask Web3 window.ethereum React
テストネットへのデプロイ
テストネットについて • インターネット上にあるテスト用のEthereumネットワーク • これもデプロイにはETHが必要 • テストネット用にETHを送金してくれるサービスがある ◦ Paradigm MultiFaucet
https://faucet.paradigm.xyz/
END KAZUHIRO HARA @kara_d