Skip to content
LogoLogo

accounts.upgrade

Upgrades an existing account to a configurable account in place (TIP-1113). The account keeps its address and installs the given owners and threshold.

The account's root key must sign the upgrade, and the upgrade must be the transaction's only call. After the upgrade, the root key can no longer sign for the account. Use accounts.upgradeSync to wait for confirmation.

Usage

import { Account } from 'viem/tempo'
import { client } from './viem.config'
 
const root = Account.fromSecp256k1(
  '0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80'
)
const owner = Account.fromSecp256k1(
  '0x59c6995e998f97a5a0044966f0945389dc9e86dae88c7a8412f4603b6b78690d'
)
 
const hash = await client.accounts.upgrade({
  account: root,
  owners: [{ owner: owner.address, weight: 1 }],
  threshold: 1,
})
'0x...'

Return Value

Hash

The transaction hash.

Parameters

owners

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

The owners to install. Owners are normalized into canonical address order, and must use primitive signatures.

await client.accounts.upgrade({
  owners: [{ owner: '0x...', weight: 1 }], 
  threshold: 1,
})

threshold

  • Type: number

The approval weight required to authorize the upgraded account.

await client.accounts.upgrade({
  owners: [{ owner: '0x...', weight: 1 }],
  threshold: 1, 
})

account (optional)

  • Type: Account | Address

Account that sends the transaction. For a coordinated transaction, pass the configurable 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 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.