haskoin-core-1.1.0: Bitcoin & Bitcoin Cash library for Haskell
CopyrightNo rights reserved
LicenseMIT
Maintainerjprupp@protonmail.ch
Stabilityexperimental
PortabilityPOSIX
Safe HaskellSafe-Inferred
LanguageHaskell2010

Haskoin.Network.Message

Description

Peer-to-peer network message serialization.

Synopsis

Network Message

data Message Source #

The Message type is used to identify all the valid messages that can be sent between bitcoin peers. Only values of type Message will be accepted by other bitcoin peers as bitcoin protocol messages need to be correctly serialized with message headers. Serializing a Message value will include the MessageHeader with the correct checksum value automatically. No need to add the MessageHeader separately.

Instances

Instances details
Generic Message Source # 
Instance details

Defined in Haskoin.Network.Message

Associated Types

type Rep Message :: Type -> Type #

Methods

from :: Message -> Rep Message x #

to :: Rep Message x -> Message #

Show Message Source # 
Instance details

Defined in Haskoin.Network.Message

NFData Message Source # 
Instance details

Defined in Haskoin.Network.Message

Methods

rnf :: Message -> () #

Eq Message Source # 
Instance details

Defined in Haskoin.Network.Message

Methods

(==) :: Message -> Message -> Bool #

(/=) :: Message -> Message -> Bool #

type Rep Message Source # 
Instance details

Defined in Haskoin.Network.Message

type Rep Message = D1 ('MetaData "Message" "Haskoin.Network.Message" "haskoin-core-1.1.0-EPeWWz60EKPlWai44F9WC" 'False) ((((C1 ('MetaCons "MVersion" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Version)) :+: C1 ('MetaCons "MVerAck" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "MAddr" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Addr)) :+: (C1 ('MetaCons "MInv" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Inv)) :+: C1 ('MetaCons "MGetData" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 GetData))))) :+: ((C1 ('MetaCons "MNotFound" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 NotFound)) :+: (C1 ('MetaCons "MGetBlocks" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 GetBlocks)) :+: C1 ('MetaCons "MGetHeaders" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 GetHeaders)))) :+: (C1 ('MetaCons "MTx" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Tx)) :+: (C1 ('MetaCons "MBlock" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Block)) :+: C1 ('MetaCons "MMerkleBlock" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 MerkleBlock)))))) :+: (((C1 ('MetaCons "MHeaders" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Headers)) :+: (C1 ('MetaCons "MGetAddr" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "MFilterLoad" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 FilterLoad)))) :+: (C1 ('MetaCons "MFilterAdd" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 FilterAdd)) :+: (C1 ('MetaCons "MFilterClear" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "MPing" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Ping))))) :+: ((C1 ('MetaCons "MPong" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Pong)) :+: (C1 ('MetaCons "MAlert" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Alert)) :+: C1 ('MetaCons "MMempool" 'PrefixI 'False) (U1 :: Type -> Type))) :+: (C1 ('MetaCons "MReject" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Reject)) :+: (C1 ('MetaCons "MSendHeaders" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "MOther" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 ByteString) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 ByteString)))))))

data MessageHeader Source #

Data type representing the header of a Message. All messages sent between nodes contain a message header.

Constructors

MessageHeader 

Fields

Instances

Instances details
Generic MessageHeader Source # 
Instance details

Defined in Haskoin.Network.Message

Associated Types

type Rep MessageHeader :: Type -> Type #

Show MessageHeader Source # 
Instance details

Defined in Haskoin.Network.Message

Binary MessageHeader Source # 
Instance details

Defined in Haskoin.Network.Message

Serial MessageHeader Source # 
Instance details

Defined in Haskoin.Network.Message

Serialize MessageHeader Source # 
Instance details

Defined in Haskoin.Network.Message

NFData MessageHeader Source # 
Instance details

Defined in Haskoin.Network.Message

Methods

rnf :: MessageHeader -> () #

Eq MessageHeader Source # 
Instance details

Defined in Haskoin.Network.Message

type Rep MessageHeader Source # 
Instance details

Defined in Haskoin.Network.Message

type Rep MessageHeader = D1 ('MetaData "MessageHeader" "Haskoin.Network.Message" "haskoin-core-1.1.0-EPeWWz60EKPlWai44F9WC" 'False) (C1 ('MetaCons "MessageHeader" 'PrefixI 'True) ((S1 ('MetaSel ('Just "magic") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Word32) :*: S1 ('MetaSel ('Just "cmd") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 MessageCommand)) :*: (S1 ('MetaSel ('Just "size") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Word32) :*: S1 ('MetaSel ('Just "checksum") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 CheckSum32))))

msgType :: Message -> MessageCommand Source #

Get MessageCommand assocated with a message.

putMessage :: MonadPut m => Network -> Message -> m () Source #

Serializer for network messages.

getMessage :: MonadGet m => Network -> m Message Source #

Deserializer for network messages.