Skip to content

docs(tip-0001): add tempo transaction spec#3808

Merged
legion2002 merged 2 commits into
mainfrom
tip/0001
May 12, 2026
Merged

docs(tip-0001): add tempo transaction spec#3808
legion2002 merged 2 commits into
mainfrom
tip/0001

Conversation

@legion2002
Copy link
Copy Markdown
Contributor

Adds TIP-0001 by copying the existing Tempo Transactions spec into the repo as a retroactive TIP.

Tempo Transactions shipped at genesis and are already live on mainnet, so this PR makes the existing spec discoverable alongside the rest of the TIP set. It also points readers to the related follow-on transaction TIPs: TIP-1007, TIP-1009, TIP-1011, and TIP-1020.

Copy link
Copy Markdown

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

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: bfd2b21e9a

ℹ️ 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".

Comment thread tips/tip-0001.md
Comment on lines +347 to +351
nonce,
valid_before,
valid_after,
0x80, // fee_token encoded as EMPTY (skipped)
0x00 // placeholder byte for fee_payer_signature
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 Include all signed fields in sender hash example

The sender hash example omits post-valid_after fields except fee-token/signature placeholders, but the real signing path (TempoTransaction::encode_for_signing -> rlp_encode_fields) also signs aa_authorization_list and optional key_authorization (crates/primitives/src/transaction/tempo_transaction.rs, around lines 739-749 and 477-483). Wallets or SDKs implementing this example will compute a different hash for transactions using those features, causing otherwise valid user signatures to be rejected.

Useful? React with 👍 / 👎.

Comment thread tips/tip-0001.md
Comment on lines +391 to +395
valid_before,
valid_after,
fee_token, // fee_token ALWAYS included
sender_address, // 20-byte sender address
key_authorization,
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 Add authorization list to fee-payer hash example

The fee-payer hash pseudocode jumps from sender_address to key_authorization and never includes aa_authorization_list, but the implementation hashes the authorization list as part of the same field encoder (rlp_encode_fields in crates/primitives/src/transaction/tempo_transaction.rs, lines 477-483). Any sponsor service following this snippet will produce invalid fee-payer signatures whenever aa_authorization_list is non-empty.

Useful? React with 👍 / 👎.

Comment thread tips/tip-0001.md
Comment on lines +486 to +489
key_id,
expiry?, // Optional trailing field (omitted or 0x80 if None)
limits?, // Optional trailing field (omitted or 0x80 if None)
signature // PrimitiveSignature bytes
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 Encode allowed_calls in KeyAuthorization layout

This RLP layout lists signature immediately after limits?, but the current KeyAuthorization format includes allowed_calls? before the signature (see KeyAuthorization docs and encoding in crates/primitives/src/transaction/key_authorization.rs). Implementers that manually encode this structure from the TIP will produce mismatched key-authorization digests/signatures once call scopes are used.

Useful? React with 👍 / 👎.

@github-actions
Copy link
Copy Markdown
Contributor

This PR has been marked stale due to 7 days of inactivity.

@github-actions github-actions Bot added the stale label May 12, 2026
@legion2002 legion2002 enabled auto-merge May 12, 2026 14:58
Comment thread tips/tip-0001.md

**Assessment:** While this transaction type introduces additional pre-execution validation costs, all costs are bounded to reasonable limits. The mempool complexity issues around cross-transaction dependencies already exist in Ethereum due to EIP-7702 and accounts with code, so the incremental cost from this transaction type is acceptable given these existing constraints.

## T2 -> T3 Migration
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.

unsure if we still need this section since we're at T4 now

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

yup, can update in the docs too

@legion2002 legion2002 added this pull request to the merge queue May 12, 2026
Merged via the queue into main with commit 14ed05f May 12, 2026
31 checks passed
@legion2002 legion2002 deleted the tip/0001 branch May 12, 2026 16:54
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants