Skip to content

Require Payer Authorization on Msig Propose - #751

Merged
heifner merged 1 commit into
masterfrom
feature/msig-explicit-payer
Nov 9, 2026
Merged

heifner merged 1 commit into
masterfrom
feature/msig-explicit-payer

Conversation

@heifner

@heifner heifner commented Nov 7, 2026 •

Copy link
Copy Markdown
Contributor

sysio.msig::propose already bills the proposal's RAM to the proposer. It now also requires {proposer, sysio.payer} as the first authorization, so the proposer pays the CPU and NET of propose too, including the NET of the proposed transaction, which is the action's data. approve, unapprove, cancel, exec and invalidate are unchanged. No ABI change.

clio: multisig propose, propose_trx, exec and cancel sent only the payer marker when -P was given without -p. They now send {payer, sysio.payer}, {signer, active}, so clio multisig propose_trx <name> <requested> <trx> <proposer> -P <proposer> works.

Follow-ups outside this repo:

  • Clients: Add Payer Authorization to Msig Propose wire-libraries-ts#149 adds the payer entry in sdk-core's buildProposeAction, and Wire-Network/wire-hub-webapp#240 updates the Hub msig journeys and takes that sdk-core release. @joshglogau
  • A large proposal, such as a contract upgrade, bills up to max_transaction_net_usage of NET to its proposer, so governance proposers need a ROA policy that covers it.

propose already bills the proposal's RAM to the proposer. It now also requires {proposer, sysio.payer} as the first authorization, so the proposer pays its CPU and NET too, including the NET of the proposed transaction.

clio multisig propose, propose_trx, exec and cancel now keep the signer's own permission when -P is given without -p.

Change-Id: I4adac9eab1645a2665cc960e920214b609f2ead0

@huangminghuang huangminghuang left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Reviewed all 11 changed files and relevant authorization/resource-billing code. No actionable findings.

Validation passed: 28 clio cases, 5 WASM probes, and syntax checks for clio and multisig tests. Full contract tests remain unverified because the available build has stale generated protobuf headers. WASM probes used mocked host functions.

@heifner
heifner marked this pull request as ready for review November 9, 2026 23:40
@heifner
heifner merged commit 236436f into master Nov 9, 2026
13 checks passed
heifner added a commit that referenced this pull request Nov 10, 2026
Brings in the context-free action removal (#754), the action data trailing-bytes check (#755) and the msig propose payer (#751). sysio.token, sysio.liq and sysio.swap are rebuilt with wire-cdt master. Master's new transfer trailing-bytes test is kept, and open_tests stays removed.
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