Skip to content

test: e2e#49

Merged
tmm merged 1 commit intomainfrom
tmm/e2e
Jan 29, 2026
Merged

test: e2e#49
tmm merged 1 commit intomainfrom
tmm/e2e

Conversation

@tmm
Copy link
Copy Markdown
Member

@tmm tmm commented Jan 29, 2026

Adds e2e test setup

@vercel
Copy link
Copy Markdown

vercel Bot commented Jan 29, 2026

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

Project Deployment Review Updated (UTC)
tempo-docs Ready Ready Preview, Comment Jan 29, 2026 5:29pm

Request Review

@tmm tmm merged commit 929bb6b into main Jan 29, 2026
4 checks passed
@tmm tmm deleted the tmm/e2e branch January 29, 2026 17:32
o-az pushed a commit that referenced this pull request Jan 30, 2026
snario pushed a commit that referenced this pull request Feb 3, 2026
* chore: update AA Tx Type spec

* chore: updates

* chore: update
gakonst pushed a commit that referenced this pull request Feb 4, 2026
jenpaff added a commit that referenced this pull request Feb 5, 2026
* chore: `next` branch

* chore: trigger deployment to `next`

* chore: trigger deployment to `next` 2

* chore: trigger deployment to `next` 3

* feat: update to include release notes

* test: e2e (#49)

* chore: trigger deployment to `next` 2

* chore: trigger deployment to `next` 3

* chore: sync lockfile

* docs(foundry): add T1 features - 2D nonces, expiring nonces, access keys, sponsors, batching (#55)

Co-authored-by: George <george@tempo.xyz>

* chore: add small Rust example for expiring nonces (#56)

Co-authored-by: o-az <omaraziz.dev@proton.me>

* fix: prioritize `VERCEL_BRANCH_URL`

* chore: use `VITE_BASE_URL`

* chore: use `VITE_BASE_URL`

* docs(foundry): update tempo args to use --tempo. prefix, add anvil section (#70)

Co-authored-by: Amp <amp@ampcode.com>
Co-authored-by: zerosnacks <95942363+zerosnacks@users.noreply.github.com>

* fix: change andantino from 'removed' to 'deprecated'

Amp-Thread-ID: https://ampcode.com/threads/T-019c2e2d-fdda-704c-8ebe-8ed7cda6f2d0
Co-authored-by: Amp <amp@ampcode.com>

* fix: update andantino to show as deprecated testnet with version

Amp-Thread-ID: https://ampcode.com/threads/T-019c2e2d-fdda-704c-8ebe-8ed7cda6f2d0
Co-authored-by: Amp <amp@ampcode.com>

* docs: foundryup tempo now installs all binaries (#74)

* docs: foundryup tempo now installs all binaries

Amp-Thread-ID: https://ampcode.com/threads/T-019c2eb5-2219-711d-9c64-e9cf0910e66c
Co-authored-by: Amp <amp@ampcode.com>

* fix: patch dead links in TIPs synced from tempo repo

Amp-Thread-ID: https://ampcode.com/threads/T-019c2eb5-2219-711d-9c64-e9cf0910e66c
Co-authored-by: Amp <amp@ampcode.com>

* Add --sig run(string) SALT to forge script commands

Amp-Thread-ID: https://ampcode.com/threads/T-019c2ec9-3bba-7717-9aba-e0ba0880f5da
Co-authored-by: Amp <amp@ampcode.com>

---------

Co-authored-by: Amp <amp@ampcode.com>

* fix: update expiring nonces to use nonceKey: 'expiring' for TypeScript

Amp-Thread-ID: https://ampcode.com/threads/T-019c2e2d-fdda-704c-8ebe-8ed7cda6f2d0
Co-authored-by: Amp <amp@ampcode.com>

* docs: add expiring nonces and 2D nonces cards, improve parallel transactions guide

Amp-Thread-ID: https://ampcode.com/threads/T-019c2f1f-0179-7247-8a12-ccb310a303ce
Co-authored-by: Amp <amp@ampcode.com>

---------

Co-authored-by: tmm <tmm@tmm.dev>
Co-authored-by: Georgios Konstantopoulos <me@gakonst.com>
Co-authored-by: George <george@tempo.xyz>
Co-authored-by: onbjerg <onbjerg@users.noreply.github.com>
Co-authored-by: Amp <amp@ampcode.com>
Co-authored-by: zerosnacks <95942363+zerosnacks@users.noreply.github.com>
Co-authored-by: jenpaff <jenpaff0@gmail.com>
Co-authored-by: jxom <7336481+jxom@users.noreply.github.com>
unbalancedparentheses pushed a commit to unbalancedparentheses/tempo that referenced this pull request Feb 23, 2026
# Account Abstraction Tx Type

Complete updated spec here: tempoxyz/docs#49

**Note:**
1. 2D nonces have been disabled at the validation level for the current
PR. Because it requires some higher complexity changes to the tx pool.
2. Authorization lists have been skipped in the current TxAA type,
because we require a new type of 7702 Auth item, which can take in
signatures from passkeys/P256 keys. This will be added in a separate PR.

## Abstract

This spec introduces native protocol support for the following account
abstraction features, using a new account abstraction tx type -

* WebAuthn/P256 signature validation - enables passkey accounts
* Parallelizable nonces - allows higher tx throughput for each account
* Gas sponsorship - allows apps to pay for their users's transactions
* Call Batching - allows users to multicall cheaply.
* Scheduled Txs - allow users to specify a time window in which their tx
can be executed

### Transaction Type

A new EIP-2718 transaction type is introduced with the following
structure:

```rust
pub struct TxAA {
    // Standard EIP-1559 fields
    chain_id: U64,
    max_priority_fee_per_gas: U256,
    max_fee_per_gas: U256,
    gas_limit: U64,
    calls: Vec<Call>,         // Batch of calls to execute
    access_list: Vec<AccessListItem>,

    // AA-specific fields
    nonce_key: U64,           // 64 bit sequence keys (was U192, changed to U64 for simplicity)
    nonce: U64,      // 64 bit current value of the sequence key

    // Optional features
    fee_token: Option<Address>,         // Optional fee token preference
    fee_payer_signature: Option<Bytes>, // Sponsored transactions (secp256k1 only)
    valid_before: U64,                  // Transaction expiration timestamp (0 means no expiry)
    valid_after: Option<U64>            // Transaction can only be included after this timestamp
}

// Call structure for batching
pub struct Call {
    to: TxKind,      // Can be Address or Create
    value: U256,
    input: Bytes     // Calldata for the call
}
```

### Signature Types

Three signature schemes are supported, identified by length:

#### secp256k1 (65 bytes)
```rust
type K1Sig = { r: bytes32, s: bytes32, v: uint8 }
```

#### P256 (129 bytes)
```rust
type P256Sig = { 
    r: bytes32, 
    s: bytes32, 
    pubKeyX: bytes32, 
    pubKeyY: bytes32, 
    preHash: bool
}
```
Note: Some p256 implementers like Web Crypto, require the digests to be
prehashed before verification.
If this bool is set to `true`, then before verification `bytes32 digest
= sha256(digest)` needs to be performed.


#### WebAuthn (Variable length, max 2KB)
```rust
type WebAuthnSig = { 
    verificationData: bytes,  // Variable length
    r: bytes32, 
    s: bytes32, 
    pubKeyX: bytes32, 
    pubKeyY: bytes32 
}
```

### Address Derivation

#### secp256k1
```solidity
address(uint160(uint256(keccak256(abi.encode(x, y)))))
```

#### P256 and WebAuthn
```solidity
function deriveAddressFromP256(bytes32 pubKeyX, bytes32 pubKeyY) public pure returns (address) {    
    // Hash 
    bytes32 hash = keccak256(abi.encodePacked(
        pubKeyX,
        pubKeyY
    ));
    
    // Take last 20 bytes as address
    return address(uint160(uint256(hash)));
}
```

---------

Co-authored-by: Arsenii Kulikov <klkvrr@gmail.com>
Co-authored-by: jxom <7336481+jxom@users.noreply.github.com>
Co-authored-by: rakita <rakita@users.noreply.github.com>
Zygimantass pushed a commit that referenced this pull request Apr 16, 2026
* docs: add Zones protocol documentation

Add comprehensive documentation for the Tempo Zones feature:
- Overview: architecture, zone creation, token management, fees
- Bridging: deposits, withdrawals, encrypted deposits, composable callbacks
- Privacy Zones: execution-level and RPC-level privacy protections
- Proving: batch submission, verifier interface, ancestry proofs
- Upgrades: hard fork activation, verifier rotation, failure modes

Also updates the privacy learn page to reference Zones and adds a
Zones card to the protocol index.

Prompted by: dankrad

Amp-Thread-ID: https://ampcode.com/threads/T-019d2a83-5a87-708e-b2cd-8aca731e0ae6

* docs(zones): rework overview with intro from design doc

Incorporate the high-level intro, system architecture diagrams,
contract architecture, trust model table, and creating a zone
walkthrough from the zones design document.

Prompted by: dankrad

Amp-Thread-ID: https://ampcode.com/threads/T-019d2a83-5a87-708e-b2cd-8aca731e0ae6

* fix: escape angle bracket in MDX to fix build

Replace '<10 seconds' with 'under 10 seconds' — the bare '<' was
parsed as a JSX tag by the MDX compiler.

Prompted by: dankrad

Amp-Thread-ID: https://ampcode.com/threads/T-019d2a83-5a87-708e-b2cd-8aca731e0ae6

* docs(zones): convert ASCII art to mermaid diagrams

Replace ASCII art illustrations with native mermaid code blocks,
matching the pattern used in validator-config-v1.mdx and
validator-config-v2.mdx.

Prompted by: dankrad

Amp-Thread-ID: https://ampcode.com/threads/T-019d2a83-5a87-708e-b2cd-8aca731e0ae6

* docs(zones): add note that prover is not yet live

Prompted by: dankrad

Amp-Thread-ID: https://ampcode.com/threads/T-019d2a83-5a87-708e-b2cd-8aca731e0ae6

* docs(zones): clarify withdrawal queue slots contain multiple withdrawals

Prompted by: dankrad

Amp-Thread-ID: https://ampcode.com/threads/T-019d2a83-5a87-708e-b2cd-8aca731e0ae6

* fix(zones): fix mermaid diagram rendering

- Replace \n with <br/> for multi-line node labels (mermaid requires HTML)
- Reorder edge definitions before subgraphs to fix withdrawal arrow
  routing through ZoneFactory instead of ZonePortal
- Remove redundant edge labels for cleaner system architecture diagram

Prompted by: dankrad

Amp-Thread-ID: https://ampcode.com/threads/T-019d2a83-5a87-708e-b2cd-8aca731e0ae6

* docs(zones): remove queue design rationale paragraph

Prompted by: dankrad

Amp-Thread-ID: https://ampcode.com/threads/T-019d2a83-5a87-708e-b2cd-8aca731e0ae6

* docs(zones): rewrite privacy page, split RPC into own page

All zones are private by design — rewrite the privacy page to reflect
this rather than treating privacy as a special variant. Move the RPC
specification (auth tokens, method access control, timing side channels,
event filtering, error codes) into a dedicated /protocol/zones/rpc page.

Prompted by: dankrad

Amp-Thread-ID: https://ampcode.com/threads/T-019d2a83-5a87-708e-b2cd-8aca731e0ae6

* docs(zones): remove incorrect contract creation rationale

Prompted by: dankrad

Amp-Thread-ID: https://ampcode.com/threads/T-019d2a83-5a87-708e-b2cd-8aca731e0ae6

* docs(zones): wording fix in proving page

Prompted by: dankrad

Amp-Thread-ID: https://ampcode.com/threads/T-019d2a83-5a87-708e-b2cd-8aca731e0ae6

* docs(zones): wording fix for ancestry proofs

Prompted by: dankrad

Amp-Thread-ID: https://ampcode.com/threads/T-019d2a83-5a87-708e-b2cd-8aca731e0ae6

* docs(zones): note encrypted deposits exception for quantum security

Prompted by: dankrad

Amp-Thread-ID: https://ampcode.com/threads/T-019d2a83-5a87-708e-b2cd-8aca731e0ae6

* Refine overview.mdx (#52)

* Refine overview.mdx

- consistent terminology (zone vs tempo L1, as opposed to chain, main chain etc). 
- minor nits/ rewording

* Apply suggestion from @dankrad

* Apply suggestion from @dankrad

---------

Co-authored-by: dankrad <mail@dankradfeist.de>

* Update privacy.md for clarity and terminology (#53)

* Update privacy.md for clarity and terminology

* Apply suggestion from @dankrad

---------

Co-authored-by: dankrad <mail@dankradfeist.de>

* minor nits in proving.mdx (#54)

* Update src/pages/learn/tempo/privacy.mdx

Co-authored-by: Daniel Robinson <danrobinson010@gmail.com>

* Apply suggestion from @dankrad

* Apply suggestion from @dankrad

* Apply suggestion from @dankrad

* Apply suggestion from @malleshpai

Co-authored-by: malleshpai <mallesh.pai@gmail.com>

* Apply suggestion from @dankrad

* Apply suggestion from @danrobinson

Co-authored-by: Daniel Robinson <danrobinson010@gmail.com>

* Apply suggestion from @danrobinson

Co-authored-by: Daniel Robinson <danrobinson010@gmail.com>

* Apply suggestion from @danrobinson

Co-authored-by: Daniel Robinson <danrobinson010@gmail.com>

* Apply suggestion from @dankrad

* Apply suggestion from @danrobinson

Co-authored-by: Daniel Robinson <danrobinson010@gmail.com>

* Apply suggestion from @dankrad

* Apply suggestion from @dankrad

* Apply suggestion from @dankrad

* Restructure Tempo Zones docs: new IA, terminology fixes (#56)

* Restructure Tempo Zones documentation

Split the zones overview into a proper information architecture:

- New overview page with key properties and spec navigation cards
- Architecture page (extracted from old overview, structural content)
- Accounts page (extracted from old privacy, EVM-level access control)
- Execution & Gas page (consolidated from overview + privacy)
- Remove standalone privacy page (content split into accounts + overview)

Terminology changes across all zone pages:
- 'L1'/'L2' replaced with 'Tempo Mainnet' throughout
- 'Zones' replaced with 'Tempo Zones' in prose
- Em dashes replaced with commas and periods
- Sidebar label changed from 'Zones' to 'Tempo Zones'
- Specification pages grouped under a 'Specification' sidebar header

Adds 301 redirects for /protocol/zones/overview and /protocol/zones/privacy.

Amp-Thread-ID: https://ampcode.com/threads/T-019d4538-30c7-74ad-b74c-efcb7249e5fe
Co-authored-by: Amp <amp@ampcode.com>

* Apply review suggestions from base branch

- non-custodial → safe from theft
- EVM level → contract level
- Remove 'Both layers are required' (redundant with next sentence)
- Add 'for TIP-20s' to balanceOf restriction
- Remove sentence about synchronous L1 state reads from architecture intro
- Sequencer management 'is centralized' → 'happens'
- 'opt-in privacy' → 'privacy'
- Authorization token max 30 minutes → 1 month
- Update replay protection fields (remove portal address, add zone 0 wildcard)
- 'Zones disable' → 'Zones currently disable' CREATE opcodes

Amp-Thread-ID: https://ampcode.com/threads/T-019d492e-f36b-721a-99bd-57b64f8a6e03
Co-authored-by: Amp <amp@ampcode.com>

---------

Co-authored-by: Amp <amp@ampcode.com>

* docs: remove spec-only sections from zones docs

Remove Deposit Queue, Withdrawal Queue, and Queue Design sections
from bridging.mdx. Remove entire upgrades.mdx page and its sidebar
entry. These belong in the formal specs, not user-facing docs.

Co-authored-by: dankrad <6130607+dankrad@users.noreply.github.com>
Amp-Thread-ID: https://ampcode.com/threads/T-019d4a8c-806c-7245-9d32-9ee4a96b2ae3

* docs: rename zones sidebar section from Specification to Reference

Co-authored-by: dankrad <6130607+dankrad@users.noreply.github.com>
Amp-Thread-ID: https://ampcode.com/threads/T-019d4a8c-806c-7245-9d32-9ee4a96b2ae3

* Apply suggestions from code review

Co-authored-by: dankrad <mail@dankradfeist.de>

* Apply suggestion from @dankrad

* Apply suggestions from code review

Co-authored-by: dankrad <mail@dankradfeist.de>

* Apply suggestions from code review

Co-authored-by: dankrad <mail@dankradfeist.de>

* Apply suggestions from code review

Co-authored-by: dankrad <mail@dankradfeist.de>

* Apply suggestions from code review

Co-authored-by: dankrad <mail@dankradfeist.de>

* Apply suggestions from code review

Co-authored-by: dankrad <mail@dankradfeist.de>

* Apply suggestion from @dankrad

* docs: remove dead link to upgrades page

Prompted by: dankrad

Amp-Thread-ID: https://ampcode.com/threads/T-019d63e4-5fa8-766b-bdd9-05ad92044c04

* docs: remove 'withdraw at any time' claims

Prompted by: dankrad

Amp-Thread-ID: https://ampcode.com/threads/T-019d63e4-5fa8-766b-bdd9-05ad92044c04

* Apply suggestions from code review

Co-authored-by: dankrad <mail@dankradfeist.de>

---------

Co-authored-by: malleshpai <mallesh.pai@gmail.com>
Co-authored-by: dankrad <mail@dankradfeist.de>
Co-authored-by: Daniel Robinson <danrobinson010@gmail.com>
Co-authored-by: Liam Horne <liam@lihorne.com>
Co-authored-by: Amp <amp@ampcode.com>
Co-authored-by: dankrad <6130607+dankrad@users.noreply.github.com>
Zygimantass added a commit that referenced this pull request Apr 16, 2026
* docs: add Zones protocol documentation (#49)

* docs: add Zones protocol documentation

Add comprehensive documentation for the Tempo Zones feature:
- Overview: architecture, zone creation, token management, fees
- Bridging: deposits, withdrawals, encrypted deposits, composable callbacks
- Privacy Zones: execution-level and RPC-level privacy protections
- Proving: batch submission, verifier interface, ancestry proofs
- Upgrades: hard fork activation, verifier rotation, failure modes

Also updates the privacy learn page to reference Zones and adds a
Zones card to the protocol index.

Prompted by: dankrad

Amp-Thread-ID: https://ampcode.com/threads/T-019d2a83-5a87-708e-b2cd-8aca731e0ae6

* docs(zones): rework overview with intro from design doc

Incorporate the high-level intro, system architecture diagrams,
contract architecture, trust model table, and creating a zone
walkthrough from the zones design document.

Prompted by: dankrad

Amp-Thread-ID: https://ampcode.com/threads/T-019d2a83-5a87-708e-b2cd-8aca731e0ae6

* fix: escape angle bracket in MDX to fix build

Replace '<10 seconds' with 'under 10 seconds' — the bare '<' was
parsed as a JSX tag by the MDX compiler.

Prompted by: dankrad

Amp-Thread-ID: https://ampcode.com/threads/T-019d2a83-5a87-708e-b2cd-8aca731e0ae6

* docs(zones): convert ASCII art to mermaid diagrams

Replace ASCII art illustrations with native mermaid code blocks,
matching the pattern used in validator-config-v1.mdx and
validator-config-v2.mdx.

Prompted by: dankrad

Amp-Thread-ID: https://ampcode.com/threads/T-019d2a83-5a87-708e-b2cd-8aca731e0ae6

* docs(zones): add note that prover is not yet live

Prompted by: dankrad

Amp-Thread-ID: https://ampcode.com/threads/T-019d2a83-5a87-708e-b2cd-8aca731e0ae6

* docs(zones): clarify withdrawal queue slots contain multiple withdrawals

Prompted by: dankrad

Amp-Thread-ID: https://ampcode.com/threads/T-019d2a83-5a87-708e-b2cd-8aca731e0ae6

* fix(zones): fix mermaid diagram rendering

- Replace \n with <br/> for multi-line node labels (mermaid requires HTML)
- Reorder edge definitions before subgraphs to fix withdrawal arrow
  routing through ZoneFactory instead of ZonePortal
- Remove redundant edge labels for cleaner system architecture diagram

Prompted by: dankrad

Amp-Thread-ID: https://ampcode.com/threads/T-019d2a83-5a87-708e-b2cd-8aca731e0ae6

* docs(zones): remove queue design rationale paragraph

Prompted by: dankrad

Amp-Thread-ID: https://ampcode.com/threads/T-019d2a83-5a87-708e-b2cd-8aca731e0ae6

* docs(zones): rewrite privacy page, split RPC into own page

All zones are private by design — rewrite the privacy page to reflect
this rather than treating privacy as a special variant. Move the RPC
specification (auth tokens, method access control, timing side channels,
event filtering, error codes) into a dedicated /protocol/zones/rpc page.

Prompted by: dankrad

Amp-Thread-ID: https://ampcode.com/threads/T-019d2a83-5a87-708e-b2cd-8aca731e0ae6

* docs(zones): remove incorrect contract creation rationale

Prompted by: dankrad

Amp-Thread-ID: https://ampcode.com/threads/T-019d2a83-5a87-708e-b2cd-8aca731e0ae6

* docs(zones): wording fix in proving page

Prompted by: dankrad

Amp-Thread-ID: https://ampcode.com/threads/T-019d2a83-5a87-708e-b2cd-8aca731e0ae6

* docs(zones): wording fix for ancestry proofs

Prompted by: dankrad

Amp-Thread-ID: https://ampcode.com/threads/T-019d2a83-5a87-708e-b2cd-8aca731e0ae6

* docs(zones): note encrypted deposits exception for quantum security

Prompted by: dankrad

Amp-Thread-ID: https://ampcode.com/threads/T-019d2a83-5a87-708e-b2cd-8aca731e0ae6

* Refine overview.mdx (#52)

* Refine overview.mdx

- consistent terminology (zone vs tempo L1, as opposed to chain, main chain etc). 
- minor nits/ rewording

* Apply suggestion from @dankrad

* Apply suggestion from @dankrad

---------

Co-authored-by: dankrad <mail@dankradfeist.de>

* Update privacy.md for clarity and terminology (#53)

* Update privacy.md for clarity and terminology

* Apply suggestion from @dankrad

---------

Co-authored-by: dankrad <mail@dankradfeist.de>

* minor nits in proving.mdx (#54)

* Update src/pages/learn/tempo/privacy.mdx

Co-authored-by: Daniel Robinson <danrobinson010@gmail.com>

* Apply suggestion from @dankrad

* Apply suggestion from @dankrad

* Apply suggestion from @dankrad

* Apply suggestion from @malleshpai

Co-authored-by: malleshpai <mallesh.pai@gmail.com>

* Apply suggestion from @dankrad

* Apply suggestion from @danrobinson

Co-authored-by: Daniel Robinson <danrobinson010@gmail.com>

* Apply suggestion from @danrobinson

Co-authored-by: Daniel Robinson <danrobinson010@gmail.com>

* Apply suggestion from @danrobinson

Co-authored-by: Daniel Robinson <danrobinson010@gmail.com>

* Apply suggestion from @dankrad

* Apply suggestion from @danrobinson

Co-authored-by: Daniel Robinson <danrobinson010@gmail.com>

* Apply suggestion from @dankrad

* Apply suggestion from @dankrad

* Apply suggestion from @dankrad

* Restructure Tempo Zones docs: new IA, terminology fixes (#56)

* Restructure Tempo Zones documentation

Split the zones overview into a proper information architecture:

- New overview page with key properties and spec navigation cards
- Architecture page (extracted from old overview, structural content)
- Accounts page (extracted from old privacy, EVM-level access control)
- Execution & Gas page (consolidated from overview + privacy)
- Remove standalone privacy page (content split into accounts + overview)

Terminology changes across all zone pages:
- 'L1'/'L2' replaced with 'Tempo Mainnet' throughout
- 'Zones' replaced with 'Tempo Zones' in prose
- Em dashes replaced with commas and periods
- Sidebar label changed from 'Zones' to 'Tempo Zones'
- Specification pages grouped under a 'Specification' sidebar header

Adds 301 redirects for /protocol/zones/overview and /protocol/zones/privacy.

Amp-Thread-ID: https://ampcode.com/threads/T-019d4538-30c7-74ad-b74c-efcb7249e5fe
Co-authored-by: Amp <amp@ampcode.com>

* Apply review suggestions from base branch

- non-custodial → safe from theft
- EVM level → contract level
- Remove 'Both layers are required' (redundant with next sentence)
- Add 'for TIP-20s' to balanceOf restriction
- Remove sentence about synchronous L1 state reads from architecture intro
- Sequencer management 'is centralized' → 'happens'
- 'opt-in privacy' → 'privacy'
- Authorization token max 30 minutes → 1 month
- Update replay protection fields (remove portal address, add zone 0 wildcard)
- 'Zones disable' → 'Zones currently disable' CREATE opcodes

Amp-Thread-ID: https://ampcode.com/threads/T-019d492e-f36b-721a-99bd-57b64f8a6e03
Co-authored-by: Amp <amp@ampcode.com>

---------

Co-authored-by: Amp <amp@ampcode.com>

* docs: remove spec-only sections from zones docs

Remove Deposit Queue, Withdrawal Queue, and Queue Design sections
from bridging.mdx. Remove entire upgrades.mdx page and its sidebar
entry. These belong in the formal specs, not user-facing docs.

Co-authored-by: dankrad <6130607+dankrad@users.noreply.github.com>
Amp-Thread-ID: https://ampcode.com/threads/T-019d4a8c-806c-7245-9d32-9ee4a96b2ae3

* docs: rename zones sidebar section from Specification to Reference

Co-authored-by: dankrad <6130607+dankrad@users.noreply.github.com>
Amp-Thread-ID: https://ampcode.com/threads/T-019d4a8c-806c-7245-9d32-9ee4a96b2ae3

* Apply suggestions from code review

Co-authored-by: dankrad <mail@dankradfeist.de>

* Apply suggestion from @dankrad

* Apply suggestions from code review

Co-authored-by: dankrad <mail@dankradfeist.de>

* Apply suggestions from code review

Co-authored-by: dankrad <mail@dankradfeist.de>

* Apply suggestions from code review

Co-authored-by: dankrad <mail@dankradfeist.de>

* Apply suggestions from code review

Co-authored-by: dankrad <mail@dankradfeist.de>

* Apply suggestions from code review

Co-authored-by: dankrad <mail@dankradfeist.de>

* Apply suggestion from @dankrad

* docs: remove dead link to upgrades page

Prompted by: dankrad

Amp-Thread-ID: https://ampcode.com/threads/T-019d63e4-5fa8-766b-bdd9-05ad92044c04

* docs: remove 'withdraw at any time' claims

Prompted by: dankrad

Amp-Thread-ID: https://ampcode.com/threads/T-019d63e4-5fa8-766b-bdd9-05ad92044c04

* Apply suggestions from code review

Co-authored-by: dankrad <mail@dankradfeist.de>

---------

Co-authored-by: malleshpai <mallesh.pai@gmail.com>
Co-authored-by: dankrad <mail@dankradfeist.de>
Co-authored-by: Daniel Robinson <danrobinson010@gmail.com>
Co-authored-by: Liam Horne <liam@lihorne.com>
Co-authored-by: Amp <amp@ampcode.com>
Co-authored-by: dankrad <6130607+dankrad@users.noreply.github.com>

* feat: add zone demos (#59)

* feat: add zone demos

* feat: add private zone verification flows

Amp-Thread-ID: https://ampcode.com/threads/T-019d4ec2-4960-75dd-81a1-67ebed584a50
Co-authored-by: Amp <amp@ampcode.com>

* fix: polish

* feat: encryption and other fixes

* fix: polish

* fix: make steps sticky until restart

* fix: build

* fix: passkeys

* fix: remove stage info

* fix: polish

* fix: json

---------

Co-authored-by: Amp <amp@ampcode.com>

* fix: types

* chore: add banner

* fix: refactor with latest viem

* feat: add send across zones

* feat: reuse auth token

* fix: suppress spurious zone auth error

Amp-Thread-ID: https://ampcode.com/threads/T-019d70b3-ae75-70de-bfc1-cdcdc45deafb
Co-authored-by: Amp <amp@ampcode.com>

* fix: widen zone settlement detection

Amp-Thread-ID: https://ampcode.com/threads/T-019d70b3-ae75-70de-bfc1-cdcdc45deafb
Co-authored-by: Amp <amp@ampcode.com>

* fix: stop linking zone receipts to explorer

Amp-Thread-ID: https://ampcode.com/threads/T-019d70b3-ae75-70de-bfc1-cdcdc45deafb
Co-authored-by: Amp <amp@ampcode.com>

* docs: reorder zones security sections

Improve the zones overview flow by grouping the theft-safety explanation after the compliance guarantees.

Made-with: Cursor

* docs: merge zone RPC method tables

Simplify the zone RPC access control docs by combining allowed and scoped methods into a single table with explicit access types.

Made-with: Cursor

* docs: add zone execution flow diagram

Clarify the execution and gas model by adding a Mermaid diagram that shows validation, gas selection, execution, and fee settlement.

Made-with: Cursor

* feat: add StaticMermaidDiagram component for consistent diagram styling (#62)

* feat: add StaticMermaidDiagram component for consistent diagram styling

- New StaticMermaidDiagram component that uses the mermaid library with
  theme colors from the existing MermaidDiagram component
- Uses site's system sans-serif font instead of monospace
- Compact node spacing and padding matching the docs design
- Supports dark/light mode via THEMES from MermaidDiagram
- Replaces raw mermaid code blocks in architecture.mdx and execution.mdx

* fix: improve dark mode contrast for StaticMermaidDiagram

- Lighter node backgrounds (#2e2e33) so they stand out from page bg
- Stronger borders (#52525b) for both nodes and clusters
- Darker cluster background (#1e1e22) for depth separation

* docs: move execution flow diagram to proving

Correct the zone docs by placing the execution flow diagram on the proving page and removing it from the execution page.

Made-with: Cursor

* feat: add connect-to-a-zone page

* fix: bump viem

* fix: withdraws

* docs: add zone architecture diagrams with descriptive names (#61)

* docs: add static zone architecture diagrams

Place 7 SVG diagrams across the zones guide and protocol pages.

* fix: add HB Set + Pilat fonts for SVG rendering, fix diagram placement

- Add woff2 font files (HB Set v0.96 Light/Medium, Pilat Regular/Demi/Bold)
  to public/fonts/ with @font-face declarations in _root.css so SVG text
  renders correctly on Vercel (not just macOS)
- Move diagram-f (Privacy Flow) from guide/private-zones/index to
  protocol/zones/index under "Tempo Zones are private" where it fits
  the surrounding copy better

* docs: add diagram-h to zones overview after intro paragraph

* docs: add diagram-b under deposit two-phase settlement

* docs: move diagram-b above ZonePortal intro paragraph

* docs: add diagram-b to withdrawals page

* fix: embed fonts directly in SVGs so they render in img tags on Vercel

* docs: add diagram-e to token management, diagram-f to bridging overview

* Update index.mdx

* refactor: replace lettered diagrams with named SVGs, remove font deps

- Replace diagram-a..h with descriptive names (diagram-node, diagram-deposit,
  diagram-overview, diagram-privacy, diagram-swap, diagram-tip20, diagram-withdraw)
- New SVGs use outlined text (no font embedding needed)
- Remove @font-face imports from _root.css and woff2 files from public/fonts/
- Remove diagram-d from send-across-zones (no named equivalent)
- Use diagram-withdraw on withdraw page instead of diagram-deposit

* docs: add diagram-overview to Connect to Tempo Zones guide

* docs: use diagram-contracts under Contract Architecture

* fix: update wording

---------

Co-authored-by: Zygimantas <5236121+Zygimantass@users.noreply.github.com>
Co-authored-by: Derek Cofausper <256792747+decofe@users.noreply.github.com>

* fix: zone renamings

* feat: cleanup

* fix: rebase

* fix: unblock CI for custom viem build

* fix: deps

* fix: correctness

---------

Co-authored-by: Derek Cofausper <256792747+decofe@users.noreply.github.com>
Co-authored-by: malleshpai <mallesh.pai@gmail.com>
Co-authored-by: dankrad <mail@dankradfeist.de>
Co-authored-by: Daniel Robinson <danrobinson010@gmail.com>
Co-authored-by: Liam Horne <liam@lihorne.com>
Co-authored-by: Amp <amp@ampcode.com>
Co-authored-by: dankrad <6130607+dankrad@users.noreply.github.com>
Co-authored-by: Brendan Ryan <brendanjryan@users.noreply.github.com>
Co-authored-by: achalvs <achal@achal.me>
tx-tomcat pushed a commit to Magnus-Foundation/magnus that referenced this pull request Apr 18, 2026
# Account Abstraction Tx Type

Complete updated spec here: tempoxyz/docs#49

**Note:**
1. 2D nonces have been disabled at the validation level for the current
PR. Because it requires some higher complexity changes to the tx pool.
2. Authorization lists have been skipped in the current TxAA type,
because we require a new type of 7702 Auth item, which can take in
signatures from passkeys/P256 keys. This will be added in a separate PR.

## Abstract

This spec introduces native protocol support for the following account
abstraction features, using a new account abstraction tx type -

* WebAuthn/P256 signature validation - enables passkey accounts
* Parallelizable nonces - allows higher tx throughput for each account
* Gas sponsorship - allows apps to pay for their users's transactions
* Call Batching - allows users to multicall cheaply.
* Scheduled Txs - allow users to specify a time window in which their tx
can be executed

### Transaction Type

A new EIP-2718 transaction type is introduced with the following
structure:

```rust
pub struct TxAA {
    // Standard EIP-1559 fields
    chain_id: U64,
    max_priority_fee_per_gas: U256,
    max_fee_per_gas: U256,
    gas_limit: U64,
    calls: Vec<Call>,         // Batch of calls to execute
    access_list: Vec<AccessListItem>,

    // AA-specific fields
    nonce_key: U64,           // 64 bit sequence keys (was U192, changed to U64 for simplicity)
    nonce: U64,      // 64 bit current value of the sequence key

    // Optional features
    fee_token: Option<Address>,         // Optional fee token preference
    fee_payer_signature: Option<Bytes>, // Sponsored transactions (secp256k1 only)
    valid_before: U64,                  // Transaction expiration timestamp (0 means no expiry)
    valid_after: Option<U64>            // Transaction can only be included after this timestamp
}

// Call structure for batching
pub struct Call {
    to: TxKind,      // Can be Address or Create
    value: U256,
    input: Bytes     // Calldata for the call
}
```

### Signature Types

Three signature schemes are supported, identified by length:

#### secp256k1 (65 bytes)
```rust
type K1Sig = { r: bytes32, s: bytes32, v: uint8 }
```

#### P256 (129 bytes)
```rust
type P256Sig = { 
    r: bytes32, 
    s: bytes32, 
    pubKeyX: bytes32, 
    pubKeyY: bytes32, 
    preHash: bool
}
```
Note: Some p256 implementers like Web Crypto, require the digests to be
prehashed before verification.
If this bool is set to `true`, then before verification `bytes32 digest
= sha256(digest)` needs to be performed.


#### WebAuthn (Variable length, max 2KB)
```rust
type WebAuthnSig = { 
    verificationData: bytes,  // Variable length
    r: bytes32, 
    s: bytes32, 
    pubKeyX: bytes32, 
    pubKeyY: bytes32 
}
```

### Address Derivation

#### secp256k1
```solidity
address(uint160(uint256(keccak256(abi.encode(x, y)))))
```

#### P256 and WebAuthn
```solidity
function deriveAddressFromP256(bytes32 pubKeyX, bytes32 pubKeyY) public pure returns (address) {    
    // Hash 
    bytes32 hash = keccak256(abi.encodePacked(
        pubKeyX,
        pubKeyY
    ));
    
    // Take last 20 bytes as address
    return address(uint160(uint256(hash)));
}
```

---------

Co-authored-by: Arsenii Kulikov <klkvrr@gmail.com>
Co-authored-by: jxom <7336481+jxom@users.noreply.github.com>
Co-authored-by: rakita <rakita@users.noreply.github.com>
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