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.
@ -25,18 +29,24 @@ type InvType uint32
// These constants define the various supported inventory vector types. // These constants define the various supported inventory vector types.
const ( const (
InvTypeError InvType = 0 InvTypeError InvType = 0
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.
var ivStrings = map[InvType]string{ var ivStrings = map[InvType]string{
InvTypeError: "ERROR", InvTypeError: "ERROR",
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.