OpenZeppelin / OpenZeppelin/guardian

Feature request: amount-tiered signature thresholds for send_asset

Open
#262 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

enhancement
Dominant language
Rust
Stars
10
Forks
20
Avg merge
2d 11h
Merged PRs (30d)
43

Description

Problem

Add support for amount-tiered signature thresholds on send_asset, so the number of cosigner signatures required scales with the transaction's value (and optionally per-faucet).

Today the transaction_threshold is computed purely from which procedures the tx calls (per the cryptography audit). The amount field of a p2id send is opaque to the threshold logic — confirmed in P2idProposalMetadata, which carries only recipientId, faucetId, amount with no tier or limit field.

This means a treasury sending 1 USDC and a treasury sending 1,000,000 USDC require exactly the same number of signatures. There's no native way to express "small ops should be fast, large transfers should require unanimous review."

A multisig configured for the current model has to pick one of two unsatisfying defaults:

  • Low send_asset threshold → small operational sends are fast, but the same threshold enables draining the treasury.
  • High send_asset threshold → large transfers are properly gated, but every petty-cash send becomes a coordination event.

Amount-tiered thresholds resolve this trade-off and are table-stakes for production-grade multisigs targeting institutional treasuries — Safe (via Allowance / Spending Limit modules), Squads (Spending Limits), Fireblocks (policy engine), and BitGo (wallet policy) all ship this primitive.

Adding it to Miden multisig would unlock realistic treasury operations: small recurring spends approved quickly, mid-tier vendor payments requiring a majority, large capital allocations requiring unanimous consent — all under a single account, configurable per faucet.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with the send_asset threshold logic described in the issue and inspect packages/miden-multisig-client/src/types/proposal.ts, especially P2idProposalMetadata, alongside the linked cryptography audit. Define how amount tiers and optional per-faucet limits should be represented and evaluated, then verify that small, mid-tier, and large transfers require the configured signature counts.

Written by the indexing model from the issue text.

Assessment

Tech stack
rust
Domain
authorization, security
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Quiet
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.