使用@hyperledger/fabric-gateway实现离线私钥签名CBDC交易是否可行?
可以通过@hyperledger/fabric-gateway实现你需要的离线签名、银行代提交交易的流程,完全满足私钥用户自持、用户无Peer节点访问权限的需求,具体实现如下:
核心流程
将交易的签名环节完全放在用户端,银行仅作为中间层负责与Fabric网络交互、传递未签名提案和接收签名结果,全程不触碰用户私钥。
具体步骤
银行端生成未签名交易提案
银行应用通过fabric-gateway连接Fabric网络,调用合约的newProposal()方法生成交易提案,提取提案的原始字节数据后,将该字节数据传递给用户的移动应用。此过程中用户不会接触到任何Peer节点的IP信息,所有与节点的交互由银行完成。用户端离线签名提案
用户移动应用使用本地存储的私钥,对收到的提案字节数据进行签名(签名算法需与Fabric网络配置一致,如ECDSA),随后将签名值和用户的身份证书(需提前完成CA注册,证书可安全存储在用户端)返回给银行应用。银行端组装并提交签名交易
银行应用利用fabric-gateway的createSignedProposal()方法,将用户返回的签名、证书与之前生成的提案组装成完整的签名提案,再调用submitTransaction()或分步执行endorse()+submit(),将交易提交至Fabric网络完成处理。
关键技术说明
fabric-gateway原生支持提案生成与签名的解耦,无需依赖已废弃的fabric-common或fabric-ca-client库。通过Gateway和Contract对象生成提案后,可独立提取提案字节进行离线签名,再组装为合法的签名提案提交至网络。
内容的提问来源于stack exchange,提问作者Dmitry Barovik

