Slide 1

Slide 1 text

ABOUT TRANSACTION ౦޻େBLOCK CHAIN ݚڀձ 12/4/2018 Blockchainษڧձ #4 @r_etx

Slide 2

Slide 2 text

Content What is the Transaction ? EOA & CA Message call Contract Creation Life Cycle of Transaction State Change

Slide 3

Slide 3 text

What is transaction τϥϯβΫγϣϯͱ͸ɺσʔλϕʔε؅ཧγ εςϜʢ·ͨ͸ྨࣅͷγεςϜʣ಺Ͱ࣮ߦ͞ ΕΔɺ෼͚Δ͜ͱͷͰ͖ͳ͍Ұ࿈ͷ৘ใॲཧ ͷ୯ҐͰ͋Δɻ ࣗಈൢചػͰ͓ۚΛೖΕͯɺҿΈ෺ΛબΜͰɺ ҿΈ෺͕Ͱ͖͖͓ͯͯ௼ΓΛ΋Β͏Ұ࿈ͷ࡞ۀɻ References : [5] References : [2]

Slide 4

Slide 4 text

What is transaction Transaction is always ALL or NOTHING

Slide 5

Slide 5 text

What is transaction Ethereumͷ৔߹͸ɺ Etherͷૹۚ εϚʔτίϯτϥΫτͷؔ਺ݺͼग़͠ εϚʔτίϯτϥΫτͷσϓϩΠ User͕ཁ๬Λൃߦ͔ͯ͠ΒɺMinerʹΑͬͯঝೝ͞ΕΔ·Ͱɻ EthereumͰ͸Transaction͕શͯͷ࢝·Γ

Slide 6

Slide 6 text

What is transaction more mathematicallyɾɾɾ Transactions is like a map from previous state to next state on the Ethererum World State σ m World State σ m+1 Transactions A transaction is a single cryptographically-signed instruction. References : [2]

Slide 7

Slide 7 text

What is transaction From the view point of State, transaction is also like “Chain” of the State Chain. orld State σ m World State σ m+1 Transactions World S σ m Transactions References : [2]

Slide 8

Slide 8 text

What is transaction τϥϯβΫγϣϯ͕ຬͨ͢΂͖৚݅ τϥϯβΫγϣϯ͸ɺRLPϑΥʔϚοτʹै͍ͬͯΔɻ (RLP͸recursive length prefixͷུ) τϥϯβΫγϣϯͷॺ໊͕༗ޮͰ͋Δɻ τϥϯβΫγϣϯͷnonce͕༗ޮͰ͋Δɻɹɹɹɹɹɹɹɹɹɹɹɹɹ ૹ৴ऀͷݱࡏͷnonceͱ౳͍͔͠Ͳ͏͔ݕূ͢Δɻ τϥϯβΫγϣϯʹࣄલʹఆΊΒΕ͍ͯΔGasྔΑΓ΋ɺɹɹɹɹɹɹ gas limit͕େ͖͘ઃఆ͞Ε͍ͯΔɻ ૹ৴ऀͷΞΧ΢ϯτͷ࢒ߴ͕ɺࢧ෷͍ͷඅ༻ΑΓ΋্ճ͍ͬͯΔɻ ☑ ☑ ☑ ☑ ☑

Slide 9

Slide 9 text

What is transaction τϥϯβΫγϣϯͷݕূ͕ߦΘΕͨΒɺsubstate͕࡞੒͞ΕΔɻ substate͸ɺ self-destruct set τϥϯβΫγϣϯมߋޙʹ͸ه͞ΕΔΞΧ΢ϯτ৘ใ log sires τϥϯβΫγϣϯ͕Ͳ͜·Ͱ࣮ߦ͞Εͨͷ͔Λอ࣋͢Δ refund balance τϥϯαΫγϣϯ׬ྃޙʹϝϞϦʔΛݮΒͨ͠෼ͱͯ͠ฦ͞ΕΔeth ͔ΒͳΔɻ Substate

Slide 10

Slide 10 text

