status-go/protocol
Pascal Precht 051314aad0 feat: add verified wallet accounts to community requests
This commit extends the `CommunityRequestToJoin` with `RevealedAddresses` which represent wallet addresses and signatures provided by the sender, to proof a community owner ownership of those wallet addresses.

**Note: This only works with keystore files maanged by status-go**

At high level, the follwing happens:

1. User instructs Status to send a request to join to a community. By adding a password hash to the instruction, Status will try to unlock the users keystore and verify each wallet account.
2. For every verified wallet account, a signature is created for the following payload, using each wallet's private key

   ``` keccak256(chatkey + communityID + requestToJoinID) ``` A map of walletAddress->signature is then attached to the community request to join, which will be sent to the community owner
3. The owner node receives the request, and if the community requires users to hold tokens to become a member, it will check and verify whether the given wallet addresses are indeed owned by the sender. If any signature provided by the request cannot be recovered, the request is immediately declined by the owner.
4. The verified addresses are then added to the owner node's database such that, once the request should be accepted, the addresses can be used to check on chain whether they own the necessary funds to fulfill the community's permissions

The checking of required funds is **not** part of this commit. It will be added in a follow-up commit.
2023-03-22 13:50:25 +01:00
..
anonmetrics Add collapsed community categories 2023-03-14 17:13:21 +00:00
audio Add audio messages 2020-07-27 17:14:50 +02:00
common Compute emojiHash on-the-fly 2023-03-06 13:22:40 +02:00
communities feat: add verified wallet accounts to community requests 2023-03-22 13:50:25 +01:00
datasync Rename MessageProcessor to MessageSender (#2264) 2021-06-23 17:13:48 +03:00
discord refactor(import-tool): process import data in chunks 2023-01-30 12:23:56 +01:00
encryption feat: Added `setInstallationName` method (#3294) 2023-03-20 23:51:17 +11:00
ens feat: make kdf iterations configurable when creating a multiaccount (#2796) 2022-09-27 16:27:20 -04:00
identity feat: dynamic social links 2023-03-15 12:41:57 +01:00
internal/sqlite Sync Settings (#2478) 2022-03-23 18:47:00 +00:00
migrations feat: add verified wallet accounts to community requests 2023-03-22 13:50:25 +01:00
protobuf feat: add verified wallet accounts to community requests 2023-03-22 13:50:25 +01:00
pushnotificationclient Add collapsed community categories 2023-03-14 17:13:21 +00:00
pushnotificationserver Add collapsed community categories 2023-03-14 17:13:21 +00:00
requests feat: add verified wallet accounts to community requests 2023-03-22 13:50:25 +01:00
sqlite replace deprecated ioutil.TempDir with os.MkdirTemp 2023-01-03 15:40:11 +01:00
subscription Move to monorepo structure (#1684) 2019-11-21 17:19:22 +01:00
transport Add collapsed community categories 2023-03-14 17:13:21 +00:00
tt Tests and linting 2021-09-30 13:02:41 +01:00
urls fix(LinksPreview): Validate image links in the links preview request (#3169) 2023-02-08 15:23:55 +02:00
v1 feat(keycard): keycard details are being synced among devices 2023-02-27 16:03:02 +01:00
verification feat(ActivityCenter): Add message for canceling contact requests (#2992) 2022-12-14 12:27:02 +04:00
wakusync feat: backup keycards to and fetch them from waku 2023-02-28 19:23:36 +01:00
zaputil Move to monorepo structure (#1684) 2019-11-21 17:19:22 +01:00
LICENSE Move to monorepo structure (#1684) 2019-11-21 17:19:22 +01:00
README.md Added basic history of the protocol package (#1984) 2020-06-04 11:23:09 +01:00
activity_center.go feat: refactor activity center endpoints (#3237) 2023-03-03 18:31:48 +04:00
activity_center_persistence.go feat: refactor activity center endpoints (#3237) 2023-03-03 18:31:48 +04:00
activity_center_persistence_test.go feat: refactor activity center endpoints (#3237) 2023-03-03 18:31:48 +04:00
chat.go Handle a few edge cases in contact requests 2023-02-08 17:48:09 +00:00
chat_group_proxy.go Clean up protocol package (#1890) 2020-03-09 07:19:23 +01:00
chat_test.go Add compressed key to multiaccount/messages/contacts 2023-01-30 16:40:40 +00:00
communities_messenger_test.go Add spiff workflow cmd 2023-03-16 14:31:34 +00:00
contact.go Compute emojiHash on-the-fly 2023-03-06 13:22:40 +02:00
contact_test.go Compute emojiHash on-the-fly 2023-03-06 13:22:40 +02:00
delete_for_me_message.go feat: delete for me (#2866) 2022-09-28 19:42:17 +08:00
delete_message.go Delete messages (#2279) 2021-07-26 17:06:32 -04:00
edit_message.go address feedback 2021-06-29 13:15:15 +02:00
emoji_reaction.go Skip wrapping emojis in private group chats 2021-01-26 09:39:47 +01:00
errors.go Add ClearHistory & DeactivateChat methods 2021-01-11 13:36:05 +01:00
group_chat_invitation.go group chat invitation 2020-09-07 12:15:58 +02:00
group_chat_system_messages.go feat: Handle image in group chat 2022-09-01 12:19:01 +02:00
identity_images.go Split clock values for contacts 2023-01-31 15:43:00 +00:00
local_notifications.go Add primary & secondary names 2023-02-27 15:13:43 +00:00
message_builder.go add PinMessage and PinnedMessage (#2180) 2021-05-14 23:22:50 +02:00
message_persistence.go Fix image fields (#3121) 2023-02-02 12:00:49 +04:00
message_validator.go feat: introduce discord import tool 2022-10-28 09:52:26 +02:00
message_validator_test.go Fix protobuf ImageType change 2020-12-17 14:10:00 +01:00
messenger.go feat: add verified wallet accounts to community requests 2023-03-22 13:50:25 +01:00
messenger_activity_center.go feat: refactor activity center endpoints (#3237) 2023-03-03 18:31:48 +04:00
messenger_activity_center_test.go Add spiff workflow cmd 2023-03-16 14:31:34 +00:00
messenger_auto_message.go Add read/unread messenger functions for activity center 2022-10-26 17:19:44 +01:00
messenger_backup.go feat: backup keycards to and fetch them from waku 2023-02-28 19:23:36 +01:00
messenger_backup_handler.go feat: backup keycards to and fetch them from waku 2023-02-28 19:23:36 +01:00
messenger_backup_test.go Add spiff workflow cmd 2023-03-16 14:31:34 +00:00
messenger_base_test.go Add methods to sign and recover messages/signatures to AccountManager 2023-03-16 12:25:06 +01:00
messenger_bookmarks.go Sync all devices after initial pairing (#3047) 2023-01-06 20:21:14 +08:00
messenger_browsers.go Issue 13813 -- Use messenger ns for browser CRUD (#2801) 2022-08-24 16:05:35 +02:00
messenger_browsers_test.go Issue 13813 -- Use messenger ns for browser CRUD (#2801) 2022-08-24 16:05:35 +02:00
messenger_chats.go Update wakuext_buildContact 2023-03-14 16:57:33 +01:00
messenger_collapsed_community_categories.go Add collapsed community categories 2023-03-14 17:13:21 +00:00
messenger_collapsed_community_categories_test.go Fix collapsed tests 2023-03-16 13:40:20 +00:00
messenger_communities.go feat: add verified wallet accounts to community requests 2023-03-22 13:50:25 +01:00
messenger_config.go feat: backup keycards to and fetch them from waku 2023-02-28 19:23:36 +01:00
messenger_contact_requests_test.go Add spiff workflow cmd 2023-03-16 14:31:34 +00:00
messenger_contact_update_test.go Add spiff workflow cmd 2023-03-16 14:31:34 +00:00
messenger_contact_verification.go Add primary & secondary names 2023-02-27 15:13:43 +00:00
messenger_contact_verification_test.go Add spiff workflow cmd 2023-03-16 14:31:34 +00:00
messenger_contacts.go feat: Remove cancelOutgoingContactRequest feature (#3293) 2023-03-21 20:49:14 +07:00
messenger_delete_message_for_everyone_test.go fix(activity_center): Add remove activity center notifications array to message response (#3277) 2023-03-16 21:41:53 +03:00
messenger_delete_message_for_me_test.go support local pairing after logged in as receiver; pair installation;(#3202) 2023-02-28 20:32:45 +08:00
messenger_delete_message_test.go feat: add deleted by xxx support (#3077) 2023-02-01 08:57:35 +08:00
messenger_discv5.go feat: Add DiscV5 to Waku2 (#2434) 2021-11-22 09:40:14 -04:00
messenger_edit_message_test.go Linting and some fixes on contact requests handling 2023-02-08 17:48:09 +00:00
messenger_emoji_test.go Fix duplicated notifications on receiving contact update 2023-02-14 09:22:37 +00:00
messenger_ens.go Request/Decline access to communities 2021-02-26 15:35:43 +01:00
messenger_group_chat.go Add spiff workflow cmd 2023-03-16 14:31:34 +00:00
messenger_group_chat_test.go feat: allow group admin to delete others message (#3259) 2023-03-07 22:38:09 +08:00
messenger_handler.go feat: add verified wallet accounts to community requests 2023-03-22 13:50:25 +01:00
messenger_handler_test.go Split clock values for contacts 2023-01-31 15:43:00 +00:00
messenger_identity.go fix: set device type on init 2023-03-09 18:02:49 -04:00
messenger_identity_image_test.go Add spiff workflow cmd 2023-03-16 14:31:34 +00:00
messenger_installations_test.go Add spiff workflow cmd 2023-03-16 14:31:34 +00:00
messenger_keycard.go feat: backup keycards to and fetch them from waku 2023-02-28 19:23:36 +01:00
messenger_mailserver.go fix: add cursors to store queries 2023-01-27 17:03:59 -04:00
messenger_mailserver_cycle.go Update messenger_mailserver_cycle.go 2023-01-19 13:56:50 -04:00
messenger_maps.go Tests and linting 2021-09-30 13:02:41 +01:00
messenger_messages.go Add spiff workflow cmd 2023-03-16 14:31:34 +00:00
messenger_mute_test.go Fix some tests and restore private/public RPC client 2021-07-20 10:57:38 +02:00
messenger_peers.go chore: upgrade go-waku to v0.5 (#3213) 2023-02-22 17:58:17 -04:00
messenger_pin_message_test.go Turning the tests back on (#2519) 2022-02-03 20:37:41 +00:00
messenger_pin_messages.go feat: introduce `CommunityAdminSettings` in `CommunityDescription` 2022-05-18 09:58:11 +02:00
messenger_reply_test.go fix(reply-test): fix reply test because msgs could come out of order 2023-01-11 16:24:42 -05:00
messenger_response.go feat: backup keycards to and fetch them from waku 2023-02-28 19:23:36 +01:00
messenger_response_test.go Fix duplicated notifications on receiving contact update 2023-02-14 09:22:37 +00:00
messenger_saved_address.go feat: Update saved addresses DB to store ENS, isTest flag and chains (#3183) 2023-03-06 16:26:46 +03:00
messenger_share_image_test.go Fix image fields (#3121) 2023-02-02 12:00:49 +04:00
messenger_status_updates.go Upgrade linter to 1.50.0 2023-01-13 17:52:03 +00:00
messenger_status_updates_test.go Timeout automatic status updates (#2757) 2022-08-03 04:38:01 +05:30
messenger_switcher_cards.go Persist switcher cards (#3049) 2023-01-05 21:41:57 +05:30
messenger_sync_bookmark_test.go support local pairing after logged in as receiver; pair installation;(#3202) 2023-02-28 20:32:45 +08:00
messenger_sync_chat_test.go support local pairing after logged in as receiver; pair installation;(#3202) 2023-02-28 20:32:45 +08:00
messenger_sync_clear_history_test.go support local pairing after logged in as receiver; pair installation;(#3202) 2023-02-28 20:32:45 +08:00
messenger_sync_keycard_change_test.go support local pairing after logged in as receiver; pair installation;(#3202) 2023-02-28 20:32:45 +08:00
messenger_sync_keycards_state_test.go support local pairing after logged in as receiver; pair installation;(#3202) 2023-02-28 20:32:45 +08:00
messenger_sync_profile_picture_test.go support local pairing after logged in as receiver; pair installation;(#3202) 2023-02-28 20:32:45 +08:00
messenger_sync_raw_messages.go support local pairing after logged in as receiver; pair installation;(#3202) 2023-02-28 20:32:45 +08:00
messenger_sync_saved_addresses_test.go feat: Update saved addresses DB to store ENS, isTest flag and chains (#3183) 2023-03-06 16:26:46 +03:00
messenger_sync_settings.go Update account name during displayName setting syncing 2023-02-17 12:10:44 +02:00
messenger_sync_settings_test.go Add methods to sign and recover messages/signatures to AccountManager 2023-03-16 12:25:06 +01:00
messenger_sync_verification_test.go support local pairing after logged in as receiver; pair installation;(#3202) 2023-02-28 20:32:45 +08:00
messenger_sync_wallets_test.go support local pairing after logged in as receiver; pair installation;(#3202) 2023-02-28 20:32:45 +08:00
messenger_test.go Add spiff workflow cmd 2023-03-16 14:31:34 +00:00
messenger_walletconnect.go Implement wallet connect session CRUD API 2022-08-19 12:32:00 +01:00
messenger_walletconnect_test.go Implement wallet connect session CRUD API 2022-08-19 12:32:00 +01:00
persistence.go Split clock values for contacts 2023-01-31 15:43:00 +00:00
persistence_collapsed_community_categories.go Fix collapsed tests 2023-03-16 13:40:20 +00:00
persistence_test.go Support soft deletion for activity center notifications (#3201) 2023-02-24 20:47:04 -03:00
push_notification_test.go Add spiff workflow cmd 2023-03-16 14:31:34 +00:00
status_update.go feat: user status (#2276) 2021-07-22 13:41:49 -04:00
switcher_card.go Persist switcher cards (#3049) 2023-01-05 21:41:57 +05:30
transaction_validator.go Move message to common namespace 2020-09-09 21:22:12 +02:00
transaction_validator_test.go Move message to common namespace 2020-09-09 21:22:12 +02:00

README.md

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 exports Messenger 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 by Messenger as a persistent data store.

History

Originally this package was a dedicated repo called status-protocol-go and was migrated into status-go. The new status-go/protocol package maintained its own dependencies until sub modules were removed and the root go.mod file managed all dependencies for the entire status-go repo.