Git Product home page Git Product logo

nault / nault Goto Github PK

View Code? Open in Web Editor NEW
264.0 16.0 83.0 109.41 MB

⚡ The most advanced Nano wallet with focus on security, speed and robustness

Home Page: https://nault.cc

License: MIT License

TypeScript 25.76% JavaScript 19.15% CSS 34.97% HTML 16.50% Dockerfile 0.02% Less 3.57% Shell 0.03%
nanocurrency nano cryptocurrency wallet cryptocurrency-wallet ledger nano-wallet desktop-wallet nano-rpc

nault's Introduction

Nault

GitHub release (latest by date) GitHub All Releases Discord

Nault is a community-driven fork of the popular nano wallet NanoVault 💙

It's a fully client-side signing wallet for sending and receiving nano either directly in your browser at nault.cc or with the desktop app.

Seamless integration with any nano compatible RPC backend/websocket and the aim to be more frequently maintained are some of the main features. Those together will greatly increase the stability, performance and uptime.

Nault Screenshot


How To Use

Nault comes in different flavors to suit your needs.

Desktop App

Available for Windows/Mac/Linux – just head over to the latest release and download the version for your OS. Arch Linux users may install it from the (unofficial) AUR.

If you want to verify the binary checksum there are plenty of apps to do this. One way is using a powershell or bash terminal:

  • Powershell: Get-FileHash -Path '.\Nault-Setup-x.x.x-Windows.exe' -Algorithm SHA256
  • Bash: openssl sha256 Nault-x.x.x-Linux.AppImage

Then compare the output hash with the one listed in the corresponding checksums file that you download.

Web App

You can also use Nault from any device on the web at nault.cc.

Both the desktop (recommended) and web version supports the Ledger Nano hardware wallet. For help using it, please refer to this guide.

The web version can additionally be pulled from the dockerhub repo using: docker pull nault/nault:latest

A full security guide and other useful articles can be found in the Nault Docs.

Mobile App

There is no native mobile app but the web wallet contains a Progressive Web App (PWA). That allows you to run it in offline mode for remote-signing.

If you visit nault.cc in your phone you will be given the option to install it.

  • Android: Click on "Install Nault for Android" in the menu
  • iOS (Safari only): 1 - Tap the share button. 2 - Select "+ Add to home screen". 3 - Open Nault from the home screen

How To Help

Thanks for your interest in contributing! There are many ways to contribute to this project. Get started here at CONTRIBUTING.md.

If you want to know how to setup the development environment head over to DEVELOPMENT.md.

Support

If you are looking for more interactive and quick support compared to creating a new Github issue, you will then find most of the developers in the Nault channel over at the TNC discord server.

Acknowledgements

Special thanks to the following!

Donations

If you have found Nault useful and are feeling generous, you can donate at nano_3niceeeyiaa86k58zhaeygxfkuzgffjtwju9ep33z9c8qekmr3iuc95jbqc8

Thanks a lot!

nault's People

Contributors

aleksre avatar andrew-m-higgs avatar angular-cli avatar bitdesert avatar bkilshaw avatar cronoh avatar dependabot[bot] avatar fu5ha avatar geommr avatar igorcafe avatar jamescoxon avatar joohansson avatar keerifox avatar marioortizmanero avatar optout21 avatar otonashixav avatar pawapps avatar plasmapower avatar raksooo avatar renesq avatar whalemachine avatar zillazillazilla avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

nault's Issues

Provide hashes for desktop wallet / Sign desktop wallet

i was going to try the desktop wallet but didnt like to download a file to my PC without verifying it.
this wallet is gaining more usage now and a lot of nano users will be using as time goes by
so its very important to have a section in the repo assets that have all file hashes of desktop wallet.
then add a small tutorial on how to verify files in all OS's
Its even better to have the hashes text signed by a known individual so adding more legitimacy

https://www.reddit.com/r/nanocurrency/comments/hw0bzl/can_we_have_nault_desktop_wallet_hashsigned/

  • Add hashes to release changelog
  • Sign binaries

monKey integration