EOA & CA EthereumͷAccountʹ͸ɼೋछྨ͋Δ EOA(Externally Owned Account) ֎෦ΞΧ΢ϯτ CA(Contract Account) ίϯτϥΫτ༻ͷΞΧ΢ϯτ τϥϯβΫγϣϯ͸ɺ͜ΕΒͷΞΧ΢ϯτؒͰߦΘΕΔɻ CA͸ɺContrac༻ͷ CodeΛ͍࣋ͬͯΔ

Slide 11

Slide 11 text

EOA & CA EOA STORAGE BLANCE NONCE CODE ADDREDD CA STORAGE BLANCE NONCE CODE ADDREDD EOA͸ɺൿີ伴Ͱ؅ཧ͞ΕɺCodeΛ࣋ͨͳ͍ɻ CA͸ɺEVM codeΛ΋ͪɺEVMCodeͰ؅ཧ͞ΕΔɻ References : [2]

Slide 12

Slide 12 text

EOA & CA def mk_contract_address(sender, nonce): return sha3(rlp.encode([normalize_address(sender), nonce]))[12:] ͪͳΈʹɺCA(Contract Account)ͷΞυϨε͸ɺ senderͷΞυϨεͱnonce͔Βࢉग़͞ΕΔ https://github.com/ethereum/pyethereum/blob/782842758e219e40739531a5e56fff6e63ca567b/ethereum/ utils.py

Slide 13

Slide 13 text

Message Call τϥϯβΫγϣϯʹ͸ɼ2छྨ͋Δ:) User͕ཁ๬Λൃߦ͔ͯ͠ΒɺMinerʹΑͬͯঝೝ͞ΕΔ·Ͱɻ EthereumͰ͸Transaction͕શͯͷ࢝·Γ CA͸EOA͔ΒͷΈੜ੒Ͱ͖Δɻ Message Call Contract creation Create Call NEW

Slide 14

Slide 14 text

Message Callʹ͸ɺ4छྨ͋Δɻ Message Call internal tx͸signͳ͠ͰBlockchainʹ΋ॻ͖ࠐ·Εͳ͍ Contract codeΛInterfaceɺBackend͝ͱʹҟͳΔCAʹ هड़͢Δ৔߹ɺݺͼग़࣌͠ʹɺinternal txΛ࢖͏͜ͱʹͳΔɻ internal transaction 㽟 ᶆ ᶅ ᶄ

Slide 15

Slide 15 text

Message Call τϥϯαΫγϣϯʹ͸ɼ2छྨ͋Δ:) User͕ཁ๬Λൃߦ͔ͯ͠ΒɺMinerʹΑͬͯঝೝ͞ΕΔ·Ͱɻ EthereumͰ͸Transaction͕શͯͷ࢝·Γ Message Call Contract creation Create Call NEW

Slide 16

Slide 16 text

Message Call User͕ཁ๬Λൃߦ͔ͯ͠ΒɺMinerʹΑͬͯঝೝ͞ΕΔ·Ͱɻ EthereumͰ͸Transaction͕શͯͷ࢝·Γ Message Call Contract creation Create Call NEW ·ͣ͸ɺContract Creation͔Β

Slide 17

Slide 17 text

input code Contract Creation World State σm World State σ m+1 Transactions Init code Account State A Account State B Account State C ɾ ɾ ɾ Account State A Account State B Account State C ɾ ɾ Account State X NEW ৽͍͠CAͷΞυϨεΛੜ੒͠ॳظઃఆޙɺτϥϯβΫγϣϯͱͯ͠initίʔυ ΛૹΔ͜ͱͰίϯτϥΫτΞΧ΢ϯτ͕ੜ੒͞ΕΔ References : [2]

Slide 18

Slide 18 text

Message Call World State σm World State σ m+1 Transactions Init data Account State A Account State B Account State C ɾ ɾ Account State A Account State B Account State C ɾ ɾ Account State X Update Message CallʹΑͬͯContract Accountͷσʔλ͸update͞ΕΔɻ input data Account State X References : [2]

Slide 19

Slide 19 text

Contract Creation τϥϯβΫγϣϯΛൃߦͨ͠EOAͷΞυϨεͱnonce͔Β CAͷΞυϨεΛ࡞੒ STORAGE BLANCE NONCE CODE ADDREDD

Slide 20

Slide 20 text

