DCRDEX v0.6.0
DCRDEX v0.6.0
April 4, 2023
Important Notices
UPGRADING: If updating from a previous version, you will not be able to open the upgraded dexc.db file in the previous version due to encoding changes. Make a backup if you wish to have the ability to go back to a v0.5.x release.
Zcash: If using an external Zcash wallet (with your own zcashd process), you must run zcashd with -allowdeprecated=getnewaddress -allowdeprecated=getrawchangeaddress
. A future DCRDEX patch release will provide full support to zcashd v5.4.2 without this flag.
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.
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:
- If using external wallets, never shut them down while dexc is running. Always stop dexc before stopping your wallets.
- If you have to restart dexc with active orders or swaps, you must immediately login again with your app password when dexc starts up.
- 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.
- 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.
- Order history is not synchronized between different client installations.
Highlights
- Add a native Bitcoin Cash SPV wallet. (#1635, https://github.com/dcrlabs/neutrino-bch)
- Add a native Litecoin SPV wallet. (#1750, https://github.com/dcrlabs/neutrino-ltc)
- Enable ETH and Ethereum ERC20 wallets and swapping. After the official light (LES) Ethereum client was broken upstream following The Merge in September 2022, we have switched to typical RPC providers for the wallet. See the wiki page for wallet setup information. There are too many commits to list, so see the pull requests with the
ETH
label on the 0.6 milestone. - Restyle the Markets page. The new style is responsive, with different layouts for various screen sizes. (#1825)
- Restyle the Wallets page. The new style is also responsive. (#1700)
- Replace the registration fee with fidelity bonds, which are time locked contracts redeemable by the user that created them. (#1818, #1819, #1820, #2036, #2103, #2025, #2169, #2200, #2196) See all PRs with the
bonds
label on the 0.6 milestone. - Add the ability to add a DEX host in "view-only" mode. (#1986)
- Add experimental market maker bot functionality, accessible via the UI. Requires the
--experimental
switch to enable. This is the framework for the future bot work starting with https://proposals.decred.org/record/8b1ceda. (#1738)
Minor New Features
- Certain wallets will now allow managing it's peers from the settings page. (49f2ab4)
- Show estimated transaction fees when preparing to send funds. (eecebf5)
- Addresses entered on the send form are validated while typing, before requesting the send. (15d1513, 70452f4)
- Allow disabling an existing wallet. (b50b92a, 3857b85, c33ffdf)
- Add a UI form to archive older order data. (9e50ede)
- Orders submission feels quicker, particularly when the funds pre-sizing option is enabled, since a placeholder order is immediately added to the Your Orders table with status "submitting" rather than waiting for it to be fully accepted by the DEX host. (a31c2cc, 80b0531)
- Show recent matches on the markets page. Requires an updated DEX host. (f9a565e, cc2830a, 94a9aef)
- While Login is processing, the frontend will display activity details. (265ec3b)
Updates and Fixes
- For each match, display the swap actions in temporal order. (841837b)
- Dynamically create and update match status cards on the Order Details page. (a461a3b, a58526b)
- Ethereum swap redeems are tracked through confirmation rather than broadcast. (3558be8, 877533f, 5fe7bec)
- For Ethereum where dynamic transaction fees are not realized until they are mined, update the actual fees for such transactions after they are mined. (274bc62, f4a0fec)
- Support using Electrum wallets other than the one named "default_wallet". (d233da7, ba711dc)
- Support Electrum wallets that have no password. (1c6241c)
- Active matches execute more quickly and robustly when the DEX host connection is down. Notably, the taker's automatic redeem may happen sooner. (ee9c630, f950443, 1352158, f23ab5c, 51ffbfc)
- The client will attempt to "blind cancel" unknown orders reported to it on DEX host connect. (881e720)
- Fix LTC wallets failing to process blocks or transactions with extreme witness data. (df3fa1b)
- Prevent multiple concurrent login requests. (54f3db3)
- Breaking Go API change: Split the
(*Core).Login
method into distinct actions, and remove the notifications return value, leaving just a singleerror
return. Add the new/api/getnotes
HTTP endpoint to retrieve older notifications that were previously returned by the Login method. (13758c0) - The client application recognizes when their own swap has been refunded already, recording the refund transaction and marking the swap completed. (31b9f6a, caa6858)
- Server API errors are displayed on the active submission form rather than the notification menu. (e9ef59e)
- Fix occasional gaps in the candlesticks chart. (4983866)
- Fix zero-quantity market orders appearing in Buy side of the order book, which were actually epoch status cancel orders. (c8db643)
- Work with dcrd versions 1.7 and 1.8. (dc5b827)
- The DCR wallets will now always use the "wrap" address policy instead of "ignore" to avoid creating difficult recovery situations. (3260736)
- Fix reorg handling with redemption search. (b251e04, 55fa127)
- No longer use
settxfee
when sending from BTC and clones. (15cd637) - Stop recognizing truncated message signatures that were previously sent by servers older than v0.5.0. (3cd4f10)
- Attempting logout when there are active orders results in an error message rather than just no action. (d46c4ba)
- Include locked amounts in ZEC balance. (b3fddff)
- More graceful handling of unknown responses by the client app. (0f69ee6)
- Fix a potential shutdown hang. (e4bdbf0)
- Wallet synchronization status fixes. (74edcb7, 79f7930)
- Resolve order status discrepancies between different views, such as on the order details page vs. markets page. (41639c1)
- Hide the accelerate swap button when it no longer applies. (eb0063d)
- The wallet "birthday" UI element is now local time. (660cfc7)
- Some "advanced" order options are now hidden by default. (964401b)
- Always show the pre-size funds order option, even when fee estimation fails. (8794bd2)
- The fiat value displayed when sending an amount now pertains to the total plus transaction fees. (8d11eee)
- The UI now stores the user's last selected market and wallet. (554e4b5)
- Fix an issue with the estimated savings/utility for order funds pre-sizing where it could show negative values in some cases. Always show the option, even when the backend decides it does not provide a savings. (5c511d4, 3ddf67a, 92239af)
- When an asset is not supported by the client, but a market with that asset exists, display a message in place of the order form on the markets page. (adc816d)
- Remove the legacy preimage handling. (dde6466)
- Performing a wallet restore operation will preserve wallet log file continuity. (572a8d6)
- The large warning on the order submission form may be hidden by a click. (6bb1eb5)
- Refactor and improve the external fee rate estimate code for other assets. (8ffb208, d060466)
- Test tools refactoring and improvement. (2294cae, 112f7ca, 367ea22, cca7f0a, a070a90)
- Default wallet options are used when left unspecified when configuring via RPC. (#1981, b991902)
- The asset "compatibility checks" used when adding a new asset are moved to the dex/networks package. (5cb7904, c960d55)
Translation
NOTE: Many of the translated text is out of date and will default to English. We hope to resolve this before v1.0.
- The translated html template files are now generated on the fly, and there is no longer an extra step of the build process. (feec471)
- Add a reporter for missing translation strings. (7389105)
- Add DE translations. (a733f83)
- Add AR translations. (f637495)
- More translated strings. (ccd4de0, 9103700, d606490, 0c1aaca, 884100b, ad4cfff)
Docs
- Move the docs to the wiki. (b7bbfaa, f71fd09, 179c176, 6edadcd, 7c48cce, 7291243, 7c48cce, 15063d8, 38fb1d4, 8a482dd)
- Fuzzing example and docs. (1a9240a)
- Lint Markdown files. (d36afca, 5e78c84)
- Add a short section to the readme about adding assets. (1e7b21a)
Build
- System tray builds are now part of the standard release builds for Windows. (a0ee939, 3a216ce)
- Updated backend dependencies: btcd, btcwallet, go-ethereum, etc. (bff0535, 1acf1cf, 4dc0bc4)
- Updated frontend and build system dependencies. (805d9bd, 2e00ff3, 4ee327b, 1d26996)
- Update CI. (281725b)
- Rewrite the package build script to use a loop over supported arch/os combinations. (29975ba)
Server
- Formalize free cancels based on the time since the order was booked. This causes an irreversible upgrade of the DB scheme. (f537f1c)
- Make the "transaction wait expiration" configurable. The default is unchanged. (0ad4a4d)
- If no epoch duration is specified in the config, the new default of 20 seconds is used. (76033bf)
- Recent matches are now reported in
epoch_report
notifications to clients that subscribe to order book updates. (f9a565e, cc2830a, 94a9aef) - Send revoke order notes when a market is suspended and orders purged. This ensures that clients with orders but no orderbook subscription will be informed of the action. Otherwise they will appear booked until reconnect. (c9b1aed)
- Server now sends a courtesy notification to the maker informing of the taker's redeem. The v0.6 client will recognize and record this information. (67d1181, 9913e2a)
- Startup now checks for the
txindex
setting for all applicable nodes. (cf6d205) - Use actual match rates rather than mid-book rate for candle start/end. (85c6673)
Build requirements
- Go 1.19 or 1.20
- (Optional) Node 16 or 18, for rebuilding the site assets. The frontend bundle is already included in the release branch.
Code Summary
https://github.com/decred/dcrdex/milestone/22?closed=1
Full diff from v0.5.9: v0.5.9...v0.6.0
502 files changed, 57634 insertions(+), 30646 deletions(-)
The above status are approximate since a number of commits were previously released on the v0.5 maintenance branch.
Contributors:
- Brian Stafford (@buck54321)
- David Hill (@dajohi)
- Dave Collins (@davecgh)
- Dominic Ting (@DominicTing)
- @iurii
- Joe Gruffins (@JoeGruffins)
- Jonathan Chappelow (@chappjc)
- @karamble
- @martonp
- @norwnd
- Peter Banik (@peterzen)
- Philemon Ukane (ukane-philemon)
- Victor Oliveira (@vctt94)
- Wisdom Arerosuoghene (@itswisdomagain)