Three-tx - provide_liquidity() sequence burns two allowance gas fees when final tx fails; no pre-flight LUNC check #147

Closed
opened 2026-05-07 12:03:56 +00:00 by totdking · 20 comments
totdking commented 2026-05-07 12:03:56 +00:00 (Migrated from gitlab.com)
No description provided.
totdking commented 2026-05-07 12:16:19 +00:00 (Migrated from gitlab.com)

Issue Summary

Providing liquidity with two CW20 tokens sends three sequential transactions: increase_allowance for token A (~5.665 LUNC gas), increase_allowance for token B (~5.665 LUNC gas), then provide_liquidity (~variable LUNC gas). No pre-flight check validates that the wallet holds enough LUNC to cover all three fees before the sequence begins. If the provide_liquidity tx fails — due to insufficient LUNC, user rejection, or on-chain error — both allowance fees (~11.33 LUNC combined) are already consumed and no liquidity is added. This is the same structural gap as issue #132 but affects the Pool page and involves three transactions instead of two.


Reproduction Steps

  1. Complete full local setup (LocalTerra running, contracts deployed, indexer running, frontend running)
  2. Connect a Keplr wallet with sufficient CW20 token balances for both pool assets but LUNC below the combined three-tx fee (~11.33 LUNC for allowances + provide_liquidity gas)
  3. Navigate to /pool and select a CW20/CW20 pair
  4. Enter valid amounts for both assets and click Add Liquidity
  5. Approve the first Keplr prompt (increase_allowance token A, ~5.665 LUNC fee)
  6. Approve the second Keplr prompt (increase_allowance token B, ~5.665 LUNC fee)
  7. Third Keplr prompt (provide_liquidity) fails or is rejected due to insufficient LUNC
  8. Observe: two allowance fees consumed, no liquidity added, LUNC balance reduced by ~11.33 LUNC

Expected Behavior

Before broadcasting the first increase_allowance transaction, the frontend should validate that the wallet's LUNC balance is sufficient to cover all three estimated fees combined. If not, the Add Liquidity button should be disabled with a clear message such as: "Not enough LUNC for gas. You need at least ~X LUNC to cover all three transactions (allowance A + allowance B + provide liquidity)."


Actual Behavior

The three-tx sequence in pair.ts:provideLiquidity starts immediately without any LUNC pre-flight check:

  1. executeTerraContract → increase_allowance token A — succeeds, ~5.665 LUNC consumed
  2. executeTerraContract → increase_allowance token B — succeeds, ~5.665 LUNC consumed
  3. executeTerraContract → provide_liquidity — fails (insufficient LUNC or rejected), LUNC gone

The catch block in pair.ts:179 attempts decrease_allowance cleanup on both tokens, which would trigger two additional Keplr prompts and burn even more gas; compounding the loss further if the user approves them.


Screenshot

  1. 1st increase_allowance()

    Screenshot 2026-05-07 at 12.56.54.png{width=900 height=545}

  2. Second increase_allowance()

    Screenshot 2026-05-07 at 12.58.07.png{width=900 height=545}

  3. The actual tx carried out

    Screenshot 2026-05-07 at 12.58.17.png{width=900 height=545}

  4. Post balance:

Screenshot 2026-05-07 at 12.58.23.png{width=900 height=545}


Root Cause

frontend-dapp/src/services/terraclassic/pair.ts:152–195 — provideLiquidity() calls three sequential executeTerraContract() calls with no total LUNC balance check before starting. The wallet's native LUNC balance is not fetched or compared against the summed fee estimate (fee_allowanceA + fee_allowanceB + fee_provide) at any point before the first tx is broadcast.

Note: the native/wrap path in PoolPage.tsx:256 avoids this by using executeTerraContractMulti (single Keplr prompt, one tx fee), but the standard CW20 path routes through pair.ts:provideLiquidity and is fully exposed.

Relevant files:

  • frontend-dapp/src/services/terraclassic/pair.ts:152 — three-tx sequence with no pre-flight LUNC check
  • frontend-dapp/src/pages/PoolPage.tsx:259 — calls provideLiquidity() for the non-native path

Environment Details

