文章/教程 迁移钱包资产:把多个旧钱包的代币和主币一次搬到新地址(可代付 gas)

gtokentool · 2026年11月04日 · 1 次阅读

手动搬钱包,钱是卡在哪儿的

手上十几个旧钱包是常事:活动空投领过币的、测试时批量生成的、发币开池临时用的。钱散着,迟早要搬。一个个手动搬,会在三个地方卡住:

  1. 不知道里面有什么。 钱包里除了主币还有多少种代币,链上不主动告诉你,你得一个个去浏览器翻,翻漏了就剩粉尘。
  2. 没 gas 就一笔都发不出去。 代币转账的手续费要用主币付。旧钱包里常常只有代币、主币早花干净了,一点 BNB 都没有,代币看着就在眼前却转不走。
  3. 主币搬早了,后面全卡住。 有些人先把主币转走,结果这个钱包剩下的代币全都付不起 gas,只能再把主币转回来。

GTokenTool 的「迁移钱包资产」(/wallet/migrate)就是按这三个坑设计的:先扫出清单让你复核,再一笔一笔先模拟、后签名;代币先走、主币最后;主币不够付 gas 时可以用另一个钱包垫。 界面一共六张卡,下面按顺序走一遍,顺便说清每一步你在界面上会看到什么、哪些钱会花掉。

先划范围:搬什么、不搬什么

项目 说明
搬走的资产 原生币(BNB、ETH 这类主币)+ ERC-20 代币
不搬 NFT 不在迁移范围内,NFT 要走对应的 NFT 工具
链 一次只在当前选的那条链上操作。顶部切链后重新扫一遍:支持 BNB Chain、Ethereum、Arbitrum One、Polygon、Base、opBNB、Core、X Layer、Conflux eSpace、ApeChain、Morph、ECO、Robinhood、ARC,外加 BNB Chain Testnet
私钥 只在浏览器里本地签名,不上传;这个页面也没有把你的私钥存到任何服务器的步骤
收款方 全部源钱包的资产汇到同一个目标地址

跨链的资产请一条链跑一次,别指望一次搬完所有链。

1 · 源钱包(可多个)与目标地址

第一张卡两个输入框。

源钱包私钥是一行一个的大框,一次可以贴多个私钥,把几个旧钱包整包搬空。贴完框下面会回显「识别到 3 个钱包(去重 1 个)」——重复粘进来的同一把私钥只算一次。有行不对会逐行点名到行号,比如「第 5 行:私钥格式不正确(应为 0x 开头的 64 位十六进制)」或「第 5 行:私钥不在有效范围内」,不会出现「贴了十个只认了七个,也不知道少了哪个」。

如果这些钱包是这台浏览器里生成或导入过的(批量生成钱包、导入私钥留下的那份本地列表),勾上「加上本浏览器已存的钱包」就不用再翻私钥,勾选框旁边会写出「(12 个)」。

目标地址就是新钱包的地址,两个细节值得注意:

  • 从交易所提币页复制的那种不带 0x 的 40 位地址也能直接粘,不用自己补前缀。但 bnb1…、bc1…、T… 这些是别的链的地址格式,这条链上收不到,工具不接——填错了资产就等于丢了。
  • 如果你把其中一个源钱包填成目标地址,会当场拦你(「目标地址不能是其中一个源钱包」),不会默默把钱转回自己。

2 · 代付 gas(可选):旧钱包只剩代币的时候

这是第二个坑的解法。打开「由代付钱包垫 gas」,再填一个有钱的钱包私钥:开始迁移时,它先给每个源钱包垫一笔「刚好够用」的主币,垫到账后重新读余额、重算计划,那些因为没 gas 被拦下的代币就变成可搬的。

三点要说清:

  • 源钱包自己签名发自己的交易,私钥不会交给代付方。代付钱包只负责打钱,不动资产。
  • 代付钱包需要准备的钱,页面上直接写出来:「这一批要垫 0.0012 BNB(含代付钱包自己发这几笔的 gas)」。这句括号很重要——每个源钱包垫资本身就是一笔主币转账,那口气不算进去就会在最后一个钱包上差一笔。
  • 不够就一笔都不发。 开始迁移前它会先把这一批要垫的总额跟代付钱包余额比一次,不够就报「代付钱包余额不够:还差 0.0004 BNB,先给它转点主币再开始」然后停住。以前是走到哪个钱包不够就在哪个钱包失败,资产搬到一半停住,你还得猜是哪个;现在不会出现这种半截状态。

开关刚打开时,清单里那几行的状态会从红色的「gas 不够,已跳过」变成黄色的「等代付钱包垫 gas 后搬」。这不是没生效:清单是按你点「扫描」那一刻的余额算的,垫钱发生在「开始迁移」里面,所以措辞用将来时。垫完重算的那一笔数会在执行日志里写出来(「已到账,重算计划为 6 笔」)。

3 · 扫描设置:四项,改完必须重扫

这张卡决定清单长什么样。扫描会自动列出这个钱包持有的代币,余额与精度最后由链上确认——自动发现只当「这个地址接触过哪些币」的线索,精度抄错的后果是金额放大或缩小几十倍,所以数值一律现读。

设置 界面原话 怎么用
价值阈值 只搬价值 ≥(U) 填 5 就是只搬值 5 U 以上的,粉尘自动跳过。填 0 表示都搬。还没有报价的新币不参与筛选,不会被当成「不值钱」默默丢掉
给源钱包留多少 0 = 一分不留 默认 0。每笔交易的 gas 已经逐笔从预算里扣过了,这份预留只是你想在旧钱包剩点零钱时才填。穷钱包填个 0.001 反而会把大部分资产卡在「gas 不够」那一档
补充代币合约 一行一个合约地址 清单漏了的币,把合约地址粘进来补。改完要再点一次「扫描」才会出现在清单里。非法地址逐行报错(「第 2 行:合约地址格式不正确 · 原文前 48 字」),重复的自动去重并告诉你「去重 2 个」
包含高风险代币 默认不搬空投垃圾币与貔貅盘 默认关掉,这类币仍然会列出来、但排在清单最后并标成「高风险,默认排除」。想连它们一起搬就开这个总开关——注意开了就是全部一起搬,清单里那些行不给单独勾

扫完「扫描」按钮旁边会给一行汇总:「共 3 个钱包 · 可搬 11 个 · 预计 gas 0.00012 BNB · 服务费 0.0009 BNB」。

扫过一次之后再改这四项里的任何一项,都要重新点一次「扫描」。 清单和计划是点扫描那一刻算出来存下的,你在下面改了阈值不重扫,执行时用的还是老清单。这种情况界面会出黄字提醒:「扫描设置改过了,再点一次「扫描」才会按新设置重算清单。」填回原来的值就不会报。

4 · 复核清单:每一行你会看到什么

一个源钱包一张表,表头六列:

列 内容
搬 勾选框。被阈值筛掉、余额为 0、读不到元数据、高风险这几类不给勾(前两类是没必要搬,高风险走上面的总开关);因为没 gas 被拦下的行可以勾——gas 够不够是「怎么发出去」的问题,不该替你决定「要不要搬」
资产 代币简称,旁边一个小标签说明它怎么来的:自动发现 / 手填 / 风险
余额 链上读到的实际余额,按这个币自己的精度换算
价值 按上游美元报价算的估值;没报价显示「—」
计划转出 这一笔实际会转走多少(主币那笔会扣掉 gas)
状态 见下表

状态那一列会把「为什么搬不了」写在行上,常见的几种:

  • 可迁移 —— 会发的一笔
  • 最后转出 —— 主币那一行,它永远排在最后
  • gas 不够,已跳过 / 开了代付后变 等代付钱包垫 gas 后搬
  • 余额为 0(粉尘)、低于价值阈值、高风险,默认排除、你没勾选、读不到元数据、扣掉 gas 后没有可转的

表上方还有「已选 N 个代币 + 主币」和「全选 / 全不选」。「已选」统计的是你勾了多少,不是「排得下几笔」,所以调勾选的时候这个数一定跟着动。

一个容易看错的地方:BNB Chain 上你可能同时看到 BNB 和 WBNB 两行(其它链是 ETH / WETH)。不是余额读错了,前者是主币、后者是包装币,两笔各自独立搬。测试网不会扫那枚包装币,免得列一行显示 0、还多收一份服务费。

服务费怎么收:按代币数、一笔汇总、先收

这块最容易让人误会,单独说。

  • 收费单位是「每个代币」,主币那一笔不收。 单价按当前链定价,跟市值机器人的单笔价一致,BNB Chain 上是 0.0001 BNB / 个代币。这个数就写在「3 · 扫描设置」的标题下面,切到别的链会跟着变。搬 9 种代币就是 0.0009 BNB。
  • 一笔汇总收取,而且放在最前面执行。 开始迁移的第一件事是把这一批的服务费转给平台地址(收款地址前几位就写在「开始迁移」按钮旁边,不用猜)。反过来如果最后才收,gas 已经花光、主币也快转完了,很容易变成「活干完了但费用付不出」。
  • 只对真的搬走的代币收费。 因为没 gas 被拦下的、你取消勾选的、低于阈值的、余额为 0 的,都不进收费计数。以前有过「清单上 15 行全是因为没 gas 搬不走,服务费却按 15 个收」的情况,现在按实际搬走的笔数算。

所以「资产种类多的钱包」值得先看一眼「可搬几个 · 服务费几个」再决定要不要分几批搬。一个钱包扫出 40 种币、每种都收一份的时候,阈值那道筛选比手动勾省事得多。

