Accept wrap-mapper governance transfer (DEX 2-of-3, after 2026-08-22 12:34 UTC) #525

Closed
opened 2026-08-15 12:35:41 +00:00 by PlasticDigits · 13 comments
PlasticDigits commented 2026-08-15 12:35:41 +00:00 (Migrated from gitlab.com)

Summary

cl8y2_admin proposed wrap-mapper governance to the DEX 2-of-3. Do not accept before execute_after. After the 7-day timelock, two of multisig1/multisig2/multisig3 must accept_governance_transfer.

On-chain (columbus-5, verified 2026-08-15)

Field Value
wrap-mapper terra1xuuuhpmyd5t29ry7mydg7ra2q2phrwhx7j28nx7x9sjw6zznkumsz0nmd2
code_id 11574 (split fees live: fee_wrap_bps=200, fee_unwrap_bps=51)
config.governance (until accept) terra1xsecn4snv94ezcez0z3vq8an9j4h4kxxcydp8l (cl8y2_admin)
wasm admin still cl8y2_admin (separate from this propose/accept)
pending_governance.new_governance terra1zlmv2xydxcusurtr6rl78wsvytdc6mfex6hep7
pending_governance.execute_after 1787402049967323971 ns = 2026-08-22T12:34:09Z
terrad query wasm contract-state smart \
  terra1xuuuhpmyd5t29ry7mydg7ra2q2phrwhx7j28nx7x9sjw6zznkumsz0nmd2 \
  '{"pending_governance":{}}' \
  --node https://terra-classic-rpc.publicnode.com:443 --output json

Accept before that timestamp fails. Current governance can still {"cancel_governance_transfer":{}}.

This is a two-step mapper API (propose_governance_transfer / accept_governance_transfer). There is no update_config.

Accept (after 2026-08-22T12:34:09Z) — DEX 2-of-3

export CHAIN_ID=columbus-5
export NODE=https://terra-classic-rpc.publicnode.com:443
export KEYRING=file
export HOME_TERRA=$HOME/.terra
export MAPPER=terra1xuuuhpmyd5t29ry7mydg7ra2q2phrwhx7j28nx7x9sjw6zznkumsz0nmd2
export MSIG=terra1zlmv2xydxcusurtr6rl78wsvytdc6mfex6hep7

# 1) confirm timelock elapsed
terrad query wasm contract-state smart "$MAPPER" '{"pending_governance":{}}' \
  --node "$NODE" --output json

terrad tx wasm execute "$MAPPER" '{"accept_governance_transfer":{}}' \
  --from multisig_2of3 \
  --chain-id "$CHAIN_ID" --node "$NODE" \
  --keyring-backend "$KEYRING" --home "$HOME_TERRA" \
  --gas auto --gas-adjustment 2.0 --gas-prices 28.325uluna \
  --generate-only > wrap-accept-unsigned.json

terrad tx sign wrap-accept-unsigned.json --from multisig1 --multisig "$MSIG" \
  --sign-mode amino-json --chain-id "$CHAIN_ID" --node "$NODE" \
  --keyring-backend "$KEYRING" --home "$HOME_TERRA" > wrap-accept-s1.json
terrad tx sign wrap-accept-unsigned.json --from multisig2 --multisig "$MSIG" \
  --sign-mode amino-json --chain-id "$CHAIN_ID" --node "$NODE" \
  --keyring-backend "$KEYRING" --home "$HOME_TERRA" > wrap-accept-s2.json

terrad tx multisign wrap-accept-unsigned.json multisig_2of3 \
  wrap-accept-s1.json wrap-accept-s2.json \
  --chain-id "$CHAIN_ID" --node "$NODE" \
  --keyring-backend "$KEYRING" --home "$HOME_TERRA" > wrap-accept-signed.json

terrad tx broadcast wrap-accept-signed.json --chain-id "$CHAIN_ID" --node "$NODE"

Signing flow: governance emergency rehearsal.

Post-accept verify

terrad query wasm contract-state smart "$MAPPER" '{"config":{}}' --node "$NODE" --output json
# data.governance == terra1zlmv2xydxcusurtr6rl78wsvytdc6mfex6hep7
terrad query wasm contract-state smart "$MAPPER" '{"pending_governance":{}}' --node "$NODE" --output json
# new_governance == null

After accept, pause / set_fees / mappings require the DEX 2-of-3 (overrides ops invariant O6). Update deployments/mainnet-ust1-wrap/REGISTRY.md governance split.

