GithubHelp home page GithubHelp logo

zero-1729 / volt Goto Github PK

View Code? Open in Web Editor NEW
57.0 3.0 6.0 14.47 MB

Volt Wallet

License: MIT License

JavaScript 0.35% TypeScript 98.07% Java 0.25% Ruby 0.20% Objective-C 0.30% CSS 0.52% Shell 0.07% Kotlin 0.24%

volt's Introduction

Volt

code style: prettier

A modern descriptor-based Financial Freedom Bitcoin Wallet aimed at restoring sovereignty to Global Bitcoiners.

What are descriptors? Read more.

Features

  • Descriptor-based HD wallet (wpkh(KEY), pkh(KEY), sh(wpkh(KEY)), tr(KEY))
  • Watch Only support
  • Partially Signed Bitcoin Transactions (PSBTs) and Fee Bumping (RBF)
  • Lightning Network support (BOLT11 & LNURL)
  • Internal Wallet Lightning Swaps (Onchain<>Lighting)
  • Multi-lingual (en, ar)

Download Beta

⚠️ Warning: Volt is still in Beta, do not use it for large amounts of Bitcoin.

Android

IOS

  • IOS Beta Test flight coming soon.

Supported BIPs

  • BIP21 URI Scheme
  • BIP32 Hierarchical Deterministic Wallets
  • BIP39 Mnemonic code for generating deterministic keys
  • BIP44 Multi-Account Hierarchy for Deterministic Wallets
  • BIP49 Derivation scheme for P2WPKH-nested-in-P2SH based accounts
  • BIP70 Payment Protocol
  • BIP84 Derivation scheme for P2WPKH based accounts
  • BIP86 Derivation scheme for PTR based accounts
  • BIP173 Base32 address format for native v0-16 witness outputs
  • BIP174 Partially Signed Bitcoin Transactions

Supported Bitcoin Tech

Translation

For details on contributing to the app translation, please see the translation guide

Build

Note: Please ensure the version of Node and NPM you are using are >= the minimum LTS Node and NPM versions specified in the package.json file. The recommended Node and NPM versions are LTS versions (i.e. even-numbered releases). Run node --version && npm --version to get the versions of Node and NPM on your system if unsure.

Clone the repo locally and install the required npm dependencies:

$ git clone https://github.com/Zero-1729/volt
cd volt
yarn install

To run the wallet locally on, and build for, Android or IOS you'll need Android Studio and Xcode installed, respectively.

Breez SDK And Greenlight Credentials

Note: If any part of the original .crt or .pem files are cut out, you will get the Breez SDK error Generic: transport error. See documentation here for more info.

Setup Environment file

Create a copy of the env.example

cp env.example .env

This command creates a .env file in the project root volt/. Then fill it with the appropriate info.

Read and Convert the .crt and .pem Files

You can read and convert the contents of your client-key.pem and client.crt files as binary/byte data, in their entirety without taking out any parts (e.g. BEGIN CERTIFICATE / END CERTIFICATE / BEGIN PRIVATE KEY / END PRIVATE KEY) to hex strings and add them to the .env file as GL_CUSTOM_NOBODY_KEY and GL_CUSTOM_NOBODY_CERT, respectively.

To run the app locally, you'll need to add the Breez SDK Greenlight credentials to the .env file:

# Contents of the '.env' file
# ...
GL_CUSTOM_NOBODY_KEY=YOUR_HEX_STRING
GL_CUSTOM_NOBODY_CERT=YOUR_HEX

Development

To run the wallet locally on your system, run the following in the project root (volt/):

This will start the Metro Bundler, which is the tool responsible for bundling the app's JavaScript code and assets into a single file that can be run on the device.

$ yarn run start

Note on Tailwind

Due to the way Tailwind works, you'll need to run the following command to build the Tailwind CSS file:

This builds the Tailwind styles in watch mode. You'll need to run this command in a separate terminal window to keep the Tailwind styles updated before running the app.

$ yarn run dev:tailwind

Running on Android (Virtual) Device

  • Download and run the latest (stable) version of Android Studio.
  • Launch Android Studio, and Open the project's android folder (volt/android).
  • Open the build.gradle file in the current folder (volt/android), it'll take some time for Android Studio to set up.
  • Navigate to AVD Manager under the Tools sections of the menu, and click "Create Virtual Device..." to create a virtual device.
  • Launch the newly created virtual device by clicking the Play in the Actions section of the menu.

After setting up the virtual device, run the following in the project root (volt/) to launch the emulator:

The command builds the app and installs it on the virtual device or a connected Android device (if detected). Once launched, the app would take time loading the dependencies.

$ yarn run android

Running on IOS

To run the app using XCode's IOS emulator, you'll need to install the CocoaPod dependencies:

$ cd ios
$ yarn pod install

After installing the dependencies, to launch the app on the IOS emulator you'll need to navigate to the project root (volt) and run:

Note: If you have issues running the command above, you can also open Xcode and open the ios/volt.xcworkspace file and build/run the app from there.

yarn run ios

Responsible Disclosure

Email [email protected] with the title "volt: bug/vulnerability report" to disclose any critical bugs or vulnerabilities.


MIT © Zero-1729

volt's People

Contributors

zero-1729 avatar codeswot avatar jeezman avatar dependabot[bot] avatar

Stargazers

Hussain Abdullahi Faruk avatar Yan Fernandes avatar Cícero Raupp Rolim avatar  avatar  avatar  avatar Dedan Kibere avatar  avatar Sam Samskies avatar 志宇 avatar  avatar Johnny Santos avatar Yaël avatar zv1689 avatar  avatar Shawn Yeager avatar Byron Hambly avatar A.Z. avatar Stamati avatar  avatar  avatar OKIN avatar Skander Helali avatar Nenba Jonathan avatar Abdullahi Yunus avatar Thomas Torggler avatar sudo whoami avatar LeitaoMD avatar Oleg Koretsky avatar Leonardo L. avatar Jaime Toca avatar dunxen avatar Abubakar Sadiq Ismail avatar Felix avatar  avatar Rukundo avatar  avatar Seth For Privacy avatar Tao Xu avatar Marks avatar Miguel Morais avatar Harm Aarts avatar Abbas Ogaji avatar Philipp Lloyd avatar sparky avatar Kirill Zhukov avatar jrakibi avatar  avatar 22388o⚡️  avatar benny b avatar Yemi Harry avatar Jesus Christ avatar  avatar  avatar Pablo Fernandez avatar Erik avatar  avatar

Watchers

 avatar Mayemene Fomene Jean Vladimir avatar  avatar

volt's Issues

Mnemonic Conflicts with 'OK, I have backed up' Button

Describe the problem

The final row of the mnemonic (words 5 and 11) are partially hidden under the 'OK, I have backed up' button

Describe the solution you'd like

The 'OK, I have backed up' button could probably be moved down a bit, or the mnemonic words could be moved up

Additional context

Volt v0.4.3-beta.2
Pixel 6
GrapheneOS v2024053100

Unable to Get Past 'Create new wallet' Screen

Describe the solution you'd like

After entering wallet name and hitting 'continue', the wallet says 'Generating wallet material', vibrates after a few seconds, and then nothing happens. I'm assuming I should be taken to another screen after this.

Additional context

Pixel 6
GrapheneOS v2024053100

Incorrect Taproot Address Prefix in 'Create new wallet' Screen

Describe the solution you'd like

On the 'Create new wallet' screen, the description of Taproot addresses says the following:

(address starts with 'bc1...')

I believe it's missing the full prefix of 'bc1p'

Additional context

This is without 'Enable advanced mode' checked

Unable to add wallet

Unable to add wallet during development setup

screenshot

Screenshot 2024-06-07 at 16 51 53

Error message on terminal

 LOG  [Error Catch]  [Error: Error: Could not parse descriptor tr(xprv9zC8agyvKuyfJ6iGFaaLNpTtjjQambiGfSnRzF2vX59V1veWQB8ZxzHRBMoEpbdjZgFjjJQUMwSXzQ7XZmr5v8n4nin5hPRRmgb4fXHyYJe/86'/0'/0'/0/*)]

 ERROR  [AsyncStorage] (Add wallet) Error loading data: Error: Could not parse descriptor

I think the error is as a result of the default account being set to unified ie Lightning (BIP86)

Bug report - Overlapping Menus

Testing out Volt on the following Android Device:

- Device: Huawei P20
- Model: EML-L29
- EMUI version: 10.0.0
- Android version: 10
- Processor: HiSilicon Kirin 970

Initial installation went well without any problems. Used the provided volt-0.4.4.apk to install it
IMG_2471

This was the 1st overlap that I saw when clicking on the three dots (menu) in the top right of the screen & then clicking on the Backup option. The 4 circles run over the number 2. This happens in other screens asking for the pin as well but i don't have pics of them as well.
IMG_2472

When viewing your Mnemonic the 1st & 6th words are covered by the Mnemonic | Descriptor "switch box" which makes them illegible.
IMG_2473

Same happens with the Descriptor option as the "switch box" runs over the top of the QR code.
IMG_2474

Additional Notes

- When viewing your `xpub` there is no problem with the way it is displayed & nothing is blocking the QR code.
- When viewing your Backup via the actual `Backup` button, there is no problem with being able to view the entire Mnemonic Phrase
- I know it's probably on the roadmap already but can we please add as many African fiat currencies as possible to help erase the need for mental conversations into local fiat currencies? Will also help people know the app was made with them in mind.

Thank you for all the hard work you guys have put into this. Will be testing it our more & more over the rest of this month as my spending wallet.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.