-
Notifications
You must be signed in to change notification settings - Fork 0
Initialize #2
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Initialize #2
Conversation
Update: added filtering of fetched notes based on the "mark-received" interface. As of now, the marking of notes is an optional and QoL feature. Since there is no authentication currently, the user ID is by default a 16-byte random identifier (UUID), optionally also defined by the client. The randomness here helps a bit on privacy and unlinkability, and also avoids users with Mal-intent to mark other users' notes as marked. In a decentralized setting, we may not to broadcast marking updates, leaving this feature state specific and isolated to each server as it is likely that users will maintain connections to a (single) preferred node of their choice. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM!
after this initial pr let's move with smaller ones :)
Isn't this implied by the payload sent in response to What we do want is preventing the repeat download of the same notes by the user. I think the first option from this comment should achieve this via a combination of passing the |
Thank you @mmagician for taking a look!
Indeed that would be a more natural flow.
We can replace the marking of notes feature for this offset approach. It was actually implemented before this 👍 Just confirm if you prefer the |
Let me provide some context:
But if they call
This is a valid point. The client would need to internally keep track of the block numbers. I think this is reasonable though, since the Miden wallet (for private accounts) by design already stores the account data locally. I've created an issue for this. |
Thank you for describing the flow. As it stands the implementation follows that logic, with the exception of the tag-length mechanism.
Indeed, it would be somewhat equivalent. That is why it would be an optional feature. I see the
I like the design, however if the sender sends notes out-of-order, an older note will be ignored by the receiver. Nevertheless, I'll work on a version of the implementation focused on the block-number approach/marking feature removed 👍 |
Repo scaffolding with initial logic, mainly to provide a base for higher level discussions.
Client <-> Server/Node communications are gRPC.
Server is labelled as Node -- thinking of future decentralization.
Encryption is currently AES. Asymmetric encryption to be implemented.
Crates
proto
: Protobuf definitions used and generated Rust code;transport
: Client and Node implementations. To be split into two further crates.Current flow
Send note
Note
. ANote
is split into two parts, theNoteHeader
andNoteDetails
. TheNoteDetails
are sent encrypted;Note
, uniquely identified by itsNoteId
. StoresNote
(split into several columns, including itsNoteTag
) in local database (currently SQLite).Fetch notes
NoteTag
;NoteDetails
of each response entry), ignoring those which decryption fails.Mark received
NoteId
(single request, can be a batch). AUserId
is also sent (no current authentication);UserId
. A marked note should not be sent again when fetching notes, though this is to be implemented.Discussions
NoteHeader
is stored in plain-text, containing the sender ID. Does this raise any privacy concerns?