Skip to content

MultisigConfig.getSignPayload

Computes the digest a native multisig owner approves (signs).

keccak256("tempo:multisig:signature" || inner_digest || account), where inner_digest is the transaction sign payload (TxEnvelopeTempo.getSignPayload).

The digest is keyed on the permanent account derived from the genesis (bootstrap) config — config updates never change it, so the genesis config is the correct input even for post-update transactions.

For a nested multisig owner approval, the parent digest becomes the nested approval's payload, with the nested multisig account.

Imports

Named
import { MultisigConfig } from 'ox/tempo'

Examples

import { MultisigConfig, TxEnvelopeTempo } from 'ox/tempo'
 
const genesisConfig = MultisigConfig.from({
  threshold: 1,
  owners: [
    { owner: '0x1111111111111111111111111111111111111111', weight: 1 },
  ],
})
 
const envelope = TxEnvelopeTempo.from({
  chainId: 1,
  calls: [],
})
 
const digest = MultisigConfig.getSignPayload({
  payload: TxEnvelopeTempo.getSignPayload(envelope),
  genesisConfig,
})

From account

If you already have the permanent account (for example, recovered from a stored envelope), pass it directly:

import { MultisigConfig, TxEnvelopeTempo } from 'ox/tempo'
 
const genesisConfig = MultisigConfig.from({
  threshold: 1,
  owners: [
    { owner: '0x1111111111111111111111111111111111111111', weight: 1 },
  ],
})
const account = MultisigConfig.getAddress(genesisConfig)
 
const envelope = TxEnvelopeTempo.from({ chainId: 1, calls: [] })
 
const digest = MultisigConfig.getSignPayload({
  payload: TxEnvelopeTempo.getSignPayload(envelope),
  account
})

Definition

function getSignPayload(
  value: getSignPayload.Value,
): Hex.Hex

Source: src/tempo/MultisigConfig.ts

Parameters

value

  • Type: getSignPayload.Value

The digest derivation parameters.

value.account

  • Type: abitype_Address

The native multisig account address.

value.genesisConfig

  • Type: { salt?: 0x${string}; threshold: number; owners: readonly Owner[]; }

The initial multisig config (the bootstrap config that derived the permanent account). Used to derive the account automatically. Config updates never change account, so the genesis config is also the correct input for post-update transactions.

value.payload

  • Type: 0x${string} | Uint8Array

The inner transaction sign payload (tx.signature_hash()).

Return Type

The owner approval digest.

Hex.Hex