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

スマートコントラクト / Smart Contracts

スマートコントラクト / Smart Contracts

2023年7月19日(水)、ブロックチェーンハブ主催のブロックチェーンアカデミーにて使用したスライドです。

Kenji Saito

July 19, 2023
Tweet

More Decks by Kenji Saito

Other Decks in Technology

Transcript

  1. ( ) SFC ( ) CSO (Chief Science Officer) 1993

    ( ) 2006 ( ) SFC 22 P2P (Peer-to-Peer) 2011 ( ) 2018 2019 VR 2021.9 & VR 2022.3 2023 AI VR 2023.2-3 “POWER TO THE PEOPLE” VR&RPG 2023.5 “Don’t Be So Serious” VOXEL 2023.7 DAZE → ( ) — — 2023-07-19 – p.3/39
  2. (by ) 1. 2. ( ) ( ) . .

    . cf. by McLuhan cf. by McLuhan → — — 2023-07-19 – p.9/39
  3. Ethereum Vitalik Buterin, “Ethereum White Paper: A NEXT GENERATION SMART

    CONTRACT & DECENTRALIZED APPLICATION PLATFORM” 12 1 = ( ) DApps ( ) — — 2023-07-19 – p.11/39
  4. EVM : Ethereum Virtual Machine ঢ়ଶ ֎෦ΞΫλʔ ΞΧ΢ϯτ &7. ίʔυ

    &UIFSˠ(BT ىಈ ίϯτϥΫτ ϝοηʔδ͔ɺ৽͍ࣗ͠ಈΦϒδΣΫτ ΞΧ΢ϯτؒͰ΍ΓऔΓ͞ΕΔσʔλ΍&UIFS ετϨʔδ ঢ়ଶ` τϥϯβΫγϣϯ ηοτ σδλϧॺ໊ &7. ਓؒͱ͔ ࣗಈ ΦϒδΣΫτ Gas ( ( burn)) → — — 2023-07-19 – p.12/39
  5. EVM : . . . : Solidity — JavaScript Vyper

    — Python Fe — Vyper Rust ← NEW! — — 2023-07-19 – p.14/39
  6. 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; } } — — 2023-07-19 – p.15/39
  7. ( , ) (constructor) (deploy) = ( ) ( )

    ETH Trusted Actor Model — — 2023-07-19 – p.16/39
  8. ADEPT ADEPT ( ) : IBM IoT → ⇒ —

    — 2023-07-19 – p.19/39
  9. The DAO ( ) Ethereum The DAO Split ( )

    360 ETH (50∼60 ) (2016/6/17) ( ) ( ; ) (2016/7/20 ) — — 2023-07-19 – p.22/39
  10. ERC-20 ERC (Ethereum Request for Comments) 20 https://github.com/ethereum/EIPs/blob/master/EIPS/eip-20.md (EIP: Ethereum

    Improvement Proposal) ← EIP ( ) contract ERC20 { function totalSupply() constant returns (uint totalSupply); function balanceOf(address _owner) constant returns (uint balance); function transfer(address _to, uint _value) returns (bool success); function transferFrom(address _from, address _to, uint _value) returns (bool success); function approve(address _spender, uint _value) returns (bool success); function allowance(address _owner, address _spender) constant returns (uint remaining); event Transfer(address indexed _from, address indexed _to, uint _value); event Approval(address indexed _owner, address indexed _spender, uint _value); } name/ , symbol/ , decimals/ approve allowance ERC-777 ( ) — — 2023-07-19 – p.24/39
  11. ERC-20 ERC-20 ← ( ) ( ) ⇒ ERC-20 (

    ERC-20 ) ERC-20 ⇒ — — 2023-07-19 – p.25/39
  12. (fungible) ERC-20 → ERC-223 (draft) or ERC-777 ( )( )

    (non-fungible) ERC-721 ( ) ( ) ERC-1155 ( ) ERC-3525 (ERC-721 ; SLOT SLOT ) — — 2023-07-19 – p.26/39
  13. — τʔΫϯ ୅ସ՟ฎ εϚʔτίϯτϥΫτ ݕূՄೳͳঢ়ଶϚγϯ ϓϩϏφϯε དྷྺূ໌  ୅ସՄೳ ঈؐෆೳ

    ୅ସՄೳ ঈؐՄೳ ୅ସෆೳ ঈؐՄೳ ୅ସෆೳ ঈؐෆೳ ূ໌͢Δ ಉఆ͢Δ ࢧ෷͍౳ ࠷ॳͷԠ༻ *%Χʔυ౳ ηΩϡϦςΟ τʔΫϯ ূ݊ ౳ ηϯαʔ౳ ෺ྲྀɾ Ҩݴॻ౳ อݥਃ੥౳ ௥੻͢Δ ײ஌͢Δ தԝۜߦ σδλϧ௨՟౳ ҭ੒ήʔϜ౳ ൿີ伴Λ࢖͑Δ͔Βຊਓʁ ෛ࠴  Ξηοτͷ ਺஋දݱΛҠసͰ͖Δʁ ొ࿥͞Εͨίʔυͱ ͦͷ࣮ߦϩάͱ݁Ռͷ ਅਖ਼ੑΛ୲อͰ͖Δʁ ݖҖ͕  Կ͔ͷ಺༰Λূ໌͢Δʁ ࣋ଓ͢Δଘࡏʹ͍ͭͯ ه࿥ΛΞοϓσʔτՄʁ ओମ͕͍ͳ͘ͳͬͯ΋ աڈͷσʔλ͸༗ޮʁ /'5 Ұൠతͳ ೝࣝ ػೳͷ ෼ੳ݁Ռ — — 2023-07-19 – p.27/39
  14. — 1. ( ) 2. ( ) 3. ( )

    — — 2023-07-19 – p.36/39
  15. 10 12 → 120 120 12 12 120 — —

    2023-07-19 – p.37/39