Essential New Features: Trading Protocol Upgrade, HD Wallet, Event Streaming, and Seeds Management
This release introduces a range of significant features designed to enhance the framework’s capabilities. The trading protocol has been upgraded to boost the security and reliability of swaps. HD Wallets have been integrated to enhance privacy and streamline address management for both UTXO and EVM chains. Event Streaming has been implemented to provide clients with real-time balance updates, with more real-time events planned for future updates. Seed Management has been enhanced to ensure robust seed generation and storage. These features are complemented by advancements in the NFT feature, expanded chain support for Trezor, fee improvements, ARRR/Pirate support in browser environments, and updates to the Tendermint protocol that facilitate integration with external wallets.
Release Notes
Features:
-
Trading Protocol Upgrade:
- A major upgrade to the trading protocol (enabled with
"use_trading_proto_v2": true
) was implemented by @artemii235 in several PRs. This upgrade is currently available only for UTXO/UTXO swaps. All other swap types are not yet supported with this new protocol.
Click to expand details
- This upgrade introduces significant enhancements:
- Immediate refund handling for taker payments, including DEX fee refunds, and subsequent immediate maker payment refunds, effectively solving maker/taker backout issues.
- New RPCs:
my_swap_status
,my_recent_swaps
, andactive_swaps
V2. - Upgraded swap data is also accessible through V1 RPCs.
- Important note: Seednodes must be updated to support and rebroadcast new swap protocol messages.
- A major upgrade to the trading protocol (enabled with
-
HD Wallet:
- HD wallet functionalities were fully implemented by @shamardy for UTXO and EVM coins, allowing users to enable the feature with
"enable_hd": true
. For Tendermint and Pirate coins, only a single address is supported, following the BIP32/39/44 standards.
Click to expand details
- This implementation simplifies the process of importing mnemonics from other wallets into the Komodo DeFi Framework (KDF), enabling users to retain their balances, transaction history, and more.
- Users can now manage multiple addresses for UTXO and EVM coins, enhancing flexibility and control. The
path_to_address
parameter was added to coin activation requests to set the default account'/change/address_index path used for swaps. If not provided, the default path will be 0'/0/0. - HD withdrawals from any account'/change/address_index path were added for UTXO, EVM, Tendermint, and ARRR coins.
- Address scanning for balances is supported through the
scan_for_new_addresses
RPC, and users can manage their HD wallet with new RPCs such asaccount_balance
,get_new_address
, andcreate_new_account
. - These RPCs (
scan_for_new_addresses
,account_balance
,get_new_address
, andcreate_new_account
) can be managed through the task manager usingtask::<rpc-name>::(init, cancel, status)
. - For full HD wallet functionalities, including balance scanning and withdrawals, use task manager-enabled methods like
task::enable_eth::init
,task::enable_qtum::init
,task::enable_utxo::init
,task::enable_erc20::init
, and manage tasks throughtask::<rpc-name>::(init, cancel, status)
. - Task manager withdrawals are also supported using
task::withdraw::init
.
- HD wallet functionalities were fully implemented by @shamardy for UTXO and EVM coins, allowing users to enable the feature with
-
Event Streaming:
- Streaming channels using Server-Sent Events (SSE) to continuously send data to clients were implemented by @onur-ozkan in several PRs. This feature supports various event types, including P2P network events, coin balance events, error events, and heartbeat events.
Click to expand details
- P2P network events: Streaming real-time updates about the network status.
- Coin balance events: For UTXOs, EVM, ARRR/Pirate by @borngraced, and Tendermint Protocols, providing continuous balance updates.
- Error events: Emitted when there's an error in generating an event, ensuring robust monitoring.
- Heartbeat events: Periodic notifications about the health of the streaming channel.
- For WebAssembly (Wasm), event streaming uses Shared Workers instead of SSE, enabling a more flexible and efficient event handling mechanism.
- SharedWorker support was added, allowing any worker path in
event_stream_configuration
, with a default toevent_streaming_worker.js
. - To handle broadcasted messages from the client side, an event listener must be implemented within the client browser environment to capture and process these events as they are streamed.
- SharedWorker support was added, allowing any worker path in
- To utilize this feature, the
event_stream_configuration
needs to be added to the KDF config before starting.
-
Seed Management:
- Seed generation, encryption, and storage were implemented by @shamardy, introducing secure methods for seed handling, including strong encryption and key derivation techniques.
Click to expand details
- Introduced a new
get_mnemonic
API for retrieving mnemonics as plaintext or encrypted. - Added support for a
wallet_name
parameter in the configuration, enabling KDF to handle seed management.- If
wallet_name
is used,wallet_password
must be provided, allowing for encrypted storage and retrieval of mnemonics. - If no mnemonic is provided, a new one is generated, encrypted, and stored.
- Existing mnemonics can be imported and encrypted, or mnemonics can be imported in an encrypted format.
- If
- Introduced a global database for storing encrypted mnemonics and wallet names, separate from individual wallet-specific databases.
- Seed management is fully integrated within KDF when
wallet_name
config parameter is used, bypassing the need for external mnemonic handling.
NB - Backwards compatibility breaking changes
- The
mm2
binaries have been renamed tokdf
, with backward-compatible copies provided formm2
naming. However, WASM binaries use thekdf
naming only, which is a breaking change. #2126 by @shamardy
New Contributors
- @mariocynicys made their first contribution in #2061
- @r2st made their first contribution in #2091
- @CharlVS made their first contribution in #2163
Full Changelog: v2.0.0-beta...v2.1.0-beta
Enhancements:
Click to expand
- KMD Burn:
- KMD dex fee burn for upgraded swaps was added. #2046 by @artemii235
- Network Enhancements:
- Hardware Wallet:
- Trezor now supports SegWit for withdrawals. #1984 by @dimxy
- Trezor support was added for EVM coins/tokens using task manager activation methods. #1962 by @dimxy
- Support for unsigned Tendermint transactions using Ledger's Keplr extension was added, excluding HTLC transactions and swap operations. #2148 by @onur-ozkan
- NFT Integration:
- Simple Maker Bot:
- Swap Stats DB:
stats_swaps
table now includes GUI and KDF version data used for a swap. #2061 by @mariocynicys
- P2P Layer:
- Added
max_concurrent_connections
to KDF config to control the maximum number of concurrent connections for Gossipsub. #2063 by @onur-ozkan
- Added
- ARRR/Pirate:
- ARRR/Pirate wallet and Dex operations now work in browser environments/WASM. #1957, #2077 by @borngraced
- Syncing and activation improvements were made, including stopping sync status after main sync and refining
first_sync_block
handling. #2089 by @borngraced
- EVM Transport:
- ETH websocket transport was introduced, and
komodo-defi-proxy
signed messages were supported for websocket transport. #2058 by @onur-ozkan
- ETH websocket transport was introduced, and
- Tendermint Integration:
- Nucleus chain support was introduced as an alternative HTLC backend to Iris. #2079 by @onur-ozkan
- Pubkey-only mode for Tendermint protocol was introduced, allowing use of any external wallet for wallet and swap operations. #2088 by @onur-ozkan
ibc_withdraw
RPC was removed, andwithdraw
was refactored to support IBC transfers by automatically finding IBC channels. #2088 by @onur-ozkan
- Fees Improvements:
- Rust Toolchain:
- Toolchain was upgraded to Rust toolchain version 1.72 nightly (nightly-2023-06-01). #2149 by @onur-ozkan
rust-analyzer
was added into the workspace toolchain. #2179 by @onur-ozkan
- CI Builds:
- Implemented root application directory
.kdf
under$HOME
to consolidate all runtime files, enhancing user experience by following standard UNIX practices. #2102 by @onur-ozkan - Swaps and orders file handling was enhanced to use
.tmp
files to avoid concurrent reading/writing issues. #2118 by @dimxy - UTXO P2PK balance is now shown as part of the P2PKH/Legacy address balance and can be spent in withdrawals and swaps. #2053 by @mariocynicys
Bug Fixes:
Click to expand
- Additional checks were added for malicious
token_uri
links. #2100 by @laruh - Improved environment detection to ensure the correct method is used for accessing the IndexedDB factory, accommodating both window and worker contexts. #1953, #2131 by @onur-ozkan @borngraced
- Cursor implementation was fixed, ensuring stable iteration over items. #2028 by @borngraced
- Tendermint Integration:
- Tendermint fee calculation was fixed to use
get_receiver_trade_fee
in platform coins. #2106 by @onur-ozkan - Transaction history handling was enhanced to support base64 encoded transaction values for Cosmos-based networks, preventing missing transactions in the history table. #2133 by @onur-ozkan
- The precision of max amount handling was improved for Tendermint withdraw operations by simulating the transaction and removing the estimated fee. #2155 by @onur-ozkan
- Account sequence numbers are now resolved locally, avoiding incorrect sequence numbers from cached responses. #2164 by @onur-ozkan
- Tendermint fee calculation was fixed to use
- Swap Watchers:
- BCH block header deserialization was fixed to match BTC's handling of
KAWPOW
version headers. #2099 by @shamardy wallet-only
restriction was removed frommax_maker_vol
RPC, enabling its use for wallet-only mode assets. #2153 by @onur-ozkan
Checksum & VirusTotal Analysis:
Link | SHA256 |
---|---|
mm2-35e923949-Darwin-Release.zip | 71dd75505781d531fd1b4e2621b91aeee253ff6ac8501059773a9a82452a5b3f |
mm2-35e923949-Linux-Release.zip | 8993a0d31ef7a3554089be77b0c587bae3e7a1aa075bd1ca9ae6db6b96ae0c31 |
mm2-35e923949-Win64.zip | 27a4b10b4016d3ef04989b9b1ad8bb94db503efe50edac9e259482fff84e4213 |
mm2-35e923949-android-aarch64-CI.zip | 37ef40e6b5d2a91c24d097ccbe4ac7e29e1dc65aa3940d93b5530fc54aac5577 |
mm2-35e923949-android-armv7-CI.zip | 51c15be880abeddf24c34e5c802fd0a1ebacc7acde87b686f15bffabb1ae836d |
mm2-35e923949-ios-aarch64-CI.zip | e44e3dd81b35e739afce30628373ac4e9dc85e665954f2084725ca9a45678b77 |
mm2_35e923949-wasm.zip | b29dd447cbc6a116c31cac8e222732e74b9cc28bbd43cb0e141ccced9c75492b |
This release was signed by https://keybase.io/deckersu (GPG fingerprint: FD9A 772C 7300 F4C8 94D1 A819 FE50 4808 62E6 451C
).