Slide 1

Slide 1 text

2018/03/16 blockchain.tokyo #6 in Cyber Agent Kazuki Yamaguchi (@yamarkz) Gunosy Inc. ৄղ Ethereum Transaction ~Transactionͷ֓ཁ͔Β࢓૊Έ·Ͱ·Δͬͱ঺հ~

Slide 2

Slide 2 text

Kazuki Yamaguchi / @yamarkz Software Engineer @Gunosy Graduated from Spring 2017 WebApplication Rails Dapps Solidity Research CryptoCurrency & Blockchain Github & Twitter @yamarkz

Slide 3

Slide 3 text

Gunosy Blockchain Blog΍ͬͯ·͢ʂ ʮhttp://blockchain.gunosy.ioʯor ʮάϊγʔ ϒϩοΫνΣʔϯʯ

Slide 4

Slide 4 text

※τϥϯβΫγϣϯʹ͍ͭͯৄղʹ࿩ͨ͢ΊɺϒϩοΫνΣʔϯɺΞΧ΢ϯτɺϚΠχϯάͳͲɺ पลγεςϜͷ࿩͸୺ંΓ·͢ Agenda • Ethereum & Transaction • 2 Type Transaction • Message 4 Pattern • Transaction Life Cycle • Transaction for Data Structure • Transaction Pool & Nonce • Transaction Releasing

Slide 5

Slide 5 text

Ethereum & Transaction

Slide 6

Slide 6 text

※ ίϯτϥΫτ࣮ߦͷΠϝʔδ ※ EtherʹΑΔࢧ෷͍ͷΠϝʔδ ίϯτϥΫτͷ࣮ߦ => τϥϯβΫγϣϯͷૹ৴ ICO΁ͷࢀՃ => τϥϯβΫγϣϯͷૹ৴ Etherͷૹۚ => τϥϯβΫγϣϯͷૹ৴ ίϯτϥΫτͷ࡞੒ => τϥϯβΫγϣϯͷૹ৴ Ethereumʹ͓͍ͯɺTransaction͸શͯͷ࢝·Γ

Slide 7

Slide 7 text

EthereumͷTransaction͸େ͖͘2ͭʹ෼͚ΒΕΔ Contract Creation Message (৽ͨͳίϯτϥΫτ࡞੒) (ίϯτϥΫτͷ࣮ߦ or Etherͷૹۚ) New!!! A͞Μ͔ΒB͞Μ΁ 3Ether ૹۚ ίϯτϥΫτͷؔ਺࣮ߦ ৽ͨͳίϯτϥΫτͷσϓϩΠ A B

Slide 8

Slide 8 text

(৽ͨͳίϯτϥΫτ࡞੒) Contract Creation ৽ͨͳίϯτϥΫτͷσϓϩΠ New!!! ͬͪ͜ΛΑΓਂ͘෼ղͯ͠ΈΔ EthereumͷTransaction͸େ͖͘2ͭʹ෼͚ΒΕΔ A͞Μ͔ΒB͞Μ΁ 3Ether ૹۚ A B ίϯτϥΫτͷؔ਺࣮ߦ Message (ίϯτϥΫτͷ࣮ߦ or Etherͷૹۚ)

Slide 9

Slide 9 text

Message͸4ͭʹ෼ྨ͞ΕΔ Transaction From EOA EVM code From CA To EOA To CA EOA EOA Transaction Message EOA CA Message CA EOA Message Code CA Code CA Transaction Message From: Ethereum EVM illustrated

Slide 10

Slide 10 text

Transaction Life Cycle

Slide 11

Slide 11 text

1. Transactionʹॺ໊ 2. TransactionΛϊʔυʹϒϩʔυΩϟετ ϊʔυ Tx ༗ޮͳτϥϯβΫγϣϯ͔όϦσʔγϣϯ ؔ࿈ϊʔυʹ఻ൖ TxPool Metamask etc… Queued Pending ɾ఻ൖ࣌ͷTransaction͸ɺSerialize͞ΕΔ ɾGas PriceʹΑͬͯϊʔυ͸อ࣋͢Δ͔൑அͰ͖Δ Tx Tx Tx Tx Block Tx Tx ϚΠχϯά ϒϩοΫνΣʔϯ Txͷঢ়گʹΑͬͯɺ PendingͱQueued෼͚ΒΕΔ ΞΧ΢ϯτͷঢ়ଶ͕มΘΔ ΞΧ΢ϯτͷঢ়ଶ͕มΘΔ START ϚΠφʔϊʔυ ϊʔϚϧϊʔυ ϩʔΧϧϊʔυ A B Pendingͷத͔ΒϚΠχϯά͢ΔTxΛɺ ϚΠφʔ͕બ୒͢Δ

Slide 12

Slide 12 text

Pendingͷத͔ΒϚΠχϯά͢ΔTxΛɺ ϚΠφʔ͕બ୒͢Δ ؔ࿈ϊʔυʹ఻ൖ TxPool Queued Pending ɾ఻ൖ࣌ͷTransaction͸ɺSerialize͞ΕΔ ɾGas PriceʹΑͬͯϊʔυ͸อ࣋͢Δ͔൑அͰ͖Δ Tx Tx Tx Tx Block Tx Tx ϚΠχϯά ϒϩοΫνΣʔϯ Txͷঢ়گʹΑͬͯɺ PendingͱQueued෼͚ΒΕΔ ΞΧ΢ϯτͷঢ়ଶ͕มΘΔ ΞΧ΢ϯτͷঢ়ଶ͕มΘΔ ϚΠφʔϊʔυ ϊʔϚϧϊʔυ B A ϊʔυ Tx ༗ޮͳτϥϯβΫγϣϯ͔όϦσʔγϣϯ ϩʔΧϧϊʔυ 1. Transactionʹॺ໊ 2. TransactionΛϊʔυʹϒϩʔυΩϟετ Metamask etc… START

Slide 13

Slide 13 text

Pendingͷத͔ΒϚΠχϯά͢ΔTxΛɺ ϚΠφʔ͕બ୒͢Δ 1. Transactionʹॺ໊ 2. TransactionΛϊʔυʹϒϩʔυΩϟετ ϊʔυ Tx ༗ޮͳτϥϯβΫγϣϯ͔όϦσʔγϣϯ Metamask etc… Tx Tx Tx Tx Block ϚΠχϯά ϒϩοΫνΣʔϯ ΞΧ΢ϯτͷঢ়ଶ͕มΘΔ ΞΧ΢ϯτͷঢ়ଶ͕มΘΔ START ϩʔΧϧϊʔυ A B ؔ࿈ϊʔυʹ఻ൖ ɾ఻ൖ࣌ͷTransaction͸ɺSerialize͞ΕΔ ɾGas PriceʹΑͬͯϊʔυ͸อ࣋͢Δ͔൑அͰ͖Δ Tx ϚΠφʔϊʔυ ϊʔϚϧϊʔυ TxPool Queued Pending Tx Txͷঢ়گʹΑͬͯɺ PendingͱQueued෼͚ΒΕΔ

Slide 14

Slide 14 text

1. Transactionʹॺ໊ 2. TransactionΛϊʔυʹϒϩʔυΩϟετ ϊʔυ Tx ༗ޮͳτϥϯβΫγϣϯ͔όϦσʔγϣϯ ؔ࿈ϊʔυʹ఻ൖ Metamask etc… ɾ఻ൖ࣌ͷTransaction͸ɺSerialize͞ΕΔ ɾGas PriceʹΑͬͯϊʔυ͸อ࣋͢Δ͔൑அͰ͖Δ Tx ϒϩοΫνΣʔϯ ΞΧ΢ϯτͷঢ়ଶ͕มΘΔ ΞΧ΢ϯτͷঢ়ଶ͕มΘΔ START ϊʔϚϧϊʔυ ϩʔΧϧϊʔυ A B Tx Tx Tx Tx Block ϚΠχϯά ϚΠφʔϊʔυ TxPool Queued Pending Tx Txͷঢ়گʹΑͬͯɺ PendingͱQueued෼͚ΒΕΔ Pendingͷத͔ΒϚΠχϯά͢ΔTxΛɺ ϚΠφʔ͕બ୒͢Δ

Slide 15

Slide 15 text

Pendingͷத͔ΒϚΠχϯά͢ΔTxΛɺ ϚΠφʔ͕બ୒͢Δ 1. Transactionʹॺ໊ 2. TransactionΛϊʔυʹϒϩʔυΩϟετ ϊʔυ Tx ༗ޮͳτϥϯβΫγϣϯ͔όϦσʔγϣϯ ؔ࿈ϊʔυʹ఻ൖ TxPool Metamask etc… Queued Pending ɾ఻ൖ࣌ͷTransaction͸ɺSerialize͞ΕΔ ɾGas PriceʹΑͬͯϊʔυ͸อ࣋͢Δ͔൑அͰ͖Δ Tx Tx Tx Tx Block Tx Tx Txͷঢ়گʹΑͬͯɺ PendingͱQueued෼͚ΒΕΔ START ϚΠφʔϊʔυ ϊʔϚϧϊʔυ ϩʔΧϧϊʔυ A ϚΠχϯά ΞΧ΢ϯτͷঢ়ଶ͕มΘΔ ΞΧ΢ϯτͷঢ়ଶ͕มΘΔ B ϒϩοΫνΣʔϯ A

Slide 16

Slide 16 text

1. Transactionʹॺ໊ 2. TransactionΛϊʔυʹϒϩʔυΩϟετ ϊʔυ Tx ༗ޮͳτϥϯβΫγϣϯ͔όϦσʔγϣϯ ؔ࿈ϊʔυʹ఻ൖ TxPool Metamask etc… Queued Pending ɾ఻ൖ࣌ͷTransaction͸ɺSerialize͞ΕΔ ɾGas PriceʹΑͬͯϊʔυ͸อ࣋͢Δ͔൑அͰ͖Δ Tx Tx Tx Tx Block Tx Tx ϚΠχϯά ϒϩοΫνΣʔϯ Txͷঢ়گʹΑͬͯɺ PendingͱQueued෼͚ΒΕΔ ΞΧ΢ϯτͷঢ়ଶ͕มΘΔ ΞΧ΢ϯτͷঢ়ଶ͕มΘΔ START ϚΠφʔϊʔυ ϊʔϚϧϊʔυ ϩʔΧϧϊʔυ A B Pendingͷத͔ΒϚΠχϯά͢ΔTxΛɺ ϚΠφʔ͕બ୒͢Δ Ұ࿈ͷྲྀΕΛܦͯɺτϥϯβΫγϣϯ͸࠷ऴతʹΞΧ΢ϯτͷঢ়ଶΛมߋ͢Δ

Slide 17

Slide 17 text

Transaction for Data Structure

Slide 18

Slide 18 text

Transaction Nonce Gas Price Gas Limit To Value v, r, s Init or data CLI্Ͱ֬ೝͰ͖ΔTransactionͷத਎ Transaction for Data Structure

Slide 19

Slide 19 text

CLI্Ͱ֬ೝͰ͖ΔTransactionͷத਎ Nonce Gas Price Gas Limit To Value v, r, s Init or data ϢχʔΫͰ͋Δ͜ͱΛࣔ͢ ૹۚ͢ΔEtherͷֹ Contract࣮ߦ࣌ʹফඅ͢ΔGasͷ੍ݶ EVMίʔυ͕ೖΔϑΟʔϧυ Transaction Transaction for Data Structure

Slide 20

Slide 20 text

Transaction Pool & Nonce

Slide 21

Slide 21 text

Pendingͷத͔ΒϚΠχϯά͢ΔTxΛɺ ϚΠφʔ͕બ୒͢Δ 1. Transactionʹॺ໊ 2. TransactionΛϊʔυʹϒϩʔυΩϟετ ϊʔυ Tx ༗ޮͳτϥϯβΫγϣϯ͔όϦσʔγϣϯ ؔ࿈ϊʔυʹ఻ൖ Metamask etc… ɾ఻ൖ࣌ͷTransaction͸ɺSerialize͞ΕΔ ɾGas PriceʹΑͬͯϊʔυ͸อ࣋͢Δ͔൑அͰ͖Δ Tx Tx Tx Tx Block Tx ϚΠχϯά ϒϩοΫνΣʔϯ ΞΧ΢ϯτͷঢ়ଶ͕มΘΔ ΞΧ΢ϯτͷঢ়ଶ͕มΘΔ START ϚΠφʔϊʔυ ϊʔϚϧϊʔυ ϩʔΧϧϊʔυ A B TxPool Queued Pending Tx ͜͜ͷ࿩ Txͷঢ়گʹΑͬͯɺ PendingͱQueued෼͚ΒΕΔ

