bitcoinのtransaction とは®...※:bitcoinでは手数料を1,000satoshi以上にしないと...

31
BitcoinTransaction とは @DG Lab Nakagawa © 2017 Digital Garage. All rights reserved. Redistribution or public display not permitted without written permission from Digital Garage.

Upload: others

Post on 25-Sep-2020

2 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: BitcoinのTransaction とは®...※:bitcoinでは手数料を1,000satoshi以上にしないと ブロードキャストしない可能性があります 手数料(fee)とは

BitcoinのTransactionとは

@DG Lab Nakagawa

© 2017 Digital Garage. All rights reserved. Redistribution or public display not permitted without written permission from Digital Garage.

Page 2: BitcoinのTransaction とは®...※:bitcoinでは手数料を1,000satoshi以上にしないと ブロードキャストしない可能性があります 手数料(fee)とは

Agenda

・Transactionとは・インプットとは・アウトプットとは・インプットとアウトプットの関係・手数料(fee)とは・UTXO(Unspent Transaction Output)とは

2

Page 3: BitcoinのTransaction とは®...※:bitcoinでは手数料を1,000satoshi以上にしないと ブロードキャストしない可能性があります 手数料(fee)とは

Transactionとは

3

Page 4: BitcoinのTransaction とは®...※:bitcoinでは手数料を1,000satoshi以上にしないと ブロードキャストしない可能性があります 手数料(fee)とは

Transactionとは

satoshi(BTC)を取引する時に使い

ブロックの中に残るデータ

4

Page 5: BitcoinのTransaction とは®...※:bitcoinでは手数料を1,000satoshi以上にしないと ブロードキャストしない可能性があります 手数料(fee)とは

Transactionとは

簡単な構造

5

名称 概要

version Transactionのバージョン(基本「1」)

tx_in count インプットの数

tx_in[0] … tx_in[n] インプット

tx_out count アウトプットの数

tx_out[0] … tx_out[n] アウトプット

lock_time Unixタイムスタンプ、またはブロック高(基本0)

Page 6: BitcoinのTransaction とは®...※:bitcoinでは手数料を1,000satoshi以上にしないと ブロードキャストしない可能性があります 手数料(fee)とは

Transactionとは

簡単な構造

6

名称 概要

version Transactionのバージョン(基本「1」)

tx_in count インプットの数

tx_in[0] … tx_in[n] インプット

tx_out count アウトプットの数

tx_out[0] … tx_out[n] アウトプット

lock_time Unixタイムスタンプ、またはブロック高(基本0)

※Transactionは、 少なくとも1つのインプットとアウトプットを持つ

Page 7: BitcoinのTransaction とは®...※:bitcoinでは手数料を1,000satoshi以上にしないと ブロードキャストしない可能性があります 手数料(fee)とは

インプットとは

7

Page 8: BitcoinのTransaction とは®...※:bitcoinでは手数料を1,000satoshi以上にしないと ブロードキャストしない可能性があります 手数料(fee)とは

インプットとは

簡単な構造

8

名称 概要

previous_outputhash 未使用のTransactionID(TXID)index 上記IDのインデックス

script length スクリプトのデータサイズ

signature script 署名スクリプト(unlocking Script)sequence シーケンス

Page 9: BitcoinのTransaction とは®...※:bitcoinでは手数料を1,000satoshi以上にしないと ブロードキャストしない可能性があります 手数料(fee)とは

インプットとは

簡単な構造

9

名称 概要

previous_outputhash 未使用のTransactionID(TXID)index 上記IDのインデックス

script length スクリプトのデータサイズ

signature script 署名スクリプト(unlocking Script)sequence シーケンス

※Transactionのインプットとは 未使用Transaction(UTXO)のエンドポイント

後で説明!

Page 10: BitcoinのTransaction とは®...※:bitcoinでは手数料を1,000satoshi以上にしないと ブロードキャストしない可能性があります 手数料(fee)とは

アウトプットとは

簡単な構造

10

名称 概要

value 送信額

pk_script length スクリプトのデータサイズ

pk_script 送信先?(locking script)

Page 11: BitcoinのTransaction とは®...※:bitcoinでは手数料を1,000satoshi以上にしないと ブロードキャストしない可能性があります 手数料(fee)とは

アウトプットとは

簡単な構造

11

名称 概要

value 送信額

pk_script length スクリプトのデータサイズ

pk_script 送信先?(locking script)

※Transactionのアウトプットとは 送信額と送信先?(locking script)

後で説明!

Page 12: BitcoinのTransaction とは®...※:bitcoinでは手数料を1,000satoshi以上にしないと ブロードキャストしない可能性があります 手数料(fee)とは

インプットとアウトプットの関係

12

Page 13: BitcoinのTransaction とは®...※:bitcoinでは手数料を1,000satoshi以上にしないと ブロードキャストしない可能性があります 手数料(fee)とは

インプットとアウトプットの関係

  どうやったら使える?誰でも使える?

13

トランザクション1(Tx1)インプット0(tx_in[0])インプット1(tx_in[1])アウトプット0(tx_out[0])アウトプット1(tx_out[1])

トランザクション2(Tx2)インプット0(tx_in[0])

アウトプット0(tx_out[0])アウトプット1(tx_out[1])

アウトプットは次のトランザクションのインプットとなる

Page 14: BitcoinのTransaction とは®...※:bitcoinでは手数料を1,000satoshi以上にしないと ブロードキャストしない可能性があります 手数料(fee)とは

インプットとアウトプットの関係

14

アウトプット

value

pk_script length

pk_script

インプット

previous_outputhashindex

script lengthsignature scriptsequence

アウトプットのエンドポイント

これが解けたら使える!(locking script)

pk_scriptを解くScript(unlocking script)

Page 15: BitcoinのTransaction とは®...※:bitcoinでは手数料を1,000satoshi以上にしないと ブロードキャストしない可能性があります 手数料(fee)とは

Transactionの例

15

・手数料(fee)・UTXO

Page 16: BitcoinのTransaction とは®...※:bitcoinでは手数料を1,000satoshi以上にしないと ブロードキャストしない可能性があります 手数料(fee)とは

Transactionの例

取引(AAAさんがCCCさんに500,000satoshi支払う)

16

Tx1tx_ins tx_in[0]tx_outs tx_out[0] 1,000,000 AAA tx_out[1] 998,000 BBB

Tx2tx_ins tx_in[0] Tx1 0tx_outs tx_out[0] 500,000 CCC tx_out[1] 498,000 AAA

取引:AAAさんがCCCさんに500,000satoshi支払う

Page 17: BitcoinのTransaction とは®...※:bitcoinでは手数料を1,000satoshi以上にしないと ブロードキャストしない可能性があります 手数料(fee)とは

Transactionの例

取引(AAAさんがCCCさんに500,000satoshi支払う)

17

Tx1tx_ins tx_in[0]tx_outs tx_out[0] 1,000,000 AAA tx_out[1] 998,000 BBB

Tx2tx_ins tx_in[0] Tx1 0tx_outs tx_out[0] 500,000 CCC tx_out[1] 498,000 AAA

取引:AAAさんがCCCさんに500,000satoshi支払う

※Transacationの  アウトプットは使い切り

Page 18: BitcoinのTransaction とは®...※:bitcoinでは手数料を1,000satoshi以上にしないと ブロードキャストしない可能性があります 手数料(fee)とは

手数料(fee)とは

 

18

Tx1tx_outs tx_out[0] 1,000,000 AAA

Tx2tx_outs tx_out[0] 500,000 CCC tx_out[1] 498,000 AAA

1,000,000 - (500,000 + 498,000) = 2,000手数料(fee)は、2,000satoshi

※:bitcoinでは手数料を1,000satoshi以上にしないと      ブロードキャストしない可能性があります

Page 19: BitcoinのTransaction とは®...※:bitcoinでは手数料を1,000satoshi以上にしないと ブロードキャストしない可能性があります 手数料(fee)とは

手数料(fee)とは

手数料(fee)=「インプットの総額」ー「アウトプットの総額」

・手数料(fee)はどうやって決まる? トランザクションのデータサイズ/1byteあたりのSatoshi 1,000satoshi以上が望ましい

・手数料(fee)が少ないとどうなる? ブロックに入るのに時間がかかる

19

Page 20: BitcoinのTransaction とは®...※:bitcoinでは手数料を1,000satoshi以上にしないと ブロードキャストしない可能性があります 手数料(fee)とは

手数料(fee)とは

現在のMainnetのFeeは?

https://estimatefee.appspot.com/

※:1Kbyteあたりの手数料(fee)20

Page 21: BitcoinのTransaction とは®...※:bitcoinでは手数料を1,000satoshi以上にしないと ブロードキャストしない可能性があります 手数料(fee)とは

UTXO(Unspent Transaction Output)とは

 

21

Tx1tx_ins tx_in[0]tx_outs tx_out[0] 1,000,000 AAA tx_out[1] 998,000 BBB

Tx2tx_ins tx_in[0] Tx1 0tx_outs tx_out[0] 500,000 CCC tx_out[1] 498,000 AAA

※:UTXOは未使用Transaction  (TransactionIDとアウトプットのインデックス)

