Hyperledger Fabric 是一个开源的企业级分布式账本技术平台,由 Linux 基金会托管。它旨在提供模块化和可扩展性,以适应不同的企业需求。Java 作为一种流行的编程语言,也被广泛用于开发 Hyperledger Fabric 应用程序。以下是一个快速上手 Hyperledger Fabric 的指南,我们将通过 Java 语言来实现。
环境搭建
在开始之前,确保你的系统中已经安装了以下工具:
- Java Development Kit (JDK)
- Git
- Docker
安装 JDK
首先,从 Oracle官网 下载并安装 JDK。安装完成后,在命令行中输入以下命令来验证安装:
java -version
安装 Git
Git 是一个版本控制系统,用于管理代码的版本。你可以从 Git官网 下载并安装 Git。
安装 Docker
Docker 是一个开源的应用容器引擎,用于打包、发送和运行应用。你可以从 Docker官网 下载并安装 Docker。
创建 Hyperledger Fabric 网络
首先,克隆 Hyperledger Fabric 的官方仓库:
git clone https://github.com/hyperledger/fabric.git
cd fabric
然后,创建一个新目录来存放你的项目:
mkdir my-first-fabric-app
cd my-first-fabric-app
接下来,使用以下命令来启动一个简单的 Fabric 网络:
fabric-samples/bin/startFabric.sh
这将启动一个包含两个组织(组织 A 和组织 B)的 Fabric 网络。
编写第一个 Java 应用程序
现在,我们已经搭建好了环境,接下来我们将编写一个简单的 Java 应用程序来与 Fabric 网络交互。
创建项目结构
在你的项目目录中,创建以下结构:
my-first-fabric-app/
├── src/
│ ├── main/
│ │ ├── java/
│ │ │ └── com/
│ │ │ └── example/
│ │ │ └── HelloWorld.java
│ ├── test/
│ │ ├── java/
│ │ │ └── com/
│ │ │ └── example/
│ │ │ └── HelloWorldTest.java
│ └── resources/
│ └── fabric-network/
│ └── channel-config/
│ └── mychannel/
│ └── configtx.yaml
编写 Hello World 应用程序
在你的 src/main/java/com/example 目录下,创建一个名为 HelloWorld.java 的文件,并添加以下代码:
package com.example;
import org.hyperledger.fabric.shim.Chaincode;
import org.hyperledger.fabric.shim.ChaincodeStub;
public class HelloWorld implements Chaincode {
@Override
public String init(String[] args, ChaincodeStub stub) {
return "Hello, World!";
}
@Override
public String invoke(String[] args, ChaincodeStub stub) {
return "Hello, World!";
}
}
编译和打包应用程序
使用以下命令来编译和打包你的应用程序:
javac -cp fabric-shim.jar src/main/java/com/example/HelloWorld.java
jar -cvf HelloWorld.jar -C src/main/java com/example/
确保你已经在 fabric-shim.jar 的路径中。
部署应用程序
现在,你需要将你的应用程序部署到 Fabric 网络。首先,创建一个 configtx.yaml 文件来定义链码的部署:
Organizations:
- &Org1
Name: org1.example.com
Domain: org1
EnablePeerTLS: false
Policies:
Admins:
Type: Signature
Rule: "OR('org1.MEMBER')"
Capabilities:
Channel: &ChannelCap
V1_4: {}
Orderer: &OrdererCap
V1_4: {}
- &Org2
Name: org2.example.com
Domain: org2
EnablePeerTLS: false
Policies:
Admins:
Type: Signature
Rule: "OR('org2.MEMBER')"
Capabilities:
Channel: &ChannelCap
V1_4: {}
Orderer: &OrdererCap
V1_4: {}
Application:
Organizations:
- *Org1
- *Org2
然后,使用以下命令来部署你的应用程序:
fabric-samples/bin/cryptogen generate --config crypto-config.yaml
fabric-samples/bin/configtxgen -profile ExampleByOrg1 -outputCreateChannelTx newchannel.tx
fabric-samples/bin/fabric-start -c mychannel -b newchannel.tx
最后,使用以下命令来调用你的链码:
fabric-samples/bin/query.sh -c mychannel -l java -p com.example.HelloWorld -a init
这将返回 “Hello, World!“,表明你的应用程序已经成功部署并运行。
总结
以上是一个简单的 Hyperledger Fabric Java 应用程序示例。通过这个示例,你了解了如何搭建环境、编写应用程序、部署链码以及与 Fabric 网络交互。希望这个指南能帮助你快速上手 Hyperledger Fabric。随着你对 Fabric 的深入了解,你可以探索更多高级功能,如智能合约、链码等。
