An open source desktop wallet for nano and banano with end-to-end encrypted, on chain messaging using the dagchat protocol.

Overview

dagchat

An open source wallet with end-to-end encrypted, on chain messaging for nano and banano using the dagchat protocol.

This application is not yet released and thus there are no guarantees when it comes to the cryptographic security of wallets saved or messages sent with dagchat. Every care has been taken to ensure safety within the on-device wallet encryption, and the on-chain end to end encrypted messaging implementations, but this repository has not undergone a professional audit of any kind.

Features

  • Import multiple wallets using a mnemonic phrase, hex seed, or even private key. Each wallet supports many accounts which can be shown procedurally or by specifying an index.
    image image
  • Send on chain, end to end encrypted memos/messages using the dagchat protocol.
    image
  • Receive your nano and banano, and read incoming messages all in the same place.
    image
  • Messages are identified automatically by the wallet.
    image
  • Messages when sent and received are automatically encrypted and saved to your computer. They can be read again in the message history tab.
    image

Building from source

To build dagchat from source, you will need to have rust and cargo installed on your machine: https://www.rust-lang.org/tools/install

  1. Clone the repository or download the zip and extract it.
  2. If you are building for Linux (Windows and MacOS skip this step) you will need to install some other dependencies that are used for the rust-clipboard crate that manages copying and pasting in dagchat: sudo apt-get install libxcb1-dev libxcb-render0-dev libxcb-shape0-dev libxcb-xfixes0-dev.
  3. Enter the repository's directory (either the clone, or the extracted zip) and run cargo build --release to build an executable in release mode. This will appear in /target/release/.
  4. The application should be built and ready to run.
