Dump format

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

Bitcoinは、次のような形式でさまざまなデータ構造をダンプします。

 CBlock(hash = 000000000019d6、ver = 1、hashPrevBlock = 00000000000000、hashMerkleRoot = 4a5e1e、nTime = 1231006505、nBits = 1d00ffff、nNonce = 2083236893、vtx = 1)
  CTransaction(ハッシュ= 4a5e1e、ver = 1、vin.size = 1、vout.size = 1、nLockTime = 0)
    CTxIn(COutPoint(000000、-1)、コインベース04ffff001d010)
    CTxOut(nValue = 50.00000000、scriptPubKey = 0x5F1DF16B2B704C8A578D0B)
  vMerkleTree:4a5e1e </ pre>

インデントにはメンバーシップが表示されます。上記の例では、CTxInおよびCTxOut構造体は、CBlock構造体の一部であるCTransaction構造体の一部です。構造体に格納されているデータは、かっこ内に表示されます。

使用されるすべての名前はBitcoinの関連する変数/クラスの名前ですが、変数の値は正確には示されていない場合があります。特に、長いデータは短縮され、16進数に変換されることがあります。

この形式はBitcoinで広く使用されているため、この形式を理解することが重要です。Bitcoinブロック/トランザクションについて議論する際には、そのコンパクトさのために好ましい形式です。

Bitcoin -printblockスイッチはCBlockダンプを生成します。



[編集]

ハッシュについての一般的な注意[編集]

ハッシュ関数からの出力は、通常、ビッグエンディアンのバイト列と見なされます。 0x00のSHA-256ハッシュを表示する伝統的な方法は次のようになります。  6e340b9cffb37a989ca544e6bb780a2c78901d3fb33738768511a30617afa01d

Bitcoinはハッシュを大きな数字として使用し、計算を実行するため、Bitcoin関連のハッシュを表示する標準的な方法はリトルエンディアンの数字です。 Bitcoin形式の上記と同じハッシュ:  1da0af1706a31185763837b33f1d90782c0a78bbe644a59c987ab3ff9c0b346e

Bitcoinは、ハッシュ操作ごとに2つのハッシュも行います。実際の0x00のBitcoinハッシュは次のようになります。  9a538906e6466ebd2617d321f71bc94e56056ce213d366773699e28158e00614

COutPoint[編集]

 COutPoint(000000、-1) CTxIn構造体の一部で、これは特定の出力を参照します。最初の値はトランザクションの切り捨てられたハッシュであり、2番目の値は出力インデックスです。

CTxIn[編集]

 CTxIn(COutPoint(237fe8,0)、scriptSig = 0xA87C02384E1F184B79C6AC)  CTxIn(COutPoint(000000、-1)、コインベース04ffff001d010)  CTxIn(COutPoint(237fe8,0)、scriptSig = 0xA87C02384E1F184B79C6AC、nSequence = 5000) トランザクション入力。 scriptSigは入力の切り捨てられたscriptSigです。 "coinbase"は世代入力の切り捨てられていないscriptSigです。 nSequenceは、入力にデフォルト以外のシーケンスがある場合にのみ表示されます。シーケンス番号はトランザクション置換機能での使用を意図していますが、現在は安全に無視できます。

CScript[編集]

 OP_DUP OP_HASH160 c28af0f6a8d2c5601e0fd1c3c19bcd74c107e8c7 OP_EQUALVERIFY OP_CHECKSIG 抽象スクリプトは、スペースで区切られた一連の単語で構成され、左から右に評価されます。各オペコードのニーモニックが与えられます。定数は、必要なOP_PUSHDATA操作のない16進数で表示されます。

CTxOut[編集]

 CTxOut(nValue = 50.00000000、scriptPubKey = OP_DUP OP_HASH160 0x1512) トランザクション出力。 nValueは完全精度の出力値です。 scriptPubKeyは、出力用の切り捨てられたCScriptです(スクリプト文字列全体が30文字に切り捨てられます)。

CTransaction[編集]

<pre> CTransaction(ハッシュ= 4a5e1e、ver = 1、vin.size = 1、vout.size = 1、nLockTime = 0)   CTxIn(COutPoint(000000、-1)、コインベース04ffff001d010)   CTxOut(nValue = 50.00000000、scriptPubKey = 0x5F1DF16B2B704C8A578D0B)</ pre> トランザクション。ハッシュは切り詰められたハッシュです。 verはトランザクションバージョンです。 vout.sizeは出力数です。 nLockTimeは、トランザクション置換での使用を目的としており、現在は何も有用ではありません。

