Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

chore(release): v2.2.0-beta #2197

Open
wants to merge 55 commits into
base: main
Choose a base branch
from
Open

chore(release): v2.2.0-beta #2197

wants to merge 55 commits into from

Conversation

shamardy
Copy link
Collaborator

@shamardy shamardy commented Aug 24, 2024

Features:

  • Connection Healthcheck
    • Connection healthcheck implementation for peers was introduced. #2194
  • Custom Tokens Activation
    • Support for enabling custom EVM (ERC20, PLG20, etc..) tokens without requiring them to be in the coins config was added. #2141
      • This allows users to interact with any ERC20 token by providing the contract address.

Enhancements/Fixes:

  • Trading Protocol Upgrade #1895
    • EVM TPU taker methods were implemented and enhancements were made to ETH docker tests. #2169
    • EVM TPU maker methods were implemented. #2211
  • NFT integration #900
    • Refund methods for NFT swaps were completed. #2129
    • token_id field was added to the tx history primary key. #2209
  • Graceful Shutdown
    • CTRL-C signal handling with graceful shutdown was implemented. #2213
  • Seed Management #1939
    • A new get_wallet_names RPC was added to retrieve information about all wallet names and the currently active one. #2202
  • Cosmos Integration #1432
    • Cosmos tx broadcasting error was fixed by upgrading cosmrs to version 15. #2238
    • Cosmos transaction history implementation was incorrectly parsing addresses (using the relayer address instead of the cross-chain address) from IBC transactions. The address parsing logic was fixed in #2245
  • Order Management
    • Cancel order race condition was addressed using time-based cache. #2232
  • Swap Improvements
    • A legacy swap issue was resolved where taker spent maker payment transactions were sometimes incorrectly marked as successful when they were actually reverted or not confirmed, particularly in EVM-based swaps. #2199
      • Two new events were added: "MakerPaymentSpendConfirmed" and "MakerPaymentSpendConfirmFailed"
    • A fix was introduced where Takers don't need to confirm their own payment as they can wait for the spending of it straight away. #2249
      • This invalidates this fix #1442, a better solution will be introduced where taker rebroadcasts their transaction if it's not on the chain.
    • A fix was introduced for recover funds for takers when the swap was marked as unsuccessful due to the maker payment spend transaction not being confirmed. #2242
      • The required confirmations from coin config for taker/maker payment spend are now used instead of using 1 confirmation max. This is because some chains require more than 1 confirmation for finality, e.g. Polygon.
  • Swap watchers #1431
    • Taker fee validation retries now work the same way as for makers. #2263
  • Electrum Client
    • Electrum client was refactored to add min/max connection controls, with server priority based on list order. #1966
    • Electrum client can now operate in single-server mode (1,1) to reduce resource usage (especially beneficial for mobile) or multi-server (legacy) mode for reliability.
    • Higher priority servers automatically replace lower priority ones when reconnecting during periodic retries or when connection count drops below minimum.
  • Coins Activation
    • EVM addresses are now displayed in full in iguana v2 activation response. #2254
  • HD Wallet #1838
    • Balance is now returned as CoinBalanceMap for both UTXOs and QTUM. #2259
      • This is to return the same type/json across all coins for GUIs since EVM uses CoinBalanceMap.
    • EVM addresses are displayed in full in get_new_address response after #2264
  • RPC Service
    • A fix was introduced to run rpc request futures till completion in #1966
      • This ensures RPC request futures complete fully even if clients disconnect, preventing partial state updates and maintaining data consistency.
  • Security Enhancements
    • Message lifetime overflows were added to prevent creating messages for proxy with too long lifetimes. #2233
    • Remote files are now handled in a safer way in CI. #2217
  • Build Process
    • wasm-opt overriding was removed. #2200
  • Escaped response body in native RPC was removed. #2219
  • Creation of the all-zeroes dir on KDF start was stopped. #2218
  • OPTIONS requests to KDF server were added. #2191

Removals:

  • Solana Support #1085
    • Solana implementation was removed until it can be redone using the latest Solana SDK. #2239
  • Adex-CLI #1682
    • adex-cli was deprecated pending work on a simpler, more maintainable implementation. #2234

Other Changes:

  • Documentation
    • Issue link in README was updated. #2227
    • Commit badges were updated to use dev branch in README. #2193
    • Leftover subcommands were removed from help message. #2235 #2270
  • Code Structure
    • lib.rs was replaced by mm2.rs as the root lib for mm2_main. #2178
  • Code Improvements
    • P2P feature was added to mm2_net dependency to allow the coins crate to be compiled and tested independently. #2210
    • Coins mod clippy warnings in WASM were fixed. #2224
    • Nonsense CLI arguments were removed. #2216
  • Tests
    • Tendermint IBC tests were fixed by preparing IBC channels inside the container. #2246
    • .wait() usage was replaced with block_on in tests to ensure consistent runtime usage, fixing issues with tokio TCP streams in non-tokio runtimes. #2220
    • Debug assertions for tests were enabled. #2204
    • More Sepolia test endpoints were added in #2262

NB - Backwards compatibility breaking changes:

  • RPC Renaming
    • get_peers_info RPC was renamed to get_directly_connected_peers. #2195
  • Cosmos Integration #1432
    • Updates to Tendermint activation payloads:
      • 'rpc_urls' field (previously a list of plain string values) is replaced with 'nodes' (a list of JSON objects). #2173
  • Komodo DeFi Proxy
    • All RPC methods fields controlling komodo-defi-proxy are renamed to 'komodo_proxy', affecting various activations, including ETH/EVM. #2173

