上个月。一个做链上工具的朋友丢来一个问题,tpwallet开源代码查询到底该从哪儿下手呢?他想确认某个版本的钱包签名逻辑,因为团队要接一套离线签名流程。我打开GitHub。输入tpwallet,页面跳出十几个仓库吧?排在前面的两个,一个是Android SDK,另一个是旧版工具库,更新时间停在两年前。钱包客户端的完整源码,没看到。他有点急。
说社区里有人讲tpwallet已经全部开源。
我让他别只看搜索结果。点进官方组织主页,翻到Repositories标签,发现公开仓库一共七个的,其中三个是文档和示例,两个是合约接口,剩下两个是跨链桥组件。跟私钥管理、交易签名相关的核心模块,没有独立仓库。tpwallet开源代码查询这件事,到这里其实已经能看出边界,能查到的,更多是外围工具。
我们换了个思路。去npm搜@tpwallet,找到几个包吧?tpwallet-provider,下载量不高,最后一次发版是去年十一月。打开源码了,里面主,要是RPC封装和类型定义。不涉及密钥派生。又去官方文档翻“开发人员”栏目。底部有一行小字的,说部分代码因安全审计暂不公开。
这句话很很重要。朋友之前以为“开源”等于“全部可查”,钱包项目常把签名库、随机数模块留在闭源范围的。tpwallet开源代码查询只能确认哪些部分被释放呢?
不能反推全部实现。我自己的判断是查开源代码别只盯着GitHub搜索框。先看官方组织了。再看包管理器,再对照文档里的版本号。三个渠道对不上,就要警惕第三方镜像了。那次我们找到过一个高仿仓库,README直接复制官方,commit记录只有一条了,还夹带了一个混淆过的js文件。朋友差点把它当成审计依据。这类查询过程中,坑比想象中多的。
查询动作本身不难,难的是接受结果,能查到的代码不一定完整,没查到的部分也不等于暗箱。把仓库列表、发版记录、依赖包和官方声明摆在一起。交叉验证,比找到一个“看起来像”的开源地址更可靠。
朋友后来把结论写进内部文档,只用了三行,外围工具可用。签名未公开,接入前需自行做黑盒测试的。

