eNuts is a strictly typed mobile Cashu wallet that has Lightning support and can connect to multiple mints. A NOSTR integration allows seemless transactions between you and your contacts. We aim to provide a great user experience by implementing features that make the usage of Ecash easier and safer at the same time. The cashu-ts library and SQLite are used to manage the Cashu related features. This project is in early stage and we strongly encourage you to exercise caution and only use it for experimental or educational purposes. Read more about Cashu at https://docs.cashu.space/ or learn more about eNuts via the eNuts website at https://www.enuts.cash/
β οΈ Disclaimer- π₯ Implemented NUTs
- π Requirements
- π Getting started
- π Contribute
- π Releases
- π Verify releases
- π License
The author is NOT a cryptographer and this work has not been reviewed. This means that there is very likely a fatal flaw somewhere. Cashu is still experimental.
Please be aware that there may be bugs, errors, and incomplete features that could cause unexpected behavior or loss of data. We do not assume any liability for any issues that may arise from using this project.
The entire db (database) layer of this system has not fully undergone thorough testing. This means that the functionality and performance of this particular layer have not been verified, and there may be unforeseen issues or bugs present.
The untested db layer poses potential risks and uncertainties, including but not limited to:
- Data integrity
There is a possibility of data corruption, loss, or inconsistency due to unverified interactions with the db layer. - Performance issues
The untested db layer might have suboptimal performance characteristics, such as slow query execution or inefficient resource utilization. - Compatibility problems
Interoperability issues might arise when integrating with other components or services that rely on the db layer. - Security vulnerabilities
The untested db layer might contain security weaknesses, exposing sensitive information or allowing unauthorized access.
Remember that the use of this untested db layer is entirely at your discretion, and the developers, contributors, or maintainers of this software cannot be held liable for any damages, losses, or adverse effects arising from its usage. If you choose to proceed with the untested db layer, exercise extreme caution and consider seeking expert advice or assistance to mitigate potential risks effectively.
Please note that this disclaimer should be taken seriously and should not be ignored or underestimated. We appreciate your interest in this project and will continue to work on improving it.
Thank you for your understanding.
The NUT documents (Notation, Usage and Terminology) each specify parts of the Cashu protocol.
- eNuts is built using the managed workflow provided by Expo, so the easiest way to run a development environment is their Expo Go app.
- NodeJS 16 or higher.
- Fork this repository and create a local clone.
- Navigate inside the repository and run
npm i
- Start the Expo dev server by running
npm run start
- Download the Expo Go app.
- Android users: Scan the QR code provided by your terminal using the Expo-go app
- iOS users: Press on the local dev server shown in the Expo-go app or scan the QR code using your camera app.
- A browser tab will be opened. Press the "Expo Go" button in the bottom of the page.
- eNuts will be bundled up and will run on your device.
Tip
- Perform a factory reset to start as a "new user" anytime under
Settings/Factory reset
(Dev mode only)
Troubleshooting
- If you see this build error:
[GraphQL] Entity not authorized
in you terminal, you can simply remove the following line from theconfig/app.config.ts
file:
// Unauthorized error related to the project ID used in the expo organization for eNuts
// If you are not a member of the organization, you will encounter the build error.
{
...
extra: {
// Delete the following line to fix the issue:
eas: { projectId: 'edb75ccd-71ac-4934-9147-baf1c7f2b068' },
...
}
...
}
The main purpose of this repository is to continue evolving and pushing the adoption of Ecash for Bitcoin using the Cashu protocol. We want to make contributing to this project as easy and transparent as possible, and we are grateful to the community for contributing bug fixes and improvements. Read more on how to contribute.
https://github.com/cashubtc/eNuts/releases
A verification process adds an extra layer of security to our releases. It's important to verify the integrity of software you download to ensure that the files are those originally posted by the maintainers. You should both check that the hashes of your files match those on the signed list, and that the signature on the list is valid.
Download the Release APK:
- Go to the release section of this repository.
- Download the APK file you want to verify.
Download Verification Files: In the same release section, locate and download the following verification files:
chosen_app_version.apk.sig
(Detached signature for the APK)hash_list.txt
(List of hash values for all releases)gpg_key.asc
(Our GPG public key)
Import the GPG Public Key: Import our GPG public key using the following command:
gpg --import gpg_key.asc
Verify the Detached Signature: Run the following command to verify the detached signature:
gpg --verify chosen_app_version.apk.sig chosen_app_version.apk
Verify the Hash Value:
- Open the
hash_list.txt
file and locate the hash value associated with the downloaded APK file. - Calculate the hash value of your downloaded APK file using a hash tool, for example, sha256sum:
sha256sum chosen_app_version.apk
- Compare the calculated hash value with the one in the
hash_list.txt
file.
If the verification process is successful, you can be confident that the release is authentic and hasn't been tampered with. If you encounter any issues or have questions, please contact us.
eNuts is distributed under the GNU Affero General Public License (AGPL v3). See the LICENSE file.