Comments
  • Tripp cheng workserver 1

    Tripp cheng workserver 1

    Two patches to allow dagchat to work with the standard Nano Work Server:

    1. Adjusted validate_work rpc for 'valid_all' not 'valid'
    2. Removed 'multiplier' from WorkResponse struct as not required and not all work servers return this.

    Tested only on Nano so unsure if needs to be adjusted for Banano.

    opened by TrippCheng 3
  • Gets rid of trailing whitespace in seed

    Gets rid of trailing whitespace in seed

    Before, if there was trailing whitespace in the seed, the character check would fail due to not being 64 characters long. Now, the white space is trimmed. I cargo builded and tested, seems to work.

    opened by jetstream0 1
  • Trim sending address

    Trim sending address

    When pasting, sometimes there may be a space at the end of the address. dagchat will now trim the address that the user pastes when sending messages/banano. Tested with cargo build --release, and pasting in an address with a space in the send dialog. It should work.

    opened by jetstream0 0
  • Codebase refactor

    Codebase refactor

    • Entire codebase refactored and structure changed (read about it)
    • Change clipboard crate to arboard (Needs testing on certain linux distributions)
    • Modified some blocks and statements to better adhere to idiomatic principles
    opened by derfarctor 0
  • Planned features and changes

    Planned features and changes

    These are changes and features planned before a full release of dagchat.

    They are roughly ordered in terms of priority.

    • [x] Refactor codebase so that it is readable and easier to maintain. This will also lead to easier contributing.
    • [x] Allow for standard nano and banano node RPC parsing by using standard node RPC responses as the default templates for all calls.
    • [x] Change work generation to be done locally by default using the device CPU. The work generation can be optimised in the future down the line (multithreading).
    • [x] Add the address book.
    • [x] Add a persistent settings page containing the desired node RPC endpoint, and a minimum receive amount to prevent spam. Include options for work generation.
    • [x] Allow the use of Natrium and Kalium node RPCs for sending blocks, as a way of outsourcing work as a non-default option. Since it is non-default, if it goes down or the RPC changes, this is no longer a breaking change from dagchat's perspective.
    • [x] Replace the current rust-clipboard crate with arboard to remove security vulnerabilities and use a maintained crate. Reminder: check for compatibility in a range of linux distributions - NEEDS DOING.
    • [ ] If a message comprises an abnormally large number of blocks, prompt confirmation from the user before requesting them from the node to limit attack vectors.
    • [x] Allow the user to change the password used by the wallet.

    Settings to implement in the settings page

    • [ ] Toggleable automatic receives for non-message containing receivables.
    • [x] Toggleable encrypting and saving of sent and received messages.

    Lower priority

    • [x] For local nano work generation implement variable difficulty thresholds depending on block type to speed up receiving.
    • [x] Update the progress bar more accurately and frequently when work is being generated locally.
    • [x] Add a donation to author field.
    • [ ] Add option to send amount in RAW.
    opened by derfarctor 0
  • October 2022: STATE OF PROJECT

    October 2022: STATE OF PROJECT

    Currently support for dagchat is non-existent and as a result the project is not in a working state.

    The original version of dagchat was made with the assumption that work can be outsourced via the Natrium and Kalium APIs, however both nodes run custom RPC handling software and give custom responses and since dagchat was written to handle these, as a result it does not work with standard nodes.

    This is a major flaw, because as the Kalium and Natrium RPCs have changed and been developed, dagchat must update with them or functionality will cease. The latter has happened. The solution as I see it is to stop relying upon these APIs, even if they can outsource work, and instead generate work by default on the client's machine.

    In the future, dagchat could potentially be listed as a verified service in the boompow network to outsource the proof of work, but in the mean time it will be done locally on a device.

    These changes will come along with a severe refactoring of the codebase to greatly improve readability, and make the project easier for new contributors to get involved with.

    opened by derfarctor 0
  • Resuming support - Receivable blocks are not being identified

    Resuming support - Receivable blocks are not being identified

    Preface: After a while of inactivity, I am going to resume development of dagchat in an attempt to bring it to a place where it is ready to be released, and the codebase is in a manor to allow for easy contributions and further development.

    Receivable blocks are not being found currently within dagchat, and node RPC is returning blocks:"", suggesting the default node may be malfunctioning. This needs looking into.

    opened by derfarctor 0
  • v1.0.0 Beta

    v1.0.0 Beta

    Potentially unstable. Work in progress, not yet bug tested or polished.

    Added

    1. Accounts are saved under OS default application data directory and then /dagchat/accounts.dagchat
    2. Account data is encrypted using a user passphrase
    3. File structure rework

    Process used for encrypting account data using passphrase

    1. Expand passphrase into 256 bit key using Argon2 with randomly generated 128 bit salt
    2. Serialise UserData's Vec with bincode into Vec
    3. Encrypt this Vec with 256 bit key from 1. using AES256gcm
    4. Concatenate salt, nonce, and encrypted bytes in that order
    5. Write to [OS App data]/dagchat/accounts.dagchat
    opened by derfarctor 0
