[{"data":1,"prerenderedAt":22},["ShallowReactive",2],{"blog-content-zh-crypto-address-formats-explained":3},{"slug":4,"title":5,"excerpt":6,"description":7,"bodyHtml":8,"faqItems":9},"crypto-address-formats-explained","为什么你的钱包显示不同的地址：EVM、Solana 与 TON 格式","一条助记词，三个毫不相像的地址——EVM 上的 0x、Solana 上的 base58、TON 上的 EQ\u002FUQ。WATS 从同一条非托管恢复助记词派生出全部三者。本文讲清格式为何不同、校验和究竟能拦住什么，以及哪些习惯能杜绝转错链和形近地址的失误。","加密地址格式详解：EVM 的 0x 地址与 EIP-55、Solana 的 base58、TON 的 bounceable 与 non-bounceable 地址、交易所 memo、地址投毒，以及 WATS 如何从一条非托管恢复助记词派生出 EVM、Solana 和 TON 地址。","\u003Cblockquote>\u003Cp>你的钱包在每条链上显示的地址各不相同，是因为每个生态都以不同的方式从同一条种子派生并编码地址：EVM 链把 secp256k1 公钥哈希成 0x 加 40 个十六进制字符，Solana 直接把 ed25519 公钥编码为 32–44 个 base58 字符，而 TON 则把账户哈希打包成 48 个字符的 EQ\u002FUQ 字符串。这些格式都没有编码自己所属的网络，这正是同一个 0x 地址在 Ethereum、Arbitrum、Optimism、Base、Polygon 和 BNB Chain 上都归你所有的原因，也是转错链如此常见的原因。内置校验的强度并不一致：EIP-55 的大小写混排能发现打错的 0x 地址，TON 的 CRC16 能发现打错的 EQ\u002FUQ 地址，而 Solana 的 base58 字母表只是避开了形近字符，并不会去校验它们。WATS 覆盖 Ethereum、Arbitrum、Optimism、Base、Polygon、BNB Chain、Solana 和 TON——密钥由你持有，WATS 从不持有密钥——并且它不支持 Bitcoin，因此 bc1 地址不在这幅图景之内。\u003C\u002Fp>\u003C\u002Fblockquote>\n\n\u003Ch2>一条助记词，三个毫不相像的地址\u003C\u002Fh2>\n\u003Cp>你的钱包在每条链上显示不同的地址，是因为每条链都以不同的方式从同一条种子构建地址。EVM 链把 secp256k1 公钥哈希成 0x 十六进制地址；Solana 直接把 ed25519 公钥编码成 base58；TON 则把账户哈希包装成带校验和与 bounce 标志位的 base64 格式。曲线不同，派生路径也不同——这些地址不可能一致。\u003C\u002Fp>\n\u003Cp>这一切都不是 bug，也没有哪个钱包给你显示了错误的地址。这是同一个身份在每条链上的不同写法——而知道哪种写法属于哪里很重要，因为把资产发到正确的地址、却选错了网络，是人们丢失加密资产最常见的方式之一。\u003C\u002Fp>\n\n\u003Ch2>为什么同一条助记词在每条链上给出的地址不同？\u003C\u002Fh2>\n\u003Cp>本文提到的每个地址都可以来自同一条助记词。种子会成为一把主密钥，多链钱包再从它出发，沿着\u003Cstrong>派生路径\u003C\u002Fstrong>为每条链派生出一对独立的密钥——这条路径由 BIP-44 定义为标准化路线，并在 SLIP-44 中为每个生态登记了各自的 coin type：Ethereum 是 60，Solana 是 501，TON 是 607。（单链钱包，尤其是 TON 上的，有时会改用自己的助记词方案。）随后有两件事让结果彻底分道扬镳。EVM 链使用 secp256k1 曲线签名；Solana 和 TON 使用 ed25519 签名——这是完全不同的数学，因此即便这些密钥对源自同一条种子，它们之间也毫无关联。而且即使是共用同一条曲线的链，也会在其之上使用不同的路径和不同的编码。一条种子如何展开成整棵密钥树，可参阅\u003Ca href=\"\u002Fblog\u002Fwhat-is-an-hd-wallet\">什么是 HD 钱包\u003C\u002Fa>。\u003C\u002Fp>\n\u003Ctable>\u003Cthead>\u003Ctr>\u003Cth>生态系统\u003C\u002Fth>\u003Cth>典型形态\u003C\u002Fth>\u003Cth>签名曲线\u003C\u002Fth>\u003Cth>内置校验\u003C\u002Fth>\u003C\u002Ftr>\u003C\u002Fthead>\u003Ctbody>\u003Ctr>\u003Ctd>EVM（Ethereum、Polygon、Arbitrum…）\u003C\u002Ftd>\u003Ctd>0x + 40 个十六进制字符\u003C\u002Ftd>\u003Ctd>secp256k1\u003C\u002Ftd>\u003Ctd>EIP-55 大小写混排校验和\u003C\u002Ftd>\u003C\u002Ftr>\u003Ctr>\u003Ctd>Solana\u003C\u002Ftd>\u003Ctd>32–44 个 base58 字符\u003C\u002Ftd>\u003Ctd>ed25519\u003C\u002Ftd>\u003Ctd>无——仅有安全字母表\u003C\u002Ftd>\u003C\u002Ftr>\u003Ctr>\u003Ctd>TON（user-friendly 格式）\u003C\u002Ftd>\u003Ctd>48 个 base64 字符，EQ\u002FUQ 前缀\u003C\u002Ftd>\u003Ctd>ed25519\u003C\u002Ftd>\u003Ctd>CRC16 校验和 + bounce 标志位\u003C\u002Ftd>\u003C\u002Ftr>\u003C\u002Ftbody>\u003C\u002Ftable>\n\n\u003Ch2>什么是 0x 地址？EIP-55 校验和有什么用？\u003C\u002Fh2>\n\u003Cp>在每一条 EVM 链上——Ethereum、Polygon、Arbitrum、BNB Chain 以及其余各条——你的地址是你的公钥经 Keccak-256 哈希后的最后 20 个字节，写作 0x 加 40 个十六进制字符。\u003Cstrong>EIP-55\u003C\u002Fstrong> 在不改变地址的前提下加入了一个校验和：字母的大小写排布是由地址本身推导出来的，因此钱包能在你发送之前标记出打错的字符。全小写的地址依然有效——它只是不携带可供验证的校验和。\u003C\u002Fp>\n\u003Cp>由于地址仅来自你的密钥，同一个账户在每条 EVM 链上都拥有相同的 0x 地址。这很方便——一个地址到处通用——但也很危险，因为地址并不编码网络。在错误的 EVM 链上发送的代币，会到达另一条网络上的同一个地址：如果你掌握着密钥，通常切换网络就能把它们取回；但如果该地址属于交易所或合约，它们可能就没了。在 WATS 中，这是日常情形而非边缘情况，因为其支持的八条链里有六条——Ethereum、Arbitrum、Optimism、Base、Polygon 和 BNB Chain——共用那一个 0x 地址。\u003C\u002Fp>\n\n\u003Ch2>Solana 地址是怎么运作的？\u003C\u002Fh2>\n\u003Cp>Solana 地址就是公钥本身：一把 ed25519 密钥的 32 个字节，以 \u003Cstrong>base58\u003C\u002Fstrong> 编码——之所以选用这套字母表，是因为它剔除了容易混淆的字符 0、O、I 和 l。结果是 32–44 个字符，且区分大小写。这里没有 EIP-55 那样的校验和；安全字母表能减少打字错误，却无法发现它们，这也是应当复制而非手动输入的又一个理由。有个细节值得了解：SPL 代币并不直接存放在你的地址上——每种代币都存放在由它派生出的关联代币账户中。你的钱包会在后台打理这些账户；你要分享的仍然只是一个地址。\u003C\u002Fp>\n\n\u003Ch2>TON 的 bounceable 与 non-bounceable 地址是什么？\u003C\u002Fh2>\n\u003Cp>TON 为同一个账户提供了两种写法。\u003Cem>raw\u003C\u002Fem> 格式是工作链编号、一个冒号，再加 64 个字符的十六进制哈希——精确，但对人不友好。\u003Cem>user-friendly\u003C\u002Fem> 格式把同样的数据打包成 48 个 base64 字符，带有标志位和一个 CRC16 校验和，因此打字错误能被发现。真正要紧的标志位是 \u003Cstrong>bounceable\u003C\u002Fstrong>：通常以 EQ 开头的地址会告诉网络，若目标无法处理这笔转账就把币退回，这适合合约；以 UQ 开头的 non-bounceable 地址则无论如何都会完成投递，这适合个人钱包——现代钱包通常也会为个人钱包显示 UQ 形式。两种写法指向的是同一个账户，因此在别处看到不同的前缀，并不意味着换了收款目标。\u003C\u002Fp>\n\n\u003Ch2>交易所为什么要求填写 memo 或 destination tag？\u003C\u002Fh2>\n\u003Cp>在某些链上，交易所会把所有客户的充值汇集到一个共享地址之下——这在 TON、XRP 和 Stellar 上很常见——并用 \u003Cstrong>memo\u003C\u002Fstrong>（或 destination tag）把每一笔充值路由到正确的账户。memo 不是装饰：漏填它，你的币就会落进交易所的共享钱包而不会入账。它们通常可以通过提交工单找回，但过程缓慢且没有保证。规则很简单——如果充值页面显示了 memo，就把它当作地址的一部分。向你自己的自托管钱包转账则完全不需要 memo。\u003C\u002Fp>\n\n\u003Ch2>如何避免转错链——或转到形近地址？\u003C\u002Fh2>\n\u003Cp>三个习惯就能覆盖大部分风险。第一，\u003Cem>核对链，而不是核对形态\u003C\u002Fem>：0x 地址不会告诉你发送方选择了哪条网络，所以在任何资产开始转移之前，务必在两端明确确认网络。第二，\u003Cem>小额试转\u003C\u002Fem>：首次向一个新地址或经由一条新路径转账时，先发一小笔，确认到账，再把余下的发出去——用低廉的保险换掉昂贵的想当然。第三，重视\u003Cstrong>地址投毒\u003C\u002Fstrong>：攻击者会生成与你实际使用的地址首尾字符相同的形近地址，然后向你发送粉尘，好让这个假地址出现在你的交易历史里——等着你把它复制走。永远不要从历史记录里复制地址；使用保存好的联系人，并核对中间的字符，而不只是两端。一个好的\u003Ca href=\"\u002Fblog\u002Fwhat-is-a-multi-chain-wallet\">多链钱包\u003C\u002Fa>会在每个地址旁标注网络名称，而\u003Ca href=\"\u002Fblog\u002Fone-wallet-ethereum-solana-ton\">把 Ethereum、Solana 和 TON 放进一个应用\u003C\u002Fa>却不会把它们弄混，正是这种设计存在的意义。\u003C\u002Fp>\n\n\u003Ch2>WATS 在其中的位置\u003C\u002Fh2>\n\u003Cp>WATS 用一个钱包同时运行在 \u003Ca href=\"\u002Fsupported-chains\">Ethereum、Arbitrum、Optimism、Base、Polygon、BNB Chain、Solana 和 TON\u003C\u002Fa> 上，因此上面这三种格式，正是你最终会并排持有的那些地址——六条 EVM 链共用一个 0x 地址，Solana 上一个 base58 地址，TON 上一个 EQ\u002FUQ 地址，全部出自同一条恢复助记词。它在全部四款产品中都保持完全非托管——Chrome 扩展、移动应用、Hot Wallet 以及 NFC 金属卡：密钥由你持有，WATS 从不持有密钥。在一篇讲地址的文章里，有一点值得就这张卡明确说清楚——它不存储任何私钥。它以轻触方式为始终留在 WATS 应用内的密钥完成认证，并带有唯一的卡片 ID，仅与一台设备配对。\u003C\u002Fp>\n\u003Cp>Bitcoin 是必须坦承的空白：WATS 并不原生支持它，因此 bc1、1 和 3 开头的地址不在这一组之内。在它所覆盖的八条链之内，网络费用以单一代币 ATS 支付，而不必分别持有每条链的原生 Gas 代币——在 EVM 链上通过 ERC-4337 账户抽象实现，而 ATS 本身是一种 LayerZero OFT，因此单一余额即可全链通用。这并不是折扣；它改变的是由哪种代币来支付费用。ATS 的供应量正从 1 亿枚销毁至 3000 万枚。\u003C\u002Fp>\n\n\u003Ch2>结语\u003C\u002Fh2>\n\u003Cp>不同链上有不同的地址，是这些链自身构造方式的属性，而不是钱包的 bug：一条种子，不同的曲线，不同的派生路径，不同的编码。你当然可以去读懂格式，但绝不要指望它告诉你网络——在两端确认链，在任何新路径上先做一次小额试转，把交易所的 memo 当作地址的一部分，并从保存好的联系人而非交易历史中复制地址。如果你希望这三种格式集中在一处，而不是分散在三个应用里，具体的一步是从\u003Ca href=\"\u002Fdownload\">下载页\u003C\u002Fa>安装 WATS：一条非托管的恢复助记词，背后是你在 Ethereum、Arbitrum、Optimism、Base、Polygon、BNB Chain、Solana 和 TON 上的账户，费用以 ATS 支付，而不必在每条链上另备一种原生 Gas 代币。\u003C\u002Fp>",[10,13,16,19],{"q":11,"a":12},"我的地址在 Ethereum、Polygon 和 Arbitrum 上是同一个吗？","是的——对于普通的钱包账户，同一把密钥在每条 EVM 链上都会生成相同的 0x 地址，因此在 WATS 中，一个账户在 Ethereum、Arbitrum、Optimism、Base、Polygon 和 BNB Chain 上显示的地址完全相同。不过地址并不编码网络：发送时你必须自己选对链。交易所的充值地址是例外——交易所可能只对某一条特定网络入账，因此务必严格按照它的说明操作。",{"q":14,"a":15},"WATS 会显示哪些地址格式？有 Bitcoin 地址吗？","WATS 的所有地址都派生自同一条恢复助记词：一个在 Ethereum、Arbitrum、Optimism、Base、Polygon 和 BNB Chain 之间共用的 0x 地址、Solana 上一个 32–44 个字符的 base58 地址，以及 TON 上一个 48 个字符的 EQ\u002FUQ 地址。WATS 完全非托管，因此这些密钥属于你，WATS 从不持有密钥。这里没有 Bitcoin 地址，因为 WATS 并不原生支持 Bitcoin——bc1、1 和 3 开头的地址属于 WATS 未覆盖的生态。",{"q":17,"a":18},"如果我向交易所转账时漏填了 memo 会怎样？","你的币会到达交易所的共享充值钱包，但不会被记入你的账户，因为正是 memo 用来标识你的身份。它们通常并没有丢失——多数交易所可以通过工单人工入账——但流程缓慢且没有保证。如果充值页面显示了 memo 或 destination tag，就把它当作地址中必填的一部分，绝不是可选字段。向 WATS 这样的自托管钱包转账则不需要 memo，因为那个地址只属于你，而非共享地址。",{"q":20,"a":21},"什么是地址投毒？如何避免？","地址投毒是一种攻击：有人生成一个与你实际使用的地址首尾字符相同的形近地址，然后向你发送一笔粉尘交易，让这个假地址出现在你的历史记录中。如果你之后从那段历史里复制地址，资金就会流向攻击者。避免的方法是：绝不从交易历史中复制地址、保存经过核实的联系人，并在签名前核对中间的字符，而不只是两端。",1786059412393]