在智能合约上导入软件包时出错-Hyperledger Fabric

2020-08-19 11:16发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


嗨,

我一直在尝试为SAP Hyperledger Fabric用GO语言编写智能合约,但是当我尝试实例化它时,出现以下错误:

找不到包" github.com/hyperledger/fabric/core/ledger" 

我正在尝试从GitHub导入分类帐程序包,但我无法做到这一点,当我尝试导入其他程序包时也遇到了同样的问题。 有什么办法吗? SAP支持哪些软件包?在哪里可以找到它们?

谢谢!

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


嗨,

我一直在尝试为SAP Hyperledger Fabric用GO语言编写智能合约,但是当我尝试实例化它时,出现以下错误:

找不到包" github.com/hyperledger/fabric/core/ledger" 

我正在尝试从GitHub导入分类帐程序包,但我无法做到这一点,当我尝试导入其他程序包时也遇到了同样的问题。 有什么办法吗? SAP支持哪些软件包?在哪里可以找到它们?

谢谢!

付费偷看设置
发送
7条回答
spaceman01
1楼 · 2020-08-19 11:52.采纳回答

嗨Emilio,

SAP Hyperledger Fabric Service正在运行1.4版,支持此发行版中包含的用于链码的软件包。

使用Hyperledger Fabric 2.x,一些软件包已移至其他存储库,因此使用go get要求软件包可能会出现一些问题。

一种解决方法是向您的依赖项供应商。 如果尚未完成,请通过运行

来初始化go模块
执行mod init链代码

之后,您可以通过运行

来供应依赖项
转到mod供应商

如果要使用版本1.4的链码包,则还必须初始化go模块,但是除了销售外,您还可以通过运行以下代码来要求特定发行版的依赖项:

获取github.com/hyperledger/fabric/core/chaincode/shim@v1.4
 去获取github.com/hyperledger/fabric/protos/peer@v1.4
 

由于这些依赖项在1.4版中,因此在实例化期间就可以使用它们,而无需供应商。

@Gregory SAP的Hyperledger Fabric服务仅支持Go链码

最好

Christopher

ZJXianG
2楼-- · 2020-08-19 11:58

嗨Emilio,

您应该明确地尝试使Go安装正常工作。 有可能已经检查过代码是否在本地构建时,开发起来会更好。

我认为通过此软件包获取当前块号将无法正常工作。 您可以调用一个系统链码来获取有关块和事务的信息,称为" qscc" https://godoc.org/github.com/hyperledger/fabric/core/scc/qscc 要获取当前块,只需查询" getChainInfo",您将获得当前块的高度-> < rel =" nofollow" hraf=" https://github.com/hyperledger/fabric-protos-go/blob/master/common/ledger.pb.go#L25"> https://github.com/hyperledger/ fabric-protos-go/blob/master/common/ledger.pb.go#L25

您可以通过此处记录的shim接口从链代码中调用此链代码 https://godoc.org/github.com/hyperledger/fabric-chaincode-go/shim#ChaincodeStub.InvokeChaincode

回到获取当前块的问题,我想澄清一下,您无法获得当前事务的块,因为该事务将在执行后写入到一个块中(由同行认可)。

最好

Christopher

四川大学会员
3楼-- · 2020-08-19 11:45

嗨,Emilio,

我没有在Go中看到SAP的任何链码实现,只是在Javascript中。 似乎SAP对多链比对Hyperledger的贡献更感兴趣。

我希望我能更好地回答您的问题,

谢谢您,通用汽车(gm)

微wx笑
4楼-- · 2020-08-19 11:45

嗨,格雷戈里!,

谢谢您的回答,我只尝试使用GOLANG实现链代码,因为我认为SAP仅支持这种类型的链代码,但是我将研究JS链代码的实现以及MultiChain的阅读。/p>

谢谢!

spaceman01
5楼-- · 2020-08-19 12:08

嗨,埃米利奥,

我相信克里斯托弗已经做出了重要的区分。 我仍然认为SAP实施除了Go之外还需要Java脚本,或者至少这是我在示例应用程序中看到的。

谢谢,

gm

Haoba3210
6楼-- · 2020-08-19 11:48

嗨,格雷戈里,

我认为我需要澄清一些事情。 Hyperledger Fabric中有链码,多链中有智能过滤器。

当我们谈论Hyperledger Fabric中的链码时,SAP仅支持Go链码。 官方文档 https://help上有一个示例链码。 sap.com/viewer/cab6d96064454f348689e661d3fe569b/BLOCKCHAIN/en-US/177de60b49df4d11bd9276fae9f1b849.html

然后通过REST API与链码进行交互,并且可以使用您想要的能够进行http调用的任何语言来编写您的应用程序。 因此,如果您看到了一个示例应用程序,则可能是该应用程序是用JavaScript编写的。

MultiChain使用所谓的智能过滤器,这些过滤器是用JavaScript编写的。

希望这会有所帮助。

最好

Christopher

愤怒的猪头君
7楼-- · 2020-08-19 11:45

您好,Christopher

感谢您澄清所有这些问题并提供帮助链接。 如果我弄错了,我将很高兴再次得到纠正。

这是我的理解:示例链代码是用GO编写的,它只是一个文件+ 2个yaml配置文件,它与通道或分类帐(通过垫片)进行通信,并且位于已安装的zip文件中 并实例化到该通道和结构网络。 云平台上托管的实际架构应用程序(和服务)是用Javascript编写的,因此,此实现最终分为三层:

1。 GO

2中的结构。 GO中的链码

3。 代工厂"风味"

中的Java脚本中的服务和应用程序,直到实例化结构服务后,才会启动并公开实际的结构网络。 所有这些代码的使用和重用都有一定的许可含义,但这超出了我们的讨论范围。

很高兴看到结构在SAP平台上进行了讨论。

谢谢 您和最诚挚的问候,

gm

一周热门 更多>