BIP0144+wire: introduce new segregated witness inventory types

This commit adds the new inventory types for segwit which are used by
the responder to explicitly request that transactions/blocks sent for a
particular inv hash should include all witness data.
This commit is contained in:
Olaoluwa Osuntokun 2016-10-18 16:23:46 -07:00 committed by Dave Collins
parent 48abfdf87c
commit 28c5ce8e5c

View file

@ -18,6 +18,10 @@ const (
// Maximum payload size for an inventory vector. // Maximum payload size for an inventory vector.
maxInvVectPayload = 4 + chainhash.HashSize maxInvVectPayload = 4 + chainhash.HashSize
// InvWitnessFlag denotes that the inventory vector type is requesting,
// or sending a version which includes witness data.
InvWitnessFlag = 1 << 30
) )
// InvType represents the allowed types of inventory vectors. See InvVect. // InvType represents the allowed types of inventory vectors. See InvVect.
@ -29,6 +33,9 @@ const (
InvTypeTx InvType = 1 InvTypeTx InvType = 1
InvTypeBlock InvType = 2 InvTypeBlock InvType = 2
InvTypeFilteredBlock InvType = 3 InvTypeFilteredBlock InvType = 3
InvTypeWitnessBlock InvType = InvTypeBlock | InvWitnessFlag
InvTypeWitnessTx InvType = InvTypeTx | InvWitnessFlag
InvTypeFilteredWitnessBlock InvType = InvTypeFilteredBlock | InvWitnessFlag
) )
// Map of service flags back to their constant names for pretty printing. // Map of service flags back to their constant names for pretty printing.
@ -37,6 +44,9 @@ var ivStrings = map[InvType]string{
InvTypeTx: "MSG_TX", InvTypeTx: "MSG_TX",
InvTypeBlock: "MSG_BLOCK", InvTypeBlock: "MSG_BLOCK",
InvTypeFilteredBlock: "MSG_FILTERED_BLOCK", InvTypeFilteredBlock: "MSG_FILTERED_BLOCK",
InvTypeWitnessBlock: "MSG_WITNESS_BLOCK",
InvTypeWitnessTx: "MSG_WITNESS_TX",
InvTypeFilteredWitnessBlock: "MSG_FILTERED_WITNESS_BLOCK",
} }
// String returns the InvType in human-readable form. // String returns the InvType in human-readable form.