Slide 1

Slide 1 text

ࣾ಺Ծ૝௨՟Λ ϞόΠϧDappͱͯ͠ ͭͬͯ͘Έͨ Hi-Ether Meetup - Block #1 @st_dsk 0x00

Slide 2

Slide 2 text

ࣗݾ঺հ ࠤ౻ େี(@st_dsk) Co-Founder & CTO at Popshoot, Inc #go #swift #☕ medium.com/@st_dsk 0x01 Works + Dapp?

Slide 3

Slide 3 text

ΞδΣϯμ 0x03 • ࣾ಺Ծ૝௨՟Λ࡞ͬͯΈͨ࿩ • ϞόΠϧDapp։ൃʹඞཁͳ͜ͱ • ϥΠϒϥϦͷ঺հ • ϞόΠϧDapp͕ීٴͨ͠ੈք

Slide 4

Slide 4 text

Ethereum 0x04 • EthereumΛษڧ࢝͠Ίͯ໿̍ϲ݄ • ʮϒϩοΫνΣʔϯΞϓϦέʔγϣϯ։ൃͷڭՊॻʯ

Slide 5

Slide 5 text

0x05 ໘ന͍

Slide 6

Slide 6 text

Go build something 0x06 ʮͱΓ͋͑ͣࣾ಺Ծ૝௨՟Ͱ΋ͭͬͯ͘ΈΔ͔ʯ

Slide 7

Slide 7 text

ΞδΣϯμ 0x07 • ࣾ಺Ծ૝௨՟Λ࡞ͬͯΈͨ࿩ • ϞόΠϧDapp։ൃʹඞཁͳ͜ͱ • ϥΠϒϥϦͷ঺հ • ϞόΠϧDapp͕ීٴͨ͠ੈք

Slide 8

Slide 8 text

ࣾ಺Ծ૝௨՟Λ࡞ͬͯΈͨ࿩ᶃ 0x08 ࣮૷ • ERC20ʹ४ڌͨ͠ಠࣗτʔΫϯͷൃߦ • ϓϥΠϕʔτϒϩοΫνΣʔϯ • JSONRPCܦ༝Ͱࢀর&τϥϯβΫ γϣϯͷൃߦ

Slide 9

Slide 9 text

ࣾ಺Ծ૝௨՟Λ࡞ͬͯΈͨ࿩ᶄ 0x09 ࢖͍ํ • ࣾһಉ࢜ͷૹۚ • ίʔώʔ୅΍ࣗ࡞ΦϑΟεάϦίͷ ࢧ෷͍ • ग़ࣾ࣌ؒͷه࿥ • ࡿͷି͠ग़͠(IoTͱͷ૊Έ߹Θͤ)

Slide 10

Slide 10 text

ࣾ಺Ծ૝௨՟Λ࡞ͬͯΈͨ࿩ᶅ 0x0a ॴײ • ʮίʔώʔ1ഋ200ϝϧͰʯΈ͍ͨͳڞ௨୯Ґ͕Ͱָ͖͍ͯ͠ • ͍Ζ͍ΖαʔϏεΛ࡞ͬͯͷͤΔʹ͸ྑ͍࣮ݧ୆ • ࣾ಺͔ΒΞΠσΞ͕ͨ͘͞Μग़͖ͯͯՄೳੑΛײ͡Δ • ͍Ζ͍Ζ࡞͍͖͍ͬͯͨ

Slide 11

Slide 11 text

ΞδΣϯμ 0x0b • ࣾ಺Ծ૝௨՟Λ࡞ͬͯΈͨ࿩ • ϞόΠϧDapp։ൃʹඞཁͳ͜ͱ • ϥΠϒϥϦͷ঺հ • ϞόΠϧDapp͕ීٴͨ͠ੈք

Slide 12

Slide 12 text

ϞόΠϧDappͱ͸ 0x0c • ϒϩοΫνΣʔϯ্ʹߏஙͨ͠εϚʔτίϯτϥΫτΞϓ ϦέʔγϣϯΛ࣮ߦ͢ΔͨΊͷΫϥΠΞϯτΞϓϦ ϞόΠϧDapp ᶄεϚʔτίϯτϥΫτ ࣮ߦ ϒϩοΫνΣʔϯ ᶃ τϥϯβΫγϣϯͷൃߦ (εϚʔτϑΥϯΞϓϦ)

Slide 13

Slide 13 text

ϒϥ΢βDapp 0x0d • Webϒϥ΢β্Ͱಈ͘ • CryptoKitties౳ͷήʔϜ͕ྲྀߦத • MetaMaskΛ࢖͏ͱγʔϜϨεʹૹۚͰ͖ΔͷͰ։ൃଆ΋Ϣʔβʔଆ ΋ศརʹ࢖͑Δ

Slide 14

Slide 14 text

ϞόΠϧDapp 0x0d • Ͳ͏΍ͬͯ࡞Δʁ

Slide 15

Slide 15 text

࣮૷ύλʔϯ(JSONRPCܦ༝) 0x0f Ethereum
 Client Server (Wallet&Txॺ໊) ϞόΠϧDapp API Tx params JSONRPC Signed Tx Ethereum
 Client Wallet App (Wallet&Txॺ໊) ϞόΠϧDapp URL Scheme? JSONRPC Signed Tx Ethereum
 Client ϞόΠϧDapp (Wallet&Txॺ໊) Tx params JSONRPC Signed Tx ᶃ αʔόʔͰ΢ΥϨοτ؅ཧ&Txൃߦ ᶄ ֎෦΢ΥϨοτΞϓϦ͔ΒTxൃߦ ᶅ ΞϓϦͰ΢ΥϨοτ؅ཧ&Txൃߦ

Slide 16

Slide 16 text

࣮૷ύλʔϯ(JSONRPCܦ༝) 0x10 Ethereum
 Client Server (Wallet&Txॺ໊) ϞόΠϧDapp API Tx params JSONRPC Signed Tx Ethereum
 Client Wallet App (Wallet&Txॺ໊) ϞόΠϧDapp URL Scheme? JSONRPC Signed Tx Ethereum
 Client ϞόΠϧDapp (Wallet&Txॺ໊) Tx params JSONRPC Signed Tx ᶃ αʔόʔͰ΢ΥϨοτ؅ཧ&Txൃߦ ᶄ ֎෦΢ΥϨοτΞϓϦ͔ΒTxൃߦ ᶅ ΞϓϦͰ΢ΥϨοτ؅ཧ&Txൃߦ

Slide 17

Slide 17 text

ϞόΠϧDappʹඞཁͳཁૉ 0x0e • ΢ΥϨοτ • ൿີ伴΍ΞυϨεͷੜ੒&ӬଓԽ • ABIύʔαʔ(✳ͨͩ͠ඞਢͰ͸ͳ͍) • ABI͔ΒίϯτϥΫτͷؔ਺৘ใΛऔಘ • ؔ਺γάωνϟͷϋογϡͱҾ਺ύϥϝʔλΛ࿈݁ͨ͠จࣈྻͷग़ྗ • Txੜ੒ͱॺ໊ • ൿີ伴Λ࢖༻ͯ͠Txʹର͢Δॺ໊(ίϯτϥΫτʹରͯ͠มߋΛՃ͑Δ৔߹) • JSONRPCΫϥΠΞϯτ • EthereumΫϥΠΞϯτͱͷ௨৴(ϒϩοΫνΣʔϯͷࢀর΍TxൃߦͳͲ)

Slide 18

Slide 18 text

