1、网络创建模块
-
文件结构如下:
-
文件说明:
-
- docker文件夹中的是网络配置文件
- configtx文件夹中文件用于创建创世纪区块
- organizations文件夹用于储存生成的节点证书文件
- fabric-ca文件夹中是用于生成证书文件的配置文件
- scripts文件用于存储一些功能脚本文件
- registerEnroll.sh文件是用于产生节点证书的脚本文件
-
改网络名称(适应不同的项目)
-
- 修改configtx.yaml docker-compose-ca.yaml docker-compose-test-net.yaml文件中的网络名称
- 修改configtx.yaml文件中网络名称
- 修改registerEnroll.sh中的网络名称
2、通道创建模块
- 需要复制一个config文件夹,该文件夹结构如下:
- 脚本文件:
修改的脚本文件如下(deployCC.sh ,utils除外),其他文件通过修改network.sh中的network_name即可完成四个脚本(configUpdate.sh、createChannel.sh、envVar.sh、setAnchorPeer.sh)脚本中网络名称的修改。
3、安装链码模块
链码安装环节主要是deployCC.sh脚本,该脚本传入的参数过多,通过在network.sh脚本中传入网络名称network_name即可实现脚本中网络名称的统一。本来写在 ~/.bashrc文件中的环境变量,现在直接写在deployCC.sh脚本文件中,方便进行修改。在进行链码安装过程中对于参数的设置应该格外小心,设置错误则会导致无法完成链码的安装工作。
4、应用调用智能合约(Java)
进行测试的智能合约以及应用都为assettransfer,应用在进行智能合约调用过程中需要注册管理员,申请用户,之后进行进行连接。
文件结构如下:
EnrollAdmin是注册管理员,RegisterUser是注册用户,App是应用端执行相应的功能。
应用连接智能合约的代码如下:
public static Gateway connect() throws Exception{
// Load a file system based wallet for managing identities.
Path walletPath = Paths.get("wallet");
Wallet wallet = Wallets.newFileSystemWallet(walletPath);
// load a CCP
Path networkConfigPath = Paths.get("..", "..", "test-network", "organizations", "peerOrganizations", "org1.example.com", "connection-org1.yaml");
Gateway.Builder builder = Gateway.createBuilder();
builder.identity(wallet, "appUser").networkConfig(networkConfigPath).discovery(true);
return builder.connect();
}