coinbits.protocol package¶
Submodules¶
coinbits.protocol.buffer module¶
coinbits.protocol.exceptions module¶
coinbits.protocol.fields module¶
- class coinbits.protocol.fields.BlockLocator[source]¶
Bases: coinbits.protocol.fields.Field
A block locator type used for getblocks and getheaders
- datatype = '<I'¶
- class coinbits.protocol.fields.Field[source]¶
Bases: object
Base class for the Fields. This class only implements the counter to keep the order of the fields on the serializer classes.
- counter = 74¶
- deserialize(stream)[source]¶
This method must read the stream data and then deserialize and return the deserialized content.
Returns: the deserialized content Parameters: stream – stream of data to read
- class coinbits.protocol.fields.FixedStringField(length)[source]¶
Bases: coinbits.protocol.fields.Field
A fixed length string field.
Example of use:
class MessageHeaderSerializer(Serializer): model_class = MessageHeader magic = fields.UInt32LEField() command = fields.FixedStringField(12) length = fields.UInt32LEField() checksum = fields.UInt32LEField()
- class coinbits.protocol.fields.Hash[source]¶
Bases: coinbits.protocol.fields.Field
A hash type field.
- datatype = '<I'¶
- coinbits.protocol.fields.INVENTORY_TYPE = {'MSG_BLOCK': 2, 'MSG_TX': 1, 'ERROR': 0}¶
The type of the inventories
- class coinbits.protocol.fields.IPv4AddressField[source]¶
Bases: coinbits.protocol.fields.Field
An IPv4 address field without timestamp and reserved IPv6 space.
- reserved = '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff'¶
- class coinbits.protocol.fields.Int16LEField[source]¶
Bases: coinbits.protocol.fields.PrimaryField
16-bit little-endian integer field.
- datatype = '<h'¶
- class coinbits.protocol.fields.Int32LEField[source]¶
Bases: coinbits.protocol.fields.PrimaryField
32-bit little-endian integer field.
- datatype = '<i'¶
- class coinbits.protocol.fields.Int64LEField[source]¶
Bases: coinbits.protocol.fields.PrimaryField
64-bit little-endian integer field.
- datatype = '<q'¶
- class coinbits.protocol.fields.ListField(serializer_class)[source]¶
Bases: coinbits.protocol.fields.Field
A field used to serialize/deserialize a list of serializers.
Example of use:
class TxSerializer(Serializer): model_class = Tx version = fields.UInt32LEField() tx_in = fields.ListField(TxInSerializer) tx_out = fields.ListField(TxOutSerializer) lock_time = fields.UInt32LEField()
- coinbits.protocol.fields.MAGIC_VALUES = {'bitcoin_testnet': 3669344250, 'litecoin': 3686187259, 'bitcoin_testnet3': 118034699, 'namecoin': 4273258233, 'bitcoin': 3652501241, 'litecoin_testnet': 3703030268}¶
The network magic values
- class coinbits.protocol.fields.NestedField(serializer_class)[source]¶
Bases: coinbits.protocol.fields.Field
A field used to nest another serializer.
Example of use:
class TxInSerializer(Serializer): model_class = TxIn previous_output = fields.NestedField(OutPointSerializer) signature_script = fields.VariableStringField() sequence = fields.UInt32LEField()
- coinbits.protocol.fields.PROTOCOL_VERSION = 60002¶
The protocol version
- class coinbits.protocol.fields.PrimaryField[source]¶
Bases: coinbits.protocol.fields.Field
This is a base class for all fields that has only one value and their value can be represented by a Python struct datatype.
Example of use:
class UInt32LEField(PrimaryField): datatype = "<I"
- deserialize(stream)[source]¶
Deserialize the stream using the struct data type specified.
Parameters: stream – the data stream
- coinbits.protocol.fields.SERVICES = {'NODE_NETWORK': 1}¶
The available services
- class coinbits.protocol.fields.UInt16BEField[source]¶
Bases: coinbits.protocol.fields.PrimaryField
16-bit big-endian unsigned integer field.
- datatype = '>H'¶
- class coinbits.protocol.fields.UInt16LEField[source]¶
Bases: coinbits.protocol.fields.PrimaryField
16-bit little-endian unsigned integer field.
- datatype = '<H'¶
- class coinbits.protocol.fields.UInt32LEField[source]¶
Bases: coinbits.protocol.fields.PrimaryField
32-bit little-endian unsigned integer field.
- datatype = '<I'¶
- class coinbits.protocol.fields.UInt64LEField[source]¶
Bases: coinbits.protocol.fields.PrimaryField
64-bit little-endian unsigned integer field.
- datatype = '<Q'¶
- class coinbits.protocol.fields.VariableIntegerField[source]¶
Bases: coinbits.protocol.fields.Field
A variable size integer field.
coinbits.protocol.serializers module¶
- class coinbits.protocol.serializers.AddressVector[source]¶
Bases: coinbits.protocol.serializers.SerializableMessage
A vector of addresses.
- command = 'addr'¶
- class coinbits.protocol.serializers.AddressVectorSerializer[source]¶
Bases: coinbits.protocol.serializers.Serializer
Serializer for the addresses vector.
- model_class¶
alias of AddressVector
- class coinbits.protocol.serializers.Block[source]¶
Bases: coinbits.protocol.serializers.BlockHeader
The block message. This message contains all the transactions present in the block.
- command = 'block'¶
- class coinbits.protocol.serializers.BlockHeader[source]¶
Bases: coinbits.protocol.serializers.SerializableMessage
The header of the block.
- class coinbits.protocol.serializers.BlockHeaderSerializer[source]¶
Bases: coinbits.protocol.serializers.Serializer
The serializer for the block header.
- model_class¶
alias of BlockHeader
- class coinbits.protocol.serializers.BlockSerializer[source]¶
Bases: coinbits.protocol.serializers.Serializer
The deserializer for the blocks.
- class coinbits.protocol.serializers.GetAddr[source]¶
Bases: coinbits.protocol.serializers.SerializableMessage
The getaddr command.
- command = 'getaddr'¶
- class coinbits.protocol.serializers.GetAddrSerializer[source]¶
Bases: coinbits.protocol.serializers.Serializer
The serializer for the getaddr command.
- class coinbits.protocol.serializers.GetBlocks(hashes)[source]¶
Bases: coinbits.protocol.serializers.SerializableMessage
The getblocks command.
- command = 'getblocks'¶
- class coinbits.protocol.serializers.GetData[source]¶
Bases: coinbits.protocol.serializers.InventoryVector
GetData message command.
- command = 'getdata'¶
- class coinbits.protocol.serializers.GetDataSerializer[source]¶
Bases: coinbits.protocol.serializers.Serializer
Serializer for the GetData command.
- class coinbits.protocol.serializers.GetHeaders(hashes)[source]¶
Bases: coinbits.protocol.serializers.GetBlocks
- command = 'getheaders'¶
- class coinbits.protocol.serializers.GetHeadersSerializer[source]¶
Bases: coinbits.protocol.serializers.GetBlocksSerializer
- model_class¶
alias of GetHeaders
- class coinbits.protocol.serializers.HeaderVector[source]¶
Bases: coinbits.protocol.serializers.SerializableMessage
The header only vector.
- command = 'headers'¶
- class coinbits.protocol.serializers.HeaderVectorSerializer[source]¶
Bases: coinbits.protocol.serializers.Serializer
Serializer for the block header vector.
- model_class¶
alias of HeaderVector
- class coinbits.protocol.serializers.IPv4Address[source]¶
Bases: object
The IPv4 Address (without timestamp).
- class coinbits.protocol.serializers.IPv4AddressSerializer[source]¶
Bases: coinbits.protocol.serializers.Serializer
Serializer for the IPv4Address.
- model_class¶
alias of IPv4Address
- class coinbits.protocol.serializers.IPv4AddressTimestamp[source]¶
Bases: coinbits.protocol.serializers.IPv4Address
The IPv4 Address with timestamp.
- class coinbits.protocol.serializers.IPv4AddressTimestampSerializer[source]¶
Bases: coinbits.protocol.serializers.Serializer
Serializer for the IPv4AddressTimestamp.
- model_class¶
alias of IPv4AddressTimestamp
- class coinbits.protocol.serializers.Inventory[source]¶
Bases: coinbits.protocol.serializers.SerializableMessage
The Inventory representation.
- class coinbits.protocol.serializers.InventorySerializer[source]¶
Bases: coinbits.protocol.serializers.Serializer
The serializer for the Inventory.
- class coinbits.protocol.serializers.InventoryVector[source]¶
Bases: coinbits.protocol.serializers.SerializableMessage
A vector of inventories.
- command = 'inv'¶
- class coinbits.protocol.serializers.InventoryVectorSerializer[source]¶
Bases: coinbits.protocol.serializers.Serializer
The serializer for the vector of inventories.
- model_class¶
alias of InventoryVector
- class coinbits.protocol.serializers.MemPool[source]¶
Bases: coinbits.protocol.serializers.SerializableMessage
The mempool command.
- command = 'mempool'¶
- class coinbits.protocol.serializers.MemPoolSerializer[source]¶
Bases: coinbits.protocol.serializers.Serializer
The serializer for the mempool command.
- class coinbits.protocol.serializers.MessageHeader(coin='bitcoin')[source]¶
Bases: object
The header of all bitcoin messages.
- class coinbits.protocol.serializers.MessageHeaderSerializer[source]¶
Bases: coinbits.protocol.serializers.Serializer
Serializer for the MessageHeader.
- static calc_checksum(payload)[source]¶
Calculate the checksum of the specified payload.
Parameters: payload – The binary data payload.
- model_class¶
alias of MessageHeader
- class coinbits.protocol.serializers.NotFound[source]¶
Bases: coinbits.protocol.serializers.GetData
NotFound command message.
- command = 'notfound'¶
- class coinbits.protocol.serializers.NotFoundSerializer[source]¶
Bases: coinbits.protocol.serializers.Serializer
Serializer for the NotFound message.
- class coinbits.protocol.serializers.OutPointSerializer[source]¶
Bases: coinbits.protocol.serializers.Serializer
The OutPoint representation serializer.
- class coinbits.protocol.serializers.Ping[source]¶
Bases: coinbits.protocol.serializers.SerializableMessage
The ping command, which should always be answered with a Pong.
- command = 'ping'¶
- class coinbits.protocol.serializers.PingSerializer[source]¶
Bases: coinbits.protocol.serializers.Serializer
The ping command serializer.
- class coinbits.protocol.serializers.Pong[source]¶
Bases: coinbits.protocol.serializers.SerializableMessage
The pong command, usually returned when a ping command arrives.
- command = 'pong'¶
- class coinbits.protocol.serializers.PongSerializer[source]¶
Bases: coinbits.protocol.serializers.Serializer
The pong command serializer.
- class coinbits.protocol.serializers.Reject[source]¶
Bases: coinbits.protocol.serializers.SerializableMessage
- command = 'reject'¶
- class coinbits.protocol.serializers.Serializer[source]¶
Bases: coinbits.protocol.serializers.SerializerABC
The main serializer class, inherit from this class to create custom serializers.
Example of use:
class VerAckSerializer(Serializer): model_class = VerAck
- class coinbits.protocol.serializers.SerializerABC[source]¶
Bases: object
The serializer abstract base class.
- class coinbits.protocol.serializers.SerializerMeta[source]¶
Bases: type
The serializer meta class. This class will create an attribute called ‘_fields’ in each serializer with the ordered dict of fields present on the subclasses.
- class coinbits.protocol.serializers.Tx[source]¶
Bases: coinbits.protocol.serializers.SerializableMessage
The main transaction representation, this object will contain all the inputs and outputs of the transaction.
- command = 'tx'¶
- class coinbits.protocol.serializers.TxIn[source]¶
Bases: object
The transaction input representation.
- class coinbits.protocol.serializers.TxInSerializer[source]¶
Bases: coinbits.protocol.serializers.Serializer
The transaction input serializer.
- class coinbits.protocol.serializers.TxOutSerializer[source]¶
Bases: coinbits.protocol.serializers.Serializer
The transaction output serializer.
- class coinbits.protocol.serializers.TxSerializer[source]¶
Bases: coinbits.protocol.serializers.Serializer
The transaction serializer.
- class coinbits.protocol.serializers.VerAck[source]¶
Bases: coinbits.protocol.serializers.SerializableMessage
The version acknowledge (verack) command.
- command = 'verack'¶
- class coinbits.protocol.serializers.VerAckSerializer[source]¶
Bases: coinbits.protocol.serializers.Serializer
The serializer for the verack command.
- class coinbits.protocol.serializers.Version[source]¶
Bases: coinbits.protocol.serializers.SerializableMessage
The version command.
- command = 'version'¶
- class coinbits.protocol.serializers.VersionSerializer[source]¶
Bases: coinbits.protocol.serializers.Serializer
The version command serializer.