LEG 03 · 链上转移
Solana 上转 USDT 要备多少 SOL:基础费、优先费和替对方开代币账户的押金
先看这笔有几个签名、有没有优先费,再看收款代币账户是否要新开。一个签名的基础费是 0.000005 SOL;下面引的一笔链上回执里,新开一个 USDT 代币账户另存入 0.00148844 SOL。替对方垫的这笔钱存在对方账户里,关闭时不会自动退给你。
钱包里的 USDT 够,点发送,弹出来的却是 SOL 不足。缺的是哪一笔、缺多少?
Solana 上转 USDT,网络只收 SOL。对方已经有本次收款用的 USDT 代币账户时,要备的是基础费和可能的优先费;一个签名的基础费是 0.000005 SOL。需要新开收款账户、开户指令又带在你这一笔里时,发送方还得垫一笔开户押金,现在是 0.00148844 SOL。下面按这三笔钱各自的去向分开对。
确认页上那个网络费,里面装着哪几笔
先把单位说清。lamport 是 SOL 的最小记账单位,十亿 lamports 合 1 SOL。下面的数都先写 lamports,再折成 SOL。
付给网络的有两笔。Solana 文档「费用结构」页列出的总费用等于基础费用加优先费用,基础费用每个签名 5,000 lamports。这些文档是 2026 年 10 月的内容;费用和账户最低余额以后可能变,发送那一刻看钱包确认页列出的数。

