> For the complete documentation index, see [llms.txt](https://docs.takadao.io/the-lifedao-kb/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.takadao.io/the-lifedao-kb/products-and-benefits/lifewallet/recover-funds-using-a-blockchain-explorer.md).

# Recover funds using a blockchain explorer

Recover assets from your LifeWallet smart account using an exported admin key and a blockchain explorer.

This guide explains how to use an exported admin private key to manage funds held by the TLD smart account through a blockchain explorer such as Arbiscan.

This tutorial uses MetaMask and Arbiscan as the example wallet and explorer. The same general steps can be applied with other wallets and blockchain explorers, as long as the wallet can import the admin private key and the explorer supports writing to verified contracts.

The exported private key controls the admin wallet, also called the EOA (Externally Owned Account). The smart account is a smart contract wallet. To move funds from it, you must call the smart contract wallet while connected with the admin wallet.

For your funds in Arbitrum, use Arbiscan: <https://arbiscan.io>

To manage funds on another chain, use that chain's block explorer. See [Appendix A: Common Blockchain Explorers](#appendix-a-common-blockchain-explorers).

To identify on what chains your funds live, see [Appendix B: How to Identify What Chains Your Funds Are In](#appendix-b-how-to-identify-what-chains-your-funds-are-in).

### Before You Start

You need:

* The exported admin private key. Export this key from your TLD profile.
* The smart account address that holds the funds. This is the address you see in your TLD dashboard.
* The destination wallet address where funds should be sent. Make sure you have access to this wallet.
* A small amount of native gas token on the admin wallet, for example ETH on Arbitrum, or a supported token for MetaMask token-paid gas. See step no.2 for more details.
* The chain where you want to manage your assets.

{% hint style="danger" %}
**Important security notes:**

* Never share the private key with anyone.
* Do not paste the private key into websites or chat tools.
* Only import it into a wallet application you trust, such as MetaMask or Rabby.
* After recovering funds, move them to a fresh wallet. Treat an exported private key as exposed.
  {% endhint %}

### Step 1: Import the Private Key Into MetaMask

1. Open MetaMask.
2. Select the account menu.
3. Select `Add account or hardware wallet`.
4. Select `Import account`.
5. Choose `Private Key`.
6. Paste the exported private key.
7. Confirm the import.

MetaMask will now show the admin wallet address. This is not the same address that holds the funds. Your funds are held by the smart account address.

### Step 2: Add Gas to the Admin Wallet

The admin wallet pays for the Arbiscan transaction.

For Arbitrum, send a small amount of ETH to the imported admin wallet address. The ETH does not need to be sent to the smart account. It only needs to be available in the MetaMask account that will sign the transaction.

On supported networks and transaction types, MetaMask also supports paying network fees with tokens other than the native gas token. MetaMask calls this [gas included transactions](https://support.metamask.io/manage-crypto/transactions/metamask-gas-station/).

For example, a user may be able to pay gas with USDC instead of ETH if MetaMask offers that option in the transaction confirmation screen.

If the imported admin wallet already has USDC or another supported token, select that token as the network-fee payment token when MetaMask shows the option. If the TLD smart account holds USDC and the user can submit a transaction, they can also send a small amount of USDC from the TLD smart account to the imported admin address for future gas payments in MetaMask.

If MetaMask does not show a token-paid gas option, the admin wallet needs the chain's native gas token.

### Step 3: Open the Smart Account on Arbiscan

1. Go to <https://arbiscan.io>.
2. Search for the address you copied from your dashboard (through the Receive CTA).
3. Confirm that this address holds the funds you want to recover.
4. Open the `Contract` tab.

If there is no Contract tab or no write functions are available, the smart account may not be verified on Arbiscan. In that case, use the original app or a recovery script instead.

### Step 4: Connect MetaMask to Arbiscan

<img src="https://3375984564-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fq8S4tcztR20WHVeLp5iK%2Fuploads%2F2RW1TcYpZhk4d9BLtYaE%2Funknown.png?alt=media&amp;token=f9f7fddb-1d3a-46e2-b0bb-a1a24e61bfa7" alt="" height="251" width="630">

1. On the smart account page, open `Contract`.
2. Select `Write Contract`.
3. If Arbiscan shows `Write as Proxy`, use `Write as Proxy` instead.
4. Select `Connect to Web3`.
5. Connect the imported admin wallet from MetaMask.

Make sure the connected wallet is the imported admin wallet. Do not connect a different wallet.

### Step 5: Find the execute Function

Look for a function named `execute`.

```
execute(address _target, uint256 _value, bytes _calldata)
```

This means:

* `_target`: the address the smart account should call.
* `_value`: the amount of native token the smart account should send, in wei.
* `_calldata`: encoded function data for contract calls. Use `0x` for a plain native-token transfer.

Many smart accounts can execute single and batched transactions, send and receive native tokens, and send and receive NFTs. The execute function is usually callable by an admin or the ERC-4337 entry point.

#### Sending Native ETH From the Smart Account

<img src="https://3375984564-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fq8S4tcztR20WHVeLp5iK%2Fuploads%2FctdFyGXUmxYyDV6Qazad%2Funknown.png?alt=media&amp;token=6ed02aad-6bfc-4301-8178-c7225f3c5875" alt="" height="432" width="630">

Use this if you want to transfer your ETH on Arbitrum to another wallet.

In the smart account's execute function:

```
_target: destination wallet
address_value: amount to send, in wei
_calldata: 0x
```

Example:

```
Send 0.25 ETH
_value = 250000000000000000
```

Then select Write, confirm in MetaMask, and wait for the transaction to confirm.

#### Sending ERC20 Tokens From the Smart Account

Use this when the smart account holds a token such as USDC, USDT, or another ERC20 that you want to manage.

In the smart account's execute function:

```
_target: ERC20 token contract
address_value: 0
_calldata: encoded transfer(destination, amount)
```

The calldata must be for this ERC20 function:

```
transfer(address recipient, uint256 amount)
```

The amount must use the token's decimals. For example:

* USDC usually has 6 decimals, so `10 USDC` is `10000000`.
* Most standard ERC20 tokens have 18 decimals, so `10 tokens` is `10000000000000000000`.

To generate the `_calldata` value, use Etherscan's Input Data Encoder:

<https://etherscan.io/inputdataencoder>

Select “Standard (ABI)” and enter:

```
Function Name: transfer
Parameter 1 type: address
Parameter 1 value: destination wallet address
Parameter 2 type: uint256
Parameter 2 value: token amount in the token's smallest unit
```

Then select Encode and copy the encoded result into the smart account's `_calldata` field.

If you are not comfortable generating calldata, ask a developer or support operator to generate it for you. A wrong token address, recipient, or amount can cause the transaction to fail or send the wrong asset.

#### Sending ERC721 NFTs From the Smart Account

Use this when the smart account holds an NFT.

In the smart account's execute function:

```
_target: NFT contract address
_value: 0
_calldata: encoded safeTransferFrom(smartAccount, destination, tokenId)
```

The calldata must be for this ERC721 function:

```
safeTransferFrom(address from, address to, uint256 tokenId)
```

The from address must be the smart account address, not the imported admin wallet address.

### How to Check the Transaction

After confirming the transaction:

1. Open the Transactions tab on Arbiscan.
2. Confirm the transaction is listed.
3. Open the smart account address and check that the balance decreased.
4. Open the destination wallet address and check that the balance increased.

For token or NFT transfers, check the Token Transfers or NFT Transfers tab.

### Common Problems

#### MetaMask Shows the Admin Wallet but Not the Funds

That is expected. The private key controls the admin wallet. The funds are held in the smart account contract.

#### The execute Call Reverts

Common causes:

* The connected wallet is not an admin of the smart account.
* The smart account is not the address that holds the funds.
* The target address is wrong.
* The calldata is wrong.
* The smart account does not have enough balance.
* The token amount does not account for token decimals.

#### There Is No Contract Tab on Arbiscan

The smart account may not be deployed yet, or the contract may not be verified. If the smart account is counterfactual and has not been deployed, Arbiscan cannot call it directly. Use the original app or a recovery script to connect and deploy the smart account first.

#### Arbiscan Says the Connected Wallet Has No Funds

The admin wallet only needs enough ETH to pay gas. The funds being recovered are in the smart account, not in the admin wallet.

### Recommended Recovery Order

1. Recover native ETH first if the smart account holds it.
2. Recover high-value ERC20 tokens next.
3. Recover NFTs last.
4. Move recovered assets to a fresh wallet.
5. Stop using the exported private key for long-term custody.

### Appendix A: Common Blockchain Explorers

Use the explorer for the chain where the smart account holds funds.

| Chain             | Explorer                          |
| ----------------- | --------------------------------- |
| Ethereum Mainnet  | <https://etherscan.io>            |
| Arbitrum One      | <https://arbiscan.io>             |
| Base              | <https://basescan.org>            |
| Optimism          | <https://optimistic.etherscan.io> |
| Polygon PoS       | <https://polygonscan.com>         |
| BNB Smart Chain   | <https://bscscan.com>             |
| Avalanche C-Chain | <https://snowtrace.io>            |

### Appendix B: How to Identify What Chains Your Funds Are In

Use this process when you know the smart account address but are not sure which chain holds the funds:

1. Copy the smart account address.
2. Check the address in the TLD app or wallet interface and note any chains with visible balances.
3. Search the same smart account address on the relevant explorers in [Appendix A](#appendix-a-common-blockchain-explorers).
4. On each explorer, check the native balance, `Token Transfers`, and `NFT Transfers` tabs.
5. Write down every chain where the smart account has a native token, ERC20 token, or NFT balance.
6. Use the explorer for that specific chain when following the recovery steps above.

On Arbiscan, the Assets tab can show a multichain portfolio for the smart account address:

<img src="https://3375984564-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fq8S4tcztR20WHVeLp5iK%2Fuploads%2F7zRdTQBDcwe1H8lTqPyf%2Funknown.png?alt=media&amp;token=6a9f7bec-527c-42b2-8f98-56d27a8559e0" alt="" height="449" width="630">

Use this view to identify where the funds are:

* The chain cards show which chains have balances for the same smart account address, for example Arbitrum One, Base, Ethereum, or BNB Chain.
* The number next to each chain name shows how many assets were found on that chain.
* The dollar value below each chain shows the estimated value held on that chain.
* The token table shows each asset separately, including the chain, token name, portfolio percentage, price, amount, and estimated value.
* Use the `Tokens` tab for ERC20 assets and the `NFTs` tab for NFT assets.
* Select `Show more chains` or `Display all chains` if the explorer reports additional chains.

In the screenshot above, the smart account has assets on multiple chains. That means recovery must be done on each chain separately, using the correct explorer and the correct token contract address for that chain.
