Transaction

提供: tezos-wiki
移動先: 案内検索

thumb | right | TxInとTxOutの各タイプのトランザクションのバイトマップ Aトランザクションは、[ネットワーク]にブロードキャストされ、[ブロック|ブロック]に収集されるBitcoin値の転送です。トランザクションは通常、新しいトランザクション入力として以前のトランザクション出力を参照し、すべての入力Bitcoin値を新しい出力に割り当てます。トランザクションは暗号化されていないので、ブロックに収集されたすべてのトランザクションをブラウズして表示することができます。取引が十分な確認の下に埋められると、[不可逆取引|不可逆的]とみなすことができます。

標準取引出力は住所を指名し、将来の入力の償還には関連する署名が必要です。

すべてのトランザクションはブロックチェーンに表示され、16進エディタで表示できます。 ブロックチェーンブラウザは、ブロックチェーンに含まれるすべてのトランザクションを人間が読める形式で表示できるサイトです。これは、実際の取引の技術的な詳細を確認し、支払いを確認するのに便利です。

Bitcoinトランザクションの一般的なフォーマット(ブロック内)[編集]

フィールド 説明 サイズ
バージョン番号 現在1 4バイト
インカウンター 正の整数 VI = VarInt 1〜9バイト
入力のリスト 最初のトランザクションの最初の入力は "coinbase"とも呼ばれます(以前のバージョンではその内容は無視されました) <インカウンター> - 多くのインプット
アウトカウンター 正の整数 VI = VarInt 1〜9バイト
出力のリスト 最初のトランザクションの出力はブロックのマイニングされたビットコアを消費する] <アウトカウンター> - 多くのアウトプット
lock_time 非ゼロでシーケンス番号が<0xFFFFFFFFの場合:トランザクションが最後である場合のブロックの高さまたはタイムスタンプ 4バイト

1つの入力と1つの出力のみを持つBitcoinトランザクションの原理例[編集]

データ[編集]

入力:
以前のtx:f5d8ee39a430901c91a5917b9f2dc19d6d1a0e9cea205b009ca73dd04470b9a6
インデックス:0
scriptSig:304502206e21798a42fae0e854281abd38bacd1aeed3ee3738d9e1446618c4571d10
90db022100e2ac980643b0b82c0e88ffdfec6b64e3e6ba35e7ba5fdd7d5d6cc8d25c6b241501

出力:
値:5000000000
scriptPubKey:OP_DUP OP_HASH160 404371705fa9bd789a2fcd52d2c580b65d35549d
OP_EQUALVERIFY OP_CHECKSIG </ pre>

説明[編集]

このトランザクションの入力は、トランザクションf5d8の出力#0から50 BTCをインポートします。次に、BTCをBitcoinアドレスに送信します(通常のbase58の代わりに16進数の4043 ...)。受取人がこのお金を使いたいとき、彼は自分の取引の入力でこの取引の出力#0を参照します。

入力[編集]

'input' は前のトランザクションからの出力への参照です。複数の入力は、しばしばトランザクション内にリストされます。新しいトランザクションの入力値(つまり、新しいトランザクションの入力によって参照される以前の出力の合計コイン値)が合計され、新しいトランザクションの出力によって合計(トランザクション費用はより少ない)が完全に使用されます。 '以前のtx' は前のトランザクションのハッシュです。 'Index' は参照トランザクション内の特定の出力です。 'ScriptSig' スクリプトの最初の半分です(詳細は後で説明します)。 このスクリプトには、署名と公開鍵の2つのコンポーネントが含まれています。公開鍵は、使用された出力のスクリプトで指定されたハッシュと一致する必要があります。公開鍵は、2番目のコンポーネントであるリダイレクタの署名を検証するために使用されます。より正確には、第2のコンポーネントは、単純化されたバージョンのトランザクションのハッシュに対するECDSA署名である。それは、公開鍵と組み合わされて、トランザクションが問題のアドレスの実際の所有者によって作成されたことを証明します。さまざまなフラグは、トランザクションがどのように簡略化され、異なるタイプの支払いを作成するために使用できるかを定義します。

