decred.org/dcrdex@v1.0.5/docs/release-notes/release-notes-0.5.0.md (about) 1 # DCRDEX v0.5.0 2 3 Aug 23, 2022 4 5 For a high level introduction to DCRDEX, please read the [initial release's notes](https://github.com/decred/dcrdex/blob/master/docs/release-notes/release-notes-0.1.0.md). 6 7 See the [Client Installation and Configuration wiki page](https://github.com/decred/dcrdex/wiki/Client-Installation-and-Configuration) for a walkthrough of client setup. 8 9 Binaries are attached at the bottom of this release. Just download the one for your system, extract it, and run the **dexc** executable in a terminal / command prompt. It will start up and display a link that you should open in the web browser of your choice. Keep the terminal with dexc opened until you are done and have signed out from the browser window. Hit CTRL+C in the terminal to shut it down. 10 11 Windows users must use v0.5.1 or newer, which contains an important fix for the user interface. 12 13 ## Important Notices 14 15 No Decred wallet is required with this release, but if using dcrwallet or Decrediton, the latest 1.7 release is required. 16 17 If upgrading from v0.2, read the Upgrading section of the [v0.4.0 release notes](https://github.com/decred/dcrdex/blob/master/docs/release-notes/release-notes-0.4.0.md#upgrading) for important information. 18 If upgrading from v0.4, read the [Upgrading](#upgrading) section of this document. 19 20 Always record the "seed" that is generated by the DEX client on initialization (when you set your password the first time in the browser window). This is a string of characters that is used to derive DEX account identities and initialize any native/built-in wallets you create in the DEX client. **You must have this seed to recover funds** that you receive in such wallets if your lose access to your DEX client's data folder. The seed can be retrieved at any time in the Settings page. 21 22 Although DCRDEX looks and feels like a regular exchange, the decentralized aspect brings an expanded role to the client. Please take the time to read and understand the following: 23 24 - **Never shutdown your external wallets with dexc running**. When shutting down, always stop dexc before stopping your wallets. 25 - If you have to restart dexc with active orders or swaps, you must **immediately login again** with your app password when dexc starts up. 26 - Never use external wallets for other things while they are in use by the DEX client. Perform all sends/withdraws from the Wallets page in the DEX user interface, not the external wallet. 27 - There is an "inaction timeout" when it becomes your client's turn to broadcast a transaction, so be sure not to stop dexc or lose connectivity for too long or you risk having your active orders and swaps/matches revoked. If you do have to restart dexc, just remember to login as soon as you start it up again. 28 - Only one dexc process should be running for a given user account at any time. For example, if you have identical dexc configurations on two computers and you run dexc and login on both, neither dexc instance will be adequately connected to successfully negotiate swaps. 29 - Order history is not synchronized between different client installations. 30 31 ## Upgrading 32 33 ### Client (dexc) 34 35 The new native DCR wallet built into the DEX client can be used by changing the wallet type to "SPV" in the wallet settings view. If using Decrediton, it is recommended to continue using Decrediton's wallet instead of the native wallet. Funds do not automatically move between wallet types if you change it; you must manually send the funds. Plan accordingly before changing wallet types. 36 37 The native BTC wallet that was introduced in v0.4, but if you are still using and external Bitcoin Core wallet, v0.20 is no longer supported. Supported versions are v0.21, v22, and v23. Descriptor wallets may now be used with v22 and v23, but it is advised to use legacy (bdb) format wallets. 38 39 ### Server (dcrdex) 40 41 When a server is updated to v0.5, clients running v0.4.2 or older will fail to communicate with the server. 42 Only clients running v0.4.3 or better will continue to work. Users are urged to update to a v0.5.x release. 43 44 Bitcoin Core v0.20 is no longer supported. 45 46 ## Highlights 47 48 This is a major release. Please read the [Important Notices](#important-notices) before upgrading. 49 50 The most notable new features are: 51 52 - Decred native/built-in wallet, just like the BTC native wallet that we already have. Using dcrwallet or Decrediton in SPV mode (not full node) was already supported, but now no external wallet software is even required to trade DCR. However, users should continue with their existing Decred wallet software that has all the governance features that makes Decred great. (<https://github.com/decred/dcrdex/pull/1633>, <https://github.com/decred/dcrdex/pull/1759>, <https://github.com/decred/dcrdex/pull/1773>) 53 54 - Support for ZCash (ZEC), using zcashd in this release to start, but we are looking at light wallet solutions. Unshielded addresses used for trades. (<https://github.com/decred/dcrdex/pull/1570>, <https://github.com/decred/dcrdex/pull/1693>) 55 56 - Electrum light wallet support is added, with [LTC](https://electrum-ltc.org/) and [BTC](https://electrum.org/) to start, a common SPV wallet with forks for many different assets. The BCH wallet fork ([Electron Cash](https://electroncash.org/)) still requires a small update, which we hope will make it usable by DEX soon. (<https://github.com/decred/dcrdex/pull/1607>) 57 58 - Support for the latest Litecoin Core software (v0.21) that introduced MWEB (private addresses). Regular addresses are used for trades. (<https://github.com/decred/dcrdex/pull/1536>) 59 60 - DCRDEX can now work with mixed account configurations when using dcrwallet or Decrediton as the external DCR wallet, allowing Decred's privacy features to be used automatically when trading. (<https://github.com/decred/dcrdex/pull/1498>) 61 62 - Swap options may be set at time of placement of each order rather than in the wallet settings. This includes pre-sizing funds to avoid overlocking of UTXOs, and specifying higher network fee rates. (<https://github.com/decred/dcrdex/pull/1170>, <https://github.com/decred/dcrdex/pull/1669>) 63 64 - Improved send/withdraw controls, allowing a complete sweep of the wallet minus transaction fees, or sending a precise amount like most wallets. (<https://github.com/decred/dcrdex/pull/1611>) 65 66 - Bitcoin swap acceleration using CPFP transactions to increase the swap fee rate in the event of a network fee spike. This has not been in demand much recently, but we have encountered rapid increases in Bitcoin fee rates in the past where this is valuable. (<https://github.com/decred/dcrdex/pull/1555>) 67 68 - Fiat currency value display. When enabled by the user, current USD exchange rates for all assets will be used to show equivalent fiat values on the UI. (<https://github.com/decred/dcrdex/pull/1600>) 69 70 - QR code display for wallet receiving addresses. (<https://github.com/decred/dcrdex/pull/1483>) 71 72 - There is now a "copy" button next to the wallet's receiving address. (<https://github.com/decred/dcrdex/pull/1639>, <https://github.com/decred/dcrdex/pull/1675>) 73 74 - Recovery functionality for the native BTC SPV wallet. You may also now reconfigure the native BTC wallet’s “birthday” to change the scope of the rescan. (<https://github.com/decred/dcrdex/pull/1507>, <https://github.com/decred/dcrdex/pull/1439>) 75 76 - Add the option to obtain Decred network fee rates from dcrdata when the client wallet is unable. (<https://github.com/decred/dcrdex/pull/1654>) 77 78 - Bitcoin “descriptor” wallets are now supported. This only applies to users of the Bitcoin Core software, not the native BTC wallet, who also choose to create this type of wallet that is becoming the default in future versions of Bitcoin Core. Support for Bitcoin Core v23, dropped support for v0.19. (<https://github.com/decred/dcrdex/pull/1659>, <https://github.com/decred/dcrdex/pull/1735>) 79 80 - A DEX server's host name and TLS certificates may now be updated. (<https://github.com/decred/dcrdex/pull/1605>, <https://github.com/decred/dcrdex/pull/1602>) 81 82 - When a wallet regains peers after having lost connectivity, a notification is displayed. (<https://github.com/decred/dcrdex/pull/1701>, <https://github.com/decred/dcrdex/pull/1719>) 83 84 - Reconfiguring BTC wallets is now less disruptive as it only requires an internal restart of the wallet and chain service when absolutely required. (<https://github.com/decred/dcrdex/pull/1686>) 85 86 - The user interface files are now embedded in the "dexc" executable. To use the DEX client, only the one file is required. Any "site" folders left from previous versions may be deleted. (<https://github.com/decred/dcrdex/pull/1710>) 87 88 - The optional `dexcctl` command line control application now has a `version` command to ensure compatibility with dexc. (<https://github.com/decred/dcrdex/pull/1645>) 89 90 ## Server changes 91 92 - The server will check that a node's transaction indexes are enabled, when possible. (<https://github.com/decred/dcrdex/pull/1549>) 93 94 - Fee rate estimation now has a median-based backup estimation method when the nodes fail to return a rate. (<https://github.com/decred/dcrdex/pull/1597>, <https://github.com/decred/dcrdex/pull/1655>) 95 96 - The transaction search code is now smarter and blocks other routines less. (<https://github.com/decred/dcrdex/pull/1623>) 97 98 - Confirmation checks are now throttled for fast blocks. (<https://github.com/decred/dcrdex/pull/1629>) 99 100 - The server now begins signing untruncated messages, and ceases to recognize signatures created on truncated messages. (<https://github.com/decred/dcrdex/pull/1530>) This follows <https://github.com/decred/dcrdex/pull/1528> in v0.4.2 in which both client and server began recognizing signatures of the full messages, and <https://github.com/decred/dcrdex/pull/1529> from v0.4.3 in which clients began signing untruncated messages. The final change will be in v0.5.1 (<https://github.com/decred/dcrdex/pull/1526>), in which will cease to recognize the old signatures from servers that have not updated to v0.5.0. 101 102 ## Fixes 103 104 - The native BTC wallet now allows spending unconfirmed funds from swap redemptions. (<https://github.com/decred/dcrdex/pull/1547>) 105 106 - The native BTC wallet will now reject transaction that create dust outputs. (<https://github.com/decred/dcrdex/pull/1705>) 107 108 - Client fee rate handling is improved to prevent excessive fee rate requests, particularly to remote providers like a DEX server or dcrdata. (<https://github.com/decred/dcrdex/pull/1721>) 109 110 - The "filled" percentage shown on the frontend is no longer 100% for canceled orders. (<https://github.com/decred/dcrdex/pull/1744>) 111 112 - Order and match amounts and percentages for market buys are now displayed correctly. (<https://github.com/decred/dcrdex/pull/1711>) 113 114 - Loading config files from the wallet settings dialog will only allow recognized extensions by default. (<https://github.com/decred/dcrdex/pull/1564>) 115 116 - Shutdown hang due to timeout dialing server are prevented. (<https://github.com/decred/dcrdex/pull/1567>) 117 118 - Memory containing unused private data is cleared in more cases. (<https://github.com/decred/dcrdex/pull/1584>) 119 120 - The file path for RPC certificates is expanded when it contains characters like "~". (<https://github.com/decred/dcrdex/pull/1525>) 121 122 - The client database can now accommodate larger data pushes, such as very large swap contract transactions with numerous funding UTXOs. (<https://github.com/decred/dcrdex/pull/1620>) 123 124 - Max order size estimation code has been optimized. (<https://github.com/decred/dcrdex/pull/1684>) 125 126 - Deadlock with multiple concurrent BTC client DB accesses is avoided. (<https://github.com/decred/dcrdex/pull/1756>) 127 128 - Shutdown hangs in certain circumstances are now prevented. (<https://github.com/decred/dcrdex/pull/1732>, <https://github.com/decred/dcrdex/pull/1739>) 129 130 - Match status for revoked matches is now always shown correctly. (<https://github.com/decred/dcrdex/pull/1772>) 131 132 - Resolve an issue where creation of a native BTC wallet with a fee rate less than 1 sat/B would break the ability to create a wallet with a valid rate. (<https://github.com/decred/dcrdex/pull/1657>) 133 134 - The asset version is now saved in the client DB with order meta data. (<https://github.com/decred/dcrdex/pull/1780>) 135 136 - Frontend hangs, JavaScript errors, and minor bugs fixed. (<https://github.com/decred/dcrdex/pull/1624>, <https://github.com/decred/dcrdex/pull/1637>, <https://github.com/decred/dcrdex/pull/1647>, <https://github.com/decred/dcrdex/pull/1640>, <https://github.com/decred/dcrdex/pull/1662>, <https://github.com/decred/dcrdex/pull/1667>, <https://github.com/decred/dcrdex/pull/1644>, <https://github.com/decred/dcrdex/pull/1543>, <https://github.com/decred/dcrdex/pull/1704>, <https://github.com/decred/dcrdex/pull/1736>, <https://github.com/decred/dcrdex/pull/1757>, <https://github.com/decred/dcrdex/pull/1776>, <https://github.com/decred/dcrdex/pull/1799>) 137 138 - The server's markets table uses a larger integer for asset ID, which is important for eth-derived tokens. (<https://github.com/decred/dcrdex/pull/1621>) 139 140 - The server's swap checking has been updated to reduce lock contention. (<https://github.com/decred/dcrdex/pull/1563>) 141 142 - Revoked orders where the user was not at fault now correctly recognize that the user was not at fault. (<https://github.com/decred/dcrdex/pull/1707>) 143 144 - The 24hr price rate change calculation on the server has been fixed. (<https://github.com/decred/dcrdex/pull/1746>) 145 146 ## Developer 147 148 - Bitcoin Cash has switched from testnet3 to testnet4. Address string encoding/decoding is now consistent with the introduction of a custom address stringer. Previously the node was converting legacy addresses on the fly when retrieving private keys. (<https://github.com/decred/dcrdex/pull/1606>) 149 150 - The required Go versions are now 1.18 or 1.19. (<https://github.com/decred/dcrdex/pull/1519>, <https://github.com/decred/dcrdex/pull/1650>, <https://github.com/decred/dcrdex/pull/1753>, <https://github.com/decred/dcrdex/pull/1747>, <https://github.com/decred/dcrdex/pull/1774>) 151 152 - The required Node.js versions for building the frontend webpack bundle are now 16 and 18. (<https://github.com/decred/dcrdex/pull/1617>) 153 154 - The new btcsuite/btcd/btcec/v2 module is now used. (<https://github.com/decred/dcrdex/pull/1542>) 155 156 - Client `Core` methods to purge archived records. (<https://github.com/decred/dcrdex/pull/1475>, <https://github.com/decred/dcrdex/pull/1503>) 157 158 - The `core.Order` type now has a `SubmitTime` field. (<https://github.com/decred/dcrdex/pull/1667>) 159 160 - The frontend has been updated to Bootstrap 5. (<https://github.com/decred/dcrdex/pull/1487>) 161 162 - The frontend has migrated from JavaScript to TypeScript. (<https://github.com/decred/dcrdex/pull/1534>) 163 164 - The `dcr.Wallet` interface is refactored for the native DCR wallet. (<https://github.com/decred/dcrdex/pull/1510>, <https://github.com/decred/dcrdex/pull/1582>, <https://github.com/decred/dcrdex/pull/1588>) 165 166 - `server/wslink` now offers a `SendRaw` method. (<https://github.com/decred/dcrdex/pull/1532>) 167 168 - The version meta data is update to use a single Version string. (<https://github.com/decred/dcrdex/pull/1590>) 169 170 - Simnet test are made modular to support all assets, and a command line utility is created to run them. (<https://github.com/decred/dcrdex/pull/1603>, <https://github.com/decred/dcrdex/pull/1632>, <https://github.com/decred/dcrdex/pull/1740>) 171 172 - The loadbot utility now works with all markets. (<https://github.com/decred/dcrdex/pull/1656>, <https://github.com/decred/dcrdex/pull/1677>) 173 174 - Introduce a (*ConnectionMaster).ConnectOnce method, which terminates any background Connect retries if the first attempt fails. (<https://github.com/decred/dcrdex/pull/1616>) 175 176 - The ConnectionMaster has been redesigned, with the addition of a `Done() <-chan struct{}` method for waiting for disconnect on a channel rather than blocking on Wait(). (<https://github.com/decred/dcrdex/pull/1474>) 177 178 - Better npm script compatibility with Windows. (<https://github.com/decred/dcrdex/pull/1665>) 179 180 - If using the simnet-setup.sh script, a predetermined app seed will be used. (<https://github.com/decred/dcrdex/pull/1398>) 181 182 - The Decred simnet harness includes new node control helper scripts that are needed now that some of the wallets are SPV. (<https://github.com/decred/dcrdex/pull/1433>) 183 184 - The `encode` package's `UnixTimeMilli`, `UnixMilli`, and `UnixMilliU` functions have been removed in favor of the functionally equivalent functions in the "time" standard library. (<https://github.com/decred/dcrdex/pull/1668>) 185 186 - `gofmt` must be run with the `-s` (simplify) switch. (<https://github.com/decred/dcrdex/pull/1699>) 187 188 ## Ethereum 189 190 Extensive work and testing on Ethereum and token support has almost completely wrapped up. 191 192 Unfortunately, we are now waiting on a third-party update to the [`go-ethereum` light client software](https://github.com/ethereum/go-ethereum/tree/master/light) to support Ethereum after The Merge. All the pieces for ETH and ERC20 trading are in place, however, The Merge in September broke the upstream light client package from `go-ethereum`. This [must be updated](https://github.com/ethereum/go-ethereum/issues/25623) before we can continue to support light (LES) clients. In addition, The Merge creates a need for the full node for the server to run an additional consensus layer node on the server. The ETH release will hopefully be in several weeks. 193 194 <https://github.com/decred/dcrdex/pulls?q=is:pr+is:closed+label:ETH+milestone:0.5> 195 196 Audit result: <https://github.com/decred/dcrdex/pull/1643> 197 198 Testnet deployment: <https://github.com/decred/dcrdex/pull/1440>, <https://github.com/decred/dcrdex/pull/1550> 199 200 Solidity contract tweaks: <https://github.com/decred/dcrdex/pull/1455>, <https://github.com/decred/dcrdex/pull/1679> 201 202 Allow export of ETH wallet: <https://github.com/decred/dcrdex/pull/1648>, <https://github.com/decred/dcrdex/pull/1702> 203 204 Last client methods and refactoring: <https://github.com/decred/dcrdex/pull/1303>, <https://github.com/decred/dcrdex/pull/1301>, 205 206 Server validation of ETH-backed orders: <https://github.com/decred/dcrdex/pull/1293>, <https://github.com/decred/dcrdex/pull/1284> 207 208 Token work: <https://github.com/decred/dcrdex/pull/1394>, <https://github.com/decred/dcrdex/pull/1394>, <https://github.com/decred/dcrdex/pull/1402>, <https://github.com/decred/dcrdex/pull/1509>, <https://github.com/decred/dcrdex/pull/1523> 209 210 Test harness improvements: <https://github.com/decred/dcrdex/pull/1385>, <https://github.com/decred/dcrdex/pull/1476>, <https://github.com/decred/dcrdex/pull/1479>, <https://github.com/decred/dcrdex/pull/1490>, <https://github.com/decred/dcrdex/pull/1691>, <https://github.com/decred/dcrdex/pull/1722> 211 212 Fixes, miscellaneous improvements, and housekeeping: <https://github.com/decred/dcrdex/pull/1464>, <https://github.com/decred/dcrdex/pull/1306>, <https://github.com/decred/dcrdex/pull/1307>, <https://github.com/decred/dcrdex/pull/1309>, <https://github.com/decred/dcrdex/pull/1313>, <https://github.com/decred/dcrdex/pull/1391>, <https://github.com/decred/dcrdex/pull/1392>, <https://github.com/decred/dcrdex/pull/1397>, <https://github.com/decred/dcrdex/pull/1447>, <https://github.com/decred/dcrdex/pull/1465>, <https://github.com/decred/dcrdex/pull/1482>, <https://github.com/decred/dcrdex/pull/1552>, <https://github.com/decred/dcrdex/pull/1556>, <https://github.com/decred/dcrdex/pull/1593>, <https://github.com/decred/dcrdex/pull/1599>, <https://github.com/decred/dcrdex/pull/1626>, <https://github.com/decred/dcrdex/pull/1630>, <https://github.com/decred/dcrdex/pull/1642>, <https://github.com/decred/dcrdex/pull/1692>, 213 214 ## Build requirements 215 216 - Go 1.18 or 1.19 217 - Node 16 is the minimum supported version for building the site assets. 218 219 ## Code Summary 220 221 <https://github.com/decred/dcrdex/milestone/16?closed=1> 222 223 Full diff from v0.4.3: <https://github.com/decred/dcrdex/compare/v0.4.3..v0.5.0> 224 479 files changed, 65,781 insertions(+), 22,207 deletions(-) 225 226 contributors: 227 228 - Brian Stafford (@buck54321) 229 - David Hill (@dajohi) 230 - @iurii 231 - Joe Gruffins (@JoeGruffins) 232 - Jonathan Chappelow (@chappjc) 233 - @martonp 234 - Peter Banik (@peterzen) 235 - Victor Oliveira (@vctt94) 236 - Wisdom Arerosuoghene (@itswisdomagain) 237 238 Since the `release-v0.4` branch included many commits since it was branched from `master`, the list is approximate, using a reference commit on master around the time of the v0.4.3 release: [<https://github.com/decred/dcrdex/compare/32721d830bf233c35698eabe6e1d2df1ea887cb6...v0.5.0>)