第三笔不付给网络。它是存进一个新账户里的押金,只有本次转账需要新建收款代币账户时才出现。确认页上只给一个合计数时,三笔是混在一起的。同样转 USDT,带不带第三笔,按下面的数算能差出近三百倍。
基础费:数签名,一个签名 5,000 lamports
5,000 lamports,折 0.000005 SOL。转 1 USDT 和转 10,000 USDT 收的一样,它不看金额,只看这笔交易带了几个签名。
钱包地址同时负责转出 USDT 和付费、又没有其他签名者时,只签一次。只按基础费算:
- 一个签名:1 × 5,000 = 5,000 lamports;
- 两个签名:2 × 5,000 = 10,000 lamports。
两个签名的情形,比如付网络费的地址和转出 USDT 的地址不是同一个,各签一次。
这 5,000 的去向,文档写的是一半销毁,一半给出块的验证节点。
优先费:价是自己出的,乘的是上限
优先费是可选的。出了,这笔交易被排到前面的机会大一些;不出,照样可以发。算式在同一页:
传统交易和 v0 交易的优先费 = 计算单元单价 × 计算单元上限 ÷ 1,000,000,结果向上取整,单位 lamports。单价按「微 lamport」报,一百万微 lamports 合 1 lamport。
注意乘的是上限,不是这笔交易实际用掉的量。上限设得宽,同样的单价就多付。文档区分了指令类型:非内置指令每条默认 200,000 个计算单元,内置指令每条默认 3,000 个;钱包也可以显式设置上限。v1 格式则直接填优先费总额,不套这个乘法。
假设钱包给这笔交易设的上限是 200,000,单价 10,000 微 lamports:10,000 × 200,000 ÷ 1,000,000 = 2,000 lamports,折 0.000002 SOL。
单价和上限由发起交易的一方定,也就是替你组这笔交易的钱包。确认页上有档位或自定义入口的,先看它允许调的是单价、上限还是费用总额;没有入口的,看确认页合计出来的网络费。优先费全部归验证节点,不销毁。
对方没有 USDT 代币账户:押金谁垫,垫多少
在 Solana 上,USDT 不记在钱包地址名下的一栏里,而是记在一个单独的「代币账户」里。Solana 代币账户文档的说法:一个代币账户只装一种代币、只归一个持有人。代币账户可以在第一次收款前就创建,也可以在清空后被关闭;只凭有没有收过 USDT,判断不了本次是否需要开户。
对方还没有这个账户时,要先开,再转。钱包和代币的默认代币账户叫关联代币账户,地址由钱包地址、代币程序地址和代币的铸造地址三样推出来,同一组合只有一个,所以你填对方的钱包地址就够了。开户要存的这笔余额,文档写的是由创建指令里的付款方出,付款方可以不是账户的持有人——应用可以替收款人开。落到转账上,同一笔里带着开户指令时,出这笔钱的是发送方。
垫多少,按网络现在实际要求的最低余额算。代币账户是 165 字节;2026 年 10 月向网络查询,这个大小的账户最低余额是 1,488,440 lamports,折 0.00148844 SOL。账户文档给的算式是(账户字节数 + 128)× 3,480 × 2,代进去得 2,039,280 lamports,折 0.00203928 SOL,那是较早的标准。
链上回执和查询结果是同一个数。2026 年 10 月 10 日的交易 37XrdZum…YAYaJTgVw里,付款地址一次新开了三个 165 字节的代币账户,各存入 1,488,440 lamports,其中一个装的是 USDT。回执上的余额变动:
| 回执上的项目 | lamports | 折成 SOL |
|---|---|---|
| 三个新代币账户,各存入 | 1,488,440 | 0.00148844 |
| 三笔押金小计 | 4,465,320 | 0.00446532 |
| fee(一个签名的基础费 5,000,余下 50 是优先费) | 5,050 | 0.00000505 |
| 付款地址余额减少 | 4,470,370 | 0.00447037 |
4,465,320 加 5,050,正好 4,470,370,账是平的。每个新账户里存的 1,488,440,就是网络现在要求的最低余额。
这个数不用背。代币账户文档自己也提醒不要把最低余额写死。发之前以钱包确认页为准,看它合计的网络费:比基础费高出很多时,先分清多出来的是优先费,还是开户押金。按现在的 1,488,440 算,替对方开一个 USDT 代币账户再转过去,不算优先费是 1,488,440 + 5,000 = 1,493,440 lamports,折 0.00149344 SOL。
顺带核一件事:对方收的是不是真的 USDT。Solana 上谁都能发一个名字叫 USDT 的代币,认的是铸造地址。Tether 官网的支持协议页登记的 Solana 地址是 Es9vMFrzaCE
这笔押金还能拿回来吗
押金没有被网络收走,它躺在那个新代币账户里。账户文档管它叫可退还的最低余额。
可退,退给谁?代币账户文档写了两句。一句:关闭一个空的代币账户,会把里面全部 lamports 连同最低存储余额,转到关闭指令指定的收款地址。另一句:当初出钱开户的付款方,不会自动成为退款的去处。
翻成账:账户是对方的,关不关、关了之后这笔 SOL 去哪个地址,都由对方那一头定。你替别人垫的押金,在你这一头记成支出更稳妥。
自己名下的代币账户是另一回事。某个代币余额已经清零、以后也不打算再收,把那个空账户关掉,押金回到你指定的地址。条件是空:里面还有余额的,先转走或换掉。关掉以后别人再往这个地址转同一种代币,又要重新开户、重新垫押金。
SOL 不够,或者这笔失败了,钱扣不扣
分两种情况。
还没发出去,钱包就提示 SOL 不足。这时链上什么都没发生,不扣钱。补够 SOL 再发。
发出去了,链上执行失败。截图里那句摘要写得直接:无论交易成功还是失败,均会收取费用。USDT 没转成,基础费和优先费照扣。押金分情况:开户和转账在同一笔交易里执行时,失败会撤回开户,押金不会存进去;如果开户是前一笔已经成功的交易,后面的转账失败不会把那笔押金退回。
提示 SOL 不足时,改小 USDT 金额没有用,网络费不看转多少。也别连着点重发:真上链又失败的,每一笔都各收一次费。先看确认页的网络费里有没有开户押金,再看钱包里的 SOL 够不够付这个合计数。
还有一栏容易漏:钱包自己的 SOL 也有最低余额。账户文档写,每个账户都要留一笔和数据大小挂钩的最低余额才能留在链上。这部分也会影响钱包能否发出交易。准备 SOL 时,除了本次扣款,还要看钱包是否提示需要保留账户最低余额;不要把代币账户的押金数直接套到钱包地址上。
收款钱包可以没有 SOL,USDT 记在你替它开的代币账户里。下次由它自行付费转出时,才需要准备 SOL;若由别人代付,另看代付条件。以太坊对应的问题见钱包有 USDT 没有 ETH 怎么转。
从交易所提、往交易所充,SOL 由谁出
从交易所提 USDT 到 Solana 地址:你不用备 SOL。这一笔是平台的地址发的,链上的基础费和可能的开户押金出在平台那一头;你付的是提币页上标出的提币费。两笔账不是一回事,金额也没有固定换算。提币页选网络时,认 Solana 这一条,再看费用扣的是哪个币、预计到账多少。各网络怎么比,见提币网络怎么选。
从自己的钱包往交易所充:这一笔是你发的,SOL 由你出。交易所给的充值地址有没有对应的 USDT 代币账户,可以在链上查;钱包确认页若列出创建账户或存储余额,再核对是否要你垫付。只有一项网络费合计时,不能仅凭总数认定有押金。充值页另有两栏要对:网络是不是 Solana,最低充值金额是多少。金额不够的情况见USDT 充值低于最低金额怎么办。
和 TRON 比,哪边便宜?单位不同,没法直接比。TRON 那边烧的是 TRX,算法见TRC20 转 USDT 要多少 TRX。各自折成同一种法币,再看对方收不收这条网络——对方不收的网络,再便宜也不能用。
发完之后,回执上对哪几栏
拿交易签名到 Solana 浏览器查这一笔。签名就是这条链上的交易编号,钱包的转账记录里能复制。
- 看状态。成功还是失败,失败的也会有 fee。
- 看 fee。普通转账没有额外的预编译签名验证时,先减去签名数乘 5,000 的基础费,余下的是优先费。上面那笔 5,050,一个签名,就是 5,000 加 50。
- 看 SOL 余额变动。你的地址减少的数减去 fee 后,要接着看创建账户指令,核对新账户地址、存入 SOL 和分配字节数,再对上它的余额变化。不能只看差额大小:同一笔交易也可能另转了 SOL 或付了应用费用。
- 看代币余额变动。对方那个代币账户增加的 USDT,和你转出的数是否一致,铸造地址是不是上面那一串。
四栏对得上,这笔账就结了。对不上的,先别补转,拿签名去查卡在哪一步,查法见充值提币未到账怎么查。回执页和钱包里的转账记录各留一份,存法见加密交易记录怎么留。