dark-crystal-web3-transport
v1.0.1
Published
This modules contains protobuf schemas for Dark Crystal Web3, and functionality to send and receive them using Waku v2.
Downloads
4
Readme
Dark Crystal Web3 Protocol messages using js-waku
This modules contains protobuf schemas for Dark Crystal Web3, and functionality to send and receive them using Waku v2.
Includes a simple web-based test app:
- run locally:
yarn run serve-test-app
- build:
yarn run build-test-app
creates test-app/index.html - deployed to: https://dark-crystal-web3.gitlab.io/dark-crystal-web3-transport
To run unit tests:
yarn test
To re-build protobuf schemas:
yarn run protobuf
There are 3 message types:
PubKey
This message is sent by the recovery partner and contains their public encryption key. It may also contain a signature to prove their Ethereum address.
The message is encrypted using the hash of their ethereum address as a symmetric key. This gives a small security advantage over sending the key and associated address clear - one can find the associated encryption key for a given address, but not immediately see all addresses which have published a key.
ShareRequest
This message is sent by the secret owner to ask the recovery partner to return a share. It contains a 'lookup key' by which to identify the share, and an ephemeral public encryption key which the recovery partner should use to encrypt the share.
Optionally it may also contain an 'identifier' with some information to confirm the identity of the secret owner, such as a short phrase which is confirmed out of band, or a signature.
This message is encrypted to the recovery partner's public key as given in a PubKey
message.
Share
This message is sent by the recovery partner in response to a ShareRequest
, and contains a share payload.
It is encrypted using the public key given in the ShareRequest
.
All messages also contain a timestamp.
TODO
- [x] decrypt our own pubkey messages, so we can display when / whether they were published