CBlock[編集]

ブロック。ハッシュは切り捨てられたハッシュです。バージョンはブロックバージョンです。 HashPrevBlockは、前のブロックの切り捨てられたハッシュです。 HashMerkleRootは、短縮されたMerkleルートです。 nTimeはブロックのUnixタイムスタンプです。 nBitsはコンパクトな形式の現在のターゲットです。 nNonceはノンスです。 vtxはトランザクションの数です。

vMerkleTreeは、Merkleツリーのハッシュのリストです。あなたは注文を見て、木の作り方を見ることができます。下位層が最初にリストされ、次に上位層がリストされます。たとえば、次のブロックを考えます。 <pre> CBlock(hash = 00000000009ffdadbb2a、ver = 1、hashPrevBlock = 0000000000b079382c19、hashMerkleRoot = e81287、 nTime = 1281156783、nBits = 1c00ba18、nNonce = 2283211008、vtx = 6)   CTransaction(ハッシュ= 2d7f4d、ver = 1、vin.size = 1、vout.size = 1、nLockTime = 0)     CTxIn(COutPoint(000000、-1)、コインベース0418ba001c02ce03)     CTxOut(nValue = 50.00000000、scriptPubKey = 0x4FE11D72F988AEA611F026)   CTransaction(ハッシュ= 3407a8、ver = 1、vin.size = 2、vout.size = 1、nLockTime = 0)     CTxIn(COutPoint(df39bf、0)、scriptSig = 0x01DD1AD8E9EFE65B70E983)     CTxIn(COutPoint(64ebea、1)、scriptSig = 0x0165A1F9873BA16265D9C4)     CTxOut(nValue = 0.06000000、scriptPubKey = OP_DUP OP_HASH160 0xEDEF)   CTransaction(ハッシュ= 5edf5a、ver = 1、vin.size = 1、vout.size = 1、nLockTime = 0)     CTxIn(COutPoint(b77e0f、0)、scriptSig = 0x01E39C53AFC1B9BE02E53A)     CTxOut(nValue = 350.00000000、scriptPubKey = OP_DUP OP_HASH160 0xD7EF)   CTransaction(ハッシュ= 65c356、ver = 1、vin.size = 1、vout.size = 2、nLockTime = 0)     CTxIn(COutPoint(893335,0)、scriptSig = 0x01B8C315FD58F0DFA0DEA2)     CTxOut(nValue = 1.85850000、scriptPubKey = OP_DUP OP_HASH160 0x3181)     CTxOut(nValue = 3.14150000、scriptPubKey = OP_DUP OP_HASH160 0xF99E)   CTransaction(ハッシュ= 89aa32、ver = 1、vin.size = 1、vout.size = 2、nLockTime = 0)     CTxIn(COutPoint(4a7469,0)、scriptSig = 0x010D15199DCE4B11D391CF)     CTxOut(nValue = 0.05000000、scriptPubKey = OP_DUP OP_HASH160 0x5603)     CTxOut(nValue = 0.20000000、scriptPubKey = OP_DUP OP_HASH160 0x6074)   CTransaction(ハッシュ= e3e69c、ver = 1、vin.size = 1、vout.size = 2、nLockTime = 0)     CTxIn(COutPoint(b77e0f、1)、scriptSig = 0x012E18AF1264180255E0C3)     CTxOut(nValue = 50.00000000、scriptPubKey = OP_DUP OP_HASH160 0x458E)     CTxOut(nValue = 100.00000000、scriptPubKey = OP_DUP OP_HASH160 0x9EEF)   vMerkleTree:2d7f4d 3407a8 5edf5a 65c356 89aa32 e3e69c 8ebc6a d5e414 89b77c d1074c 70a4e6 e81287 </ pre> vMerkleTreeでは、2d7f4d-e3e69cはトランザクションです。残りのハッシュはツリーハッシュです。先頭のハッシュがブロックヘッダーに含まれるMerkleルートであることに注意してください。木:

               --------- e81287 -------                | |         ---- d1074c ----- 70a4e6(これは2つの89b77cハッシュのハッシュです)         | | |     -8bc6a-d5e414- -89b77c-     | | | | | |  2d7f4d 3407a8 5edf5a 65c356 89aa32e3e69c

Category:技術