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>)