Slide 22

Slide 22 text

Transaction Pool Transaction Pool (ҎԼɺTxPool)ͱ͸ɺϒϩοΫʹऔΓࠐ·ΕΔલͷτϥϯβΫγϣϯ͕Ұ࣌ తʹอଘ͞ΕΔۭؒɻۭؒ͸ϊʔυͷϚγϯϝϞϦ্ʹ࡞ΒΕΔɻ ϚγϯϝϞϦ্ʹ࡞ΒΕΔͨΊɺϚγϯͷిݯ͕མͪΔͱTxPool಺ͷτϥϯβΫγϣϯ΋ফ͑ Δɻ ϊʔυ͸ࣗ਎ͷϝϞϦۭؒʹؚΊΔτϥϯβΫγϣϯΛGasPriceͰબผ͢Δ͜ͱ͕Ͱ͖Δɻ TxPoolͷۭؒ͸2ͭ Pending • ϒϩοΫʹऔΓࠐ·ΕͯOKͳτϥϯβΫγϣϯ͕อଘ͞ΕΔ Queued • ϒϩοΫʹऔΓࠐ·ΕͯNGͳτϥϯβΫγϣϯ͕อଘ͞ΕΔ • τϥϯβΫγϣϯͷNonceʹΪϟοϓ͕ଘࡏ͢Δ৔߹ɺPendingͰ͸ͳ͘ɺ Queuedʹอଘ͞ΕΔɻQueuedͷ໾ׂ͸ɺωοτϫʔΫ͔Β౸ணͨ͠ॱং֎τϥ ϯβΫγϣϯΛΧόʔ͢Δ͜ͱɻ(τϥϯβΫγϣϯͷॱংΛकΔ͜ͱ)

Slide 23

Slide 23 text

Transaction Pool & Nonce TxPool ͷPendingͱQueuedͷڍಈ Nonce 37ͷTx͕଍Γͳ͍ঢ়گ Nonce 37͕TxPoolʹϒϩʔυΩϟετ or ఻ൖ͞Εͨ͜ͱʹΑΓɺ QueuedͷTx͸nonceͷॱং͕ἧ͏ɻ ἧ͏͜ͱͰϚΠχϯάOKͳTxʹͳΓPendingʹҠಈ͢Δ

Slide 24

Slide 24 text

Transaction Nonce From: Mastering Ethereum Nonce͸ಉҰΞΧ΢ϯτ͔ΒͷTransaction Orderͷূ໌Ͱ͋Γɺ τϥϯβΫγϣϯͷೋॏࢧग़໰୊Λղܾ͢Δɻ Nonce͸Transactionʹ͓͍ͯ࠷΋ॏཁͳίϯϙʔωϯτͰ͋Γɺ ࠷΋ཧղ͞Ε͍ͯͳ͍ՕॴͰ΋͋Δɻ Tx Nonce 1 Tx Nonce 2 Tx Nonce 3 Tx Nonce 4 ಉҰΞΧ΢ϯτ͔ΒͷτϥϯβΫγϣϯ͸NonceͷॱংʹԊͬͯɺϒϩοΫʹऔΓࠐ·ΕΔɻ Nonce1ͱNonce2ͷτϥϯβΫγϣϯ͕ಉҰΞΧ΢ϯτA͔Β࡞ΒΕͨ৔߹ɺNonce2ͷτϥϯ βΫγϣϯ͸Nonce1ͷτϥϯβΫγϣϯ͕ϚΠχϯά͞Εͳ͍ݶΓɺϚΠχϯά͞Εͳ͍ɻ NonceͷॱংʹԊͬͯτϥϯβΫγϣϯ͕ϒϩοΫʹऔΓࠐΉϓϩτίϧʹΑΓɺೋॏࢧग़Λ๷ ͍Ͱ͍Δɻ

Slide 25

Slide 25 text

Transaction Releasing

Slide 26

Slide 26 text

