Features:
- NFT integration #900
- UriMeta was added to get info from token uri, status and metadata in nft tx history #1823
Enhancements/Fixes:
- Deprecated
wasm-timer
dependency was removed from mm2 tree #1836 log
,getrandom
andwasm-bindgen
dependencies were updated to more recent versions that are inline with the latest libp2p upstream #1837- A CI lint pipeline was added that validates pull request titles to ensure that they comply with the conventional commit specifications #1839
- KMD AUR were reduced from 5% to 0.01% starting at
nS7HardforkHeight
to comply with KIP-0001 #1841
Features:
Enhancements/Fixes:
- Some enhancements were done for
enable_bch_with_tokens
,enable_eth_with_tokens
,enable_tendermint_with_assets
RPCs in #1762- A new parameter
get_balances
was added to the above methods requests, when this parameter is set tofalse
, balances will not be returned in the response. The default value for this parameter istrue
to ensure backward compatibility. - Token balances requests are now performed concurrently for the above methods.
- A new parameter
- Swap watcher nodes #1750
- PoC for ETH/UTXO and ERC20/UTXO swaps with rewards
- Improved protocol to let only the taker pay the reward
- Add passive parent coin state for keeping tokens active when platform is disabled #1763
- Optimize release compilation profile for mm2 #1821
- CI flows for
adex-cli
added #1818 - Detect a chain reorganization, if it occurs, redownload and revalidate the new best chain headers for SPV #1728
- Fix moralis request in wasm target, add moralis tests #1817
- PoSV support for UTXO coins was added in #1815
- Use a new testnet for ETH tests, reduce the amount of ETH and ERC20 tokens exchanged, use fixed addresses instead of one-time use random addresses, fix some existing bugs (KomodoPlatform#1828)
Features:
Enhancements/Fixes:
- cosmos/iris ethermint account compatibility implemented #1765
- p2p stack is improved #1755
- Validate topics if they are mixed or not.
- Do early return if the message data is not valid (since no point to iterate over and over on the invalid message)
- Break the loop right after processing any of
SWAP_PREFIX
,WATCHER_PREFIX
,TX_HELPER_PREFIX
topic.
- An issue was fixed where we don't have to wait for all EVM nodes to sync the latest account nonce #1757
- optimized dev and release compilation profiles and removed ci #1759
- fix receiver trade fee for cosmos swaps #1767
- All features were enabled to be checked under x86-64 code lint CI step with
--all-features
option #1760 - use OS generated secrets for cryptographically secure randomness in
maker_swap
andtendermint_coin::get_sender_trade_fee_for_denom
#1753
Features:
adex-cli
command line utility was introduced that supplies commands:init
,start
,stop
,status
#1729
Enhancements/Fixes:
- CI/CD workflow logics are improved #1736
- Project root is simplified/refactored #1738
- Created base image to provide more glibc compatible pre-built binaries for linux #1741
- Set default log level as "info" #1747
- Refactor
native_log
module #1751- implement stdout/err streaming to persistent file without dependencies
- Add new parameter
silent_console
to mm conf
Features:
- NFT integration
WIP
#900 - Swap watcher nodes #1431
- Watcher rewards for ETH swaps were added #1658
- Cosmos integration
WIP
#1432ibc_withdraw
,ibc_chains
andibc_transfer_channels
RPC methods were added #1636
- Lightning integration
WIP
#1045- rust-lightning was updated to v0.0.113 in #1655
- Channel
current_confirmations
andrequired_confirmations
were added to channel details RPCs in #1655 Uuid
is now used for internal channel id instead ofu64
#1655- Some unit tests were added for multi path payments in #1655
- Some unit tests for claiming swaps on-chain for closed channels were added in #1655, these unit tests are currently failing.
protocol_info
fields are now used to check if a lightning order can be matched or not in #1655- 2 issues discovered while executing a KMD/LNBTC swap were fixed in #1655, these issues were:
- When electrums were down, if a channel was closed, the channel closing transaction wasn't broadcasted. A check for a network error to rebroadcast the tx after a delay was added.
- If an invoice payment failed, retring paying the same invoice would cause the payment to not be updated to successful in the DB even if it were successful. A method to update the payment in the DB was added to fix this.
mm2_git
crate was added to provide an abstraction layer on Git for doing query/parse operations over the repositories #1636
Enhancements/Fixes:
- Use
env_logger
to achieve flexible log filtering #1725 - IndexedDB Cursor can now iterate over the items step-by-step #1678
- Uuid lib was update from v0.7.4 to v1.2.2 in #1655
- A bug was fixed in #1706 where EVM swap transactions were failing if sent before the approval transaction confirmation.
- Tendermint account sequence problem due to running multiple instances were fixed in #1694
- Maker/taker pubkeys were added to new columns in
stats_swaps
table in #1665 and #1717 - Get rid of unnecessary / old dependencies:
crossterm
,crossterm_winapi
,mio 0.7.13
,miow
,ntapi
,signal-hook
,signal-hook-mio
in #1710 - A bug that caused EVM swap payments validation to fail because the tx was not available yet in the RPC node when calling
eth_getTransactionByHash
was fixed in #1716.eth_getTransactionByHash
in now retried inwait_for_confirmations
until tx is found in the RPC node, this makes sure that the transaction is returned frometh_getTransactionByHash
later when validating. - CI/CD migrated from Azure to Github runners #1699
- CI tests are much stabilized #1699
- Integration and unit tests are seperated on CI stack #1699
- Codebase is updated in linting rules at wasm and test stack #1699
crossbeam
bumped to0.8
from0.7
#1699- Un-used/Unstable parts of mm2 excluded from build outputs which avoids mm2 runtime from potential UB #1699
- Build time optimizations applied such as sharing generics instead of duplicating them in binary (which reduces output sizes) #1699
RUSTSEC-2020-0036
,RUSTSEC-2021-0139
andRUSTSEC-2023-0018
resolved #1699- Enabled linting checks for wasm and test stack on CI #1699
- Release container base image updated to debian stable from ubuntu bionic #1699
- Fix dylib linking error of rusb #1699
OperationFailure::Other
error was expanded. New error variants were matched withHwRpcError
, so error type will beHwError
, notInternalError
#1719- RPC calls for evm chains was reduced in
wait_for_confirmations
function in #1724 - A possible endless loop in evm
wait_for_htlc_tx_spend
was fixed in #1724 - Wait time for taker fee validation was increased from 30 to 60 seconds in #1730 to give the fee tx more time to appear in most nodes mempools.
Features:
- ARRR integration #927:
- Tendermint integration #1432
- HD Wallet #740
- Hardware Wallet #964
- Implement TX history V2 for UTXO coins activated with a Hardware wallet #1467
- Fix KMD withdraw with Trezor #1628
task::get_new_address::*
RPCs were added to replace the legacyget_new_address
RPC #1672trezor_connection_status
RPC was added to allow the GUI to poll the Trezor connection status #1672
- Simple Payment Verification #1612
- New RPCs
- Lightning integration
WIP
#1045- rust-lightning was updated to v0.0.110 in #1452
- Inbound channels details was added to SQL channels history in #1339
- Blocking was fixed for sync rust-lightning functions that calls other I/O functions or that has mutexes that can be held for some time in #1452
- Default fees are retrieved from rpc instead of config when starting lightning #1452
- 0 confirmations channels feature was added in #1452
- An
update_channel
RPC was added that updates a channel that is open without closing it in #1452 - Lightning RPCs now use the
lightning::
namespace in #1497 TakerFee
andMakerPayment
swap messages were modified to include payment instructions for the other side, in the case of lightning this payment instructions is a lightning invoice #1497MakerPaymentInstructionsReceived
/TakerPaymentInstructionsReceived
events are added toMakerSwapEvent
/TakerSwapEvent
in #1497, for more info check this comment- Lightning swaps were implemented in #1497, #1557
- Lightning swap refunds were implemented in #1592
MakerPaymentRefundStarted
,TakerPaymentRefundStarted
,MakerPaymentRefundFinished
,TakerPaymentRefundFinished
events were added to swap error events in #1592, for more info check this comment- Enabling lightning now uses the task manager #1513
- Disabling lightning coin or calling
stop
RPC now drops theBackgroundProcessor
which persists the latest network graph and scorer to disk #1513, #1490 avg_blocktime
from platform/utxo coin is used for l2/lightning estimating of the number of blocks swap payments are locked for #1606
- MetaMask
WIP
#1167- Login with a MetaMask wallet #1551
- Check if corresponding ETH chain is known by MetaMask wallet on coin activation using
wallet_switchEthereumChain
#1674 - Refactor ETH/ERC20 withdraw taking into account that the only way to sign a transaction is to send it using
eth_sendTransaction
#1674 - Extract address's public key using
eth_singTypedDataV4
#1674 - Perform swaps with coins activated with MetaMask #1674
Enhancements/Fixes:
- Update
rust-web3
crate #1674 - Custom enum from stringify derive macro to derive From implementations for enums #1502
- Validate that
input_tx
is calling'receiverSpend'
ineth::extract_secret
#1596 - Validate all Swap parameters at the Negotiation stage #1475
- created safe number type castings #1517
- Improve
stop
functionality #1490 - A possible seednode p2p thread panicking attack due to
GetKnownPeers
msg was fixed in #1445 - NAV
cold_staking
script type was added to fix a problem in NAV tx history in #1466 - SPV was temporarily disabled in WASM in #1479
BTC-segwit
swap locktimes was fixed in #1548 by using orderbook ticker instead of ticker in swap locktimes calculations.- BTC block headers deserialization was fixed for version 4 and
KAWPOW_VERSION
in #1452 - Error messages for failing swaps due to a time difference between maker and taker are now more informative after #1677
- Fix
LBC
block header deserialization bug #1343 - Fix
NMC
block header deserialization bug #1409 - Refactor mm2 error handling for some structures #1444
- Tx wait for confirmation timeout fix #1446
- Retry tx wait confirmation if not on chain #1474
- Fix electrum "response is too large (over 2M bytes)" error for block header download #1506
- Deactivate tokens with platform coin #1525
- Enhanced logging in
spv
andrpc_client
mods #1594 - Update metrics related dep && refactoring #1312
- Fix rick and morty genesis block deserialization #1647
- In
librustzcash
bumpedbech32
to0.9.1
(which we already have in mm2, so we will not have 2 versions ofbech32
) - Use dev branch as a target branch for Dependabot #1424
- Fixed Zhtlc orders is_mine bug (orders had "is_mine":false) #1489
- Grouped SwapOps method arguments into new groups(structures) #1529
- Handling multiple rpcs optimization #1480
- Solana tests are disabled #1660
- Some of vulnerable dependencies(tokio, libp2p) are fixed #1666
- Add
mm2_stop
WASM FFI #1628 - Use
futures_timer
crate and fix some unstable tests #1511 - Fix
Timer::sleep_ms
in WASM #1514 - Fix a race condition in
AbortableQueue
#1528 - Spawn
process_json_request
so the RPC requests can be processed asynchronously #1620 - Fix
task::-::cancel
if the RPC task is an awaiting status #1582 disable_coin
should fail if there are tokens dependent on the platform #1651- Implement a repeatable future #1564
- Version handling was enhanced #1686
- Version of
mm2_bin_lib
from cargo manifest is now used for the API version --version
,-v
,version
arguments now print the mm2 version
- Version of
- Workflow for VirusTotal results was added to CI #1676
parity-ethereum
andtestcontainers-rs
crates from KomodoPlatform repo are now used #1690- Testnet node of atom was updated, RUSTSEC-2023-0018 was ignored #1692
- Timestamp value sent from the peer in
PubkeyKeepAlive
msg was ignored and the received timestamp was used instead #1668 - Change release branch from mm2.1 to main in CI #1697
- CHANGELOG.md was introduced to have a complete log of code changes #1680
- Small fixes #1518, #1515, #1550, #1657
NB - Backwards compatibility breaking changes:
- Because of #1548, old nodes will not be able to swap BTC segwit with new nodes since locktimes are exchanged and validated in the negotiation messages.