← back to blog

Setup guide: Hardware-wallet rotation across 50 addresses

Setup guide: Hardware-wallet rotation across 50 addresses

Running airdrop farms at scale means solving one problem above all others: how do you keep 50 addresses active, funded, and distinct, without reusing hot-wallet keys that can be swept in a single exploit? the answer most serious operators settle on is hardware-wallet rotation, where all 50 addresses derive from one or two physical devices using BIP-44 hierarchical deterministic paths. one seed, one backup, fifty independently usable addresses, and no private keys sitting in plaintext on a VPS.

this guide is for operators who already have some airdrop farming experience and want to move away from per-address hot wallets or MetaMask profiles toward something that survives a compromised machine. you do not need to be a developer. you do need patience with derivation paths and a willingness to build a tracking sheet you will actually maintain.

by the end you will have 50 EVM addresses generated from a Ledger or Trezor device, mapped to a spreadsheet with derivation indices, and ready to connect to any dapp via WalletConnect or a local script. i run this setup across around 80 addresses today; the 50-address version described here is a manageable starting point before you scale.


what you need

hardware - 1x Ledger Flex (~$249 USD as of Q1 2026) or Trezor Safe 5 (~$169 USD). either works. i use Ledger because the Ledger Live address export flow is faster for bulk work - a second device for backup (optional but strongly recommended, same seed loaded) - a USB hub if you are cycling the device repeatedly across sessions

software and accounts - Ledger Live or Trezor Suite installed on a dedicated machine, not your daily driver - Node.js 20+ installed locally - a spreadsheet tool (Notion, Google Sheets, or a local CSV, your choice) - MetaMask or Rabby installed in a browser profile per address (see our browser profile isolation guide)

infrastructure - one RPC endpoint per chain you are farming (Alchemy free tier covers 300M compute units/month, sufficient for 50 addresses at light use) - a proxy or VPN per session if your threat model requires IP separation (the tradeoffs are covered at multiaccountops.com/blog/)

costs to budget - hardware: $170-$260 for the primary device - gas float: I keep 0.01-0.05 ETH on each address before any campaign, so budget $500-$2500 at current prices depending on chain mix - RPC: $0 to ~$50/month depending on call volume


step by step

step 1: initialize the device with a new seed

plug in your Ledger or Trezor to a clean machine (ideally one that has never touched the internet, though an air-gapped laptop is enough). follow the device’s onboarding to generate a new 24-word seed. do not use an existing seed you already have funds on.

expected output: device shows “Your device is ready” and your 24 words are written on the recovery card.

if it breaks: if the device freezes mid-setup, hold the button for 8 seconds to restart. do not panic if the screen goes blank, Ledger devices auto-lock.

back up the 24 words to a steel plate (Cryptosteel or Bilodeau, around $70-90). paper backups are fine for testing but not for a live farming rig.

step 2: understand derivation paths before you generate anything

every address you will use follows BIP-32’s HD wallet spec. for EVM chains the path looks like:

m/44'/60'/0'/0/INDEX

where INDEX is 0, 1, 2, … up to 49 for your 50 addresses. the 60 coin type is Ethereum; all EVM chains use the same address from the same index, which is intentional for our purposes.

the critical point: index 0 is your first address, index 49 is your fiftieth. if you mix up which index maps to which protocol, you will send funds to the wrong address. the tracking sheet in step 4 prevents this.

step 3: export all 50 addresses from the device

Ledger Live does not natively show all 50 addresses in a single export view, so I use a small Node script with the @ledgerhq/hw-transport-node-hid library to pull them:

npm install @ledgerhq/hw-transport-node-hid @ledgerhq/hw-app-eth ethers
// export-addresses.js
const TransportNodeHid = require("@ledgerhq/hw-transport-node-hid").default;
const Eth = require("@ledgerhq/hw-app-eth").default;

async function exportAddresses(count = 50) {
  const transport = await TransportNodeHid.create();
  const eth = new Eth(transport);
  const results = [];

  for (let i = 0; i < count; i++) {
    const path = `44'/60'/0'/0/${i}`;
    const { address } = await eth.getAddress(path, false);
    results.push({ index: i, path: `m/${path}`, address });
    console.log(`${i}: ${address}`);
  }

  await transport.close();
  return results;
}

exportAddresses().catch(console.error);

run this with the device unlocked and the Ethereum app open:

node export-addresses.js > addresses.txt

expected output: 50 lines, each with an index, derivation path, and 0x... address.

if it breaks: if you get device not found, make sure Ledger Live is fully closed before running the script. the HID transport and Ledger Live cannot share the USB connection simultaneously.

for Trezor users, Trezor Suite’s account discovery handles up to 10 accounts in the UI. for 50 you need the trezor-connect library, which works similarly.

step 4: build your tracking sheet

this is the most important step operationally. paste the exported addresses into a spreadsheet with these columns:

index address alias chain protocol last_tx status notes
0 0xABC… farm-00 Arbitrum Hyperliquid 2026-05-10 active
1 0xDEF… farm-01 Base Aerodrome 2026-05-12 active