Contract Creation ੜ੒͞ΕͨCAͷnonceΛ0ʹॳظԽ CAʹEOA͔Βૹۚ͞ΕͨEtherΛઃఆɻ STORAGE BLANCE NONCE CODE ADDREDD

Slide 21

Slide 21 text

Contract Creation CAͷstorageΛnullʹ null string seriesΛcodeHashʹઃఆ STORAGE BLANCE NONCE CODE ADDREDD

Slide 22

Slide 22 text

Contract Creation ॳظίʔυΛ࣮ߦͯ͠CAΛ࡞੒ (Error͕ൃੜ͢Ε͹࢒͍ͬͯΔEther͕ฦۚ) ॳظίʔυ࣮ߦ׬ྃޙίϯτϥΫταΠζʹԠͯ͡ Gas͕ࢧ෷ΘΕ͋·Γ͕໭ͬͯ͘Δɻ STORAGE BLANCE NONCE CODE ADDREDD

Slide 23

Slide 23 text

Message Call

Slide 24

Slide 24 text

Message Call State TreeͷτϥϯβΫγϣϯૹ৴ऀͷnonceΛ 1ΠϯΫϦϝϯτ͢Δɻ τϥϯβΫγϣϯʹඞཁͳGasΛEOA͔Βࠩ͠Ҿ͘ STORAGE BLANCE’ NONCE+1 CODE ADDREDD

Slide 25

Slide 25 text

Message Call τϥϯβΫγϣϯ࣮ߦޙʹ࢒͍ͬͯΔGasͱRefund Balanceʹ هड़ͯ͋͠ΔGas͕ฦۚ͞ΕΔ ฦ͕ۚऴΘΔͱτϥϯβΫγϣϯΛऔΓࠐΜͰ͘Εͨ ϚΠφʔϒϩοΫੜ੒ϊʔυʹ࢖༻ͨ͠GasͷETH͕ૹΒΕΔɻ STORAGE BLANCE’ NONCE+1 CODE ADDREDD

Slide 26

Slide 26 text

Message Call Set-Destructʹؚ·ΕΔ৘ใΛ৘ใΛ࡟আ τϥϯβΫγϣϯʹ࢖ͬͨGasྔͱlogΛه࿥ STORAGE BLANCE’ NONCE+1 CODE ADDREDD

Slide 27

Slide 27 text

Life Cycle of transaction Pending POOL Queued POOL References : [4]

Slide 28

Slide 28 text

Information of Transaction blockHash: “0x3584caa04632ce227cf259ab8086d460d497067e666fdf9c5b58756f738ad51c", blockNumber: 37214317, from: “0x0eea8963fd6f19ff4299ac9ccb774266a98ba6b1", gas: 4600000, gasPrice: 100000000000, hash: “0xd59f0a4c159aa2a2058bd7d8dc4b759d1d6474d3f4b85606e3b4a3d00ff73e10", input: "0x", nonce: 42, r; “0xa4c159aa2a2058bd7d8dca4c159aa2a2058bd7d8dca4c159aa2a2058bd7d” s; “0xb759d1d6474d3f4b85606e3b4a3b759d1d6474d3f4b85606e3b4a34279a6” to: “0x0f0a4c159aa2a2058bd7d8dc4b759d1d6474d3f", transactionIndex: 3, v; “0x66” value: 5000000000

Slide 29

Slide 29 text

GAS LIMIT GAS PRICE NONCE INIT / DATA R.S.V TO VALU Information of Transaction

Slide 30

Slide 30 text

·ͱΊ τϥϯβΫγϣϯʹ͍ͭͯৄ͘͠ཧղͰ͖ͨɻ

Slide 31

Slide 31 text

https://y0za.github.io/2017-12-24/geth-transaction/ Reference https://takenobu-hs.github.io/downloads/ethereum_evm_illustrated.pdf https://speakerdeck.com/yamarkz/detail-ethereum-transaction [1] [2] [3] https://kb.myetherwallet.com/gas/what-is-gas-ethereum.html [4] [5] https://ja.wikipedia.org/wiki/ %E3%83%88%E3%83%A9%E3%83%B3%E3%82%B6%E3%82%AF%E3%82 %B7%E3%83%A7%E3%83%B3