garx· Wallet recovery guide

Recover your wallet

garx is non-custodial: your keys — not our servers — control your money. This guide shows how to restore access to your funds in other wallet apps (MetaMask, Phantom, TronLink), even if garx is ever unavailable.

The one rule: back up while everything works.

Open Backup & recovery in the garx menu and export your keys today, then store them somewhere safe and private (a password manager is ideal). Keys are held by Privy, our wallet infrastructure provider — if you never export them and Privy itself were to shut down, nobody can recreate them. Exporting takes two minutes.

Never share a private key.

Anyone who has a key controls the money. garx will never ask for your keys — no support agent, no email, no website. Only ever paste a key into the official wallet app you are importing it into.

1What to back up

  • EVM key— one key for Ethereum, Base, Arbitrum, Polygon and BNB Chain. Note: this key belongs to a “signing address” that holds no funds; your money lives on your wallet address (the one you see under Receive), which this key controls.
  • Solana key — this key is your Solana address with your funds on it.
  • Tron key (if you use Tron) — like EVM: the key signs for your deposit address where the USDT lives.
  • Your addresses — copy the wallet/deposit addresses shown on the Backup screen and store them next to the keys.

2Restore Solana in Phantom (easiest)

  1. 1Install Phantom (phantom.com — official site only).
  2. 2In Phantom: Add account → Import Private Key, network Solana, paste your exported Solana key.
  3. 3Done — the address matches your garx Solana address, with your SOL / USDC / USDT.

No SOL for fees? The Phantom mobile appsends verified tokens (USDC, USDT) gaslessly when your SOL balance can’t cover the fee (transfers worth at least ~$0.30) — the fee is taken from the token you send. Otherwise, top up a tiny amount of SOL (~0.005).

3Restore Tron USDT in TronLink

  1. 1Install TronLink (tronlink.org — official site only; app 4.15+ / extension 4.2+).
  2. 2Import wallet → Private key, paste your exported Tron key. When asked, enable “Create GasFree wallet” (or tap Explore GasFree on the home screen afterwards).
  3. 3TronLink shows the same GasFree deposit address as garx, with your USDT. Send from it as usual — the network fee (~1.5 USDT) is taken from the amount, no TRX needed.

Backstop: if GasFree transfers are ever unavailable, connect TronLink at the official gasfree.io/withdraw page and withdraw to your signing address directly (that path needs a little TRX for the transaction).

4Restore EVM funds (MetaMask + rescue tool)

Your EVM funds live on a smart wallet (a contract address — the same on all networks), and your exported key controls it. Importing the key into MetaMask alone shows an empty signing address — that is expected. Moving the funds takes one extra step with the garx rescue tool:

  1. 1Install MetaMask (metamask.io — official site only) and import your exported EVM key: Account menu → Add account → Import account.
  2. 2Open the garx rescue tool at shkrb.github.io/garx-rescue/. It runs entirely in your browser — no garx servers involved.
  3. 3In the tool: connect MetaMask, confirm your smart wallet address, and use Withdraw to send each asset to any address you control.
  4. 4Fees: the signing address pays normal network gas — keep a few dollars of the network’s own coin on it (ETH; POL on Polygon; BNB on BNB Chain).
Technical details (for a developer helping you)

The smart wallet is a ZeroDev Kernel v3.1 ERC-4337 account (EntryPoint v0.7). The exported key is the owner registered in its ECDSA root validator 0x845ADb2C711129d4f3966735eD98a9F09fC4cE57.

On Kernel v3.x the owner can move funds without any bundler or paymaster: call execute(bytes32 execMode, bytes executionCalldata) on the account as a normal transaction from the owner address. For a single call: execMode = 32 zero bytes, executionCalldata = abi.encodePacked(target, uint256 value, data) — an ERC-20 sweep is target = token, value = 0, data = transfer(to, amount).

Counterfactual (never-used) accounts deploy permissionlessly via KernelFactory.createAccount(initData, bytes32(0)) at 0xaac5D4240AF87249B3f71BC8E4A2cae074A3E419 (implementation 0xBAC849bB641841b44E965fB01A4Bf5F074f84b4D). Anyone can also self-bundle a signed UserOperation via EntryPoint.handleOps at 0x0000000071727De22E5E9d8BAf0edAc6f37da032. The rescue tool implements all of this; its source is public.

5If garx is unavailable

  • Already exported your keys? Everything above works without garx — Phantom, TronLink and the rescue tool never touch garx servers.
  • Didn’t export yet? Your keys are held by Privy (our wallet infrastructure). Log in with your garx email at home.privy.io(Privy’s own portal) or on the garx rescue page’s Export tab — both let you export keys while Privy operates, even if garx itself is down.