Change Log
Introducing pivotal network enhancements to pave the way for an evolved DEX P2P network, Komodo DeFi Framework 2.0.0-beta marks a strategic step forward. This release not only streamlines network performance but also introduces a deflationary aspect to KMD, underscoring its utility and value in Komodo Platform's expanding ecosystem.
Features:
- KMD Burn:
- Burning 25% of the taker fee when paid in KMD was implemented by @onur-ozkan #2006
- Swap watcher nodes (only for UTXO/UTXO swaps):
- For UTXO/UTXO swaps, watcher nodes will either complete the swap for taker or refund the taker payment if the taker goes offline after sending their payment. This was implemented by @caglaryucekaya in #1457 #1496 #1523 #1552
- Using watcher nodes for swaps were enabled by default for UTXO/UTXO swaps by @caglaryucekaya. All nodes doing a swap will broadcast a watcher message after the taker payment is sent if both coins swapped are supported by watchers (currently only UTXO) #1859
Enhancements:
- Network Enhancements:
- P2P layer was upgraded to use the latest stable libp2p version by @onur-ozkan #1878
7777
network was deprecated by @onur-ozkan #2020.- Seednodes for
netid
8762
were updated by @smk762 #2024 libp2p-yamux
was updated by @onur-ozkan to use yamuxv0.13
(new version) by default and to fall back to yamuxv0.12
(old version) when setting any configuration options #2030- The backpressure buffer cap was increased from
25
to256
by @onur-ozkan #2030 - New protocol version (Version2) was added by @onur-ozkan to be used for peer exchange and request-response behaviours in #2030
- Network information is now written to stdout so users can find mm2 ports easily @onur-ozkan #2034
- NFT feature was released in v1.0.6-beta, this release adds significant enhancements to this feature:
version
method was added toPUBLIC_METHODS
that require no login by @smk762 #2001- An additional
PRICE_ENDPOINTS
url which is a cached copy ofhttps://prices.komodian.info/api/v2/tickers
and is updated every minute was added by @smk762 #2032
Bug Fixes:
- ARRR/Pirate:
- ARRR infrastructure for lightwallet servers uses a fork of
lightwalletd
, the grpc service was renamed by @smk762from cash.z.wallet.sdk.rpc
topirate.wallet.sdk.rpc
to use thelightwalletd
fork #1963 - Previous blocks/wallet sync was fixed by @borngraced to be resumed if
sync_params
are not provided after restart #1967
- ARRR infrastructure for lightwallet servers uses a fork of
- EVM web3 requests timeout was reduced to 20s by @shamardy #1973
- Fixed
0.0001
min threshold for TakerFee was removed by @shamardy #1971 - The minimum trading volume for evm and tendermint was changed to be the smallest possible amount of the coin by @shamardy #1971
- Minimum trading price was reduced by @shamardy to be any value above 0 #1971
Cryptocondition
script type was added to utxo transactions by @shamardy #1991- On response error the next web3 node is now tried @shamardy #1998
- Watchtower taker-side restart bug was fixed by @caglaryucekaya #1908
rpcport
value can now accept a string @shamardy #2026
7777
Network deprecation and the upgrade to a new p2p layer breaks compatibility with previous versions of Komodo DeFi Framework. Connections between nodes/clients running an older version of Komodo DeFi Framework and nodes/clients running this version will not be possible. To avoid this, all nodes/clients must be upgraded to the latest version of Komodo DeFi Framework.- Because of KMD burn of a part of the taker fee, the taker fee outputs for any
coin/KMD
swap are changed and makers running older versions will not be able to validate the taker fee, this will cause the swap to fail. This case will never happen anyway because older versions will not be able to connect to this latest version due to the network upgrade. - Because of the removal of the fixed 0.0001 min threshold for TakerFee, taker fee validation will also fail for these cases. Again, this case will never happen as the previous case.
Enhancements:
- Using a specific start date for Pirate/ARRR synchronization was added by @borngraced. This allows users to specify a specific date as the starting point for synchronization as a substitute for the checkpoint block from config or syncing from the first block #1922
Bug Fixes:
- PoSV coins withdrawal was fixed by @reddink. The issue was a missing n_time field in the generated transaction. The fix now correctly considers when n_time is required, and the rawtransaction can be broadcasted #1925
- Tendermint tests were fixed by @onur-ozkan by using latest relayer channel #1929
- Price service urls were updated by @smk762 #1928
- NFT transactions that transfer multiple NFT tokens were fixed in db by @shamardy. log_index is now used as part of the transfers history table primary key #1926
- A fix was introduced by @shamardy to use kmd rewards for fees if change + interest is below dust threshold #1944
- Debug info was removed from release binary by @onur-ozkan to reduce the file size #1954
- Failing tests due to BCHD were ignored by @shamardy #1955
New Features:
- NFT Wallet APIs for ERC721/ERC1155 tokens using Moralis Web3 was added by @laruh for multiple EVM chains to enable developers to access real-time NFT data and metadata from various blockchains without building their own backend services in #1652 #1704 #1775 #1817 #1823 #1833 #1877
Enhancements:
- HTTPS support was added for the RPC server by @shamardy in #1861
- Infrastructure DNS rotation for default seed nodes was done by @ca333 in #1868
- Price endpoints were updated by @laruh in #1869
- IBC and standard withdrawals for Cosmos now allow users to specify the gas price and gas limit for each transaction @ozkanonur #1894
- CI enhancements by @ozkanonur
- The time needed for CI completion was reduced by caching the downloaded dependencies in #1880
- Label validation on PRs was added. This validation will only succeed if one of the following labels is used but not both:
under review
orin progress
#1881 - A CI job was added to check if mm2 version was bumped before merging any pull request to main in #1899
- All CI tests now run with the
--no-fail-fast
flag, allowing other tests to proceed despite any failures #1907
Bug Fixes:
- Some RUSTSEC advisories were fixed by @ozkanonur in #1853
- Orderbook response now returns the right age for the age field, this was fixed by @rozhkovdmitrii in #1851
- A bug that caused
best_orders
rpc to returnis_mine: false
for the user's orders was fixed by @rozhkovdmitrii in #1849- An optional parameter
exclude_mine
was also added to thebest_orders
request that allows users to exclude their own orders from the response. exclude_mine
defaults to false to maintain the same behaviour before the PR.
- An optional parameter
- A fix removed the passed config string from the error logs during mm2 initialization if there was a deserialization error was done by @shamardy in #1872
- Index out of bounds errors in the
tx_details_by_hash
functions was fixed by @shamardy in #1915
- Deprecated
wasm-timer
dependency was removed from atomicDEX-API tree by @ozkanonur in #1836 log
,getrandom
andwasm-bindgen
dependencies were updated to more recent versions that are inline with the latest libp2p upstream by @ozkanonur in #1837- A CI lint pipeline was added that validates pull request titles to ensure that they comply with the conventional commit specifications by @ozkanonur in #1839
- KMD AUR were reduced from 5% to 0.01% starting at nS7HardforkHeight to comply with KIP-0001 by @shamardy in #1841
- Some enhancements were done for
enable_bch_with_tokens
,enable_eth_with_tokens
,enable_tendermint_with_assets
RPCs by @shamardy 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
- Passive parent coin state for keeping tokens active when platform is disabled was added by @ozkanonur in #1763
- Detection of a chain reorganization for SPV was added by @borngraced @shamardy. If a chain reorg occurs, the new best chain headers are re-downloaded and re-validated #1728
- Optimization of release compilation profile for mm2 was done by @ozkanonur in #1821
- PoSV support for UTXO coins was added by @reddink in #1815
- adex tool was introduced #1729
- bump mm2 to
v1.0.2-beta
#1743 - bump mm2 to
v1.0.3-beta
#1769 - [release] v1.0.3 #1771
- adex-cli command line utility was introduced that supplies commands: init, start, stop, status #1729
- 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
- 2 Update pirate & zombie domains for tests #1705
- 2 lock free avoid on account sequence problems #1694
- sec fixes, build-time optimizations, dependency optimizations, CI migration, etc #1699
- [release] 1.0.1-beta #1721
- 2 spv storage optimization #1 #1585
- [doc] update mobile build instructions #1661
- 2
disable_coin
should fail if there are tokens dependent on the platform #1651 - 2 fix vulnerable dependencies #1666
- Bugfix pubkey keepalive overflow and "forever orders" #1668
- 2 Hardware Wallet enhancements #1672
- 2 Complete MetaMask #1674
- Add workflow for VirusTotal results #1676
- 2 refactor version handling #1686
- [release] 1.0.0-beta #1576
- Don't respond to GetKnownPeers p2p msg if the number of peers requested exceeds the default number by @shamardy in #1445
- [r2r] Avoid deadlock on
DuplexMutex
by @sergeyboyko0791 in #1453 - [r2r] Mobile libs code fixes, build instructions and CI. by @artemii235 in #1463
- [r2r] hotfix: disallow withdraw to taproot addresses by @shamardy in #1503
- update cc and cmake dependencies to be compatible with Visual Studio … by @DeckerSU in #1532
- [r2r] Don't return an error if a UTXO coin is enabled with
trezor_coin
field by @sergeyboyko0791 in #1541
- Target-branch added for dependabot in mm2.1 by @laruh in #1426
- Skip orders not existing in orders_set instead of using expect. by @artemii235 in #1430
- Fix ARRR activation. More info to activation statuses. Check point block by @artemii235 in #1439
- [r2r] Implement tx history RPC for Zcoin (ARRR). by @artemii235 in #1336
- [r2r] No login mode by @caglaryucekaya in #1341
- [r2r] Fix for LBC block header deserializing bug by @borngraced in #1343
- Release SLP, WASM, Maker bot, QTUM delegation. by @artemii235 in #1184
- [r2r] Fix P2P OrdermatchRequest backward compatibility. by @artemii235 in #1406
- [WASM] Fixing, refactoring, and implementing P2P, IndexedDB, SwapLock, SavedSwap, MySwaps, MyOrdersStorage by @sergeyboyko0791 in #1007
- update_maker_order memory leak fix by @shamardy in #1068
- MVP swaps support for SLP tokens and PIRATE. by @artemii235 in #1067
- Upload release library to nightly server during CI build. by @sergeyboyko0791 in #1093
- Add SLP UTXOs validation using BCHD API. by @artemii235 in #1094
- simple market maker bot by @Milerius in #1066
- Enable 2.0 skeleton by @artemii235 in #1099
- Partial lightning network node implementation by @shamardy in #1103
- Use 'wss' P2P protocol instead of 'ws' by @sergeyboyko0791 in #1117
- Qtum delegation by @Milerius in #1096
- Slurp refactoring #914 by @sergeyboyko0791 in #1119
- Add gRPC-web support in WASM (BCHD API for SLP). by @artemii235 in #1127
- Next iteration of enable v2. Refactoring. Added enable_slp. by @artemii235 in #1130
- simple telegram client by @Milerius in #1114
- feat(lp_bot): use
other
for unknown variant in provider by @Milerius in #1140 - Implement enable_bch_with_tokens RPC. Refactoring by @artemii235 in #1145
- feat(lp_bot): cancel order on stopping mm2 context by @Milerius in #1143
- Fix hanging pointers #1158 by @sergeyboyko0791 in #1162
- Use parking lot mutex for maker orders by @shamardy in #1163
- Lightning Network Channels by @shamardy in #1133
- Add and implement a swap recoverer #1160 by @sergeyboyko0791 in #1164
- Trezor integration PoC by @sergeyboyko0791 in #1150
- Fix orders "leak" due to race condition. by @artemii235 in #1178
- Implement BCH and SLP tx history. Refactoring. by @artemii235 in #1175
- Fix recreating Taker swap data by @sergeyboyko0791 in #1191
- Optimize CI pipeline to run faster checks as a separate stage. by @artemii235 in #1192
- Update CI pipeline for MacOS. by @artemii235 in #1202
- Add
mm2_version
WASM foreign function by @sergeyboyko0791 in #1213 - Changes for Linux CI by @artemii235 in #1209
- Fix unstable test_update_maker_order_fail test by @shamardy in #1216
- Use komodod multiarch Docker image in tests. Do not build and upload libmm2 for desktop. by @artemii235 in #1214
- Implement requesting balances of HD wallet addresses by @sergeyboyko0791 in #1190
- Arrr integration WIP. by @artemii235 in #1204
- Expect larger integers on blockchain.scripthash.get_balance by @sergeyboyko0791 in #1218
- Add confirmation settings to orderbook by @shamardy in #1217
- Lightning payments by @shamardy in #1210
- Integrate HD account storage by @sergeyboyko0791 in #1223
- Spv proof by @Milerius in #1207
- Sync dev with mm2.1 by @Milerius in #1236
- Solana by @Milerius in #1109
- Provide podman compatibility by @ozkanonur in #1242
- update podman requirement by @ozkanonur in #1243
- Fix
coin
inrecover_funds_of_swap
RPC by @sergeyboyko0791 in #1249 - Simultaneous activation of coins in two modes (Iguana and Trezor) by @sergeyboyko0791 in #1227
- Add RPC call to get raw transaction encoded in hex by @hrmhatef in #1248
- provide custom swap locktime functionality by @ozkanonur in #1252
- [r2r] Add PR naming convention to the docs by @ozkanonur in #1257
- [r2r] add dependencies update note when basing branch on mm2.1 to the docs by @shamardy in #1261
- [r2r] impl get publickey hash rpc method by @borngraced in #1258
- [r2r] Update WASM docs, fix
my_recent_swaps
in WASM by @sergeyboyko0791 in #1264 - [r2r] ARRR integration WIP. by @artemii235 in #1237
- [r2r] Lightning channels and payments history by @shamardy in #1240
- [r2r] fix spv proof validation by @ozkanonur in #1268
- Update block headers in DB in case of a chain reorganization by @shamardy in #1276
- Store maker_coin_htlc_privkey and taker_coin_htlc_privkey as None by @artemii235 in #1277
- [r2r] broadcast tx to txhlp / refactor tx errors by @ozkanonur in #1245
- [r2r] Sign and verify messages by @caglaryucekaya in #1256
- [r2r] continuously push for playground nodes by @ozkanonur in #1280
- [r2r] UTXO RPC batch requests by @sergeyboyko0791 in #1255
- [r2r] overall refactoring by @ozkanonur in #1284
- [r2r] fix
MM_VERSION
path by @ozkanonur in #1296 - [r2r] Deps update by @artemii235 in #1294
- [r2r] update rust-lightning & remove bitcoin-spv crate from our deps tree by @shamardy in #1300
- Temporary ignore RUSTSEC-2020-0071 (time crate potential segfault). by @artemii235 in #1303
- update License GPLv3 by @ca333 in #1286
- [r2r] fixes incorrect coin type for rpc error by @borngraced in #1289
- Remove unused dependencies, add unused dependencies check step to CI by @shamardy in #1305
- [r2r] Impl storing Infos about fiat price to MM2.db on swap completion by @borngraced in #1282
- [r2r] fix nonce_lock problem by @laruh in #1306
- [r2r] HD wallet tx history by @sergeyboyko0791 in #1285
- [r2r] Implement ARRR swap in light mode. by @artemii235 in #1302
- [r2r] split qtum utxo by @laruh in #1313
- [r2r] Don't return Null on
my_recent_swaps
by @sergeyboyko0791 in #1317 - [r2r] Try to find
check_utxo_maturity
from the coins config by @sergeyboyko0791 in #1315 - update playground pipeline by @ozkanonur in #1323
- add commit prefix for playground node by @ozkanonur in #1325
- [r2r] Fix unstable test_get_channels_by_filter test by @shamardy in #1320
- [r2r] Get rid of fomat, wite macros by @sergeyboyko0791 in #1316
- [r2r] API call optimization by @caglaryucekaya in #1279
- [r2r] Fix rpc_password length constraints by @laruh in #1329
- [r2r] Allow bestorders RPC execution with number by @laruh in #1327
- [r2r] Remove outdated transactions from transaction history by @caglaryucekaya in #1328
- [r2r] Dependabot integration by @laruh in https://github.com...
- Hotfix for FIRO block header format (prog pow).
- hotfix for unknown destination address errors showing up by @shamardy in #1186
- Avoid log spam and malfunctioning electrums excessive reconnects #1193 #1161. by @artemii235 in #1194
- [wip] update readme by @ca333 in #1180
- Remove nxt arg from help by @tonymorony in #1199
- feat(firo_hot_fix): add support for prog pow by @Milerius in #1235