编写超级账本链码的语言重要吗?

Does the language in which the hyperledger's chaincode is written matter?

我正在尝试在 hyperledger 中开发链代码。我知道可以在 java、go 或 node js 中开发链码 cab。我的问题是我用哪种语言开发链代码重要吗?

我建议使用 GoLang,因为它在性能和可扩展性方面是一种高效且强大的语言。

在考虑用哪种语言编写链代码时,我通常会看到组织问自己以下问题:

  • 哪种语言最成熟SDK/support?
  • 哪种语言的开发人员 interest/ease 招聘人数最多?
  • 哪种语言最安全?

最后一个经常被忽视,但在我看来,当考虑到链代码中的错误通常比典型代码中的错误更重要时,最后一个是最重要的之一!请记住,链码的输出始终记录在账本中,修复错误链码的输出可能是一个代价高昂的过程。

考虑到这些问题,您可以评估链代码支持的三种语言(go、nodejs、java)如下:

  • Golang 是迄今为止最成熟的SDK/support。 Fabric 是用 Go 编写的,并认为 Go 是所有相关项目中的第一个 class 公民;因此,当涉及到 Fabric 支持时,它通常是第一个考虑和最新更新的语言。
  • NodeJS 可能是最容易找到人才的,并且已经是一种广泛流行的语言,这意味着用 NodeJS 编写的链代码通常最容易访问。第一个开发和最受欢迎的 Fabric SDK(非链代码)是 nodejs,因此它们可以很好地结合在一起。当然,Java 可能有同样多甚至更多可用的开发人员,但我在这里把它算在第二位,因为它的支持要少得多。
  • GolangJava 都是强类型语言,并提供这些语言带来的保证。 Java也带来了多年的生产经验和安全。在语言安全方面,它们都胜过像 nodejs 这样的动态类型、JIT 编译语言。

TL;DR:Golang 有很强的安全保证并且得到最广泛的支持,NodeJS 更容易编写并且更容易找到开发人员,Java 很难卖