Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add the wallet GUI #8

Open
wants to merge 74 commits into
base: master
Choose a base branch
from
Open

Add the wallet GUI #8

wants to merge 74 commits into from

Conversation

Senyoret1
Copy link

This PR adds the desktop wallet GUI. To the moment in which this PR was created a lot of modifications were added to the desktop wallet to add multicoin compatibility to it. To keep track of the changes made until this PR was created, please check the commits and the description of https://github.com/SkycoinProject/skycoin/pull/259 .

As the GUI is now outside the main Skycoin repo, for testing it you must run a Skycoin node and then run the GUI using the Angular test server.

@Senyoret1
Copy link
Author

The lastest commit includes the following changes:

  • The Travis config file was updated to run some basic tests for the wallet.
  • The test for the Go code were temporarily removed from the Travis config file, because those test were failing and no changes to the Go code are being made at this moment.

@Senyoret1
Copy link
Author

The lasteast commit includes the following changes:

  • The initial files for making it possible to select BTC in the frontend were added. Most of the functions are still not functional, as the files only contain what is needed for the UI to work at the most basic level (showing the coin in the coin selection window).
  • The code is also prepared for loading BTC wallets at the most basic level, but there is still no use for that, as there is no code to properly work with them.
  • Now the code is able to create operators depending on what is needed for the currently selected coin, instead fo always creating the ones for Fiber coins.
  • Some small improvements for FiberWalletsAndAddressesOperator

@Senyoret1
Copy link
Author

The lastest commit includes the following changes:

  • A new service for using the btcd RPC API was created.
  • New services for obtaining the basic info about the BTC blockchain were created. With the new services now the web browser does not directly ask for the authentication params required by the btcd node.
  • The dev server proxy was modified to be able to connect with the btcd node API without problems with the CORS policy.
  • Various intervals for automatically updating data now depend on the node used for the coin.
  • Now the basic blockchain info is obtained by calling only one function, instead of 2.

@Senyoret1
Copy link
Author

The lastest commit includes the following changes:

  • The wallet now gets and process the unspent outputs and balance data directly from btcd.
  • The code can now load Bitcoin software wallets for internal testing.
  • Additional improvements for various parts of the code related to the outputs and balance.

@Senyoret1
Copy link
Author

The lastest commit includes the following changes:

  • The code used for being able to use operators inside other operators was improved, to avoid a bug which pevented the app to work well after changing the coin.
  • Now BtcBalanceAndOutputsOperator corretly reports if there are pending transactions.
  • A new class was created for configuring all coins with the CoinTypes.BTC type, for better code maintanibility. It is now being used in several parts of the app.
  • The unspent outputs page now shows the confirmations of the BTC unspent outputs, intead of the coin hours coulumn.

@Senyoret1
Copy link
Author

The lastest commit includes the following changes:

  • Now the app is able to get, process and show the tx history of btc wallets.
  • Now the code uses the tx confirmations for calculating the state of the transaction of all coin types.
  • Fees paid in coins are correctly calculated and shown.
  • Some other structural changes for coins that work differently than Skycoin.
  • Small code improvements.

@Senyoret1
Copy link
Author

The last commits include the following changes:

  • Now the app is able to show the pending transacrions of the BTC wallets. The full list of pending transactions in the node is not shown.
  • Coin hours were made optional across the whole app, for coins which don't use them, and the UI reacts correctly in that case. For now, the change was not made in the form for sending coins.
  • Some other small improvements.

@Senyoret1
Copy link
Author

The last commits include the following changes:

  • Several files were moved and/or renamed, to improve the code organization.
  • The changes for making the coin hours optional were made in the code used for sending coins.
  • The app can now create unsigned BTC transactions. However, at this point the transactions always have 0 fee.

@Senyoret1
Copy link
Author

The last commits include the following changes:

  • Now the app can check what the recommended fee for the transactions is.
  • The form for sending coins now shows fields for entering the fee, if appropiate for the currently selected coin.
  • Before creating a transaction, the app checks is the fee is adecuate and shows wanings if appropiate.
  • The fee is sent to the operators in charge of creating the transactions, but is still not being used. More calculations about the transaction size must be done before being able to use it.

@Senyoret1
Copy link
Author

The last commits include the following changes:

@Senyoret1
Copy link
Author

The last commit includes the following changes:

  • The initial code for the ETH integration with the wallet was added.
  • The assets for the already added coins were updated to make it easier to identify the coin in the UI, but are still temporal. Also, temporal assets for Ethereum were added.

Notes:

  • A custom service for accessing the Ethereum rpc API was created, instead of using web3.js (the official JavaScript client for the API). It was done that way to maintain consistency in the wallet code and because web3.js does not offer significative advantages anyway. The service is almost the same as the one used for BTC, but the BTC service was not reused because some changes may be needed in the future.

  • The current Ethereum integration is just the minimum needed for getting some basic information from the node and making the UI run. It is not usable right now.

@Senyoret1
Copy link
Author

The last commits include the following changes:

  • A BalanceAndOutputsOperator implementation for ETH was added and the wallet now shows the balances of the ETH wallets. No functionality related to outputs was added because Ethereum does not use them.
  • EthBlockchainOperator now returns the blockchain state. However, information about the circulating supply is not returned because it is not possible to obtain or calculate it just by using the node API.
  • Small fix in EthNodeOperator.

NOTE: for being able to get the balance the Geth instance must work in archive mode.

@Senyoret1
Copy link
Author

The last commits include the following changes:

  • Angular was updated to v9. Some changes for making the update work well were also made.
  • Electron was updated to v9.
  • The coin configuiration files were reorganized.
  • A problem with the validation procedure of the password modal window was solved.
  • A problem which made the transaction history to be loaded twice in certain circunstances was fixed.

@Senyoret1
Copy link
Author

The last commit includes the following changes:

  • The code for displaying and comparing the wallet addresses was changed and a lot of affected code was modiffied. This is because the compatibility with the new coins implies that some addresses may be represented in different ways (mostly due to the way in which uppercase and lowercase letters can be used). Examples of this are ETH and Bech32 addresses. This made the direct comparation of address strings that the code was using the potential source of a lot of bugs. Also, just formatting the strings before comparation was inviable due to the complexity of the code and the several ways in which the comparations were made. Because of this, the commit changes the code to use a very different approach for comparing addresses, which provides various ways to make the comparations and discourages the previous approach.

  • The AOT compiler was disable for the test server, as it was enabled by default in Angular 9 and in makes the test server to be much slower for testing changes.

@Senyoret1
Copy link
Author

The last commit includes the following changes:

  • The spacing of the tables was improved.
  • Some text were improved and the Spanish translation file was updated.
  • noopener was added to the external links, to increase the security.
  • Now the help icons always shows the correct mouse cursor.

@Senyoret1
Copy link
Author

The last commit includes the following changes:

  • The assisted mode for entering seeds is now managed by a centraliced component, which improves the code maintainability and makes it easier to use the option in other parts of the app.
  • The form for resetting the password now allows to use the assisted method for entering the seed.
  • The button for entering the seed manually instead of using the assisted mode was changed for a link, to try to make the option more evident, as some users were having problems to find it.
  • A problem which made invisible the carret of the modal window for entering a seed word was solved.
  • A problem which made an incorrect wallet type to be selected after navigating between creating a new wallet and loading an old one in the wizard was solved.
  • Some other small changes and improvements.

@Senyoret1
Copy link
Author

The last commit includes the following changes:

  • The Angular version was updated from v9 to v10.
  • The way in which various operations, like retrying to connect to the backend, are made with RxJS were changed, because several parts of the lib were deprecated in the latest version.

@Senyoret1
Copy link
Author

The last commit includes the following changes:

  • A problem which prevented the UI to work while having hw wallets in the wallet list was solved.
  • Repeated code related to WalletUtilsService was removed.

@Senyoret1
Copy link
Author

The last commits include the following changes:

  • Now it is possible to edit how many confirmations the app requires for considering a transaction final.
  • The blockchain page now shows how many confirmations are needed for a transaction of the currently selected coin are needed for it to be considered final. If the recommended value has been modified, a warning is shown.
  • The transaction history now shows how many hours were burned.

@Senyoret1
Copy link
Author

The last commits include the following changes:

@Senyoret1
Copy link
Author

The last commit includes adaptations of improvements made to the desktop wallet:

@Senyoret1
Copy link
Author

The last commit includes the following changes:

@Senyoret1
Copy link
Author

Senyoret1 commented Nov 1, 2020

The last commits include the following changes:

  • Additional information about the code was added.
  • Electron was updated from v9 to v10, which includes an updated version of Chromium.
  • Previously, when trying to load a wallet that is already on the wallet list, the error message shown was 500 Internal Server Error - fingerprint conflict for "deterministic" wallet.. This commit changes it to A wallet for the specified seed already exists..

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant