Skip to content

SignatureEnvelope Types

SignatureEnvelope.Attested

Attested signature (type 0x06).

A program key, held by attested code and registered in the Attested Key Registry, signs AttestedSigner.getSignPayload of the context digest for the address AttestedSigner.getAddress derives from policyId and userTag. The node also checks that the registry holds the program key as current in slot and that validUntil is within AttestedSigner.maxValidityWindow seconds of the block timestamp.

TIP-1160

Source: src/tempo/SignatureEnvelope.ts

SignatureEnvelope.AttestedRpc

RPC-formatted attested signature, as the node serializes it (untagged).

Source: src/tempo/SignatureEnvelope.ts

SignatureEnvelope.Configurable

Configurable account signature (type 0x05).

Carries the account's complete current configuration and primitive owner approvals over its version-bound digest. The node validates the account identity or stored commitment and the owner quorum against chain state.

Source: src/tempo/SignatureEnvelope.ts

SignatureEnvelope.ConfigurableRpc

RLP-encoded [account, config, signatures], without the 0x05 type byte.

Source: src/tempo/SignatureEnvelope.ts

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.KeychainVersion

Keychain signature version.

  • 'v1': Legacy format. Inner signature signs the raw sig_hash directly. Deprecated at T1C. - 'v2': Inner signature signs keccak256(sig_hash || user_address), binding the signature to the specific user account.

Source: src/tempo/SignatureEnvelope.ts

SignatureEnvelope.OwnerApproval

Signature envelope that can approve as a configurable account owner: a primitive signature, or an attested signature.

Source: src/tempo/SignatureEnvelope.ts

SignatureEnvelope.OwnerApprovalRpc

RPC-formatted signature envelope that can approve as a configurable account owner.

Source: src/tempo/SignatureEnvelope.ts

SignatureEnvelope.P256

Source: src/tempo/SignatureEnvelope.ts

SignatureEnvelope.P256Rpc

Source: src/tempo/SignatureEnvelope.ts

SignatureEnvelope.Primitive

Primitive signature envelope accepted by protocol sidecars.

Source: src/tempo/SignatureEnvelope.ts

SignatureEnvelope.PrimitiveRpc

RPC-formatted primitive signature envelope.

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 V1, 0x04 V2): Access key signature that wraps an inner signature (secp256k1, p256, or webAuthn). Format: type byte + user_address (20 bytes) + inner signature. V2 binds the signature to the user account via keccak256(sigHash || userAddress). The protocol validates the access key authorization via the AccountKeychain precompile.

  • configurable (type 0x05): Configurable account signature carrying the account address, its complete current configuration, and primitive owner approvals over the version-bound digest.

  • attested (type 0x06, experimental): Signature by a program key that the Attested Key Registry holds as current, for the address derived from a policy ID and a user tag (TIP-1160). Accepted as a transaction signature, a key authorization signature, and a configurable account owner approval. Rejected inside keychain signatures.

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