Message Types
Message
Message Type
Purpose
HELLO
hello
The Hello message is the first message sent between the Gateway and a relay. The Hello message is used to inform a peer of the senderβs protocol version, network number, buffer, and node ID.
ACK
ack
The Ack Message is sent to acknowledge the receipt of a hello message.
PING
ping
A Keep-alive message that should expect a Pong Message response with the provided nonce.
PONG
pong
Response to the Ping Message that should include the nonce provided in the Ping message.
BROADCAST
broadcast
Message used to broadcast a new block to the BDN.
TRANSACTION
tx
Message to propagate a transaction across the BDN.
GET TRANSACTIONS
gettxs
Message used to request information about services with specified short IDs.
TRANSACTIONS
txs
Message with tx details send in response to GET TRANSACTIONS Message.
GET TRANSACTION CONTENTS
getcontents
Message used to request transaction contents with specified network number and short id.
TRANSACTION CONTENTS
txcontents
Message with tx details. Reply to GET TRANSACTION CONTENTS Message.
KEY
key
A key message includes the encryption key used to encrypt a block when encryption is used for blocks sent over the BDN.
BLOCK HOLDING
blockhold
Request for other Gateways to hold onto the block for a timeout to avoid encrypted block duplication.
DISCONNECT RELAY PEER
droprelay
Request for the Gateway to disconnect from its Relay peers.
BLOCK CONFIRMATION
blkcnfrm
Message with confirmed blck details and transaction short IDs marked for cleanup.
TRANSACTION CLEANUP
txclnup
Expired transactions to remove from Gateway memory.
NOTIFICATION
notify
Notification message that includes updates like account quota status and account expiration information.
BDN PERFORMANCE STATS
bdnstats
Message that contains gateway statistics on BDN performance, such as number of blocks/transactions received from BDN and number of blocks/transactions received from blockchain node.
REFRESH BLOCKCHAIN NETWORK
blkntwrk
Message used to request BDN to refresh blockchain network configuration.
GET COMPRESSED BLOCK TRANSACTIONS
getblocktxs
Message used to request details of transactions included in a compressed block.
COMPRESSED BLOCK TRANSACTIONS
blocktxs
Message with compressed block transaction details. Reply to GET COMPRESSED BLOCK TRANSACTIONS Message.
Message Type Details
Hello Message
The Hello message is the first message sent between the Gateway and a relay. The Hello message is used to inform a peer of the senderβs protocol version, network number, buffer and node ID.
Hello Message
Payload Length
Description
Protocol Version
4 bytes
The version of the BLXR protocol used by the sender of the message.
Network Number
4 bytes
The blockchain network used by the Gateway.
Node ID
16 bytes
The Node ID is a unique identifier provided to the Gateway by the SDN.
ACK Message
The ACK Message is sent to acknowledge the receipt of a hello message. The ACK message does not include a payload.
Ping Message
A Keep-alive message that should expect a Pong Message response with the provided nonce.
Ping Message
Payload Length
Description
Nonce
8 bytes
A counter provided and managed by the connection.
Pong Message
Response to the Ping Message that should include the nonce provided in the Ping message.
Pong Message
Payload Length
Description
Nonce
8 bytes
A counter provided and managed by the connection.
Broadcast Message
Message used to broadcast a new block to the BDN.
Broadcast Message
Payload Length
Description
Hash
32 bytes
Hash of the new block.
Network Number
4 bytes
The blockchain network of the block.
Source ID
16 byte
Indicates the first Relay to broadcast the message. This field is not of interest to Gateways.
Block Encrypted Flag
1 byte
A flag that is set to true if the block is encrypted.
Blob
variable size
The contents of the new block. If the Block Encrypted flag is true, the contents are encrypted.
Transaction Message
Message to propagate a transaction across the BDN.
Transaction Message
Payload Length
Description
Hash
32 bytes
Hash of the transaction.
Network Number
4 bytes
The blockchain network of the transaction.
Source ID
16 bytes
Indicates the first Relay to broadcast the message. This field is not of interest to Gateways.
SID
4 bytes
The short ID of the transaction. When a Gateway is sending a transaction to a Relay, it lists the SID as 0 to indicate that the short ID has not yet been assigned.
TX VAL
variable length
The contents of the transaction. When a Gateway sends a transaction message to a Relay, the Relay may respond with a transaction message including the assigned SID and leave this field empty.
Quota Type
1 byte
Type of quota used for the transaction, it can either be the limited free daily quota or the paid quota.
Timestamp
4 bytes
The time the transaction message was sent.
Get Transactions Message
Message used to request information about services with specified short IDs.
Get Transactions Message Payload
Payload Length
Description
Number of short IDs
4 bytes
Number of short IDs in payload.
List of Short IDs
variable length
A list of short IDs, each short ID is 4 bytes in length.
Transactions Message
Message with tx details send in response to GET_TRANSACTIONS Message.
Transactions Message Payload
Payload Length
Description
Length
4 bytes
Length of the list of TransactionInfo objects
List of Transaction Info
variable length
list of Transaction Info objects. The structure of Transaction Info objects is described below.
Transaction Info Objects
A transaction info object is a part of the Transactions Message that describes a single transaction and its associated short ID.
Transaction Info objects
Payload Length
Description
SID
4 bytes
Short ID of the transaction.
Hash
32 bytes
Hash of the transaction.
TX Len
4 bytes
The length of the transaction.
TX
variable length
The contents of the transaction.
Key Message
A key message includes the encryption key used to encrypt a block when encryption is used for blocks sent over the BDN.
Key Message Payload
Payload Length
Description
Hash
32 bytes
Hash of the block encrypted using the key.
Network Number
4 bytes
The blockchain network of the encrypted block.
Source ID
16 bytes
Indicates the first relay to broadcast the message. This field is not of interest to Gateways.
Key
32 bytes
Encryption key to decrypt the encrypted block having the hash provided.
Block Holding Message
Request for other Gateways to hold onto the block for a timeout to avoid encrypted block duplication.
Block Holding Message Payload
Payload Length
Description
Hash
32 bytes
Hash of the block to hold.
Network Number
4 bytes
The blockchain network of the block.
Disconnect Relay Peer Message
Request for the Gateway to disconnect from itβs Relay peers. This message does not have a payload.
Transaction Cleanup Message
Provides expired transactions for removal from Gateway memory. The expired transactions may be provided as a list of short IDs or as a list of transaction hashes. Since Gateways are not validating nodes, over time they will collect transactions that have been discarded by blockchain network full nodes. This may occur because, for example, the transaction was invalid, double spent, or provided insufficient fees. The bloXroute BDN will occasionally poll its internal blockchain nodes for a list of valid transactions and compare it to its list of tracked transactions. Transactions not found in internal blockchain nodes will be broadcast to the network with the Transaction Cleanup message to permit Gateways to remove these transactions from their memory.
Transaction Cleanup Message Payload
Payload Length
Description
Message Hash
32 bytes
hash of the contents of the Transaction Cleanup message (used as a message identifier).
Network Number
4 bytes
The blockchain network of the block.
Source ID
16 bytes
indicates the first relay to broadcast the message. This field is not of interest to Gateways.
List of SIDs
variable length
list of short IDs. Each short ID is 4 bytes in length
List of Transaction Hashes
variable length
list of transaction hashes of expired transactions. Each transaction hash is 32 bytes in length.
Last updated