prove the multisig pallet does what the escrow needs, on a dev node #55

Open
opened 2026-09-15 14:41:10 +00:00 by grenade · 0 comments
Owner

Parent: #54. First child; the spike that turns the design into measured facts (generic.md §14).

Scope

Against quantus-node --dev at the mainnet spec, with quantus-cli's multisig library as the client:

  1. create_multisig 2-of-3 with a nonce; confirm the derived address matches derive_multisig_address computed offline.
  2. Fund it; propose utility.batch_all[transfer, transfer] (the release template with a fee leg); approve from a second signer; execute with the same bytes; confirm both transfers land atomically and the fee leg cannot be dropped by resubmitting different bytes.
  3. Propose the refund template with an expiry; let it expire; confirm remove_expired/claim_deposits behave and that the funds are still reachable by a new proposal.
  4. Make one signer a high-security account and repeat 2; document whether the pallet's HighSecurity whitelist blocks the inner transfer, since a seller with a guardian is a realistic user.
  5. Approve from the third signer after a proposal is already Approved; confirm it is rejected or harmless.
  6. Measure the actual fees paid per step and the block count per step.

Acceptance

A comment on #54 with the measured numbers, the exact call bytes of both templates for a sample trade, and a yes/no on the high-security question. Any surprise becomes a note in doc/escrow-protocol.md the same day.

Depends on

#24 (dev node in CI) for the harness; can start locally before it.

Parent: #54. First child; the spike that turns the design into measured facts (generic.md §14). ## Scope Against `quantus-node --dev` at the mainnet spec, with quantus-cli's multisig library as the client: 1. `create_multisig` 2-of-3 with a nonce; confirm the derived address matches `derive_multisig_address` computed offline. 2. Fund it; propose `utility.batch_all[transfer, transfer]` (the release template with a fee leg); approve from a second signer; `execute` with the same bytes; confirm both transfers land atomically and the fee leg cannot be dropped by resubmitting different bytes. 3. Propose the refund template with an expiry; let it expire; confirm `remove_expired`/`claim_deposits` behave and that the funds are still reachable by a new proposal. 4. Make one signer a high-security account and repeat 2; document whether the pallet's `HighSecurity` whitelist blocks the inner transfer, since a seller with a guardian is a realistic user. 5. Approve from the third signer after a proposal is already `Approved`; confirm it is rejected or harmless. 6. Measure the actual fees paid per step and the block count per step. ## Acceptance A comment on #54 with the measured numbers, the exact call bytes of both templates for a sample trade, and a yes/no on the high-security question. Any surprise becomes a note in `doc/escrow-protocol.md` the same day. ## Depends on #24 (dev node in CI) for the harness; can start locally before it.
grenade added the child label 2026-09-15 14:42:15 +00:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: blackbeard/wallet#55