From 19174fc97445ead96e11c3abce38b98c94935dc3 Mon Sep 17 00:00:00 2001 From: satoshiotomakan <127754187+satoshiotomakan@users.noreply.github.com> Date: Fri, 10 Nov 2023 15:50:26 +0100 Subject: [PATCH] [Swap]: Fix BSC swap (#3549) * [THORSwap]: Fix memo for ->BSC swap * [THORSwap]: Fix Linux CI --- .github/workflows/android-ci.yml | 4 +- .github/workflows/codegen-v2.yml | 4 +- .github/workflows/docker.yml | 4 +- .github/workflows/ios-ci.yml | 4 +- .github/workflows/kotlin-ci.yml | 4 +- .github/workflows/kotlin-sample-ci.yml | 4 +- .github/workflows/linux-ci-rust.yml | 4 +- .github/workflows/linux-ci-sonarcloud.yml | 4 +- .github/workflows/linux-ci.yml | 10 +++- .github/workflows/linux-sampleapp-ci.yml | 10 +++- .github/workflows/wasm-ci.yml | 4 +- src/THORChain/Swap.cpp | 3 +- tests/chains/Cosmos/THORChain/SwapTests.cpp | 57 +++++++++++++++++++++ 13 files changed, 93 insertions(+), 23 deletions(-) diff --git a/.github/workflows/android-ci.yml b/.github/workflows/android-ci.yml index a575fe792ea..8751bd1986e 100644 --- a/.github/workflows/android-ci.yml +++ b/.github/workflows/android-ci.yml @@ -2,9 +2,9 @@ name: Android CI on: push: - branches: [ dev, master ] + branches: [ dev, master, master-3 ] pull_request: - branches: [ dev, master ] + branches: [ dev, master, master-3 ] concurrency: group: ${{ github.workflow }}-${{ github.ref }} diff --git a/.github/workflows/codegen-v2.yml b/.github/workflows/codegen-v2.yml index 108b8e42448..7fe07b6bff7 100644 --- a/.github/workflows/codegen-v2.yml +++ b/.github/workflows/codegen-v2.yml @@ -2,11 +2,11 @@ name: Codegen-v2 Tests on: push: - branches: [ dev, master ] + branches: [ dev, master, master-3 ] paths: - 'codegen-v2/**' pull_request: - branches: [ dev, master ] + branches: [ dev, master, master-3 ] paths: - 'codegen-v2/**' diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml index db3513b2a17..6d1d95b5efb 100644 --- a/.github/workflows/docker.yml +++ b/.github/workflows/docker.yml @@ -2,9 +2,9 @@ name: Docker CI on: push: - branches: [ dev, master ] + branches: [ dev, master, master-3 ] pull_request: - branches: [ dev, master ] + branches: [ dev, master, master-3 ] paths: - Dockerfile - tools/install-dependencies diff --git a/.github/workflows/ios-ci.yml b/.github/workflows/ios-ci.yml index 7dcc89a194b..8aa835172a0 100644 --- a/.github/workflows/ios-ci.yml +++ b/.github/workflows/ios-ci.yml @@ -2,9 +2,9 @@ name: iOS CI on: push: - branches: [ dev, master ] + branches: [ dev, master, master-3 ] pull_request: - branches: [ dev, master ] + branches: [ dev, master, master-3 ] concurrency: group: ${{ github.workflow }}-${{ github.ref }} diff --git a/.github/workflows/kotlin-ci.yml b/.github/workflows/kotlin-ci.yml index 0a517a03ae8..fb4aaeec8c6 100644 --- a/.github/workflows/kotlin-ci.yml +++ b/.github/workflows/kotlin-ci.yml @@ -2,9 +2,9 @@ name: Kotlin CI on: push: - branches: [ dev, master ] + branches: [ dev, master, master-3 ] pull_request: - branches: [ dev, master ] + branches: [ dev, master, master-3 ] concurrency: group: ${{ github.workflow }}-${{ github.ref }} diff --git a/.github/workflows/kotlin-sample-ci.yml b/.github/workflows/kotlin-sample-ci.yml index 4c42e44dcd5..18997cccb91 100644 --- a/.github/workflows/kotlin-sample-ci.yml +++ b/.github/workflows/kotlin-sample-ci.yml @@ -2,9 +2,9 @@ name: Kotlin Multiplatform CI on: push: - branches: [ dev, master ] + branches: [ dev, master, master-3 ] pull_request: - branches: [ dev, master ] + branches: [ dev, master, master-3 ] concurrency: group: ${{ github.workflow }}-${{ github.ref }} diff --git a/.github/workflows/linux-ci-rust.yml b/.github/workflows/linux-ci-rust.yml index d255e25bb7b..949406c51a8 100644 --- a/.github/workflows/linux-ci-rust.yml +++ b/.github/workflows/linux-ci-rust.yml @@ -2,9 +2,9 @@ name: Linux CI Rust on: push: - branches: [ dev, master ] + branches: [ dev, master, master-3 ] pull_request: - branches: [ dev, master ] + branches: [ dev, master, master-3 ] env: SCCACHE_GHA_ENABLED: "true" diff --git a/.github/workflows/linux-ci-sonarcloud.yml b/.github/workflows/linux-ci-sonarcloud.yml index d8154a0c9b4..968e70bbe9e 100644 --- a/.github/workflows/linux-ci-sonarcloud.yml +++ b/.github/workflows/linux-ci-sonarcloud.yml @@ -2,9 +2,9 @@ name: Linux CI SonarCloud on: push: - branches: [ dev, master ] + branches: [ dev, master, master-3 ] pull_request: - branches: [ dev, master ] + branches: [ dev, master, master-3 ] concurrency: group: ${{ github.workflow }}-${{ github.ref }} diff --git a/.github/workflows/linux-ci.yml b/.github/workflows/linux-ci.yml index 8eb3d94358e..6ebd9931e8b 100644 --- a/.github/workflows/linux-ci.yml +++ b/.github/workflows/linux-ci.yml @@ -2,9 +2,9 @@ name: Linux CI on: push: - branches: [ dev, master ] + branches: [ dev, master, master-3 ] pull_request: - branches: [ dev, master ] + branches: [ dev, master, master-3 ] concurrency: group: ${{ github.workflow }}-${{ github.ref }} @@ -15,6 +15,12 @@ jobs: runs-on: ubuntu-latest if: github.event.pull_request.draft == false steps: + - name: Remove GCC 13 from runner image + shell: bash + run: | + sudo rm -f /etc/apt/sources.list.d/ubuntu-toolchain-r-ubuntu-test-jammy.list + sudo apt-get update + sudo apt-get install -y --allow-downgrades libc6=2.35-0ubuntu3.4 libc6-dev=2.35-0ubuntu3.4 libstdc++6=12.3.0-1ubuntu1~22.04 libgcc-s1=12.3.0-1ubuntu1~22.04 - uses: actions/checkout@v3 - name: Install system dependencies run: | diff --git a/.github/workflows/linux-sampleapp-ci.yml b/.github/workflows/linux-sampleapp-ci.yml index ec1b8ec665d..d10756ea6a1 100644 --- a/.github/workflows/linux-sampleapp-ci.yml +++ b/.github/workflows/linux-sampleapp-ci.yml @@ -2,9 +2,9 @@ name: Linux SampleApps CI on: push: - branches: [ dev, master ] + branches: [ dev, master, master-3 ] pull_request: - branches: [ dev, master ] + branches: [ dev, master, master-3 ] concurrency: group: ${{ github.workflow }}-${{ github.ref }} @@ -15,6 +15,12 @@ jobs: runs-on: ubuntu-latest if: github.event.pull_request.draft == false steps: + - name: Remove GCC 13 from runner image + shell: bash + run: | + sudo rm -f /etc/apt/sources.list.d/ubuntu-toolchain-r-ubuntu-test-jammy.list + sudo apt-get update + sudo apt-get install -y --allow-downgrades libc6=2.35-0ubuntu3.4 libc6-dev=2.35-0ubuntu3.4 libstdc++6=12.3.0-1ubuntu1~22.04 libgcc-s1=12.3.0-1ubuntu1~22.04 - uses: actions/checkout@v3 - name: Install system dependencies run: | diff --git a/.github/workflows/wasm-ci.yml b/.github/workflows/wasm-ci.yml index da063d565be..cae7c09ea85 100644 --- a/.github/workflows/wasm-ci.yml +++ b/.github/workflows/wasm-ci.yml @@ -2,9 +2,9 @@ name: Wasm CI on: push: - branches: [ dev, master ] + branches: [ dev, master, master-3 ] pull_request: - branches: [ dev, master ] + branches: [ dev, master, master-3 ] concurrency: group: ${{ github.workflow }}-${{ github.ref }} diff --git a/src/THORChain/Swap.cpp b/src/THORChain/Swap.cpp index 9d2f4278524..81d3e82c423 100644 --- a/src/THORChain/Swap.cpp +++ b/src/THORChain/Swap.cpp @@ -80,8 +80,9 @@ std::string chainName(Chain chain) { case Chain::ETH: return "ETH"; case Chain::BNB: - case Chain::BSC: return "BNB"; + case Chain::BSC: + return "BSC"; case Chain::BTC: return "BTC"; case Chain::DOGE: diff --git a/tests/chains/Cosmos/THORChain/SwapTests.cpp b/tests/chains/Cosmos/THORChain/SwapTests.cpp index 32db1f54988..4aae97d9842 100644 --- a/tests/chains/Cosmos/THORChain/SwapTests.cpp +++ b/tests/chains/Cosmos/THORChain/SwapTests.cpp @@ -453,6 +453,63 @@ Data SwapTest_ethAddressStringToData(const std::string& asString) { return asData; } +TEST(THORChainSwap, SwapUsdtBsc) { + auto myAddress = "0x0d6aA74992eDDaaf430eadca63B87f4C99Aef8dE"; + auto vaultAddress = "0x1f3b3c6ac151bf32409fe139a5d55f3d9444729c"; + auto routerAddress = "0xD37BbE5744D730a1d98d8DC97c42F0Ca46aD7146"; + auto usdtTokenId = "0xdAC17F958D2ee523a2206206994597C13D831ec7"; + auto amount = 70000000; + auto expirationTime = 1775669796; + + Proto::Asset fromAsset; + fromAsset.set_chain(static_cast(Chain::ETH)); + fromAsset.set_symbol("USDT"); + fromAsset.set_token_id(usdtTokenId); + Proto::Asset toAsset; + toAsset.set_chain(static_cast(Chain::BSC)); + toAsset.set_symbol("BSC"); + toAsset.set_token_id("BNB"); + + auto&& [out, errorCode, error] = SwapBuilder::builder() + .from(fromAsset) + .to(toAsset) + .fromAddress(myAddress) + .toAddress(myAddress) + .vault(vaultAddress) + .router(routerAddress) + .fromAmount(std::to_string(amount)) + .expirationPolicy(expirationTime) + .affFeeAddress("tr") + .affFeeRate("0") + .streamInterval("1") + .streamQuantity("0") + .build(); + ASSERT_EQ(errorCode, 0); + ASSERT_EQ(error, ""); + + auto tx = Ethereum::Proto::SigningInput(); + ASSERT_TRUE(tx.ParseFromArray(out.data(), (int)out.size())); + + // check fields + EXPECT_EQ(tx.to_address(), routerAddress); + ASSERT_TRUE(tx.transaction().has_contract_generic()); + + Data vaultAddressBin = SwapTest_ethAddressStringToData(vaultAddress); + Data usdtTokenIdBin = SwapTest_ethAddressStringToData(usdtTokenId); + auto func = Ethereum::ABI::Function("depositWithExpiry", std::vector>{ + std::make_shared(vaultAddressBin), + std::make_shared(usdtTokenIdBin), + std::make_shared(uint256_t(amount)), + std::make_shared("=:BSC.BNB:0x0d6aA74992eDDaaf430eadca63B87f4C99Aef8dE:0/1/0:tr:0"), + std::make_shared(uint256_t(expirationTime))}); + + Data funcData; + func.encode(funcData); + EXPECT_EQ(hex(funcData), "44bc937b0000000000000000000000001f3b3c6ac151bf32409fe139a5d55f3d9444729c000000000000000000000000dac17f958d2ee523a2206206994597c13d831ec700000000000000000000000000000000000000000000000000000000042c1d8000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000069d69224000000000000000000000000000000000000000000000000000000000000003f3d3a4253432e424e423a3078306436614137343939326544446161663433306561646361363342383766344339394165663864453a302f312f303a74723a3000"); + EXPECT_EQ(hex(TW::data(tx.transaction().contract_generic().amount())), "00"); + EXPECT_EQ(hex(TW::data(tx.transaction().contract_generic().data())), hex(funcData)); +} + TEST(THORChainSwap, SwapErc20Rune) { Proto::Asset fromAsset; fromAsset.set_token_id("0xB97EF9Ef8734C71904D8002F8b6Bc66Dd9c48a6E");