This specification details what a Status account address is and how account addresses are created and used.
The core concept of an account in Status is a set of cryptographic keypairs. Namely, the combination of the following:
- 1a Waku chat identity keypair
- 2a set of cryptocurrency wallet keypairs
The Status node verifies or derives everything else associated with the contact from the above items, including:
- Ethereum address (future verification, currently the same base keypair)
- identicon
- message signatures
- A user is responsible for broadcasting certain information publicly so that others may contact them.
- A user MAY register a public username on the Ethereum Name System (ENS). This username is a user-chosen subdomain of the
stateofus.ethENS registration that maps to their Waku identity key (IK).
- An account MAY edit the
IKgenerated identicon with a chosen picture. This picture will become part of the publicly broadcasted profile of the account.
Below is the wire format for the account information that is broadcasted publicly. An Account is referred to as a Multiaccount in the wire format.
message MultiAccount {
string name = 1; // name of the account
int64 timestamp = 2; // timestamp of the message
string identicon = 3; // base64 encoded identicon
repeated ColorHash color_hash = 4; // color hash of the identicon
int64 color_id = 5; // color id of the identicon
string keycard_pairing = 6; // keycard pairing code
string key_uid = 7; // unique identifier of the account
repeated IdentityImage images = 8; // images associated with the account
string customization_color = 9; // color of the identicon
uint64 customization_color_clock = 10; // clock of the identicon color, to track updates
message ColorHash {
repeated int64 index = 1;
}
message IdentityImage {
string key_uid = 1; // unique identifier of the image
string name = 2; // name of the image
bytes payload = 3; // payload of the image
int64 width = 4; // width of the image
int64 height = 5; // height of the image
int64 filesize = 6; // filesize of the image
int64 resize_target = 7; // resize target of the image
uint64 clock = 8; // clock of the image, to track updates
}
}The above payload is broadcasted when 2 devices that belong to a user need to be paired.
Copyright and related rights waived via CC0.