fix(community-tax): SendFrom listed-pair Sell extra-debits beyond allowance #1228

Closed
opened 2026-09-11 07:42:02 +00:00 by PlasticDigits · 5 comments

Summary

Community-tax SendFrom on a listed-pair Sell (SendFrom → registered pair + Cw20HookMsg::Swap) extra-debits the owner amount + sell tax (T592-2) but deduct_allowance only consumes amount. A spender approved for the declared sell size can move more of the owner’s balance than the remaining allowance.

Verified on the crate path: sell_bps = 500, declared amount = 1_000_000 → owner debit 1_050_000 while allowance drops by 1_000_000 only.

Owner-signed Send+Swap extra-debit is covered (sell_extra_debit_on_swap_send, greedy #710). There is no SendFrom allowance test in community-tax-token multitest. This is not a pair/router FoT change and not the greedy leftover #710.

Parent design remains #592 (T592-1 inbound 1:1, T592-2 extra-debit). Those tickets do not state the allowance invariant.

Repro (Given / When / Then)

Given a community-tax CW20 with sell_bps = 500, a factory-listed pair registered via RegisterListedPair, owner balance ≥ 1_050_000, and IncreaseAllowance of 1_000_000 to a spender (not the owner).

When the spender executes SendFrom { owner, contract: listed_pair, amount: 1_000_000, msg: Swap { … } }.

Then the execute must fail closed (insufficient allowance). Owner balance, pair credit, tax sinks, and remaining allowance are unchanged.

Given the same setup except allowance is 1_050_000.

When the spender SendFroms declared amount = 1_000_000 to that listed pair with a Swap hook.

Then owner debit is 1_050_000, pair credit is 1_000_000 (no inbound FoT, T592-1), tax 50_000 lands on configured sinks, remaining allowance is 0, and TaxPreview debit matches the owner debit.

Expected vs actual

Surface Expected Actual
Listed-pair Sell SendFrom Allowance covers economic debit (TaxPreview.debit, pair-direct = amount + tax) execute_send_from calls deduct_allowance(…, amount) then tax::apply_transfer extra-debits amount + tax
Pair credit / Receive hook Credit and hook amount stay declared amount (T592-1, H-01) Pair credit is already amount; the hole is owner-side allowance vs debit
TransferFrom (provide / limit-adjacent) Stays 1:1; allowance = amount (T592-7) Unchanged; must not start extra-debiting
Unregistered / Honest SendFrom Debit = credit = amount; allowance = amount Same (no Sell classify)

Current codebase

execute_send_from (same pattern on execute_transfer_from / execute_burn_from):

  1. deduct_allowance(storage, owner, spender, block, amount)
  2. tax::apply_transfer(…, owner, to, amount, Some(&msg))

tax.rs pair-direct Sell: (debit, credit) = (amount + tax, amount). Router hop Sell extra-debits authenticated Swap.trader and debits from by amount only (T592-13). SendFrom’s from is the owner, so a spender pulling into a listed pair is pair-direct Sell, not a router hop.

execute_send (owner is info.sender) has no allowance step; extra-debit is the owner’s own signature. SendFrom is the spender path.

Crate tests: sell_extra_debit_on_swap_send / greedy variants assert owner Send. No SendFrom / IncreaseAllowance rows. Layer B-lt SendFrom is tax-off (no RegisterListedPair, #623).

Why this is needed

Aggregators, routers, keepers, and any CW20 spender use SendFrom, not owner Send. Extra-debit without charging the tax against allowance means:

  1. Authorization: remaining allowance can be 0 after a pull that took amount + tax from the owner.
  2. Sizing: a wallet that approved exactly the swap amount (or a max-sell that used TaxPreview.declared instead of debit) still loses the tax slice.
  3. Fail-closed: the intended product is extra-debit Sell (T592-2), not “skip tax on SendFrom”. Treating SendFrom as 1:1 would be a tax-evasion hole (spender-shaped Send).

Live listed templates (11611 / 11619) inherit this until a store + migrate. This ticket is the crate + tests; mainnet migrate is a separate ops step after wasm pin (do not mix Coolify/host work here).

Constraints / guardrails

ID Rule
H-01 Do not add pair/router FoT / balance-delta swap math. Pair credit on Sell stays declared amount.
T592-1 Inbound credit to listed pair / router / protocol-exempt stays amount. Receive hook amount = credit.
T592-2 Listed-pair Sell still extra-debits economically. Do not “fix” this by skipping tax on SendFrom.
T592-7 TransferFrom (provide) and limit PlaceLimitOrder* Send stay 1:1.
T592-13 Pair-direct ignores spoofed Swap.trader. Official-router hop still extra-debits authenticated trader when from == config.router.
A-allow deduct_allowance for pair-direct Sell SendFrom must use economic debit (amount + tax), not declared amount. Insufficient allowance reverts before balance moves.
Preview TaxPreview debit/credit/tax stay the source of truth for dApp max-sell; do not invent a second formula.
No rug APIs No pause/blacklist/reflection. Do not change buy outbound split.
Migrate Do not treat LocalTerra store ids as columbus-5. Factory whitelist / MsgMigrate is out of scope except a one-line “needs store+migrate after pin”.
#710 / #623 Do not reopen those tickets; they are greedy extra-debit tests and tax-on harness, not this allowance invariant.

Relevant files

Path Why
smartcontracts/contracts/community-tax-token/src/contract.rs execute_send_from deducts amount then apply_transfer
smartcontracts/contracts/community-tax-token/src/tax.rs apply_transfer / tax_preview debit for pair-direct Sell
smartcontracts/contracts/community-tax-token/src/lib.rs Document SendFrom allowance vs T592-2
smartcontracts/contracts/community-tax-token/src/multitest.rs Add SendFrom allowance rows (none today)
skills/AGENTS_COMMUNITY_TAX_CW20.md T592-2 currently names Send only; add SendFrom debit=allowance
docs/contracts-security-audit.md / docs/contracts-terraclassic.md Same invariant sentence if those sections list entrypoints

Do not change pair, router, or factory wasm for this.

  1. Classify / preview before deduct_allowance on SendFrom (same kind/debit as apply_transfer).
  2. For pair-direct Sell, deduct_allowance(…, debit) where debit = amount + tax. Other kinds (Honest, Buy outbound is not a SendFrom from the trader in the usual path, Transfer tax if it can appear on SendFrom) deduct the same debit apply_transfer will take from owner. Fail closed if allowance < debit.
  3. Then apply_transfer as today (pair credit amount, extra-debit owner).
  4. Keep TransferFrom 1:1 + deduct_allowance(amount) — it is not a Swap Send (T592-7).
  5. Multitest: table for allowance amount (must revert), amount+tax (success, allowance 0), unlimited allowance, unregistered pair 1:1, spoofed trader still extra-debits owner, manager-directory skip does not extra-debit (allowance = amount).
  6. Optional: make verify-issue-* gate grepping the new tests. Do not weaken B-lt 1:1 SendFrom.

Acceptance criteria

  • AC1. Listed-pair SendFrom+Swap with allowance == declared amount reverts; no owner debit, no pair credit, no sink credit, allowance unchanged.
  • AC2. Same call with allowance == TaxPreview.debit succeeds; owner −debit, pair +amount, sinks +tax, remaining allowance 0.
  • AC3. SendFrom cannot skip sell tax (same extra-debit as owner Send for pair-direct).
  • AC4. TransferFrom to the listed pair (no Swap hook) remains 1:1; allowance decreases by amount only.
  • AC5. Unregistered pair / Honest path: SendFrom debit = amount; allowance = amount.
  • AC6. Pair-direct spoofed trader does not move the victim; owner is extra-debited (T592-13).
  • AC7. Manager-directory / manager-role skip: no extra-debit; allowance = amount (#609 / #633).
  • AC8. Docs/skills: T592-2 states SendFrom allowance covers economic debit. No pair/router math change.
  • AC9. Existing sell_extra_debit_on_swap_send / greedy #710 tests stay green.

Test plan (functional paths)

# Path Expect
T1 Listed pair, allowance = 1_000_000, SendFrom 1_000_000 Swap Revert; balances unchanged
T2 Allowance = 1_050_000, same SendFrom Owner −1_050_000, pair +1_000_000, sink +50_000, allowance 0
T3 Owner Send 1_000_000 Swap (control) Still extra-debit (existing test)
T4 Unregistered pair SendFrom 1_000_000 1:1; allowance −1_000_000
T5 TransferFrom 1_000_000 to listed pair 1:1; allowance −1_000_000
T6 Unlimited allowance + listed Sell SendFrom Extra-debit; pair 1:1 inbound
T7 Pair-direct trader: victim on SendFrom Owner extra-debited; victim unchanged
T8 Directory-exempt owner, listed Sell SendFrom 1:1 debit; allowance = amount
T9 Greedy Swap hook on SendFrom Same debit/allowance as non-greedy Swap
T10 Allowance = debit − 1 Revert

cargo test in community-tax-token (and existing make verify-issue-592 / verify-issue-710 if those still invoke this crate). No mainnet txs in this ticket.

Attack / abuse tests

# Attempt Expect
A1 Spender with allowance == amount forces listed Sell Revert (must not extra-debit beyond allowance)
A2 Spender uses SendFrom instead of Send to skip sell tax Tax still applies; cannot 1:1-sell through spender
A3 Pair-direct trader spoof to extra-debit a third wallet Victim unchanged; owner pays extra-debit
A4 TransferFrom used as a fake sell (no Swap hook) Stays 1:1; do not start taxing provide
A5 Allowance exactly debit, then second SendFrom 1 Revert; no second extra-debit

Do not publish live instance addresses, spend keys, or a copy-paste drain recipe against columbus-5.

Verification criteria

  • New multitest names are greppable and fail if deduct_allowance is left on declared amount for pair-direct Sell.
  • TaxPreview.debit == owner balance delta on success path T2.
  • make verify-issue-592 (or crate test target) green; B-lt tax-off SendFrom still 1:1.
  • Reviewer can confirm pair/router crates are untouched.

First-pass model recommendation

Recommendation: grok-high

Rationale: Community-tax wasm (T592) plus CW20 allowance accounting. Founder-required surface (contracts / auth / wasm). Fix is not a local three-file UI helper: execute_send_from must stay aligned with apply_transfer / TaxPreview, classification (pair-direct vs router hop, directory skip, greedy serde), and live listed code_ids that need a later migrate. Wrong direction (skip tax on SendFrom, or extra-debit TransferFrom) breaks H-01 or opens tax evasion. Verify with crate multitest (T1–T10 / A1–A5), not a single snapshot. Composer’s low-risk local-edit bar does not hold.

## Summary Community-tax `SendFrom` on a **listed-pair Sell** (`SendFrom` → registered pair + `Cw20HookMsg::Swap`) extra-debits the owner `amount + sell tax` (**T592-2**) but `deduct_allowance` only consumes **`amount`**. A spender approved for the declared sell size can move more of the owner’s balance than the remaining allowance. Verified on the crate path: `sell_bps = 500`, declared `amount = 1_000_000` → owner debit **1_050_000** while allowance drops by **1_000_000** only. Owner-signed `Send+Swap` extra-debit is covered (`sell_extra_debit_on_swap_send`, greedy **#710**). There is **no** `SendFrom` allowance test in `community-tax-token` multitest. This is not a pair/router FoT change and not the greedy leftover **#710**. Parent design remains [#592](https://git.cl8y.com/code/cl8y-dex-terraclassic/issues/592) (**T592-1** inbound 1:1, **T592-2** extra-debit). Those tickets do not state the allowance invariant. ## Repro (Given / When / Then) **Given** a community-tax CW20 with `sell_bps = 500`, a factory-listed pair registered via `RegisterListedPair`, owner balance ≥ 1_050_000, and `IncreaseAllowance` of **1_000_000** to a spender (not the owner). **When** the spender executes `SendFrom { owner, contract: listed_pair, amount: 1_000_000, msg: Swap { … } }`. **Then** the execute must **fail closed** (insufficient allowance). Owner balance, pair credit, tax sinks, and remaining allowance are unchanged. **Given** the same setup except allowance is **1_050_000**. **When** the spender `SendFrom`s declared `amount = 1_000_000` to that listed pair with a Swap hook. **Then** owner debit is **1_050_000**, pair credit is **1_000_000** (no inbound FoT, **T592-1**), tax **50_000** lands on configured sinks, remaining allowance is **0**, and `TaxPreview` debit matches the owner debit. ## Expected vs actual | Surface | Expected | Actual | |---------|----------|--------| | Listed-pair Sell `SendFrom` | Allowance covers **economic debit** (`TaxPreview.debit`, pair-direct = `amount + tax`) | `execute_send_from` calls `deduct_allowance(…, amount)` then `tax::apply_transfer` extra-debits `amount + tax` | | Pair credit / Receive hook | Credit and hook `amount` stay declared `amount` (**T592-1**, **H-01**) | Pair credit is already `amount`; the hole is owner-side allowance vs debit | | `TransferFrom` (provide / limit-adjacent) | Stays **1:1**; allowance = `amount` (**T592-7**) | Unchanged; must not start extra-debiting | | Unregistered / Honest `SendFrom` | Debit = credit = `amount`; allowance = `amount` | Same (no Sell classify) | ## Current codebase [`execute_send_from`](smartcontracts/contracts/community-tax-token/src/contract.rs) (same pattern on `execute_transfer_from` / `execute_burn_from`): 1. `deduct_allowance(storage, owner, spender, block, amount)` 2. `tax::apply_transfer(…, owner, to, amount, Some(&msg))` [`tax.rs`](smartcontracts/contracts/community-tax-token/src/tax.rs) pair-direct **Sell**: `(debit, credit) = (amount + tax, amount)`. Router hop Sell extra-debits authenticated `Swap.trader` and debits `from` by `amount` only (**T592-13**). `SendFrom`’s `from` is the **owner**, so a spender pulling into a listed pair is **pair-direct Sell**, not a router hop. `execute_send` (owner is `info.sender`) has no allowance step; extra-debit is the owner’s own signature. `SendFrom` is the spender path. Crate tests: `sell_extra_debit_on_swap_send` / greedy variants assert owner `Send`. **No** `SendFrom` / `IncreaseAllowance` rows. Layer B-lt `SendFrom` is **tax-off** (no `RegisterListedPair`, [#623](https://git.cl8y.com/code/cl8y-dex-terraclassic/issues/623)). ## Why this is needed Aggregators, routers, keepers, and any CW20 spender use `SendFrom`, not owner `Send`. Extra-debit without charging the tax against allowance means: 1. **Authorization:** remaining allowance can be `0` after a pull that took `amount + tax` from the owner. 2. **Sizing:** a wallet that approved exactly the swap `amount` (or a max-sell that used `TaxPreview.declared` instead of `debit`) still loses the tax slice. 3. **Fail-closed:** the intended product is extra-debit Sell (**T592-2**), not “skip tax on `SendFrom`”. Treating `SendFrom` as 1:1 would be a **tax-evasion** hole (spender-shaped `Send`). Live listed templates (**11611** / **11619**) inherit this until a store + migrate. This ticket is the **crate + tests**; mainnet migrate is a separate ops step after wasm pin (do not mix Coolify/host work here). ## Constraints / guardrails | ID | Rule | |----|------| | **H-01** | Do **not** add pair/router FoT / balance-delta swap math. Pair credit on Sell stays declared `amount`. | | **T592-1** | Inbound credit to listed pair / router / protocol-exempt stays `amount`. Receive hook amount = credit. | | **T592-2** | Listed-pair Sell still extra-debits economically. Do **not** “fix” this by skipping tax on `SendFrom`. | | **T592-7** | `TransferFrom` (provide) and limit `PlaceLimitOrder*` `Send` stay 1:1. | | **T592-13** | Pair-direct ignores spoofed `Swap.trader`. Official-router hop still extra-debits authenticated trader when `from == config.router`. | | **A-allow** | `deduct_allowance` for pair-direct Sell `SendFrom` must use **economic debit** (`amount + tax`), not declared `amount`. Insufficient allowance **reverts before** balance moves. | | **Preview** | `TaxPreview` debit/credit/tax stay the source of truth for dApp max-sell; do not invent a second formula. | | **No rug APIs** | No pause/blacklist/reflection. Do not change buy outbound split. | | **Migrate** | Do not treat LocalTerra store ids as columbus-5. Factory whitelist / MsgMigrate is out of scope except a one-line “needs store+migrate after pin”. | | **#710 / #623** | Do not reopen those tickets; they are greedy extra-debit tests and tax-on harness, not this allowance invariant. | ## Relevant files | Path | Why | |------|------| | `smartcontracts/contracts/community-tax-token/src/contract.rs` | `execute_send_from` deducts `amount` then `apply_transfer` | | `smartcontracts/contracts/community-tax-token/src/tax.rs` | `apply_transfer` / `tax_preview` debit for pair-direct Sell | | `smartcontracts/contracts/community-tax-token/src/lib.rs` | Document SendFrom allowance vs **T592-2** | | `smartcontracts/contracts/community-tax-token/src/multitest.rs` | Add SendFrom allowance rows (none today) | | `skills/AGENTS_COMMUNITY_TAX_CW20.md` | **T592-2** currently names `Send` only; add SendFrom debit=allowance | | `docs/contracts-security-audit.md` / `docs/contracts-terraclassic.md` | Same invariant sentence if those sections list entrypoints | Do not change pair, router, or factory wasm for this. ## Recommended direction 1. Classify / preview **before** `deduct_allowance` on `SendFrom` (same `kind`/`debit` as `apply_transfer`). 2. For pair-direct **Sell**, `deduct_allowance(…, debit)` where `debit = amount + tax`. Other kinds (`Honest`, `Buy` outbound is not a `SendFrom` from the trader in the usual path, Transfer tax if it can appear on `SendFrom`) deduct the **same debit** `apply_transfer` will take from `owner`. Fail closed if allowance &lt; debit. 3. Then `apply_transfer` as today (pair credit `amount`, extra-debit owner). 4. Keep `TransferFrom` 1:1 + `deduct_allowance(amount)` — it is not a Swap Send (**T592-7**). 5. Multitest: table for allowance `amount` (must revert), `amount+tax` (success, allowance 0), unlimited allowance, unregistered pair 1:1, spoofed `trader` still extra-debits owner, manager-directory skip does **not** extra-debit (allowance = `amount`). 6. Optional: `make verify-issue-*` gate grepping the new tests. Do not weaken B-lt 1:1 `SendFrom`. ## Acceptance criteria - [ ] **AC1.** Listed-pair `SendFrom+Swap` with allowance == declared `amount` **reverts**; no owner debit, no pair credit, no sink credit, allowance unchanged. - [ ] **AC2.** Same call with allowance == `TaxPreview.debit` succeeds; owner −debit, pair +`amount`, sinks +tax, remaining allowance 0. - [ ] **AC3.** `SendFrom` cannot skip sell tax (same extra-debit as owner `Send` for pair-direct). - [ ] **AC4.** `TransferFrom` to the listed pair (no Swap hook) remains 1:1; allowance decreases by `amount` only. - [ ] **AC5.** Unregistered pair / Honest path: `SendFrom` debit = `amount`; allowance = `amount`. - [ ] **AC6.** Pair-direct spoofed `trader` does not move the victim; owner is extra-debited (**T592-13**). - [ ] **AC7.** Manager-directory / manager-role skip: no extra-debit; allowance = `amount` (**#609** / **#633**). - [ ] **AC8.** Docs/skills: **T592-2** states SendFrom allowance covers economic debit. No pair/router math change. - [ ] **AC9.** Existing `sell_extra_debit_on_swap_send` / greedy **#710** tests stay green. ## Test plan (functional paths) | # | Path | Expect | |---|------|--------| | T1 | Listed pair, allowance = 1_000_000, `SendFrom` 1_000_000 Swap | Revert; balances unchanged | | T2 | Allowance = 1_050_000, same `SendFrom` | Owner −1_050_000, pair +1_000_000, sink +50_000, allowance 0 | | T3 | Owner `Send` 1_000_000 Swap (control) | Still extra-debit (existing test) | | T4 | Unregistered pair `SendFrom` 1_000_000 | 1:1; allowance −1_000_000 | | T5 | `TransferFrom` 1_000_000 to listed pair | 1:1; allowance −1_000_000 | | T6 | Unlimited allowance + listed Sell `SendFrom` | Extra-debit; pair 1:1 inbound | | T7 | Pair-direct `trader: victim` on `SendFrom` | Owner extra-debited; victim unchanged | | T8 | Directory-exempt owner, listed Sell `SendFrom` | 1:1 debit; allowance = amount | | T9 | Greedy Swap hook on `SendFrom` | Same debit/allowance as non-greedy Swap | | T10 | Allowance = debit − 1 | Revert | `cargo test` in `community-tax-token` (and existing `make verify-issue-592` / `verify-issue-710` if those still invoke this crate). No mainnet txs in this ticket. ## Attack / abuse tests | # | Attempt | Expect | |---|---------|--------| | A1 | Spender with allowance == `amount` forces listed Sell | **Revert** (must not extra-debit beyond allowance) | | A2 | Spender uses `SendFrom` instead of `Send` to skip sell tax | Tax still applies; cannot 1:1-sell through spender | | A3 | Pair-direct `trader` spoof to extra-debit a third wallet | Victim unchanged; owner pays extra-debit | | A4 | `TransferFrom` used as a fake sell (no Swap hook) | Stays 1:1; do not start taxing provide | | A5 | Allowance exactly `debit`, then second `SendFrom` 1 | Revert; no second extra-debit | Do not publish live instance addresses, spend keys, or a copy-paste drain recipe against columbus-5. ## Verification criteria - New multitest names are greppable and fail if `deduct_allowance` is left on declared `amount` for pair-direct Sell. - `TaxPreview.debit` == owner balance delta on success path T2. - `make verify-issue-592` (or crate test target) green; B-lt tax-off `SendFrom` still 1:1. - Reviewer can confirm pair/router crates are untouched. ## First-pass model recommendation Recommendation: grok-high Rationale: Community-tax wasm (**T592**) plus CW20 **allowance** accounting. Founder-required surface (contracts / auth / wasm). Fix is not a local three-file UI helper: `execute_send_from` must stay aligned with `apply_transfer` / `TaxPreview`, classification (pair-direct vs router hop, directory skip, greedy serde), and live listed code_ids that need a later migrate. Wrong direction (skip tax on `SendFrom`, or extra-debit `TransferFrom`) breaks **H-01** or opens tax evasion. Verify with crate multitest (T1–T10 / A1–A5), not a single snapshot. Composer’s low-risk local-edit bar does not hold.
Author
Owner

cl8y-agent-control: queued implement job c44127c6-0854-400e-95a0-e64a09da934b (not executed; no Hetzner VM).

cl8y-agent-control: queued `implement` job `c44127c6-0854-400e-95a0-e64a09da934b` (not executed; no Hetzner VM).
Author
Owner

Merged onto origin/main via #1233. make verify-issue-1228 was 9/9 (crate + docs). AC matched: SendFrom deducts TaxPreview.debit; TransferFrom still amount.

Leftover (not this ticket): listed community-tax wasm 11611 / 11619 still need store+migrate so live tokens pick up the allowance debit. Same leftover as #1237 token wasm. Tracked in a new ops issue. Do not overload #1232 (pair DISCOUNT_REGISTRY / ORACLE_STATE backfill).

CI: Woodpecker did not post live statuses; merge used local gitleaks + Forgejo status ci/woodpecker/pr/woodpecker.

Merged onto `origin/main` via #1233. `make verify-issue-1228` was 9/9 (crate + docs). AC matched: `SendFrom` deducts `TaxPreview.debit`; `TransferFrom` still `amount`. Leftover (not this ticket): listed community-tax wasm **11611** / **11619** still need store+migrate so live tokens pick up the allowance debit. Same leftover as #1237 token wasm. Tracked in a new ops issue. Do not overload #1232 (pair `DISCOUNT_REGISTRY` / `ORACLE_STATE` backfill). CI: Woodpecker did not post live statuses; merge used local gitleaks + Forgejo status `ci/woodpecker/pr/woodpecker`.
Author
Owner

Follow-up ops ticket: #1246. Woodpecker enablement: #1247.

Follow-up ops ticket: #1246. Woodpecker enablement: #1247.
Author
Owner

columbus-5 wasm for this ticket is not live. Ops tracker: #1246.

Live pairs are 11639 / 1.16.0 (#712). LCD HybridSimulation belief_price: "0" still 200 (same output as omitted belief) — #1230 / #1227 / #1231 execute/query wasm still needs a 1.17.0 store+migrate (git CONTRACT_VERSION is still 1.15.0). Tax listed pin is 11630 (not 11611/11619); ALPHA terra1x6e64… is 1.0.0 and needs a tax cw2 bump + CMM migrate for #1228 / #1237.

columbus-5 wasm for this ticket is **not** live. Ops tracker: [#1246](https://git.cl8y.com/code/cl8y-dex-terraclassic/issues/1246). Live pairs are **11639 / 1.16.0** (#712). LCD `HybridSimulation` `belief_price: "0"` still **200** (same output as omitted belief) — #1230 / #1227 / #1231 execute/query wasm still needs a **1.17.0** store+migrate (git `CONTRACT_VERSION` is still 1.15.0). Tax listed pin is **11630** (not 11611/11619); ALPHA `terra1x6e64…` is 1.0.0 and needs a tax cw2 bump + CMM migrate for #1228 / #1237.
Author
Owner

Tax wasm stored and listed as 11666 (tx 5A45A84A…, whitelist A9E19924…). Live ALPHA instance is still 11630 / 1.0.0 (CMM admin; no treasury migrate execute). Instance leftover #1250 + ustr-cmm #43. Trading is not frozen: 11630 stays on the whitelist and pair pins still match.

Tax wasm **stored and listed** as **11666** (tx `5A45A84A…`, whitelist `A9E19924…`). Live ALPHA instance is still **11630 / 1.0.0** (CMM admin; no treasury migrate execute). Instance leftover [#1250](https://git.cl8y.com/code/cl8y-dex-terraclassic/issues/1250) + ustr-cmm [#43](https://git.cl8y.com/code/ustr-cmm/issues/43). Trading is **not** frozen: 11630 stays on the whitelist and pair pins still match.
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#1228
No description provided.