RealPath:
WebPath:
2018/08/12 10:29 (JST) 更新
トランザクション >>

トランザクションの構造

Contents

クラス

Tx

/** The basic transaction that is broadcasted on the network and contained in
 * blocks.  A transaction can contain multiple inputs and outputs.
 */
class CTransaction
{
public:
    // 固有データ
    const int32_t             nVersion;  // バージョン番号
    const std::vector<CTxIn>  vin;       // インプットリスト
    const std::vector<CTxOut> vout;      // アウトプットリスト
    const uint32_t            nLockTime; // トランザクション発生時のブロック高 (日時ではないことに注意)

private:
    // 動的計算
    const uint256             hash;      // トランザクションのハッシュ
};

ローカルで発生したトランザクションの場合、nVersion は必ず CTransaction::CURRENT_VERSION (現在は 2) になる。

TxIn

/** An outpoint - a combination of a transaction hash and an index n into its vout */
class COutPoint
{
public:
    uint256     hash;   // transaction hash
    uint32_t    n;      // transaction's output index (0~)
};

/** An input of a transaction.  It contains the location of the previous
 * transaction's output that it claims and a signature that matches the
 * output's public key.
 */
class CTxIn
{
public:
    COutPoint       prevout;        // いわゆる UTXO (prev tx hash & output index)
    CScript         scriptSig;      // 署名スクリプト
    uint32_t        nSequence;      // 0xffffffff (※)
    CScriptWitness  scriptWitness;  //! Only serialized through CTransaction
};

TxOut

/** An output of a transaction.  It contains the public key that the next input
 * must be able to sign with to claim it.
 */
class CTxOut
{
public:
    CAmount nValue;         // 送金額
    CScript scriptPubKey;   // 送金先
};

定数

class CTransaction
{
public:
    // Default transaction version.
    static const int32_t CURRENT_VERSION=2;

    // Changing the default transaction version requires a two step process: first
    // adapting relay policy by bumping MAX_STANDARD_VERSION, and then later date
    // bumping the default CURRENT_VERSION at which point both CURRENT_VERSION and
    // MAX_STANDARD_VERSION will be equal.
    static const int32_t MAX_STANDARD_VERSION=2;
};

状態変更可能なトランザクション (途中計算用)

struct CMutableTransaction
{
    int32_t             nVersion;
    std::vector<CTxIn>  vin;
    std::vector<CTxOut> vout;
    uint32_t            nLockTime;
};

未検証トランザクションプール

※グローバル変数

validation.cpp, validation.h
CTxMemPool mempool(::minRelayTxFee);