suiprivkey 开头的私钥:Sui 钱包导入导出改换 Bech32 改了什么 图 1
suiprivkey 开头的私钥:Sui 钱包导入导出改换 Bech32 改了什么 · 图 1

比特币地址为什么限长 90 字符:BIP-173 Bech32 的编码边界 拆解过 Bech32 在比特币地址上的字符边界,为什么山寨币的 bech32 地址前缀各不相同:SLIP-0173 的前缀注册表 讲过各条链怎么给这套编码注册自己的前缀。这篇说的是这套编码的第三种用法:Sui 的钱包接口标准 SIP-15 规定,钱包和密钥库导入导出的私钥不再是三十二字节十六进制串,而是以 suiprivkey 开头、带校验和的 Bech32 字符串。提案状态为 Final,属于 Sui 官方的钱包接口类标准。

这次改动解决什么问题

改之前,Sui 私钥是三十二字节十六进制串,Sui 地址同样是三十二字节十六进制串。同一个输入框里出现两个形状相同、长度一样的字符串,粘错的机会成本并不低:把地址当私钥导进去,钱包会派生出一把不相干的钥匙,界面上是个空钱包,和 助记词抄错了一个词的位置:为什么恢复出来是个空钱包 里“错一步派生到另一把钥匙”是同一类事故;把私钥粘进收款地址栏,钱可能直接转进一个没人按类型管理的地址。SIP-15 的动机写得很直白:让私钥和地址在肉眼和程序两个层面都不再撞形,把“人拿错”的成本提前挡住。编码自带的校验和还会兜住大多数抄写错误,错一个字符通常会被格式直接拒收。

suiprivkey 开头的私钥:Sui 钱包导入导出改换 Bech32 改了什么 图 2
suiprivkey 开头的私钥:Sui 钱包导入导出改换 Bech32 改了什么 · 图 2

三十三字节里装了什么

新格式编码的是三十三字节:第一个字节是签名方案标志(flag),后三十二字节才是私钥本体。标志字节用来声明这把钥匙属于 Ed25519、secp256k1 还是其他方案,钱包解析时不用额外问一句“这是什么类型的钥匙”。三十三字节整体按 Bech32(提案直接引用比特币的 BIP-173)编码成带 suiprivkey 前缀的字符串。前缀、校验和、长度三样加起来,等于给钱包里的三类串各立了名牌:私钥以 suiprivkey 开头,地址是三十二字节十六进制,交易摘要另有 Base58 形态,互不冒充。提案的测试用例表里给了一行完整对照,那串私钥写作 suiprivkey1qzwant3kaegmjy4qxex93s0jzvemekkjmyv3r2sjwgnv2y479pgsywhveae,长七十个字符,对应一把假定的 Ed25519 私钥和一个测试地址——注意那是规范文档的演示向量,不是任何真实用户的地址。

工具与接口怎么变

命令行这边,keytool 增加了转换与导出命令:sui keytool convert 把旧的十六进制格式转成新的 Bech32 格式,sui keytool export 导出 Bech32 私钥,sui keytool import 则被改成只接受 Bech32 形式的三十三字节输入。SDK 侧补了成对的 encodeSuiPrivateKey 与 decodeSuiPrivateKey 接口,钱包界面导入导出走的就是这两个函数。迁移节奏上,提案给出的是双轨过渡:导出立刻切到新格式,导入端从 2024 年 3 月 1 日起的新版官方钱包停收十六进制私钥,并建议生态里的钱包按同样节奏淘汰旧的十六进制导入。这是提案当时定的时间表,具体某个钱包的当前版本收不收旧格式,以实际界面提示为准。

拿着一串私钥先核什么

搬家或备份之后,按四步走:第一步看开头,Sui 私钥应以 suiprivkey 起头,以 0x 开头的是地址或哈希类字段,不是私钥;第二步导入后先核对派生出的地址与旧钱包显示的地址逐字符一致,再看余额;第三步手里只有旧格式时,用转换命令生成新格式比对,同一把钥匙的两种写法应当指向同一个地址;第四步备份介质上把签名方案一起记下来——同样三十二字节配不同标志字节,派生出来的是不同的地址,只抄密钥不记方案,恢复时可能对不上号。

边界与风险提示

Bech32 不是加密。它解决的是“看错、抄错”,不解决“泄露”:一串 suiprivkey 落进别人手里,和当年那串十六进制落进别人手里是一样的,校验和不会替你把陌生人挡在门外;需要密码保护的是 BIP38 加密私钥是什么?纸钱包密码怎么被 scrypt 保护 讲的另一类格式。另外,这套标准只约束 Sui 的钱包与密钥库接口,别套用成“所有链的私钥都长这样”。本文为机制与格式说明,不构成投资建议,私钥与助记词任何形态都不能向他人出示。