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
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.HexSource: 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

