mirror of
https://github.com/logos-messaging/logos-delivery.git
synced 2026-03-06 09:03:14 +00:00
* Refactor timestamps type from float64 to int64 (milliseconds resolution) * Revert epochs to float64 * Update 00002_addSenderTimeStamp.up.sql * Update quicksim2.nim * Add files via upload * Delete 00003_convertTimestampsToInts.up.sql * Add files via upload * Rename 00003_convertTimestampsToInts.up.sql to 00003_addTimestampsToInts.up.sql * Delete 00003_addTimestampsToInts.up.sql * Rln-relay integration into chat2 (#835) * adds ProofMetadata * adds EPOCH_INTERVAL * adds messageLog field * adds updateLog, toEpoch, fromEpoch, getEpoch, compareTo * adds unit test for toEpoch and fromEpoch * adds unit test for Epoch comparison * adds result codes for updateLog * adds unit test for update log * renames epoch related consts * modifies updateLog with new return type and new logic of spam detection * adds unit text for the modified updateLog * changes max epoch gap type size * splits updateLog into two procs isSpam and updateLog * updates unittests * fixes a bug, returns false when the message is not spam * renames messageLog to nullifierLog * renames isSpam to hasDuplicate * updates the rln validator, adds comments * adds appendRLNProof proc plus some code beatification * unit test for validate message * adds unhappy test to validateMessage unit test * renames EPOCH_UNIT_SECONDS * renames MAX_CLOCK_GAP_SECONDS * WIP: integration test * fixes compile errors * sets a real epoch value * updates on old unittests * adds comments to the rln relay tests * adds more comments * makes rln import conditional * adds todos * adds more todos * adds rln-relay mount process into chat2 * further todos * logs contentTopic * introduces rln relay configs * changes default pubsub topic * adds contentTopic config * imports rln relay dependencies * consolidates imports * removes module identifier from ContentTopic * adds contentTopic field * adds contentTopic argument to mountRlnRelay calls * appends rln proof to chat2 messages * changes the default chat2 contentTopic * adds missing content topic fields * fixes a bug * adds a new logic about empty content topics * appends proof only when rln flag is active * removes unnecessary todos * fixes an indentation issue * adds log messages * verifies the proof against the concatenation of msg payload and content topic * a bug fix * removes duplicate epoch time calculation * updates log level to trace * updates default rln-relay content topic * adds support for empty content topics * updates changelog * changelog updates * removes a commented code block * updates addRLNRelayValidator string doc * Squashed commit of the following: commit bc36c99ab202d07baa0a5f0100bd10d1d76fdfa1 Merge: dc2b2946 0cd7003d Author: G <28568419+s1fr0@users.noreply.github.com> Date: Sat Feb 5 01:10:06 2022 +0100 Merge branch 'master' into int64-timestamps-ns commit dc2b294667bb5770cc32b93cc560638cf5ce7087 Author: s1fr0 <28568419+s1fr0@users.noreply.github.com> Date: Sat Feb 5 00:24:45 2022 +0100 Fix commit f97b95a036a197938df38a5adaea46fca778016d Author: s1fr0 <28568419+s1fr0@users.noreply.github.com> Date: Sat Feb 5 00:13:18 2022 +0100 Missing import commit 060c4f8d64e1b6e7c0593540fa8fa7f4cadf6df7 Author: s1fr0 <28568419+s1fr0@users.noreply.github.com> Date: Sat Feb 5 00:10:36 2022 +0100 Fixed typo commit 08ca99b6f692d3df6d4c7c2312c7cada05fc0041 Author: s1fr0 <28568419+s1fr0@users.noreply.github.com> Date: Fri Feb 4 23:59:20 2022 +0100 Time util file commit 2b5c360746990936dec256e90d08dae3c3e35a94 Author: s1fr0 <28568419+s1fr0@users.noreply.github.com> Date: Fri Feb 4 23:33:20 2022 +0100 Moved time utility functions to utils/time commit fdaf121f089aa011855303cc8dd1ce52aec506ad Author: s1fr0 <28568419+s1fr0@users.noreply.github.com> Date: Fri Feb 4 23:10:25 2022 +0100 Fix comment commit c7e06ab4e7618d9a3fe8aa744dd48bf3f7d8754c Author: s1fr0 <28568419+s1fr0@users.noreply.github.com> Date: Fri Feb 4 23:04:13 2022 +0100 Restore previous migration script commit 80282db1d79df676255d4b8e6e09d9f8a2b00fd3 Author: s1fr0 <28568419+s1fr0@users.noreply.github.com> Date: Fri Feb 4 22:54:15 2022 +0100 Typo commit b9d67f89b0eea11a8362dbb10b5f9d6894343352 Author: s1fr0 <28568419+s1fr0@users.noreply.github.com> Date: Fri Feb 4 22:49:29 2022 +0100 Added utilities to get int64 nanosecond, microsecond, millisecond time resolution from float commit 0130d496e694a01cfc9eeb90b7cbc77764490bf9 Author: s1fr0 <28568419+s1fr0@users.noreply.github.com> Date: Fri Feb 4 22:36:35 2022 +0100 Switched to nanoseconds support. * Update CHANGELOG.md * Create 00003_convertTimestampsToInt64.up.sql Migration script * Moved migration script to right location * Update waku_rln_relay_utils.nim * Update waku_rln_relay_utils.nim * Addressed reviewers' comments * Update default fleet metrics dashboard (#844) * Fix * No need for float * Aligning master to changes in PR * Further fixes Co-authored-by: Sanaz Taheri Boshrooyeh <35961250+staheri14@users.noreply.github.com> Co-authored-by: Hanno Cornelius <68783915+jm-clius@users.noreply.github.com>
73 lines
2.0 KiB
Nim
73 lines
2.0 KiB
Nim
## Waku Message module.
|
|
##
|
|
## See https://github.com/vacp2p/specs/blob/master/specs/waku/v2/waku-message.md
|
|
## for spec.
|
|
##
|
|
## For payload content and encryption, see waku/v2/node/waku_payload.nim
|
|
|
|
|
|
{.push raises: [Defect].}
|
|
|
|
import
|
|
libp2p/protobuf/minprotobuf,
|
|
libp2p/varint,
|
|
../utils/time
|
|
when defined(rln):
|
|
import waku_rln_relay/waku_rln_relay_types
|
|
|
|
const
|
|
MaxWakuMessageSize* = 1024 * 1024 # In bytes. Corresponds to PubSub default
|
|
|
|
type
|
|
ContentTopic* = string
|
|
|
|
WakuMessage* = object
|
|
payload*: seq[byte]
|
|
contentTopic*: ContentTopic
|
|
version*: uint32
|
|
# sender generated timestamp
|
|
timestamp*: Timestamp
|
|
# the proof field indicates that the message is not a spam
|
|
# this field will be used in the rln-relay protocol
|
|
# XXX Experimental, this is part of https://rfc.vac.dev/spec/17/ spec and not yet part of WakuMessage spec
|
|
when defined(rln):
|
|
proof*: RateLimitProof
|
|
else:
|
|
proof*: seq[byte]
|
|
|
|
|
|
# Encoding and decoding -------------------------------------------------------
|
|
proc init*(T: type WakuMessage, buffer: seq[byte]): ProtoResult[T] =
|
|
var msg = WakuMessage()
|
|
let pb = initProtoBuffer(buffer)
|
|
|
|
discard ? pb.getField(1, msg.payload)
|
|
discard ? pb.getField(2, msg.contentTopic)
|
|
discard ? pb.getField(3, msg.version)
|
|
|
|
var timestamp: zint64
|
|
discard ? pb.getField(4, timestamp)
|
|
msg.timestamp = Timestamp(timestamp)
|
|
|
|
# XXX Experimental, this is part of https://rfc.vac.dev/spec/17/ spec and not yet part of WakuMessage spec
|
|
when defined(rln):
|
|
var proofBytes: seq[byte]
|
|
discard ? pb.getField(21, proofBytes)
|
|
msg.proof = ? RateLimitProof.init(proofBytes)
|
|
else:
|
|
discard ? pb.getField(21, msg.proof)
|
|
|
|
ok(msg)
|
|
|
|
proc encode*(message: WakuMessage): ProtoBuffer =
|
|
result = initProtoBuffer()
|
|
|
|
result.write(1, message.payload)
|
|
result.write(2, message.contentTopic)
|
|
result.write(3, message.version)
|
|
result.write(4, zint64(message.timestamp))
|
|
when defined(rln):
|
|
result.write(21, message.proof.encode())
|
|
else:
|
|
result.write(21, message.proof)
|