mirror of
https://github.com/status-im/status-go.git
synced 2025-01-23 21:19:48 +00:00
8ba6625df0
Images are too large to be sent over waku/whisper with the current PoW (0.002). This commit lowers the PoW for sending messages to a lower value, depending on the size. This means that older clients will not be able to receive messages that are greater than 50KB (none of the messages we currently send is anywhere close to that, most of them are less than 1KB). I would have preferred to set the PoW explicitly for images to be lower, but it's not trivial as we use `datasync` to send messages and its interface takes a payload that is to be dispatched and a function to dispatch, at initialization stage. This make it difficult (impossible?) to set a different PoW for a particular message, without changing function signature in datasync (which is agnostic to the transport used). So a less cumbersome approach is to just fingerprint on size.
status-go/protocol
This is an implementation of the secure transport and payloads which are a part of the Status Client specification.
This implementation uses SQLite and SQLCipher for persistent storage.
The payloads are encoded using protocol-buffers.
Content
messenger.go
is the main file which exportsMessenger
struct. This is a public API to interact with this implementation of the Status Chat Protocol.protobuf/
contains protobuf files implementing payloads described in the Payloads spec.encryption/
implements the Secure Transport spec.transport/
connects the Status Chat Protocol with a wire-protocol which in our case is either Whisper or Waku.datasync/
is an adapter for MVDS.applicationmetadata/
is an outer layer wrapping a payload with an app-specific metadata like a signature.identity/
implements details related to creating a three-word name and identicon.migrations/
contains implementation specific migrations for the sqlite database which is used byMessenger
as a persistent data store.