۩ମతͳϑϩʔ 0x11 • ERC20τʔΫϯͷtransferؔ਺ΛJSONRPCܦ༝ͰCall͢Δ 1. ΢ΥϨοτ͔ΒΞυϨεͷੜ੒ 2. ίϯτϥΫτͷؔ਺γάωνϟͷsha3ϋογϡͱҾ਺ύϥϝʔλͷ256bit௕ͷ16ਐ਺จࣈྻ ͷ࿈݁ • "0x" + "sha3(`transfer(address,uint256)`)" + "<ૹۚઌΞυϨε>" + "<ૹֹۚ>" • => τϥϯβΫγϣϯͷdataύϥϝʔλ 3. τϥϯβΫγϣϯੜ੒͠ɺൿີ伴Ͱॺ໊ 4. ॺ໊ͨ͠τϥϯβΫγϣϯΛRLPΤϯίʔσΟϯά => "0xf8aa0684ee6b280082d8...b50504ccf8721dafc7b47" 5. EthereumΫϥΠΞϯτʹରͯ͠JSONRPCͰeth_sendRawTransactionΛCall͢Δ > curl -X POST http://127.0.0.1:8545 --data `{ "jsonrpc": "2.0", "id": 1, "method": "eth_sendRawTransaction", "params": ["0xf8aa0684ee6b280082d8...b50504ccf8721dafc7b47"] }'

Slide 19

Slide 19 text

ΞδΣϯμ 0x12 • ࣾ಺Ծ૝௨՟Λ࡞ͬͯΈͨ࿩ • ϞόΠϧDapp։ൃʹඞཁͳ͜ͱ • ϥΠϒϥϦͷ঺հ • ϞόΠϧDapp͕ීٴͨ͠ੈք

Slide 20

Slide 20 text

ϥΠϒϥϦ(iOS) 0x13 ΢ΥϨοτ ABIύʔαʔ Txੜ੒ͱॺ໊ JSONRPC ΫϥΠΞϯτ web3swift (BANKEX/web3swift) ○ passphrase/ BIP32,39,44 ○ ○ ○ Geth Mobile (ethereum/go-ethereum) ○ passphrase × ○ × EthereumKit (yuzushiof/EthereumKit) ○ BIP32,39,44 × ○ ○ ୯ҰػೳΛఏڙ͢ΔϥΠϒϥϦ: JSONRPCKit, RLP.swift, BigInt, CryptoSwift, etc... શ෦ͷͤܥϥΠϒϥϦ:

Slide 21

Slide 21 text

ΞδΣϯμ 0x14 • ࣾ಺Ծ૝௨՟Λ࡞ͬͯΈͨ࿩ • ϞόΠϧDapp։ൃʹඞཁͳ͜ͱ • ϥΠϒϥϦͷ঺հ • ϞόΠϧDapp͕ීٴͨ͠ੈք

Slide 22

Slide 22 text

ϞόΠϧDapp͕ීٴͨ͠ੈքʁ 0x15 • ̍ਓ̍΢ΥϨοτ(ϝοηϯδϟʔΞϓϦͷΑ͏ʹʁ) • ͋ΒΏΔDapp͕εϚϗΛ௨ͯ͠ϒϩοΫνΣʔϯʹ • DecentralizedͳαʔϏεΛεϚϗ͔ΒڗडͰ͖Δੈք

Slide 23

Slide 23 text

ݱঢ়ͷ՝୊(ϞόΠϧDapp) 0x16 • πʔϧ΍ϥΠϒϥϦෆ଍ • ࣗલͰ࣮૷ or ૊Έ߹ΘͤΔඞཁ͕͋Δ • MetaMaskͷΑ͏ͳγʔϜϨεͳ΢ΥϨοτ͕ͳ͍ • ։ൃ͕ͮ͠Β͘ɺෆศͳ͜ͱ͕ଟ͍ • Ϣʔβʔ͕ѻ͍ʹ͍͘ • ద੾ͳUI/UX͕ଘࡏ͠ͳ͍ͷͰ໛ࡧ͕ඞཁ • ϞόΠϧͳΒͰ͸ͷ੍໿ͷதͰͷ࣮૷

Slide 24

Slide 24 text

·ͱΊ 0x17 • ϞόΠϧDapp͸͜Ε͔Β࢝·͍ͬͯ͘ • ΍ΕΔ͜ͱ͸ͨ͘͞Μ͋Δ • ʮGo build somethingʯ͍ͯ͘͜͠ͱ͕ඞཁ

Slide 25

Slide 25 text

0x18 ͋Γ͕ͱ͏͍͟͝·ͨ͠ ΍͍͖ͬͯ