Skip to content
LogoLogo

multisig.updateConfig

Replaces the current owners and threshold for a native multisig account.

The transaction must be authorized by the current owner quorum. This direct action is useful when the account retains enough local owners to sign. For distributed signing, include multisig.updateConfig.call in a prepared request and collect approvals as shown in Rotate Multisig Owners.

Usage

import { Account } from 'viem/tempo'
import { client } from './viem.config'
 
const owner_1 = Account.fromSecp256k1(
  '0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80'
)
const owner_2 = Account.fromSecp256k1(
  '0x59c6995e998f97a5a0044966f0945389dc9e86dae88c7a8412f4603b6b78690d'
)
const newOwner = Account.fromSecp256k1(
  '0x5de4111afa1a4b94908f83103eb1f1706367c2e68ca870fc3fb9a804cdab365a'
)
const account = Account.fromMultisig({
  address: 'infer',
  owners: [owner_1, owner_2],
  threshold: 2,
})
 
const hash = await client.multisig.updateConfig({
  account,
  nextConfig: {
    owners: [{ owner: newOwner.address, weight: 1 }],
    threshold: 1,
  },
})

Return Type

type ReturnType = Hash

The transaction hash.

Parameters

currentConfig

  • Type: MultisigConfig.Config | undefined

The account's complete current config. When omitted, the action uses the config on the multisig account, then asks the configured multisig coordinator by account address.

Actions.multisig.updateConfig.call has no client and continues to require currentConfig.

nextConfig

  • Type: { owners: readonly MultisigConfig.Owner[]; threshold: number }

The replacement owners and approval threshold. Owners are normalized into canonical address order.

nextConfig.owners

  • Type: readonly { owner: Address; weight: number }[]

The complete replacement owner set.

nextConfig.threshold

  • Type: number

The replacement approval weight required to authorize the account.

account (optional)

  • Type: Account | Address

Account that sends the transaction. For a coordinated multisig transaction, pass the multisig account.

feeToken (optional)

  • Type: Address | bigint

Fee token for the transaction.

Can be an unpaused USD-denominated TIP-20 token address or ID. Use client.fee.validateToken({ token }) to validate a token before submitting a transaction or setting it as a fee preference.

feePayer (optional)

  • Type: Account | true

Fee payer for the transaction.

Can be a Viem Account, or true if a Fee Payer Service will be used.

gas (optional)

  • Type: bigint

Gas limit for the transaction.

maxFeePerGas (optional)

  • Type: bigint

Max fee per gas for the transaction.

maxPriorityFeePerGas (optional)

  • Type: bigint

Max priority fee per gas for the transaction.

nonce (optional)

  • Type: number

Nonce for the transaction.

nonceKey (optional)

  • Type: 'expiring' | bigint

Nonce key for the transaction. Use 'expiring' to use expiring nonces (TIP-1009), which enables concurrent transaction submission without nonce ordering.

owner (optional)

  • Type: Account | Address

Local owner that signs one coordinated multisig approval.

validBefore (optional)

  • Type: number

Unix timestamp before which the transaction must be included.

validAfter (optional)

  • Type: number

Unix timestamp after which the transaction can be included.

throwOnReceiptRevert (optional)

  • Type: boolean
  • Default: true

Whether to throw an error if the transaction receipt indicates a revert. Only applicable to *Sync actions.