首页 > 解决方案 > 是否可以使用节点 SDK 打包 Hyperledger Fabric 链码?

问题描述

我使用 hyperledger fabric V1.4.10 我创建了一个部署应用程序,它使用节点 SDK API 安装和升级我的链代码,一切正常,但我将所有项目压缩存储在一个 zip 文件中作为工件,我想要一个更小的要存储的工件,当然我正在添加节点模块、js 和 ts 文件,因为我不完全确定在部署期间是否需要它们。

我希望能够执行与使用部署应用程序中的“对等链代码包”相同的操作,以便能够以有效的方式打包我的代码。

我在 SDK 中看到了一个似乎能够打包代码的BasePackager类,但我找不到任何如何使用它的示例。

在查看 js 代码时,我发现 install 方法可以接收 ChaincodeInstallRequest,它可以是 ChaincodePackageInstallRequest 或 ChaincodePathInstallRequest。

这是 index.d.ts 中的代码:

export interface ChaincodePackageInstallRequest {
    targets?: Peer[] | string[];
    channelNames?: string[] | string;
    txId?: TransactionId;
    chaincodePackage: Buffer;
}

export interface ChaincodePathInstallRequest {
    targets?: Peer[] | string[];
    channelNames?: string[] | string;
    txId?: TransactionId;
    chaincodeId: string;
    chaincodeVersion: string;
    chaincodePath: string;
    chaincodeType?: ChaincodeType;
    metadataPath?: string;
}

export type ChaincodeInstallRequest = ChaincodePackageInstallRequest | ChaincodePathInstallRequest;

所以我想知道,是否可以使用 SDK 来打包您的代码?还是我应该使用“对等链码包”选项?另外,打包我的代码后,我可以使用SDK安装它吗?还是我需要更好地使用“peer chaincode install”选项?

谢谢

标签: node.jshyperledger-fabrichyperledgerhyperledger-chaincode

解决方案


节点 SDK

Node SDK(当前)不包含管理功能,例如链代码的生命周期部署。如果您可以使用 peer CLI 命令,那么这可能是一个不错的选择,因为它们得到了很好的支持和维护。或者,至少有一个管理包旨在为 Node 应用程序提供此功能:https ://www.npmjs.com/package/khala-fabric-admin 缺少文档。

JAVA SDK

fabric-sdk-java API 在 HFClient 和 Channel 上有一些 Lifecycle 相关的功能:

但是,我不确定它们是否真的与当前的生命周期部署实施保持同步,所以我不确定我是否会推荐依赖它们

对等链代码生命周期 CLI 命令得到更好的维护和支持,因此,如果您可以使用它们,我建议您改为:https ://hyperledger-fabric.readthedocs.io/en/release-2.2/commands/peerlifecycle.html


推荐阅读