UNPKG

36.1 kBMarkdownView Raw
1# BitGoJS Release Notes
2
3## 11.4.0 (07-21-2020)
4
5### New Features
6* Add support for new ERC20 tokens (FFT, IVO, LEND, UCO, XBGOLD, XEX)
7
8### Other Changes
9* Rename coin `cgld` to `celo`
10* Update `@bitgo/account-lib` to version 2.0.0
11* Update `@bitgo/statics` to version 5.0.0
12* Use renamed `@bitgo/utxo-lib` package and update to version 1.7.1
13
14## 11.3.0 (06-30-2020)
15
16### New Features
17* Add ability to use a custom API token when using the Etherscan API
18* Implement `signTransaction`, `explainTransaction` and other functions needed for signing and recovery to `AbstractEthLikeCoin`, which unifies the logic for Ethereum forks and chains with compatible characteristics.
19
20### Other Changes
21* Update `@bitgo/account-lib` to version 1.7.0
22* Update `@bitgo/statics` to version 4.3.0
23* Change exported enums to be non-const
24
25## 11.2.0 (06-15-2020)
26
27### New Features
28* Add support for new ERC20 tokens (ABT, BSX, INF, JFIN, NIAX, USG)
29* Add support for `signMessage` to ETH-like coins.
30
31### Other Changes
32* Add example showing how to create a basic local backup key for BTC.
33* Update `@bitgo/statics` to version 4.2.0
34
35## 11.1.3 (06-04-2020)
36
37### New Features
38* `prod`, `test`, and `dev` environment configs now point to the corresponding app.bitgo.com URLs. The old `msProd`, `msTest`, and `msDev` environments have been deprecated and are now aliases of `prod`, `test`, and `dev` respectively.
39* Add initial support for ETC, RBTC, and CGLD.
40
41### Bug Fixes
42* Allow rebuilding consolidation transactions upon approving a pending approval
43* Fix bug in fanout endpoint that causes `maxNumInputsToUse` to be ignored.
44
45### Other Changes
46* Add example for consolidating Algorand from receive addresses
47* Update `@bitgo/statics` to version 4.1.0
48* Update `@bitgo/account-lib` to version 1.3.0
49
50## 11.1.2 (05-20-2020)
51
52This release fixes an build issue with bitgo@11.1.1 which caused an older version of statics to be inadvertently included in the built package available on npm.
53
54### Other Changes
55* Update `@bitgo/statics` to version 4.0.1
56
57## 11.1.1 (05-12-2020)
58
59### Other Changes
60* Include full stack traces for `BitGoJSError` types and inheritors.
61* Update `@bitgo/statics` to version 4.0.0
62
63## 11.1.0 (05-08-2020)
64
65### Other Changes
66* Move creation of XRP wallet initialization transactions to server side in order to support the XRP DeleteableAccounts amendment.
67
68## 11.0.3 (04-13-2020)
69
70### Other Changes
71* Update `@bitgo/account-lib` to version 1.0.3
72* Fix message signing for XTZ
73
74## 11.0.2 (04-09-2020)
75
76### Other Changes
77* Remove `@hidden` annotation from trading documentation and update to latest payload version.
78* Update `@bitgo/statics` to version 3.5.0
79
80## 11.0.1 (03-31-2020)
81
82### Other Changes
83* Update `@bitgo/statics` to version 3.4.4
84
85## 11.0.0 (03-24-2020)
86
87### Breaking Changes
88* The `signMessage` function on coin objects has been made asynchronous. Callers of this function will have to update their code to correctly handle the returned promise.
89
90### New Features
91* Add preliminary XTZ signing support.
92
93### Other Changes
94* Update `@bitgo/account-lib` to version 1.0.2
95* Update `@bitgo/statics` to version 3.4.3
96
97## 10.0.0 (03-18-2020)
98
99### Breaking Changes
100* The `signTransaction` function on wallet objects has been made asynchronous. Callers of this function will have to update their code to correctly handle the returned promise.
101
102### New Features
103* A new parameter `offlineVerification` has been added to the `prebuildTransaction` function on wallet objects. When set to `true`, additional data useful for offline transaction verification will be fetched along with the unsigned transaction.
104
105### Bug Fixes
106* Replace bitcoin average with coingecko for retrieving market data in offline recovery scenarios.
107* Fix incorrect type check on `username` and `password` parameters in `preprocessAuthenticationParams`.
108
109### Other Changes
110* Update `@bitgo/account-lib` to version 1.0.1
111
112## 9.6.2 (03-12-2020)
113
114### Other Changes
115* Update `@bitgo/statics` to version 3.4.1
116
117## 9.6.1 (03-10-2020)
118
119### Other Changes
120* Increase EOS recovery transaction expiration time from 1 hour to 8 hours.
121* Update `@bitgo/statics` to version 3.4.1
122
123## 9.6.0 (03-03-2020)
124
125### New Features
126* Add support for building consolidation transactions for account based coins via the new wallet methods `buildAccountConsolidation`, `sendAccountConsolidation`, and `sendAccountConsolidations` (for bulk consolidations).
127
128### Other Changes
129* Update `@bitgo/statics` to version 3.4.0
130
131## 9.5.3 (02-14-2020)
132
133### Other Changes
134* Update `@bitgo/statics` to version 3.3.0
135
136## 9.5.2 (02-11-2020)
137
138### Bug Fixes
139* Recreate XLM integration test wallets following quarterly XLM testnet reset.
140
141### Other Changes
142* Update `@bitgo/statics` to version 3.2.0
143
144## 9.5.1 (02-04-2020)
145
146### Bug Fixes
147* Add missing properties `redeemScript` and `witnessScript` to typescript interface `SignTransactionOptions`.
148
149### Other Changes
150* Update `@bitgo/statics` to version 3.1.1
151
152## 9.5.0 (01-29-2020)
153
154### Bug Fixes
155* Remove usage of deprecated bufferutils function `bufferutils.reverse`.
156
157### Other Changes
158* Update `@bitgo/statics` to version 3.1.0
159
160## 9.4.1 (01-21-2020)
161
162### Bug Fixes
163* Fix incorrect aliasing of interface `TransactionExplanation` in Algorand implementation.
164
165### Other Changes
166* Update `@bitgo/statics` to version 3.0.1
167
168## 9.4.0 (01-15-2020)
169
170### New Features
171* Allow creation of random EOS addresses.
172* Lock transactions to next block to discourage fee sniping.
173
174### Other Changes
175* Update `@bitgo/statics` to version 3.0.0
176
177## 9.3.0 (12-17-2019)
178
179### New Features
180* Return key registration data for Algorand's `explainTransaction()`
181
182### Bug Fixes
183* Fix circular json serialization error when using `accelerateTransaction`
184* Filter out duplicate addresses when doing address lookups for cross chain recoveries
185* Allow EOS addresses to begin with a number
186* Properly deserialize EOS staking transactions
187* Ensure `Error.captureStackTrace` is defined before using, as this is not standard and only available in V8-based Javascript runtimes.
188
189### Other Changes
190* Improve the `DEVELOPERS.md` document, which helps to onboard new developers who want to work on the BitGo SDK itself.
191* Add a basic GitHub issue template
192
193## 9.2.0 (12-10-2019)
194
195### Other Changes
196* Update `bitgo-utxo-lib` to version 1.7.0 for new ZCash chain parameters
197* Check for wrapped segwit unspents in express v1 integration test
198
199## 9.1.0 (12-04-2019)
200
201### New Features
202* Use BitGo Stellar Federation proxy for Stellar Federation lookups
203
204### Bug Fixes
205* Reject hop params for ERC20 token transaction builds, as these do not make sense
206
207## 9.0.1 (11-27-2019)
208
209### Bug Fixes
210* Fix TRON recovery transaction object format
211
212### Other Changes
213* Include recovery amount for TRON recovery transactions
214
215## 9.0.0 (11-20-2019)
216
217### Breaking Changes
218* Support for Node 6 has been dropped. Node 8 is now the oldest supported version.
219
220### New Features
221* Partial support for recoveries of TRON wallets
222
223### Other Changes
224* Remove deprecated v1 examples
225* Update Javascript and Typescript examples
226* Remove node 6 and node 11 from Drone CI
227
228## 8.5.3 (12-17-2019)
229
230### New Features
231* Backported from 9.3.0: Return key registration data for Algorand's `explainTransaction()`
232
233## 8.5.2 (11-13-2019)
234
235### Bug Fixes
236* Unify TRON keycard key format with other coins
237
238## 8.5.1 (11-08-2019)
239
240### Bug Fixes
241* If given, pass seed to TRON account generation utility function provided by `bitgo-account-lib`
242
243### Other Changes
244* Resolve dependency `handlebars` to version 4.5.0
245* Update dependency `bitgo-account-lib` to version 0.1.5
246
247## 8.5.0 (11-06-2019)
248
249### New Features
250* Enable usage of new Unspent Reservation system when building transactions. Using this feature allows a transaction to temporarily have an exclusive right to spend a one or more UTXO(s). This can help prevent unspent not found errors when sending interleaved transactions.
251* Allow signing TRON transactions with a raw extended private key.
252* Allow explaining a TRON transaction from the raw transaction hex using `explainTransaction()`
253
254### Bug Fixes
255* Remove unimplemented and unnecessary override of `deriveKeyWithSeed` for TRON
256* Allow both base58 and hex addresses for TRON
257* Fix number of decimals for offchain Stellar
258* Return fully signed TRON transaction in same format as other coins
259
260### Other Changes
261* Import `@bitgo/statics` library into BitGo SDK monorepo
262* Update `bitgo-account-lib` to version 0.1.4
263* Recreate Stellar integration test wallets following testnet reset
264* Limit Stellar trustline transactions by using base units instead of native units
265* Temporarily use node 10 in Drone pipelines instead of LTS
266
267## 8.4.0 (10-25-2019)
268
269### New Features
270* Allow removing Stellar Trustlines from a wallet
271* Add additional environment presets for new BitGo backend environments
272
273### Bug Fixes
274* Fix incorrect precedence in environment configurations
275
276### Other Changes
277* Resolve `https-proxy-agent` to version 3.0.0 for patch in `ripple-lib`
278* *Unstable feature*: Add support for sending from TRON hot wallets
279* Add missing options types in `Wallet` and `Wallets` classes
280* Add new internal method `manageUnspents` to `Wallet`. This method combines the fanouts and consolidation implementations into a single method. *Note:* There is no change to the public API.
281* Enable more strict Typescript compilation options, update code which was not compatible
282
283## 8.2.4 (10-18-2019)
284
285__No changes__
286
287## 8.2.3 (10-18-2019)
288
289### Other Changes
290* Update dependency `@bitgo/statics` to version 2.2.0
291
292## 8.2.2 (09-27-2019)
293
294### Bug Fixes
295* Use `require()` instead of ES `import()` for dynamically importing ethereum dependencies. This was causing issues in browsers.
296
297### Other Changes
298* Resolve `handlebars` dependency to `^4.3.0` for patch in dev dependency
299
300## 8.2.1 (09-24-2019)
301
302### Bug Fixes
303* Fix importing `ethereumjs-util` in browsers, where it was previously failing
304* Fix hop transactions which need to go through a pending approval flow
305* Fix two broken/flaky Ethereum and XRP tests
306
307### Other Changes
308* Allow custom env to use testnet server public key if network is testnet.
309* Revert enabling batched Ethereum sends due to incompatibility in `validateTransaction`
310
311## 8.2.0 (09-19-2019)
312
313### New Features
314* Generate and upload BitGo SDK documentation on each build run. See [here](https://bitgo-sdk-docs.s3.amazonaws.com/core/8.2.0/index.html) for an example.
315* Improve `explainTransaction` so it can explain Stellar Trustline and Stellar Token transactions
316
317### Bug Fixes
318* Export all Typescript types which are part of the public API. If you find there is a type which is used in the public API but not exported, please open an issue.
319* Fix incorrect implementation of `getChain` for Stellar Tokens
320* Fix incorrect Content Type on documentation uploaded by Drone CI
321* Fix inadvertent param rename instead of type specification, and duplicate identifier (thanks @workflow and @arigatodl)
322
323### Other Changes
324* Clean up and update all examples
325* Separate JavaScript examples from Typescript examples
326* Remove examples for removed v1 Ethereum code
327* Improve error message displayed when optional Ethereum libraries could not be required
328* *Unstable feature*: Allow for creation of TRON wallets
329
330## 8.1.2 (09-19-2019)
331
332### New Features
333* Allow `gasLimit` param to be sent when prebuilding Ethereum transactions
334
335### Bug Fixes
336* Fix type custom type inclusion in core module
337* Move superagent type augmentation into `core/types`
338
339## 8.1.1 (09-11-2019)
340
341### Bug Fixes
342* Fix superagent typescript declaration augmentation
343* Pass `gasLimit` when creating Ethereum transaction prebuilds
344
345## 8.1.0
346
347### New Features
348* Use `@bitgo/statics` for ERC20 and OFC coin definitions
349
350### Bug Fixes
351* Fix bug in `isValidAddress` which would cause it to incorrectly return true for coins which don't support bech32.
352* Remove deprecation markers for the following functions:
353 * `verifyPassword()`
354 * `generateRandomPassword()`
355 * `extendToken()`
356
357### Other Changes
358* Upgrade `@bitgo/statics` to 2.0.0-rc.0
359* Upgrade `bitgo-utxo-lib` to 1.6.0
360* Enable `strictNullChecks` typescript compiler option
361* More Typescript improvements across the project. `baseCoin.ts` and `bitgo.ts` in particular have seen much improvement.
362* Fix HMAC errors when doing non-BitGo EOS recoveries
363
364## 8.0.0
365
366### Breaking Changes
367
368#### Elimination of synchronous error behavior for async functions
369* Previously, some async functions had strange error behavior where they would throw a synchronous error sometimes, and fail with a rejected promise other times. Which behavior you get for a given error is only really discoverable via source code inspection. Depending on how callers handled async calls and errors, this could break some callers.
370* One example of a changed function is `bitgo.refreshToken()`, which previously would throw a synchronous error if the `params.refreshToken` were not provided. This function can also return a Bluebird promise, which will reject if there is a failure with the network request. If you are a caller who uses `.then()` to handle async behavior, some errors which previously required a surrounding `try`/`catch` will now fall through to a `.catch()` handler attached to the returned promise.
371
372Perhaps an example will help clarify:
373
374```javascript
375const BitGoJS = require('bitgo');
376const bitgo = new BitGoJS.BitGo({ env: 'test' });
377
378try {
379 bitgo.refreshToken()
380 .then(() => console.log('then'))
381 .catch(() => console.log('async catch'));
382} catch (e) {
383 console.log('sync catch');
384}
385```
386
387Previous to version 8, the string `sync catch` would have been printed for some errors, and `async catch` would have been printed for others. In version 8 and later, `async catch` should be printed regardless of the error encountered. If you find this is not the case, then this is a bug and please open issue so we can correct it. We may alter more async functions to match this behavior if needed, and this major version bump will cover those changes as well (there will not be another major version bump for similar changes in the future).
388
389By eliminating one error channel, correct error handling is greatly simplified for callers. The goal here is to make all async functions always return a promise and never throw directly (instead, the returned promise would be rejected).
390
391If you are relying on synchronous error behavior from an async function, this breaking change may require fixes in calling code.
392
393**Note:** If you are using `async/await` syntax, or a helper library like Bluebird which turns async promise rejections into sync errors, this change will not affect you. We currently recommend using `async/await` syntax for new code written against BitGoJS.
394
395If you believe you may be affected by this breaking change, and would like more information or a complete list of functions which have been altered in this way, please send an email to support at bitgo dot com.
396
397#### Deprecation of v1 methods on BitGo object
398* There are several methods on the BitGo object which have been deprecated in this release. These methods lead to the version 1 wallet codebase, and is a common source of errors for new users of BitGoJS. To make it clear that these are not the functions recommended for normal usage, they have been deprecated. The complete list of newly deprecated functions is as follows:
399 * `sendOTP()`
400 * `reject()`
401 * `verifyAddress()`
402 * `blockchain()`
403 * `keychains()`
404 * `market()`
405 * `wallets()`
406 * `travelRule()`
407 * `pendingApprovals()`
408 * `registerPushToken()`
409 * `verifyPushToken()`
410 * `newWalletObject()`
411 * `estimateFee()`
412 * `instantGuarantee()`
413 * `getBitGoFeeAddress()`
414 * `getWalletAddress()`
415 * `listWebhooks()`
416 * `addWebhook()`
417 * `removeWebhook()`
418 * `getConstants()`
419 * `calculateMinerFeeInfo()`
420
421Additionally, `ethSignMsgHash` in `util.ts` has been deprecated. This will be relocated to an Ethereum specific part of the code in the future.
422
423Direct usage of the `env` property of the BitGo object has also been deprecated. Please use `bitgo.getEnv()` as an alternative.
424
425**Note:** We have no immediate plans to remove these functions. If you are relying on these functions, they will continue to work, but you should begin considering alternatives provided by the version 2 wallet API. If you find there is a feature gap which is preventing you from moving to the v2 wallet API, please send an email to support at bitgo dot com.
426
427**Note:** The following functions have been incorrectly marked as deprecated in the source code, but in fact are NOT deprecated. This will be fixed in the next version of BitGoJS:
428* `verifyPassword()`
429* `generateRandomPassword()`
430* `extendToken()`
431
432**Note:** We may deprecate more functions, and these deprecations may be done without a major version bump. However, prior to any deprecated method being actually removed and made unavailable, a major version bump will be required.
433
434### New Features
435* Add support for ERC 20 tokens (CIX100, KOZ, AGWD)
436
437### Bug Fixes
438* Fix incorrect parameters in keycard.ts (thanks @DCRichards)
439
440### Other Changes
441* Refactor Settlement API and add function for calculating settlement fees. Note that this API is still experimental and is not yet ready for general usage.
442* Update microservices authentication route format.
443* Improve Typescript support in expressApp, Ethereum and ERC 20 token implementations, recovery and BitGo object.
444
445## 7.1.1
446
447### Other Changes
448* Allow creation of wallets with custom addresses, where supported (currently only EOS supports this feature).
449
450## 7.1.0
451
452### New Features
453* Add support for new ERC 20 tokens (TGBP)
454* Support for applying second signature to ALGO transactions
455* Update EOS transaction prebuild format
456* Implement `isValidAddress` for Offchain Tokens
457
458### Bug Fixes
459
460### Other Changes
461* Improve Typescript support in many coin implementations.
462
463## 7.0.0
464
465### Breaking Changes
466The `explainTransaction` method on in BaseCoin is now asynchronous. Callers of this method will need to resolve the returned promise in order to make use of the return value.
467
468As an example, before the behavior of `explainTransaction` was as follows (parameters omitted for brevity):
469```typescript
470const explanation = bitgo.coin('tbtc').explainTransaction(...);
471console.dir(explanation);
472```
473
474In version 7 and later, the behavior is now:
475```typescript
476const explanation = await bitgo.coin('tbtc').explainTransaction(...);
477console.dir(explanation);
478```
479
480or, if you can't use async/await:
481```typescript
482bitgo.coin('tbtc').explainTransaction(...)
483.then(explanation => {
484 console.dir(explanation);
485});
486```
487
488This breaking change was required since some of the coins we are considering adding in the future are unable to implement `explainTransaction` in a synchronous way.
489
490### New Features
491* Update contract address for ERC20 token LGO
492* Add support for new ERC20 tokens (THKD, TCAD, EDN, EMX)
493
494### Other Changes
495* Add node version support policy to README
496* Improve typescript support in many files, including `BaseCoin`, `Utils`, `AbstractUtxoCoin`, and several others
497* Autoformat code upon commit and check code format during CI
498
499## 6.2.0
500
501### New Features
502* Allow creating BitGo objects which use a custom Stellar Federation server URL.
503* Add support for new ERC20 tokens (LEO, CREP, CBAT, CZRX, CUSDC, CDAI, CETH, VALOR).
504* Update trade payload version to `1.1.1`.
505
506### Bug Fixes
507* Update to lodash@^4.17.4 for a vulnerability fix for CVE-2019-10744.
508* Ensure amount is correctly passed through to server for Ethereum fee estimation
509* Update ZEC block explorer used in recovery flows
510
511### Other Changes
512* Improve Typescript support in `webhooks.ts`, `internal.ts`, `common.ts`, and `environments.ts`
513
514## 6.1.1
515
516### Bug Fixes
517* Fix issue where accepting a wallet share as a viewer would fail to correctly update the server.
518
519## 6.1.0
520
521### New Features
522* Add support for deriving ed25519 hardened child public keys, used by XLM and other ed25519-based coins.
523* Update documentation to point to new docker image for BitGo Express (`bitgosdk/express`). The `bitgo/express` image is now deprecated.
524* Add support for new ERC20 tokens (DRPU, PRDX, TENX, ROOBEE, ORBS, VDX, SHR)
525
526### Other Changes
527* Preliminary support for EOS. Please note that this API is not finalized, and is subject to API breaking changes in minor and/or patch version releases without warning.
528* Validate Ethereum hop transaction signatures against static Platform HSM key instead of wallet BitGo key
529* Improve Typescript support for `Wallet` and `Wallets` objects, as well as the XLM coin implementation
530* Extract example keycard rendering logic out of `Wallet`
531
532## 6.0.0
533The BitGoJS SDK is being modularized! The code base has been split into two modules: `core` and `express`.
534
535`core` contains the Javascript library that you get when you `require('bitgo')`.
536
537`express` contains the source for the BitGo Express local signing server, and it uses the `core` module to provide access to BitGoJS functionality over a REST interface.
538
539The long term plan is to modularize based on each underlying coin library, so users of `bitgo` won't need to bring in many large dependencies for coins they aren't using. This may require additional major versions if breaking changes are required, but we will do as much as possible to maintain the current API of the BitGoJS SDK.
540
541### Breaking Changes
542* Users who pin a git hash of BitGoJS in their package.json will need to update their build steps, since the structure of the git repository has changed. If the desire is to simply use bitgo as a Javascript library outside a browser context, we recommend using a semantic version string instead of a git hash to specify which version should be installed. For development in a browser setting, a browser compatible bundle is now distrubuted in the package at `node_modules/bitgo/dist/browser/BitGoJS.min.js`. As an alternative to downloading the package from npm, a tarball of BitGoJS could also bundled in your application and used during install.
543* `bitgo-express` is no longer bundled with the `bitgo` npm package. The recommended install instructions are now to install via the official Docker image `bitgosdk/express:latest`. If you aren't able to run bitgo-express via Docker, you can also install and run `bitgo-express` from the source code. See the [`bitgo-express` README](https://github.com/BitGo/BitGoJS/tree/master/modules/express#running-bitgo-express) for more information on how to install and run BitGo Express.
544* For version 1 wallets, the bitcoin network by the BitGo object is no longer global, and is now determined by the bitgo object's environment when it was initialized.
545
546As an example, before the behavior was as follows:
547```typescript
548const BitGoJS = require('bitgo');
549// create a new bitgo object using the default (test) environment
550const bitgo = new BitGoJS.BitGo();
551
552// BAD: Global network is checked by all bitgo objects, but this
553// leads to race conditions when multiple bitgo objects are setting the
554// global bitcoin network unpredictably
555BitGoJS.setNetwork('bitcoin');
556// verify a main net address using bitgo object using test environment
557bitgo.verifyAddress({ address: '1Bu3bhwRmevHLAy1JrRB6AfcxfgDG2vXRd' }).should.be.true();
558```
559
560After version 6, the behavior will change to this:
561```typescript
562const BitGoJS = require('bitgo');
563
564// create a new bitgo object using the default (test) environment
565const bitgo = new BitGoJS.BitGo();
566
567// BREAKING CHANGE: returns false since this bitgo object is using
568// the test environment and cannot verify a main net address
569bitgo.verifyAddress({ address: '1Bu3bhwRmevHLAy1JrRB6AfcxfgDG2vXRd' }).should.be.true();
570
571// create a new bitgo object using the production environment
572const prodBitgo = new BitGoJS.BitGo({ env: 'prod' });
573
574// OK: Able to verify main net address with bitgo using production environment
575prodBitgo.verifyAddress({ address: '1Bu3bhwRmevHLAy1JrRB6AfcxfgDG2vXRd' }).should.be.true();
576```
577
578To switch to another bitcoin network, a new bitgo object should be constructed in the correct environment.
579
580### New Features
581* Preliminary support for BitGo Trading Account and Settlement APIs. Please note that this API is not finalized, and is subject to API breaking changes in minor and/or patch version releases without warning.
582* Preliminary support for Algorand. Please note that this API is not finalized, and is subject to API breaking changes in minor and/or patch version releases without warning.
583* Add support for new ERC 20 Token (PDATA)
584
585### Other Changes
586* Overhaul how coins are loaded, in anticipation of a pluggable coin system in a future version of `bitgo`.
587* Rework CI system to reduce test runtimes by running tests for each module in parallel
588* Create and upload mochawesome report after each test run. [Here's an example](https://bitgo-sdk-test-reports.s3.amazonaws.com/1166/core/integration%20tests%20\(node:lts\).html).
589* Remove coin instantiation logic from BaseCoin and move methods to prototype instead of attaching to coin object instances.
590
591## 5.4.0
592
593### New Features
594* Add support for verifying and signing Ethereum hop transactions
595* Add support for new ERC 20 tokens (TIOX, SPO)
596
597### Bug Fixes
598* Remove duplicate ERC 20 token definition (AION)
599
600## 5.3.0
601
602### New Features
603* Add support for new ERC 20 tokens (USX, EUX, PLX, CQX, KZE)
604
605### Other Changes
606* Improve test performance by making more requests in parallel when checking wallet funding
607* Fix bitgo-express startup command on Windows where the shebang line is ignored
608
609## 5.2.0
610
611### New Features
612* Add support for new ERC 20 tokens (WHT, AMN, BTU, TAUD)
613* Add support for trade payload signing
614
615### Bug Fixes
616* Allow sharing "pseudo-cold" wallets where the encrypted user key is not held by BitGo.
617* Correctly update matching wallet passphrases when the user login password is updated.
618* Add missing filter parameters in `wallet.transfers`.
619
620### Other Changes
621* Update README to clarify package description and improve example snippets
622
623## 5.1.1
624
625### Bug Fixes
626* Separate input signing and signature verification steps in `AbstractUtxoCoin.signTransaction`. This fixes an issue where Native Segwit inputs which were not the last input in the transaction were not being properly constructed.
627
628## 5.1.0
629
630### New Features
631* Add support for counting the number of valid signatures on Native Segwit transaction inputs in `explainTransaction`.
632
633### Bug Fixes
634* Update `bitgo-express` startup command in README. Running directly from the cloned git repository is no longer recommended.
635* Add install size and timing metrics to CI system.
636
637### Other Changes
638* Remove version 1 support for Ethereum wallets and associated tests. This functionality has been broken for some time due to the required server side routes being removed.
639
640**V2 Ethereum wallets are unaffected**. If your Ethereum wallet was working before this change, it will continue functioning normally.
641
642## 5.0.4
643
644### Bug Fixes
645* Fix `npm audit` failures caused by newly disclosed vulnerabilities in development dependencies `eslint`, `husky`, `lint-staged`, and `nyc`. This fix has been backported to the `bitgo@4` series as release `4.49.2`.
646
647## 5.0.3
648
649### Bug Fixes
650* Fix unhanded error in `explainTransaction()` causing approval failures for transactions which require replay protection.
651
652### Notes
653* This version was not published to npm due to `npm audit` failures which would be present upon install. These issues were fixed in version 5.0.4, which was released on npm.
654
655## 5.0.2
656
657### Bug Fixes
658* Readd ERC 20 token `NAS`
659
660## 5.0.1
661
662### Bug Fixes
663* Fix incorrect import in test file that was causing errors on install and when running tests (#297)
664
665## 4.49.2
666This is a maintenance update to the `bitgo@4` major version.
667
668### Bug Fixes
669* Backport updates to dev dependencies `nyc` and `fsevents` to fix `npm audit` failures.
670
671## 4.49.1
672This is a maintenance update to the `bitgo@4` major version.
673
674### Bug Fixes
675* Update `@bitgo/unspents` to 0.5.1 for a fix for an incompatibility issue in `tsc@3.4`
676
677## 5.0.0
678* BitGoJS is now a typescript project!
679 * `tsc` now runs as a prepublish step.
680 * We have added type definitions to some of our coin specific files, and we will continue to add and improve on our published type information.
681
682### Breaking Changes
683* Dropped support for node versions below 6.12.3. We will be publishing a more detailed policy on node and npm version support soon.
684
685### New Features
686* Typescript
687* Type information for XRP and TXRP
688* Added support for new ERC 20 tokens (UPT, UPUSD, UPBTC, FET)
689
690### Bug Fixes
691* Removed duplicated transaction and address contants in favor of using `@bitgo/unspents` for equivalent contants.
692* Fix error thrown when randomly generated private key starts with a zero byte which would cause message signing failures. Transaction signing is not affected.
693* Fix bug which caused only the first consolidation transaction to be returned from `consolidateTransaction()` for v1 wallets instead of all transations.
694
695### Other changes
696* Updated the install instructions for BitGoJS to `npm install bitgo` instead of cloning the project directly. This has an effect on how to run `bitgo-express`. To install and run `bitgo-express`, the recommended command is `npm install -g bitgo && npm explore -g bitgo -- bin/bitgo-express`.
697* Upgraded eslint to 5.15.1, which entails dropping support for development on BitGoJS on node versions below 6.14.0. If you need to develop on node 6.x, please use at least 6.14.0, and consider upgrading soon as [node 6 is scheduled to reach end-of-life on April 30, 2019](https://github.com/nodejs/Release#release-schedule). Only users of BitGoJS who are contributing source code changes are affected by this requirement. End users can continue using node versions >=6.12.3, but please upgrade soon.
698* Remove karma browser testing framework. We will be revamping our browser testing in a future release.
699
700### Common Issues when Upgrading
701
702#### Warning on installation
703
704You may notice a warning when installing BitGoJS about using a deprecated script type:
705```
706npm WARN prepublish-on-install As of npm@5, `prepublish` scripts are deprecated.
707npm WARN prepublish-on-install Use `prepare` for build steps and `prepublishOnly` for upload-only.
708npm WARN prepublish-on-install See the deprecation note in `npm help scripts` for more information.
709```
710
711This is expected, and we cannot yet change to using a prepare script because this script type is not yet available in some of our supported npm versions.
712
713#### Potential error when starting `bitgo-express`
714If you see the following error when running `bin/bitgo-express`, it means the typescript files have not been compiled.
715```
716module.js:478
717 throw err;
718 ^
719
720Error: Cannot find module '../dist/src/expressApp'
721 at Function.Module._resolveFilename (module.js:476:15)
722 at Function.Module._load (module.js:424:25)
723 at Module.require (module.js:504:17)
724 at require (internal/module.js:20:19)
725 at Object.<anonymous> (/bitgo-dep/node_modules/bitgo/bin/bitgo-express:5:66)
726 at Module._compile (module.js:577:32)
727 at Object.Module._extensions..js (module.js:586:10)
728 at Module.load (module.js:494:32)
729 at tryModuleLoad (module.js:453:12)
730 at Function.Module._load (module.js:445:3)
731 at Module.runMain (module.js:611:10)
732 at run (bootstrap_node.js:394:7)
733 at startup (bootstrap_node.js:160:9)
734 at bootstrap_node.js:507:3
735```
736To fix this, You can compile the typescript source manually by running `npm explore bitgo -- npm run prepublish`.
737
738#### Installing as root
739`npm` does not run prepublish scripts if it is running as root. This means the typescript source will not be compiled and an error will be thrown when attempting to require bitgo. This includes installing bitgojs as a dependency in the node_modules of another project.
740
741When this happens, you will see this message when running `npm install`:
742```
743npm WARN lifecycle bitgo@5.0.0~prepublish: cannot run in wd %s %s (wd=%s) bitgo@5.0.0 tsc && node scripts/copySjcl.js /bitgojs
744```
745
746If you really need to install BitGoJS as root, you'll have to install it using `npm install --unsafe-perm`.
747
748## 4.49.0
749### New Features
750- Complete support for native segwit address generation and verification
751- Ensure match between addressType and chain parameters when calling `generateAddress()`
752- Use `@bitgo/unspents` for address chain information
753- Add support for overriding the server extended public key used by BitGoJS
754- Add support for new ERC 20 tokens (SLOT, ETHOS, LBA, CDAG)
755
756### Bug Fixes
757- Get latest block height and transaction prebuild in parallel
758
759### Deprecation Notices
760The following parameters to the `generateAddress()` function on `Wallet` objects have been deprecated, and will be removed in a future version of BitGoJS:
761- `addressType`
762- `segwit`
763- `bech32`
764
765Instead, the address type will be determined by the `chain` parameter, with the following behavior:
766
767| chain | type | format | usage |
768| ----- | ---- | ------ | -------- |
769| 0 | pay to script hash | base58 | External |
770| 1 | pay to script hash | base58 | Internal (change) |
771| 10 | wrapped segwit | base58 | External |
772| 11 | wrapped segwit | base58 | Internal (change) |
773| 20 | native segwit | bech32 | External |
774| 21 | native segwit | bech32 | Internal (change) |
775
776## 4.48.1
777### Bug Fixes
778- Treat errors thrown from `verifySignature` as an invalid signature
779
780## 4.48.0
781### New Features
782- Add ability to count signatures on a utxo transaction to `explainTransaction()`
783- Add support for generating unsigned sweep transactions for Stellar Lumens (XLM) and Ripple XRP (XRP)
784- Add support for recovering Bitcoin Satoshi Vision (BSV) inadvertently sent to a Bitcoin (BTC) address
785- Add support for new ERC 20 Tokens (BAX, HXRO, RFR, CPLT, CSLV, CGLD, NZDX, JPYX, RUBX, CNYX, CHFX, USDX, EURX, GBPX, AUDX, CADX, GLDX, SLVX, SLOT, TCAT, TFMF)
786
787### Bug Fixes
788- Improve handling proxy request timeouts from bitgo-express
789- Prevent rebuilding OFC transactions upon transaction approval
790- Allow creation of new addresses on wallets returned from `wallets().list()`
791- Return actual fee used from `wallet.sendMany()` instead of fee estimate
792- Fix date and name on LICENSE
793- Update dev-dependency karma to 4.0.1 to fix minor upstream vulnerability
794- Allow accessing `oauth/token` route from bitgo-express
795- Add `.nvmrc` with version set to `lts/carbon`
796- Fix ERC 20 Token BID decimal places
797
798### API changes
799- Remove `bech32` parameter option from `createAddress`
800- Add `strategy` parameter option to `prebuildTransaction` for setting the preferred unspent selection strategy
801
802## 4.47.0
803### New Features
804- Add support for new ERC 20 Token (BAX)
805- Allow passing custom unspent fetch parameters to `createTransaction`
806- Handle missing optional Ethereum dependencies more gracefully
807- Allow fetching of SegWit unspents for Ledger-backed wallets
808
809### Bug Fixes
810- Specify exact versions of dependencies
811- Update token contract hash for ERC20 Token (BID)
812
813## 4.46.0
814### New Features
815- Add support for new ERC 20 Tokens (AMON, CRPT, AXPR, GOT, EURS)
816
817### Bug Fixes
818- Use normalized amount field for recovery amounts for UTXO coins
819
820## 4.45.1
821### Bug Fixes
822- Do not sign replay protection inputs for TBSV
823
824## 4.45.0
825### New Features
826- Add support for recovering BTC segwit unspents
827- Add support for new ERC 20 Tokens (HEDG, HQT, HLC, WBTC)
828- Add some plumbing for BSV and OFC support
829- Support coinless API routes in Bitgo Express
830
831### Bug Fixes
832- Allow XLM recovery to previously unfunded addresses
833- Correctly handle sends with a custom change address
834
835## 4.44.0
836### New Features
837- CPFP support for v2 BTC wallets
838- New function on v2 keychains prototype (`updateSingleKeychainPassword`) to change a keychain's password
839- Improve sequenced request ID support to cover more requests
840
841### Bug Fixes
842- Fix an issue involving approving multiple pending approvals whose transactions spent the same unspent.
843- Improve formatting for large numbers used in `baseUnitsToBigUnits`
844- Disallow proxying of non-API requests through BitGo Express
845- Check for both `txHex` and `halfSigned` parameters in Wallet `prebuildAndSignTransaction`
846- Improve handling of failed stellar federation lookups