出力[編集]

'出力' はビットコインを送るための命令を含んでいます。 Value 'は、この出力が主張されたときに価値があることになるSatoshi(1 BTC = 100,000,000 Satoshi)の数です。 'ScriptPubKey' はスクリプトの後半です(後述)。複数の出力があり、それらは入力の合計値を共有します。 1つのトランザクションからの各出力は、後続のトランザクションの入力によって一度しか参照できないため、紛失したくない場合は、結合された入力値全体を出力に送信する必要があります。入力が50BTCの価値があるが、25BTCのみを送信したい場合、Bitcoinは25BTCの2つの出力を作成します(1つは宛先に、もう1つは変更として送信されます)。あなた自身に)。出力で償還されなかった入力ビットコインは、取引手数料とみなされます。ブロックを生成した人はそれを得るでしょう。 thumb | Aは100BTCをCに送信し、Cは50BTCを生成します。 Cは101BTCをDに送り、彼は何らかの変更を送る必要があります。 Dは101BTCを他の人に送りますが、まだそれを償還していません。 Dの出力とCの変更だけが現在の状態で費やされることができます。

検証[編集]

入力が参照された出力の値を収集する権限を持っていることを確認するために、Bitcoinはカスタムの scriptingシステムを使用します。入力のscriptSigと「参照される」出力のscriptPubKeyは、scriptSigによってスタックに残された値を使用してscriptPubKeyによって評価されます(この順番で)。 scriptPubKeyがtrueを返す場合、入力は許可されます。スクリプティングシステムを通じて、送信者は、出力値を要求するために人々が満たす必要がある非常に複雑な条件を作成することができます。たとえば、誰も承認できない出力を作成することができます。入力に10種類の異なるキーで署名するか、キーの代わりにパスワードで償還することも可能です。

トランザクションの種類[編集]

Bitcoinは現在、2つの異なるscriptSig / scriptPubKeyペアを作成しています。これらについては以下で説明します。

より複雑なタイプのトランザクションを設計し、それらを相互に暗号的に実施される契約にリンクすることが可能です。これらは契約として知られています。

Pay-to-PubkeyHash[編集]

scriptPubKey:OP_DUP OP_HASH160 <pubKeyHash> OP_EQUALVERIFY OP_CHECKSIG

チェックプロセス:

スタック スクリプト 説明
空です。 <sig> <pubKey> OP_DUP OP_HASH160 <pubKeyHash> OP_EQUALVERIFY OP_CHECKSIG scriptSigとscriptPubKeyが結合されます。
<sig> <pubKey> OP_DUP OP_HASH160 <pubKeyHash> OP_EQUALVERIFY OP_CHECKSIG 定数がスタックに追加されます。
<sig> <pubKey> <pubKey> OP_HASH160 <pubKeyHash> OP_EQUALVERIFY OP_CHECKSIG 上のスタックアイテムが複製されます。
<sig> <pubKey> <pubHashA> <pubKeyHash> OP_EQUALVERIFY OP_CHECKSIG 上のスタックアイテムがハッシュされています。
<sig> <pubKey> <pubHashA> <pubKeyHash> OP_EQUALVERIFY OP_CHECKSIG 定数が追加されました。
<sig> <pubKey> OP_CHECKSIG 均等性は、上位2つのスタック項目の間でチェックされます。
空です。 署名は、上位2つのスタックアイテムに対してチェックされます。

Pay-to-Script-Hash[編集]

scriptPubKey:OP_HASH160 <scriptHash> OP_EQUAL
scriptSig:..signatures ... <シリアル化されたスクリプト>
m-of-nマルチ・シグネチャ・トランザクション:
scriptSig:0 <sig1> ... <script>
スクリプト:OP_m <pubKey1> ... OP_n OP_CHECKMULTISIG


