Skip to content

fix(tempo): align native multisig with tip-1061 - #389

Merged
jxom merged 3 commits into
mainfrom
jxom/align-multisig-version
Aug 17, 2026
Merged

fix(tempo): align native multisig with tip-1061#389
jxom merged 3 commits into
mainfrom
jxom/align-multisig-version

Conversation

@jxom

@jxom jxom commented Aug 17, 2026

Copy link
Copy Markdown
Member

Aligns native multisig signing and validation with the latest TIP-1061 implementation in tempoxyz/tempo#4069. Adds version binding, current limits, nested approval handling, initialConfig, and config-rotation coverage.

@vercel

vercel Bot commented Aug 17, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
ox Error Error Aug 17, 2026 7:04am

Request Review

@pkg-pr-new

pkg-pr-new Bot commented Aug 17, 2026

Copy link
Copy Markdown

Open in StackBlitz

npm i https://pkg.pr.new/ox@389

commit: f7d0aad

@jxom
jxom marked this pull request as ready for review August 17, 2026 06:12

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 443e534f2c

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

@@ -0,0 +1,11 @@
---
'ox': patch

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P1 Badge Release the initialConfig rename as a breaking change

This patch removes the public genesisConfig input from both MultisigConfig.getSignPayload and SignatureEnvelope.from, so existing Ox 1.x consumers will fail to type-check—and untyped SignatureEnvelope.from({ genesisConfig, signatures }) calls will throw—after accepting a patch upgrade. Preserve genesisConfig as a compatibility alias or mark this as a major changeset and provide the required before/after diff migration fence.

AGENTS.md reference: AGENTS.md:L118-L121

Useful? React with 👍 / 👎.

*/
export function getSignPayload(value: getSignPayload.Value): Hex.Hex {
const { payload } = value
const { payload, version = 0n } = value

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Badge Update the post-rotation signing guide with the config version

When an account has undergone any config update, this default silently derives a version-0 digest unless the caller passes the current version. The shipped guide at site/src/pages/tempo/guides/transaction-envelopes/multisig-transactions.mdx:151-205 explicitly says its later-transaction flow works after the onchain config has been updated, but it calls both getSignPayload and sortMultisigApprovals without version; following that guide after the first update therefore produces approvals the node rejects. Update the guide to obtain and pass the current config version alongside this API change.

AGENTS.md reference: AGENTS.md:L64-L69

Useful? React with 👍 / 👎.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 041c8a9dcf

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".


/** Maximum number of owners allowed in a native multisig config. */
export const maxOwners = 255
export const maxOwners = 50

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Badge Correct the migration guide's multisig owner limit

When users migrate a multisig with 51–255 owners, MultisigConfig.assert now rejects it because this constant is 50, but site/src/pages/migrating-from-v0.md:155 still explicitly documents MultisigConfig.maxOwners as 255. Update the migration guide alongside this protocol-limit change so it does not recommend configurations the library rejects.

AGENTS.md reference: AGENTS.md:L64-L67

Useful? React with 👍 / 👎.

Comment on lines +555 to +556
const accountBinding =
account !== undefined ? { account, isAdmin: isAdmin ?? false } : {}

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Badge Update the admin guide for non-admin account bindings

When decoding an RPC authorization that contains account but omits isAdmin, this now preserves the binding and returns isAdmin: false; however, site/src/pages/tempo/guides/access-keys/admin.mdx:141-144 still says Ox drops orphan admin fields and instructs users to pair the account only with isAdmin: true. Update that guidance to explain that account-bound non-admin authorizations are now supported.

AGENTS.md reference: AGENTS.md:L64-L67

Useful? React with 👍 / 👎.

Comment on lines +87 to +90
export type Signature<numberType = number> = OneOf<
| SignatureEnvelope.Primitive<numberType>
| SignatureEnvelope.Multisig<numberType>
>

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Badge Remove the obsolete access-key prohibition

Now that key authorizations accept multisig signatures, the shipped multisig guide at site/src/pages/tempo/guides/transaction-envelopes/multisig-transactions.mdx:239-243 still tells users never to include keyAuthorization and claims native multisig accounts cannot use AccountKeychain. That directly contradicts the newly supported bootstrap and subsequent access-key flows, so update the guide to document the multisig authorization procedure instead of steering users away from it.

AGENTS.md reference: AGENTS.md:L64-L67

Useful? React with 👍 / 👎.

@jxom
jxom merged commit 8d66309 into main Aug 17, 2026
14 of 15 checks passed
@jxom
jxom deleted the jxom/align-multisig-version branch August 17, 2026 07:06
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.

1 participant