Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.portalhq.io/llms.txt

Use this file to discover all available pages before exploring further.

Portal’s Web SDK provides EVM Account Type management through the portal.evmAccountType API. This enables checking wallet account types and upgrading EOA wallets to EIP-7702 on supported EVM chains.

Overview

The EVM Account Type functionality allows you to:
  • Check wallet status to determine the current account type
  • Get addresses to retrieve the EOA and smart contract addresses for a chain
  • Upgrade to EIP-7702 to enable ejecting the Portal wallet’s EOA private key

Prerequisites

Before using EVM Account Type operations, ensure you have:

Checking Wallet Status

Use getStatus to check the current account type of your wallet. The response includes both the account status and metadata about the wallet addresses.
const handleGetStatus = async () => {
  try {
    const { data, metadata } = await portal.evmAccountType.getStatus({
      chain: 'eip155:10143', // Monad Testnet
    })

    if (data.status === 'EIP_155_EOA') {
      console.log('✅ Can upgrade to EIP-7702')
    } else if (data.status === 'EIP_7702_EOA') {
      console.log('ℹ️ Already upgraded')
    } else {
      console.log('❌ Cannot upgrade')
    }
  } catch (e) {
    console.error('Failed to get account status', e)
  }
}
Response (GetStatusResponse):
  • data.status: One of EIP_155_EOA, SMART_CONTRACT, or EIP_7702_EOA
  • metadata.eoaAddress: The EOA address associated with the wallet
  • metadata.smartContractAddress: Your smart contract wallet address (optional, may be null/undefined for EOA-only accounts)
  • metadata.chainId: The chain identifier

Getting EOA and Smart Contract Addresses

Use getAddresses to retrieve the EOA and smart contract addresses for your wallet on a specific chain. This method is useful when you only need the addresses without the full status information.
const handleGetAddresses = async () => {
  try {
    const result = await portal.evmAccountType.getAddresses({
      chain: 'eip155:10143', // Monad Testnet, or eip155:1 for mainnet
    })

    console.log('EOA address:', result.eoaAddress)
    console.log('Smart contract address:', result.smartContractAddress)
  } catch (e) {
    console.error('Failed to get addresses', e)
  }
}
Response (GetAddressesResponse):
  • eoaAddress: The EOA address for the wallet on this chain
  • smartContractAddress: The smart contract wallet address (if any)

Upgrading to EIP-7702

Use upgradeTo7702 to upgrade an EOA wallet to EIP-7702. This method automatically handles the entire upgrade process, including gas subsidization, and returns the transaction hash.
const handleUpgradeTo7702 = async () => {
  try {
    const txHash = await portal.evmAccountType.upgradeTo7702({
      chain: 'eip155:10143', // Monad Testnet
    })
    console.log('Upgrade submitted! TX hash:', txHash)

    const status = await portal.evmAccountType.getStatus({ chain: 'eip155:10143' })
    console.log('Final Status:', status.data.status)

    if (status.data.status === 'EIP_7702_EOA') {
      console.log('Successfully upgraded to EIP-7702!')
    }
  } catch (e) {
    console.error('Upgrade failed', e)
  }
}

What happens during the upgrade:
  1. Chain validation: Verifies the chain uses the eip155 namespace
  2. Status check: Confirms the wallet is currently an EIP_155_EOA
  3. Authorization building: Creates the EIP-7702 authorization list
  4. Signature: Signs the authorization hash with your wallet
  5. Transaction submission: Submits the subsidized upgrade transaction (gas is paid by Portal)
  6. Transaction hash: Returns the on-chain transaction hash
Response: The method returns a string containing the transaction hash of the submitted upgrade transaction.
The upgrade process is irreversible per wallet. Once upgraded to EIP-7702, the wallet cannot be reverted to a standard EOA on that chain.

Supported Networks

EVM Account Type upgrades are currently available on:
  • Monad Testnet (eip155:10143)
For a complete list of supported chains, reach out to the Portal team.

Next Steps