MonKey is the Banano specification of #25 Identicons.

A large version of the user's monKey should appear when looking at account details data.

Small monKeys should appear next to any address in a list of transactions for quick visual identification.

https://monkey.banano.cc/

NEW Monkey API endpoint documentation here

Visualize Nault Component/app structure

Angular can produce source maps, which then can be viewed with

Prerequisites:

Edit in angular.json

"sourceMap": true, "namedChunks": true,

and

npm install source-map-explorer

npm

Executable permissions in OS X zip release

Issue

User downloads OS X zip release in versions >= 1.4.0 and is unable to execute app after unzipping.

Appears to have been introduced in v1.4.0. No issue in v1.3.0.

No issue in the dmg asset, only zip.

Workaround

It looks like the permissions to the executable file are wrong.

imac-jason:MacOS jason$ ll ~/Downloads/Nault.app/Contents/MacOS/Nault
-rw-rw-r--@ 1 jason staff 185252 Jul 4 14:00 /Users/jason/Downloads/Nault.app/Contents/MacOS/Nault

Correcting the permissions allows the app to execute properly:

imac-jason:MacOS jason$ chmod 755 /Users/jason/Downloads/Nault.app/Contents/MacOS/Nault

Fix

Probably an issue with the build actions, but I am not familiar enough to troubleshoot

Improved workflow for switching out a bad rep

Now you get a warning and has to click on that, then select the right account and a rep from a list. It's many steps for the normal user. I'm thinking if it can be done more semi-automatic with the wallet taking the action and user just approve. I think that will help with weight distribution.

For example a dialog popping up:

Your account’s representative is not optimal due to high weight. Press OK if you allow Nault to change it for you to rep XYZ. Press MANUAL if you want to select the rep yourself. Or CANCEL if you want to keep a bad rep.

Banano Denominations

Nano has 3 currency denominations.
We only need Banano (BAN)
Banoshi not required in the foreseeable future.
Image shows Display Denomination Field from Settings, which can be removed as BAN will be set fixed.

image

related component : configure-app

Social Media icons and links

(PENDING agreement for location and handling of Banano specific components)

Currently the Social Media icons are located in the left hand Navigation sidebar.

Anmerkung 2020-07-21 134634

  • Icons may have to change for new color scheme

  • Decision required where to place them when a top navigation is implemented XXX Do we want them inside the top navigation?

Also, links need to be updated: (most likely in environment.banano.ts)

  • Github

  • Twitter

  • Discord

Automatic Backend switching

Currently most backends are rate limited.
For UX and decentralization purposes it's better to rotate the backend at first start, when a backend goes offline or you run out of tokens.

Change UI colors

