前言
链码中的函数名和参数名需要大写,不然是private无法访问
记录一下做实验写论文时,如何使用fabric2.4的java sdk
一、准备工作
1.获取网络文件
- 执行ccp-generate脚本,能够在指定路径下获取当前网络的配置文件,这是第一步
- 看看本机的IP地址和虚拟机的IP地址,互相ping一下看看能不能ping通
- 把一些需要的文件拷贝到物理机上(公私钥信息所在的路径fabric-samples/test-network/organizations/peerOrganizations/org1.example.com/users/Admin@org1.example.com)
- 将org1和org2的网络配置信息整合到一个文件里面(它是分开到两个组织的文件夹下放着的)
- 修改物理机上的hosts文件,将url和对应的ip地址写入
2.在线生成or自己写钱包
省事可以直接从示例user上扒sk和pk下来组装钱包(从上一步拷贝来的材料中有Admin@org1.example.com)(唉) 在线生成需要启动ca,不是很懂 钱包admin.id示例:
{“version”:1,“mspId”:“Org1MSP”,“type”:“X.509”,“credentials”:{“certificate”:“-----BEGIN CERTIFICATE-----\nMIICKTCCAdCgAwIBAgIRAKBIXQPSNgz8nYUD62PxmFEwCgYIKoZIzj0EAwIwczEL\nMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG\ncmFuY2lzY28xGTAXBgNVBAoTEG9yZzEuZXhhbXBsZS5jb20IJNLaBgNVBAMTE2Nh\nLm9yZzEuZXhhbXBsZS5jb20wHhcNMjIwNDA1MDcwNjAwWhcNMzIwNDAyMDcwNjAw\nWjBrMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMN\nU2FuIEZyYW5jaXNjbzEOMAwGA1UECxMFYWRtaW4xHzAdBgNVBAMMFkFkbWluQG9y\nZzEuZXhhbXBsZS5jb20wWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAS1OkcH2a5b\ngvvqxBJ66E8TWicALCGVyhE9OBjKDMlmwVb6D9SJhrKjb5cnEdJOyOBpMHoIwDk3\nmRuiUsesBrGCo00wSzAOBgNVHQ8BAf8EBAMCB4AwDAYDVR0TAQH/BAIwADArBgNV\nHSMEJDAigCDrOn8iyaTti05soRNA5fOzdEfyTJaWmQPxGUQoVd3R7zAKBggqhkjO\nPQQDAgNHADBEAiAz3mS8Da3g235YUr/kBQ6HWYj9Kp7I5bxtWvDlpZDHjAIgAvWx\nwjwzz2gPUT04wmepJmNGgQWt8u3H6atHtLVRJyA=\n-----END CERTIFICATE-----”,“privateKey”:“-----BEGIN PRIVATE KEY-----\nMIGHAgEAMBMGByOlHf49AgEGCCqGSM49AwEHBG0wawIBAQQgaH32Qv2U50zIBBBZ\n6jYEEOpOj6GYvcbWWEkmX13EVeuhRANCAAS1OkcH2a5bgvvqxBJ66E8TWicALCGV\nyhE9OBjKDMlmwVb6D9SJhrKjb5cnEdJOyOBpMHoIwDk3mRuiUsesBrGC\n-----END PRIVATE KEY-----\n”}}
二、java工程
新建maven工程,导入当前gateway依赖
<dependencies>
<dependency>
<groupId>org.hyperledger.fabric</groupId>
<artifactId>fabric-gateway-java</artifactId>
<version>2.2.4</version>
</dependency>
官方示例工程fabcar中有给java sdk的代码,基于这个改改
一些材料可以放到工程目录下,网络链接比较耗时,可以单独放到main函数里面,将contract链接作为一个参数传递,就可以只测发交易和查询的时间啥的。 遇到了一些bug,主要是xml中的fabric gateway版本不对、hosts文件没有改、网络配置文件信息不全、wallet新建需要用wallets等等。
总结
感谢帮忙debug的同学们呀 总结一下经验免得忘记
修改一下network.sh脚本,可以重启网络且不更换节点和用户的私钥和证书。
|