Field Value
OS macOS (Apple M1 Pro, 14-inch)
Browser Google Chrome (desktop)
Network localterra (local Docker)
Frontend VITE_NETWORK=local npm run dev
Indexer Running (make indexer-dev)
Contracts Deployed via make deploy-local

Wallet / Device Details

  • Wallet: Keplr browser extension
  • Network configured in Keplr: localterra — RPC http://localhost:26657

Severity / Impact

P2 Polish. If the wallet holds sufficient LUNC to cover all three fees, the sequence completes normally and liquidity is added without issue. The problem only surfaces when LUNC is insufficient in that case, both allowance fees (~11.33 LUNC combined) are already consumed before the failure, with no liquidity added. The failure is fully preventable client-side , the total fee can be estimated and compared against the native LUNC balance before the first tx is sent, mirroring the fix needed in issue https://gitlab.com/PlasticDigits/cl8y-dex-terraclassic/-/work_items/132 . The cleanup decrease_allowance path in the catch block would add further gas loss if triggered. Related to issue https://gitlab.com/PlasticDigits/cl8y-dex-terraclassic/-/work_items/132 (same root pattern on limit orders).

cc: @PlasticDigits

### Issue Summary Providing liquidity with two CW20 tokens sends three sequential transactions: `increase_allowance` for token A (\~5.665 LUNC gas), `increase_allowance` for token B (\~5.665 LUNC gas), then `provide_liquidity` (\~variable LUNC gas). No pre-flight check validates that the wallet holds enough LUNC to cover all three fees before the sequence begins. If the `provide_liquidity` tx fails — due to insufficient LUNC, user rejection, or on-chain error — both allowance fees (\~11.33 LUNC combined) are already consumed and no liquidity is added. This is the same structural gap as issue #132 but affects the Pool page and involves three transactions instead of two. --- ### Reproduction Steps 1. Complete full local setup (LocalTerra running, contracts deployed, indexer running, frontend running) 2. Connect a Keplr wallet with sufficient CW20 token balances for both pool assets but LUNC below the combined three-tx fee (\~11.33 LUNC for allowances + provide_liquidity gas) 3. Navigate to `/pool` and select a CW20/CW20 pair 4. Enter valid amounts for both assets and click **Add Liquidity** 5. Approve the first Keplr prompt (`increase_allowance` token A, \~5.665 LUNC fee) 6. Approve the second Keplr prompt (`increase_allowance` token B, \~5.665 LUNC fee) 7. Third Keplr prompt (`provide_liquidity`) fails or is rejected due to insufficient LUNC 8. Observe: two allowance fees consumed, no liquidity added, LUNC balance reduced by \~11.33 LUNC --- ### Expected Behavior Before broadcasting the first `increase_allowance` transaction, the frontend should validate that the wallet's LUNC balance is sufficient to cover all three estimated fees combined. If not, the **Add Liquidity** button should be disabled with a clear message such as: _"Not enough LUNC for gas. You need at least \~X LUNC to cover all three transactions (allowance A + allowance B + provide liquidity)."_ --- ### Actual Behavior The three-tx sequence in `pair.ts:provideLiquidity` starts immediately without any LUNC pre-flight check: 1. `executeTerraContract` → `increase_allowance` token A — **succeeds**, \~5.665 LUNC consumed 2. `executeTerraContract` → `increase_allowance` token B — **succeeds**, \~5.665 LUNC consumed 3. `executeTerraContract` → `provide_liquidity` — **fails** (insufficient LUNC or rejected), LUNC gone The catch block in `pair.ts:179` attempts `decrease_allowance` cleanup on both tokens, which would trigger two additional Keplr prompts and burn even more gas; compounding the loss further if the user approves them. --- ## Screenshot 1. 1st increase_allowance() ![Screenshot 2026-05-07 at 12.56.54.png](/uploads/eb84a55148b324d962f516801f80b1ba/Screenshot_2026-05-07_at_12.56.54.png){width=900 height=545} 2. Second increase_allowance() ![Screenshot 2026-05-07 at 12.58.07.png](/uploads/0008873dac1d09ee11df43a3e5a84fab/Screenshot_2026-05-07_at_12.58.07.png){width=900 height=545} 3. The actual tx carried out ![Screenshot 2026-05-07 at 12.58.17.png](/uploads/fca96601569142a1bd654fce918828fb/Screenshot_2026-05-07_at_12.58.17.png){width=900 height=545} 4. Post balance: ![Screenshot 2026-05-07 at 12.58.23.png](/uploads/4fc7dc45daed1782ae5a0f2dfa0e427b/Screenshot_2026-05-07_at_12.58.23.png){width=900 height=545} --- ### Root Cause `frontend-dapp/src/services/terraclassic/pair.ts:152–195` — `provideLiquidity()` calls three sequential `executeTerraContract()` calls with no total LUNC balance check before starting. The wallet's native LUNC balance is not fetched or compared against the summed fee estimate (`fee_allowanceA + fee_allowanceB + fee_provide`) at any point before the first tx is broadcast. Note: the native/wrap path in `PoolPage.tsx:256` avoids this by using `executeTerraContractMulti` (single Keplr prompt, one tx fee), but the standard CW20 path routes through `pair.ts:provideLiquidity` and is fully exposed. Relevant files: - `frontend-dapp/src/services/terraclassic/pair.ts:152` — three-tx sequence with no pre-flight LUNC check - `frontend-dapp/src/pages/PoolPage.tsx:259` — calls `provideLiquidity()` for the non-native path --- ### Environment Details | Field | Value | |-------|-------| | OS | macOS (Apple M1 Pro, 14-inch) | | Browser | Google Chrome (desktop) | | Network | `localterra` (local Docker) | | Frontend | `VITE_NETWORK=local npm run dev` | | Indexer | Running (`make indexer-dev`) | | Contracts | Deployed via `make deploy-local` | --- ### Wallet / Device Details - **Wallet:** Keplr browser extension - **Network configured in Keplr:** localterra — RPC `http://localhost:26657` --- ### Severity / Impact **P2 Polish.** If the wallet holds sufficient LUNC to cover all three fees, the sequence completes normally and liquidity is added without issue. The problem only surfaces when LUNC is insufficient in that case, both allowance fees (\~11.33 LUNC combined) are already consumed before the failure, with no liquidity added. The failure is fully preventable client-side , the total fee can be estimated and compared against the native LUNC balance before the first tx is sent, mirroring the fix needed in issue https://gitlab.com/PlasticDigits/cl8y-dex-terraclassic/-/work_items/132 . The cleanup `decrease_allowance` path in the catch block would add further gas loss if triggered. Related to issue https://gitlab.com/PlasticDigits/cl8y-dex-terraclassic/-/work_items/132 (same root pattern on limit orders). cc: @PlasticDigits
PlasticDigits commented 2026-05-07 12:18:47 +00:00 (Migrated from gitlab.com)

assigned to @Brouie

assigned to @Brouie
totdking commented 2026-05-07 17:32:42 +00:00 (Migrated from gitlab.com)

mentioned in issue #116

mentioned in issue #116
PlasticDigits commented 2026-05-09 10:09:38 +00:00 (Migrated from gitlab.com)

mentioned in commit 4f693144a4

mentioned in commit 4f693144a44028b26346db43518b776b4cea6ac0
PlasticDigits commented 2026-05-09 10:10:24 +00:00 (Migrated from gitlab.com)

Ship note — native LUNC preflight for CW20/CW20 add liquidity (merged to main)

Implemented GitLab #147: before the first increase_allowance on the CW20/CW20 path, the Pool page now requires bank uluna ≥ estimateProvideLiquidityCw20SequenceUlunaFeesTotal() (two BASE_GAS_LIMIT allowance txs + ADD_LIQUIDITY_GAS_LIMIT for provide_liquidity), matching Fee.amount math in transactions.ts. The gate is skipped when either asset uses Use native (auto-wrap) (executeTerraContractMulti — single combined fee).

Code / docs

  • estimateProvideLiquidityCw20SequenceUlunaFeesTotal, UI gate provideLiquidityNativeGasBalanceGate.ts, wired in PoolPage.tsx (+ mutation guard + tests).
  • Invariants: docs/frontend.md (gas limits table + Pool section), crosslink in docs/limit-orders.md, agent playbook skills/AGENTS_TERRACLASSIC_GAS.md.

Verification checklist (for QA / sign-off)

  • CW20/CW20 pair, wallet with enough CW20 for both legs but LUNC below ~25.5 (three-fee floor at default gas price): Provide Liquidity stays disabled; alert explains three txs; no Keplr prompts until LUNC is sufficient.
  • Same scenario with enough LUNC: three sequential txs complete and liquidity is added.
  • Native auto-wrap on one or both sides: path uses multi-msg tx; no erroneous “three fee” block when LUNC is low but only one chain fee applies (smoke: low LUNC still fails only if that single fee cannot be paid—by design different from CW20/CW20).
  • Station and Terra Classic Keplr on LocalTerra optional sanity (fee handling parity per #127).

cc @totdking — could you confirm on your setup when you have a cycle?

Issue left open until verified.

## Ship note — native LUNC preflight for CW20/CW20 add liquidity (merged to `main`) Implemented **GitLab #147**: before the first `increase_allowance` on the **CW20/CW20** path, the Pool page now requires bank **uluna** ≥ **`estimateProvideLiquidityCw20SequenceUlunaFeesTotal()`** (two `BASE_GAS_LIMIT` allowance txs + `ADD_LIQUIDITY_GAS_LIMIT` for `provide_liquidity`), matching `Fee.amount` math in `transactions.ts`. The gate is skipped when either asset uses **Use native (auto-wrap)** (`executeTerraContractMulti` — single combined fee). **Code / docs** - `estimateProvideLiquidityCw20SequenceUlunaFeesTotal`, UI gate `provideLiquidityNativeGasBalanceGate.ts`, wired in `PoolPage.tsx` (+ mutation guard + tests). - Invariants: `docs/frontend.md` (gas limits table + Pool section), crosslink in `docs/limit-orders.md`, agent playbook `skills/AGENTS_TERRACLASSIC_GAS.md`. ### Verification checklist (for QA / sign-off) - [ ] **CW20/CW20 pair**, wallet with enough CW20 for both legs but **LUNC below ~25.5** (three-fee floor at default gas price): **Provide Liquidity** stays disabled; alert explains three txs; **no** Keplr prompts until LUNC is sufficient. - [ ] Same scenario with **enough LUNC**: three sequential txs complete and liquidity is added. - [ ] **Native auto-wrap** on one or both sides: path uses **multi-msg** tx; **no** erroneous “three fee” block when LUNC is low but only **one** chain fee applies (smoke: low LUNC still fails only if that single fee cannot be paid—by design different from CW20/CW20). - [ ] Station **and** Terra Classic Keplr on **LocalTerra** optional sanity (fee handling parity per #127). cc @totdking — could you confirm on your setup when you have a cycle? Issue left **open** until verified.
PlasticDigits commented 2026-05-09 10:41:15 +00:00 (Migrated from gitlab.com)

mentioned in commit 36be564d53

mentioned in commit 36be564d53130a2632d2aa822ae70831d3887c57
PlasticDigits commented 2026-05-09 10:41:16 +00:00 (Migrated from gitlab.com)

Follow-up: decrease_allowance rollback (merged)

Previously, when provide_liquidity failed after both allowances succeeded, the catch path fired two separate executeTerraContract calls — two Keplr prompts and two fees if the user approved cleanup.

Change: rollback now uses executeTerraContractMulti with both CW20 decrease_allowance messages in one transaction (pair.ts): one prompt / one native fee. getGasLimitForTx treats decrease_allowance like increase_allowance (BASE_GAS_LIMIT).

Docs crosslinked: docs/frontend.md § Pool page, docs/limit-orders.md, skills/AGENTS_TERRACLASSIC_GAS.md.

Manual check: force provide_liquidity to fail after allowances (e.g. reject/spend path) — cleanup should be one Keplr approval for two contract executes in one tx.

### Follow-up: `decrease_allowance` rollback (merged) Previously, when `provide_liquidity` failed after both allowances succeeded, the catch path fired **two separate** `executeTerraContract` calls — **two** Keplr prompts and **two** fees if the user approved cleanup. **Change:** rollback now uses **`executeTerraContractMulti`** with **both** CW20 **`decrease_allowance`** messages in **one** transaction ([`pair.ts`](https://gitlab.com/PlasticDigits/cl8y-dex-terraclassic/-/blob/main/frontend-dapp/src/services/terraclassic/pair.ts)): **one** prompt / **one** native fee. `getGasLimitForTx` treats **`decrease_allowance`** like **`increase_allowance`** (`BASE_GAS_LIMIT`). Docs crosslinked: [`docs/frontend.md` § Pool page](https://gitlab.com/PlasticDigits/cl8y-dex-terraclassic/-/blob/main/docs/frontend.md#pool-page--provide-liquidity-ui-invariants), [`docs/limit-orders.md`](https://gitlab.com/PlasticDigits/cl8y-dex-terraclassic/-/blob/main/docs/limit-orders.md), [`skills/AGENTS_TERRACLASSIC_GAS.md`](https://gitlab.com/PlasticDigits/cl8y-dex-terraclassic/-/blob/main/skills/AGENTS_TERRACLASSIC_GAS.md). **Manual check:** force `provide_liquidity` to fail after allowances (e.g. reject/spend path) — cleanup should be **one** Keplr approval for **two** contract executes in one tx.
Brouie commented 2026-05-11 04:03:00 +00:00 (Migrated from gitlab.com)

added 1 design

added [1 design](/PlasticDigits/cl8y-dex-terraclassic/-/issues/147/designs?version=3886541)
Brouie commented 2026-05-13 06:55:17 +00:00 (Migrated from gitlab.com)

walked the native LUNC preflight fix at HEAD 94adb5f.

Source

  • frontend-dapp/src/services/terraclassic/transactions.ts:156 — estimateProvideLiquidityCw20SequenceUlunaFeesTotal() returns 2 * allowanceFee + provideFee, derived from getGasLimitForTx per message shape (BASE_GAS_LIMIT for allowance, ADD_LIQUIDITY_GAS_LIMIT for provide). Math matches the ship-note formula.
  • frontend-dapp/src/utils/provideLiquidityNativeGasBalanceGate.ts — evaluateProvideLiquidityCw20NativeGasGate() returns canAddLiquidity: false + explanatory userMessage when bank uluna < required.
  • frontend-dapp/src/pages/PoolPage.tsx:194-197 — gate is short-circuited to canAddLiquidity: true when needsWrapA || needsWrapB is true (native auto-wrap path uses single-prompt executeTerraContractMulti and pays only one fee, so the three-fee floor doesn't apply). Confirms item 3 of your checklist.
  • frontend-dapp/src/services/terraclassic/pair.ts:191-199 — rollback path on provide_liquidity failure now uses executeTerraContractMulti with both decrease_allowance messages in a single tx (one Keplr prompt / one fee). Confirms the follow-up ship note.

Tests at HEAD 94adb5f

  • transactions.test.ts (estimate + gas-limit selection): all PASS
  • provideLiquidityNativeGasBalanceGate.test.ts (gate util): all PASS
  • PoolPage.test.tsx: 7/7 PASS, including the labeled integration test disables provide when LUNC is below the three-tx CW20 path gas floor (GitLab #147)
  • Combined run across all three files: 57/57 PASS
  • Full frontend suite at branch HEAD: 441/441 PASS across 62 files (from earlier verification today on a separate MR)

Checklist walk

(1) CW20/CW20 pair, wallet with enough CW20 but LUNC below the three-fee floor — Provide Liquidity stays disabled with alert.

  • Source-verified at PoolPage.tsx + the labeled PoolPage integration test asserts this exact gating.
  • Live browser walk pending — laptop tunnel was flaky during today's session, will revisit.

(2) Same scenario with enough LUNC — three sequential txs complete, liquidity added.

  • Source-verified at provideLiquidity() in pair.ts; gate returns canAddLiquidity: true when balance ≥ required.
  • Live browser walk pending.

(3) Native auto-wrap on one or both sides — no erroneous "three fee" block when only one fee applies.

  • Source-verified clean at PoolPage.tsx:194-197 short-circuit. The CW20 gate doesn't evaluate at all when needsWrapA || needsWrapB is true.
  • Live browser walk pending (smoke test, low priority).

(4) Station + Terra Classic Keplr fee parity on LocalTerra (per #127).

  • Pending — same browser-walk dependency as items 1-3.

(5) Rollback path: force provide_liquidity to fail after allowances; cleanup should be one Keplr prompt for two contract executes in one tx.

  • Source-verified clean at pair.ts:191-199 using executeTerraContractMulti with both decrease_allowance messages bundled.
  • Live browser walk pending (would require forcing a provide_liquidity rejection).

Where I'm at

Source + automated tests cover items 1, 2, 3, 5 by structure. Items 1, 2, 5 are exercised by the existing component + util tests; item 3 is short-circuit logic that's effectively pure. Item 4 is the wallet-parity smoke test which needs a real Station + Keplr walk.

The four remaining UI walks all depend on the laptop tunnel stabilizing — same blocker as the #120 manual walk earlier today. Will revisit them in batch in the next session.

ready for partial close: source + automated coverage clean, browser walks pending.

/cc @PlasticDigits

walked the native LUNC preflight fix at HEAD 94adb5f. **Source** - `frontend-dapp/src/services/terraclassic/transactions.ts:156` — `estimateProvideLiquidityCw20SequenceUlunaFeesTotal()` returns `2 * allowanceFee + provideFee`, derived from `getGasLimitForTx` per message shape (`BASE_GAS_LIMIT` for allowance, `ADD_LIQUIDITY_GAS_LIMIT` for provide). Math matches the ship-note formula. - `frontend-dapp/src/utils/provideLiquidityNativeGasBalanceGate.ts` — `evaluateProvideLiquidityCw20NativeGasGate()` returns `canAddLiquidity: false` + explanatory `userMessage` when bank uluna < required. - `frontend-dapp/src/pages/PoolPage.tsx:194-197` — gate is short-circuited to `canAddLiquidity: true` when `needsWrapA || needsWrapB` is true (native auto-wrap path uses single-prompt `executeTerraContractMulti` and pays only one fee, so the three-fee floor doesn't apply). Confirms item 3 of your checklist. - `frontend-dapp/src/services/terraclassic/pair.ts:191-199` — rollback path on `provide_liquidity` failure now uses `executeTerraContractMulti` with both `decrease_allowance` messages in a single tx (one Keplr prompt / one fee). Confirms the follow-up ship note. **Tests at HEAD 94adb5f** - `transactions.test.ts` (estimate + gas-limit selection): **all PASS** - `provideLiquidityNativeGasBalanceGate.test.ts` (gate util): **all PASS** - `PoolPage.test.tsx`: **7/7 PASS**, including the labeled integration test `disables provide when LUNC is below the three-tx CW20 path gas floor (GitLab #147)` - Combined run across all three files: **57/57 PASS** - Full frontend suite at branch HEAD: **441/441 PASS across 62 files** (from earlier verification today on a separate MR) **Checklist walk** (1) CW20/CW20 pair, wallet with enough CW20 but LUNC below the three-fee floor — Provide Liquidity stays disabled with alert. - **Source-verified** at PoolPage.tsx + the labeled PoolPage integration test asserts this exact gating. - Live browser walk pending — laptop tunnel was flaky during today's session, will revisit. (2) Same scenario with enough LUNC — three sequential txs complete, liquidity added. - **Source-verified** at provideLiquidity() in pair.ts; gate returns `canAddLiquidity: true` when balance ≥ required. - Live browser walk pending. (3) Native auto-wrap on one or both sides — no erroneous "three fee" block when only one fee applies. - **Source-verified clean** at PoolPage.tsx:194-197 short-circuit. The CW20 gate doesn't evaluate at all when `needsWrapA || needsWrapB` is true. - Live browser walk pending (smoke test, low priority). (4) Station + Terra Classic Keplr fee parity on LocalTerra (per #127). - **Pending** — same browser-walk dependency as items 1-3. (5) Rollback path: force `provide_liquidity` to fail after allowances; cleanup should be one Keplr prompt for two contract executes in one tx. - **Source-verified clean** at pair.ts:191-199 using `executeTerraContractMulti` with both `decrease_allowance` messages bundled. - Live browser walk pending (would require forcing a provide_liquidity rejection). **Where I'm at** Source + automated tests cover items 1, 2, 3, 5 by structure. Items 1, 2, 5 are exercised by the existing component + util tests; item 3 is short-circuit logic that's effectively pure. Item 4 is the wallet-parity smoke test which needs a real Station + Keplr walk. The four remaining UI walks all depend on the laptop tunnel stabilizing — same blocker as the #120 manual walk earlier today. Will revisit them in batch in the next session. ready for partial close: source + automated coverage clean, browser walks pending. /cc @PlasticDigits
PlasticDigits commented 2026-05-25 02:05:06 +00:00 (Migrated from gitlab.com)

@Brouie Please cover the remaining ui walks

@Brouie Please cover the remaining ui walks
totdking commented 2026-05-28 12:22:26 +00:00 (Migrated from gitlab.com)

Verification checklist (for QA / sign-off)

  • CW20/CW20 pair, wallet with enough CW20 for both legs but LUNC below ~25.5 (three-fee floor at default gas price): Provide Liquidity stays disabled; alert explains three txs; no Keplr prompts until LUNC is sufficient.
  • Same scenario with enough LUNC: three sequential txs complete and liquidity is added.
  • Native auto-wrap on one or both sides: path uses multi-msg tx; no erroneous “three fee” block when LUNC is low but only one chain fee applies (smoke: low LUNC still fails only if that single fee cannot be paid—by design different from CW20/CW20).
  • Station and Terra Classic Keplr on LocalTerra optional sanity (fee handling parity per #127).

Issues noticed

cc: @PlasticDigits

### Verification checklist (for QA / sign-off) * [x] **CW20/CW20 pair**, wallet with enough CW20 for both legs but **LUNC below \~25.5** (three-fee floor at default gas price): **Provide Liquidity** stays disabled; alert explains three txs; **no** Keplr prompts until LUNC is sufficient. * [x] Same scenario with **enough LUNC**: three sequential txs complete and liquidity is added. * [x] **Native auto-wrap** on one or both sides: path uses **multi-msg** tx; **no** erroneous “three fee” block when LUNC is low but only **one** chain fee applies (smoke: low LUNC still fails only if that single fee cannot be paid—by design different from CW20/CW20). * [ ] Station **and** Terra Classic Keplr on **LocalTerra** optional sanity (fee handling parity per #127). ## Issues noticed * Regression on newly installed wallets in the case where the site does not detect / allow for using of certain wallets i.e. station wallet if redownloaded. https://gitlab.com/PlasticDigits/cl8y-dex-terraclassic/-/work_items/207. This prevents the validation for the last checklist . cc: @PlasticDigits
totdking commented 2026-05-28 12:26:52 +00:00 (Migrated from gitlab.com)

mentioned in issue #207

mentioned in issue #207
PlasticDigits (Migrated from gitlab.com) closed this issue 2026-05-28 12:27:02 +00:00
totdking commented 2026-05-28 15:00:22 +00:00 (Migrated from gitlab.com)

mentioned in issue #208

mentioned in issue #208
PlasticDigits commented 2026-05-29 03:15:18 +00:00 (Migrated from gitlab.com)

mentioned in issue #213

mentioned in issue #213
PlasticDigits commented 2026-08-16 07:14:04 +00:00 (Migrated from gitlab.com)

mentioned in issue #531

mentioned in issue #531
PlasticDigits commented 2026-08-16 09:55:49 +00:00 (Migrated from gitlab.com)

mentioned in issue #533

mentioned in issue #533
PlasticDigits commented 2026-08-18 00:43:31 +00:00 (Migrated from gitlab.com)

mentioned in issue #559

mentioned in issue #559
PlasticDigits commented 2026-08-21 11:29:50 +00:00 (Migrated from gitlab.com)

mentioned in issue #587

mentioned in issue #587
PlasticDigits commented 2026-08-26 04:11:20 +00:00 (Migrated from gitlab.com)

mentioned in issue #660

mentioned in issue #660
PlasticDigits commented 2026-08-26 04:12:48 +00:00 (Migrated from gitlab.com)

mentioned in issue #661

mentioned in issue #661
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
code/cl8y-dex-terraclassic#147
No description provided.