Skip to content

merge queue: checking #5052 on main (3c68571) - #5059

Closed
mergify[bot] wants to merge 3 commits into
mainfrom
mergify/merge-queue/6bfc1a0fc6
Closed

mergify[bot] wants to merge 3 commits into
mainfrom
mergify/merge-queue/6bfc1a0fc6

Conversation

@mergify

@mergify mergify Bot commented Oct 6, 2026 •

Copy link
Copy Markdown
Contributor

🎉 This pull request has been checked successfully and will be merged soon. 🎉

#5052 is queued for merge on branch main (3c68571).

This pull request has been created by Mergify to check the mergeability of #5052.
You don't need to do anything. Mergify will close this pull request automatically when it is complete.

Required conditions of queue rule main-queue for merge:

  • github-review-approved [🛡 GitHub branch protection]
  • any of [🛡 GitHub branch protection]:
    • check-success = test-e2e-with-device-automation
    • check-neutral = test-e2e-with-device-automation
    • check-skipped = test-e2e-with-device-automation
  • any of [🛡 GitHub branch protection]:
    • check-success = check-benchmarks
    • check-neutral = check-benchmarks
    • check-skipped = check-benchmarks
  • any of [🛡 GitHub branch protection]:
    • check-success = check-packages
    • check-neutral = check-packages
    • check-skipped = check-packages
  • any of [🛡 GitHub branch protection]:
    • check-success = build-binaries
    • check-neutral = build-binaries
    • check-skipped = build-binaries
  • any of [🛡 GitHub branch protection]:
    • check-success = build-wasm (wasm-for-tests, build-wasm-tests-scripts, wasm_for_tests/*.wasm)
    • check-neutral = build-wasm (wasm-for-tests, build-wasm-tests-scripts, wasm_for_tests/*.wasm)
    • check-skipped = build-wasm (wasm-for-tests, build-wasm-tests-scripts, wasm_for_tests/*.wasm)
  • any of [🛡 GitHub branch protection]:
    • check-success = lints
    • check-neutral = lints
    • check-skipped = lints
  • any of [🛡 GitHub branch protection]:
    • check-success = rust-docs
    • check-neutral = rust-docs
    • check-skipped = rust-docs
  • any of [🛡 GitHub branch protection]:
    • check-success = test-wasm
    • check-neutral = test-wasm
    • check-skipped = test-wasm
  • any of [🛡 GitHub branch protection]:
    • check-success = test-e2e (0)
    • check-neutral = test-e2e (0)
    • check-skipped = test-e2e (0)
  • any of [🛡 GitHub branch protection]:
    • check-success = test-e2e (1)
    • check-neutral = test-e2e (1)
    • check-skipped = test-e2e (1)
  • any of [🛡 GitHub branch protection]:
    • check-success = test-e2e (2)
    • check-neutral = test-e2e (2)
    • check-skipped = test-e2e (2)
  • any of [🛡 GitHub branch protection]:
    • check-success = test-e2e (3)
    • check-neutral = test-e2e (3)
    • check-skipped = test-e2e (3)
  • any of [🛡 GitHub branch protection]:
    • check-success = test-e2e (4)
    • check-neutral = test-e2e (4)
    • check-skipped = test-e2e (4)
  • any of [🛡 GitHub branch protection]:
    • check-success = test-integration
    • check-neutral = test-integration
    • check-skipped = test-integration
  • any of [🛡 GitHub branch protection]:
    • check-success = test-unit
    • check-neutral = test-unit
    • check-skipped = test-unit
  • any of [🛡 GitHub branch protection]:
    • check-neutral = Mergify Merge Protections
    • check-skipped = Mergify Merge Protections
    • check-success = Mergify Merge Protections

Required conditions to stay in the queue:

---
all_scopes: false
checking_base_sha: 3c68571b9caea4b61ead6d8193f75b939c1f22a8
previous_check_retries: []
previous_failed_batches: []
pull_requests:
  - number: 5052
    scopes: []
scopes: []
...

Fraccaman and others added 3 commits October 6, 2026 11:07
An ICS20 `MsgTransfer` whose packet sender is the IBC escrow (`#IBC`)
was accepted: escrowing the sent tokens is a no-op transfer from the
escrow to itself, so no balance changes, while the withdraw counter and
the packet commitment are still written. The counterparty then mints
vouchers which can be returned to release genuine escrowed tokens, and
since no balance key changes the rate limits were skipped too. Burning
vouchers held in escrow, or sending NFTs held in escrow, abuses the same
missing authorization.

The IBC VP now rejects any (NFT) transfer whose sender is an internal
address. The fix lives only in the native VP, so the wasm txs are
unchanged. The IBC message is now decoded once in the VP and shared by
the sender and rate limit checks.

Add regression tests running the real `tx_ibc.wasm`, sharing the IBC
channel setup with the existing escrow drain tests.
The `outgoing_shielded_action` bench built its ICS20 `MsgTransfer` with
the effective address of the source as the packet sender. For a shielded
source that is the MASP internal address, which the IBC VP now rejects:
no tx can authorize a transfer on behalf of a protocol-owned address.

Real shielded sends are unaffected: the SDK uses a transparent refund
address as the packet sender, while the funds are still drawn from the
MASP through the shielded section of the tx. Mirror that behavior in the
bench, so it exercises the txs actually produced in practice.
@mergify mergify Bot closed this Oct 6, 2026
@mergify
mergify Bot deleted the mergify/merge-queue/6bfc1a0fc6 branch October 6, 2026 13:16
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants