Skip to content

MultisigConfig.getSignPayload

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

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

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

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 + genesisConfigId

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

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

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 and genesisConfigId). Used to derive both values automatically. Config updates never change account/genesisConfigId, so the genesis config is also the correct input for post-update transactions.

value.genesisConfigId

  • Type: 0x${string}

The permanent config ID.

value.payload

  • Type: 0x${string} | Uint8Array

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

Return Type

The owner approval digest.

Hex.Hex