Releases(v1.3.0)
  • v1.3.0(Nov 15, 2022)

    Changes since v1.2.1

    1. Added a reply button to easily respond when reading a message.
    2. Added a button to bulk receive non-messages in the inbox.
    3. Automatically select the first account when a wallet is chosen.
    4. UI tweaks.

    Features

    • Unlimited wallets with support for both nano and banano.
    • Unlimited accounts.
    • Send and receive end-to-end encrypted messages/memos with your normal nano and banano transactions.
    • Add common contacts to the address book for ease of use and to prevent having to save addresses in multiple places.
    • View your previously sent and received messages.
    • Settings.

    Release binaries are compiled targeting x86_64 architectures. For more information and some examples of how dagchat wallet looks, as well as instructions for building from source refer to the README.md here.

    Disclaimer: There are no guarantees when it comes to the cryptographic security of wallets saved or messages sent with dagchat. Whilst encrypted, messages are sent on a public blockchain and will remain there for the foreseable future. Great care has been taken to make dagchat's cryptographic implementations secure, but this repository has not undergone a professional audit of any kind.

    Source code(tar.gz)
    Source code(zip)
    dagchat-v1.3.0-linux(11.37 MB)
    dagchat-v1.3.0-windows.exe(15.50 MB)
  • v1.2.1(Nov 10, 2022)

    Changes since v1.2.0

    1. Fixed the saving and loading of wallets imported using a private key. Please re-import any private key wallets you may be using in a version of dagchat 1.2.1 or later for them to work properly.

    Features

    • Unlimited wallets with support for both nano and banano.
    • Unlimited accounts.
    • Send and receive end-to-end encrypted messages/memos with your normal nano and banano transactions.
    • Add common contacts to the address book for ease of use and to prevent having to save addresses in multiple places.
    • View your previously sent and received messages.
    • Settings.

    Release binaries are compiled targeting x86_64 architectures. For more information and some examples of how dagchat wallet looks, as well as instructions for building from source refer to the README.md here.

    Disclaimer: There are no guarantees when it comes to the cryptographic security of wallets saved or messages sent with dagchat. Whilst encrypted, messages are sent on a public blockchain and will remain there for the foreseable future. Great care has been taken to make dagchat's cryptographic implementations secure, but this repository has not undergone a professional audit of any kind.

    Source code(tar.gz)
    Source code(zip)
    dagchat-v1.2.1-linux(11.37 MB)
    dagchat-v1.2.1-windows.exe(15.47 MB)
  • v1.2.0(Nov 5, 2022)

    Changes since v1.0.0

    1. Added the ability to generate work using a nano work server, selectable in the Proof of Work option in settings.
    2. Added an info button the address book where you can view and copy the address of each contact.
    3. Fixed numerous bugs.

    Features

    • Unlimited wallets with support for both nano and banano.
    • Unlimited accounts.
    • Send and receive end-to-end encrypted messages/memos with your normal nano and banano transactions.
    • Add common contacts to the address book for ease of use and to prevent having to save addresses in multiple places.
    • View your previously sent and received messages.
    • Settings.

    Release binaries are compiled targeting x86_64 architectures. For more information and some examples of how dagchat wallet looks, as well as instructions for building from source refer to the README.md here.

    Disclaimer: There are no guarantees when it comes to the cryptographic security of wallets saved or messages sent with dagchat. Whilst encrypted, messages are sent on a public blockchain and will remain there for the foreseable future. Great care has been taken to make dagchat's cryptographic implementations secure, but this repository has not undergone a professional audit of any kind.

    Source code(tar.gz)
    Source code(zip)
    dagchat-v1.2.0-linux(11.37 MB)
    dagchat-v1.2.0-windows.exe(15.48 MB)
  • v1.0.0(Nov 3, 2022)

    Features

    • Unlimited wallets with support for both nano and banano.
    • Unlimited accounts.
    • Send and receive end-to-end encrypted messages/memos with your normal nano and banano transactions.
    • Add common contacts to the address book for ease of use and to prevent having to save addresses in multiple places.
    • View your previously sent and received messages.
    • Settings.

    It is recommended to set the Proof of Work option to Local in settings within the banano side of the application to reduce reliance on third parties.

    Release binaries are compiled targeting x86_64 architectures. For more information and some examples of how dagchat wallet looks, as well as instructions for building from source refer to the README.md here

    Disclaimer: There are no guarantees when it comes to the cryptographic security of wallets saved or messages sent with dagchat. Whilst encrypted, messages are sent on a public blockchain and will remain there for the foreseable future. Great care has been taken to make dagchat's cryptographic implementations secure, but this repository has not undergone a professional audit of any kind.

    Source code(tar.gz)
    Source code(zip)
    dagchat-v1.0.0-linux(10.88 MB)
    dagchat-v1.0.0-windows.exe(15.41 MB)
  • v1.0.0-test(Nov 2, 2022)

    Features

    • Unlimited wallets with support for both nano and banano.

    • Unlimited accounts.

    • Send and receive end-to-end encrypted messages/memos with your normal nano and banano transactions.

    • View your previously sent and received messages.

    • Add common contacts to the address book for ease of use and to prevent having to save addresses in multiple places.

    • Settings.

    For more features and some examples of how dagchat wallet looks, as well as instructions for building from source refer to the README.md here.

    Disclaimer: There are no guarantees when it comes to the cryptographic security of wallets saved or messages sent with dagchat. Every care has been taken to ensure safety within the encryption of locally stored wallets and messages, and the on-chain end to end encrypted messaging implementation, but this repository has not undergone a professional audit of any kind.

    Source code(tar.gz)
    Source code(zip)
    dagchat-v1.0.0-test(11.05 MB)
    dagchat-v1.0.0-test-windows.exe(15.41 MB)
  • v1.0.0-beta(Apr 25, 2022)

    Features

    • Import, create and save multiple nano and banano wallets using a mnemonic phrase, 64 character seed, or even private key.
    • Send and receive on chain, end to end encrypted messages with your normal nano and banano transactions using the dagchat protocol.
    • Send nano and banano as you normally would. The dagchat wallet includes normal wallet functions such as opening accounts, and changing representatives.
    • View your previously sent and received messages by encrypting and saving them to your device automatically.

    For more features and some examples of how dagchat wallet looks, as well as instructions for building from source refer to the README.md here.

    Disclaimer

    There are no guarantees when it comes to the cryptographic security of wallets saved or messages sent with dagchat whilst it is not yet released. Every care has been taken to ensure safety within the on-device wallet encryption, and the on-chain end to end encrypted messaging implementations, but this repository has not undergone a professional audit of any kind.

    Source code(tar.gz)
    Source code(zip)
    dagchat-v1.0.0-beta-linux(10.69 MB)
    dagchat-v1.0.0-beta-windows.exe(14.90 MB)
  • v1.0.0-alpha(Apr 11, 2022)

    dagchat v1.0.0 alpha

    This is a test build. Please do not use your own wallet with dagchat whilst it is being developed. You can generate a new mnemonic using this site or create a new wallet from a seed within the application.

    There are no guarantees when it comes to the cryptographical security of messages sent with dagchat whilst it is not yet released. Every care has been taken to ensure safety within the end-to-end encryption implementation, but this repository has not undergone a full professional audit.

    Features:

    • Create and import wallets.
    • Send on chain, end to end encrypted messages with your normal nano and banano transactions using the dagchat protocol.
    • Send nano and banano.
    • Receive nano and banano and recognise, decrypt and read incoming messages sent with the dagchat protocol.
    • Change account representative.
    • Choose between 'modest' and 'vibrant' themes.

    Any account loaded with dagchat v1.0.0 alpha is not saved when you close the application. If you have created a new account within the app, make sure to save the seed if you plan to send funds to its address and wish to recover them.

    Source code(tar.gz)
    Source code(zip)
    dagchat.exe(14.38 MB)
