-
Notifications
You must be signed in to change notification settings - Fork 94
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
Cosmos integration. #1432
Comments
* Got balance of arbitrary address. * Checked balance of address that has IBC asset in addition to ATOM. * Activated testnet ATOM and got correct balance. * Withdraw WIP. * Made a first testnet withdraw. * WIP. Preparing for tendermint rpc support under WASM. * WIP. Added WASM. Got rid of unwrap. Started using account sequence in withdraw. * Finalize PoC. * Add my_balance RPC test for ATOM. * Use constants for header names and values. start_history_background_fetching unimplemented for tendermint. * Review fixes + reorder lp_coins imports. * Add TIMEOUT_HEIGHT_DELTA. * Add multiple rpc_urls support TODO. * Fixes after merge. * Use opt-level = 2 for release profile. Co-authored-by: Artem Vitae <artem@vitae.com>
I've made a brief research on atomic swaps support on Cosmos, discovered the following:
According to this, to swap the native ATOM, we will need to perform IBC transfer of it to one of these chains, lock there, and IBC back to Cosmos Hub when the swap is completed. It will require users to also have a native asset of the specific blockchain (e.g. IRIS) to pay IBC transfers fees, which might be inconvenient from an UX perspective. Though, I've not figured out a better solution for this yet. @ozkanonur I think the plan is as follows for you:
|
@ozkanonur As you finished HTLC PoC for IRIS and tokens, we can proceed with further steps. For now, we can implement IRIS swaps and consider creating our own HTLC-enabled chain later (approved by @tonymorony and @ca333). It would be perfect to also demo IBC Atom swap in the coming two weeks, though I'm unsure if it's really feasible. As per implementation, you can create a test similar to https://github.com/KomodoPlatform/atomicDEX-API/blob/c7dde3a0aeff113db4ba58cbfaa4da6926cd9612/mm2src/mm2_main/src/mm2_tests.rs#L963 to start the swap. You will get Please let me know if you need any assistance with it 🙂 |
* create iris coin instance and execute `my_balance` Signed-off-by: Onur Özkan <work@onurozkan.dev> * save development state Signed-off-by: Onur Özkan <work@onurozkan.dev> * implement htlc for iris network Signed-off-by: Onur Özkan <work@onurozkan.dev> * implement `hash_lock` generation in p.o.c test Signed-off-by: Onur Özkan <work@onurozkan.dev> * save htlc claiming P.O.C state Signed-off-by: Onur Özkan <work@onurozkan.dev> * update target address for htlc transactions Signed-off-by: Onur Özkan <work@onurozkan.dev> * save htlc p.o.c(on IBC asset) work state Signed-off-by: Onur Özkan <work@onurozkan.dev> * add doc-comments to iris/htlc.rs Signed-off-by: Onur Özkan <work@onurozkan.dev> * save development state Signed-off-by: Onur Özkan <work@onurozkan.dev> * save development state Signed-off-by: Onur Özkan <work@onurozkan.dev> * save development state Signed-off-by: Onur Özkan <work@onurozkan.dev> * update structs privacy of iris/htlc module Signed-off-by: Onur Özkan <work@onurozkan.dev> * apply some beauty Signed-off-by: ozkanonur <work@onurozkan.dev> * Exclude p.o.c derive attributes that are no longer required Signed-off-by: ozkanonur <work@onurozkan.dev> * update annotation style Signed-off-by: ozkanonur <work@onurozkan.dev> * fix code formatting Signed-off-by: ozkanonur <work@onurozkan.dev> * fix review notes Signed-off-by: ozkanonur <work@onurozkan.dev> * make `any_to_signed_raw_tx` sync Signed-off-by: ozkanonur <work@onurozkan.dev> * drop mutability of `hash_lock_hash` Signed-off-by: Onur Özkan <work@onurozkan.dev> * fix review note Signed-off-by: Onur Özkan <work@onurozkan.dev> Signed-off-by: Onur Özkan <work@onurozkan.dev> Signed-off-by: ozkanonur <work@onurozkan.dev>
* create iris coin instance and execute `my_balance` Signed-off-by: Onur Özkan <work@onurozkan.dev> * save development state Signed-off-by: Onur Özkan <work@onurozkan.dev> * implement htlc for iris network Signed-off-by: Onur Özkan <work@onurozkan.dev> * implement `hash_lock` generation in p.o.c test Signed-off-by: Onur Özkan <work@onurozkan.dev> * save htlc claiming P.O.C state Signed-off-by: Onur Özkan <work@onurozkan.dev> * update target address for htlc transactions Signed-off-by: Onur Özkan <work@onurozkan.dev> * save htlc p.o.c(on IBC asset) work state Signed-off-by: Onur Özkan <work@onurozkan.dev> * add doc-comments to iris/htlc.rs Signed-off-by: Onur Özkan <work@onurozkan.dev> * save development state Signed-off-by: Onur Özkan <work@onurozkan.dev> * save development state Signed-off-by: Onur Özkan <work@onurozkan.dev> * save development state Signed-off-by: Onur Özkan <work@onurozkan.dev> * update structs privacy of iris/htlc module Signed-off-by: Onur Özkan <work@onurozkan.dev> * apply some beauty Signed-off-by: ozkanonur <work@onurozkan.dev> * Exclude p.o.c derive attributes that are no longer required Signed-off-by: ozkanonur <work@onurozkan.dev> * update annotation style Signed-off-by: ozkanonur <work@onurozkan.dev> * fix code formatting Signed-off-by: ozkanonur <work@onurozkan.dev> * fix review notes Signed-off-by: ozkanonur <work@onurozkan.dev> * make `any_to_signed_raw_tx` sync Signed-off-by: ozkanonur <work@onurozkan.dev> * drop mutability of `hash_lock_hash` Signed-off-by: Onur Özkan <work@onurozkan.dev> * fix review note Signed-off-by: Onur Özkan <work@onurozkan.dev> Signed-off-by: Onur Özkan <work@onurozkan.dev> Signed-off-by: ozkanonur <work@onurozkan.dev>
Checklist for the future:
|
* save development state Signed-off-by: ozkanonur <work@onurozkan.dev> * save dev state Signed-off-by: ozkanonur <work@onurozkan.dev> * save dev state Signed-off-by: Onur Özkan <work@onurozkan.dev> * save dev state Signed-off-by: Onur Özkan <work@onurozkan.dev> * IBC asset boilerplate. IRIS + USDC single RPC activation test WIP. * save dev state Signed-off-by: ozkanonur <work@onurozkan.dev> * save dev state Signed-off-by: Onur Özkan <work@onurozkan.dev> * save dev state Signed-off-by: ozkanonur <work@onurozkan.dev> * save dev state Signed-off-by: ozkanonur <work@onurozkan.dev> * WIP. Activation in progress. * save dev state Signed-off-by: ozkanonur <work@onurozkan.dev> * save dev state Signed-off-by: Onur Özkan <work@onurozkan.dev> * save todo notes Signed-off-by: ozkanonur <work@onurozkan.dev> * IRIS + USDC activation done. Always set MsgCreateHtlc::timestamp to 0. Pass secret hash directly. * save dev state Signed-off-by: ozkanonur <work@onurozkan.dev> * Add sleep to wait_for_taker_payment_spend to test. * save dev state Signed-off-by: ozkanonur <work@onurozkan.dev> * Display correct address for Tendermint related orders. * save dev state Signed-off-by: Onur Özkan <work@onurozkan.dev> * save dev state (integration test now passes) Signed-off-by: ozkanonur <work@onurozkan.dev> * Add test that finds HTLC claim tx by HLTC id and extracts secret successfully. * calculate amount Signed-off-by: ozkanonur <work@onurozkan.dev> * save dev state Signed-off-by: ozkanonur <work@onurozkan.dev> * Implement wait_for_tx_spend with test. * implement `fn extract_secret` Signed-off-by: ozkanonur <work@onurozkan.dev> * fix clippy errors Signed-off-by: ozkanonur <work@onurozkan.dev> * Fixed WASM compilation. * Enable WASM tests on iris-swap-poc temporarily. * handle errors/panics Signed-off-by: ozkanonur <work@onurozkan.dev> * Added SecretHashAlgo and made SHA256 default temporarily. * Lock sequence_lock in swap payments methods. NIMDA/RICK swap fails. Temporarily remove is_tx_not_found_error check. * Swap with UTXO works, but having issues with sequence on concurrent txs sending. * WIP. Swaps fail. * Refactor IBC -> TENDERMINTTOKEN. Make USDC and NIMDA TENDERMINTTOKEN in tests. * Fix tests compilation. * Pass secret hash as argument to HTLC spending methods. * Temporarily return error from TendermintToken::withdraw (not implemented). * Fix compilation. * Additional logs in tests. * implement `enable_tendermint_token` endpoint Signed-off-by: ozkanonur <work@onurozkan.dev> * WIP. Adding ETH swaps support with sha256 secret hash. * implement `tendermint_token::withdraw` and write unit test for withdraw&token activation Signed-off-by: ozkanonur <work@onurozkan.dev> * Add USDC-IBC-IRIS/tBNB to swaps test. Successful. * support multiple rpc_urls Signed-off-by: ozkanonur <work@onurozkan.dev> * fix wasm test Signed-off-by: ozkanonur <work@onurozkan.dev> * fix `fmt` error Signed-off-by: ozkanonur <work@onurozkan.dev> * save dev state Signed-off-by: ozkanonur <work@onurozkan.dev> * provide wasm compatibility Signed-off-by: ozkanonur <work@onurozkan.dev> * Hotfix for orderbook and best orders v2 RPCs. * [cosmos] increase tendermint fee * increase fees Signed-off-by: Onur Özkan <work@onurozkan.dev> * save dev state Signed-off-by: ozkanonur <work@onurozkan.dev> * save dev state Signed-off-by: ozkanonur <work@onurozkan.dev> * reduce time blocking Signed-off-by: ozkanonur <work@onurozkan.dev> * Fixes after merge. * Fix some tests. * WIP. Iris dex fee validation. Swaps can fail! * Fix clippy. * WIP. Dex fee validation. Swaps work. * save fee calculation dev state Signed-off-by: ozkanonur <work@onurozkan.dev> * update `fn calculate_fee` Signed-off-by: ozkanonur <work@onurozkan.dev> * implement dynamic fee calculation via tx simulation Signed-off-by: ozkanonur <work@onurozkan.dev> * implement dynamic fee calculation on tendermint token and move `uuid` to shared dependency section Signed-off-by: ozkanonur <work@onurozkan.dev> * implement missing parts of fee calculation Signed-off-by: ozkanonur <work@onurozkan.dev> * WIP. HTLC validation. * WIP. Queried HTLC successfully. * WIP. Payment validation done for now. Swaps work. * Remove some #[allow(unused_variables)]. Impl get_public_key. * Impl get_raw_transaction. * make gas price as configurable Signed-off-by: ozkanonur <work@onurozkan.dev> * save TODO notes for avg block time that will be used for time_lock calc Signed-off-by: ozkanonur <work@onurozkan.dev> * save dev state of time_lock calculation Signed-off-by: Onur Özkan <work@onurozkan.dev> * refactor time_lock calculation Signed-off-by: ozkanonur <work@onurozkan.dev> * fix wasm compilation Signed-off-by: ozkanonur <work@onurozkan.dev> * Add TODO title on p.o.c implementations Signed-off-by: ozkanonur <work@onurozkan.dev> * implement `fn check_if_my_payment_sent` Signed-off-by: ozkanonur <work@onurozkan.dev> * provide wasm compatibility for `fn check_if_my_payment_sent` Signed-off-by: ozkanonur <work@onurozkan.dev> * provide Abci paths as constants Signed-off-by: Onur Özkan <work@onurozkan.dev> * rollback wasm pipeline diff Signed-off-by: ozkanonur <work@onurozkan.dev> * support `memo` field for withdraws Signed-off-by: ozkanonur <work@onurozkan.dev> * downgrade visibility of `TX_DEFAULT_MEMO` Signed-off-by: ozkanonur <work@onurozkan.dev> * use `TX_DEFAULT_MEMO` if memo is None for withdraws Signed-off-by: ozkanonur <work@onurozkan.dev> * Fix few minor notes. * use constants for ABCI request defaults Signed-off-by: Onur Özkan <work@onurozkan.dev> * fix some review notes Signed-off-by: Onur Özkan <work@onurozkan.dev> * fix some reivew notes Signed-off-by: Onur Özkan <work@onurozkan.dev> * update `tendermint_token::check_if_my_payment_sent` Signed-off-by: Onur Özkan <work@onurozkan.dev> * fix some PR notes Signed-off-by: Onur Özkan <work@onurozkan.dev> * Stop ignoring some tests. * create `MIN_TX_SATOSHIS` for tendermint Signed-off-by: Onur Özkan <work@onurozkan.dev> * Fix some error mappings to avoid using empty ticker. * Implement new trait methods after other PRs merge. * refactor `fn check_if_my_payment_sent` Signed-off-by: Onur Özkan <work@onurozkan.dev> * fix lint error Signed-off-by: Onur Özkan <work@onurozkan.dev> * return `None` if can't find htlc in `fn check_if_my_payment_sent` Signed-off-by: Onur Özkan <work@onurozkan.dev> * add fixes and optimizations Signed-off-by: ozkanonur <work@onurozkan.dev> * fix some notes Signed-off-by: Onur Özkan <work@onurozkan.dev> * return error instead of `None` on error code Signed-off-by: ozkanonur <work@onurozkan.dev> * fix fmt Signed-off-by: Onur Özkan <work@onurozkan.dev> * Fixes after merge. * fix compilation error for tests Signed-off-by: ozkanonur <work@onurozkan.dev> * update condition comment Signed-off-by: ozkanonur <work@onurozkan.dev> * Fix extremely long-running eth_tests. * Fix tendermint_coin_tests::validate_payment_test. * Fix more tests. Signed-off-by: ozkanonur <work@onurozkan.dev> Signed-off-by: Onur Özkan <work@onurozkan.dev> Co-authored-by: Artem Vitae <ortgma@gmail.com> Co-authored-by: Artem Vitae <artem@vitae.com> Co-authored-by: Anton TonyL Lysakov <tlysakov@gmail.com> Co-authored-by: Artem Vitae <email@not.set>
…1527) * Implement methods used in recover_funds_of_swap for Tendermint. Also implemented validate_address. Add dummy error return for others to avoid occasional panics. * Review fix. * Ignore test_spl_transactions. Co-authored-by: Artem Vitae <email@not.set>
* increase simulated gas to predict better values for real tx operations Signed-off-by: Onur Özkan <work@onurozkan.dev> * remove couple TODO notes and impelement `lp_coins::wait_for_confirmations` for tendermint Signed-off-by: Onur Özkan <work@onurozkan.dev> * create new fn `tendermint_coin::get_tx_status_code_or_none` Signed-off-by: Onur Özkan <work@onurozkan.dev> * if no `gui_auth` was given, consider it as `false` Signed-off-by: ozkanonur <work@onurozkan.dev> * implement `get_sender_trade_fee` Signed-off-by: ozkanonur <work@onurozkan.dev> * implement `trade_fee` functionalities for cosmos Signed-off-by: ozkanonur <work@onurozkan.dev> * group wasm and native rpcs under the rpc mod Signed-off-by: ozkanonur <work@onurozkan.dev> * Create TendermintResultOrder and impl it's required traits Signed-off-by: ozkanonur <work@onurozkan.dev> * fix wasm compilation Signed-off-by: ozkanonur <work@onurozkan.dev> * fix avg_blocktime confusion Signed-off-by: ozkanonur <work@onurozkan.dev> * save dev state Signed-off-by: ozkanonur <work@onurozkan.dev> * save dev state Signed-off-by: ozkanonur <work@onurozkan.dev> * save dev state Signed-off-by: ozkanonur <work@onurozkan.dev> * add iris mod Signed-off-by: ozkanonur <work@onurozkan.dev> * fix wasm compilation Signed-off-by: ozkanonur <work@onurozkan.dev> * save dev state Signed-off-by: ozkanonur <work@onurozkan.dev> * save dev state Signed-off-by: ozkanonur <work@onurozkan.dev> * add TODO notes Signed-off-by: ozkanonur <work@onurozkan.dev> * add TODO note Signed-off-by: ozkanonur <work@onurozkan.dev> * avoid memory pressure, skip existed txs in tx_history, add fee_details Signed-off-by: ozkanonur <work@onurozkan.dev> * remove no-longer required notes Signed-off-by: ozkanonur <work@onurozkan.dev> * save dev state Signed-off-by: ozkanonur <work@onurozkan.dev> * implement `WaitForHistoryUpdateTrigger` for tendermint tx_history v2 Signed-off-by: ozkanonur <work@onurozkan.dev> * remove not required todo notes Signed-off-by: ozkanonur <work@onurozkan.dev> * update `fn process_history_loop` Signed-off-by: ozkanonur <work@onurozkan.dev> * update TODO notes of tendermint_token Signed-off-by: ozkanonur <work@onurozkan.dev> * save dev state Signed-off-by: ozkanonur <work@onurozkan.dev> * complete tx_history_v2 functionality for tendermint Signed-off-by: ozkanonur <work@onurozkan.dev> * move token insert to right before of result returning Signed-off-by: ozkanonur <work@onurozkan.dev> * implement better error handling for tx_history v2 on tendermint Signed-off-by: ozkanonur <work@onurozkan.dev> * shorten `fn is_tx_exists` Signed-off-by: ozkanonur <work@onurozkan.dev> * rename `iris_swap_poc` into `iris_swap` remove ingored flag from the test Signed-off-by: ozkanonur <work@onurozkan.dev> * update name of the iris swap test function Signed-off-by: ozkanonur <work@onurozkan.dev> * re-ignore iris swap integration tests because of iris bug Signed-off-by: ozkanonur <work@onurozkan.dev> * fix review notes Signed-off-by: ozkanonur <work@onurozkan.dev> * show extra tx for platform fees on token txs Signed-off-by: ozkanonur <work@onurozkan.dev> * partial fixes for review notes Signed-off-by: ozkanonur <work@onurozkan.dev> * update expected log for tendermint tx history test Signed-off-by: ozkanonur <work@onurozkan.dev> * read highest height for tendermint history Signed-off-by: ozkanonur <work@onurozkan.dev> * remap tx amounts and insert all possible assets for tendermint Signed-off-by: ozkanonur <work@onurozkan.dev> * fix balance problem Signed-off-by: ozkanonur <work@onurozkan.dev> * skip `uamount` field for `TendermintFeeDetails` Signed-off-by: ozkanonur <work@onurozkan.dev> * parse multiple tx events Signed-off-by: ozkanonur <work@onurozkan.dev> * save dev state Signed-off-by: ozkanonur <work@onurozkan.dev> * remove debug lines Signed-off-by: ozkanonur <work@onurozkan.dev> * refactor tendermit tx history test Signed-off-by: ozkanonur <work@onurozkan.dev> * fix review notes Signed-off-by: ozkanonur <work@onurozkan.dev> Signed-off-by: Onur Özkan <work@onurozkan.dev> Signed-off-by: ozkanonur <work@onurozkan.dev>
Is this part of the cosmos integration? It seemed like nucleus project is out of scope for this task. |
@onur-ozkan I think we can close this issue as completed. Only item left in the checklist is |
Full Cosmos/Tendermint support in AtomicDEX.
Useful resources:
The text was updated successfully, but these errors were encountered: