REF: readme

This commit is contained in:
Gabriel Bazán 2018-03-02 14:09:34 -03:00
parent 3c478bfef7
commit cd080a437b
3 changed files with 92 additions and 62 deletions

View File

@ -23,7 +23,6 @@ For a list of frequently asked questions please visit the [Copay FAQ](https://gi
- Support for over 150 currency pricing options and unit denomination in BTC or bits
- Mnemonic (BIP39) support for wallet backups
- Paper wallet sweep support (BIP38)
- Hardware wallet support (Trezor and Ledger) (only in Chrome App version)
- Email notifications for payments and transfers
- Push notifications (only available for ios and android versions)
- Customizable wallet naming and background colors
@ -45,20 +44,18 @@ Ensure you have [Node](https://nodejs.org/) installed, then install and start Co
```sh
npm run apply:copay
npm start
npm run start
```
Visit [`localhost:8100`](http://localhost:8100/) to view the app.
A watch task is also available to rebuild components of the app as changes are made. This task can be run in a separate process while the server started by `npm start` is running to quickly test changes.
```
npm run watch
```
## Unit Tests (Karma and Jasmine)
To run the tests, run npm run test.
To run the tests, run:
```
npm run test
```
## Testing on Real Devices
@ -72,6 +69,7 @@ When your developement enviroment is ready, run the `start:android` npm package
```sh
npm run apply:copay
npm run prepare:copay
npm run start:android
```
@ -83,10 +81,11 @@ When your developement enviroment is ready, run the `start:ios` npm package scri
```sh
npm run apply:copay
npm run prepare:copay
npm run start:ios
```
### Desktop (Linux, macOS, and Windows)
<!-- ### Desktop (Linux, macOS, and Windows)
The desktop version of Copay currently uses NW.js, an app runtime based on Chromium. To get started, first install NW.js on your system from [the NW.js website](https://nwjs.io/).
@ -95,7 +94,7 @@ When NW.js is installed, run the `start:desktop` npm package script.
```sh
npm run apply:copay
npm run start:desktop
```
``` -->
## Build Copay App Bundles
@ -108,6 +107,7 @@ The `final` commands build the production version of the app, and bundle it with
```sh
npm run clean-all
npm run apply:copay
npm run prepare:copay
npm run final:android
```
@ -116,33 +116,17 @@ npm run final:android
```sh
npm run clean-all
npm run apply:copay
npm run prepare:copay
npm run final:ios
```
### Windows Phone
- Install Visual Studio 2013 (or newer)
- Run `make wp8-prod`
### Desktop (Linux, macOS, and Windows)
<!-- ### Desktop (Linux, macOS, and Windows)
```sh
npm run clean-all
npm run apply:copay
npm run final:desktop
```
### Google Chrome App
> cd chrome-app/
```sh
npm run apply:copay
grunt
make
```
On success, the Chrome extension will be located at: `browser-extensions/chrome/copay-chrome-extension`. To install it go to `chrome://extensions/` in your browser and ensure you have the 'developer mode' option enabled in the settings. Then click on "Load unpacked chrome extension" and choose the directory mentioned above.
``` -->
## Configuration
@ -176,12 +160,12 @@ Information about backup and recovery procedures is available at: https://github
Previous versions of Copay used files as backups. See the following section.
It is possible to recover funds from a Copay Wallet without using Copay or the Wallet Service, check the [Copay Recovery Tool](https://github.com/bitpay/copay-recovery).
It is possible to recover funds from a Copay Wallet without using Copay or the Wallet Service, check the [Copay Recovery Tool](https://github.com/bitpay/copay-recovery/tree/master).
## Wallet Export Format
Copay encrypts the backup with the [Stanford JS Crypto Library](http://bitwiseshiftleft.github.io/sjcl/). To extract the private key of your wallet you can use https://bitwiseshiftleft.github.io/sjcl/demo/, copy the backup to 'ciphertext' and enter your password. The resulting JSON will have a key named: `xPrivKey`, that is the extended private key of your wallet. That information is enough to sign any transaction from your wallet, so be careful when handling it!
Copay encrypts the backup with the [Stanford JS Crypto Library](http://bitwiseshiftleft.github.io/sjcl/). To extract the private key of your wallet you can go to settings, choose your wallet, click in "more options", then "wallet information", scroll to the bottom and click in "Extended Private Key". That information is enough to sign any transaction from your wallet, so be careful when handling it!
The backup also contains the key `publicKeyRing` that holds the extended public keys of the Copayers.
Depending on the key `derivationStrategy`, addresses are derived using
@ -205,34 +189,6 @@ Since version 1.5, Copay uses the root `m/48'` for hardware multisignature walle
Copay depends on [Bitcore Wallet Service](https://github.com/bitpay/bitcore-wallet-service) (BWS) for blockchain information, networking and Copayer synchronization. A BWS instance can be setup and operational within minutes or you can use a public instance like `https://bws.bitpay.com`. Switching between BWS instances is very simple and can be done with a click from within Copay. BWS also allows Copay to interoperate with other wallets like [Bitcore Wallet CLI] (https://github.com/bitpay/bitcore-wallet).
## Hardware Wallet Support
Copay supports Ledger and Trezor hardware wallets. Hardware wallet support is only available through the Chrome App. Ledger support is only available on multisig wallets.
To use Ledger, you need to have the Ledger Chrome App installed, available at:
https://chrome.google.com/webstore/detail/ledger-wallet/kkdpmhnladdopljabkgpacgpliggeeaf
To use Trezor, you need to have the Trezor Chrome Extension installed, available at:
https://chrome.google.com/webstore/detail/trezor-chrome-extension/jcjjhjgimijdkoamemaghajlhegmoclj
To create or join a wallet using Ledger or Trezor go to:
Add Wallet -> Create or Join -> Advanced options -> Wallet Seed -> select Trezor or Ledger
Both devices support multiple accounts, so you can use them for multiple wallets. Select the account and then click on create or join.
It is also possible to import a wallet from a device using:
Add Wallet -> Import -> Hardware wallet
Here it is also necesary to select the account number.
When creating or joining a wallet, Copay will ask for two public keys for the device. One public keys is used for the wallet itself and the other is used as an entropy source to create a private / public key pair for signing requests to the Wallet Service.
Every time you need to sign a transaction, the device will be needed to perform the signature. Follow the on screen instructions after clicking the `send` or `accept` buttons.
Finally, in case you lose the device and you have the 24 word seed for the device, you can recover access to your funds using Copay, see: https://github.com/bitpay/copay/blob/master/backupRecovery.md#hardware-wallets
## Translations
Copay uses standard gettext PO files for translations and [Crowdin](https://crowdin.com/project/copay) as the front-end tool for translators. To join our team of translators, please create an account at [Crowdin](https://crowdin.com) and translate the Copay documentation and application text into your native language.

View File

@ -49,8 +49,8 @@
"postinstall": "sed -i -e \"s/.*require(...\\/...);//g\" node_modules/asn1.js-rfc5280/index.js && npm run e2e:update",
"start": "ionic serve --no-open",
"clean": "rm -rf platforms && rm -rf plugins && rm -f config.xml",
"prepare:copay": "npm run clean && npm run apply:copay && ionic cordova prepare && npm run fix:fcm",
"prepare:bitpay": "npm run clean && npm run apply:bitpay && ionic cordova prepare && npm run fix:fcm",
"prepare:copay": "npm run clean && npm run apply:copay && ionic cordova prepare && npm run fix:fcm && npm i",
"prepare:bitpay": "npm run clean && npm run apply:bitpay && ionic cordova prepare && npm run fix:fcm && npm i",
"clean-all": "git clean -dfx",
"build": "ionic-app-scripts build",
"lint": "ionic-app-scripts lint",

74
backupRecovery.md Normal file
View File

@ -0,0 +1,74 @@
# Copay Backup and Restore Notes
## Description
Copay is a Multisig HD Wallet. Copay app holds the extended private keys for the wallet. The private key never leaves the device, so for accessing a wallet funds it is necesary to have the device or a backup of the wallet.
## Definitions
### Backup Formats:
* Wallet recovery phrase (RP): 12 words mnemonic backup (available from Copay v1.2+). The 12 words are used as wallet seed, following BIP39 specification. The wallet RP may require a passphrase to recreate the wallet (if one was specified at creation time).
* Wallet Backup (WB): Exported data from Copay, containing an AES encrypted JSON with many wallet parameters (like extended private key, wallet name, extended public keys of copayers, etc. See #export-format). This data can be created from Copay v1.2+ (Settings -> Advanced -> Export) and it was the default backup format on previous Copay versions. WB can be a file (standard format for Copay desktop versions) or a text (standard for Copay mobile versions).
### Backup recovery cases
* Case 1: Lost of device holding the wallet
* Case 2: Change to a new Bitcore Wallet Service (BWS)
* Case 3: Lost device + new Bitcore Wallet Service
### Wallet Recovery Scope
* Basic Recovery: Wallet access is restored. It is possible to see wallet balance and past transactions. It is possible to send and receive payments.
* Full Recovery: All the features of Partial Recovery + wallet name, copayer names are recovered, past payment proposal metadata (who signed, and notes) are recovered.
## Wallet Restore Scenarios
### Non-multisig wallets
Case 1: From both RP and WB, full recovery is possible.
- Enter the RP or the WB at 'Import wallet' in a new device.
- Wallet access should be restored.
Case 2: Basic recovery is possible using the device where the wallet is installed, pointing to the new server (Recreate wallet feature).
- Point to the new server (Settings -> Bitcore Wallet Service).
- If the wallet is not registered at the new Wallet service, a 'Recreate' button will appear at wallet's home. Click it to recreate the wallet.
- Wallet should be recreated and access to funds should be restored.
- If the wallet existed, it may be necessary to rescan Wallet's addresses for funds (from Settings -> Advanced -> Scan Addresses for Funds)
Case 3: From both Backup Words and Backup file, basic recovery is possible.
(Using RP)
- Enter the RP at 'Import Wallet'
If the error "This wallet is not registered at the wallet service" appears:
- Go to 'Create Wallet', and enter the RP at 'Advanced Options'. Select a new name for the restored wallet. Total and required number of copayers should be set to 1.
- Wallet should be recreated and access to funds should be restored.
(Using WB)
- Enter the WB at 'Import Wallet'
- Wallet should be recreated and access to funds should be restored.
### Multisig wallets
Case 1: From both RP and WB, full recovery is possible.
- Enter RP or WB at 'Import wallet' in a new device.
- Wallet access should be restored.
Case 2: Basic recovery is possible using the device where the wallet is installed, pointing the the new server (Recreate Wallet feature).
- Point to the new server (Settings -> Advanced -> Wallet Service URL).
- If the wallet is not registered at the new Wallet service, a 'Recreate' button will appear at wallet's home. Click it to recreate the wallet.
- Wallet should be recreated and access to funds should be restored.
- If the wallet existed, it may be necessary to rescan Wallet's addresses for funds (from Settings -> Advanced -> Wallet information -> Scan Addresses for Funds)
Case 3: Basic recovery is possible using:
A) RP of all copayers in the wallet
- Enter one RP at Create (at the Advanced option section). Note that the wallet configuration (M-of-N and network paramenters) needs to match the parameters that where entered when the wallet was first created. Wallet name and copayer nicknames need to be entered also, but there is no need for them to match the original wallet setup.
- Ask other copayers to join the wallet using the given invitation code. All copayers need to enter their RP at Join (at -> Advanced Options -> Wallet Seed).
- Wallet should be recreated and access to funds should be restored.
B) One WB and a quorum of RP of the other members.
- Using the WB, import the wallet.
- Ask other copayers to import the wallet using their RP.
- Wallet should be recreated and funds should be accesable
In this case, Copayers will not be able to decrypt the 'notes' field on the new Spend Proposals, because the shared secret stored at the WB is not longer known by other copayers.