Owner
derfarctor
derfarctor
⋰·⋰ Feeless is a Nano cryptocurrency node, wallet, tools, and Rust crate.

⋰·⋰ Feeless What is Feeless? Feeless is a Nano cryptocurrency node, wallet, tools, and Rust crate. This is not the official project for Nano, only an

null 127 Dec 5, 2022
NymDrive is a complete, end-to-end encrypted file syncing daemon that runs over the Nym network.

NymDrive NymDrive is a complete, end-to-end encrypted file syncing daemon that runs over the Nym network. Features Active file monitoring of changes i

Hans Bricks 16 Jul 12, 2022
Open source Rust implementation of the Witnet decentralized oracle protocol, including full node and wallet backend 👁️🦀

witnet-rust is an open source implementation of the Witnet Decentralized Oracle Network protocol written in Rust. Components witnet-rust implements ma

The Witnet Project 155 Nov 21, 2022
Dione is an anonymize and encrypted messaging system build on top on a peer to peer layer.

Secure and Anonymous Messaging WARNING: Currently Dione is not ready to be used nor does it fulfill its goal of being an anonymous messenger. In order

Dione 41 Jan 5, 2023
An encrypted multi client messaging system written in pure Rust

?? Preamble This is a pure Rust multi-client encrypted messaging system, also known as Edode's Secured Messaging System. It is an end-to-end(s) commun

Edode 3 Sep 16, 2022
A Bitcoin wallet collider that brute forces random wallet addresses written in Rust.

Plutus-Rustus Bitcoin Brute Forcer A Bitcoin wallet collider that brute forces random wallet addresses written in Rust. This is a straight port of Plu

null 46 Dec 23, 2022
Koofr Vault is an open-source, client-side encrypted folder for your Koofr cloud storage offering an extra layer of security for your most sensitive files.

Koofr Vault https://vault.koofr.net Koofr Vault is an open-source, client-side encrypted folder for your Koofr cloud storage offering an extra layer o

Koofr 12 Dec 30, 2022
Nym provides strong network-level privacy against sophisticated end-to-end attackers, and anonymous transactions using blinded, re-randomizable, decentralized credentials.

The Nym Privacy Platform The platform is composed of multiple Rust crates. Top-level executable binary crates include: nym-mixnode - shuffles Sphinx p

Nym 653 Dec 26, 2022
Open Protocol Indexer, OPI, is the best-in-slot open-source indexing client for meta-protocols on Bitcoin.

OPI - Open Protocol Indexer Open Protocol Indexer, OPI, is the best-in-slot open-source indexing client for meta-protocols on Bitcoin. OPI uses a fork

Best in Slot 33 Dec 16, 2023
Terabethia - A Bridge and Messaging Protocol between Ethereum and the Internet Computer.

Terabethia - A Bridge Between Ethereum & the Internet Computer Terabethia is a bridge between Ethereum & the Internet Computer that contracts in both

Psychedelic 36 Dec 26, 2022
A Rust implementation of the Message Layer Security group messaging protocol

Molasses An extremely early implementation of the Message Layer Security group messaging protocol. This repo is based on draft 4 of the MLS protocol s

Trail of Bits 109 Dec 13, 2022
An application for creating encrypted vaults for the GNOME desktop.

Vaults An application for creating encrypted vaults for the GNOME desktop. It currently uses gocryptfs and CryFS for encryption. Please always keep a

Martin Pobaschnig 51 Dec 17, 2022
MyCitadel Wallet app for Linux, Windows & MacOS desktop made with GTK+

MyCitadel Desktop Bitcoin, Lightning and RGB wallet MyCitadel is a wallet for bitcoin, digital assets and bitcoin finance (#BiFi) smart contracts. It

My Citadel 88 Jan 2, 2023
End-to-end encryption and mutual authentication for distributed applications.

✨ Hands-on Introduction: Build end-to-end encrypted, mutually-authenticated, secure messaging in Rust ✨ Rust and Elixir libraries for end-to-end encry

Ockam | Trust for Data-in-Motion 2.8k Jan 2, 2023
IDO protocol is now open source

Project Overview Uprock IDO Protocol facilitates Initial DEX Offerings (IDOs) with advanced features for managing token distribution, whitelisting, an

UpRock 18 Mar 6, 2024
Easy to use cryptographic framework for data protection: secure messaging with forward secrecy and secure data storage. Has unified APIs across 14 platforms.

Themis provides strong, usable cryptography for busy people General purpose cryptographic library for storage and messaging for iOS (Swift, Obj-C), An

Cossack Labs 1.6k Dec 30, 2022
Glommio Messaging Framework (GMF) is a high-performance RPC system designed to work with the Glommio framework.

Glommio Messaging Framework (GMF) The GMF library is a powerful and innovative framework developed for facilitating Remote Procedure Calls (RPCs) in R

Mohsen Zainalpour 29 Jun 13, 2023
The protocol are designed and made for the future of cross-IP, cross-chain metaverse.

Avatar-protocol 化身协议 This project demonstrates how to use the Solana Javascript API to interact with programs on the Solana blockchain. The project co

Wind-protocol 1 Jan 10, 2022
Authenticate the cryptographic chain-of-custody of Linux distributions (like Arch Linux and Debian) to their source code inputs

backseat-signed Authenticate the cryptographic chain-of-custody of Linux distributions (like Arch Linux and Debian) to their source code inputs. This

null 25 Apr 17, 2024