为什么 Go 链码不需要注解?

Why doesn't Go chaincode need annotations?

通过查看 https://github.com/hyperledger/fabric-samples/tree/main/asset-transfer-basic 中的 chaincode-java 和 chaincode-go,我发现 java 实现需要像 @Transaction@Contract 这样的注释,而 Go 则没有。

与 Java 一样,我可以使用 @Contract(name) 更改合约名称,在 Go 中我该怎么做?

如果 Go 不需要 @Transaction(intent),为什么 Java 需要它?

Go 不支持注解。 fabric-contract-api-go 将每个 public 方法都变成可访问的操作,该方法将智能合约作为接收方并使用反射来构建元数据和此类事物(来自 v2.X)。

Java 支持注解。 Java 中的反射与 Go 中的反射方式不同,它的性能非常差。因此,注释是首选。

除了语法之外,语言在很多方面都不同。

关于链代码名称,您可以在打包 Go 链代码时指定首选名称和版本号。它不依赖于源代码。