Skip to content

SignatureEnvelope Types

SignatureEnvelope.GetType

Statically determines the signature type of an envelope at compile time.

Examples

import type { SignatureEnvelope } from 'ox/tempo'
 
type Type = SignatureEnvelope.GetType<{ r: bigint; s: bigint; yParity: number }>
'secp256k1'

Source: src/tempo/SignatureEnvelope.ts

SignatureEnvelope.Keychain

Source: src/tempo/SignatureEnvelope.ts

SignatureEnvelope.KeychainRpc

Source: src/tempo/SignatureEnvelope.ts

SignatureEnvelope.P256

Source: src/tempo/SignatureEnvelope.ts

SignatureEnvelope.P256Rpc

Source: src/tempo/SignatureEnvelope.ts

SignatureEnvelope.Secp256k1

Source: src/tempo/SignatureEnvelope.ts

SignatureEnvelope.Secp256k1Flat

Source: src/tempo/SignatureEnvelope.ts

SignatureEnvelope.Secp256k1Rpc

Source: src/tempo/SignatureEnvelope.ts

SignatureEnvelope.Serialized

Hex-encoded serialized signature envelope.

Source: src/tempo/SignatureEnvelope.ts

SignatureEnvelope.SignatureEnvelope

Represents a signature envelope that can contain different signature types.

Tempo transactions support multiple signature types, each with different wire formats:

  • secp256k1 (no type prefix, 65 bytes): Standard Ethereum ECDSA signature. The sender address is recovered via ecrecover. Base transaction cost: 21,000 gas.

  • p256 (type 0x01, 130 bytes): P256/secp256r1 curve signature for passkey accounts. Includes embedded public key (64 bytes) and prehash flag. Enables native WebCrypto key support. Additional gas cost: +5,000 gas over secp256k1.

  • webAuthn (type 0x02, 129-2049 bytes): WebAuthn signature with authenticator data and clientDataJSON. Enables browser passkey authentication. The signature is also charged as calldata (16 gas/non-zero byte, 4 gas/zero byte).

  • keychain (type 0x03): Access key signature that wraps an inner signature (secp256k1, p256, or webAuthn). Format: 0x03 + user_address (20 bytes) + inner signature. The protocol validates the access key authorization via the AccountKeychain precompile.

Signature Types Specification

Source: src/tempo/SignatureEnvelope.ts

SignatureEnvelope.SignatureEnvelopeRpc

RPC-formatted signature envelope.

Source: src/tempo/SignatureEnvelope.ts

SignatureEnvelope.Type

Union type of supported signature types.

Source: src/tempo/SignatureEnvelope.ts

SignatureEnvelope.WebAuthn

Source: src/tempo/SignatureEnvelope.ts

SignatureEnvelope.WebAuthnRpc

Source: src/tempo/SignatureEnvelope.ts