链交互模块开发

已经完成区块链和智能合约,接着开发链交互模块,链交互模块主要实现与链上合约的交互,并授权性开放出一整套API接口。好的软件架构设计下,强烈建议链交互模块从传统业务中解耦出来,而不混在一起,好处是方便后期的维护和扩展。

与链合约的交互都离不开官方提供的一整套SDK依赖,可能支持Java、Go、Python、Node.js等语言,SDK提供的通信方式一般是RPC。在SDK的语言选择上,主流的是Java和Go,考虑链的最佳支持、熟练度和人才储备,选择最适合的即可。

官方SDK一般都会提供使用示例,包括与链建立连接,获取链基本信息,调用链上合约方法,生成密钥对,交易编码和签名,返回结果解码等,参照SDK示例,足够开发出链交互模块。

另外,还应该进入到链对应的微信群社区,甚至找个这方面的经验大佬。一者是,当你开发过程中遇到问题,Google之后,还可以请教社区和个人,快速解决问题;还有就是,当你完成链交互模块开发之后,如果自己经验不足,可以让经验前辈帮忙审查,保证代码的高质量和可用性。

不同的链会有不同的SDK支持,有些链支持直接导出链交互模块,有些链需要引用官方SDK从零编写交互模块。

像FISCO BCOS,如果安装了WeBase管理平台,安装部署合约之后,可以直接导出能调用链上合约方法的Java交互模块工程,修改工程的配置信息,就可以直接连接区块链,并调用智能合约相应的方法。如果业务层对链交互模块有更高的要求,如密钥对生成,交易签名,增加调用权限,限制调用频率,循环批量铸造,限流降级熔断等,就在链交互模块工程的基础上增加这些功能。简单场景的话,可以直接使用。

如果链的管理平台不支持直接导出合约的链交互模块工程,就参考SDK示例,新建工程,引入SDK依赖,逐步编写交互模块逻辑。

在ERC721环境下,一般需要对外提供的方法有:生成密钥对,授权,铸造NFT,查询NFT所有者,转移NFT,销毁NFT等。

销毁NFT,本质上是把NFT转移到一个特定地址,这个地址在链上可见,在业务库不可见,业务库还需要隐藏或删除销毁的NFT数据。销毁地址可以是一个单向地址,即只能转进不能转出,也可以是一个双向地址,即可以转进也可以转出。销毁如果在链上合约做的话,一般是把数字资产转移到0地址。

到这里,链交互模块的开发也就结束了。