mirror of
https://code.briarproject.org/briar/briar.git
synced 2026-03-07 05:58:18 +01:00
akwizgran created page: BSP
@@ -14,10 +14,10 @@ Each channel has a unique identifier hash_len bytes long. This identifier is sup
|
|||||||
|
|
||||||
### Message format
|
### Message format
|
||||||
|
|
||||||
Each message consists of one or more blocks. Each block is block_len bytes long, except the last, which may be shorter. The blocks form the leaves of a binary hash tree, and the root hash of the tree uniquely identifies the message.
|
Each message consists of one or more blocks. Each block is block_len bytes long, except the last, which may be shorter. The blocks form the leaves of a binary hash tree. Each internal node of the tree consists of the concatenated hashes of its children, and the hash of the root node uniquely identifies the message.
|
||||||
|
|
||||||
A message header is prepended to each node of the tree before hashing. The message header consists of the channel identifier, a timestamp indicating when the message was posted, the depth of the hash tree, and the message type.
|
A message header is prepended to each node of the tree before hashing. The message header consists of the channel identifier, a timestamp indicating when the message was posted, the depth of the hash tree, and the message type.
|
||||||
|
|
||||||
The timestamp is a 64-bit big-endian integer representing seconds since the Unix epoch. The depth of the hash tree is an 8-bit integer. The message type is a single byte that is not interpreted by BSP; the application may use it to respond appropriately to partially synchronised messages. The total length of the message header is hash_len + 10 bytes.
|
The timestamp is a 64-bit big-endian integer representing seconds since the Unix epoch. The depth of the hash tree is an 8-bit integer. The message type is a single byte that is not interpreted by BSP; the application may use it to respond appropriately to partially synchronised messages. The total length of the message header is hash_len + 10 bytes.
|
||||||
|
|
||||||
Prepending the message header to each node before hashing ensures that all blocks with a given message identifer have consistent message headers; this simplifies the validation of blocks received from the remote peer.
|
Prepending the message header to each node before hashing ensures that all blocks with a given message identifer have consistent message headers; this simplifies the validation of blocks received from the remote peer.
|
||||||
|
|||||||
Reference in New Issue
Block a user