5 · 执行日志:一笔一笔串行发

按下「开始迁移(3 个钱包)」,日志区(第 5 张卡)开始逐行出字:

先收服务费 9 个代币 · 900000000000000 wei
服务费已付(0x…完整哈希…)
— 0x1f… 开始(7 笔)
开始第 1/7 笔:USDT(先模拟,过了才签名)
USDT 已广播(0x…),等确认
USDT 已确认
…
0x1f… 完成:成功 7 · 跳过 2 · 失败 0

几个行为上的约定:

  • 每一笔先模拟,过不了就不签名、不花钱。 合约把你加进黑名单、暂停了转账、税率导致这钱包剩下的 gas 不够——这些都会在模拟阶段拦下来,日志写「预检没过,已跳过」,这一笔一分钱 gas 都没花。已经广播出去之后才失败的才算「失败」。
  • 代币先走、主币最后。 清单里主币那行显示「最后转出」。顺序反过来的话,主币一走,这个钱包剩下的代币就没有 gas 付了。
  • 串行,不并行。 一个钱包只有一个 nonce,并行发要么撞号要么要自己排队,迁移这种场景一笔乱掉整包都乱。串行慢一点,换来的是每一笔的状态都对得上,出问题一眼能看出卡在哪一笔。
  • 一笔失败不影响其它笔。 同一个钱包里其它资产照搬,其它钱包照常排队,失败原因逐行留在那儿。
  • 有转账税的币,「转出」和「到账」是两个数。 日志会明确写「已确认,实际到账少于转出(差额多半是转账税)」,不会让你以为转丢了。到账数是从回执里解析出来的实际值。
  • 日志里的哈希是完整的,页面上点得开浏览器链接;表格里显示的是截断地址,旁边有复制图标。

6 · 结果与导出:跑完怎么对账

第 6 张卡先给一行汇总:「成功 21 笔 · 跳过 4 · 失败 1 · 服务费 0.0021 BNB」,然后两个出口:

  • 导出 CSV(含源钱包列) —— 文件名类似 wallet-migrate-3f9a1c.csv。列是:源钱包、类型、资产、合约地址、转出数量、实际到账、状态、交易哈希、失败原因。多钱包迁移最容易出的问题是「这笔到底是哪个钱包转的」,所以导出里必须带钱包列,否则事后对账要一笔笔回链上查。
  • 复制需处理清单 —— 只列失败和被跳过的行,带上原因和哈希,粘出去就能问人;全清的话提示「没有需要人工处理的项」。

页面关掉就查不到状态,所以这两个出口是给你留档用的。建议每次跑完都导一份 CSV。

实操上省事的几个习惯

  • 第一次先拿一个钱包试。 阈值填个 5 U,看清楚清单、费用、日志长什么样,再上批量。
  • 一批别贴太多私钥。 一个钱包十几笔、二十个钱包就是两三百笔,串行发要看时间。按钱包分几批跑,每批导一份 CSV。
  • 目标地址先核对再粘。 尤其是从交易所复制的不带 0x 那一种。先把新钱包在这条链上能用、能收,再开始搬。
  • 旧钱包还要留着收租的,就在「给源钱包留多少」填一点主币,别一分不留。
  • 剩下的重新扫一次。 因为没 gas、税率、黑名单被拦下的那些,重扫之后清单会按新余额重算,再补一轮就干净了。
  • 搬空的旧私钥别再复用。 一个地址接过不明来源的空投,它就跟你的名字绑在一起了,新钱包别走回头路。

它不做什么(免得你按错的预期用它)

  • 不搬 NFT。 NFT 资产不在这个清单里,也不会有「跳过 NFT」的提示行。
  • 不跨链。 一次一条链,切链各跑一次。
  • 不是隐匿手段。 迁移的每一笔都是「源地址 → 目标地址」的公开转账,链上一眼能看出这批钱从一个旧地址汇到新地址。要切断这种直接关联,用的是另一个功能「隐匿转账」(/wallet/distribute),那是把一个钱包的钱经过几个中转钱包再打到目标地址。
  • 不保证每个币都搬得走。 黑名单、暂停转账、税率太高、合约不是标准 ERC-20,都可能在模拟阶段被拦。被拦的那一笔不会花你的 gas(还没签名就停了);服务费是按「计划要搬的代币数」在开始前一次性收的,所以真遇到搬不动的币,那一份费用是已经付出去的。
  • 不代持、不上传私钥。 所有签名都在你浏览器里完成。

常见问题可以看站内教程页:https://gtokentool.com/guide/wallet-migrate;工具直达 https://gtokentool.com/wallet/migrate。

免责声明:本文仅介绍工具用法与链上机制,作为区块链学习与测试用途;请遵守当地区法律法规,勿将工具用于任何违法活动。

暂无回复。
需要 登录 后方可回复, 如果你还没有账号请 注册新账号