From cfaef7661003583d877bb67e6f1b965ab78b962f Mon Sep 17 00:00:00 2001 From: Abhimanyu Date: Wed, 15 Nov 2023 10:33:59 +0100 Subject: [PATCH] chore: update Deterministic message hashing algorithm. (#632) * chores: update Deterministic message hashing algorithm. * type fix in commented code --- content/docs/rfcs/14/README.md | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/content/docs/rfcs/14/README.md b/content/docs/rfcs/14/README.md index 7f65302f..c2a21dc8 100644 --- a/content/docs/rfcs/14/README.md +++ b/content/docs/rfcs/14/README.md @@ -10,6 +10,7 @@ contributors: - Sanaz Taheri - Aaryamann Challani - Lorenzo Delgado + - Abhimanyu Rawat --- # Abstract @@ -125,7 +126,7 @@ It is also unstable across different builds with schema changes due to unknown f To overcome this interoperability limitation, a Waku v2 message's hash MUST be computed following this schema: ``` -message_hash = sha256(concat(pubsub_topic, message.payload, message.content_topic, message.meta)) +message_hash = sha256(concat(pubsub_topic, message.payload, message.content_topic, message.meta, message.timestamp)) ``` If an optional attribute, such as `meta`, is absent, the concatenation of attributes SHOULD exclude it. This recommendation is made to ensure that the concatenation process proceeds smoothly when certain attributes are missing and to maintain backward compatibility. @@ -140,8 +141,9 @@ pubsub_topic = "/waku/2/default-waku/proto" (0x2f77616b752f322f64656661756c742d7 message.payload = 0x010203045445535405060708 message.content_topic = "/waku/2/default-content/proto" (0x2f77616b752f322f64656661756c742d636f6e74656e742f70726f746f) message.meta = 0x73757065722d736563726574 +message.timestamp = 0x175789bfa23f8400 -message_hash = 0x4fdde1099c9f77f6dae8147b6b3179aba1fc8e14a7bf35203fc253ee479f135f +message_hash = 0x64cce733fed134e83da02b02c6f689814872b1a0ac97ea56b76095c3c72bfe05 ``` Waku message hash computation (`meta` size of 64 bytes): @@ -151,8 +153,9 @@ pubsub_topic = "/waku/2/default-waku/proto" (0x2f77616b752f322f64656661756c742d7 message.payload = 0x010203045445535405060708 message.content_topic = "/waku/2/default-content/proto" (0x2f77616b752f322f64656661756c742d636f6e74656e742f70726f746f) message.meta = 0x000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f +message.timestamp = 0x175789bfa23f8400 -message_hash = 0xc32ed3b51f0c432be1c7f50880110e1a1a60f6067cd8193ca946909efe1b26ad +message_hash = 0x7158b6498753313368b9af8f6e0a0a05104f68f972981da42a43bc53fb0c1b27 ``` Waku message hash computation (`meta` attribute not present): @@ -161,8 +164,9 @@ pubsub_topic = "/waku/2/default-waku/proto" (0x2f77616b752f322f64656661756c742d7 message.payload = 0x010203045445535405060708 message.content_topic = "/waku/2/default-content/proto" (0x2f77616b752f322f64656661756c742d636f6e74656e742f70726f746f) message.meta = +message.timestamp = 0x175789bfa23f8400 -message_hash = 0x87619d05e563521d9126749b45bd4cc2430df0607e77e23572d874ed9c1aaa62 +message_hash = 0xa2554498b31f5bcdfcbf7fa58ad1c2d45f0254f3f8110a85588ec3cf10720fd8 ``` Waku message hash computation (`payload` length 0): @@ -171,8 +175,9 @@ pubsub_topic = "/waku/2/default-waku/proto" (0x2f77616b752f322f64656661756c742d7 message.payload = [] message.content_topic = "/waku/2/default-content/proto" (0x2f77616b752f322f64656661756c742d636f6e74656e742f70726f746f) message.meta = 0x73757065722d736563726574 +message.timestamp = 0x175789bfa23f8400 -message_hash = 0xe1a9596237dbe2cc8aaf4b838c46a7052df6bc0d42ba214b998a8bfdbe8487d6 +message_hash = 0x483ea950cb63f9b9d6926b262bb36194d3f40a0463ce8446228350bd44e96de4 ``` # Security Considerations @@ -208,4 +213,4 @@ Copyright and related rights waived via [CC0](https://creativecommons.org/public - [Google Protocol buffers v3](https://developers.google.com/protocol-buffers/) - [26/WAKU-PAYLOAD](/spec/26) - [35/WAKU2-NOISE](/spec/35) -- [6/PAYLOADS](https://specs.status.im/spec/6#clock-vs-timestamp-and-message-ordering) \ No newline at end of file +- [6/PAYLOADS](https://specs.status.im/spec/6#clock-vs-timestamp-and-message-ordering)