Transaction Releasing ϒϩʔυΩϟετͨ͠τϥϯβΫγϣϯΛͳ͔ͬͨ͜ͱʹ͍ͨ͠ or τϥϯβΫγϣϯ͕ͳ͔ͳ͔ϚΠχϯά͞Εͳ͍ͷͰGas PriceΛ্͛௚͍ͨ͠ Ethereumʹ͸ϒϩʔυΩϟετͨ͠τϥϯβΫγϣϯΛ࡟আ͢Δ࢓૊Έ͕ͳ͍ ͔͠͠ɺ ະঝೝτϥϯβΫγϣϯΛ ߋ৽ ͢Δ͜ͱ͕Մೳ ~έʔεελσΟ~

Slide 27

Slide 27 text

Transaction Releasing ະঝೝτϥϯβΫγϣϯͷߋ৽ (Releasing) ߋ৽͍ͨ͠τϥϯβΫγϣϯʹৼΒΕ͍ͯΔNonceͱಉ͡NonceΛࢦఆͨ͠τϥϯβΫγϣϯ Λ࡞੒͠ɺϒϩʔυΩϟετ͢Δ͜ͱͰະঝೝτϥϯβΫγϣϯΛߋ৽͢Δ͜ͱ͕Ͱ͖Δɻ ߋ৽Ͱ͸஋ͷमਖ਼͕ՄೳͳͷͰɺ3Etherͷૹ৴͢ΔͷΛͳ͔ͬͨ͜ͱʹ͢ΔͨΊʹɺ0Etherͷ τϥϯβΫγϣϯΛૹ৴͠ͳ͓ͤ͹ɺະঝೝτϥϯβΫγϣϯ͸ߋ৽͞ΕΔͷͰɺͳ͔ͬͨ͜ ͱʹͳΔɻ(※ख਺ྉͰ͋ΔGas୅͸ඞཁ) ߋ৽Ͱ͸Ŋߋ৽ઌτϥϯβΫγϣϯ͕࣋ͭGasPriceͷ10%Ҏ্ߴ͍ GasPriceͷߋ৽τϥϯβΫ γϣϯΛ࡞੒͠ͳ͚Ε͹͍͚ͳ͍ Tx A͞Μ͔ΒB͞Μ΁ 3Etherͷૹۚ Tx A͞Μ͔ΒB͞Μ΁ 0Etherͷૹۚ ߋ৽ઌ ߋ৽ݩ ߋ৽ʂʂ ϒϩʔυΩϟετ Tx A͞Μ͔ΒB͞Μ΁ 0Etherͷૹۚ TxPool

Slide 28

Slide 28 text

Transaction Releasing Transaction Releasingͷڍಈ Nonce 41ͷະঝೝτϥϯβΫγϣϯ ಉ͡Nonce Ͱ͔ͭɺ10%Ҏ্ߴ͍GasPriceͷTxΛϒϩʔυΩϟετ͢Δ͜ͱͰߋ৽ ߋ৽TxʹΑΓɺ3Etherͷૹ͕ۚ0EtherʹͳΓɺ࣮࣭ͷૹۚ͸औΓফ͢͜ͱ͕Ͱ͖͍ͯΔ

Slide 29

Slide 29 text

Transactionʹ͸2ͭͷେ͖ͳ෼ྨͱ4ͭͷϝοηʔδύλʔϯ͕͋Δ Ethereum͸ΞΧ΢ϯτ΍ίϯτϥΫτͱ͍͏֓೦͕͋ΔͨΊɺ
 τϥϯβΫγϣϯͷ࢓૊Έ΍ߏ଄΋ෳࡶ Nonceͷ࢓૊Έ͕Life CycleΛཧղ͢Δ্Ͱॏཁͳ伴ͱͳΔ Contract։ൃΛਐΊΔ্ͰTransactionͷ࢓૊ΈΛཧղ͢Δͷ͸ॏཁ ·ͱΊ

Slide 30

Slide 30 text

ɾWhat is Gas? ɾEthereum EVM Illustrated ɾMastering Ethereum ɾEthereum White Paper ɾEthereum Yellow Paper ɾEthereum Wiki ɾLife Cycle of an Ethereum Transaction ࢀߟࢿྉ

Slide 31

