Hyperledger 结构中没有ABI(应用程序二进制接口)的概念,因为它存在于 Ethereum/Quorum 中。
Quorum 中的ABI文件是在编译智能合约(链码)时生成的,客户端应用程序进一步将其用作对已部署智能合约的函数定义的引用。
例如:如果有一个名为getAsset(assetId: string )的函数返回一个Asset对象,那么这个完整的信息将在ABI文件中定义。
所以,简而言之,ABI服务于已部署智能合约的接口的目的,并且还保留在客户端应用程序中,作为已部署智能合约的功能定义的参考,这省略了应用程序被与已部署的合约不同步,并使用不正确的参数调用智能合约的函数。
现在,我想知道如何在Hyperledger Fabric中解决这个问题。
我正在通过asset-transfer-basic(javascript应用程序),在那里我可以看到一个名为CreateAsset的方法,它接受(assetId,color,owner,size,appraisedValue)但它们被明确传递。
我的意思是,如果不手动查看智能合约中函数的实现,就没有其他方法可以知道CreateAsset接受哪些参数。
有没有办法解决这个问题?