Page 22: BitcoinのTransaction とは®...※:bitcoinでは手数料を1,000satoshi以上にしないと ブロードキャストしない可能性があります 手数料(fee)とは

演習

22

Page 23: BitcoinのTransaction とは®...※:bitcoinでは手数料を1,000satoshi以上にしないと ブロードキャストしない可能性があります 手数料(fee)とは

演習

次の4つの取引が行われた場合、AAA、BBB、CCCが所持して

いるsatoshiの総額とUTXOはどれか? 

23

Tx1tx_ins tx_in[0]tx_outs tx_out[0] 1,000,000 AAA tx_out[1] 998,000 BBB tx_out[2] 1,000,000 CCC

Tx2tx_ins tx_in[0] Tx1 2

tx_outs tx_out[0] 500,000 BBB tx_out[1] 498,000 AAA

Tx3tx_ins tx_in[0] Tx2 0

tx_outs tx_out[0] 498,000 CCC

Tx4tx_ins tx_in[0] Tx3 0 tx_in[1] Tx1 0tx_outs tx_out[0] 1,496,000 BBB

Page 24: BitcoinのTransaction とは®...※:bitcoinでは手数料を1,000satoshi以上にしないと ブロードキャストしない可能性があります 手数料(fee)とは

24

Tx1tx_ins tx_in[0]tx_outs tx_out[0] 1,000,000 AAA tx_out[1] 998,000 BBB tx_out[2] 1,000,000 CCC

Tx3tx_ins tx_in[0] Tx2 0

tx_outs tx_out[0] 498,000 CCC

Tx4tx_ins tx_in[0] Tx3 0 tx_in[1] Tx1 0tx_outs tx_out[0] 1,496,000 BBB

Tx2tx_ins tx_in[0] Tx1 2

tx_outs tx_out[0] 500,000 BBB tx_out[1] 498,000 AAA

Page 25: BitcoinのTransaction とは®...※:bitcoinでは手数料を1,000satoshi以上にしないと ブロードキャストしない可能性があります 手数料(fee)とは

回答

 

25

UTXOTx1 1Tx2 1Tx4 0

AAA Tx2 1 498,000

Total:498,000 satoshi

BBB Tx1 1 998,000 Tx4 0 1,496,000

Total:2,494,000 satoshi

CCCTotal:0 satoshi

Page 26: BitcoinのTransaction とは®...※:bitcoinでは手数料を1,000satoshi以上にしないと ブロードキャストしない可能性があります 手数料(fee)とは

26

Tx1tx_ins tx_in[0]tx_outs tx_out[0] 1,000,000 AAA tx_out[1] 998,000 BBB tx_out[2] 1,000,000 CCC

Tx2tx_ins tx_in[0] Tx1 2

tx_outs tx_out[0] 500,000 BBB tx_out[1] 498,000 AAA

Tx3tx_ins tx_in[0] Tx2 0

tx_outs tx_out[0] 498,000 CCC

Tx4tx_ins tx_in[0] Tx3 0 tx_in[1] Tx1 0tx_outs tx_out[0] 1,496,000 BBB

Page 27: BitcoinのTransaction とは®...※:bitcoinでは手数料を1,000satoshi以上にしないと ブロードキャストしない可能性があります 手数料(fee)とは

まとめ

27

Page 28: BitcoinのTransaction とは®...※:bitcoinでは手数料を1,000satoshi以上にしないと ブロードキャストしない可能性があります 手数料(fee)とは

Transactionのライフサイクル

 

28

トランザクション生成(署名)

各ノードに送信(検証)

ブロック化(承認)

Page 29: BitcoinのTransaction とは®...※:bitcoinでは手数料を1,000satoshi以上にしないと ブロードキャストしない可能性があります 手数料(fee)とは

まとめ

29

・Transactionは、少なくとも1つのインプットとアウトプットを持つ

・インプットとは未使用Transaction(UTXO)のエンドポイント

・アウトプットとは送信額と送信先?(locking script)・アウトプットは使い切り

・手数料(fee)=「インプットの総額」ー「アウトプットの総額」

・手数料(fee)はトランザクションのサイズによって決まる

・UTXOは使用していないTransaction(TransactionIDとアウトプットのインデックス)

Page 30: BitcoinのTransaction とは®...※:bitcoinでは手数料を1,000satoshi以上にしないと ブロードキャストしない可能性があります 手数料(fee)とは

参考資料

30

・ビットコインとブロックチェーン:暗号通貨を支える技術 ISBN-13: 978-4757103672・Bitcoin: A Peer-to-Peer Electronic Cash System https://bitcoin.org/bitcoin.pdf・Protocol documentation https://en.bitcoin.it/wiki/Protocol_documentation・Transactions https://bitcoin.org/en/developer-guide#transactions