在原基础上修改为双组织双节点的组织结构
步骤
1.修改配置文件
和GO-SDK那篇一样
之后需要在main.go文件中的org信息里增加组织信息
2. 运行
添加依赖:
cd education && go mod tidy
运行项目:
./clean_docker.sh
其间遇到了这个错误
Create channel and join error: Create channel error: SaveChannel for anchor org Org2 error: create channel failed: create channel failed: SendEnvelope failed: calling orderer 'orderer.example.com:7050' failed: Orderer Server Status Code: (400) BAD_REQUEST.Description: error applying config update to existing channel 'mychannel': error authorizing update: error validating ReadSet: proposed update requires that key [Group] /Channel/Application/Org1MSP be at version 0, but it is currently at version 1
有说是因为之前运行过的原因,但是删除了也没解决
找到原因了 原来是在main中写组织信息的时候不小心把组织2MSP信息写成组织1了
在127.0.0.1:9000
进行访问
关闭项目:
cd fixtures && docker-compose down
docker volume prune
# cd .. && go mod tidy
项目分析
chainCode
就是单纯的链码,这里可以更换为我的访问控制
main.go
main作为整个项目启动的主函数,里面分为了几个部分
1. fabric网络相关
1.1 初始化信息
首先是组织信息,即org,在这里因为我设计了两个组织,因此组织信息要写两个,注意不要把MSP信息写错
然后按照sdk的info写一个info参数,方便后续使用
TODO: 后期如果要增加组织节点,需要分为以下几步:
- 在docker-compose、crypto-config和configtx三个文件里增加
- 然后重新生成创世块和channel块
- 在config中增加组织信息
- 在main函数中增加组织信息
PS: 这里官方有自动化文档 但是因为这个框架不是官方的 是更改过的 所以到时候可能需要更改一下 后期可以写一个自动化执行。
1.2 网络启动
- setup
- create channel and join
- create chaincode lifecycle
- invoke chaincode set status
这些的逻辑就是正常启动网络的逻辑 故不过多赘述
至此,sdkinit结束。
这一部分也没啥知识点 fabric的基础打好这个就跟着懂了
2. app
这里就需要针对不同的项目编写不同的代码 但所有逻辑一致
2.1 service初始化和创建
把链码和通道信息等绑定到客户端(domain.go文件负责实现)
PS:这个项目中 service/eduService.go负责提供链码调用接口 和用户绑定没关系,
2.2 启动app
把刚刚创建好的客户端和app绑定,然后启动这个app(在web/webServer中实现路由和启动)
至此一个项目的逻辑完成 具体的接口和链码可以由开发者自行决定
这个项目的功能较为简单 不展开讲述