Changing UI colors, maybe in tune with the logo, would make it look better. (not saying it's not good now)

Overhaul of the Ledger integration

The wallet currently uses transport-node-hid for electron and transport-u2f for web.

Looking at the table over at ledger-js it seems like a good choice but with an annoying window popping up in windows. Maybe it can be improved, maybe not. Maybe web-usb can be utilized for better stability, but currently only supported in chrome.

Anyway, if any developer want to give it a try to increase stability, feel free! I will probably not touch this.

Incorrect transaction date

Transaction dates are often not displayed correctly at Nault startup. [Reload] or [Force Reload] will sometimes correct the date column but will also inconsistently revert dates back to the wrong ones:

Wrong timestamp
Comparison of transaction dates, incorrect data encircled in red on the left and the correct dates are visible on the right.

Only transactions on or before 2020-05-10 (May 10th) seem to be affected, these transactions are all incorrectly time-stamped 2020-05-10. I have tested 6 different accounts and 4 different wallets (including one Nano Ledger X) on 3 different systems, all displaying the same behavior.

(Nano Desktop v1.5.2 on Windows 10 Home v2004, Windows 10 Pro v1909 and Linux Mint v20 (Cinnamon) )

Define translation terms

  • Identify terms that require translation
  • Create list of terms and i18n variables to be used (=contexts in POEditor)
  • Define contexts
  • Define references
  • Enter terms,contexts, references into POEditor
  • Pull en (default) JSON (format TBD. most likely key-value term-message)
  • Create folders with placeholder JSON

USB device popup appear on win10 web version

This is a known bug with Ledger+windows but it should not appear when going to the "Configure new wallet" screen. Only when connecting the ledger. So while the popup issue itself can't be solved right now, it certainly can be improved.

unknown

Receive incoming transactions by amount: largest first

As some API endpoints have rate limiting I think it makes more sense to receive pending sorted by amount instead of timestamp. That would solve the issue for accounts with hundreds of incoming that would like to save the small amounts for later. Or if the PoW takes a long time (it will be 8x slower later on).

Darker theme colors with yellow highlights

Today, Nault is based on the Nano color scheme and not Banano.
Banano sites use a darker color scheme with yellow highlights.

Official colors

Color #hex color code
Primary Yellow #FBDD11
Primary Green #4CBF4B
Secondary Grey #2A2A2E
Secondary Dark Grey #212124
  • Edit colors in the banano less theme src/less/banano/nault-theme.less

  • and components in src/less/banano/componenets/*

.less component function
_import.less defines which less components are imported
variables.less Global variables and breakpoints
button.less buttons
form.less forms
list.less lists
nav.less navigation
table.less tables
tooltip.less tooltips
  • additional .less components as required
  • bootstrap or other .css as required

live editor (not entirely tested yet

Internationalization support

I think it would be great to have support for multiple languages. It lowers the barrier to join the Nano world for non fluent english speakers.

Angular ships with i18n support. More information can be found here: https://angular.io/guide/i18n

If noone started on this already I think I will probably sooner or later start working on this.

Identicons

A few services have added these Natricon cartoon characters that have divided the Nano community. Please don't add them, but add nice looking identicons instead.

Node information

A [hidden?] page that grabs node information from the RPC could be used for some quick troubleshooting, or general information for those using a custom backend node. Maybe some of them are useful in other pages.

Some useful stats, as usually:

  • Block and uncemented count from RPC block_count
  • Which network: main(live) / beta from RPC version
  • Telemetry things from RPC telemetry using optionals address and port to target only the local node information. Unfortunately it would be necesssary to assume (or config option) the local peering port (7075 main net, 54000 beta). Will take a look into potesntially making this simpler for V22.

Add Private Key as import option

We have some wallets that work with private keys, like Exodus, I think it's important to have this option, both on the web wallet and on the desktop. NanoVault implemented it in its web version.

Nault -> BananoNault wording

All instances of the 'Nault' wording should be replaced with 'BananoNault'

Probably purely done through config.
To be considered in translations as well though.

Define i18n scope (which languages)

Total number of Languages: 20 (Locales covered: 22)

Phase 1 - 8 locales

de - German
en - English
es - Spanish
es_419 - Spanish (Latin America and Caribbean)*
fr - French
it - Italian
pt - Portuguese
pt_BR -Portuguese (Brazil)*

Phase 2 - 8 locales

ar - Arabic
da - Danish
fa - Persian (Farsi)
id - Bahasa Indonesia
nl - Dutch
ru - Russian
tr - Turkish
no - Norwegian

Phase 3 - 6 locales

zh_CN - Chinese (China)
el - Greek
hi - Hindi
ja - Japanese
sv - Swedish
vi - Vietnamese

*no separate translations

Recruit translators

Total number of Languages: 20 (Locales covered: 22)

Phase 1 - 8 locales

  • de - German
  • en - English
  • es - Spanish
  • es_419 - Spanish (Latin America and Caribbean)*
  • fr - French
  • it - Italian
  • pt - Portuguese
  • pt_BR -Portuguese (Brazil)*

Phase 2 - 8 locales

  • ar - Arabic
  • da - Danish
  • fa - Persian (Farsi)
  • id - Bahasa Indonesia
  • nl - Dutch
  • ru - Russian
  • tr - Turkish
  • no - Norwegian

Phase 3 - 5 locales

  • zh_CN - Chinese (China)
  • el - Greek
  • hi - Hindi
  • ja - Japanese
  • sv - Swedish
  • vi - Vietnamese

*no separate translations

Banano APIs and Node communication

Enable wallet to receive and send actual Banano data.

Different backends choosable in configure-app

Maintained in environment.banano.ts

backends: [
    {
      name: 'AppDitto',
      value: 'appditto',
      api: 'https://kaliumapi.appditto.com/api',
      ws: null,
      auth: null,
      shouldRandom: true,
    },
    {
      name: 'BananoVault',
      value: 'bananovault',
      api: 'https://vault.banano.cc/api/node-api',
      ws: null,
      auth: null,
      shouldRandom: true,
    },
  ],
  • Add missing data for existing ones in environment.banano.ts

  • Add additional ones in environment.banano.ts

Import wallet as file button does no longer respond

Both the buttons "Import from file" in "Configure new wallet" and "import address book" in "manage wallet" has stopped working. No response. I tried to fix it but no luck. It seems to refuse to open the file dialog. Both web and desktop.

Reference: https://github.com/BitDesert/Nault/blob/55856c467140095629e8f7402e267b8c33c56ed4/src/app/components/configure-wallet/configure-wallet.component.html#L121

Edit: Also, all radiobuttons and checkboxes stopped working but the issue has been identified and will be pushed soon.
e417330#diff-465e9f13ce23ec4a1e366935273fdbb6R112

Changed to
(click)="closeNav()"

and

closeNav() {
  this.navExpanded = false;
}

Banano Fonts

https://banano.cc/presskit/ defines 2 fonts:

We have 2 fonts, one primary, one secondary.

Neue Hans Kendrick. We use the primary font for almost everything, like titles, paragraphs etc.
Overpass Mono we use the secondary font for Banano addresses, or any text block that requires same width lines.

  • Acquire Neue Hans Kendrick
  • Acquire Overpass Mono to

- [x] Provide means of linking Overpass Mono

Activities required to apply Banano fonts.
Add activities and link related Issues as needed.

Provide Fonts and upload to repo / link from font cdn.

  • Upload Neue Hans Kendrick Now Alt to repo

  • Upload and add Overpass Mono to repo

  • Identify where code needs to be adapted to apply Banano font (theme/css?)

  • Amend code to apply Banano fonts

  • Create PR

Track and collect translations

Check for language completion status, follow up with translators to get ETA, review, and check mark when 100% translation for language done

Use comments in this thread to document follow up status.

For each completed language, #89 can be performed

Total number of Languages: 20 (Locales covered: 22)

Phase 1 - 8 locales

  • de - German
  • en - English
  • es - Spanish
  • es_419 - Spanish (Latin America and Caribbean)*
  • fr - French
  • it - Italian
  • pt - Portuguese
  • pt_BR -Portuguese (Brazil)*

Phase 2 - 8 locales

  • ar - Arabic
  • da - Danish
  • fa - Persian (Farsi)
  • id - Bahasa Indonesia
  • nl - Dutch
  • ru - Russian
  • tr - Turkish
  • no - Norwegian

Phase 3 - 5 locales

  • zh_CN - Chinese (China)
  • el - Greek
  • hi - Hindi
  • ja - Japanese
  • sv - Swedish
  • vi - Vietnamese

*no separate translations

Error: Cannot find module './desktop-app/src/lib/ledger'

Installed from source as described in documentation:

...
npm install
npm run wallet:build-desktop
npm run desktop:local

on fedora 32 and tried to run but got:

$ desktop-app/build/Nault-1.5.2.AppImage   
Starting ledger@!
A JavaScript error occurred in the main process
Uncaught Exception:
Error: Cannot find module './desktop-app/src/lib/ledger'
Require stack:
- /tmp/.mount_Nault-vFwEN9/resources/app.asar/main.js
- 
    at Module._resolveFilename (internal/modules/cjs/loader.js:797:17)
    at Function.o._resolveFilename (electron/js2c/browser_init.js:281:679)
    at Module._load (internal/modules/cjs/loader.js:690:27)
    at Function.Module._load (electron/js2c/asar.js:769:28)
    at Module.require (internal/modules/cjs/loader.js:852:19)
    at require (internal/modules/cjs/helpers.js:74:18)
    at Object.<anonymous> (/tmp/.mount_Nault-vFwEN9/resources/app.asar/main.js:12:16)
    at Module._compile (internal/modules/cjs/loader.js:967:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1004:10)
    at Module.load (internal/modules/cjs/loader.js:815:32)

and nothing else seems to happen. Is something wrong or should I just wait longer?

Changing rep on a Ledger doesn't work

In certain cases, the rep won't change on a connected Ledger. There is a successful message but nothing changes. This needs to be investigated. Reported for the desktop wallet 1.5.0 (windows).

Create language files per locale

How to TDB
Export from POEditor in Key-value format, clean up, only message. (may change with lang file format definition)

  • de - German
  • en - English
  • es - Spanish
  • es_419 - Spanish (Latin America and Caribbean)*
  • fr - French
  • it - Italian
  • ar - Arabic
  • da - Danish
  • fa - Persian (Farsi)
  • id - Bahasa Indonesia
  • nl - Dutch
  • no - Norwegian
  • pt - Portuguese
  • pt_BR -Portuguese (Brazil)*
  • ru - Russian
  • tr - Turkish
  • hi - Hindi
  • ja - Japanese
  • vi - Vietnamese
  • zh_CN - Chinese (China)

Request for multiple wallet support

Nault allows for creating multiple accounts within a wallet. Multiple wallets however are not yet supported. Only one wallet can be active at a time.

Furthermore when importing a wallet, the following message is displayed:

Importing existing wallet

Of course, the existing wallet and accounts are safe (assuming one has saved the corresponding seed) but as only one wallet can be active at a time the current wallet is overwritten as mentioned by the next message:

Overwrite your existing wallet message

This may seem to contradict the sentence "none of your existing wallets or accounts are affected" from the previous message.

(Nault v1.3.0, desktop Windows)

Update Angular Version

The used Angular version is 5 and is not supported anymore.
It would be better to update it to a more recent version.
The process could break features!

Setup POEditor

  • Create project
  • Select languages
  • Define terms - linked to #85
  • Assign translators

Implement a wallet sweeper

This is related to #29 but a correctly built sweeper can not only import any funds from any seed to deposit into the Nault wallet, but also if using your current Nault wallet as source seed and an external account it could also empty the whole wallet with one single click. Double functionality which I don't think any other wallet has.

I want to build this if no one tells me not to. Will probably allow any custom range of index to check (with limitation) similar to this tool: https://tools.nanos.cc/?tool=sweep

Banano representatives

The List of Representatives (Settings... Representatives) must show Banano reps.
Suggesting to have at least 5 "unofficial" reps (community-run nodes) from https://creeper.banano.cc/network to foster further distribution of voting weight.

Default representatives list is in /src/app/services/representative.service.ts
now maintained in src/environments/environment.banano.ts

Favicons

https://realfavicongenerator.net/ provides a service which creates a bundle of favicons to support for as many platforms/browsers as possible.

  • Agree on Folder location for Banano favicons #98

  • Upload favicon package to /src/themes/banano/assets/favicon

Nano -> Banano wording

All instances of the 'Nano' wording should be replaced with 'Banano'

(PENDING agreement for location and handling of Banano specific components)

Wording change tracking for modules: (tick if you have completed one)
Ideally done in the same step as the first 2 activities in #85

  • account-details
  • accounts
  • address-book
  • change-rep-widget
  • configure-app
  • configure-wallet
  • helpers
  • import-address-book
  • import-wallet
  • manage-representatives
  • manage-wallet
  • notifications
  • qr-scan
  • receive
  • representatives
  • send
  • sweeper
  • transaction-details
  • wallet-widget

Any donation addresses should be changed (TBD)

Deep link button or not?

I added this button for deep link support (on the receive screen). That usually works to open an account in another wallet but I don't think it's working for Nault since Nault wants to open itself since it's a wallet. Does it make any sense at all to have it? Or should I remove it again? @BitDesert

image

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.