Slide 31 text

Q&A 1 Q. τϥϯβΫγϣϯͷૹۚݩ͸Ͳ͏΍ͬͯ൑அ͢Δͷʁ A. τϥϯβΫγϣϯʹؚ·ΕΔॺ໊͸ૹ৴ݩͷΞΧ΢ϯτͷൿີ伴͔Β͔͠࡞ΒΕͳ͍ͨΊɺͦͷॺ ໊Ͱ൑அ͢Δ Q.τϥϯβΫγϣϯΛ࡞੒ͨ͠΋ͷͷɺΞΧ΢ϯτεςʔτͷߋ৽ͷॱংͰૹۚऀ͕े෼ͳEtherΛ ͍࣋ͬͯͳ͔ͬͨ৔߹τϥϯβΫγϣϯ͸Ͳ͏ͳΔͷʁ A. τϥϯβΫγϣϯ͸ૹۚ͸ࣦഊͱͳΔ΋ͷͷɺτϥϯβΫγϣϯࣗମ͸ϚΠχϯά͞Εɺख਺ྉͷ Έ͕ϚΠφʔʹࢧ෷ΘΕΔ Q.ΞΧ΢ϯτ͕࣋ͭNonceΑΓ΋௿͍஋Λ߱ͬͨτϥϯβΫγϣϯΛϒϩʔυΩϟετ͢ΔͱͲ͏ͳΔ ͷʁ A. ϒϩʔυΩϟετઌͷϩʔΧϧϊʔυͷόϦσʔγϣϯͰ஄͔ΕTxPoolʹೖΒͣɺτϥϯβΫγϣ ϯ͸ഁغ͞Εɺૹ৴ݩʹ͸Τϥʔ͕ฦΔ Q.τϥϯβΫγϣϯʹઃఆͰ͖ΔGas Limitͷ஋͸࠷ߴ͍ͭ͘ʁ A. ཧ࿦্͸ϒϩοΫͷGas Limitͱಉ͡

Slide 32

Slide 32 text

Q&A 2 Q. ϒϩʔυΩϟετͨ͠τϥϯβΫγϣϯΛ࡟আ͍ͨ͠৔߹Ͳ͏͢Ε͹ྑ͍ͷʁ A. EthereumͰ͸ϒϩʔυΩϟετͨ͠τϥϯβΫγϣϯͷ࡟আػೳ͸͋Γ·ͤΜɻԾʹɺτϥϯβΫ γϣϯΛͳ͔ͬͨ͜ͱʹ͍ͨ͠ (ૹۚΛऔΓফ͍ͨ͠) ৔߹͸ɺಉ͡NonceͰValue஋Λ0ʹ͠Gas PriceΛߴ͍΋ͷʹ࡞੒ͯ͠ϒϩʔυΩϟετ͢Δ Q. ૹۚͷΈͰར༻ͨ͠৔߹ͷख਺ྉͬͯͲ͏ͳΔͷʁ A. GasPrice × τϥϯβΫγϣϯͷόΠτ௕ ͷ஋͕ख਺ྉʹͳΔ Q. TxPoolͷ྆ʑ͕ᷓΕΔ΄ͲτϥϯβΫγϣϯ͕ཷ·ͬͨ৔߹ɺᷓΕͨτϥϯβΫγϣϯ͸Ͳ͏ͳΔ ͷʁ A. τϥϯβΫγϣϯͷGasPrice͕௿͍΋ͷ͔ΒPool͔Β௥͍ग़͞Ε͍ͯ͘ Q. NonceͷॱংͰɺઌʹߴ͍NonceͷτϥϯβΫγϣϯΛϚΠφʔ͕ϚΠχϯά͠ɺϚΠχϯάʹ੒ޭ ͨ͠৔߹ɺϒϩοΫ͸Ͳ͏ͳΔͷʁ A. ԾʹɺϚΠχϯάʹ੒ޭͨ͠ͱͯ͠΋ɺNonceͷॱংΛक͍ͬͯͳ͍τϥϯβΫγϣϯΛؚΜͩϒ ϩοΫ͸ແޮͱͳΓɺνΣʔϯʹܨ͕Εͳ͍

Slide 33

Slide 33 text

͝੩ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠ʂ✨