Skip to content

fix(property-token): enforce bridge multisig expiry and operator quorum hygiene - #620

Merged
Qoder-Undefined merged 2 commits into
MERIDIAN-CITY:mainfrom
PatrickKish1:fix/610-bridge-multisig-timeouts
Jul 27, 2026
Merged

fix(property-token): enforce bridge multisig expiry and operator quorum hygiene#620
Qoder-Undefined merged 2 commits into
MERIDIAN-CITY:mainfrom
PatrickKish1:fix/610-bridge-multisig-timeouts

Conversation

@PatrickKish1

@PatrickKish1 PatrickKish1 commented Jul 27, 2026

Copy link
Copy Markdown

Summary

  • Always set expires_at from timeout_blocks or BridgeConfig.default_timeout_blocks, and enforce expiry on both sign_bridge_request and execute_bridge via a shared helper that marks the request expired, clears the pending slot, unlocks a zero-address lock, and emits BridgeRequestExpired.
  • Count only current operators toward quorum (removed operators’ signatures no longer count); refuse remove_bridge_operator when it would drop below min_signatures_required.
  • Unit tests for expired sign/execute (+ unlock), duplicate signature rejection, and mid-request operator rotation; ink contract build fixed (no_main, event topic limit on BridgeRequestCreated).

Closes #610

Test plan

  • cd meridian-contracts/contracts/property-token && cargo +nightly test --lib
  • cargo +nightly contract build
  • Confirm expired initiate → sign returns RequestExpired and token can be re-bridged
  • Confirm quorum lock → advance past expiry → execute returns RequestExpired and token unlocked
  • Confirm same operator signing twice → AlreadySigned
  • Confirm remove operator mid-request drops their vote; add + sign with new operator to complete

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.

Enforce bridge multi-sig timeouts and prevent signature-replay / operator-capture in PropertyToken

2 participants