Out of scope here

  • Wasm set-contract-admin (still cl8y2_admin) — optional follow-up, no timelock.
  • ust1-window / oracle / CMM treasury / token primary minters — not part of this propose.
  • #503 wrap ops (O6)
  • #516 split fees (already on code 11574)
  • Upstream mapper: ustr-cmm
## Summary `cl8y2_admin` proposed wrap-mapper governance to the DEX 2-of-3. **Do not accept before `execute_after`.** After the 7-day timelock, two of `multisig1`/`multisig2`/`multisig3` must `accept_governance_transfer`. ## On-chain (columbus-5, verified 2026-08-15) | Field | Value | |-------|--------| | wrap-mapper | `terra1xuuuhpmyd5t29ry7mydg7ra2q2phrwhx7j28nx7x9sjw6zznkumsz0nmd2` | | code_id | **11574** (split fees live: `fee_wrap_bps=200`, `fee_unwrap_bps=51`) | | `config.governance` (until accept) | `terra1xsecn4snv94ezcez0z3vq8an9j4h4kxxcydp8l` (`cl8y2_admin`) | | wasm admin | still `cl8y2_admin` (separate from this propose/accept) | | `pending_governance.new_governance` | `terra1zlmv2xydxcusurtr6rl78wsvytdc6mfex6hep7` | | `pending_governance.execute_after` | `1787402049967323971` ns = **2026-08-22T12:34:09Z** | ```bash terrad query wasm contract-state smart \ terra1xuuuhpmyd5t29ry7mydg7ra2q2phrwhx7j28nx7x9sjw6zznkumsz0nmd2 \ '{"pending_governance":{}}' \ --node https://terra-classic-rpc.publicnode.com:443 --output json ``` Accept **before** that timestamp fails. Current governance can still `{"cancel_governance_transfer":{}}`. This is a two-step mapper API (`propose_governance_transfer` / `accept_governance_transfer`). There is no `update_config`. ## Accept (after 2026-08-22T12:34:09Z) — DEX 2-of-3 ```bash export CHAIN_ID=columbus-5 export NODE=https://terra-classic-rpc.publicnode.com:443 export KEYRING=file export HOME_TERRA=$HOME/.terra export MAPPER=terra1xuuuhpmyd5t29ry7mydg7ra2q2phrwhx7j28nx7x9sjw6zznkumsz0nmd2 export MSIG=terra1zlmv2xydxcusurtr6rl78wsvytdc6mfex6hep7 # 1) confirm timelock elapsed terrad query wasm contract-state smart "$MAPPER" '{"pending_governance":{}}' \ --node "$NODE" --output json terrad tx wasm execute "$MAPPER" '{"accept_governance_transfer":{}}' \ --from multisig_2of3 \ --chain-id "$CHAIN_ID" --node "$NODE" \ --keyring-backend "$KEYRING" --home "$HOME_TERRA" \ --gas auto --gas-adjustment 2.0 --gas-prices 28.325uluna \ --generate-only > wrap-accept-unsigned.json terrad tx sign wrap-accept-unsigned.json --from multisig1 --multisig "$MSIG" \ --sign-mode amino-json --chain-id "$CHAIN_ID" --node "$NODE" \ --keyring-backend "$KEYRING" --home "$HOME_TERRA" > wrap-accept-s1.json terrad tx sign wrap-accept-unsigned.json --from multisig2 --multisig "$MSIG" \ --sign-mode amino-json --chain-id "$CHAIN_ID" --node "$NODE" \ --keyring-backend "$KEYRING" --home "$HOME_TERRA" > wrap-accept-s2.json terrad tx multisign wrap-accept-unsigned.json multisig_2of3 \ wrap-accept-s1.json wrap-accept-s2.json \ --chain-id "$CHAIN_ID" --node "$NODE" \ --keyring-backend "$KEYRING" --home "$HOME_TERRA" > wrap-accept-signed.json terrad tx broadcast wrap-accept-signed.json --chain-id "$CHAIN_ID" --node "$NODE" ``` Signing flow: [governance emergency rehearsal](https://gitlab.com/PlasticDigits/cl8y-dex-terraclassic/-/blob/main/docs/runbooks/governance-emergency-rehearsal.md#signing-flow-cosmos-multisig). ## Post-accept verify ```bash terrad query wasm contract-state smart "$MAPPER" '{"config":{}}' --node "$NODE" --output json # data.governance == terra1zlmv2xydxcusurtr6rl78wsvytdc6mfex6hep7 terrad query wasm contract-state smart "$MAPPER" '{"pending_governance":{}}' --node "$NODE" --output json # new_governance == null ``` After accept, pause / `set_fees` / mappings require the DEX 2-of-3 (overrides ops invariant **O6**). Update [`deployments/mainnet-ust1-wrap/REGISTRY.md`](https://gitlab.com/PlasticDigits/cl8y-dex-terraclassic/-/blob/main/deployments/mainnet-ust1-wrap/REGISTRY.md) governance split. ## Out of scope here - Wasm `set-contract-admin` (still `cl8y2_admin`) — optional follow-up, no timelock. - ust1-window / oracle / CMM treasury / token primary minters — not part of this propose. ## Related - [#503](https://gitlab.com/PlasticDigits/cl8y-dex-terraclassic/-/work_items/503) wrap ops (O6) - [#516](https://gitlab.com/PlasticDigits/cl8y-dex-terraclassic/-/work_items/516) split fees (already on code 11574) - Upstream mapper: [ustr-cmm](https://gitlab.com/PlasticDigits2/ustr-cmm)
PlasticDigits commented 2026-08-15 12:35:42 +00:00 (Migrated from gitlab.com)

changed due date to August 22, 2026

changed due date to August 22, 2026
PlasticDigits commented 2026-08-15 12:35:42 +00:00 (Migrated from gitlab.com)

marked as related to #503

marked as related to #503
PlasticDigits commented 2026-08-15 12:35:43 +00:00 (Migrated from gitlab.com)

marked as related to #516

marked as related to #516
PlasticDigits commented 2026-08-15 12:42:56 +00:00 (Migrated from gitlab.com)

mentioned in issue PlasticDigits2/ustr-cmm#15

mentioned in issue PlasticDigits2/ustr-cmm#15
PlasticDigits commented 2026-08-15 12:43:42 +00:00 (Migrated from gitlab.com)

mentioned in issue #526

mentioned in issue #526
PlasticDigits commented 2026-08-15 12:43:43 +00:00 (Migrated from gitlab.com)

marked as related to #526

marked as related to #526
PlasticDigits commented 2026-08-15 12:44:01 +00:00 (Migrated from gitlab.com)

Parent tracker for remaining EOA → multisig work: https://gitlab.com/PlasticDigits/cl8y-dex-terraclassic/-/work_items/526 (ustr-cmm#15, ust1-window#30, bridge#135).

Parent tracker for remaining EOA → multisig work: https://gitlab.com/PlasticDigits/cl8y-dex-terraclassic/-/work_items/526 (ustr-cmm#15, ust1-window#30, bridge#135).
PlasticDigits commented 2026-08-25 05:56:53 +00:00 (Migrated from gitlab.com)

Accepted on columbus-5.

Pause / set_fees / mappings now require the 2-of-3. Registry + O6 updated in-repo (deployments/mainnet-ust1-wrap/REGISTRY.md). Parent leftover tracker: #526.

Accepted on columbus-5. - Tx https://finder.terraclassic.community/columbus-5/tx/02F139F16BEA7322EC87C14FC8EB4EEEFB9E66B6CB2DED2D95AEC291FE0F00A2 height 30101435 - Signer: DEX 2-of-3 terra1zlmv2xydxcusurtr6rl78wsvytdc6mfex6hep7 (multisig1 + multisig2) - config.governance = terra1zlmv2…hep7 - pending_governance.new_governance = null - Fees unchanged: fee_wrap_bps=200 / fee_unwrap_bps=51, paused=false - Wasm admin still cl8y2_admin (terra1xsecn4…) — out of scope here Pause / set_fees / mappings now require the 2-of-3. Registry + O6 updated in-repo (deployments/mainnet-ust1-wrap/REGISTRY.md). Parent leftover tracker: #526.
PlasticDigits commented 2026-08-25 05:56:59 +00:00 (Migrated from gitlab.com)

mentioned in issue #503

mentioned in issue #503
PlasticDigits (Migrated from gitlab.com) closed this issue 2026-08-25 05:57:08 +00:00
PlasticDigits commented 2026-08-25 06:29:06 +00:00 (Migrated from gitlab.com)

mentioned in commit 093cd1dc17

mentioned in commit 093cd1dc170b5578a097bee89f06fd0112fda94b
PlasticDigits commented 2026-08-25 06:29:43 +00:00 (Migrated from gitlab.com)

mentioned in issue #638

mentioned in issue #638
PlasticDigits commented 2026-08-28 09:24:26 +00:00 (Migrated from gitlab.com)

mentioned in issue #697

mentioned in issue #697
PlasticDigits commented 2026-08-28 09:24:27 +00:00 (Migrated from gitlab.com)

marked as related to #697

marked as related to #697
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#525
No description provided.