比特币、以太坊、Solana的编码到底有啥区别?搞混了地址就废了
做交易所底层开发这几年,地址编码的坑我踩过不少。不同币的编码方式差异看似微小,一旦搞混,转错地址就是真金白银的损失。
比特币经典地址用Base58编码,前面加0x00版本字节数字货币编码对比比特币、以太坊、Solana的编码到底有啥区别?搞混了地址就废了,生成1或3开头的字母数字串。P2SH地址版本字节是5,所以以3开头。手动输错一个字符,Base58校验大概率能拦住,但复制粘贴时截断了就危险。
以太坊走完全不同的路子。地址是20字节公钥哈希加0x前缀,全小写或EIP-55混合大写校验。和比特币Base58完全不兼容。开发中没做好链标识判断,把以太坊地址当比特币处理,签名格式都不对,交易直接废。
比特币2017年之后推了Bech32,就是bc1开头那串。看着像Base58,实际编码逻辑和校验算法完全不同。我见过生产环境因为没更新编码库,批量地址生成直接报错,排查花了两天,根因就是把Bech32当Base58解码了。
Solana用Base58但加了链前缀,地址格式看着和比特币很像,实际编码逻辑有差异。跨多链产品里最头疼的就是这个——用户输一串Base58,你得判断他转的是比特币还是Solana。我现在的做法是前端强制选链再填地址,后端再做编码校验,双保险。
标签: 数字货币编码对比