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

スマートコントラクトと分散ファイナンス / Smart Contracts and Decen...

スマートコントラクトと分散ファイナンス / Smart Contracts and Decentralized Finance

早稲田大学大学院経営管理研究科「フィンテック ─ 金融革新とインターネット」2025 夏の第7-8回で使用したスライドです。

Avatar for Kenji Saito

Kenji Saito

June 28, 2025
Tweet

More Decks by Kenji Saito

Other Decks in Technology

Transcript

  1. Light and Shadow — Generated by Stable Diffusion 3.5 —

    2025 7-8 (WBS) — 2025 7-8 — 2025-06-30 – p.1/75
  2. ( ) 1 6 9 (1) • 2 6 9

    (2) • 3 6 16 Web3 (1) • 4 6 16 Web3 (2) • 5 6 23 (1) • 6 6 23 (2) • 7 6 30 (1) • 8 6 30 (2) • 9 7 7 (1) 10 7 7 (2) 11 7 14 (1) 12 7 14 (2) 13 7 21 (1) 14 7 21 (2) W-IOI ( ) — 2025 7-8 — 2025-06-30 – p.3/75
  3. ( 20 ) 1 ↑ 2 ↓ 2025 3 4

    (TCP/IP ) 5 6 7 8 ↑ 9 ↓ 2024 ( ) 10 World Wide Web 11 Web API 12 * 13 git GitHub 14 (6/23 ) / (2 ) OK / — 2025 7-8 — 2025-06-30 – p.4/75
  4. ( ) Web3 (1) — Web3 (2) — — 2025

    7-8 — 2025-06-30 – p.5/75
  5. ϒϩοΫ൪߸O ϒϩοΫ൪߸O  ϒϩοΫ൪߸O  ϒϩοΫ൪߸O  ϒϩοΫ൪߸O  ϒϩοΫ൪߸O

     ϒϩοΫ൪߸O  ϒϩοΫ൪߸O  ͍ͪ͹Μه࿥ɾॻ͖׵͑ͷίετ͕ߴ͍ྺ࢙ ࠷΋վ͟Μ͠ʹ͍͘ྺ࢙ ͕༗ޮ ͻͱͭखલͷϒϩοΫͷ ʮμΠδΣετʯ σδλϧॺ໊͞Εͨ ʮτϥϯβΫγϣϯ औҾ ʯ ϒϩοΫΛ࡞ΔͨΊʹ͸ɺͦͷʮμΠδΣετʯ͕͋Δ਺ҎԼͱ͍͏৚݅Λຬͨͨ͠Γ 1SPPGPG8PSL ҉߸ࢿ࢈ͷσϙδοτʹԠͨ͡ݖརΛ࢖ͬͨ౤ථͰউͬͨΓ 1SPPGPG4UBLF ͢Δඞཁ͕͋Δ ίετ͕͔͔Δ ϒϩοΫΛ࡞Δਓ͸ͦͷதʹࣗ෼ʹѼͯͨ ҉߸ࢿ࢈ͰͷใुΛॻ͖ࠐΉ͜ͱ͕Ͱ͖ɺ ͦͷϒϩοΫ͕༗ޮͳྺ࢙ͷதʹ͋Δ৔߹ʹ ݶΓใु΋༗ޮͱͳΔ τϥϯβΫγϣϯͷଘࡏΛ֬ೝ͢Δ ͨΊͷޮ཰తͳํ๏͕ఏڙ͞ΕΔ ਖ਼౰ੑ ଘࡏੑ །Ұੑ Proof of Work ( ) (Proof of Stake ) . . . → — 2025 7-8 — 2025-06-30 – p.8/75
  6. 0 and/or Bitcoin “The Times 03/Jan/2009 Chancellor on brink of

    second bailout for banks” 2009 1 3 2 https://www.blockchain.com/explorer 0 BTC Block “Hex to ASCII Text Converter” — 2025 7-8 — 2025-06-30 – p.9/75
  7. : ( ( ) ) ( ) — 2025 7-8

    — 2025-06-30 – p.10/75
  8. (Hyperledger ) ( ) ( ) ( ) ( )

    IoT / / ( , ) — 2025 7-8 — 2025-06-30 – p.11/75
  9. : Bitcoin . . . : Proof of Existence, Everledger,

    . . . ( ) ( ) × = NFT (Non Fungible Token) — 2025 7-8 — 2025-06-30 – p.12/75
  10. ( ) จ ॻ  จ ॻ  จ ॻ

     จ ॻ  จ ॻ O μΠδΣετ μΠδΣετ μΠδΣετ μΠδΣετ μΠδΣετ μΠδΣετ μΠδΣετ ح਺ͷ৔߹͸ ෳ੡͢Δ ɾจॻ ΛಘͨΫϥΠΞϯτ͸ɺಉ࣌ʹূ໌ཁૉͱͯ͠ɺϒϧʔͰࣔ͞ΕΔμΠδΣετͱ֤ʑ͕ࠨӈͷͲͪΒʹҐஔ͢Δ͔Λड͚औΔɻ ɾΫϥΠΞϯτ͸จॻ  ͷμΠδΣετ͔Β࢝Ίͯɺ࿈݁͢΂͖Ұ࿈ͷμΠδΣετΛ஌Δ͜ͱʹͳΔͷͰɺϚʔΫϧϧʔτʹࢸΔ·Ͱͷ ɹܭࢉΛ࠶ݱͰ͖ɺಘΒΕͨϚʔΫϧϧʔτ͕ϒϩοΫνΣʔϯʹه࿥͞Ε͍ͯΔ஋ͱҰக͢Δ͜ͱΛ֬ೝͰ͖Δɻ ɾͦͷܭࢉ͸ݪཧͷཧղͱඞཁͳ৘ใ͕͋Ε͹୭Ͱ΋࠶ݱͰ͖Δ  จॻ  ͷଘࡏͱͦͷ಺༰͸ূ໌͞ΕΔɻ ˞μΠδΣετ͸ݩͷσʔλ͕ ɹϏοτͰ΋ҟͳΔͱશ͘ҟͳΔ ɹ஋ͱͳΓɺ·ͨɺμΠδΣετ ɹ͔ΒݩͷσʔλΛਪଌ͢Δ͜ͱ͸ ɹͰ͖ͳ͍ɻ ˞਺ઍɾ਺ສͷจॻΛϚʔΫϧ໦ʹͯ͠΋ ɹͦͷ໦ͷߴ͞͸ߴʑʙ ఔ౓ ه࿥͢Δ ಡΈग़ͤΔ ূ໌Λ ඞཁͱ͢Δऀʹ ։ࣔ͞ΕΔ৘ใ ެ։͞ΕΔ৘ใ ϚʔΫϧϧʔτ Ϛ ồ Ϋ ϧ ໦  γ ε ς Ϝ ͕ อ ؅ ͠ ֤ Ϣ ồ β ʹ ෦ ෼ త ʹ ఻ ͑ Δ ʜʜ ʜʜ ʜʜ ʜʜ ʜʜ μΠδΣετ μΠδΣετ μΠδΣετ μΠδΣετ μΠδΣετ μΠδΣετ ϒϩοΫνΣʔϯ ʜ ʜ — 2025 7-8 — 2025-06-30 – p.13/75
  11. : ⇒ LINE → → → ( ) ( )

    ⇒ ( ) → → → . . . — 2025 7-8 — 2025-06-30 – p.14/75
  12. ( ( )) ( ) / / — 2025 7-8

    — 2025-06-30 – p.15/75
  13. — 1. ( ) 2. ( ) 3. ( )

    — 2025 7-8 — 2025-06-30 – p.16/75
  14. Bitcoin (2009 1 ∼2025 6 ) 2 → 2 2

    → → — 2025 7-8 — 2025-06-30 – p.18/75
  15. ( ) -12 -9 -7 -5 -3 -1 1 3

    5 7 9 11 Time Zone (UTC-relative) Capacity (GW) Bitcoin 0 20 40 60 80 100 120 140 ( — Bitcoin 19GW) Solar power by country ( ) 17GW (13 ) Bitcoin 13 Bitcoin 1 4 4.25GW 29 UTC — 2025 7-8 — 2025-06-30 – p.19/75
  16. 10 ATM 1 ATM 1 : http://www.slideshare.net/yamaz2/ss-58813038 ⇒ ( (

    ) ) — 2025 7-8 — 2025-06-30 – p.20/75
  17. The DAO ( ) Ethereum The DAO Split ( )

    360 ETH (50∼60 ) (2016/6/17) ( ) ( ; ) (2016/7/20 ) — 2025 7-8 — 2025-06-30 – p.22/75
  18. (Ethereum (?); ) ( ) ( ) ( vs. )

    ( ) ( ) ( ) ⇒ ( : BBc-1, BBc-2) : : — 2025 7-8 — 2025-06-30 – p.23/75
  19. 3. (1) SF (2) 2025 6 26 ( ) 23:59

    JST ( ) Waseda Moodle — 2025 7-8 — 2025-06-30 – p.25/75
  20. . . . . . . 17 13 (6/27( )

    ) ( ) ( ) ( ) ( Moodle ) H N Y H (← B. ) I Y M — 2025 7-8 — 2025-06-30 – p.26/75
  21. ( )( ) ະདྷͷܦࡁࣾձ ա౉ظͷܦࡁࣾձ ࣌ؒ ݱঢ়ͷܦࡁࣾձ ՟ฎγεςϜ ͷϋοΫ ҉߸ࢿ࢈ͷࢢ৔Ձ֨ʹ

    ґଘ͢Δ࢓૊Έ ؆୯ʹͭͿͤΔͥ "* ʹΑͬͯ΋ॻ͖׵͑ΒΕͳ͍ ਅਖ਼ͳه࿥ΛԼࢧ͑ ҉߸ࢿ࢈ͷࢢ৔Ձ֨ʹґଘ͠ͳ͍ ҉߸ࢿ࢈͸ແؔ܎ͳ ޿ٛͷ଱ݕӾه࿥ج൫ ՟ฎͷ ΠϯηϯςΟϒͰ ۦಈ "* ΤʔδΣϯτ ϩϘςΟΫε γϯɾ%"0 "* ͕ਓؒͷ࿑ಇྗΛར༻͢Δ ϝλɾωΠνϟʔ ਓؒͷ࿑ಇྗ ՟ฎͷ ΠϯηϯςΟϒͰ ۦಈ ΋͸΍࿑ಇͰ͸ͳ͍Կ͔ ϒϩοΫνΣʔϯ ҉߸ࢿ࢈ͱ͔ ·͋ͦ͏͍ͬͨ΋ͷ ҉߸ࢿ࢈͸·͋ؔ܎ͳͯ͘ 0, ࣮ࡍʹࣾձͷ໾ʹཱͭϑΟϯςοΫ — 2025 7-8 — 2025-06-30 – p.28/75
  22. H ⇒ Bitcoin bitcoin ( ) ( . . .

    ) — 2025 7-8 — 2025-06-30 – p.29/75
  23. A ( ) ⇒ Bitcoin Proof of Work ( )

    ( ) Bitcoin Litecoin, Litecoin Monacoin Ethereum Proof of Stake ( ) Ethereum Proof of Stake — 2025 7-8 — 2025-06-30 – p.30/75
  24. S DAO ( : ) ⇒ DAO — 2025 7-8

    — 2025-06-30 – p.31/75
  25. S ( ) ⇒ 12 24 (Hierarchical Deterministic (HD) Wallet)

    (Social Recovery Wallet) — 2025 7-8 — 2025-06-30 – p.32/75
  26. N DAO Pros and Cons ⇒ DAO DAO — 2025

    7-8 — 2025-06-30 – p.35/75
  27. Ethereum · → · → · → — 2025 7-8

    — 2025-06-30 – p.38/75
  28. (by ) 1. 2. ( ) ( ) . .

    . cf. by McLuhan cf. by McLuhan → — 2025 7-8 — 2025-06-30 – p.40/75
  29. by SNS AI AI ⇒ ( ) ⇒ — 2025

    7-8 — 2025-06-30 – p.42/75
  30. Ethereum Vitalik Buterin, “Ethereum White Paper: A NEXT GENERATION SMART

    CONTRACT & DECENTRALIZED APPLICATION PLATFORM” (Dec. 2013∼) 12 ( ) (= ) = = ( ) CPU ⇒ DApps DApps = / — 2025 7-8 — 2025-06-30 – p.44/75
  31. = ( ) run = → — 2025 7-8 —

    2025-06-30 – p.45/75
  32. [Lamport 1984][Schneider 1990] ( ) (1) 0 ( ) (2)

    (3) (4) ( ) ← — 2025 7-8 — 2025-06-30 – p.46/75
  33. Ether (ETH) Ethereum EOA : Externally-Owned Account ( ) (

    ) ( ) ( ) ← Ether ( ) EVM EVM = Ethereum = — 2025 7-8 — 2025-06-30 – p.47/75
  34. EVM : Ethereum Virtual Machine ঢ়ଶ ֎෦ΞΫλʔ ΞΧ΢ϯτ &7. ίʔυ

    &UIFSˠ(BT ىಈ ίϯτϥΫτ ϝοηʔδ͔ɺ৽͍ࣗ͠ಈΦϒδΣΫτ ΞΧ΢ϯτؒͰ΍ΓऔΓ͞ΕΔσʔλ΍&UIFS ετϨʔδ ঢ়ଶ` τϥϯβΫγϣϯ ηοτ σδλϧॺ໊ &7. ਓؒͱ͔ ࣗಈ ΦϒδΣΫτ ( ) Gas ( EVM = ( burn)) — 2025 7-8 — 2025-06-30 – p.48/75
  35. / / (1) Ethereum Bitcoin ( OK) 1 — 2025

    7-8 — 2025-06-30 – p.49/75
  36. / / (2) 3 ( ) · ( ) (

    ) 1 — 2025 7-8 — 2025-06-30 – p.50/75
  37. / / (3) ( ) ( ) 1 ( )

    1,500 3,000 (← . . . ) Ethereum 2022 9 — 2025 7-8 — 2025-06-30 – p.51/75
  38. / / (4) Gwei Gwei ETH 32 ETH ( )

    ETH ETH · 32 ETH ( OK) · 16 ETH ( ) 12 ( ) ( ) 1 — 2025 7-8 — 2025-06-30 – p.52/75
  39. / / (5) 32 1 (384 ) ( ) (

    ) 2 3 ( ) 256 512 — 2025 7-8 — 2025-06-30 – p.53/75
  40. / / (6) ( ) 5 2 3 (36 )

    — 2025 7-8 — 2025-06-30 – p.54/75
  41. / / (7) ( ) ( ) DAO (RANDAO) 1

    — 2025 7-8 — 2025-06-30 – p.55/75
  42. Ethereum        ߹ҙ͞Εͨཤྺ ϩʔΧϧʹෳ੡Λҡ࣋

    ϒϩοΫ εϩοτ  ඵִؒ  εϩοτͰ  ΤϙοΫ ҉߸ֶతμΠδΣετ ϒϩοΫνΣʔϯͷҡ࣋ࢀՃऀ͕ϩʔΧϧʹ؅ཧ͢Δσʔλۭؒ ࣌ؒ ΑΓ৽͍͠ه࿥ ΦϒδΣΫτ τʔΫϯγεςϜ౳ͷεϚʔτίϯτϥΫτ ֤Ϣʔβͷ ࢒ߴ౳ͷঢ়ଶ ঢ়ଶ` ঢ়ଶ`` τϥϯβΫγϣϯ ΦϒδΣΫτͷੜ੒ ·ͨ͸ঢ়ଶભҠͷࢦࣔ ແޮͳཤྺ ω ỽ τ ϫ ồ Ϋ Λ ௨ ͠ ͯ ૹ ड ৴ ͞ Ε Δ ϩ ồ Χ ϧ ʹ ࣋ ͭ ܨ͙ͨΊʹ͸&5) Ͱͷσϙδοτͱ σϙδοτ૯ֹͷ ♤ ૬౰ͷϢʔβʹΑΔ ΤϙοΫ΁ͷূݴ͕ඞཁ શΦϒδΣΫτͷભҠޙͷঢ়ଶ ͕ϋογϡ໦˞ʹू໿͞Ε ͦͷ ϧʔτ஋͕ϒϩοΫʹॻ͔ΕΔ ঢ়ଶભҠ ˞ϋογϡ໦σʔλ܈ͷ҉߸ֶతμΠδΣετ ϋογϡ ɹΛ໦ߏ଄ʹදݱͨ͠΋ͷͰ ෆ੔߹ͷݕग़ʹ༻͍ΒΕΔ ETH ( ) ⇒ ETH = Ethereum Virtual Machine (EVM) 2 3 ETH ⇒ ETH — 2025 7-8 — 2025-06-30 – p.56/75
  43. Ethereum (ex. ) (ex. ) ⇒ → — 2025 7-8

    — 2025-06-30 – p.57/75
  44. 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 ( ) — 2025 7-8 — 2025-06-30 – p.59/75
  45. ERC-20 ERC-20 ← ( ) ( ) ⇒ ERC-20 (

    ERC-20 ) ERC-20 ⇒ — 2025 7-8 — 2025-06-30 – p.60/75
  46. (fungible) ERC-20 → ERC-223 (draft) or ERC-777 ( )( )

    (non-fungible) ERC-721 ( ) ( ) ERC-1155 ( ) ERC-3525 (SLOT ) — 2025 7-8 — 2025-06-30 – p.61/75
  47. — τʔΫϯ ୅ସ՟ฎ εϚʔτίϯτϥΫτ ݕূՄೳͳঢ়ଶϚγϯ ϓϩϏφϯε དྷྺূ໌  ୅ସՄೳ ঈؐෆೳ

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

    — 2025-06-30 – p.65/75
  49. — 1. ( ) 2. ( ) 3. ( )

    — 2025 7-8 — 2025-06-30 – p.66/75
  50. token (ERC-20 ) $ brownie bake token GitHub git clone

    $ git clone https://github.com/ks91/sample-smart-contracts.git sample-smart-contracts contracts, scripts tests token Token — 2025 7-8 — 2025-06-30 – p.67/75
  51. 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 — 2025 7-8 — 2025-06-30 – p.68/75
  52. (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") — 2025 7-8 — 2025-06-30 – p.69/75
  53. (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 — 2025 7-8 — 2025-06-30 – p.70/75
  54. (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 ( ) — 2025 7-8 — 2025-06-30 – p.71/75
  55. (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 — 2025 7-8 — 2025-06-30 – p.72/75
  56. 4. (1) × OK (2) 2025 7 3 ( )

    23:59 JST ( ) Waseda Moodle — 2025 7-8 — 2025-06-30 – p.74/75