assign one alias per address, one primary protocol per address. you can use the same address on multiple protocols, but keeping the 1:1 mapping early on reduces tracking errors. later you can loosen this.

keep this sheet offline or in a private Notion page. the addresses are public-key data so leaking them is not catastrophic, but it does expose your farming map to competitors.

step 5: fund addresses in batches

do not fund all 50 from a single CEX withdrawal in one transaction. that links them on-chain immediately. instead:

  1. withdraw to addresses 0-9 from exchange A
  2. wait at least one block, preferably a day
  3. withdraw addresses 10-19 from exchange B or a different withdrawal account
  4. repeat for each batch of 10

for gas-only top-ups mid-campaign, a small intermediary hot wallet is fine, but keep it separate from your main CEX account.

expected output: each address has at least enough gas to execute 5-10 transactions on its target chain.

if it breaks: if an exchange flags your repeated withdrawals, slow down. most exchanges allow 3-5 withdrawals per day to novel addresses before triggering a review.

step 6: connect addresses to dapps

for most EVM dapps, WalletConnect is the cleanest connection method because it does not require the device to be plugged in during every session. the flow:

  1. open the dapp in a dedicated browser profile (one profile per address)
  2. select WalletConnect as the connection method
  3. in Ledger Live, open the dapp browser or use the WalletConnect tool under “Discover”
  4. scan the QR code
  5. the device signs without exposing the private key to the browser

for protocols that require MetaMask specifically, install MetaMask in the profile and use “Connect Hardware Wallet” from MetaMask’s account page. select the derivation index matching your address. MetaMask will show the matching address so you can confirm before connecting. Ethereum’s account documentation explains the underlying key model if you want to understand why this works without exporting keys.

if it breaks: if MetaMask shows a different address than expected, double-check the derivation path type. some wallets use m/44'/60'/0'/index (legacy) instead of m/44'/60'/0'/0/index. switch the path in MetaMask’s hardware wallet options.

step 7: build a rotation schedule

rotation means you are not hammering the same address on the same protocol every day. a basic weekly schedule for 50 addresses across 5 protocols:

  • Monday: addresses 0-9 on protocol A
  • Tuesday: addresses 10-19 on protocol B
  • Wednesday: addresses 20-29 on protocol C
  • Thursday: addresses 30-39 on protocol D
  • Friday: addresses 40-49 on protocol E
  • Saturday/Sunday: consolidation, gas top-ups, tracking sheet updates

this keeps each address’s on-chain activity spaced out. pair this with IP and browser profile isolation (antidetect browser comparisons are covered at antidetectreview.org/blog/) if you are farming protocols that do sybil analysis.

step 8: harvest and consolidate safely

when a campaign ends and tokens are claimable, do not send all 50 claims to one address in the same block. claims from hardware wallet addresses look cleaner than from contract wallets, but pattern-matching at claim time still happens. stagger claims over 2-4 days, and send proceeds to a fresh consolidation address rather than back to the same exchange account you funded from.


common pitfalls

not recording the derivation index before farming. if you set up address index 17 on a protocol and forget which index it is, you cannot reconnect the device to that address without guessing. the tracking sheet in step 4 exists specifically for this.

sharing a seed across hot and cold wallets. some operators load the same 24-word seed into both a hardware wallet and MetaMask “for convenience.” this defeats the point. the hot wallet exposes the seed to the machine.

plugging the device into every machine that runs the farm. the device only needs to be connected to sign. for read operations (checking balances, monitoring txs), use your RPC and a watch-only wallet. see our watch-only wallet monitoring guide for how to set this up in Rabby.

funding all addresses from a single on-chain hop. one wallet sending to 50 addresses in 50 sequential transactions is a clear on-chain cluster. batch funding with delays or use multiple source wallets.

ignoring firmware updates. Ledger and Trezor push security patches. a device running 2-year-old firmware on a live farming rig is an unnecessary risk. update during off-cycle weekends when no transactions are pending.


scaling this

10x (500 addresses): one hardware wallet can theoretically generate thousands of addresses, but managing 500 in a spreadsheet becomes unworkable. at this scale you want a database (SQLite or Postgres) and a lightweight script that reads the tracking table and submits transactions via your RPC. the device stays connected to one machine and signs via HID; scripts queue the signing requests.

100x (5000 addresses): a single hardware wallet becomes a bottleneck. operators at this scale typically use 5-10 devices, each responsible for a shard of addresses, running on separate machines. seed management becomes a logistics problem, not a technical one. you also need to think seriously about which chains’ sybil detection will flag this volume.

1000x: beyond the scope of this guide and likely beyond what a hardware-signing flow can support operationally. at that scale most operators move to smart-contract wallet factories or MPC key management, which trades hardware-level security guarantees for operational speed. that is a significant architectural shift with its own tradeoffs.


where to go next


Written by Xavier Fok

disclosure: this article may contain affiliate links. if you buy through them we may earn a commission at no extra cost to you. verdicts are independent of payouts. last reviewed by Xavier Fok on 2026-05-19.

need infra for this today?