Keychat is a chat app, built on Bitcoin Ecash, Nostr Protocol, Signal Protocol and MLS Protocol.
- Android APK
- iOS: Comming
- Senders send messages stamped with Bitcoin ecash to Nostr relays. The Nostr relays collect the Bitcoin ecash, then deliver messages to receivers.
- Unlike the centralized postal system, Keychat can use multiple Bitcoin ecash issuers and Nostr relays, each maintained by distinct operators.
- Keychat uses Signal protocol to ensure message encryption security and meta-data privacy.
- The content of the letter can be exposed easily by opening the envelope. Keychat messages are end-to-end encrypted via Signal protocol, with a unique encryption key generated for each message. Only the sender and receiver can decrypt the message.
- The addresses of both parties on the envelope can be tracked. In theory, this problem is solved if they change addresses daily. So Keychat reuses Signal protocol to update sending and receiving addresses for nearly every message.
- Like the postal system, Keychat requires no registration. Users just generate Nostr keys as ID.
- Android
- iOS
- macOS
- Linux
- Windows
Keychat implements the following nips:
- NIP-01: Basic protocol flow
- NIP-04: Encrypted direct message
- NIP-06: Basic key derivation from mnemonic seed phrase
- NIP-07: window.nostr capability for web browsers
- NIP-19: Bech32-encoded entities
- NIP-44: Encrypted Payloads
- NIP-47: Nostr Wallet Connect
- NIP-55: Android Signer Application
- NIP-59: Gift Wrap
git submodule update --init --recursive
dart pub global activate melos 6.2.0
melos bootstrap
# build rust lib: packages\keychat_rust_ffi_plugin\README.md
cd packages/app
flutter devices
flutter run -d xxx
# release
melos run build:ios
melos run build:android
melos run build:macos
- Nostr Protocol: for delivering and storing messages.
- Ecash Cashu: for paying micropayments to relays (optional), depends on whether relay charges a fee.
- Signal Protocol: for encrypting messages (end-to-end).
- MLS Protocol: messaging Layer Security (MLS) is a security layer for encrypting messages in groups of size two to many.
- AWS S3: for storing encrypted files.
- Isar DB: a NoSQL database for Flutter for local data storage.
- flutter_rust_bridge: Flutter/Dart <-> Rust binding generator, feature-rich, but seamless and simple.
- melos: Melos is a CLI tool used to help manage Dart projects with multiple packages
- rust-nostr: Nostr protocol implementation, SDK and FFI
The easiest way to support developers is to click on the star (⭐) at the top of the page.
Licensed under the GNU AGPLv3: https://www.gnu.org/licenses/agpl-3.0.html