P2SHアドレスは、資金の送付者から償還者に取引を引き渡すための条件を提供する責任を負う動機付けによって作成されたもので、送信者は、20バイトハッシュ "1。 Pay-to-Pubkey-hashアドレスは、同様に公開鍵の20バイトのハッシュです。

pay-to-script-hashは、scriptPubKeyとscriptSigの特定の定義を持つPay-to-pubkey-hashとは異なり、複雑なトランザクションの手段を提供します。この仕様書はスクリプトに制限を設けていないため、これらのアドレスを使用してあらゆる契約に資金を提供することができます。

資金調達トランザクションのscriptPubKeyは、償還トランザクションで提供されたスクリプトがアドレスの作成に使用されたスクリプトにハッシュされることを保証するスクリプトです。

上記のscriptSigでは、 'signature'は、次のシリアライズされたスクリプトを満たすのに十分な任意のスクリプトを指します。

チェックプロセス:

スタック スクリプト 説明
空です。 0 <sig1> <sig2> OP_2 <pubKey1> <pubKey2> <pubKey3> OP_3 OP_CHECKMULTISIG scriptSigのみが使用されます。
0 <sig1> <sig2> OP_2 <pubKey1> <pubKey2> <pubKey3> OP_3 OP_CHECKMULTISIG 定数がスタックに追加されます。
真実 空の スクリプト内のキーの順番で検証された署名。


参照:BIP 0016

世代[編集]

世代には単一の入力があり、この入力にはscriptSigではなく coinbaseパラメータがあります。 "coinbase"のデータは何でもかまいません。それは使用されていません。 Bitcoinは、 block headerのNonceフィールドがオーバーフローするたびにインクリメントする、現在のコンパクトフォーマットtargetと任意精度の「extraNonce」番号をそこに置きます。出力は何でもかまいませんが、BitcoinはIPアドレスのトランザクションと全く同じものを作成します。 extranonceは仕事関数の証明のための領域を拡大するのに貢献します。鉱夫はnonce(4byte)、タイムスタンプ、extranonce(2〜100bytes)を簡単に変更できます。

トランザクションの各入力の一般的なフォーマット(ブロック内) - Txin[編集]

フィールド 説明 サイズ
前のトランザクションハッシュ (前の)使用トランザクションの SHA256 - ハッシュを2倍にしました 32バイト
以前のTxout-index 使用されないトランザクションの出力を索引付けする非負整数 4バイト
Txinスクリプトの長さ 非負整数 VI = VarInt 1〜9バイト
Txin-script / scriptSig スクリプト <インスクリプトの長さ> - 何バイト
sequence_no 通常0xFFFFFFFF;トランザクションのlock_timeが> 0でない限り無関係 4バイト

入力は、ビットコイン・アマウトをどこでどのように償還するかを十分に記述している。 それがブロックの最初のトランザクションの(唯一の)入力であれば、生成トランザクション入力と呼ばれ、その内容は完全に無視されます。 (歴史的に、前のトランザクションのハッシュは0で、Previous Txout-indexは-1です)。

トランザクションの各出力の一般的な形式(ブロック内) - Txout[編集]

フィールド 説明 サイズ
Satoshis(BTC / 10 ^ 8)]]の数を与える負の整数。 8バイト
Txoutスクリプトの長さ 非負整数 1〜9バイト VI = VarInt
Txout-script / scriptPubKey スクリプト <スクリプトの長さ> - 何バイト

出力はこのビットコイン量を後で解放する条件を設定します。第1のトランザクションの出力値の合計は、ブロックのマイニングされたビットコアの値とブロック内の他のトランザクションの可能なトランザクション料金との和である。

関連項目[編集]

Category:技術 Category:Vocabulary de:Transaktion es:Transacción

pl:Transakcje