Skip to content

exp: attested signers (TIP-1159) - #552

Draft
jxom wants to merge 4 commits into
mainfrom
exp/attested-signers
Draft

jxom wants to merge 4 commits into
mainfrom
exp/attested-signers

Conversation

@jxom

@jxom jxom commented Nov 1, 2026 •

Copy link
Copy Markdown
Member

Adds experimental ox/tempo support for attested signers (TIP-1159 to TIP-1163). Every new API is marked @experimental.

  • AttestedSigner: getAddress, getSignPayload (attested digest), getPolicyId, getBinding (with slot and lifetime), getKeyId, the Attested Key Registry abi and registryAddress, and the protocol constants (keySlots, maxKeyLifetime, maxValidityWindow, maxSignatureSize, schemes, …).
  • SignatureEnvelope attested (0x06) variant, usable as a transaction signature, a key authorization signature, and a configurable account (0x05) owner approval. Decoding applies the node's canonical-RLP, slot, size, and r/s rules, and attested signatures are rejected inside keychain signatures. Includes RPC and zod schemas and verify.
  • TxEnvelopeTempo.expiringNonceKey (TIP-1009).

The bytes match TIP-1160/1161 at tip/1159 e27480d (key slots, maxKeyLifetime, lifetime-bound binding) and the node at exp/attested-signers c507923. The registry is at TIP-1161's 0x1161000000000000000000000000000000000000, which the node PoC is switching to from 0xA77E57…. 0xfe is a PoC dev scheme that only works on chain 1337.

How to test

SKIP_GLOBAL_SETUP=1 pnpm test --project tempo-unit
SKIP_GLOBAL_SETUP=1 pnpm test --project core src/zod/tempo
pnpm check:types

Generated by Claude Code

Adds experimental ox/tempo support for attested signers (TIP-1159 to
TIP-1163), matching TIP-1160/1161 at tempoxyz/tempo tip/1159 e27480d and
the node PoC at exp/attested-signers c507923:

- AttestedSigner: attested address, attested sign payload, policy ID,
  registration binding (with slot and lifetime), key ID, Attested Key
  Registry ABI and PoC address, and protocol constants.
- SignatureEnvelope `attested` (0x06) variant: canonical RLP decoding with
  the node's rejection rules, RPC shape, verify, and use as a key
  authorization signature and a configurable account owner approval.
  Rejected inside keychain signatures.
- TxEnvelopeTempo.expiringNonceKey (TIP-1009).
- Allows the TSDoc @experimental modifier in jsdoc lint.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01D3nmWiYLFXfCPHgz9FSm6L
@vercel

vercel Bot commented Nov 1, 2026 •

Copy link
Copy Markdown

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

Project Deployment Actions Updated
ox Error Error Nov 1, 2026 10:09pm UTC

Request Review

jxom commented Nov 1, 2026

Copy link
Copy Markdown
Member Author

The red check, Verify / Test Runtime (tempo, env: localnet, tag: edge), isn't from this PR.

  • The only failure is src/tempo/e2e.test.ts › "behavior: TIP-1049 admin access key round-trips through registration". The edge node rejects the self-authorizing admin key transaction with keychain precompile error: Account keychain error: InvalidKeyId.
  • The same job fails with the same test on main at 1c23934 (Changesets run 41222832460). This PR doesn't touch keychain or TIP-1049 code.
  • No fix exists yet. It looks like a behavior change in the edge node for this auth-and-use pattern, so it needs its own change against main.

All other checks pass.


Generated by Claude Code

jxom commented Nov 1, 2026

Copy link
Copy Markdown
Member Author

The Vercel deployment status fails on d9f3a77, but not because of this PR.

  • The same Vercel status fails on fix(tempo): update admin access keys for TIP-1137 #554 (cf7eccb), which is now on main.
  • pnpm docs:build (docs generation and site build) succeeds locally on this head: "✓ built in 21.09s", "1 file generated". So the site builds, and the failure is in the Vercel deployment environment.
  • I can't read the Vercel deployment logs (npx vercel inspect … --logs needs Vercel access) or re-run the deployment from here. Someone with Vercel access needs to check it. No fix exists in the repo yet.

For the edge e2e job: this head now includes #554 (TIP-1137), so it should pass.


Generated by Claude Code

@github-actions

github-actions Bot commented Nov 1, 2026 •

Copy link
Copy Markdown
Contributor

Published ox@0.0.0-pr-552-c597c72 under the pr-552 dist-tag, which follows this pull request until it closes.

pnpm add ox@pr-552
pnpm add ox@0.0.0-pr-552-c597c72

`AttestedSigner.registryAddress` is now `0x1161000000000000000000000000000000000000`,
the address TIP-1161 names, replacing the proof of concept's
`0xA77E570000000000000000000000000000000000`. The default registration
binding changes with it.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01D3nmWiYLFXfCPHgz9FSm6L

This branch had an error being deployed

1 failed deployment
Preview — c597c72d Deployed Nov 1, 2026 by vercel[bot]
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