Upgrade to Pro — share decks privately, control downloads, hide ads and more …

スマートコントラクト入門

 スマートコントラクト入門

2022/06/10のOkachi.js vol.60で話したスライドです。その先週参加した合宿で作ったものがベースになっています。

kazuhiro hara

June 11, 2022
Tweet

More Decks by kazuhiro hara

Other Decks in Programming

Transcript

  1. 自己紹介
 • 原 一浩 (はら かずひろ)
 • Kansock.Industries 代表
 1998年に独立し、同年、ウェブデザイン専門のメールメディアの発

    行を開始。 Webデザインやフロントエンド、バックエンドなど雑食的にいろいろ な仕事に関わるかたわら、 Webデザイントレンドを通して情報発信 を行ってきた。 上場企業・自治体・グローバル企業および海外サイトなどを定点観 測し続けている。 最近はNreal社のXRデバイスを使ってメタバースの UIを研究する 日々。
  2. 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/ 
 "
  3. スマートコントラクトとは
 • 1994年に登場
 ◦ 当初は様々な文書うぃデジタルプロトコルや暗号署名を 
 使って自動的に履行できるのが目的 
 • プラットフォーム


    ◦ ブロックチェーンのデータを格納、更新、削除する 
 • よく使われる言語
 ◦ Solidity : プログラミング言語 
 SolidityとEthereumによる実践スマートコントラクト開発 p4, p5, frontend Web3 blockchain
  4. Solidityについて
 • 概要
 ◦ C++、Python、JavaScriptを参考に、 
 Ethereum Virtual Machine(EVM) 


    の操作を目的に作られている 
 ◦ EVM (イーサリアム仮想マシン) 上で実行 
 • Document (日本語)
 • Remix IDE で試すことができる
 ◦ https://remix.ethereum.org/ 
 • 拡張子
 ◦ .sol
 ◦ VSCode のプラグインあり 

  5. 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) 

  6. その他の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のコントラクトをベースにやるのがオススメとのこと 
 ▪ 厳正に監査されているため 

  7. その他のERC (2)
 • ERC-1155
 ◦ https://ethereum.org/ja/developers/docs/standards/tokens/erc-1155/ 
 ◦ トークン標準と言われている 


    ▪ バッチ転送:1回の呼び出しで複数のアセットを転送 
 ▪ バッチ残高:1回の呼び出しで複数の資産の残高を取得 
 ▪ バッチ承認:アドレスへのすべてのトークンを承認 
 ▪ フック:トークンフックを受け取る 
 ▪ NFTサポート:供給が1のみの場合は、NFTとして扱う 
 ▪ 安全な転送ルール:安全な転送のための一連のルール 

  8. いろいろなツール
 • 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ノードホスティングサービス