laruh and others added 8 commits August 2, 2024 18:00
This commit does the following:
- Resolves issues with NFT swap_v2 tests on Geth.
- Updates NFT activation to utilize coins config.
- Moves authentication message from Body to Header in Quicknode HTTP requests.
- Adds optional `swap_v2_contracts` field for Ethereum platform coin activation.
Having lib.rs forced us to write #[path = 'file/path.rs'] directive for every module we define, even the trivial ones that didn't need no #[path].

This commit fixes this by setting mm2.rs as the root lib for mm2_main.
This commit does the following:
* Adds new signature algorithm for komodo-defi-proxy (coin-agnostic, pubkey-only mode)
* Refactors NFT and ETH proxy to use the new algorithm
* Implements proxy support for Tendermint (including WebSocket connections)

BREAKING CHANGES:
* Updates to Tendermint activation payloads:
  - 'rpc_urls' field (previously a list of plain string values) is replaced with 'nodes' (a list of JSON objects).
* All RPC methods fields controlling komodo-defi-proxy are renamed to 'komodo_proxy', this affects various activations, including ETH/EVM.
Signed-off-by: onur-ozkan <work@onurozkan.dev>
@shamardy shamardy added the in progress Changes will be made from the author label Aug 24, 2024
laruh and others added 21 commits August 30, 2024 12:51
This commit implements EVM TPU taker methods and adds some enhancements for eth docker tests.
This comit removes any sia lib related code from kdf and uses sia-rust repo as a dependency instead. `my_balance` is also implemented for siacoin in this commit.
This commit removes zcoin additional chain validation to turn on debug assertion.
This makes coins a separate crate that can be tested and checked separately.
…eers` (#2195)

`get_peers_info` RPC had a misleading name, it only returns the directly connected peers, not all network peers. This commit renames the RPC to `get_directly_connected_peers` which causes a breaking change.
KDF was creating the default all zeroes db dir on start which is not used, this commit fixes this.
Signed-off-by: onur-ozkan <work@onurozkan.dev>
Fixes an issue regarding a tokio tcp stream that breaks because it was spawned in a non-tokio runtime. the `.wait` methods were using a different runtime - from futures - to run the future. This commit uses `block_on(fut.compat())` from KDF's tokio runtime instead.
This commit introduces the `get_wallet_names` RPC method, which allows clients to retrieve information about all wallet names and the currently active one.
This commit updates GHA runners to use locked scripts rather than always using the latest one from the master branch. It also adds a new GHA helper/plugin to easily download files and verify their checksums.
This commit prevents creating messages for proxy with too long lifetimes.
…2199)

This fixes the issue where taker doesn't wait for maker payment spend confirmation. Two new events were added:
- "MakerPaymentSpendConfirmed": Success event, fired after "MakerPaymentSpent".
- "MakerPaymentSpendConfirmFailed": Error event, means that the taker spend maker payment transaction confirmation was failed.
@shamardy shamardy requested review from cipig and smk762 October 11, 2024 14:44
onur-ozkan and others added 4 commits October 18, 2024 00:28
…#2246)

Fixes the weird "expired channel" bug and re-enables ignored IBC tests.
There is no point to keep them in the project anymore.

Signed-off-by: onur-ozkan <work@onurozkan.dev>
DeckerSU
DeckerSU previously approved these changes Oct 24, 2024
Copy link
Collaborator

@DeckerSU DeckerSU left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

All new or updated dependencies have passed the security review. No explicit malicious elements were found.

Refactors electrum client to add min/max connection controls, with server priority based on list order. Electrum client can now operate in single-server mode (1,1) to reduce resource usage (especially beneficial for mobile) or multi-server (legacy) mode for reliability. Higher priority servers automatically replace lower priority ones when reconnecting during periodic retries or when connection count drops below minimum.
borngraced and others added 11 commits October 25, 2024 20:36
…2254)

Show full evm coins address in iguana v2 activation result instead of truncated address.
Organizes scattered P2P types and modules into a more suitable crate and makes them easier to maintain and accessible directly from the P2P layer
This commit fixes recover funds for taker when the swap was marked as unsuccessful due to the maker payment spend transaction not being confirmed. It also uses the required confirmations from coin config for taker/maker payment spend instead of using 1 confirmation max. This is because some chains require more than 1 confirmation for finality, e.g. Polygon.
This is to return the same type/json across all coins for GUIs since EVM uses `CoinBalanceMap`
Cosmos transaction history implementation was incorrectly parsing addresses (using the relayer address instead of the cross-chain address) from IBC transactions. This commit fixes the address parsing logic and adds test coverage for it.
…ce (#2209)

This commit also fixes `withdarw_erc1155` decimal issue.
onur-ozkan and others added 5 commits November 14, 2024 10:44
Signed-off-by: onur-ozkan <work@onurozkan.dev>
Adds support for enabling custom EVM (ERC20, PLG20, etc..) tokens without requiring them to be in the coins config. This allows users to interact with any ERC20 token by providing the contract address.
This also fixes propagation of health check messages.
Copy link
Collaborator

@DeckerSU DeckerSU left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The following new and updated crates were reviewed:

cosmos-sdk-proto  
cosmrs  
num-derive  
serde_spanned  
tendermint  
tendermint-config  
tendermint-proto  
tendermint-rpc  
toml  
toml_datetime  
toml_edit  
winnow  

No malicious components were found, so LGTM.

p.s. This review only covers the changed and newly introduced dependencies, as always, and does not include the mm2/kdf code itself.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
10 participants