Skip to content

TxEnvelopeTempo.getSignPayload

Returns the payload to sign for a TxEnvelopeTempo.TxEnvelopeTempo.

Computes the keccak256 hash of the unsigned serialized transaction. Sign this payload with secp256k1, P256, or WebAuthn, then attach the signature via TxEnvelopeTempo.from.

Tempo Transaction Specification

Imports

Named
import { TxEnvelopeTempo } from 'ox/tempo'

Examples

The example below demonstrates how to compute the sign payload which can be used with ECDSA signing utilities like Secp256k1.sign.

import { Secp256k1 } from 'ox'
import { TxEnvelopeTempo } from 'ox/tempo'
 
const envelope = TxEnvelopeTempo.from({
  chainId: 1,
  calls: [{
    data: '0xdeadbeef',
    to: '0x70997970c51812dc3a010c7d01b50e0d17dc79c8',
  }],
  nonce: 0n,
  maxFeePerGas: 1000000000n,
  gas: 21000n,
})
 
const payload = TxEnvelopeTempo.getSignPayload(envelope)
'0x...'
const signature = Secp256k1.sign({ payload, privateKey: '0x...' })

Access Keys

When signing as an access key on behalf of a root account, pass the from option with the root account address. This computes keccak256(0x04 || sigHash || from) which binds the signature to the specific user account (V2 keychain format).

import { Secp256k1 } from 'ox'
import { TxEnvelopeTempo, SignatureEnvelope } from 'ox/tempo'
 
const envelope = TxEnvelopeTempo.from({
  chainId: 1,
  calls: [{
    data: '0xdeadbeef',
    to: '0x70997970c51812dc3a010c7d01b50e0d17dc79c8',
  }],
  nonce: 0n,
  maxFeePerGas: 1000000000n,
  gas: 21000n,
})
 
const payload = TxEnvelopeTempo.getSignPayload(envelope, { from: '0x...' })
 
const signature = Secp256k1.sign({ payload, privateKey: '0x...' })
 
const signed = TxEnvelopeTempo.serialize(envelope, {
  signature: SignatureEnvelope.from({
    userAddress: from,
    inner: SignatureEnvelope.from(signature),
  }),
})

Definition

function getSignPayload(
  envelope: TxEnvelopeTempo.TxEnvelopeTempo,
  options?: getSignPayload.Options,
): getSignPayload.ReturnValue

Source: src/tempo/TxEnvelopeTempo.ts

Parameters

envelope

The transaction envelope to get the sign payload for.

envelope.accessList

  • Type: readonly { address: abitype_Address; storageKeys: readonly 0x${string}[]; }[]
  • Optional

EIP-2930 Access List.

envelope.authorizationList

  • Type: readonly { address: abitype_Address; chainId: numberType; nonce: bigintType; signature: SignatureEnvelope; }[]
  • Optional

EIP-7702 (Tempo) Authorization list for the transaction.

envelope.calls

  • Type: readonly Call[]

Array of calls to execute.

envelope.chainId

  • Type: numberType

EIP-155 Chain ID.

envelope.feePayerSignature

  • Type: { r: bigintType; s: bigintType; yParity: numberType; }
  • Optional

Fee payer signature.

envelope.feeToken

  • Type: TokenId.TokenIdOrAddress | undefined
  • Optional

Fee token preference. Address or ID of the TIP-20 token.

envelope.from

  • Type: Address.Address | undefined
  • Optional

Sender of the transaction.

envelope.gas

  • Type: bigintType
  • Optional

Gas provided for transaction execution

envelope.keyAuthorization

  • Type: Signed
  • Optional

Key authorization for provisioning a new access key.

When present, this transaction will add the specified key to the AccountKeychain precompile, before verifying the transaction signature. The authorization must be signed with the root key, the tx can be signed by the Keychain signature.

envelope.maxFeePerGas

  • Type: bigintType
  • Optional

Total fee per gas in wei (gasPrice/baseFeePerGas + maxPriorityFeePerGas).

envelope.maxPriorityFeePerGas

  • Type: bigintType
  • Optional

Max priority fee per gas (in wei).

envelope.nonce

  • Type: bigintType
  • Optional

Unique number identifying this transaction

envelope.nonceKey

  • Type: bigintType
  • Optional

Nonce key for 2D nonce system (192 bits).

envelope.signature

  • Type: SignatureEnvelope
  • Optional

envelope.type

  • Type: type

Transaction type

envelope.validAfter

  • Type: numberType
  • Optional

Transaction can only be included in a block after this timestamp.

envelope.validBefore

  • Type: numberType
  • Optional

Transaction can only be included in a block before this timestamp.

options

  • Type: getSignPayload.Options
  • Optional

Options.

options.from

  • Type: Address.Address | undefined
  • Optional

The root account address for access key signing.

When provided, computes keccak256(0x04 || sigHash || from) instead of the raw sigHash, binding the access key signature to the specific user account.

Return Type

The sign payload.

getSignPayload.ReturnValue