diff --git a/BSP.markdown b/BSP.markdown index 3ef0b21..ac04fe9 100644 --- a/BSP.markdown +++ b/BSP.markdown @@ -42,13 +42,13 @@ The blocks form the leaves of a binary hash tree. Each parent node consists of t * `parent_node = left_child_hash || right_child_hash` * `parent_hash = HASH("TREE", parent_node)` -The message's unique identifier is calculated by hashing a message header and the root hash. The message header consists of the channel identifier, a salt, the message length and the message type. +The message's unique identifier is calculated by hashing a message header and the root hash. The message header consists of the channel identifier, a salt, a timestamp, the message length and the message type. * `salt = R(HASH_LEN)` -* `message_header = channel_id || salt || message_length || message_type` +* `message_header = channel_id || salt || timestamp || message_length || message_type` * `message_id = HASH("MESSAGE_ID", message_header, root_hash)` -The random salt prevents collisions between otherwise identical messages. The message length is a 64-bit integer representing the length of the message in bytes. (All integers in BSP are big-endian.) The message type is a single byte that is supplied by the client and is not interpreted by BSP. +The random salt prevents collisions between otherwise identical messages. The timestamp is a 64-bit integer representing seconds since the Unix epoch. (All integers in BSP are big-endian.) The message length is a 64-bit integer representing the length of the message in bytes. The message type is a single byte that is supplied by the client and is not interpreted by BSP. Each block has a unique identifier, which is calculated by hashing the message header, a block header and the hash of the block itself. The block header consists of the block number and a list of hashes called the path.