所谓的区块链SDK,其实就是区块链厂商提供给开发者使用的一种工具, 这种工具的作用可以被直白地理解为一种远程控制装置。开发者只需要操作几个特定的功能方法, 就能够轻松地向网络发送交易数据、查询账户中的余额信息或者读取智能合约里的内容细节。
根据我个人在这个行业里工作长达三年的经验情况来看, 主流的公有链项目所使用的软件开发工具包这一类型的工具, 基本上都已经被我实际测试并应用过一遍了。
区块链的sdk怎么接
接入这个环节, 从表面上看好像是挺简单的, 但是真正动手去弄的时候, 就会发现到处都是坑。拿以太坊作为一个例子来说吧, 当你选择使用ethers.js这个工具库的时候, 签名私钥管理会成为你遇到的第一道非常难逾越的门槛。
因为一旦要把项目部署到主网上去运行, 你就必须认真地考虑到密钥应该如何存储这个问题了, 你需要在硬件钱包、KMS也就是密钥管理系统还有热钱包之间做出一个选择, 而你所做的这任何一个不同的选择, 都会导致整个后面的系统架构不得不跟着进行相应的修改或者重新设计。
我亲眼看到过有一支团队, 直到临近上线前头一个星期, 才发觉他们用的SDK的版本号和那个链的硬分叉内容是不兼容的, 导致RPC节点只要进行升级, 就会发生区块高度偏移的情况, 结果整个系统的全都乱了套, 不得不花费整整两天的时间来回滚并且排查问题, 但是文档里面仅仅只写了一句话叫做"请升级", 而且兼容性矩阵这个部分, 压根就没有把这个事给写清楚。
区块链的sdk怎么选
核心的标准实际上就只有两条, 这两条内容分别是多链适配能力以及团队所掌握的技术栈。如果仅仅是针对某一条特定的链进行开发工作, 那么使用官方提供的sdk是最为稳妥的选择, 这样出现bug的概率会比较低, 并且相关的技术文档也会更加齐全全面。
如果是涉及到跨链聚合或者钱包接入这些情况的话, 就必须仔细考虑各个不同的链其sdk之间应该如何实现统一的抽象层处理, 绝对不能各自去写各自的代码逻辑而缺乏整体的一致性规划。
很多国产区块链平台, 比如像波场和TON这样的链, 它们提供的软件开发包文档里面, 英语单词混用得很厉害, TypeScript语言的类型定义经常是缺失的状态, 社区对于问题的回应速度慢得简直离谱。
建议你先运行一个最小型的演示程序, 把读取区块、发送交易、监听事件这三件事情都顺利走通之后, 再做出决定, 不要因为看起来受欢迎的项目星数多就轻易拍板定案。

我现在已经养成了一个习惯, 那就是面对每一个新的链接时, 我会先花费半天的时间, 把那个叫作 quick example 的例子全部都跑通, 把所有遇到的坑全部都记录在我自己的 wiki 里面, 这样的方式所带来的效率提升, 比起去翻阅官方文档的效率来说, 简直是提高了非常多。
