haskoin-core-0.21.1: Bitcoin & Bitcoin Cash library for Haskell
CopyrightNo rights reserved
LicenseMIT
Maintainerjprupp@protonmail.ch
Stabilityexperimental
PortabilityPOSIX
Safe HaskellNone
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
Eq Message Source # 
Instance details

Defined in Haskoin.Network.Message

Methods

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

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

Show Message Source # 
Instance details

Defined in Haskoin.Network.Message

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 #

NFData Message Source # 
Instance details

Defined in Haskoin.Network.Message

Methods

rnf :: Message -> () #

type Rep Message Source # 
Instance details

Defined in Haskoin.Network.Message

type Rep Message = D1 ('MetaData "Message" "Haskoin.Network.Message" "haskoin-core-0.21.1-inplace" '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
Eq MessageHeader Source # 
Instance details

Defined in Haskoin.Network.Message

Show MessageHeader Source # 
Instance details

Defined in Haskoin.Network.Message

Generic MessageHeader Source # 
Instance details

Defined in Haskoin.Network.Message

Associated Types

type Rep MessageHeader :: Type -> Type #

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 -> () #

type Rep MessageHeader Source # 
Instance details

Defined in Haskoin.Network.Message

type Rep MessageHeader = D1 ('MetaData "MessageHeader" "Haskoin.Network.Message" "haskoin-core-0.21.1-inplace" 'False) (C1 ('MetaCons "MessageHeader" 'PrefixI 'True) ((S1 ('MetaSel ('Just "headMagic") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Word32) :*: S1 ('MetaSel ('Just "headCmd") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 MessageCommand)) :*: (S1 ('MetaSel ('Just "headPayloadSize") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Word32) :*: S1 ('MetaSel ('Just "headChecksum") '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.